* 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>
* Update CI scripts to match httpcore
* Run test suite on pushes to master
* Update scripts README
* Don't bother with flake8 extensions for now
* Remove unnecessary PYTHONPATH from build, publish
* test_routing: Use a stub app instead of ellipsis
* Add link to issue about type-checking tests
* reqs: minor cleanup
- codecov is only required on CI/Travis, install it there then.
- databases is a requirement for testing.
* setup.py: remove sqlalchemy from (full) reqs
- it is only used for tests
- databases requires it already
* Add Mount(routes=...)
* Lifespan route instance
* Lifespan as a standard routing component
* Linting
* Linting
* Version 0.10.6
* Release notes
* Version 0.11.0
* Drop redundant import
* Drop redundant database requirements
* Include htmlcov in scripts/clean
* Drop redundant import
* Release notes
* Linting
* initial support for MySQL
* Work towards testing both MySQL and Postgres drivers
* Linting
* STARLETTE_TEST_DATABASE -> STARLETTE_TEST_DATABASES
* Parameterize the database tests
* Include the MySQL Database URL
* MySQL tests should create the database if it doesn't yet exist
* Explict port of MySQL database URL
* Debugging on Travis
* Pass 'args' as a single argument
* Fix query compilation for mysql
* Lookup record values for MySQL
* Coerce MySQL results to correct python_type
* cursor.fetchrow should be cursor.fetchone
* Fix call to cursor.fetchone()
* Fix for fetchval()
* Debugging
* Nested transaction for MySQL should use SAVEPOINTS
* Drop savepoint implementation
* Fix SAVEPOINT implementation for MySQL
* Coverage for MySQL
* Linting
* Tweak defaults for MySQL connections
* GraphQL support
* GraphQL support
* Run GraphQL queries inside a threadpool
* Support AsyncioExecutor
* GraphQL error formatting
* Docs for GraphQL support
* Work towards MultiPartParser
* Work towards MultiPartParser
* Add test for multipart files
* MultiPart parsing
* Fix for large multipart messages
* Add python-multipart to docs
* Add python-multipart to 'pip install starlette[full]'
* Add FormParser
* Add docs for request.form()
* Drop mypy momentarily