diff --git a/MANIFEST.in b/MANIFEST.in deleted file mode 100644 index 9cccc91b..00000000 --- a/MANIFEST.in +++ /dev/null @@ -1,3 +0,0 @@ -include LICENSE.md -global-exclude __pycache__ -global-exclude *.py[co] diff --git a/pyproject.toml b/pyproject.toml new file mode 100644 index 00000000..7bbce89d --- /dev/null +++ b/pyproject.toml @@ -0,0 +1,52 @@ +[build-system] +requires = ["hatchling"] +build-backend = "hatchling.build" + +[project] +name = "starlette" +dynamic = ["version"] +description = "The little ASGI library that shines." +readme = "README.md" +license = "BSD-3-Clause" +requires-python = ">=3.7" +authors = [ + { name = "Tom Christie", email = "tom@tomchristie.com" }, +] +classifiers = [ + "Development Status :: 3 - Alpha", + "Environment :: Web Environment", + "Framework :: AnyIO", + "Intended Audience :: Developers", + "License :: OSI Approved :: BSD License", + "Operating System :: OS Independent", + "Programming Language :: Python :: 3", + "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 = [ + "anyio>=3.4.0,<5", + "typing_extensions>=3.10.0; python_version < '3.10'", +] + +[project.optional-dependencies] +full = [ + "itsdangerous", + "jinja2", + "python-multipart", + "pyyaml", + "requests", +] + +[project.urls] +Homepage = "https://github.com/encode/starlette" + +[tool.hatch.version] +path = "starlette/__init__.py" + +[tool.hatch.build.targets.sdist] +include = [ + "/starlette", +] diff --git a/requirements.txt b/requirements.txt index c10d1a47..92bb5f12 100644 --- a/requirements.txt +++ b/requirements.txt @@ -25,5 +25,5 @@ mkdocs-material==8.3.9 mkautodoc==0.1.0 # Packaging +build==0.8.0 twine==4.0.1 -wheel==0.37.1 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 1597ef45..00000000 --- a/setup.py +++ /dev/null @@ -1,67 +0,0 @@ -#!/usr/bin/env python - -import os -import re - -from setuptools import setup, find_packages - - -def get_version(package): - """ - Return package version as listed in `__version__` in `init.py`. - """ - with open(os.path.join(package, "__init__.py")) as f: - return re.search("__version__ = ['\"]([^'\"]+)['\"]", f.read()).group(1) - - -def get_long_description(): - """ - Return the README. - """ - with open("README.md", encoding="utf8") as f: - return f.read() - - -setup( - name="starlette", - python_requires=">=3.7", - version=get_version("starlette"), - url="https://github.com/encode/starlette", - license="BSD", - description="The little ASGI library that shines.", - long_description=get_long_description(), - long_description_content_type="text/markdown", - author="Tom Christie", - author_email="tom@tomchristie.com", - packages=find_packages(exclude=["tests*"]), - package_data={"starlette": ["py.typed"]}, - include_package_data=True, - install_requires=[ - "anyio>=3.4.0,<5", - "typing_extensions>=3.10.0; python_version < '3.10'", - ], - extras_require={ - "full": [ - "itsdangerous", - "jinja2", - "python-multipart", - "pyyaml", - "requests", - ] - }, - classifiers=[ - "Development Status :: 3 - Alpha", - "Environment :: Web Environment", - "Intended Audience :: Developers", - "License :: OSI Approved :: BSD License", - "Operating System :: OS Independent", - "Topic :: Internet :: WWW/HTTP", - "Framework :: AnyIO", - "Programming Language :: Python :: 3", - "Programming Language :: Python :: 3.7", - "Programming Language :: Python :: 3.8", - "Programming Language :: Python :: 3.9", - "Programming Language :: Python :: 3.10", - ], - zip_safe=False, -)