Skip to content
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

Move setup information to declarative setup.cfg #495

Merged
merged 1 commit into from
Jun 11, 2020
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
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

Copy link
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@jdufresne is it possible to do something like this using this setup?

EXTRAS_REQUIRE["dev"] = (
    EXTRAS_REQUIRE["tests"]
    + EXTRAS_REQUIRE["cryptography"]
    + EXTRAS_REQUIRE["jwks-client"]
    + ["mypy", "pre-commit"]
)

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

As far as I know, values can't be added in setup.cfg like in Python code, but we could add a dev extras and just copy the entries manually.

[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