starlette/setup.py

66 lines
1.8 KiB
Python
Raw Normal View History

2018-06-25 13:15:32 +00:00
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import os
import re
from setuptools import setup, find_packages
2018-06-25 13:15:32 +00:00
def get_version(package):
"""
Return package version as listed in `__version__` in `init.py`.
"""
2019-02-19 11:30:33 +00:00
with open(os.path.join(package, "__init__.py")) as f:
return re.search("__version__ = ['\"]([^'\"]+)['\"]", f.read()).group(1)
2018-06-25 13:15:32 +00:00
def get_long_description():
"""
Return the README.
"""
2019-02-19 11:30:33 +00:00
with open("README.md", encoding="utf8") as f:
return f.read()
2018-06-25 13:15:32 +00:00
setup(
2019-02-19 11:30:33 +00:00
name="starlette",
python_requires=">=3.6",
version=get_version("starlette"),
url="https://github.com/encode/starlette",
license="BSD",
description="The little ASGI library that shines.",
2018-06-25 13:15:32 +00:00
long_description=get_long_description(),
2019-02-19 11:30:33 +00:00
long_description_content_type="text/markdown",
author="Tom Christie",
author_email="tom@tomchristie.com",
packages=find_packages(exclude=["tests*"]),
2019-02-19 11:30:33 +00:00
package_data={"starlette": ["py.typed"]},
include_package_data=True,
anyio integration (#1157) * First whack at anyio integration * Fix formatting * Remove debug messages * mypy fixes * Update README.md Co-authored-by: Marcelo Trylesinski <marcelotryle@gmail.com> * Fix install_requires typo * move_on_after blocks if deadline is too small * Linter fixes * Improve WSGI structured concurrency * Tests use anyio * Checkin progress on testclient * Prep for anyio 3 * Remove debug backend option * Use anyio 3.0.0rc1 * Remove old style executor from GraphQLApp * Fix extra import * Don't cancel task scope early * Wait for wsgi sender to finish before exiting * Use memory object streams in websocket tests * Test on asyncio, asyncio+uvloop, and trio * Formatting fixes * run_until_first_complete doesn't need a return * Fix middleware app call * Simplify middleware exceptions * Use anyio for websocket test * Set STARLETTE_TESTCLIENT_ASYNC_BACKEND in tests * Pass async backend to portal * Formatting fixes * Bump anyio * Cleanup portals and add TestClient.async_backend * Use anyio.run_async_from_thread to send from worker thread * Use websocket_connect as context manager * Document changes in TestClient * Formatting fix * Fix websocket raises coverage * Update to anyio 3.0.0rc3 and replace aiofiles * Apply suggestions from code review Co-authored-by: Alex Grönholm <alex.gronholm@nextday.fi> * Bump to require anyio 3.0.0 final * Remove mention of aiofiles in README.md * Pin jinja2 to releases before 3 due to DeprecationWarnings * Add task_group as application attribute * Remove run_until_first_complete * Undo jinja pin * Refactor anyio.sleep into an event * Use one less task in test_websocket_concurrency_pattern * Apply review suggestions * Rename argument * fix start_task_soon type * fix BaseHTTPMiddleware when used without Starlette * Testclient receive() is a non-trapping function if the response is already complete This allows for a zero deadline when waiting for a disconnect message * Use variable annotation for async_backend * Update docs regarding dependency on anyio * Use CancelScope instead of move_on_after in request.is_disconnected * Cancel task group after returning middleware response Add test for https://github.com/encode/starlette/issues/1022 * Add link to anyio backend options in testclient docs * Add types-dataclasses * Re-implement starlette.concurrency.run_until_first_complete and add a test * Fix type on handler callable * Apply review comments to clarify run_until_first_complete scope Co-authored-by: Marcelo Trylesinski <marcelotryle@gmail.com> Co-authored-by: Alex Grönholm <alex.gronholm@nextday.fi> Co-authored-by: Thomas Grainger <tagrain@gmail.com>
2021-06-18 14:48:43 +00:00
install_requires=["anyio>=3.0.0,<4"],
extras_require={
2019-02-19 11:30:33 +00:00
"full": [
"graphene",
"itsdangerous",
"jinja2",
"python-multipart",
"pyyaml",
"requests",
]
},
2018-06-25 13:15:32 +00:00
classifiers=[
2019-02-19 11:30:33 +00:00
"Development Status :: 3 - Alpha",
"Environment :: Web Environment",
"Intended Audience :: Developers",
"License :: OSI Approved :: BSD License",
"Operating System :: OS Independent",
"Topic :: Internet :: WWW/HTTP",
"Programming Language :: Python :: 3",
"Programming Language :: Python :: 3.6",
"Programming Language :: Python :: 3.7",
"Programming Language :: Python :: 3.8",
"Programming Language :: Python :: 3.9",
2018-06-25 13:15:32 +00:00
],
2019-04-02 11:27:40 +00:00
zip_safe=False,
2018-06-25 13:15:32 +00:00
)