From 45b7cfaad3a8987ea35fa5bf092bbdda485444fd Mon Sep 17 00:00:00 2001 From: Ofek Lev Date: Mon, 22 Aug 2022 12:55:06 -0400 Subject: [PATCH] Update package metadata (#2334) Co-authored-by: Florimond Manca --- MANIFEST.in | 4 -- pyproject.toml | 80 ++++++++++++++++++++++++++++++++++++++++ requirements.txt | 2 +- scripts/build | 2 +- setup.py | 96 ------------------------------------------------ 5 files changed, 82 insertions(+), 102 deletions(-) delete mode 100644 MANIFEST.in create mode 100644 pyproject.toml delete mode 100644 setup.py diff --git a/MANIFEST.in b/MANIFEST.in deleted file mode 100644 index 61e3dfa5..00000000 --- a/MANIFEST.in +++ /dev/null @@ -1,4 +0,0 @@ -include README.md -include CHANGELOG.md -include LICENSE.md -include httpx/py.typed diff --git a/pyproject.toml b/pyproject.toml new file mode 100644 index 00000000..d3e19e13 --- /dev/null +++ b/pyproject.toml @@ -0,0 +1,80 @@ +[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" diff --git a/requirements.txt b/requirements.txt index d85e2648..75cfeddd 100644 --- a/requirements.txt +++ b/requirements.txt @@ -15,8 +15,8 @@ mkautodoc==0.1.0 mkdocs-material==8.3.8 # Packaging +build==0.8.0 twine==4.0.1 -wheel==0.37.1 # Tests & Linting autoflake==1.4 diff --git a/scripts/build b/scripts/build index 1c47d2cc..92378cb9 100755 --- a/scripts/build +++ b/scripts/build @@ -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 diff --git a/setup.py b/setup.py deleted file mode 100644 index 0fdbd03c..00000000 --- a/setup.py +++ /dev/null @@ -1,96 +0,0 @@ -#!/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", - ], -) -- 2.47.3