-
Notifications
You must be signed in to change notification settings - Fork 4
#12528 Add ABI3 wheels to support Python 3.14 and other future Python versions #15
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
Changes from 8 commits
d839d23
142f020
f38163e
e2fb692
33419ef
a6000c2
7e164d3
57ae707
0789316
ed356ac
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 |
|---|---|---|
|
|
@@ -11,6 +11,7 @@ __pycache__/ | |
| build/ | ||
| develop-eggs/ | ||
| dist/ | ||
| wheelhouse/ | ||
| downloads/ | ||
| eggs/ | ||
| .eggs/ | ||
|
|
||
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -1,2 +1,59 @@ | ||
| Introduction | ||
| ============ | ||
|
|
||
| A trivial extension that just raises an exception. | ||
| See L{twisted.test.test_failure.test_failureConstructionWithMungedStackSucceeds}. | ||
|
|
||
| Only used to help test twisted/twisted. | ||
|
|
||
| Report issues at https://github.com/twisted/twisted/issues | ||
|
|
||
| Dev process | ||
| =========== | ||
|
|
||
| * We use `cibuildwheel` to generate the wheels. | ||
| * You will need access to a Docker server. | ||
| * You will need Python 3.11 or newer to run cibuildwheel. | ||
| This does not affect the generated wheels, | ||
| as they are build inside the container. | ||
| * Use `python -m cibuildwheel --output-dir wheelhouse` to generate the wheels. | ||
| This is the same command use by GitHub Actions. | ||
| You can update the `pyproject.toml` file to adjust the cibuildwheel options. | ||
|
|
||
|
|
||
| Release process | ||
| =============== | ||
|
|
||
|
|
||
| Pre-release steps | ||
| ----------------- | ||
|
|
||
| * Make sure that a ticket is created for twisted/twisted that covers | ||
| the new release and explain why we need the new release. | ||
| * Create a new branch with a name that starts with the twisted/twisted | ||
| issue number. Ex: `12528-python-3.14-support` | ||
| * Update the version inside setup.cfg. We now use calendar versioning. | ||
| * Make the required code changes. | ||
| * Create a pull request and make sure all checks pass. | ||
| The wheels are generated as part of the PR checks, | ||
| but they are not yet published to PyPI. | ||
| * Request a review from `twisted-contributors` | ||
|
|
||
|
|
||
| Release steps | ||
| ------------- | ||
|
|
||
| * Use GitHub Release to create a new release together with a new tag. | ||
| * You don't have to create a GitHub Release, the important part is to | ||
| create a new tag. | ||
| * The tag value is the version. Without any prefix. | ||
| * Once a tag is pushed to the repo, GitHub Action will re-run all the jobs | ||
| and will publish to PyPI. | ||
|
|
||
|
|
||
| Post-release steps | ||
| ------------------ | ||
|
|
||
| * Update the version inside setup.cfg to the next development version. | ||
| Increment the micro version and add a .dev0 suffix. | ||
| * Merge the pull request |
adiroiban marked this conversation as resolved.
Show resolved
Hide resolved
|
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -1,6 +1,6 @@ | ||
| [metadata] | ||
| name = cython-test-exception-raiser | ||
| version = 1.0.3.dev0 | ||
| version = 25.10.0 | ||
adiroiban marked this conversation as resolved.
Outdated
Show resolved
Hide resolved
|
||
| description = A trivial extension that just raises an exception. | ||
| long_description = file: README.rst | ||
| long_description_content_type = text/x-rst | ||
|
|
@@ -10,15 +10,17 @@ maintainer = Thomas Grainger | |
| maintainer_email = [email protected] | ||
| url = https://github.com/twisted/cython-test-exception-raiser | ||
| license = MIT | ||
| python_requires = >=3.6 | ||
| python_requires = >=3.8 | ||
| classifiers = | ||
| Programming Language :: Python :: 3 | ||
| Programming Language :: Python :: 3 :: Only | ||
| Programming Language :: Python :: 3.6 | ||
| 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 | ||
| Programming Language :: Python :: 3.12 | ||
| Programming Language :: Python :: 3.13 | ||
| Programming Language :: Python :: 3.14 | ||
|
|
||
| [options] | ||
| packages = find: | ||
|
|
||
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -1,5 +1,27 @@ | ||
| from setuptools import setup | ||
| from setuptools import Extension, setup | ||
| from Cython.Build import cythonize | ||
|
|
||
| # ABI3 example from https://github.com/joerick/python-abi3-package-sample | ||
| # Cython docs at | ||
| # https://docs.cython.org/en/latest/src/userguide/limited_api.html | ||
| # | ||
| # Py_LIMITED_API values: | ||
| # | ||
| # 0x03080000 - Python 3.8 - the minimum version that Cython supports. | ||
| # 0x030B0000 - Python 3.11 - support typed memoryviews. | ||
| # 0x030C0000 - Python 3.12 - support vectorcall (performance improvement). | ||
|
|
||
| setup(ext_modules=cythonize("cython_test_exception_raiser/raiser.pyx")) | ||
| setup( | ||
| ext_modules=cythonize([ | ||
| Extension( | ||
| name="raiser", | ||
| sources=["cython_test_exception_raiser/raiser.pyx"], | ||
| define_macros=[ | ||
| # For now we are at python 3.8 as we still support 3.10. | ||
|
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. Just FYI - it's not that Cython only supports those three values. They're just "important" values where the list of features available changes. If you want to support 3.10+ then the best value to use would be (Or you might decide that you don't care if it's only test code... That's fair enough too) 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. thanks for the info. You are right. But since this is just testing helper, I think that we are fine. |
||
| ("Py_LIMITED_API", 0x03080000), | ||
| ], | ||
| py_limited_api=True | ||
| ), | ||
| ]), | ||
| options={"bdist_wheel": {"py_limited_api": "cp38"}}, | ||
| ) | ||
Uh oh!
There was an error while loading. Please reload this page.