-
-
Notifications
You must be signed in to change notification settings - Fork 343
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Moved the metadata from setup.cfg into PEP 621-compliant pyproject.toml
#2449
Changes from all commits
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -66,11 +66,11 @@ fi | |
|
||
python -c "import sys, struct, ssl; print('#' * 70); print('python:', sys.version); print('version_info:', sys.version_info); print('bits:', struct.calcsize('P') * 8); print('openssl:', ssl.OPENSSL_VERSION, ssl.OPENSSL_VERSION_INFO); print('#' * 70)" | ||
|
||
python -m pip install -U pip setuptools wheel | ||
python -m pip install -U pip hatchling build | ||
python -m pip --version | ||
|
||
python setup.py sdist --formats=zip | ||
python -m pip install dist/*.zip | ||
python -m build -nsx . | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. It's highly discouraged to use short options with unknown meanings in shell scripts. The typical convention is to use long names so that the readers could know what's happening without having to google or misinterpret things. Also, no need to pass the current dir as it's the default. And two of those options are probably harmful in this case too. |
||
python -m pip install dist/*.tar.gz | ||
|
||
if [ "$CHECK_FORMATTING" = "1" ]; then | ||
python -m pip install -r test-requirements.txt | ||
|
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -59,6 +59,8 @@ pytz==2022.4 | |
# via babel | ||
requests==2.28.1 | ||
# via sphinx | ||
setuptools-scm==7.0.5 | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. This doesn't seem needed/related. Also, it's a bad idea to change behavior together with refactoring. If this plugin is needed, it should be integrated separately. |
||
# via setuptools-scm | ||
sniffio==1.3.0 | ||
# via -r docs-requirements.in | ||
snowballstemmer==2.2.0 | ||
|
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. this seems like an accidental commit, you should probably add |
Original file line number | Diff line number | Diff line change | ||||
---|---|---|---|---|---|---|
|
@@ -21,7 +21,11 @@ Things to do for releasing: | |||||
|
||||||
+ bump version number | ||||||
|
||||||
- increment as per Semantic Versioning rules | ||||||
- increment as per Semantic Versioning rules in | ||||||
|
||||||
- in the metadata file (``setup.cfg``) | ||||||
|
||||||
- in ``trio/_version.py`` | ||||||
|
||||||
- remove ``+dev`` tag from version number | ||||||
|
||||||
|
@@ -44,7 +48,7 @@ Things to do for releasing: | |||||
* push to PyPI:: | ||||||
|
||||||
git clean -xdf # maybe run 'git clean -xdn' first to see what it will delete | ||||||
python3 setup.py sdist bdist_wheel | ||||||
python3 -m build -ws | ||||||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Do not pass both
Suggested change
|
||||||
twine upload dist/* | ||||||
|
||||||
* update version number in the same pull request | ||||||
|
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1 @@ | ||
Moved the metadata into ``PEP 621``-compliant ``pyproject.toml``. |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,3 +1,66 @@ | ||
[build-system] | ||
requires = ["hatchling>=1.8.0"] | ||
build-backend = "hatchling.build" | ||
#requires = ["setuptools>=61.2", "setuptools_scm[toml]>=3.4.3"] | ||
#build-backend = "setuptools.build_meta" | ||
|
||
[project] | ||
name = "trio" | ||
authors = [{name = "Nathaniel J. Smith", email = "[email protected]"}] | ||
license = {text = "MIT OR Apache-2.0"} | ||
description = "A friendly Python library for async concurrency and I/O" | ||
readme = "README.rst" | ||
keywords = ["async", "io", "networking", "trio"] | ||
classifiers = [ | ||
"Development Status :: 3 - Alpha", | ||
"Intended Audience :: Developers", | ||
"License :: OSI Approved :: MIT License", | ||
"License :: OSI Approved :: Apache Software License", | ||
"Operating System :: POSIX :: Linux", | ||
"Operating System :: MacOS :: MacOS X", | ||
"Operating System :: POSIX :: BSD", | ||
"Operating System :: Microsoft :: Windows", | ||
"Programming Language :: Python :: Implementation :: CPython", | ||
"Programming Language :: Python :: Implementation :: PyPy", | ||
"Programming Language :: Python :: 3 :: Only", | ||
"Programming Language :: Python :: 3.7", | ||
"Programming Language :: Python :: 3.8", | ||
"Programming Language :: Python :: 3.9", | ||
"Programming Language :: Python :: 3.10", | ||
"Programming Language :: Python :: 3.11", | ||
"Topic :: System :: Networking", | ||
"Framework :: Trio", | ||
] | ||
urls = {Homepage = "https://github.com/python-trio/trio"} | ||
requires-python = ">=3.7" | ||
dependencies = [ | ||
"attrs >= 19.2.0", | ||
"sortedcontainers", | ||
"async_generator >= 1.9", | ||
"idna", | ||
"outcome", | ||
"sniffio", | ||
# cffi 1.12 adds from_buffer(require_writable=True) and ffi.release() | ||
# cffi 1.14 fixes memory leak inside ffi.getwinerror() | ||
# cffi is required on Windows, except on PyPy where it is built-in | ||
"cffi>=1.14; os_name == 'nt' and implementation_name != 'pypy'", | ||
"exceptiongroup >= 1.0.0rc9; python_version < '3.11'", | ||
] | ||
dynamic = ["version"] | ||
|
||
[tool.hatch.version] | ||
path = "trio/_version.py" | ||
|
||
[tool.setuptools] | ||
include-package-data = true | ||
|
||
[tool.setuptools.packages] | ||
find = {namespaces = false} | ||
|
||
[tool.setuptools_scm] | ||
write_to = "trio/_version.py" | ||
write_to_template = "__version__ = \"{version}\"\n" | ||
Comment on lines
+54
to
+62
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. No need |
||
|
||
[tool.black] | ||
target-version = ['py37'] | ||
|
||
|
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,119 +1,20 @@ | ||
from setuptools import setup, find_packages | ||
|
||
exec(open("trio/_version.py", encoding="utf-8").read()) | ||
|
||
LONG_DESC = """\ | ||
.. image:: https://raw.githubusercontent.com/python-trio/trio/9b0bec646a31e0d0f67b8b6ecc6939726faf3e17/logo/logo-with-background.svg | ||
:width: 200px | ||
:align: right | ||
|
||
The Trio project's goal is to produce a production-quality, `permissively | ||
licensed <https://github.com/python-trio/trio/blob/master/LICENSE>`__, | ||
async/await-native I/O library for Python. Like all async libraries, | ||
its main purpose is to help you write programs that do **multiple | ||
things at the same time** with **parallelized I/O**. A web spider that | ||
wants to fetch lots of pages in parallel, a web server that needs to | ||
juggle lots of downloads and websocket connections at the same time, a | ||
process supervisor monitoring multiple subprocesses... that sort of | ||
thing. Compared to other libraries, Trio attempts to distinguish | ||
itself with an obsessive focus on **usability** and | ||
**correctness**. Concurrency is complicated; we try to make it *easy* | ||
to get things *right*. | ||
|
||
Trio was built from the ground up to take advantage of the `latest | ||
Python features <https://www.python.org/dev/peps/pep-0492/>`__, and | ||
draws inspiration from `many sources | ||
<https://github.com/python-trio/trio/wiki/Reading-list>`__, in | ||
particular Dave Beazley's `Curio <https://curio.readthedocs.io/>`__. | ||
The resulting design is radically simpler than older competitors like | ||
`asyncio <https://docs.python.org/3/library/asyncio.html>`__ and | ||
`Twisted <https://twistedmatrix.com/>`__, yet just as capable. Trio is | ||
the Python I/O library I always wanted; I find it makes building | ||
I/O-oriented programs easier, less error-prone, and just plain more | ||
fun. `Perhaps you'll find the same | ||
<https://github.com/python-trio/trio/wiki/Testimonials>`__. | ||
|
||
This project is young and still somewhat experimental: the overall | ||
design is solid and the existing features are fully tested and | ||
documented, but you may encounter missing functionality or rough | ||
edges. We *do* encourage you do use it, but you should `read and | ||
subscribe to issue #1 | ||
<https://github.com/python-trio/trio/issues/1>`__ to get warning and a | ||
chance to give feedback about any compatibility-breaking changes. | ||
|
||
Vital statistics: | ||
|
||
* Supported environments: Linux, macOS, or Windows running some kind of Python | ||
3.7-or-better (either CPython or PyPy3 is fine). \\*BSD and illumos likely | ||
work too, but are not tested. | ||
|
||
* Install: ``python3 -m pip install -U trio`` (or on Windows, maybe | ||
``py -3 -m pip install -U trio``). No compiler needed. | ||
|
||
* Tutorial and reference manual: https://trio.readthedocs.io | ||
|
||
* Bug tracker and source code: https://github.com/python-trio/trio | ||
|
||
* Real-time chat: https://gitter.im/python-trio/general | ||
|
||
* Discussion forum: https://trio.discourse.group | ||
|
||
* License: MIT or Apache 2, your choice | ||
|
||
* Contributor guide: https://trio.readthedocs.io/en/latest/contributing.html | ||
|
||
* Code of conduct: Contributors are requested to follow our `code of | ||
conduct | ||
<https://trio.readthedocs.io/en/latest/code-of-conduct.html>`_ | ||
in all project spaces. | ||
import inspect | ||
import sys | ||
from warnings import warn | ||
|
||
from setuptools import setup | ||
|
||
if len(inspect.stack()) == 1: | ||
warn( | ||
""" | ||
======================================== | ||
Unsupported building/installation method | ||
======================================== | ||
This version of trio has dropped support for using `python setup.py ...`. | ||
`setup.py` will be removed in future. | ||
Please use `python -m build` (or any other PEP 517 build backend) and then install the built wheel with `pip` instead. | ||
""" | ||
) | ||
|
||
setup( | ||
name="trio", | ||
version=__version__, | ||
description="A friendly Python library for async concurrency and I/O", | ||
long_description=LONG_DESC, | ||
author="Nathaniel J. Smith", | ||
author_email="[email protected]", | ||
url="https://github.com/python-trio/trio", | ||
license="MIT OR Apache-2.0", | ||
packages=find_packages(), | ||
install_requires=[ | ||
"attrs >= 19.2.0", # for eq | ||
"sortedcontainers", | ||
"async_generator >= 1.9", | ||
"idna", | ||
"outcome", | ||
"sniffio", | ||
# cffi 1.12 adds from_buffer(require_writable=True) and ffi.release() | ||
# cffi 1.14 fixes memory leak inside ffi.getwinerror() | ||
# cffi is required on Windows, except on PyPy where it is built-in | ||
"cffi>=1.14; os_name == 'nt' and implementation_name != 'pypy'", | ||
"exceptiongroup >= 1.0.0rc9; python_version < '3.11'", | ||
], | ||
# This means, just install *everything* you see under trio/, even if it | ||
# doesn't look like a source file, so long as it appears in MANIFEST.in: | ||
include_package_data=True, | ||
python_requires=">=3.7", | ||
keywords=["async", "io", "networking", "trio"], | ||
classifiers=[ | ||
"Development Status :: 3 - Alpha", | ||
"Intended Audience :: Developers", | ||
"License :: OSI Approved :: MIT License", | ||
"License :: OSI Approved :: Apache Software License", | ||
"Operating System :: POSIX :: Linux", | ||
"Operating System :: MacOS :: MacOS X", | ||
"Operating System :: POSIX :: BSD", | ||
"Operating System :: Microsoft :: Windows", | ||
"Programming Language :: Python :: Implementation :: CPython", | ||
"Programming Language :: Python :: Implementation :: PyPy", | ||
"Programming Language :: Python :: 3 :: Only", | ||
"Programming Language :: Python :: 3.7", | ||
"Programming Language :: Python :: 3.8", | ||
"Programming Language :: Python :: 3.9", | ||
"Programming Language :: Python :: 3.10", | ||
"Programming Language :: Python :: 3.11", | ||
"Topic :: System :: Networking", | ||
"Framework :: Trio", | ||
], | ||
) | ||
if __name__ == "__main__": | ||
setup() |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,2 +1,2 @@ | ||
# This isn't really a package, everything in here is a standalone script. This | ||
# __init__.py is just to fool setup.py into actually installing the things. | ||
# __init__.py is just to fool the build backend used into actually installing the things. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Backends are never needed in outer envs — the frontends automatically provision them in the build venvs.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.