--- /dev/null
+[build-system]
+requires = ["hatchling", "hatch-fancy-pypi-readme"]
+build-backend = "hatchling.build"
+
+[project]
+name = "httpx"
+description = "The next generation HTTP client."
+license = "BSD-3-Clause"
+requires-python = ">=3.7"
+authors = [
+ { name = "Tom Christie", email = "tom@tomchristie.com" },
+]
+classifiers = [
+ "Development Status :: 4 - Beta",
+ "Environment :: Web Environment",
+ "Framework :: AsyncIO",
+ "Framework :: Trio",
+ "Intended Audience :: Developers",
+ "License :: OSI Approved :: BSD License",
+ "Operating System :: OS Independent",
+ "Programming Language :: Python :: 3",
+ "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",
+ "Topic :: Internet :: WWW/HTTP",
+]
+dependencies = [
+ "certifi",
+ "httpcore>=0.15.0,<0.16.0",
+ "rfc3986[idna2008]>=1.3,<2",
+ "sniffio",
+]
+dynamic = ["readme", "version"]
+
+[project.optional-dependencies]
+brotli = [
+ "brotli; platform_python_implementation == 'CPython'",
+ "brotlicffi; platform_python_implementation != 'CPython'",
+]
+cli = [
+ "click==8.*",
+ "pygments==2.*",
+ "rich>=10,<13",
+]
+http2 = [
+ "h2>=3,<5",
+]
+socks = [
+ "socksio==1.*",
+]
+
+[project.scripts]
+httpx = "httpx:main"
+
+[project.urls]
+Changelog = "https://github.com/encode/httpx/blob/master/CHANGELOG.md"
+Documentation = "https://www.python-httpx.org"
+Homepage = "https://github.com/encode/httpx"
+Source = "https://github.com/encode/httpx"
+
+[tool.hatch.version]
+path = "httpx/__version__.py"
+
+[tool.hatch.build.targets.sdist]
+include = [
+ "/httpx",
+ "/CHANGELOG.md",
+ "/README.md",
+]
+
+[tool.hatch.metadata.hooks.fancy-pypi-readme]
+content-type = "text/markdown"
+
+[[tool.hatch.metadata.hooks.fancy-pypi-readme.fragments]]
+path = "README.md"
+
+[[tool.hatch.metadata.hooks.fancy-pypi-readme.fragments]]
+path = "CHANGELOG.md"
+++ /dev/null
-#!/usr/bin/env python
-# -*- coding: utf-8 -*-
-
-import re
-from pathlib import Path
-
-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="tom@tomchristie.com",
- 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",
- ],
-)