Skip to content

Commit

Permalink
Migrate setup.py to setup.cfg (#1553)
Browse files Browse the repository at this point in the history
* 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
  • Loading branch information
deronnax authored Mar 18, 2024
1 parent 3de7c82 commit 10b7d31
Show file tree
Hide file tree
Showing 4 changed files with 96 additions and 131 deletions.
7 changes: 4 additions & 3 deletions Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -124,16 +124,17 @@ 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


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
Expand Down
89 changes: 89 additions & 0 deletions setup.cfg
Original file line number Diff line number Diff line change
Expand Up @@ -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 = [email protected]
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 changes: 2 additions & 127 deletions setup.py
Original file line number Diff line number Diff line change
@@ -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='[email protected]',
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()
2 changes: 1 addition & 1 deletion tests/utils/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -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)
Expand Down

0 comments on commit 10b7d31

Please sign in to comment.