* Add 400 response on MultiParser exceptions
* Add 400 response on MultiParser exceptions [2]
* Add tests and remove name from here
* Remove args from exception
* Move `ExceptionMiddleware` to `starlette.middleware.exceptions`
* add test for deprecation shim
Co-authored-by: Adrian Garcia Badaracco <1755071+adriangb@users.noreply.github.com>
as opposed to ClassVar assignment
Co-authored-by: Jamie Hewland <jhewland@gmail.com>
Co-authored-by: Jordan Speicher <jordan@jspeicher.com>
Co-authored-by: Jordan Speicher <uSpike@users.noreply.github.com>
* 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>
* Path -> Route, PathPrefix -> Mount
* Route, WebSocketRoute, Mount
* Use Route(endpoint=...), not Route(app=...)
* Bare minimum docs update
* Add url_for
* request.path_params and session.path_params
* Version 0.6.0
* Exception handling
* Black formatting
* Add exception handling to App
* Handle cases where exception raised but response already started
* Order exception handler lookup by class inheritance
* Handle 404/405 as responses without App, or exceptions with it.
* Only use TestClient(app, raise_exceptions=False) explicitly inside test cases
* Documentation for ExceptionMiddleware
* Drop error_handler/exception_handler distinction.
* Finesse and document TestClient(app, raise_server_exceptions=False)
* Refactoring to make debug responses easier to obtain from elsewhere in code
* Use named status_code argument in example
* Clean up raise_server_errors usage in tests
* Consistent title-casing in HTTP reason phrases
* Black formatting
* Add WebSocketClose close. Omit message-body on 204, 304 exception cases.
* Black formatting
* Add 'debug' flag to App and ExceptionMiddleware
* Support app.debug
* Document debug mode
* Documenting debug