2012-02-07 12:58:15 +04:00
|
|
|
import os
|
2015-06-25 23:55:51 +03:00
|
|
|
import re
|
2015-08-25 15:32:35 +03:00
|
|
|
import shutil
|
2012-02-07 12:58:15 +04:00
|
|
|
import sys
|
2016-07-05 17:36:52 +03:00
|
|
|
from io import open
|
2015-06-25 23:55:51 +03:00
|
|
|
|
2018-02-14 23:12:14 +03:00
|
|
|
from setuptools import find_packages, setup
|
2011-02-19 21:41:23 +03:00
|
|
|
|
2019-04-30 18:53:44 +03:00
|
|
|
CURRENT_PYTHON = sys.version_info[:2]
|
2024-04-26 17:49:58 +03:00
|
|
|
REQUIRED_PYTHON = (3, 8)
|
2019-04-30 18:53:44 +03:00
|
|
|
|
|
|
|
# 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:
|
|
|
|
|
2019-11-21 17:59:50 +03:00
|
|
|
$ python -m pip install "djangorestframework<3.10"
|
2019-04-30 18:53:44 +03:00
|
|
|
""".format(*(REQUIRED_PYTHON + CURRENT_PYTHON)))
|
|
|
|
sys.exit(1)
|
|
|
|
|
2016-02-12 15:15:20 +03:00
|
|
|
|
2018-06-03 21:21:04 +03:00
|
|
|
def read(f):
|
2023-05-02 19:09:19 +03:00
|
|
|
with open(f, 'r', encoding='utf-8') as file:
|
|
|
|
return file.read()
|
2016-02-12 15:15:20 +03:00
|
|
|
|
2011-06-02 15:17:21 +04:00
|
|
|
|
2012-02-07 12:58:15 +04:00
|
|
|
def get_version(package):
|
|
|
|
"""
|
|
|
|
Return package version as listed in `__version__` in `init.py`.
|
|
|
|
"""
|
|
|
|
init_py = open(os.path.join(package, '__init__.py')).read()
|
2013-12-06 01:17:23 +04:00
|
|
|
return re.search("__version__ = ['\"]([^'\"]+)['\"]", init_py).group(1)
|
2012-02-07 12:58:15 +04:00
|
|
|
|
|
|
|
|
2012-09-20 16:06:27 +04:00
|
|
|
version = get_version('rest_framework')
|
2012-02-07 12:58:15 +04:00
|
|
|
|
|
|
|
|
|
|
|
if sys.argv[-1] == 'publish':
|
2015-02-06 12:23:58 +03:00
|
|
|
if os.system("pip freeze | grep twine"):
|
2015-02-06 12:12:57 +03:00
|
|
|
print("twine not installed.\nUse `pip install twine`.\nExiting.")
|
|
|
|
sys.exit()
|
|
|
|
os.system("python setup.py sdist bdist_wheel")
|
2019-07-01 10:19:12 +03:00
|
|
|
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()
|
2015-02-06 12:12:57 +03:00
|
|
|
os.system("twine upload dist/*")
|
2012-12-02 04:23:03 +04:00
|
|
|
print("You probably want to also tag the version now:")
|
|
|
|
print(" git tag -a %s -m 'version %s'" % (version, version))
|
|
|
|
print(" git push --tags")
|
2015-08-25 15:32:35 +03:00
|
|
|
shutil.rmtree('dist')
|
|
|
|
shutil.rmtree('build')
|
|
|
|
shutil.rmtree('djangorestframework.egg-info')
|
2012-02-07 12:58:15 +04:00
|
|
|
sys.exit()
|
|
|
|
|
2011-06-02 15:17:21 +04:00
|
|
|
|
2011-02-19 21:41:23 +03:00
|
|
|
setup(
|
2012-10-30 18:48:21 +04:00
|
|
|
name='djangorestframework',
|
2012-02-07 12:58:15 +04:00
|
|
|
version=version,
|
2018-10-02 09:28:58 +03:00
|
|
|
url='https://www.django-rest-framework.org/',
|
2012-02-07 12:58:15 +04:00
|
|
|
license='BSD',
|
2013-02-14 14:17:09 +04:00
|
|
|
description='Web APIs for Django, made easy.',
|
2018-06-03 21:21:04 +03:00
|
|
|
long_description=read('README.md'),
|
|
|
|
long_description_content_type='text/markdown',
|
2012-02-07 12:58:15 +04:00
|
|
|
author='Tom Christie',
|
2013-02-08 01:08:13 +04:00
|
|
|
author_email='tom@tomchristie.com', # SEE NOTE BELOW (*)
|
2017-11-27 13:28:25 +03:00
|
|
|
packages=find_packages(exclude=['tests*']),
|
|
|
|
include_package_data=True,
|
2024-04-26 17:49:58 +03:00
|
|
|
install_requires=["django>=4.2", 'backports.zoneinfo;python_version<"3.9"'],
|
|
|
|
python_requires=">=3.8",
|
2015-01-07 21:19:33 +03:00
|
|
|
zip_safe=False,
|
2012-02-07 12:58:15 +04:00
|
|
|
classifiers=[
|
2013-02-14 14:17:09 +04:00
|
|
|
'Development Status :: 5 - Production/Stable',
|
2011-02-19 21:41:23 +03:00
|
|
|
'Environment :: Web Environment',
|
|
|
|
'Framework :: Django',
|
2023-01-19 17:47:50 +03:00
|
|
|
'Framework :: Django :: 4.2',
|
2024-02-28 13:52:22 +03:00
|
|
|
'Framework :: Django :: 5.0',
|
2011-02-19 21:41:23 +03:00
|
|
|
'Intended Audience :: Developers',
|
|
|
|
'License :: OSI Approved :: BSD License',
|
|
|
|
'Operating System :: OS Independent',
|
|
|
|
'Programming Language :: Python',
|
2013-01-03 14:41:37 +04:00
|
|
|
'Programming Language :: Python :: 3',
|
2019-10-23 00:39:01 +03:00
|
|
|
'Programming Language :: Python :: 3.8',
|
2020-09-08 17:40:21 +03:00
|
|
|
'Programming Language :: Python :: 3.9',
|
2021-12-10 14:53:48 +03:00
|
|
|
'Programming Language :: Python :: 3.10',
|
2022-11-21 13:47:21 +03:00
|
|
|
'Programming Language :: Python :: 3.11',
|
2024-02-20 16:16:03 +03:00
|
|
|
'Programming Language :: Python :: 3.12',
|
2019-04-30 18:53:44 +03:00
|
|
|
'Programming Language :: Python :: 3 :: Only',
|
2011-02-19 21:41:23 +03:00
|
|
|
'Topic :: Internet :: WWW/HTTP',
|
2019-07-03 04:56:26 +03:00
|
|
|
],
|
|
|
|
project_urls={
|
|
|
|
'Funding': 'https://fund.django-rest-framework.org/topics/funding/',
|
|
|
|
'Source': 'https://github.com/encode/django-rest-framework',
|
2021-08-06 18:46:57 +03:00
|
|
|
'Changelog': 'https://www.django-rest-framework.org/community/release-notes/',
|
2019-07-03 04:56:26 +03:00
|
|
|
},
|
2011-02-19 22:00:05 +03:00
|
|
|
)
|
2013-02-08 01:08:13 +04:00
|
|
|
|
|
|
|
# (*) 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.
|