Use poetry for project tooling. Deprecate module metadata. #31
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
This patchset is the result of having to pull a long thread of changes. It started by attempting to deprecate the
__vars__.pysubmodule, which meant moving the package metadata__authors__and__version__info into the module__init__.py. Then I took a closer look at what the modern recommendations are for representing package metadata and eventually decided that our existing pyproject.toml implementation based on setuptools is outdated and insufficient. Instead, this patchset updates the project to use poetry as the project build tool and addresses all of the fallout from that change.Changes
__vars__.pysubmodule has been removed and its content distributed to the other modules that use it (basically just that__base_url__and__api_url__are now inapi_urls.py.pyproject.tomlhas been rewritten to use poetry as the build backend. In the process, I corrected some of the debatebly incorrectAuthorsand dependency information we had before.b3yc0d3and his email as the projectAuthorandMaintainer. I think that is the most correct thing to do. But standard practices here are all over the place in the python world.LICENSEandNOTICE.mdfiles are still in the wheel and source distributions.pyproject.tomlfile. Everywhere else derives their values from it.Makefileimplementation to use poetry as the canonical build tooling. Updated the developer documentation with the steps to use it.importlibto extract the package ownership and version information. AFAICT, this is the "modern" way to extract package metadata, post-PEP-440.rule34Py.rule34Py.version()method, which has been deprecated for a while.linkcheck, that runs the built-in python link checker on the documentation. Fixed up some linting errors that it reported. Added this target to thelintmake target.Notes
pyproject.tomlcontains fewer "Classifiers" than it did previously. That's because poetry automatically adds classifiers for your license and supported python versions. I validated that the final classifiers are correct.publishtarget to use poetry, which has a workflow to upload content to PyPI, just like Twine. If you would like to continue using Twine, we can revert this part. But I would recommend you give poetry a shot.Testing
New METADATA file.
Process