-
-
Notifications
You must be signed in to change notification settings - Fork 6.9k
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
Open
deronnax
wants to merge
28
commits into
encode:master
Choose a base branch
from
deronnax:migrate_setuppy_to_pryoject.toml
base: master
Could not load branches
Branch not found: {{ refName }}
Loading
Could not load tags
Nothing to show
Loading
Are you sure you want to change the base?
Some commits from the old base branch may be removed from the timeline,
and old review comments may become outdated.
Open
Changes from all commits
Commits
Show all changes
28 commits
Select commit
Hold shift + click to select a range
3136996
migrate setup.cfg to setup.py
deronnax 401de87
restore a setup.py stub
deronnax 6019f1d
migrate setup.cfg to pyproject.toml
deronnax 121caba
tox: isolated build
deronnax c2062da
remove python 3.6
deronnax a71ed6a
get package version from rest_framework.__version__
deronnax 0bcd152
more concise readme inclusion
deronnax 34840fd
remove flake8 config from pyproject.toml
deronnax 9b6e714
remove 'zip-safe' and 'exclude' arguments
deronnax cf25dcd
move back non-packing related config into setup.cfg
deronnax 040ded0
remove unneeded include-package-data field
deronnax 9ce6b62
remove 'license-files' field
deronnax c4bcfc4
Revert "remove python 3.6"
deronnax 2770f5e
Merge branch 'master' into migrate_setuppy_to_pryoject.toml
deronnax 6f8da97
Merge branch 'master' into migrate_setuppy_to_pryoject.toml
deronnax 2ef6126
pre-commit: tomli optional additional dependency
deronnax c8030fc
remove final wording note from pyproject.toml
deronnax 0101d89
remove flake8 section in pyproject
deronnax c1c39d4
delete setup.py
deronnax 561bd4c
ci: remove tox 'isolated_build'
deronnax 29205f0
restore minimalist setup.py
deronnax 1278968
also update build/upload instruction
deronnax 06bebc2
remove parameters for which the value is already the default
deronnax ea10c54
use 'rest_framework' package namespace
deronnax 5729b02
Revert "use 'rest_framework' package namespace"
deronnax 7770fe4
include "rest_framework*" in pyproject.toml
deronnax 63d340b
Merge branch 'master' into migrate_setuppy_to_pryoject.toml
browniebroke 3542e40
Backport changes from setup.py in upstream
browniebroke File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,79 @@ | ||
[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", | ||
"Framework :: Django :: 5.2", | ||
"Intended Audience :: Developers", | ||
"License :: OSI Approved :: BSD License", | ||
"Operating System :: OS Independent", | ||
"Programming Language :: Python", | ||
"Programming Language :: Python :: 3", | ||
"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.9" | ||
dependencies = ["django>=4.2"] | ||
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] | ||
|
||
[tool.setuptools.packages.find] | ||
include = ["rest_framework*"] | ||
|
||
[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" | ||
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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 |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,119 +1,3 @@ | ||
import os | ||
import re | ||
deronnax marked this conversation as resolved.
Show resolved
Hide resolved
|
||
import shutil | ||
import sys | ||
from setuptools import setup | ||
|
||
from setuptools import find_packages, setup | ||
|
||
CURRENT_PYTHON = sys.version_info[:2] | ||
REQUIRED_PYTHON = (3, 9) | ||
|
||
# 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, 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"], | ||
python_requires=">=3.9", | ||
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', | ||
'Framework :: Django :: 5.2', | ||
'Intended Audience :: Developers', | ||
'License :: OSI Approved :: BSD License', | ||
'Operating System :: OS Independent', | ||
'Programming Language :: Python', | ||
'Programming Language :: Python :: 3', | ||
'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() |
Oops, something went wrong.
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.
Uh oh!
There was an error while loading. Please reload this page.