* Made daphne installable as a Django app.
* Added system check to ensure daphne is installed before
django.contrib.staticfiles.
* Moved runserver command from Channels.
* Added changelog entry for runserver command.
* Updated Python support and dependencies.
* Updated Python support in README.
* Removed PY36 from GHA workflow.
* Remove pre-commit workflow. Fixes#397
* Updated Black in pre-commit to 22.3.0.
* Update all pre-commit hooks.
* [pre-commit.ci] auto fixes from pre-commit.com hooks
* Lint with pre-commit
* Move existing tox qa hooks into pre-commit.
* Set up GitHub Action based on https://github.com/pre-commit/action/ (we could also use https://pre-commit.ci ).
* Add `pyupgrade` to drop old Python syntax.
* Add `flake8-bugbear` plugin to prevent flake8 errors.
* Drop custom GHA
As of [bpo-32528](https://bugs.python.org/issue32528), asyncio.CancelledError is
not a subclass of concurrent.futures.CancelledError. This means that if an
asyncio future raises an exception, it won't be caught. Therefore, the
exception will bubble past the try-except within the loop in application_checker,
resulting in done applications not being cleaned up, and the application_checker
task not being queued again.
The entire body was previously read in memory which would lead
the server to be killed by the scheduler.
This change allows 8Kb chunks to be read until the entire body is
consummed.
Co-authored-by: Samori Gorse <samori@codeinstyle.io>
As per https://github.com/django/asgiref/pull/92
Required valid URI path fragments to be used in tests:
- Test case must ensure paths are correctly quoted before calling
run_daphne_request() & co.
Co-authored-by: Carlton Gibson <carlton.gibson@noumenal.es>