summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJon Dufresne <jon.dufresne@gmail.com>2020-06-10 21:12:48 -0700
committerGitHub <noreply@github.com>2020-06-11 10:12:48 +0600
commit2194df2fc223313faf78b4866c2fd6ceda5ee797 (patch)
treeccb8f196b3cc931aee5408561fac3fb5e8408fb7
parent079849d17687fde8fcb545c76882766883aa0f7a (diff)
downloadpyjwt-2194df2fc223313faf78b4866c2fd6ceda5ee797.tar.gz
Move setup information to declarative setup.cfg (#495)
Use a declarative syntax to avoid mixing code and configuration. Simplifies handling of long description and version by reducing some boilerplate. For details on this setuptools feature, see: https://setuptools.readthedocs.io/en/latest/setuptools.html#configuring-setup-using-setup-cfg-files
-rw-r--r--setup.cfg49
-rwxr-xr-xsetup.py73
-rw-r--r--tox.ini4
3 files changed, 53 insertions, 73 deletions
diff --git a/setup.cfg b/setup.cfg
new file mode 100644
index 0000000..6f6616b
--- /dev/null
+++ b/setup.cfg
@@ -0,0 +1,49 @@
+[metadata]
+name = PyJWT
+version = attr: jwt.__version__
+author = Jose Padilla
+author_email = hello@jpadilla.com
+description = JSON Web Token implementation in Python
+license = MIT
+keywords =
+ json
+ jwt
+ security
+ signing
+ token
+ web
+url = https://github.com/jpadilla/pyjwt
+long_description = file: README.rst
+classifiers =
+ Development Status :: 5 - Production/Stable
+ Intended Audience :: Developers
+ Natural Language :: English
+ License :: OSI Approved :: MIT License
+ Programming Language :: Python
+ Programming Language :: Python :: 3
+ Programming Language :: Python :: 3 :: Only
+ Programming Language :: Python :: 3.5
+ Programming Language :: Python :: 3.6
+ Programming Language :: Python :: 3.7
+ Programming Language :: Python :: 3.8
+ Topic :: Utilities
+
+[options]
+python_requires = >=3.5
+packages = find:
+
+[options.entry_points]
+console_scripts =
+ pyjwt = jwt.__main__:main
+
+[options.extras_require]
+crypto =
+ cryptography >= 1.4
+tests =
+ pytest>=4.0.1,<5.0.0
+ pytest-cov>=2.6.0,<3.0.0
+
+[options.packages.find]
+exclude =
+ tests
+ tests.*
diff --git a/setup.py b/setup.py
index 71353cd..229b2eb 100755
--- a/setup.py
+++ b/setup.py
@@ -1,74 +1,5 @@
#!/usr/bin/env python3
-import os
-import re
-import sys
+from setuptools import setup
-from setuptools import find_packages, setup
-
-
-def get_version(package):
- """
- Return package version as listed in `__version__` in `init.py`.
- """
- with open(os.path.join(package, "__init__.py"), "rb") as init_py:
- src = init_py.read().decode("utf-8")
- return re.search("__version__ = ['\"]([^'\"]+)['\"]", src).group(1)
-
-
-version = get_version("jwt")
-
-with open(os.path.join(os.path.dirname(__file__), "README.rst")) as readme:
- long_description = readme.read()
-
-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")
- os.system("twine upload dist/*")
- print("You probably want to also tag the version now:")
- print(" git tag -a {0} -m 'version {0}'".format(version))
- print(" git push --tags")
- sys.exit()
-
-EXTRAS_REQUIRE = {
- "tests": ["pytest>=4.0.1,<5.0.0", "pytest-cov>=2.6.0,<3.0.0"],
- "crypto": ["cryptography >= 1.4"],
-}
-
-EXTRAS_REQUIRE["dev"] = (
- EXTRAS_REQUIRE["tests"] + EXTRAS_REQUIRE["crypto"] + ["mypy", "pre-commit"]
-)
-
-setup(
- name="PyJWT",
- version=version,
- author="Jose Padilla",
- author_email="hello@jpadilla.com",
- description="JSON Web Token implementation in Python",
- license="MIT",
- keywords="jwt json web token security signing",
- url="https://github.com/jpadilla/pyjwt",
- packages=find_packages(
- exclude=["*.tests", "*.tests.*", "tests.*", "tests"]
- ),
- long_description=long_description,
- classifiers=[
- "Development Status :: 5 - Production/Stable",
- "Intended Audience :: Developers",
- "Natural Language :: English",
- "License :: OSI Approved :: MIT License",
- "Programming Language :: Python",
- "Programming Language :: Python :: 3",
- "Programming Language :: Python :: 3 :: Only",
- "Programming Language :: Python :: 3.5",
- "Programming Language :: Python :: 3.6",
- "Programming Language :: Python :: 3.7",
- "Programming Language :: Python :: 3.8",
- "Topic :: Utilities",
- ],
- python_requires=">=3.5",
- extras_require=EXTRAS_REQUIRE,
- entry_points={"console_scripts": ["pyjwt = jwt.__main__:main"]},
-)
+setup()
diff --git a/tox.ini b/tox.ini
index c9b1d92..6e15948 100644
--- a/tox.ini
+++ b/tox.ini
@@ -17,11 +17,11 @@ deps =
[testenv:typing]
-extras = dev
+deps = mypy
commands = mypy --ignore-missing-imports jwt
[testenv:lint]
-extras = dev
+deps = pre-commit
passenv = HOMEPATH # needed on Windows
commands = pre-commit run --all-files