From 10b7d317d03c799f138a961c543294cb44ab416c Mon Sep 17 00:00:00 2001 From: Mathieu Dupuy Date: Mon, 18 Mar 2024 16:37:09 +0100 Subject: [PATCH] Migrate setup.py to setup.cfg (#1553) * migrate setup.py to setup.cfg No man pages * fix Makefile build * silence flake8 F811 for BaseCLIResponse.command * also include man pages * restore a stub setup.py * remove pytest-lazy fixtures --- Makefile | 7 ++- setup.cfg | 89 +++++++++++++++++++++++++++ setup.py | 129 +--------------------------------------- tests/utils/__init__.py | 2 +- 4 files changed, 96 insertions(+), 131 deletions(-) diff --git a/Makefile b/Makefile index 3226a031..a2a80a17 100644 --- a/Makefile +++ b/Makefile @@ -124,7 +124,8 @@ test-dist: test-sdist test-bdist-wheel test-sdist: clean venv @echo $(H1)Testing sdist build an installation$(H1END) - $(VENV_PYTHON) setup.py sdist + $(VENV_PIP) install build + $(VENV_PYTHON) -m build --sdist $(VENV_PIP) install --force-reinstall --upgrade dist/*.gz $(VENV_BIN)/http --version @echo @@ -132,8 +133,8 @@ test-sdist: clean venv test-bdist-wheel: clean venv @echo $(H1)Testing wheel build an installation$(H1END) - $(VENV_PIP) install wheel - $(VENV_PYTHON) setup.py bdist_wheel + $(VENV_PIP) install build + $(VENV_PYTHON) -m build --wheel $(VENV_PIP) install --force-reinstall --upgrade dist/*.whl $(VENV_BIN)/http --version @echo diff --git a/setup.cfg b/setup.cfg index 86c41ff3..e4d7ced9 100644 --- a/setup.cfg +++ b/setup.cfg @@ -12,9 +12,98 @@ norecursedirs = tests/fixtures addopts = --tb=native --doctest-modules --verbose xfail_strict = True +[metadata] +name = httpie +version = attr: httpie.__version__ +author = Jakub Roztocil +author_email = jakub@roztocil.co +license = BSD +description = HTTPie: modern, user-friendly command-line HTTP client for the API era. +url = https://httpie.io/ +long_description = file: README.md +long_description_content_type = text/markdown +classifiers = + Development Status :: 5 - Production/Stable + Programming Language :: Python + Programming Language :: Python :: 3 :: Only + Environment :: Console + Intended Audience :: Developers + Intended Audience :: System Administrators + License :: OSI Approved :: BSD License + Topic :: Internet :: WWW/HTTP + Topic :: Software Development + Topic :: System :: Networking + Topic :: Terminals + Topic :: Text Processing + Topic :: Utilities +project_urls = + GitHub = https://github.com/httpie/cli + Twitter = https://twitter.com/httpie + Discord = https://httpie.io/discord + Documentation = https://httpie.io/docs + Online Demo = https://httpie.io/run + + +[options] +packages = find: +install_requires = + pip + charset_normalizer>=2.0.0 + defusedxml>=0.6.0 + requests[socks]>=2.22.0 + Pygments>=2.5.2 + requests-toolbelt>=0.9.1 + multidict>=4.7.0 + setuptools + importlib-metadata>=1.4.0; python_version < "3.8" + rich>=9.10.0 +python_requires = >=3.7 + [flake8] # # E501 - line too long # W503 - line break before binary operator ignore = E501,W503 + +[options.packages.find] +include = + httpie + httpie.* + +[options.entry_points] +console_scripts = + http = httpie.__main__:main + https = httpie.__main__:main + httpie = httpie.manager.__main__:main + +[options.extras_require] +dev = + pytest + pytest-httpbin>=0.0.6 + responses + pytest-mock + werkzeug<2.1.0 + flake8 + flake8-comprehensions + flake8-deprecated + flake8-mutable + flake8-tuple + pyopenssl + pytest-cov + pyyaml + twine + wheel + Jinja2 +test = + pytest + pytest-httpbin>=0.0.6 + responses + pytest-mock + werkzeug<2.1.0 + +[options.data_files] +share/man/man1 = + extras/man/http.1 + extras/man/https.1 + extras/man/httpie.1 diff --git a/setup.py b/setup.py index 21bdaf16..60684932 100644 --- a/setup.py +++ b/setup.py @@ -1,128 +1,3 @@ -# This is purely the result of trial and error. +from setuptools import setup -import sys - -from setuptools import setup, find_packages - -import httpie - - -# Note: keep requirements here to ease distributions packaging -tests_require = [ - 'pytest', - 'pytest-httpbin>=0.0.6', - 'responses', - 'pytest-mock', - 'werkzeug<2.1.0' -] -dev_require = [ - *tests_require, - 'flake8', - 'flake8-comprehensions', - 'flake8-deprecated', - 'flake8-mutable', - 'flake8-tuple', - 'pyopenssl', - 'pytest-cov', - 'pyyaml', - 'twine', - 'wheel', - 'Jinja2' -] -install_requires = [ - 'pip', - 'charset_normalizer>=2.0.0', - 'defusedxml>=0.6.0', - 'requests[socks]>=2.22.0', - 'Pygments>=2.5.2', - 'requests-toolbelt>=0.9.1', - 'multidict>=4.7.0', - 'setuptools', - 'importlib-metadata>=1.4.0; python_version < "3.8"', - 'rich>=9.10.0' -] -install_requires_win_only = [ - 'colorama>=0.2.4', -] - -# Conditional dependencies: - -# sdist -if 'bdist_wheel' not in sys.argv: - - if 'win32' in str(sys.platform).lower(): - # Terminal colors for Windows - install_requires.extend(install_requires_win_only) - - -# bdist_wheel -extras_require = { - 'dev': dev_require, - 'test': tests_require, - # https://wheel.readthedocs.io/en/latest/#defining-conditional-dependencies - ':sys_platform == "win32"': install_requires_win_only, -} - - -def long_description(): - with open('README.md', encoding='utf-8') as f: - return f.read() - - -setup( - name='httpie', - version=httpie.__version__, - description=httpie.__doc__.strip(), - long_description=long_description(), - long_description_content_type='text/markdown', - url='https://httpie.io/', - download_url=f'https://github.com/httpie/cli/archive/{httpie.__version__}.tar.gz', - author=httpie.__author__, - author_email='jakub@roztocil.co', - license=httpie.__licence__, - packages=find_packages(include=['httpie', 'httpie.*']), - entry_points={ - 'console_scripts': [ - 'http = httpie.__main__:main', - 'https = httpie.__main__:main', - 'httpie = httpie.manager.__main__:main', - ], - }, - python_requires='>=3.7', - extras_require=extras_require, - install_requires=install_requires, - classifiers=[ - 'Development Status :: 5 - Production/Stable', - 'Programming Language :: Python', - 'Programming Language :: Python :: 3 :: Only', - 'Programming Language :: Python :: 3.7', - 'Programming Language :: Python :: 3.8', - 'Programming Language :: Python :: 3.9', - 'Programming Language :: Python :: 3.10', - 'Programming Language :: Python :: 3.11', - 'Programming Language :: Python :: 3.12', - 'Programming Language :: Python :: Implementation :: CPython', - 'Environment :: Console', - 'Intended Audience :: Developers', - 'Intended Audience :: System Administrators', - 'License :: OSI Approved :: BSD License', - 'Topic :: Internet :: WWW/HTTP', - 'Topic :: Software Development', - 'Topic :: System :: Networking', - 'Topic :: Terminals', - 'Topic :: Text Processing', - 'Topic :: Utilities' - ], - project_urls={ - 'GitHub': 'https://github.com/httpie/cli', - 'Twitter': 'https://twitter.com/httpie', - 'Discord': 'https://httpie.io/discord', - 'Documentation': 'https://httpie.io/docs', - 'Online Demo': 'https://httpie.io/run', - }, - data_files=[ - ('share/man/man1', ['extras/man/http.1']), - ('share/man/man1', ['extras/man/https.1']), - ('share/man/man1', ['extras/man/httpie.1']), - ] -) +setup() diff --git a/tests/utils/__init__.py b/tests/utils/__init__.py index 5081c71b..0a9af608 100644 --- a/tests/utils/__init__.py +++ b/tests/utils/__init__.py @@ -210,7 +210,7 @@ class BaseCLIResponse: complete_args: List[str] = [] @property - def command(self): + def command(self): # noqa: F811 cmd = ' '.join(shlex.quote(arg) for arg in ['http', *self.args]) # pytest-httpbin to real httpbin. return re.sub(r'127\.0\.0\.1:\d+', 'httpbin.org', cmd)