Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[10214] Release Twisted 21.7.0 #1614

Merged
merged 26 commits into from
Jul 28, 2021
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
26 commits
Select commit Hold shift + click to select a range
862309b
python -m incremental.update Twisted --rc
adiroiban Jul 10, 2021
eff33fd
tox -e towncrier
adiroiban Jul 10, 2021
28f3247
Update the release notes based on the feedbach from Thomas.
adiroiban Jul 12, 2021
2163d70
Apply suggestions from code review
adiroiban Jul 15, 2021
d2c2aea
Update mypy exception as idna was updated and we now have type hintings.
adiroiban Jul 15, 2021
2c68ced
python -m incremental.update Twisted --newversion 21.7.0
adiroiban Jul 15, 2021
c46553a
Prepare branch for the final release.
adiroiban Jul 15, 2021
dc26edd
Merge pull request #1628 from graingert/try-ci-on-38-10-and-39-5
graingert Jul 16, 2021
67f2460
Merge pull request #1632 from richvdh/10231-inline-callbacks
graingert Jul 19, 2021
9cbc02c
Merge pull request #1633 from graingert/upgrade-coverage
graingert Jul 19, 2021
247382f
Revert "Prepare branch for the final release."
adiroiban Jul 20, 2021
164a42c
Revert "python -m incremental.update Twisted --newversion 21.7.0"
adiroiban Jul 20, 2021
6ade7a7
python -m incremental.update Twisted --rc
adiroiban Jul 20, 2021
ab67ba5
Add trial to towncrier.
adiroiban Jul 20, 2021
a3792f0
tox -e towncrier
adiroiban Jul 20, 2021
c02a290
Fix rst format.
adiroiban Jul 20, 2021
e4e41db
Merge pull request #1637 from graingert/revert-loopingcall-delayedcal…
graingert Jul 22, 2021
d657914
Merge pull request #1638 from graingert/restore-tox-wheel
graingert Jul 22, 2021
9b5ece6
python -m incremental.update Twisted --rc
adiroiban Jul 23, 2021
12ef4c5
Fix empty trial newsfragment that was causing towncrier failures.
adiroiban Jul 23, 2021
027a483
tox -e towncrier and manual NEWS edits.
adiroiban Jul 23, 2021
f05d37d
python -m incremental.update Twisted --newversion 21.7.0
adiroiban Jul 26, 2021
84ff6cb
Manual NEWS update and remove RC release notes.
adiroiban Jul 26, 2021
4e3b22a
Update NEWS.rst
adiroiban Jul 26, 2021
540dcee
python -m incremental.update Twisted --post
adiroiban Jul 28, 2021
ea9053d
Merge trunk.
adiroiban Jul 28, 2021
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
119 changes: 119 additions & 0 deletions NEWS.rst
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,125 @@ http://twistedmatrix.com/trac/ticket/<number>

.. towncrier release notes start


Twisted 21.7.0 (2021-07-26)
===========================


Features
--------

