Skip to content

Commit

Permalink
Move setup information to declarative setup.cfg (#495)
Browse files Browse the repository at this point in the history
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
  • Loading branch information
jdufresne authored and jpadilla committed Jun 19, 2020
1 parent cf430bc commit 3bffdb0
Show file tree
Hide file tree
Showing 3 changed files with 53 additions and 73 deletions.
49 changes: 49 additions & 0 deletions setup.cfg
Original file line number Diff line number Diff line change
@@ -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.*
73 changes: 2 additions & 71 deletions setup.py
Original file line number Diff line number Diff line change
@@ -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()
4 changes: 2 additions & 2 deletions tox.ini
Original file line number Diff line number Diff line change
Expand Up @@ -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

0 comments on commit 3bffdb0

Please sign in to comment.