From a88a84548a2c399c01655960885d9ad225abf1d6 Mon Sep 17 00:00:00 2001 From: "Cimon Lucas (LCM)" Date: Mon, 3 Apr 2023 13:28:53 +0200 Subject: [PATCH 1/5] Init maintainers.md --- .pre-commit-config.yaml | 29 +---------------------------- README.md | 11 +++++++++-- content/pages/index.md | 8 ++++++++ content/pages/maintainers.md | 4 ++++ pelicanconf.py | 34 ++++++++++++++++++++++++---------- requirements.in | 6 ++++-- requirements.txt | 28 ++++++++++++++++++++++++---- tasks.py | 3 +-- 8 files changed, 75 insertions(+), 48 deletions(-) create mode 100644 content/pages/index.md create mode 100644 content/pages/maintainers.md diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index d30be0c..d9690ed 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -1,4 +1,4 @@ -# pre-commit run --all-files +# To execute those rules on all files: pre-commit run --all-files repos: - repo: https://github.com/pre-commit/pre-commit-hooks rev: v4.4.0 @@ -10,35 +10,8 @@ repos: - id: check-yaml - id: debug-statements - id: end-of-file-fixer - exclude: "resources/.*|docs/make.bat" - id: trailing-whitespace - id: mixed-line-ending args: ['--fix=lf'] - exclude: "docs/make.bat" - id: check-added-large-files args: ['--maxkb=1000'] -# - repo: https://github.com/pre-commit/mirrors-mypy -# rev: v0.942 -# hooks: -# - id: mypy -- repo: https://github.com/psf/black - rev: 23.1.0 - hooks: - - id: black - args: [--target-version, py36] -- repo: https://github.com/asottile/blacken-docs - rev: 1.13.0 - hooks: - - id: blacken-docs - additional_dependencies: [black==22.1.0] - exclude: "docs/user/robustness.md" -- repo: https://github.com/charliermarsh/ruff-pre-commit - rev: 'v0.0.259' - hooks: - - id: ruff - args: ['--fix'] -- repo: https://github.com/asottile/pyupgrade - rev: v3.3.1 - hooks: - - id: pyupgrade - args: [--py39-plus] diff --git a/README.md b/README.md index 797cba6..ba210b7 100644 --- a/README.md +++ b/README.md @@ -2,14 +2,21 @@ Website py-pdf ## Install requirements - ``` $ pip install -r requirements.txt $ pre-commit install ``` -## Publish +## Launch local server with livereload +``` +$ invoke livereload +``` + +## Adding a Python dependency +1. Edit `requirements.in` +2. Run `pip-compile requirements.in` to generate `requirements.txt` +## Publish ``` $ make github ``` diff --git a/content/pages/index.md b/content/pages/index.md new file mode 100644 index 0000000..fd9e3a2 --- /dev/null +++ b/content/pages/index.md @@ -0,0 +1,8 @@ +Title: The py-pdf organization +Slug: ../index +Save_as: index.html +Authors: Martin Thoma +Summary: What py-pdf is about + +The py-pdf organization is a group of Python developers who provide +libraries and applications around PDF documents. diff --git a/content/pages/maintainers.md b/content/pages/maintainers.md new file mode 100644 index 0000000..a24f719 --- /dev/null +++ b/content/pages/maintainers.md @@ -0,0 +1,4 @@ +Title: Maintainer guidelines +Tags: guidelines, maintainer + +WIP - Redaction in progress diff --git a/pelicanconf.py b/pelicanconf.py index 8e906b0..e8a4d86 100644 --- a/pelicanconf.py +++ b/pelicanconf.py @@ -1,19 +1,21 @@ +import logging + +logging.root.setLevel(logging.INFO) +logging.getLogger('pelican.utils').setLevel(logging.WARN) # avoids verbose "-> Copying ..." logs +logging.getLogger('tornado.access').setLevel(logging.WARN) # avoids verbose HTTP logs from livereload server +# Configure LOG_FORMAT to prefix it with "%(asctime)s [%(module)s]": +if logging.root.handlers: # handlers are only set the 2nd time this file is evaluated by Pelican + formatter = logging.root.handlers[0].formatter + formatter._fmt = formatter._style._fmt = "%(asctime)s [%(name)s] %(levelname)s %(message)s" + AUTHOR = "The py-pdf owners" SITENAME = "The py-pdf organization" -SITEURL = "" - -PATH = "content" TIMEZONE = "Europe/Berlin" - DEFAULT_LANG = "en" -# Feed generation is usually not desired when developing -FEED_ALL_ATOM = None -CATEGORY_FEED_ATOM = None -TRANSLATION_FEED_ATOM = None -AUTHOR_FEED_ATOM = None -AUTHOR_FEED_RSS = None +PATH = './content' +OUTPUT_PATH = './output' # Blogroll LINKS = ( @@ -32,5 +34,17 @@ DEFAULT_PAGINATION = 10 + +####################################### +# Config options specific to dev-mode: +####################################### + # Uncomment following line if you want document-relative URLs when developing # RELATIVE_URLS = True + +# Feed generation is usually not desired when developing +FEED_ALL_ATOM = None +CATEGORY_FEED_ATOM = None +TRANSLATION_FEED_ATOM = None +AUTHOR_FEED_ATOM = None +AUTHOR_FEED_RSS = None diff --git a/requirements.in b/requirements.in index 4705997..90f2d78 100644 --- a/requirements.in +++ b/requirements.in @@ -1,7 +1,9 @@ -pip-tools # brings pip-compile to update the requirements.txt ghp-import # publish blog on https://py-pdf.github.io/ +pip-tools # brings pip-compile to update the requirements.txt pre-commit # automatically apply style checks/autofixes # For the blog: -pelican +invoke +livereload markdown +pelican diff --git a/requirements.txt b/requirements.txt index 98bc158..1165a56 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,10 +1,10 @@ # -# This file is autogenerated by pip-compile with Python 3.11 +# This file is autogenerated by pip-compile with Python 3.8 # by the following command: # # pip-compile requirements.in # -blinker==1.5 +blinker==1.6 # via pelican build==0.10.0 # via pip-tools @@ -24,8 +24,14 @@ ghp-import==2.1.0 # via -r requirements.in identify==2.5.22 # via pre-commit +importlib-metadata==6.1.0 + # via markdown +invoke==2.0.0 + # via -r requirements.in jinja2==3.1.2 # via pelican +livereload==2.6.3 + # via -r requirements.in markdown==3.4.3 # via -r requirements.in markdown-it-py==2.2.0 @@ -56,7 +62,7 @@ python-dateutil==2.8.2 # via # ghp-import # pelican -pytz==2023.2 +pytz==2023.3 # via # feedgenerator # pelican @@ -65,13 +71,27 @@ pyyaml==6.0 rich==13.3.3 # via pelican six==1.16.0 - # via python-dateutil + # via + # livereload + # python-dateutil +tomli==2.0.1 + # via + # build + # pyproject-hooks +tornado==6.2 + # via livereload +typing-extensions==4.5.0 + # via + # blinker + # rich unidecode==1.3.6 # via pelican virtualenv==20.21.0 # via pre-commit wheel==0.40.0 # via pip-tools +zipp==3.15.0 + # via importlib-metadata # The following packages are considered to be unsafe in a requirements file: # pip diff --git a/tasks.py b/tasks.py index 4d592eb..5e3edde 100644 --- a/tasks.py +++ b/tasks.py @@ -6,6 +6,7 @@ from invoke import task from invoke.main import program +from livereload import Server from pelican import main as pelican_main from pelican.server import ComplexHTTPRequestHandler, RootedHTTPServer from pelican.settings import DEFAULT_CONFIG, get_settings_from_file @@ -96,8 +97,6 @@ def preview(c): @task def livereload(c): """Automatically reload browser tab upon file modification.""" - from livereload import Server - def cached_build(): cmd = "-s {settings_base} -e CACHE_CONTENT=true LOAD_CONTENT_CACHE=true" pelican_run(cmd.format(**CONFIG)) From 305687402006052b5e45c16a0cd902584c278264 Mon Sep 17 00:00:00 2001 From: "Cimon Lucas (LCM)" Date: Mon, 3 Apr 2023 13:33:39 +0200 Subject: [PATCH 2/5] Adding snake logo --- .gitignore | 1 + content/images/.gitkeep | 0 content/images/pypdf-snake.png | Bin 0 -> 3224 bytes content/pages/index.md | 2 ++ 4 files changed, 3 insertions(+) delete mode 100644 content/images/.gitkeep create mode 100644 content/images/pypdf-snake.png diff --git a/.gitignore b/.gitignore index 0322ffb..a4b5d1a 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,4 @@ __pycache__/ +cache/ output/ venv/ diff --git a/content/images/.gitkeep b/content/images/.gitkeep deleted file mode 100644 index e69de29..0000000 diff --git a/content/images/pypdf-snake.png b/content/images/pypdf-snake.png new file mode 100644 index 0000000000000000000000000000000000000000..8c7f6c2be44b791e9334a8742844373f4caef713 GIT binary patch literal 3224 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 literal 0 HcmV?d00001 diff --git a/content/pages/index.md b/content/pages/index.md index fd9e3a2..4353b66 100644 --- a/content/pages/index.md +++ b/content/pages/index.md @@ -6,3 +6,5 @@ Summary: What py-pdf is about The py-pdf organization is a group of Python developers who provide libraries and applications around PDF documents. + +
![](images/pypdf-snake.png)
From 3ac45d165cf7b04c8163dd57083eecae452dd166 Mon Sep 17 00:00:00 2001 From: "Cimon Lucas (LCM)" Date: Tue, 4 Apr 2023 14:24:16 +0200 Subject: [PATCH 3/5] Work in progress --- .../images/github-org-public-membership.png | Bin 0 -> 9909 bytes content/pages/index.md | 2 +- content/pages/maintainers.md | 45 +++++++++++++++++- 3 files changed, 44 insertions(+), 3 deletions(-) create mode 100644 content/images/github-org-public-membership.png diff --git a/content/images/github-org-public-membership.png b/content/images/github-org-public-membership.png new file mode 100644 index 0000000000000000000000000000000000000000..1ca257ef611a22d906d675dbc0634d8ffa1bfa88 GIT binary patch literal 9909 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 I![](images/pypdf-snake.png) +
![pypdf logo](images/pypdf-snake.png)
diff --git a/content/pages/maintainers.md b/content/pages/maintainers.md index a24f719..0d0f67d 100644 --- a/content/pages/maintainers.md +++ b/content/pages/maintainers.md @@ -1,4 +1,45 @@ Title: Maintainer guidelines -Tags: guidelines, maintainer +Tags: guideline, maintainer -WIP - Redaction in progress +## Volunteering +All [@py-pdf](https://github.com/py-pdf) members are volunteers. +They dedicate some of their time to maintain open-source projects, answer questions and review Pull Requests. + +[@py-pdf](https://github.com/py-pdf) members should never be required to operate within deadlines, or even respond within a given time frame. + +If you are a user of a [@py-pdf](https://github.com/py-pdf) project and want something done, +whether it is a bugfix or a feature request, your best options for achieving what you want are: + +* being polite and patient +* volunteer to contribute yourself + +To all [@py-pdf](https://github.com/py-pdf) members, remember: [it's okay to hit pause](https://opensource.guide/best-practices/#its-okay-to-hit-pause), and take time away from volunteer open-source work. + + +## Governance +**Redaction in progress...** + +It's OK to [say no](https://opensource.guide/best-practices/#learning-to-say-no) + + + +### GitHub roles +The base permission for [@py-pdf](https://github.com/py-pdf) members is set to **Write**, +meaning any [@py-pdf](https://github.com/py-pdf) member has read permissions, +can manage issues and pull requests, and also push to repositories. + +**Redaction in progress...** + +We encourage [@py-pdf](https://github.com/py-pdf) members, and especially maintainers, to make their organization membership **public** +on , in order to clarify who has ownership of the organization, and the associated rights to perform package releases: + +![](../images/github-org-public-membership.png) + +## Releases +**Redaction in progress...** + + + + From 2003f2e8c4578f83f8b3b6d37daa54e9dc5ee1fb Mon Sep 17 00:00:00 2001 From: Lucas Cimon <925560+Lucas-C@users.noreply.github.com> Date: Wed, 5 Apr 2023 06:51:09 +0200 Subject: [PATCH 4/5] Update content/pages/maintainers.md Co-authored-by: Martin Thoma --- content/about-py-pdf-org.md | 13 ----------- content/pages/maintainers.md | 34 +++++++++++++++++++++++++++- content/{ => pages}/py-pdf-owners.md | 1 - 3 files changed, 33 insertions(+), 15 deletions(-) delete mode 100644 content/about-py-pdf-org.md rename content/{ => pages}/py-pdf-owners.md (99%) diff --git a/content/about-py-pdf-org.md b/content/about-py-pdf-org.md deleted file mode 100644 index e8c4775..0000000 --- a/content/about-py-pdf-org.md +++ /dev/null @@ -1,13 +0,0 @@ -Title: The py-pdf organization -Date: 2023-03-28 10:20 -Modified: 2023-03-28 10:20 -Category: py-pdf -Tags: Governance -Slug: py-pdf-organization -Authors: Martin Thoma -Summary: What py-pdf is about - -The py-pdf organization is a loose group of Python developers who provide -libraries and applications around PDF documents. - -You can see the full list of our projects [on GitHub](https://github.com/py-pdf). diff --git a/content/pages/maintainers.md b/content/pages/maintainers.md index 0d0f67d..4dd6bbe 100644 --- a/content/pages/maintainers.md +++ b/content/pages/maintainers.md @@ -15,10 +15,42 @@ whether it is a bugfix or a feature request, your best options for achieving wha To all [@py-pdf](https://github.com/py-pdf) members, remember: [it's okay to hit pause](https://opensource.guide/best-practices/#its-okay-to-hit-pause), and take time away from volunteer open-source work. +
## Governance -**Redaction in progress...** +`py-pdf` governance model is descibed there: + + +
+ + +### The relationship of py-pdf to its projects + +`py-pdf` wants to ensure the Python-PDF ecosystem is prospering. We recognize that individual +maintainers did and still do an outstanding job, but we also see that personal lives sometimes +move away from software projects. + +That means: + +1. `py-pdf` offers the platform to exchange ideas and provide feedback +2. `py-pdf` administrators who are not project members do interfere, when (a) no activity by the maintainers is in the project for at least 6 months and at least 3 friendly "are you alive" questions over at least 6 weeks. (b) security issues are detected +3. `py-pdf` leaves the projects do their thing in all other cases. + +### Conditions for projects to be added to py-pdf + +We want projects which provide value to users and we need to be able to maintain them. We want to improve the Python / PDF ecosystem and not scatter it. + +1. The project has to be a Python project and about PDF documents +2. If it's a software project, it has (1) a README with the projects purpose, installation instructions, and a usage example (2) at least 30% line coverage (3) it's either the main project or the fork that has more popularity measured in GitHub stars +3. It either has a different purpose than all other projects in `py-pdf` or is more popular than the existing projects for that purpose +4. It needs to be a FOSS license (e.g. BSD, MIT, Apache) + +### Responsibility of project maintainers +1. **Software Reliability**: Please ensure that your project follows best practices in software development. Introduce a [deprecation process](https://pypdf.readthedocs.io/en/latest/dev/deprecations.html) and follow it. +2. **Kindness**: We are all here because it's fun to help others and create good software. But we are humans: People can have bad days and people might not speak English as a mother tongue. When in doubt, assume the best. Let people know how you perceived their interaction. +3. **Know your Limits**: It's ok to reduce the time you spend on your project or even step away from it. Stay healthy. +4. **Let your Project Grow**: Especially if you step away, let others take over. Make it explicit that you're looking for another person who would take over. It's OK to [say no](https://opensource.guide/best-practices/#learning-to-say-no) + + + +- [Volunteering](#volunteering) +- [Governance](#governance) + * [The relationship of py-pdf to its projects](#the-relationship-of-py-pdf-to-its-projects) + * [Conditions for projects to be added to py-pdf](#conditions-for-projects-to-be-added-to-py-pdf) + * [Responsibility of project maintainers](#responsibility-of-project-maintainers) + * [GitHub roles](#github-roles) +- [Releases](#releases) + + + ## Volunteering All [@py-pdf](https://github.com/py-pdf) members are volunteers. They dedicate some of their time to maintain open-source projects, answer questions and review Pull Requests. @@ -23,8 +38,7 @@ To all [@py-pdf](https://github.com/py-pdf) members, remember: [it's okay to hit
- -### The relationship of py-pdf to its projects +## The relationship of py-pdf to its projects `py-pdf` wants to ensure the Python-PDF ecosystem is prospering. We recognize that individual maintainers did and still do an outstanding job, but we also see that personal lives sometimes @@ -36,42 +50,48 @@ That means: 2. `py-pdf` administrators who are not project members do interfere, when (a) no activity by the maintainers is in the project for at least 6 months and at least 3 friendly "are you alive" questions over at least 6 weeks. (b) security issues are detected 3. `py-pdf` leaves the projects do their thing in all other cases. -### Conditions for projects to be added to py-pdf +
+ +## Conditions for projects to be added to py-pdf We want projects which provide value to users and we need to be able to maintain them. We want to improve the Python / PDF ecosystem and not scatter it. 1. The project has to be a Python project and about PDF documents -2. If it's a software project, it has (1) a README with the projects purpose, installation instructions, and a usage example (2) at least 30% line coverage (3) it's either the main project or the fork that has more popularity measured in GitHub stars +2. If it's a software project, it has (1) a README with the projects purpose, installation instructions, and a usage example (2) it's either the main project or the fork that has more popularity measured in GitHub stars 3. It either has a different purpose than all other projects in `py-pdf` or is more popular than the existing projects for that purpose 4. It needs to be a FOSS license (e.g. BSD, MIT, Apache) -### Responsibility of project maintainers +
+ +## Responsibility of project maintainers 1. **Software Reliability**: Please ensure that your project follows best practices in software development. Introduce a [deprecation process](https://pypdf.readthedocs.io/en/latest/dev/deprecations.html) and follow it. -2. **Kindness**: We are all here because it's fun to help others and create good software. But we are humans: People can have bad days and people might not speak English as a mother tongue. When in doubt, assume the best. Let people know how you perceived their interaction. +2. **Kindness**: We are all here because it's fun to help others and create good software. But we are humans: people can have bad days and people might not speak English as a mother tongue. When in doubt, assume the best. Let people know how you perceived their interaction. 3. **Know your Limits**: It's ok to reduce the time you spend on your project or even step away from it. Stay healthy. 4. **Let your Project Grow**: Especially if you step away, let others take over. Make it explicit that you're looking for another person who would take over. -It's OK to [say no](https://opensource.guide/best-practices/#learning-to-say-no) +It's OK to [say no](https://opensource.guide/best-practices/#learning-to-say-no). -### GitHub roles +
+ +## GitHub roles The base permission for [@py-pdf](https://github.com/py-pdf) members is set to **Write**, meaning any [@py-pdf](https://github.com/py-pdf) member has read permissions, can manage issues and pull requests, and also push to repositories. -**Redaction in progress...** - We encourage [@py-pdf](https://github.com/py-pdf) members, and especially maintainers, to make their organization membership **public** on , in order to clarify who has ownership of the organization, and the associated rights to perform package releases: ![](../images/github-org-public-membership.png) +
+ ## Releases -**Redaction in progress...** +Depending on the projects, the release process can be automated inside GitHub Actions pipelines, or stays manual. - +