- Python 3.10b3 is now supported (#10224)
- Type hinting was added to twisted.internet.defer, making this is the first release
of Twisted where you might reasonably be able to use mypy without your own custom
stub files (#10017)


Bugfixes
--------

- The changes to ``DelayedCall.__repr__`` and ``LoopingCall.__repr__`` from
21.7.0.rc1 were reverted as the wrong assumption that ``__qualname__`` is
available on all the supported Python versions.
(#10235)
- The automated release process was updated to generate and release wheel files
to PyPI (#10236)
- twisted.internet.defer.inlineCallbacks has an improved type annotation, to avoid typing errors when it is used on a function which returns a non-None result. (#10231)
- trial.runner.filenameToModule now sets the correct ``module.__name__`` and ``sys.modules`` key (#10230)
- twisted.internet.process can now pause and resume producing in python 3 (#9933)
- When installing Twisted it now requires a minimum Python 3.6.7 version to match the version used with automated testing. This is the minimum Python version that we know that Twisted works with. (#10098)
- twisted.internet.asyncioreactor.AsyncioSelectorReactor will no longer raise a TypeError like "SelectorEventLoop required, instead got: <uvloop.Loop ...>" (broken since 21.2.0). (#10106)
- twisted.web.template.flatten and flattenString will no longer raise RecursionError if a large number of synchronous Deferreds are included in a document. (#10125)
- Fix type hint for http.Request.uri (from str to bytes). (#10139)
- twisted.web.http_headers.getRawHeaders and twisted.web.http_headers.getAllRawHeaders are now typed to return immutable sequences of header values instead of lists.
twisted.web.http_headers.getRawHeaders is now typed to return a non-optional value if a non-None default value is given. (#10142)
- Fixed type hint for addr argument to twisted.internet.interfaces.buildProtocol. (#10147)
- twisted.trial._dist.worker.LocalWorker.connectionMade now always writes the
log file using UTF-8 encoding.
In previous versions it was using the system default encoding.
This was causing encoding errors as the distributed trial workers are sending
Unicode data and the system default encoding might not always be Unicode compatible.
For example, it can be CP1252 on Windows. (#10157)
- twisted.words.protocols.irc.ctcpExtract was updated to work with PYPY 3.7.4. (#10189)
- twisted.conch.ssh.transport.SSHServerTransport and twisted.conch.ssh.transport.SSHClientTransport no longer use the hardcoded
SHA1 digest for non-group key exchanges. (#10203)
- haproxy transport wrapper now returns hosts of type str for getPeer() and getHost(), as specified by IPv4Address and IPv6Address documentation. Previously it was returning bytes for the host. (#10211)


Improved Documentation
----------------------

- Remove dead link in twisted.internet._dumbwin32proc module docstring (#9520)
- Sync API docs templates with pydoctor 21.2.2 release. (#10105)
- Twisted IRC channels are now hosted by Libera.Chat. (#10213)


Deprecations and Removals
-------------------------

- Python 3.5 is no longer supported. (#9958)


Misc
----

- #9816, #9915, #10068, #10085, #10094, #10102, #10107, #10108, #10109, #10110, #10112, #10119, #10120, #10121, #10122, #10123, #10140, #10143, #10145, #10150, #10151, #10155, #10159, #10168, #10169, #10171, #10172, #10173, #10174, #10179, #10194, #10201, #10212, #10215, #10217, #11017


Conch
-----

Misc
~~~~

- #10097


Web
---

Features
~~~~~~~~

- twisted.web.template.renderElement() now accepts any IRequest implementer instead of only twisted.web.server.Request.
Add type hints to twisted.web.template. (#10184)


Bugfixes
~~~~~~~~

- The server-side HTTP/1.1 chunking implementation no longer performs quadratic work when input arrives in small chunks, preventing CPU exhaustion. (#3795)
- twisted.web.http's chunked encoding support now rejects chunk sizes that are invalid because they look like negative hexadecimal integers. (#10130)
- The type hint of twisted.web.server.Request.postpath is now correctly listed as Optional[List[bytes]]. This was incorrect in Twisted v21.2.0. (#10136)
- The server-side HTTP/1.1 chunking implementation now rejects invalid chunk boundaries, preventing unbounded buffering. (#10137)
- The server-side HTTP/1.1 chunking implementation now limits the length of the chunk size line (which includes chunk extensions) to twisted.web.http.maxChunkSizeLineLength — 1 KiB — so that it may not consume an unbounded amount of memory. (#10144)
- Calling twisted.web.server.Site now registers its expiration timeout using the reactor associated with its twisted.web.server.Site. Site now a reactor attribute via its superclass, twisted.web.http.HTTPFactory. (#10177)


Misc
~~~~

- #9659, #10100, #10154, #10186


Mail
----

No significant changes.


Words
-----

No significant changes.


Names
-----

No significant changes.


Twisted 21.2.0 (2021-02-28)
===========================

Expand Down
4 changes: 4 additions & 0 deletions pyproject.toml
Original file line number Diff line number Diff line change
Expand Up @@ -34,6 +34,10 @@ build-backend = "setuptools.build_meta"
path = "names"
name = "Names"

[[tool.towncrier.section]]
path = "trial"
name = "Trial"

[[tool.towncrier.type]]
directory = "feature"
name = "Features"
Expand Down
2 changes: 1 addition & 1 deletion src/twisted/_version.py
Original file line number Diff line number Diff line change
Expand Up @@ -7,5 +7,5 @@

from incremental import Version

__version__ = Version("Twisted", 21, 2, 0, post=0)
__version__ = Version("Twisted", 21, 7, 0, post=0)
__all__ = ["__version__"]
Empty file.
Empty file.
1 change: 0 additions & 1 deletion src/twisted/newsfragments/10085.misc

This file was deleted.

1 change: 0 additions & 1 deletion src/twisted/newsfragments/10094.misc

This file was deleted.

1 change: 0 additions & 1 deletion src/twisted/newsfragments/10098.bugfix

This file was deleted.

Empty file.
2 changes: 0 additions & 2 deletions src/twisted/newsfragments/10105.doc

This file was deleted.

1 change: 0 additions & 1 deletion src/twisted/newsfragments/10106.bugfix

This file was deleted.

1 change: 0 additions & 1 deletion src/twisted/newsfragments/10107.misc

This file was deleted.

1 change: 0 additions & 1 deletion src/twisted/newsfragments/10108.misc

This file was deleted.

Empty file.
1 change: 0 additions & 1 deletion src/twisted/newsfragments/10110.misc

This file was deleted.

1 change: 0 additions & 1 deletion src/twisted/newsfragments/10111.feature

This file was deleted.

1 change: 0 additions & 1 deletion src/twisted/newsfragments/10112.misc

This file was deleted.

Empty file.
Empty file.
Empty file.
Empty file.
Empty file.
1 change: 0 additions & 1 deletion src/twisted/newsfragments/10125.bugfix

This file was deleted.

1 change: 0 additions & 1 deletion src/twisted/newsfragments/10139.bugfix

This file was deleted.

Empty file.
2 changes: 0 additions & 2 deletions src/twisted/newsfragments/10142.bugfix

This file was deleted.

Empty file.
Empty file.
1 change: 0 additions & 1 deletion src/twisted/newsfragments/10147.bugfix

This file was deleted.

Empty file.
Empty file.
1 change: 0 additions & 1 deletion src/twisted/newsfragments/10155.misc

This file was deleted.

6 changes: 0 additions & 6 deletions src/twisted/newsfragments/10157.bugfix

This file was deleted.

Empty file.
1 change: 0 additions & 1 deletion src/twisted/newsfragments/10168.misc

This file was deleted.

Empty file.
1 change: 0 additions & 1 deletion src/twisted/newsfragments/10172.misc

This file was deleted.

Empty file.
Empty file.
Empty file.
1 change: 0 additions & 1 deletion src/twisted/newsfragments/10189.bugfix

This file was deleted.

1 change: 0 additions & 1 deletion src/twisted/newsfragments/10194.misc

This file was deleted.

Empty file.
2 changes: 0 additions & 2 deletions src/twisted/newsfragments/10203.bugfix

This file was deleted.

1 change: 0 additions & 1 deletion src/twisted/newsfragments/10211.bugfix

This file was deleted.

Empty file.
1 change: 0 additions & 1 deletion src/twisted/newsfragments/10213.doc

This file was deleted.

Empty file.
Empty file.
Empty file.
1 change: 0 additions & 1 deletion src/twisted/newsfragments/9520.doc

This file was deleted.

Empty file.
Empty file.
1 change: 0 additions & 1 deletion src/twisted/newsfragments/9933.bugfix

This file was deleted.

1 change: 0 additions & 1 deletion src/twisted/newsfragments/9958.removal

This file was deleted.

1 change: 1 addition & 0 deletions src/twisted/trial/newsfragments/.gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
!.gitignore
graingert marked this conversation as resolved.
Show resolved Hide resolved
Empty file.
1 change: 0 additions & 1 deletion src/twisted/trial/newsfragments/9962.misc

This file was deleted.

4 changes: 2 additions & 2 deletions src/twisted/web/_stan.py
Original file line number Diff line number Diff line change
Expand Up @@ -225,7 +225,7 @@ def _clone(self, obj: "Flattenable", deep: bool) -> "Flattenable":
warn(
"Cloning a Tag which contains a generator is unsafe, "
"since the generator can be consumed only once; "
"this is deprecated since Twisted NEXT and will raise "
"this is deprecated since Twisted 21.7.0 and will raise "
"an exception in the future",
DeprecationWarning,
)
Expand All @@ -234,7 +234,7 @@ def _clone(self, obj: "Flattenable", deep: bool) -> "Flattenable":
warn(
"Cloning a Tag which contains a coroutine is unsafe, "
"since the coroutine can run only once; "
"this is deprecated since Twisted NEXT and will raise "
"this is deprecated since Twisted 21.7.0 and will raise "
"an exception in the future",
DeprecationWarning,
)
Expand Down
1 change: 0 additions & 1 deletion src/twisted/web/newsfragments/10100.misc

This file was deleted.

1 change: 0 additions & 1 deletion src/twisted/web/newsfragments/10130.bugfix

This file was deleted.

1 change: 0 additions & 1 deletion src/twisted/web/newsfragments/10136.bugfix

This file was deleted.

2 changes: 0 additions & 2 deletions src/twisted/web/newsfragments/10137.bugfix

This file was deleted.

1 change: 0 additions & 1 deletion src/twisted/web/newsfragments/10144.bugfix

This file was deleted.

Empty file.
1 change: 0 additions & 1 deletion src/twisted/web/newsfragments/10177.bugfix

This file was deleted.

2 changes: 0 additions & 2 deletions src/twisted/web/newsfragments/10184.feature

This file was deleted.

1 change: 0 additions & 1 deletion src/twisted/web/newsfragments/10186.misc

This file was deleted.

1 change: 0 additions & 1 deletion src/twisted/web/newsfragments/3795.bugfix

This file was deleted.

Empty file.
4 changes: 2 additions & 2 deletions src/twisted/web/test/test_stan.py
Original file line number Diff line number Diff line change
Expand Up @@ -123,7 +123,7 @@ def test_cloneGeneratorDeprecation(self) -> None:
DeprecationWarning,
"Cloning a Tag which contains a generator is unsafe, "
"since the generator can be consumed only once; "
"this is deprecated since Twisted NEXT and will raise "
"this is deprecated since Twisted 21.7.0 and will raise "
"an exception in the future",
sys.modules[Tag.__module__].__file__,
tag.clone,
Expand All @@ -146,7 +146,7 @@ async def asyncFunc() -> NoReturn:
DeprecationWarning,
"Cloning a Tag which contains a coroutine is unsafe, "
"since the coroutine can run only once; "
"this is deprecated since Twisted NEXT and will raise "
"this is deprecated since Twisted 21.7.0 and will raise "
"an exception in the future",
sys.modules[Tag.__module__].__file__,
tag.clone,
Expand Down