-
-
Notifications
You must be signed in to change notification settings - Fork 7k
migrate packaging to pyproject.toml #9056
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
base: master
Are you sure you want to change the base?
Changes from 22 commits
3136996
401de87
6019f1d
121caba
c2062da
a71ed6a
0bcd152
34840fd
9b6e714
cf25dcd
040ded0
9ce6b62
c4bcfc4
2770f5e
6f8da97
2ef6126
c8030fc
0101d89
c1c39d4
561bd4c
29205f0
1278968
06bebc2
ea10c54
5729b02
7770fe4
63d340b
3542e40
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 | ||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
@@ -0,0 +1,85 @@ | ||||||||||||||||
[build-system] | ||||||||||||||||
requires = ["setuptools>=61.2"] | ||||||||||||||||
build-backend = "setuptools.build_meta" | ||||||||||||||||
|
||||||||||||||||
[project] | ||||||||||||||||
name = "djangorestframework" | ||||||||||||||||
readme = "README.md" | ||||||||||||||||
authors = [{name = "Tom Christie", email = "tom@tomchristie.com"}] | ||||||||||||||||
license = {text = "BSD"} | ||||||||||||||||
description = "Web APIs for Django, made easy." | ||||||||||||||||
classifiers = [ | ||||||||||||||||
"Development Status :: 5 - Production/Stable", | ||||||||||||||||
"Environment :: Web Environment", | ||||||||||||||||
"Framework :: Django", | ||||||||||||||||
"Framework :: Django :: 4.2", | ||||||||||||||||
"Framework :: Django :: 5.0", | ||||||||||||||||
"Framework :: Django :: 5.1", | ||||||||||||||||
"Intended Audience :: Developers", | ||||||||||||||||
"License :: OSI Approved :: BSD License", | ||||||||||||||||
"Operating System :: OS Independent", | ||||||||||||||||
"Programming Language :: Python", | ||||||||||||||||
"Programming Language :: Python :: 3", | ||||||||||||||||
"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 :: Only", | ||||||||||||||||
"Topic :: Internet :: WWW/HTTP", | ||||||||||||||||
] | ||||||||||||||||
requires-python = ">=3.8" | ||||||||||||||||
dependencies = [ | ||||||||||||||||
"django>=4.2", | ||||||||||||||||
'backports.zoneinfo;python_version<"3.9"', | ||||||||||||||||
] | ||||||||||||||||
dynamic = ["version"] | ||||||||||||||||
|
||||||||||||||||
[tool.setuptools.dynamic] | ||||||||||||||||
version = {attr = "rest_framework.__version__"} | ||||||||||||||||
|
||||||||||||||||
[project.urls] | ||||||||||||||||
Homepage = "https://www.django-rest-framework.org/" | ||||||||||||||||
Funding = "https://fund.django-rest-framework.org/topics/funding/" | ||||||||||||||||
Source = "https://github.com/encode/django-rest-framework" | ||||||||||||||||
Changelog = "https://www.django-rest-framework.org/community/release-notes/" | ||||||||||||||||
|
||||||||||||||||
[tool.setuptools] | ||||||||||||||||
zip-safe = false | ||||||||||||||||
include-package-data = true | ||||||||||||||||
deronnax marked this conversation as resolved.
Show resolved
Hide resolved
|
||||||||||||||||
license-files = ["LICENSE.md"] | ||||||||||||||||
deronnax marked this conversation as resolved.
Show resolved
Hide resolved
|
||||||||||||||||
|
||||||||||||||||
[tool.setuptools.packages.find] | ||||||||||||||||
namespaces = false | ||||||||||||||||
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. Is there a reason you're disabling namespaces? I believe you can also just specify the packages directly since there is only one:
Suggested change
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. I disabled them because they were disabled originally, using 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. I see, thanks for trying. It appears I misunderstood the default behavior for nested packages. You'd need to try the following:
Suggested change
I used the Do you mind running that by the CI? 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. sure. But as it is changing the behavior, even if it works, I would like it in a separate PR :) 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. Well what you used doesn't match the original either, since you're missing the exclude so I'd just switch to the new style using include and you can leave off the namespace disabling or turn it off if you really prefer it to be off. I just don't think it needs to be off. |
||||||||||||||||
|
||||||||||||||||
[tool.pytest.ini_options] | ||||||||||||||||
addopts = "--tb=short --strict-markers -ra" | ||||||||||||||||
testpaths = ["tests"] | ||||||||||||||||
filterwarnings = ["ignore:CoreAPI compatibility is deprecated*:rest_framework.RemovedInDRF317Warning"] | ||||||||||||||||
|
||||||||||||||||
[tool.isort] | ||||||||||||||||
skip = [".tox"] | ||||||||||||||||
atomic = true | ||||||||||||||||
multi_line_output = 5 | ||||||||||||||||
extra_standard_library = ["types"] | ||||||||||||||||
known_third_party = ["pytest", "_pytest", "django", "pytz", "uritemplate"] | ||||||||||||||||
known_first_party = ["rest_framework", "tests"] | ||||||||||||||||
|
||||||||||||||||
[tool.coverage.run] | ||||||||||||||||
# NOTE: source is ignored with pytest-cov (but uses the same). | ||||||||||||||||
source = ["."] | ||||||||||||||||
include = ["rest_framework/*", "tests/*"] | ||||||||||||||||
branch = true | ||||||||||||||||
|
||||||||||||||||
[tool.coverage.report] | ||||||||||||||||
include = ["rest_framework/*", "tests/*"] | ||||||||||||||||
exclude_lines = [ | ||||||||||||||||
"pragma: no cover", | ||||||||||||||||
"raise NotImplementedError", | ||||||||||||||||
] | ||||||||||||||||
|
||||||||||||||||
[tool.codespell] | ||||||||||||||||
# Ref: https://github.com/codespell-project/codespell#using-a-config-file | ||||||||||||||||
skip = "*/kickstarter-announcement.md,*.js,*.map,*.po" | ||||||||||||||||
ignore-words-list = "fo,malcom,ser" | ||||||||||||||||
deronnax marked this conversation as resolved.
Show resolved
Hide resolved
|
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,36 +1,3 @@ | ||
[metadata] | ||
license_files = LICENSE.md | ||
|
||
[tool:pytest] | ||
addopts=--tb=short --strict-markers -ra | ||
testpaths = tests | ||
filterwarnings = ignore:CoreAPI compatibility is deprecated*:rest_framework.RemovedInDRF317Warning | ||
|
||
[flake8] | ||
ignore = E501,W503,W504 | ||
banned-modules = json = use from rest_framework.utils import json! | ||
|
||
[isort] | ||
skip=.tox | ||
atomic=true | ||
multi_line_output=5 | ||
extra_standard_library=types | ||
known_third_party=pytest,_pytest,django,pytz,uritemplate | ||
known_first_party=rest_framework,tests | ||
|
||
[coverage:run] | ||
# NOTE: source is ignored with pytest-cov (but uses the same). | ||
source = . | ||
include = rest_framework/*,tests/* | ||
branch = 1 | ||
|
||
[coverage:report] | ||
include = rest_framework/*,tests/* | ||
exclude_lines = | ||
pragma: no cover | ||
raise NotImplementedError | ||
|
||
[codespell] | ||
# Ref: https://github.com/codespell-project/codespell#using-a-config-file | ||
skip = */kickstarter-announcement.md,*.js,*.map,*.po | ||
ignore-words-list = fo,malcom,ser |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,120 +1,3 @@ | ||
import os | ||
import re | ||
deronnax marked this conversation as resolved.
Show resolved
Hide resolved
|
||
import shutil | ||
import sys | ||
from io import open | ||
from setuptools import setup | ||
|
||
from setuptools import find_packages, setup | ||
|
||
CURRENT_PYTHON = sys.version_info[:2] | ||
REQUIRED_PYTHON = (3, 8) | ||
|
||
# This check and everything above must remain compatible with Python 2.7. | ||
if CURRENT_PYTHON < REQUIRED_PYTHON: | ||
sys.stderr.write(""" | ||
========================== | ||
Unsupported Python version | ||
========================== | ||
|
||
This version of Django REST Framework requires Python {}.{}, but you're trying | ||
to install it on Python {}.{}. | ||
|
||
This may be because you are using a version of pip that doesn't | ||
understand the python_requires classifier. Make sure you | ||
have pip >= 9.0 and setuptools >= 24.2, then try again: | ||
|
||
$ python -m pip install --upgrade pip setuptools | ||
$ python -m pip install djangorestframework | ||
|
||
This will install the latest version of Django REST Framework which works on | ||
your version of Python. If you can't upgrade your pip (or Python), request | ||
an older version of Django REST Framework: | ||
|
||
$ python -m pip install "djangorestframework<3.10" | ||
""".format(*(REQUIRED_PYTHON + CURRENT_PYTHON))) | ||
sys.exit(1) | ||
|
||
|
||
def read(f): | ||
with open(f, 'r', encoding='utf-8') as file: | ||
return file.read() | ||
|
||
|
||
def get_version(package): | ||
""" | ||
Return package version as listed in `__version__` in `init.py`. | ||
""" | ||
init_py = open(os.path.join(package, '__init__.py')).read() | ||
return re.search("__version__ = ['\"]([^'\"]+)['\"]", init_py).group(1) | ||
|
||
|
||
version = get_version('rest_framework') | ||
|
||
|
||
if sys.argv[-1] == 'publish': | ||
if os.system("pip freeze | grep twine"): | ||
print("twine not installed.\nUse `pip install twine`.\nExiting.") | ||
sys.exit() | ||
os.system("python setup.py sdist bdist_wheel") | ||
if os.system("twine check dist/*"): | ||
print("twine check failed. Packages might be outdated.") | ||
print("Try using `pip install -U twine wheel`.\nExiting.") | ||
sys.exit() | ||
os.system("twine upload dist/*") | ||
print("You probably want to also tag the version now:") | ||
print(" git tag -a %s -m 'version %s'" % (version, version)) | ||
print(" git push --tags") | ||
shutil.rmtree('dist') | ||
shutil.rmtree('build') | ||
shutil.rmtree('djangorestframework.egg-info') | ||
sys.exit() | ||
|
||
deronnax marked this conversation as resolved.
Show resolved
Hide resolved
|
||
|
||
setup( | ||
name='djangorestframework', | ||
version=version, | ||
url='https://www.django-rest-framework.org/', | ||
license='BSD', | ||
description='Web APIs for Django, made easy.', | ||
long_description=read('README.md'), | ||
long_description_content_type='text/markdown', | ||
author='Tom Christie', | ||
author_email='tom@tomchristie.com', # SEE NOTE BELOW (*) | ||
packages=find_packages(exclude=['tests*']), | ||
include_package_data=True, | ||
install_requires=["django>=4.2", 'backports.zoneinfo;python_version<"3.9"'], | ||
python_requires=">=3.8", | ||
zip_safe=False, | ||
classifiers=[ | ||
'Development Status :: 5 - Production/Stable', | ||
'Environment :: Web Environment', | ||
'Framework :: Django', | ||
'Framework :: Django :: 4.2', | ||
'Framework :: Django :: 5.0', | ||
'Framework :: Django :: 5.1', | ||
'Intended Audience :: Developers', | ||
'License :: OSI Approved :: BSD License', | ||
'Operating System :: OS Independent', | ||
'Programming Language :: Python', | ||
'Programming Language :: Python :: 3', | ||
'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 :: Only', | ||
'Topic :: Internet :: WWW/HTTP', | ||
], | ||
project_urls={ | ||
'Funding': 'https://fund.django-rest-framework.org/topics/funding/', | ||
'Source': 'https://github.com/encode/django-rest-framework', | ||
'Changelog': 'https://www.django-rest-framework.org/community/release-notes/', | ||
}, | ||
) | ||
|
||
# (*) Please direct queries to the discussion group, rather than to me directly | ||
# Doing so helps ensure your question is helpful to other users. | ||
# Queries directly to my email are likely to receive a canned response. | ||
# | ||
# Many thanks for your understanding. | ||
setup() |
Uh oh!
There was an error while loading. Please reload this page.