Skip to content
Closed
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
61 changes: 61 additions & 0 deletions pyproject.toml
Original file line number Diff line number Diff line change
@@ -0,0 +1,61 @@
[build-system]
requires = ["setuptools", "setuptools-scm"]

Choose a reason for hiding this comment

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

I think we should add a minimal version of setuptools as a build requirement to ensure that a compatible version of setuptools is installed.

Suggested change
requires = ["setuptools", "setuptools-scm"]
requires = ["setuptools>=61", "setuptools-scm"]

Copy link
Contributor

Choose a reason for hiding this comment

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

Agreed

build-backend = "setuptools.build_meta"

[project]
name = "httpx"
description = "The next generation HTTP client."
authors = [{ name = "Tom Christie", email = "[email protected]" }]
license = { text = "BSD 3-Clause License" }
requires-python = ">=3.7"
dependencies = [
"certifi",
"sniffio",
"rfc3986[idna2008]>=1.3,<2",
"httpcore>=0.15.0,<0.16.0",
]
classifiers = [
"Development Status :: 4 - Beta",
"Environment :: Web Environment",
"Intended Audience :: Developers",
"License :: OSI Approved :: BSD License",
"Operating System :: OS Independent",
"Topic :: Internet :: WWW/HTTP",
"Framework :: AsyncIO",
"Framework :: Trio",
"Programming Language :: Python :: 3",
"Programming Language :: Python :: 3.7",
"Programming Language :: Python :: 3.8",
"Programming Language :: Python :: 3.9",
"Programming Language :: Python :: 3.10",
"Programming Language :: Python :: 3 :: Only",
]
dynamic = ["version", "readme"]

[tool.setuptools]
license-files = ["LICENSE.md"]
package-data = { "httpx" = ["py.typed"] }
include-package-data = true
zip-safe = false

[project.optional-dependencies]
http2 = ["h2>=3,<5"]
socks = ["socksio==1.*"]
brotli = [
"brotli; platform_python_implementation == 'CPython'",
"brotlicffi; platform_python_implementation != 'CPython'",
]
cli = ["click==8.*", "rich>=10,<13", "pygments==2.*"]

[project.urls]
Homepage = "https://www.python-httpx.org"
Changelog = "https://github.com/encode/httpx/blob/master/CHANGELOG.md"
Documentation = "https://www.python-httpx.org"
Source = "https://github.com/encode/httpx"

[project.scripts]
httpx = "httpx:main"

[tool.setuptools.dynamic]
version = { attr = "httpx.__version__.__version__" }
readme = { file = ["README.md", "CHANGELOG.md"], content-type = "text/markdown" }
1 change: 1 addition & 0 deletions requirements.txt
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@ mkdocs-material==8.3.8
# Packaging
twine==4.0.1
wheel==0.37.1
build==0.8.0

# Tests & Linting
autoflake==1.4
Expand Down
2 changes: 1 addition & 1 deletion scripts/build
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,6 @@ fi

set -x

${PREFIX}python setup.py sdist bdist_wheel
${PREFIX}python -m build
${PREFIX}twine check dist/*
${PREFIX}mkdocs build
97 changes: 3 additions & 94 deletions setup.py
Original file line number Diff line number Diff line change
@@ -1,96 +1,5 @@
#!/usr/bin/env python
# -*- coding: utf-8 -*-

import re
from pathlib import Path

# This file is needed for editable installs.
# Ref.: https://setuptools.pypa.io/en/latest/userguide/pyproject_config.html
from setuptools import setup


def get_version(package):
"""
Return package version as listed in `__version__` in `init.py`.
"""
version = Path(package, "__version__.py").read_text()
return re.search("__version__ = ['\"]([^'\"]+)['\"]", version).group(1)


def get_long_description():
"""
Return the README.
"""
long_description = ""
with open("README.md", encoding="utf8") as f:
long_description += f.read()
long_description += "\n\n"
with open("CHANGELOG.md", encoding="utf8") as f:
long_description += f.read()
return long_description


def get_packages(package):
"""
Return root package and all sub-packages.
"""
return [str(path.parent) for path in Path(package).glob("**/__init__.py")]


setup(
name="httpx",
python_requires=">=3.7",
version=get_version("httpx"),
url="https://github.com/encode/httpx",
project_urls={
"Changelog": "https://github.com/encode/httpx/blob/master/CHANGELOG.md",
"Documentation": "https://www.python-httpx.org",
"Source": "https://github.com/encode/httpx",
},
license="BSD",
description="The next generation HTTP client.",
long_description=get_long_description(),
long_description_content_type="text/markdown",
author="Tom Christie",
author_email="[email protected]",
package_data={"httpx": ["py.typed"]},
packages=get_packages("httpx"),
include_package_data=True,
zip_safe=False,
install_requires=[
"certifi",
"sniffio",
"rfc3986[idna2008]>=1.3,<2",
"httpcore>=0.15.0,<0.16.0",
],
extras_require={
"http2": "h2>=3,<5",
"socks": "socksio==1.*",
"brotli": [
"brotli; platform_python_implementation == 'CPython'",
"brotlicffi; platform_python_implementation != 'CPython'"
],
"cli": [
"click==8.*",
"rich>=10,<13",
"pygments==2.*"
]
},
entry_points = {
"console_scripts": "httpx=httpx:main"
},
classifiers=[
"Development Status :: 4 - Beta",
"Environment :: Web Environment",
"Intended Audience :: Developers",
"License :: OSI Approved :: BSD License",
"Operating System :: OS Independent",
"Topic :: Internet :: WWW/HTTP",
"Framework :: AsyncIO",
"Framework :: Trio",
"Programming Language :: Python :: 3",
"Programming Language :: Python :: 3.7",
"Programming Language :: Python :: 3.8",
"Programming Language :: Python :: 3.9",
"Programming Language :: Python :: 3.10",
"Programming Language :: Python :: 3 :: Only",
],
)
setup()