Commit Graph

30 Commits

Author SHA1 Message Date
Jamie Hewland ab0fff9dd3
Test on Python 3.10 (#1201) 2021-06-19 18:02:53 +01:00
Jamie Hewland a839d9220d
Use coverage directly instead of pytest-cov (#1204)
* Use coverage directly instead of pytest-cov

* Use coverage's source_pkgs
2021-06-19 12:42:56 +01:00
Jamie Hewland d917501af5
Clean up last bit of aiofiles after #1157 (#1203) 2021-06-18 16:40:09 +01:00
Jordan Speicher 42592d68e5
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 15:48:43 +01:00
Marcelo Trylesinski 214d1f1fe6
🐛 Fix type hint issues due to mypy upgrade to 0.902 (#1197) 2021-06-11 10:39:57 +02:00
Jamie Hewland 99b37781eb
Remove UJSONResponse (#1047)
* Remove UJSONResponse

* Add documentation about custom JSON serialization
2020-11-08 22:49:12 +02:00
Jamie Hewland b95acea973
Update CI scripts to match httpcore (#1043)
* 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
2020-09-06 12:08:07 +02:00
Jamie Hewland 8729e9fc69
Use and pin black 20 (#1042) 2020-09-05 15:16:56 +02:00
Jamie Hewland 436771aba5
Use isort v5 (#999) 2020-07-15 19:25:59 +02:00
云中君 97257515f8
Thread pool is no longer used for files in memory (#933)
* https://github.com/Tinche/aiofiles/issues/47
Thread pool is no longer used for files in memory

* fix tests

* fix import sorted

* little change
2020-05-06 14:52:26 +01:00
Tom Christie 7f8cd04173
Version 0.13 (#704)
* Version 0.13

* Fix misnamed requirement

* Updating routing docs

* Update routing docs

* Update docs

* Simpler Middleware signature

* Update middleware docs

* Update exception docs

* Allow 'None' in middleware lists, for easy disabling of middleware.

* Update README
2019-11-13 12:25:18 +00:00
Daniel Hahler ed1cc13200 reqs: minor cleanup (#422)
* 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
2019-03-06 20:30:16 +00:00
Tom Christie e396f079a5
Version 0.11 (#402)
* 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
2019-02-19 12:54:57 +00:00
Tom Christie e8dff17ed4
Move to 'databases' instead of built-in DatabaseMiddleware (#390) 2019-02-14 16:01:51 +00:00
Tom Christie 3270762c16
MySQL driver support (#366)
* 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
2019-01-30 14:21:58 +00:00
Tom Christie 6cd0b2b787
Remove unused imports, with 'autoflake' (#313) 2019-01-10 14:35:32 +00:00
Tom Christie 0b7819b4b2
Add DatabaseMiddleware (#243)
* Add `DatabaseMiddleware`
2018-12-04 16:05:16 +00:00
Tom Christie 2ef21f49c9
Jinja2 (#198)
* Use jinja2 for a default template configuration

* Add release notes
2018-11-08 16:14:14 +00:00
Tom Christie de010e7796
Return strings from `url_path_for` (#169)
Schema generation & return strings from `url_path_for`
2018-11-01 10:40:08 +00:00
Tom Christie 87da226f1c
Session middleware (#157)
* Use isort for consistent import ordering

* Add SessionMmiddleware support

* Add SessionMiddleware support
2018-10-29 16:16:51 +00:00
Tom Christie bcf876c686
Use isort for consistent import ordering (#156) 2018-10-29 14:46:42 +00:00
Tom Christie 315a21be85
GraphQL support (#126)
* GraphQL support

* GraphQL support

* Run GraphQL queries inside a threadpool

* Support AsyncioExecutor

* GraphQL error formatting

* Docs for GraphQL support
2018-10-18 14:45:18 +01:00
Tom Christie c43a070eed
Form parsing (#102)
* 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
2018-10-12 18:15:04 +01:00
Tom Christie cc09042c1c
Enable mypy in tests (#103)
* Enable mypy in tests

* Fix TestClient annotations
2018-10-10 17:33:12 +01:00
Tom Christie 78d1829758
Version 0.3 (#57)
* Renamings

* Version 0.3.0

* Black formatting

* Update docs for 0.3
2018-09-05 11:39:38 +01:00
Tom Christie 25990db22e Add mkdocs 2018-08-28 16:25:32 +01:00
Tom Christie 5f194f73bf Add FileResponse 2018-07-11 16:08:51 +01:00
Tom Christie 8efc4af842 Requires 3.6+ (To support async generators) 2018-06-25 14:50:22 +01:00
Tom Christie a2a2a2968c Only install black on Python >= 3.6 2018-06-25 14:42:38 +01:00
Tom Christie 5a9fe3f048 Initial commit 2018-06-25 14:15:32 +01:00