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
This commit is contained in:
Mathieu Dupuy 2024-03-18 16:37:09 +01:00 committed by GitHub
parent 3de7c82077
commit 10b7d317d0
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
4 changed files with 96 additions and 131 deletions

View File

@ -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

View File

@ -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]
# <https://flake8.pycqa.org/en/latest/user/error-codes.html>
# 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

129
setup.py
View File

@ -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()

View File

@ -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)