Event-driven networking engine written in Python.

Overview

Twisted

gitter pypi mypy

For information on changes in this release, see the NEWS file.

What is this?

Twisted is an event-based framework for internet applications, supporting Python 3.6+. It includes modules for many different purposes, including the following:

  • twisted.web: HTTP clients and servers, HTML templating, and a WSGI server
  • twisted.conch: SSHv2 and Telnet clients and servers and terminal emulators
  • twisted.words: Clients and servers for IRC, XMPP, and other IM protocols
  • twisted.mail: IMAPv4, POP3, SMTP clients and servers
  • twisted.positioning: Tools for communicating with NMEA-compatible GPS receivers
  • twisted.names: DNS client and tools for making your own DNS servers
  • twisted.trial: A unit testing framework that integrates well with Twisted-based code.

Twisted supports all major system event loops -- select (all platforms), poll (most POSIX platforms), epoll (Linux), kqueue (FreeBSD, macOS), IOCP (Windows), and various GUI event loops (GTK+2/3, Qt, wxWidgets). Third-party reactors can plug into Twisted, and provide support for additional event loops.

Installing

To install the latest version of Twisted using pip:

$ pip install twisted

Additional instructions for installing this software are in the installation instructions.

Documentation and Support

Twisted's documentation is available from the Twisted Matrix website. This documentation contains how-tos, code examples, and an API reference.

Help is also available on the Twisted mailing list.

There is also a pair of very lively IRC channels, #twisted (for general Twisted questions) and #twisted.web (for Twisted Web), on irc.libera.chat <https://web.libera.chat/>_.

Unit Tests

Twisted has a comprehensive test suite, which can be run by tox:

$ tox -l                       # to view all test environments
$ tox -e nocov                 # to run all the tests without coverage
$ tox -e withcov               # to run all the tests with coverage
$ tox -e alldeps-withcov-posix # install all dependencies, run tests with coverage on POSIX platform

You can test running the test suite under the different reactors with the TWISTED_REACTOR environment variable:

$ env TWISTED_REACTOR=epoll tox -e alldeps-withcov-posix

Some of these tests may fail if you:

  • don't have the dependencies required for a particular subsystem installed,
  • have a firewall blocking some ports (or things like Multicast, which Linux NAT has shown itself to do), or
  • run them as root.

Static Code Checkers

You can ensure that code complies to Twisted coding standards:

$ tox -e lint   # run pre-commit to check coding stanards
$ tox -e mypy   # run MyPy static type checker to check for type errors

Or, for speed, use pre-commit directly:

$ pipx run pre-commit run

Copyright

All of the code in this distribution is Copyright (c) 2001-2021 Twisted Matrix Laboratories.

Twisted is made available under the MIT license. The included LICENSE file describes this in detail.

Warranty

THIS SOFTWARE IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE USE OF THIS SOFTWARE IS WITH YOU.

IN NO EVENT WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR REDISTRIBUTE THE LIBRARY, BE LIABLE TO YOU FOR ANY DAMAGES, EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.

Again, see the included LICENSE file for specific legal details.

Comments
  • Parallelize execution of Trial unit tests into multiple processes to make more efficient use of available CPU cores

    Parallelize execution of Trial unit tests into multiple processes to make more efficient use of available CPU cores

    |exarkun's avatar| @exarkun reported| |-|-| |Trac ID|trac#1784| |Type|enhancement| |Created|2006-06-03 23:54:32Z| |Branch|https://github.com/twisted/twisted/tree/disttrial-1784-17|

    This would be awesome.

    Searchable metadata
    trac-id__1784 1784
    type__enhancement enhancement
    reporter__exarkun exarkun
    priority__highest highest
    milestone__ 
    branch__branches_disttrial_1784_17 branches/disttrial-1784-17
    branch_author__exarkun__therve__glyph exarkun, therve, glyph
    status__closed closed
    resolution__fixed fixed
    component__trial trial
    keywords__ 
    time__1149378872000000 1149378872000000
    changetime__1347871256000000 1347871256000000
    version__None None
    owner__therve therve
    cc__mithrandi cc__therve cc__iratsu cc__jesstess cc__jml
    
    fixed priority-highest enhancement trial 
    opened by twisted-trac 105
  • Add support for Next Protocol Negotiation and Application Layer Protocol Negotiation

    Add support for Next Protocol Negotiation and Application Layer Protocol Negotiation

    |Lukasa's avatar| @Lukasa reported| |-|-| |Trac ID|trac#7860| |Type|enhancement| |Created|2015-04-19 18:01:37Z| |Branch|https://github.com/twisted/twisted/tree/tls-alpn-npn-7860-25|

    ALPN and NPN are TLS extensions that allow for negotiation of the protocol to speak once the TLS connection has been established. Their purpose is to avoid latency by using the TLS handshake to do very simple protocol negotiation.

    NPN was originally specified outside the IETF: the IETF later adapted it into ALPN and specified it as such. The two have different handshake procedures and APIs, but fundamentally do the same thing. NPN is more widely supported at the moment because it was deployed earlier, but with ALPN support having landed in OpenSSL 1.0.2 ALPN will rapidly overtake NPN.

    This ticket would add support for both ALPN and NPN to Twisted's SSL implementation. Some details:

    • This is one ticket, not two, because fundamentally ALPN and NPN do the same job in basically the same way. There's little point implementing one without the other.
    • PyOpenSSL obtained support for NPN and ALPN in the 0.15 release, so consideration needs to be made to Twisted users with older PyOpenSSL releases.
    • Not all versions of OpenSSL support NPN, and even fewer support ALPN. Consideration needs to be made for Twisted users with old versions of OpenSSL.

    I am preparing a patch that adds this support, but if someone gets there before me I won't be too broken up about it!

    Attachments:

    • 7860_1.patch (9180 bytes) - added by Lukasa on 2015-04-20 21:11:47Z - First draft patch
    • 7860_2.patch (15831 bytes) - added by Lukasa on 2015-04-21 21:25:38Z - Second draft patch
    • 7860_3.patch (23038 bytes) - added by Lukasa on 2015-04-26 21:31:33Z - Third draft patch
    • 7860_4.patch (23778 bytes) - added by Lukasa on 2015-05-28 16:32:28Z - Patch version 4
    • 7860_5.patch (23964 bytes) - added by Lukasa on 2015-05-29 16:14:47Z - Fifth draft patch
    • 7860_6.patch (23967 bytes) - added by Lukasa on 2015-05-31 08:52:05Z - Sixth draft patch
    • 7860_7.patch (23966 bytes) - added by Lukasa on 2015-06-01 13:58:37Z - Seventh draft patch
    • 7860_8.patch (26611 bytes) - added by Lukasa on 2015-10-16 14:46:38Z - Draft 8 of the patch, containing an example
    • 7860_9.patch (27707 bytes) - added by Lukasa on 2015-10-16 15:01:28Z - Ninth draft, headers added to the example.
    • 7860_10.patch (22616 bytes) - added by Lukasa on 2015-10-19 09:04:23Z - Tenth draft patch
    • 7860_11.patch (27606 bytes) - added by Lukasa on 2015-10-20 10:23:14Z - Eleventh draft patch
    • 7860_12.patch (28784 bytes) - added by Lukasa on 2015-10-21 14:31:32Z - Twelfth draft patch
    • 7860_13.patch (28748 bytes) - added by Lukasa on 2015-10-22 14:23:39Z - Thirteenth draft patch
    • 7860_14.patch (38335 bytes) - added by Lukasa on 2015-10-23 14:22:45Z - Draft patch 14
    • 7860_15.patch (38203 bytes) - added by Lukasa on 2015-10-24 10:13:59Z - Draft fifteen
    • 7860_16.patch (37058 bytes) - added by Lukasa on 2015-10-28 03:06:25Z - Sixteenth draft patch
    • 7860_17.patch (36967 bytes) - added by Lukasa on 2015-10-28 08:04:40Z - Seventeenth draft patch
    • 7860_18.patch (37997 bytes) - added by Lukasa on 2015-10-29 02:16:07Z - Eighteenth draft patch
    • 7860_19.patch (38590 bytes) - added by Lukasa on 2015-11-03 13:45:26Z - Nineteenth draft patch
    • 7860_20.patch (41236 bytes) - added by Lukasa on 2015-11-03 15:17:03Z - Twentieth draft patch
    • 7860_21.patch (43083 bytes) - added by Lukasa on 2015-11-04 11:45:45Z - Twenty-first draft patch
    • 7860_22.patch (44658 bytes) - added by Lukasa on 2015-11-04 16:26:03Z - Twenty-second draft patch
    • 7860_23.patch (40501 bytes) - added by Lukasa on 2015-11-06 17:22:30Z - Twenty-third draft patch
    • 7860_24.patch (41106 bytes) - added by Lukasa on 2015-11-11 09:29:07Z - Twenty-fourth draft patch
    • 7860_25.patch (41176 bytes) - added by Lukasa on 2015-11-11 13:20:31Z - Twenty-fifth draft patch
    Searchable metadata
    trac-id__7860 7860
    type__enhancement enhancement
    reporter__Lukasa Lukasa
    priority__normal normal
    milestone__ 
    branch__branches_tls_alpn_npn_7860_25 branches/tls-alpn-npn-7860-25
    branch_author__hawkowl__adiroiban__glyph hawkowl, adiroiban, glyph
    status__closed closed
    resolution__fixed fixed
    component__core core
    keywords__None None
    time__1429466497611170 1429466497611170
    changetime__1447287369141147 1447287369141147
    version__None None
    owner__Lukasa Lukasa
    cc__hynek cc__hawkowl
    
    core fixed priority-normal enhancement 
    opened by twisted-trac 93
  • cross-platform API for enumerating X509 certificates trusted by the platform for transport layer security

    cross-platform API for enumerating X509 certificates trusted by the platform for transport layer security

    |glyph's avatar| @glyph reported| |-|-| |Trac ID|trac#5446| |Type|enhancement| |Created|2012-01-05 00:19:07Z| |Branch|https://github.com/twisted/twisted/tree/trusted-ca-openssl-defaults-5446-2|

    One component of #5445 (as originally discussed on #4023) would be an API for extracting the native trust roots from the platform. This is actually at least 3 tasks: one for Windows, one for Mac OS X, and at least one for Linux and BSD derivatives (although the only mechanism I'm familiar with there is the ca-certificates package in Debian, so perhaps there are other mechanisms we'd need to use as well).

    I think that there's a way to discover the '/etc/ssl/certs' path (the one ca-certificates installs) via some API in OpenSSL, and if there is, we should use it, so that it will work with an arbitrary distro rather than being hard-coded to where Debian decided to stick it.

    On Windows - and this is purely from a quick glance at the reference documentation, so take it with a grain of salt - I believe the right way to do this is to use CertOpenSystemStore with the string "CA", or possibly "ROOT", or maybe both, and then do CertEnumCertificatesInStore or maybe just PFXExportCertStoreEx to dump the certs into a format we can import into OpenSSL.

    On OS X, and again, I haven't done this, I believe you just have to call SSLCopyTrustedRoots to get the default trusted SSL CA certificates and then SecCertificateCopyData on the retrieved roots to turn them into DER (which we can then load into any SSL implementation).

    Searchable metadata
    trac-id__5446 5446
    type__enhancement enhancement
    reporter__glyph glyph
    priority__normal normal
    milestone__ 
    branch__branches_trusted_ca_openssl_defaults_5446_2 branches/trusted-ca-openssl-defaults-5446-2
    branch_author__itamarst__rwall__glyph itamarst, rwall, glyph
    status__closed closed
    resolution__fixed fixed
    component__core core
    keywords__ 
    time__1325722747000000 1325722747000000
    changetime__1395098609000000 1395098609000000
    version__None None
    owner__glyph glyph
    cc__ivank cc__twm cc__hynek
    
    core fixed priority-normal enhancement 
    opened by twisted-trac 89
  • Revive KQueue Reactor

    Revive KQueue Reactor

    |dialtone's avatar| dialtone reported| |-|-| |Trac ID|trac#1918| |Type|enhancement| |Created|2006-07-12 15:21:44Z| |Branch|https://github.com/twisted/twisted/tree/kqueue-1918|

    foom has been working a new version of pykqueue that works better than version 1.3 and is distributed and maintained by arg here: www.python-hpio.net.

    Under this new circumstances reviving the kqueue reactor should be a good aim to work for.

    Attachments:

    • kqueue.diff (15422 bytes) - added by dialtone on 2006-07-12 15:22:34Z - Working KQueue reactor patch
    • kqueue_1.1.diff (13239 bytes) - added by dialtone on 2006-07-13 16:48:40Z - New version
    • kqreactor_patch.diff (4070 bytes) - added by psykidellic on 2009-09-01 18:45:35Z - Patch for kqreactor using select26 module.
    • issue_1918.patch (6737 bytes) - added by psykidellic on 2010-04-05 21:20:58Z - kqueue using the Python select module.
    • twisted_errors.txt (45771 bytes) - added by psykidellic on 2010-04-05 21:33:13Z - Cases those failed.
    • new_kqueue.log (662618 bytes) - added by oberstet on 2011-11-04 15:46:21Z - new kqueue trial
    • select.log (659538 bytes) - added by oberstet on 2011-11-04 15:46:43Z - select trial (on same system)
    • select_vs_new_kqueue_diff.log (6450 bytes) - added by oberstet on 2011-11-04 15:48:18Z - diff select.log new_kqueue.log > select_vs_new_kqueue_diff.log
    • kqueue.patch (10648 bytes) - added by oberstet on 2011-11-07 17:15:16Z - select.kqueue based reactor
    • kqueue.log (723379 bytes) - added by oberstet on 2011-11-07 17:15:49Z - trial -r kqueue --rterrors twisted > kqueue.log
    • kqueue.2.patch (12370 bytes) - added by oberstet on 2011-11-09 14:00:46Z - Revised patch after review
    • kqueue.3.patch (14671 bytes) - added by oberstet on 2011-11-13 12:23:45Z - Revised patch : daemonization, correct news file
    • kqueue.4.patch (16895 bytes) - added by oberstet on 2011-11-15 12:30:36Z - Revised patch: docstring, IReactorDaemonize
    • kqueue.5.patch (21687 bytes) - added by oberstet on 2011-11-23 14:07:30Z - Revised patch: unit tests
    • kqueue.6.patch (21403 bytes) - added by oberstet on 2012-01-19 16:15:12Z - revised for review comments of exarkun
    • kqueue.7.patch (21411 bytes) - added by oberstet on 2012-01-19 16:39:53Z - issue 5.: use new style class
    Searchable metadata
    trac-id__1918 1918
    type__enhancement enhancement
    reporter__dialtone dialtone
    priority__normal normal
    milestone__ 
    branch__branches_kqueue_1918 branches/kqueue-1918
    branch_author__oberstet__exarkun__therve oberstet, exarkun, therve
    status__closed closed
    resolution__fixed fixed
    component__core core
    keywords__ 
    time__1152717704000000 1152717704000000
    changetime__1337450143000000 1337450143000000
    version__None None
    owner__oberstet oberstet
    cc__therve cc__thijs cc__psykidellic cc__oberstet
    
    core fixed priority-normal enhancement 
    opened by twisted-trac 88
  • Add extras_require to top-level setup.py to list Twisted optional dependancies

    Add extras_require to top-level setup.py to list Twisted optional dependancies

    |thijstriemstra's avatar| @thijstriemstra reported| |-|-| |Trac ID|trac#3696| |Type|enhancement| |Created|2009-03-22 17:26:16Z| |Branch|https://github.com/twisted/twisted/tree/extras-3696-6|

    Setuptools provides a feature for listing optional dependancies: extras_require. It seems like this functionality should be in twisted/python/dist.py or twisted/python/release.py or something, especially given that twisted/conch/topfiles/setup.py needs to know about the pycrypto dependency somehow too.

    Attachments:

    Searchable metadata
    trac-id__3696 3696
    type__enhancement enhancement
    reporter__thijs thijs
    priority__normal normal
    milestone__ 
    branch__branches_extras_3696_6 branches/extras-3696-6
    branch_author__glyph glyph
    status__closed closed
    resolution__fixed fixed
    component__core core
    keywords__ 
    time__1237742776000000 1237742776000000
    changetime__1422883535716406 1422883535716406
    version__None None
    owner__glyph glyph
    cc__zooko
    
    core fixed priority-normal enhancement 
    opened by twisted-trac 87
  • mechanism for specifying a cred checker for twistd plugins to use

    mechanism for specifying a cred checker for twistd plugins to use

    |glyph's avatar| @glyph reported| |-|-| |Trac ID|trac#2570| |Type|enhancement| |Created|2007-04-14 23:34:01Z| |Branch|https://github.com/twisted/twisted/tree/checker-2570-2|

    Several plugins, such as words, ftp, mail, news, and conch, mainly exist to expose a protocol implementation to the world. These protocols all have the concept of a user and a session, which is implemented with twisted cred.

    The twistd plugins in question exist to expose these protocols as useful tools to users without involving Python programming. However, in order to be truly useful, the plugins must be able to connect to an established user-database. Some ad-hoc work (conch's use of pwd, words' use of --passwd) has already been done in this direction, however, the authentication glue must be replicated (therefore replicated inconsistently) between twistd plugins. Currently they provide less than a pale shadow of the generality and utility of cred's implementation, even those simple checkers present in Twisted itself.

    Checker pluggability should be easy to achieve with simple command-line libraries for each plugin to use, and a simple plugin system for checkers to register themselves.

    Searchable metadata
    trac-id__2570 2570
    type__enhancement enhancement
    reporter__glyph glyph
    priority__highest highest
    milestone__ 
    branch__branches_checker_2570_2 branches/checker-2570-2
    branch_author__ 
    status__closed closed
    resolution__fixed fixed
    component__core core
    keywords__ 
    time__1176593641000000 1176593641000000
    changetime__1199371820000000 1199371820000000
    version__None None
    owner__ 
    cc__itamarst cc__glyph cc__therve cc__mesozoic cc__exarkun
    
    core fixed priority-highest enhancement 
    opened by twisted-trac 85
  • Support IPv6 at least as well as IPv4 is supported

    Support IPv6 at least as well as IPv4 is supported

    |dripton's avatar| dripton reported| |-|-| |Trac ID|trac#3014| |Type|enhancement| |Created|2008-01-26 03:18:02Z| |Branch|https://github.com/twisted/twisted/tree/tcp-ipv6-3014|

    Twisted should provide functionality for IPv6 addresses equivalent to that provided for IPv4 addresses.

    See IPv6 and tickets with keyword ipv6 for progress on this issue. This ticket will be resolved when a fair amount of progress on those other more specific tickets has been made.

    (Disregard the attachments, comments, and branch for this ticket; they served to arrive at a plan for supporting IPv6 but many of them are now out of date.)

    Attachments:

    • ipv6.2.patch (57492 bytes) - added by dripton on 2008-02-01 00:48:52Z - Version 3 of the ipv6 patch
    • ipv6.patch (57492 bytes) - added by dripton on 2008-02-01 00:48:56Z - Version 3 of the ipv6 patch
    • ipv6.log (16657 bytes) - added by exarkun on 2008-06-25 03:06:12Z - the irc conversation
    • test_test_application.py.patch (1039 bytes) - added by victorvieux on 2009-06-17 09:28:38Z - Fix TCP6Server and TCP6Client unittest
    • twisted_application_internet.py.patch (1750 bytes) - added by victorvieux on 2009-06-17 09:29:03Z - TCP6Server & TCP6Client
    • twisted-ipv6.patch (16098 bytes) - added by philmayers on 2010-07-20 17:02:11Z - Handles scope ID on connectTCP addresses; may need some more work server side
    • Twisted-11.0.0-ipv6.chjurk.diff (17758 bytes) - added by chjurk on 2011-10-11 11:24:24Z - IPv6 patch for Twisted 11.0.0
    Searchable metadata
    trac-id__3014 3014
    type__enhancement enhancement
    reporter__dripton dripton
    priority__high high
    milestone__ 
    branch__branches_tcp_ipv6_3014 branches/tcp-ipv6-3014
    branch_author__dripton__victorvieux dripton, victorvieux
    status__closed closed
    resolution__duplicate duplicate
    component__core core
    keywords__ipv6 ipv6
    time__1201317482000000 1201317482000000
    changetime__1428688860933637 1428688860933637
    version__None None
    owner__dripton dripton
    cc__therve cc__cassidy cc__exarkun cc__jknight cc__thijs cc__np cc__serverhorror cc__andyhhp cc__thomasvs cc__honglei
    
    core priority-high enhancement duplicate ipv6 
    opened by twisted-trac 82
  • twisted.positioning -- a better positioning framework

    twisted.positioning -- a better positioning framework

    |lvh's avatar| @lvh reported| |-|-| |Trac ID|trac#3926| |Type|enhancement| |Created|2009-07-22 10:24:31Z| |Branch|https://github.com/twisted/twisted/tree/positioning-3926-3|

    As some of you have undoubtedly noticed, Twisted's current GPS support (twisted.protocols.gps) has issues:

    1. The public API sucks:
        1. __Fourteen__ arguments? All of them __positional__? Really?
        2. ``fooReceived`` methods are organized by what happens to be easy for NMEA sentences, not what makes sense
        2. It's hard to extend, raw objects are passed instead of pretty wrappers that abstract technology details away
        3. It's very protocol centric: the API changes between NMEA and Zodiac, a good API would look the same for any positioning technology
    2. There are no unit tests.
    3. It assumes we're using satellite navigation (well, not really, but only because there's no interface that says what it does)
    

    This ticket is about a proposed alternative, twisted.positioning, which hopefully will:

    1. deprecate the existing code ([#6810](https://github.com/twisted/twisted/issues/6810))
    2. support more than satellite-based navigation (such as cell triangulation) or maybe just more than GPS ([http://en.wikipedia.org/wiki/Galileo_(satellite_navigation) Galileo] comes to mind)
    

    After reviewing preliminary code and discussing the issue, we came to the following conclusions:

    We need to have an interface (tentative name: IPositioningDataReceiver) that implements a number of methods, such as:

    1. `positionRecieved(self, position)`
    2. `altitudeReceived(self, altitude)`
    3. `headingReceived(self, heading)`
    4. ...
    

    The parameters of these methods should not be simple objects (like floats or strs or bools), but Position, Heading... objects so that more API can be added later as required.

    The classes that implement this should not continuously update their own state. Doing that is the job of the application that uses the framework.

    Originally we thought it would be cool if accuracy data came together with positioning data, however this idea was dropped because it was unrealistic with real world positioning devices.

    We should try to keep this API as general as possible (making as few assumptions about the underlying protocol as possible).

    First thing to do should probably be finalizing the IPositioningReceiver interface. Getting it right is extremely important and has big implementation consequences: NMEA might present data in an illogical or useless order, but this shouldn't change our interface significantly.

    This raises problems with the fooReceived methods, since data that is made available in chunks (headingRecieved doing both magnetic and true headings for example) might not have that data made available in the underlying implementation (some NMEA sentences only provide true heading, some proprietary ones only provide magnetic heading, and some sentences provide both -- it doesn't make sense to ignore the data from the first two types of sentence simply because they didn't have both kinds of heading).

    The easy way out is to make the objects that the interface deals with as abstract as possible. With enough eyes, every problem is tiny, so your comments are much appreciated as usual.

    Attachments:

    Searchable metadata
    trac-id__3926 3926
    type__enhancement enhancement
    reporter__lvh lvh
    priority__normal normal
    milestone__ 
    branch__branches_positioning_3926_3 branches/positioning-3926-3
    branch_author__hawkowl__lvh hawkowl, lvh
    status__closed closed
    resolution__fixed fixed
    component__core core
    keywords__protocols_gps_positioning protocols gps positioning
    time__1248258271000000 1248258271000000
    changetime__1395059205000000 1395059205000000
    version__None None
    owner__lvh lvh
    cc__ashfall
    
    core fixed priority-normal enhancement 
    opened by twisted-trac 80
  • abortConnection() method for transports

    abortConnection() method for transports

    |itamarst's avatar| @itamarst reported| |-|-| |Trac ID|trac#78| |Type|defect| |Created|2003-07-15 00:54:40Z| |Branch|https://github.com/twisted/twisted/tree/abortConnection-78-10|

    Attachments:

    Searchable metadata
    trac-id__78 78
    type__defect defect
    reporter__itamarst itamarst
    priority__high high
    milestone__ 
    branch__branches_abortConnection_78_10 branches/abortConnection-78-10
    branch_author__itamarst__jknight__exarkun__ivank__glyph itamarst, jknight, exarkun, ivank, glyph
    status__closed closed
    resolution__fixed fixed
    component__core core
    keywords__ 
    time__1058230480000000 1058230480000000
    changetime__1488724283180941 1488724283180941
    version__ 
    owner__itamar itamar
    cc__glyph cc__itamarst cc__jknight cc__naked cc__exarkun cc__ivank cc__spiv cc__PenguinOfDoom cc__smira cc__atsuoi cc__kontinuity
    
    core bug fixed priority-high 
    opened by twisted-trac 79
  • ☂ New Logging Hotness™

    ☂ New Logging Hotness™

    |wsanchez's avatar| @wsanchez reported| |-|-| |Trac ID|trac#6750| |Type|enhancement| |Created|2013-09-17 23:41:46Z| |Branch|https://github.com/twisted/twisted/tree/log-booyah-6750-6|

    Our logging system should have certain desirable attributes, so as:

    • Logging events, rather than messages. Events are structured data.
      • Events may provide a format string, to use when rendering as text. This is not, however, required.
    • Allow for arbitrary objects in events.
      • Which covers, but needs to be explicitly called out: allow for arbitrary identifiers in events.
    • Rendering to text should happen only when someone wants to write an event as text, not at the time that the event is created.
      • This prevents doing the work of rendering a message that no observer chooses to utilize, such as: log.debug(“%s” % (somethingExpensive(),))
    • Logging levels.
    • Logging namespaces. (a.k.a. “systems”).
    • Straightforward filtering mechanisms
      • Built-in filtering based on log levels and log namespaces.
    • Don’t use %-formatting, which is clearly no longer hip. Use PEP3101.
    • Straightforward mechanism for registering event observers
      • That may opt into or out of the filtering mechanisms, or build a separate filtering chain.
    • API for logging an event should be simple.
      • Logging a string should be very simple: log.info(“I peed my pants.”)
      • Logging data should be pretty simple: log.info(“{user} peed pants at {time}”, user=getUser(), time=getTime())
      • We can crush PEP3101 with EXTREME AWESOMENESS: log.info(“{self.user} peed pants at {self.getTime()}”, self=self) WHAT NO WAY BOOYAH
      • But you don’t need formatting if it’s not appropriate for you: log.info(obj=self); it just won’t necessarily be all pretty in a text file, is all.

    Current logging does some, but not all of the above. The current API is also kind of a mess, where twisted.python.log.msg() takes *message, not message and OMG why? and global variables and stuff.

    Attachments:

    • final-pass.png (5024 bytes) - added by glyph on 2014-05-21 18:01:02Z - just sayin'
    Searchable metadata
    trac-id__6750 6750
    type__enhancement enhancement
    reporter__wsanchez wsanchez
    priority__normal normal
    milestone__New_Logging_System New Logging System
    branch__branches_log_booyah_6750_6 branches/log-booyah-6750-6
    branch_author__wsanchez__glyph wsanchez, glyph
    status__closed closed
    resolution__fixed fixed
    component__logger logger
    keywords__BOOYAH_ BOOYAH!
    time__1379461306000000 1379461306000000
    changetime__1481165626637518 1481165626637518
    version__None None
    owner__wsanchez wsanchez
    cc__glyph cc__radix cc__exarkun cc__posita
    
    fixed priority-normal enhancement logger 
    opened by twisted-trac 73
  • Implement something like ReconnectingClientFactory for endpoints

    Implement something like ReconnectingClientFactory for endpoints

    |glyph's avatar| @glyph reported| |-|-| |Trac ID|trac#4735| |Type|enhancement| |Created|2010-11-10 17:33:31Z| |Branch|https://github.com/twisted/twisted/tree/persistent-client-service-4735-5|

    It's pretty easy to write a retry loop which will keep attempting an endpoint connection until it succeeds; this is mostly a [ticket:4699 documentation issue]. However, another use-case for ReconnectingClientFactory is to keep a connection up after disconnections even if the initial connection succeeds just fine and only disconnects later; in other words, to react to clientConnectionLost vs. clientConnectionFailed. Implementing this would be [ticket:4700 easier if it were a little easier to cheaply dynamically proxy a protocol object to capture the connectionLost notification], but it's definitely possible to do this today with some care. We should provide such a utility so that people using the new endpoint APIs have a convenient mechanism available. (As we implement this, we should take care not to make the same [ticket:4734 naming and documentation mistakes] that ReconnectingClientFactory does.)

    Searchable metadata
    trac-id__4735 4735
    type__enhancement enhancement
    reporter__glyph glyph
    priority__high high
    milestone__ 
    branch__branches_persistent_client_service_4735_5 branches/persistent-client-service-4735-5
    branch_author__glyph__hodgestar__dreid__tomprince glyph, hodgestar, dreid, tomprince
    status__closed closed
    resolution__fixed fixed
    component__core core
    keywords__None None
    time__1289410411000000 1289410411000000
    changetime__1457160593406882 1457160593406882
    version__None None
    owner__glyph glyph
    cc__brandl cc__acapnotic cc__free.ekanayaka cc__ralphm cc__hodgestar cc__hynek cc__mithrandi cc__adiroiban
    
    core fixed priority-high enhancement 
    opened by twisted-trac 69
  • some ciphers for conch triggered deprecation warning with `cryptography>=37`

    some ciphers for conch triggered deprecation warning with `cryptography>=37`

    Describe the incorrect behavior you saw Some ciphers triggered deprecation warning with cryptography>=37 when using conch. They are

    • CAST5
    • SEED
    • IDEA
    • Blowfish from cryptography.hazmat.primitives.ciphers.algorithms.

    Describe how to cause this behavior cryptography>=37 has deprecated these ciphers which will be removed in a future version. More details https://github.com/pyca/cryptography/pull/6922.

    Describe the correct behavior you'd like to see Deprecation warning should be gone.

    Testing environment Twisted==22.10.0 on Mac 12.6 (21G115).

    bug 
    opened by llouislu 0
  • #11786 fix misuse of mktime in tests

    #11786 fix misuse of mktime in tests

    Scope and purpose

    Fixes #11786

    This fixes some test case bugs, where the test cases use mktime with a DST flag equal to 1 in a timezone that does not observe DST. The behavior of mktime is not well-defined in this situation, and on recent glibc versions mktime fails (which it's allowed to do). The test case should not assume that mktime succeeds here.

    Contributor Checklist:

    This process applies to all pull requests - no matter how small. Have a look at our developer documentation before submitting your Pull Request.

    Below is a non-exhaustive list (as a reminder):

    • The title of the PR should describe the changes and starts with the associated issue number, like “#1234 Brief description”.
    • A release notes news fragment file was create in src/twisted/newsfragments/ (see: Release notes fragments docs.)
    • The automated tests were updated.
    • Once all checks are green, request a review by leaving a comment that contains exactly the string please review. Our bot will trigger the review process, by applying the pending review label and requesting a review from the Twisted dev team.
    opened by eggert 0
  • Tests broken due to mktime handling (Linux + glibc)

    Tests broken due to mktime handling (Linux + glibc)

    Since a glibc commit, three twisted tests started to fail: test_formatTimeDefault, test_eventAsTextTimestampOnly, test_formatTimeWithDefaultFormat.

    After some talk with glibc upstream, I'm inclined to think that the root of the problem is that these tests use mktime with timezone UTC+00 and indicating daylight saving which doesn't make sense (no DST in that timezone by definition).

    The tests are in https://github.com/twisted/twisted/blob/twisted-22.10.0/src/twisted/logger/test/test_format.py

    Testing environment

    • Linux + glibc, triggered after https://sourceware.org/git/?p=glibc.git;a=commit;h=83859e1115269cf56d21669361d4ddbe2687831c (also picked to some stable glibc branches). I'm using NixOS in particular, but that shouldn't be relevant really.

    • twisted-22.10.0 + python-3.10.8

    Failed logs:

    ===============================================================================
    [FAIL]
    Traceback (most recent call last):
      File "/nix/store/l2dwsswg8dd2ybqpxjy3a1iqsf5lj9d5-python3.10-twisted-22.10.0/lib/python3.10/site-packages/tw
    isted/logger/test/test_format.py", line 251, in test_formatTimeDefault
        self.assertEqual(
      File "/nix/store/l2dwsswg8dd2ybqpxjy3a1iqsf5lj9d5-python3.10-twisted-22.10.0/lib/python3.10/site-packages/tw
    isted/trial/_synctest.py", line 441, in assertEqual
        super().assertEqual(first, second, msg)
      File "/nix/store/xwz1n452s7913wj1338514lqzajmbgla-python3-3.10.8/lib/python3.10/unittest/case.py", line 845,
     in assertEqual
        assertion_func(first, second, msg=msg)
      File "/nix/store/xwz1n452s7913wj1338514lqzajmbgla-python3-3.10.8/lib/python3.10/unittest/case.py", line 1226
    , in assertMultiLineEqual
        self.fail(self._formatMessage(msg, standardMsg))
    twisted.trial.unittest.FailTest: '2013-09-24T10:40:47+0000 [-#-] XYZZY\n' != '2013-09-24T11:40:47+0000 [-#-] XYZZY\n'
    - 2013-09-24T10:40:47+0000 [-#-] XYZZY
    ?             ^
    + 2013-09-24T11:40:47+0000 [-#-] XYZZY
    ?             ^
    
    
    twisted.logger.test.test_format.ClassicLogFormattingTests.test_formatTimeDefault
    ===============================================================================
    [FAIL]
    Traceback (most recent call last):
      File "/nix/store/l2dwsswg8dd2ybqpxjy3a1iqsf5lj9d5-python3.10-twisted-22.10.0/lib/python3.10/site-packages/twisted/logger/test/test_format.py", line 589, in test_eventAsTextTimestampOnly
        self.assertEqual(
      File "/nix/store/l2dwsswg8dd2ybqpxjy3a1iqsf5lj9d5-python3.10-twisted-22.10.0/lib/python3.10/site-packages/twisted/trial/_synctest.py", line 441, in assertEqual
        super().assertEqual(first, second, msg)
      File "/nix/store/xwz1n452s7913wj1338514lqzajmbgla-python3-3.10.8/lib/python3.10/unittest/case.py", line 845, in assertEqual
        assertion_func(first, second, msg=msg)
      File "/nix/store/xwz1n452s7913wj1338514lqzajmbgla-python3-3.10.8/lib/python3.10/unittest/case.py", line 1226, in assertMultiLineEqual
        self.fail(self._formatMessage(msg, standardMsg))
    twisted.trial.unittest.FailTest: '2013-09-24T10:40:47+0000 ABCD' != '2013-09-24T11:40:47+0000 ABCD'
    - 2013-09-24T10:40:47+0000 ABCD
    ?             ^
    + 2013-09-24T11:40:47+0000 ABCD
    ?             ^
    
    
    twisted.logger.test.test_format.EventAsTextTests.test_eventAsTextTimestampOnly
    ===============================================================================
    [FAIL]
    Traceback (most recent call last):
      File "/nix/store/l2dwsswg8dd2ybqpxjy3a1iqsf5lj9d5-python3.10-twisted-22.10.0/lib/python3.10/site-packages/twisted/logger/test/test_format.py", line 176, in test_formatTimeWithDefaultFormat
        testForTimeZone(
      File "/nix/store/l2dwsswg8dd2ybqpxjy3a1iqsf5lj9d5-python3.10-twisted-22.10.0/lib/python3.10/site-packages/twisted/logger/test/test_format.py", line 172, in testForTimeZone
        self.assertEqual(formatTime(localDST), expectedDST)
      File "/nix/store/l2dwsswg8dd2ybqpxjy3a1iqsf5lj9d5-python3.10-twisted-22.10.0/lib/python3.10/site-packages/twisted/trial/_synctest.py", line 441, in assertEqual
        super().assertEqual(first, second, msg)
      File "/nix/store/xwz1n452s7913wj1338514lqzajmbgla-python3-3.10.8/lib/python3.10/unittest/case.py", line 845, in assertEqual
        assertion_func(first, second, msg=msg)
      File "/nix/store/xwz1n452s7913wj1338514lqzajmbgla-python3-3.10.8/lib/python3.10/unittest/case.py", line 1226, in assertMultiLineEqual
        self.fail(self._formatMessage(msg, standardMsg))
    twisted.trial.unittest.FailTest: '2006-06-29T23:00:00+0000' != '2006-06-30T00:00:00+0000'
    - 2006-06-29T23:00:00+0000
    ?         ^^ ^^
    + 2006-06-30T00:00:00+0000
    ?         ^^ ^^
    
    
    twisted.logger.test.test_format.TimeFormattingTests.test_formatTimeWithDefaultFormat
    -------------------------------------------------------------------------------
    
    bug 
    opened by vcunat 0
  • twisted-iocpsupport 3.11 wheels

    twisted-iocpsupport 3.11 wheels

    You have many repos, and the link in the other one 404s, so I'm posting here.

    Would you consider updating twisted-iocpsupport with windows wheels for 3.11?

    To build it on windows, you are forced to install microsoft spyware obliterating the target system's integrity.

    I understand 3.11 is very new, but maybe it's as simple as incrementing a number in this case?

    Thanks

    bug 
    opened by elandorr 1
  • sdist is missing dump_all_version_info.py

    sdist is missing dump_all_version_info.py

    Describe the incorrect behavior you saw The tox.ini file as included in sdist at PyPI refers to dump_all_version_info.py, but dump_all_version_info.py is not included in the sdist. https://github.com/twisted/twisted/blob/twisted-22.10.0/tox.ini#L91

    Describe how to cause this behavior

    Any attempt to run tox fails with:

    $(BLDDIR)/Twisted-22.10.0/.tox/lint/bin/python: can't open file '$(BLDDIR)/Twisted-22.10.0/admin/dump_all_version_info.py': [Errno 2] No such file or directory
    

    Describe the correct behavior you'd like to see Either the dump_all_version_info.py should be added to sdist, or tox.ini should not use it.

    bug 
    opened by mtelka 0
Releases(twisted-22.10.0)
  • twisted-22.10.0(Oct 31, 2022)

    Twisted 22.10.0 (2022-10-30)

    This release contains a security fix for CVE-2022-39348. This is a low-severity security bug.

    Twisted 22.10.0rc1 release candidate was released on 2022-10-26 and there are no changes between the release candidate and the final release.

    Features

    • The systemd: endpoint parser now supports "named" file descriptors. This is a more reliable mechanism for choosing among several inherited descriptors. (#8147)

    Improved Documentation

    • The systemd endpoint parser's index parameter is now documented as leading to non-deterministic results in which descriptor is selected. The new name parameter is now documented as preferred. (#8146)
    • The implementers of Zope interfaces are once more displayed in the documentations. (#11690)

    Deprecations and Removals

    • twisted.protocols.dict, which was deprecated in 17.9, has been removed. (#11725)

    Misc

    • #11573, #11599, #11616, #11628, #11631, #11640, #11645, #11647, #11652, #11664, #11674, #11679, #11686, #11692, #11694, #11696, #11700, #11702, #11713, #11715, #11721

    Conch

    Bugfixes

    
    - twisted.conch.manhole.ManholeInterpreter now captures tracebacks even if sys.excepthook has been modified. (#11638)
    
    
    Web
    ---
    
    Features
    
    • The twisted.web.pages.errorPage, notFound, and forbidden each return an IResource that displays an HTML error pages safely rendered using twisted.web.template. (#11716)

    Bugfixes

    
    - twisted.web.error.Error.__str__ no longer raises an exception when the error's message attribute is None. Additionally, it validates that code is a plausible 3-digit HTTP status code. (#10271)
    - The typing of the twisted.web.http_headers.Headers methods addRawHeader() and setRawHeaders() now allow mixing str and bytes, matching the runtime behavior. (#11635)
    - twisted.web.vhost.NameVirtualHost no longer echoes HTML received in the Host header without escaping it (CVE-2022-39348, GHSA-vg46-2rrj-3647). (#11716)
    
    
    Deprecations and Removals
    
    • twisted.web.resource.Resource.putChild now raises TypeError when the path argument is not bytes, rather than issuing a deprecation warning. (#8985)
    • The twisted.web.resource.ErrorPage, NoResource, and ForbiddenResource classes have been deprecated in favor of new implementations twisted.web.pages module because they permit HTML injection. (#11716)

    Mail

    Bugfixes

    
    - emailserver.tac now runs under python3.x (#11634)
    
    
    Words
    -----
    
    No significant changes.
    
    
    Names
    -----
    
    No significant changes.
    
    
    Trial
    -----
    
    Features
    
    • twisted.trial.unittest.SynchronousTestCase.successResultOf is now annotated as accepting coroutines. (#11657)

    Bugfixes

    
    - The implementation of ``trial -jN ...`` now handles test errors and failures larger than 64 kB.  It also handles other internal communication errors by logging them in the worker and attempting to send them to the parent process -- instead of crashing with ``UnknownRemoteError`` and no additional details. (#10314)
    - `trial -jN --logfile path` no longer hangs if *path* contains a directory separator. (#11580)
    
    
    Misc
    ~~~~
    
    - #11649, #11661, #11677, #11710
    
    Source code(tar.gz)
    Source code(zip)
  • twisted-22.10.0rc1(Oct 26, 2022)

    Twisted 22.10.0.rc1 (2022-10-26)

    Features

    • The systemd: endpoint parser now supports "named" file descriptors. This is a more reliable mechanism for choosing among several inherited descriptors. (#8147)

    Bugfixes

    • test.yaml workflow permissions restricted. (#11631)

    Improved Documentation

    • The systemd endpoint parser's index parameter is now documented as leading to non-deterministic results in which descriptor is selected. The new name parameter is now documented as preferred. (#8146)
    • The implementers of Zope interfaces are once more displayed in the documentations. (#11690)

    Deprecations and Removals

    • twisted.protocol.dict, which was deprecated in 17.9, was now removed. (#11725)

    Misc

    • #11573, #11599, #11616, #11628, #11640, #11645, #11647, #11652, #11664, #11674, #11679, #11686, #11692, #11694, #11696, #11700, #11702, #11713, #11715, #11721

    Conch

    Bugfixes

    • twisted.conch.manhole.ManholeInterpreter now captures tracebacks even if sys.excepthook has been modified. (#11638)

    Web

    Features

    • The twisted.web.pages.errorPage, notFound, and forbidden each return an IResource that displays an HTML error pages safely rendered using twisted.web.template. (#11716)

    Bugfixes

    • twisted.web.error.Error.str no longer raises an exception when the error's message attribute is None. Additionally, it validates that code is a plausible 3-digit HTTP status code. (#10271)
    • The typing of the twisted.web.http_headers.Headers methods addRawHeader() and setRawHeaders() now allow mixing str and bytes, matching the runtime behavior. (#11635)
    • twisted.web.vhost.NameVirtualHost no longer echoes HTML received in the Host header without escaping it (CVE-2022-39348, GHSA-vg46-2rrj-3647). (#11716)

    Deprecations and Removals

    • twisted.web.resource.Resource.putChild now raises TypeError when the path argument is not bytes, rather than issuing a deprecation warning. (#8985)
    • The twisted.web.resource.ErrorPage, NoResource, and ForbiddenResource classes have been deprecated in favor of new implementations twisted.web.pages module because they permit HTML injection. (#11716)

    Mail

    Bugfixes

    • emailserver.tac now runs under python3.x (#11634)

    Words

    No significant changes.

    Names

    No significant changes.

    Trial

    Features

    • twisted.trial.unittest.SynchronousTestCase.successResultOf is now annotated as accepting coroutines. (#11657)

    Bugfixes

    • The implementation of trial -jN ... now handles test errors and failures larger than 64 kB. It also handles other internal communication errors by logging them in the worker and attempting to send them to the parent process -- instead of crashing with UnknownRemoteError and no additional details. (#10314)
    • trial -jN --logfile path no longer hangs if path contains a directory separator. (#11580)

    Misc

    • #11649, #11661, #11677, #11710
    Source code(tar.gz)
    Source code(zip)
  • twisted-22.8.0(Sep 7, 2022)

    Twisted 22.8.0 (2022-09-06)

    Twisted 22.8.0rc1 release candidate was released on 2022-08-28 and there are no changes between the release candidate and the final release.

    Features

    • twisted.internet.defer.maybeDeferred will now schedule a coroutine result as asynchronous operation and return a Deferred that fires with the result of the coroutine. (#10327)
    • Twisted now works with Cryptography versions 37 and above, and as a result, its minimum TLS protocol version has been upgraded to TLSv1.2. (#10377)

    Bugfixes

    • twisted.internet.base.DelayedCall.__repr__ will no longer raise AttributeError if the DelayedCall was created before debug mode was enabled. As a side-effect, twisted.internet.base.DelayedCall.creator is now defined as None in cases where previously it was undefined. (#8306)
    • twisted.internet.iocpreactor.udp now properly re-queues its listener when there is a failure condition on the read from the socket. (#10052)
    • twisted.internet.defer.inlineCallbacks no longer causes confusing StopIteration tracebacks to be added to the top of tracebacks originating in triggered callbacks (#10260)
    • The typing of twisted.internet.task.react no longer constrains the type of argv. (#10289)
    • ContextVar.reset() now works correctly inside inlineCallbacks functions and coroutines. (#10301)
    • Implement twisted.python.failure._Code.co_positions for compatibility with Python 3.11. (#10336)
    • twisted.pair.tuntap._TUNSETIFF and ._TUNGETIFF values are now correct parisc, powerpc and sparc architectures. (#10339)

    Improved Documentation

    • The release process documentation was updated to include information about doing a security release. (#10324)
    • The development and policy documentation pages were moved into the same directory that is now placed inside the documentation root directory. (#11575)

    Deprecations and Removals

    • Python 3.6 is no longer supported. Twisted 22.4.0 was the last version with support for Python 3.6. (#10304)

    Misc

    • #9437, #9495, #10066, #10275, #10318, #10325, #10328, #10329, #10331, #10349, #10350, #10352, #10353, #11561, #11564, #11567, #11569, #11585, #11592, #11600, #11606, #11610, #11612, #11614

    Conch

    Bugfixes

    
    - twisted.conch.checkers.UNIXAuthorizedKeysFiles now uses the filesystem encoding to decode usernames before looking them up in the password database, so it works on Python 3. (#10286)
    - twisted.conch.ssh.SSHSession.request_env no longer gives a warning if the session does not implement ISessionSetEnv. (#10347)
    - The cftp command line (and `twisted.conch.scripts.cftp.SSHSession.extReceived`) no longer raises an unhandled error when receiving data on stderr from the server. (#10351)
    
    
    Misc
    ~~~~
    
    - #10330
    
    
    Web
    ---
    
    Features
    
    • twisted.web.template.renderElement now combines consecutive, sychronously-available bytes up to a fixed size limit into a single string to pass to IRequest.write instead of passing them all separately. This greatly reduces the number of chunks in the response. (#10348)

    Misc

    
    - #11604
    
    
    Mail
    ----
    
    Bugfixes
    
    • twisted.mail.maildir.MaildirMessage now use byte header to avoid incompatibility with the FileMessage which writes bytes not strings lines to a message file (#10244)

    Words

    Bugfixes

    
    - twisted.words.protocols.irc.IRCClient now splits overly long NOTICEs and NOTICEs containing \n before sending. (#10285)
    
    
    Names
    -----
    
    Bugfixes
    
    • twisted.names.dns logs unparsable messages rather than generating a Failure instance (#9723)

    Trial

    Features

    
    - ``trial --jobs=N --exitfirst`` is now supported. (#9654)
    
    
    Bugfixes
    
    • trial --jobs=N --until-failure ... now reports the correct number of tests run after each iteration. (#10311)
    • trial -jN ... will now pass errors and failures to IReporter methods as instances of WorkerException instead of str. (#10333)

    Misc

    
    - #10319, #10338, #11571
    
    
    Source code(tar.gz)
    Source code(zip)
  • twisted-22.8.0rc1(Aug 28, 2022)

    Twisted 22.8.0.rc1 (2022-08-28)

    Features

    • twisted.internet.defer.maybeDeferred will now schedule a coroutine result as asynchronous operation and return a Deferred that fires with the result of the coroutine. (#10327)
    • Twisted now works with Cryptography versions 37 and above, and as a result its minimum TLS protocol version has been upgraded to TLSv1.2. (#10377)

    Bugfixes

    • twisted.internet.base.DelayedCall.__repr__ will no longer raise AttributeError if the DelayedCall was created before debug mode was enabled. As a side-effect, twisted.internet.base.DelayedCall.creator is now defined as None in cases where previously it was undefined. (#8306)
    • twisted.internet.iocpreactor.udp now properly re-queues its listener when there is a failure condition on the read from the socket. (#10052)
    • twisted.internet.defer.inlineCallbacks no longer causes confusing StopIteration tracebacks to be added to the top of tracebacks originating in triggered callbacks (#10260)
    • The typing of twisted.internet.task.react no longer constrains the type of argv. (#10289)
    • ContextVar.reset() now works correctly inside inlineCallbacks functions and coroutines. (#10301)
    • Implement twisted.python.failure._Code.co_positions for compatibility with Python 3.11. (#10336)
    • twisted.pair.tuntap._TUNSETIFF and ._TUNGETIFF values are now correct parisc, powerpc and sparc architectures. (#10339)

    Improved Documentation

    • The release process documentation was updated to include information about doing a security release. (#10324)
    • The development and policy documentation pages were moved into the same directory that is now placed inside the documentation root directory. (#11575)

    Deprecations and Removals

    • Python 3.6 is no longer supported. Twisted 22.4.0 was the last version with support for Python 3.6. (#10304)

    Misc

    • #9437, #9495, #10066, #10275, #10318, #10325, #10328, #10329, #10331, #10349, #10350, #10352, #10353, #11561, #11564, #11567, #11569, #11585, #11592, #11600, #11606, #11610, #11612, #11614

    Conch

    Bugfixes

    
    - twisted.conch.checkers.UNIXAuthorizedKeysFiles now uses the filesystem encoding to decode usernames before looking them up in the password database, so it works on Python 3. (#10286)
    - twisted.conch.ssh.SSHSession.request_env no longer gives a warning if the session does not implement ISessionSetEnv. (#10347)
    - The cftp command line (and `twisted.conch.scripts.cftp.SSHSession.extReceived`) no longer raises an unhandled error when receiving data on stderr from the server. (#10351)
    
    
    Misc
    ~~~~
    
    - #10330
    
    
    Web
    ---
    
    Features
    
    • twisted.web.template.renderElement now combines consecutive, sychronously-available bytes up to a fixed size limit into a single string to pass to IRequest.write instead of passing them all separately. This greatly reduces the number of chunks in the response. (#10348)

    Misc

    
    - #11604
    
    
    Mail
    ----
    
    Bugfixes
    
    • twisted.mail.maildir.MaildirMessage now use byte header to avoid incompatibility with the FileMessage which writes bytes not strings lines to a message file (#10244)

    Words

    Bugfixes

    
    - twisted.words.protocols.irc.IRCClient now splits overly long NOTICEs and NOTICEs containing \n before sending. (#10285)
    
    
    Names
    -----
    
    Bugfixes
    
    • twisted.names.dns logs unparsable messages rather than generating a Failure instance (#9723)

    Trial

    Features

    
    - ``trial --jobs=N --exitfirst`` is now supported. (#9654)
    
    
    Bugfixes
    
    • trial --jobs=N --until-failure ... now reports the correct number of tests run after each iteration. (#10311)
    • trial -jN ... will now pass errors and failures to IReporter methods as instances of WorkerException instead of str. (#10333)

    Misc

    
    - #0, #10319, #10338, #11571
    
    
    Source code(tar.gz)
    Source code(zip)
  • twisted-22.4.0(Apr 11, 2022)

    Twisted 22.4.0 (2022-04-11)

    Features

    • twisted.python.failure.Failure tracebacks now capture module information, improving compatibility with the Raven Sentry client. (#7796)
    • twisted.python.failure.Failure objects are now compatible with dis.distb, improving compatibility with post-mortem debuggers. (#9599)

    Bugfixes

    • twisted.internet.interfaces.IReactorSSL.listenSSL now has correct type annotations. (#10274)
    • twisted.internet.test.test_glibbase.GlibReactorBaseTests now passes. (#10317)

    Conch

    Features

    
    - twisted.conch.ssh now supports using RSA keys with SHA-2 signatures (RFC 8332) when acting as a server.  The rsa-sha2-512 and rsa-sha2-256 public key signature algorithms are automatically preferred over ssh-rsa if the client advertises support for them; the actual public keys do not need to change. (#9765)
    - twisted.conch.ssh now has an alternative Ed25519 implementation using PyNaCl, in order to support platforms that lack OpenSSL >= 1.1.1b.  The new "conch_nacl" extra has the necessary dependency. (#10208)
    
    
    Misc
    ~~~~
    
    -  (#10313)
    
    
    Web
    ---
    
    Features
    
    • Twisted is now compatible with h2 4.x.x. (#10182)

    Bugfixes

    
    - twisted.web.http had several several defects in HTTP request parsing that could permit HTTP request smuggling. It now disallows signed Content-Length headers, forbids illegal characters in chunked extensions, forbids a ``0x`` prefix to chunk lengths, and only strips spaces and horizontal tab characters from header values. These changes address CVE-2022-24801 and GHSA-c2jg-hw38-jrqq. (#10323)
    
    
    Mail
    ----
    
    Bugfixes
    
    • twisted.mail.pop3.APOPCredentials is now correctly marked as implementing twisted.cred.credentials.IUsernamHashedPassword, rather than IUsernamePassword. (#10305)

    Words

    No significant changes.

    Names

    No significant changes.

    Trial

    Features

    
    - `trial --until-failure --jobs=N` now reports the number of each test pass as it begins. (#10312)
    
    
    Bugfixes
    
    • twisted.trial.unittest.TestCase now discards cleanup functions after running them. Notably, this prevents them from being run an ever growing number of times with trial -u .... (#10320)

    Misc

    
    - #10315, #10321, #10322
    
    Source code(tar.gz)
    Source code(zip)
  • twisted-22.4.0rc1(Apr 4, 2022)

    Twisted 22.4.0.rc1 (2022-04-04)

    Features

    • twisted.python.failure.Failure tracebacks now capture module information, improving compatibility with the Raven Sentry client. (#7796)
    • twisted.python.failure.Failure objects are now compatible with dis.distb, improving compatibility with post-mortem debuggers. (#9599)

    Bugfixes

    • Correct type annotations for IReactorSSL.listenSSL. (#10274)
    • twisted.internet.test.test_glibbase.GlibReactorBaseTests now passes. (#10317)

    Conch

    Features

    
    - twisted.conch.ssh now supports using RSA keys with SHA-2 signatures (RFC 8332) when acting as a server.  The rsa-sha2-512 and rsa-sha2-256 public key signature algorithms are automatically preferred over ssh-rsa if the client advertises support for them; the actual public keys do not need to change. (#9765)
    - twisted.conch.ssh now has an alternative Ed25519 implementation using PyNaCl, in order to support platforms that lack OpenSSL >= 1.1.1b.  The new "conch_nacl" extra has the necessary dependency. (#10208)
    
    
    Bugfixes
    
    • twisted.conch.ssh.session.SSHSession now cleans up both the client transport and the ISession adapter if both are set. Previously, a subsystem's connectionLost method was not called if a environment variable passing request was also sent on the same channel. (#10308)
    • (#10313)

    Web

    Features

    
    - Twisted is now compatible with h2 4.x.x. (#10182)
    
    
    Bugfixes
    
    • twisted.web.http had several several defects in HTTP request parsing that could permit HTTP request smuggling. It now disallows signed Content-Length headers, forbids illegal characters in chunked extensions, forbids 0x prefix to chunk lengths, and only strips spaces and horizontal tab characters from header values. These changes address CVE-2022-24801 and GHSA-c2jg-hw38-jrqq. (#10323)

    Mail

    Bugfixes

    
    - twisted.mail.pop3.APOPCredentials is now correctly marked as implementing twisted.cred.credentials.IUsernamHashedPassword, rather than IUsernamePassword. (#10305)
    
    
    Words
    -----
    
    No significant changes.
    
    
    Names
    -----
    
    No significant changes.
    
    
    Trial
    -----
    
    Features
    
    • trial --until-failure --jobs=N now reports the number of each test pass as it begins. (#10312)

    Bugfixes

    
    - twisted.trial.unittest.TestCase now discards cleanup functions after running them.  Notably, this prevents them from being run an ever growing number of times with `trial -u ...`. (#10320)
    
    
    Misc
    ~~~~
    
    - #10315, #10321, #10322
    
    Source code(tar.gz)
    Source code(zip)
  • twisted-22.2.0(Mar 3, 2022)

    Twisted 22.2.0 (2022-03-01)

    Bugfixes

    • twisted.internet.gireactor.PortableGIReactor.simulate and twisted.internet.gtk2reactor.PortableGtkReactor.simulate no longer raises TypeError when there are no delayed called. This was a regression introduced with the migration to Python 3 in which the builtin min function no longer accepts None as an argument. (#9660)
    • twisted.conch.ssh.transport.SSHTransportBase now disconnects the remote peer if the SSH version string is not sent in the first 4096 bytes. (#10284, CVE-2022-21716, GHSA-rv6r-3f5q-9rgx)

    Improved Documentation

    • Add type annotations for twisted.web.http.Request.getHeader. (#10270)

    Deprecations and Removals

    • Support for Python 3.6, which is EoL as of 2021-09-04, has been deprecated. (#10303)

    Misc

    • #10216, #10299, #10300

    Conch

    Misc

    
    - #10298
    
    
    Web
    ---
    
    No significant changes.
    
    
    Mail
    ----
    
    No significant changes.
    
    
    Words
    -----
    
    No significant changes.
    
    
    Names
    -----
    
    No significant changes.
    
    
    Trial
    -----
    
    Bugfixes
    
    • _dist.test.test_workertrial now correctly compare strings via assertEqual() and pass on PyPy3 (#10302)
    Source code(tar.gz)
    Source code(zip)
  • twisted-22.2.0rc1(Feb 8, 2022)

    Twisted 22.2.0.rc1 (2022-02-08)

    This is the last release with support for Python 3.6.

    Bugfixes

    • twisted.internet.gireactor.PortableGIReactor.simulate and twisted.internet.gtk2reactor.PortableGtkReactor.simulate no longer raises TypeError when there are no delayed called. This was a regression introduced with the migration to Python3 in which the builtin min function no longer accepts None as an argument. (#9660)

    Improved Documentation

    • Add type annotations for twisted.web.http.Request.getHeader. (#10270)

    Deprecations and Removals

    • Support for Python 3.6, which is EoL as of 2021-09-04, has been deprecated. (#10303)

    Misc

    • #10216, #10299, #10300

    Conch

    Bugfixes

    
    - twisted.conch.ssh.transport.SSHTransportBase now disconnects the remote peer if the
      SSH version string is not sent in the first 4096 bytes. (#10284)
    
    
    Misc
    ~~~~
    
    - #10298
    
    
    Web
    ---
    
    No significant changes.
    
    
    Mail
    ----
    
    No significant changes.
    
    
    Words
    -----
    
    No significant changes.
    
    
    Names
    -----
    
    No significant changes.
    
    
    Trial
    -----
    
    Bugfixes
    
    • _dist.test.test_workertrial now correctly compare strings via assertEqual() and pass on PyPy3 (#10302)
    Source code(tar.gz)
    Source code(zip)
  • twisted-22.1.0(Feb 7, 2022)

    Twisted 22.1.0 (2022-02-03)

    Features

    • Python 3.10 is now a supported platform (#10224)
    • Type annotations have been added to the twisted.python.fakepwd module. (#10287)

    Bugfixes

    • 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)
    • twisted.internet.base.DelayedCall.__repr__ and twisted.internet.task.LoopingCall.__repr__ had the changes from #10155 reverted to accept non-function callables. (#10235)
    • Revert the removal of .whl building that was done as part of #10177. (#10236)
    • The type annotation of the host parameter to twisted.internet.interfaces.IReactorTCP.connectTCP has been corrected from bytes to str. (#10251)
    • Deprecated twisted.python.threading.ThreadPool.currentThread() in favor of threading.current_thread(). Switched twisted.python.threading.ThreadPool.currentThread() and twisted.python.threadable.getThreadID() to use `threading.current_thread()to avoid the deprecation warnings introduced forthreading.currentThread()`` in Python 3.10. (#10273)

    Improved Documentation

    • twisted.internet.utils.runWithWarningsSupressed behavior of waiting on deferreds has been documented. (#10238)
    • Sync API docs templates with pydoctor 21.9.0 release, using new theming capabilities. (#10267)

    Misc

    • #1681, #9944, #10198, #10218, #10219, #10228, #10229, #10234, #10239, #10240, #10245, #10246, #10248, #10250, #10255, #10277, #10288, #10292

    Conch

    Features

    
    - twisted.conch.ssh now supports SSH extension negotiation (RFC 8308). (#10266)
    
    Bugfixes
    
    • twisted.conch now uses constant-time comparisons for MACs. (#8199)
    • twisted.conch.ssh.filetransfer.FileTransferServer will now return an ENOENT error status if an SFTP client tries to close an unrecognized file handle. (#10293)
    • SSHTransportBase.ssh_KEXINIT now uses the remote peer preferred MAC list for negotiation. In previous versions it was only using the local preferred MAC list. (#10241)

    Web

    Bugfixes

    
    - twisted.web.client.RedirectAgent and twisted.web.client.BrowserLikeRedirectAgent now properly remove sensitive headers when redirecting to a different origin. (#10294)
    
    
    Improved Documentation
    
    • Add type annotations for twisted.web.client.readBody. (#10269)

    Deprecations and Removals

    
    - twisted.web.client.getPage, twisted.web.client.downladPage, and the associated implementation classes (HTTPPageGetter, HTTPPageDownloader, HTTPClientFactory, HTTPDownloader) have been removed because they do not segregate cookies by domain. They were deprecated in Twisted 16.7.0 in favor of twisted.web.client.Agent. GHSA-92x2-jw7w-xvvx. (#10295)
    
    
    Mail
    ----
    
    No significant changes.
    
    
    Words
    -----
    
    No significant changes.
    
    
    Names
    -----
    
    No significant changes.
    
    
    Trial
    -----
    
    Bugfixes
    ~~~~~~~~
    
    - trial.runner.filenameToModule now sets the correct module.__name__ and sys.modules key (#10230)
    
    Source code(tar.gz)
    Source code(zip)
  • twisted-22.1.0rc1(Jan 26, 2022)

    Twisted 22.1.0.rc1 (2022-01-26)

    Features

    • support Python 3.10b4 (#10224)
    • Type annotations have been added to the twisted.python.fakepwd module. (#10287)
    • twisted.conch.ssh now supports SSH extension negotiation (RFC 8308). (#10266)

    Bugfixes

    • twisted.conch now uses constant-time comparisons for MACs. (#8199)
    • twisted.conch.ssh.filetransfer.FileTransferServer will now return an ENOENT error status if an SFTP client tries to close an unrecognized file handle. (#10293)
    • 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)
    • revert changes to DelayedCall.__repr__ and LoopingCall.__repr__ (#10235)
    • restore .whl building (#10236)
    • SSHTransportBase.ssh_KEXINIT now uses the remote peer preferred MAC list for negotiation. In previous versions it was only using the local preferred MAC list. (#10241)
    • The type annotation of the host parameter to twisted.internet.interfaces.IReactorTCP.connectTCP has been corrected from bytes to str. (#10251)
    • Deprecated twisted.python.threading.ThreadPool.currentThread() in favor of threading.current_thread(). Switched twisted.python.threading.ThreadPool.currentThread() and twisted.python.threadable.getThreadID() to use `threading.current_thread()to avoid the deprecation warnings introduced forthreading.currentThread()`` in Python 3.10. (#10273)
    • twisted.web.client.RedirectAgent and twisted.web.client.BrowserLikeRedirectAgent now properly remove sensitive headers when redirecting to a different origin. (#10294)
    • trial.runner.filenameToModule now sets the correct module.name and sys.modules key (#10230)

    Deprecations and Removals

    • twisted.web.client.getPage, twisted.web.client.downladPage, and the associated implementation classes (HTTPPageGetter, HTTPPageDownloader, HTTPClientFactory, HTTPDownloader) have been removed because they do not segregate cookies by domain. They were deprecated in Twisted 16.7.0 in favor of twisted.web.client.Agent. GHSA-92x2-jw7w-xvvx. (#10295)

    Improved Documentation

    • twisted.internet.utils.runWithWarningsSupressed behavior of waiting on deferreds has been documented. (#10238)
    • Sync API docs templates with pydoctor 21.9.0 release, using new theming capabilities. (#10267)
    • Add type annotations for twisted.web.client.readBody. (#10269)

    Misc

    • #1681, #9944, #10198, #10218, #10219, #10228, #10229, #10234, #10239, #10240, #10245, #10246, #10248, #10250, #10255, #10277, #10288, #10292
    Source code(tar.gz)
    Source code(zip)
  • twisted-21.7.0(Jul 28, 2021)

    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 PyPy (#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.
    
    Source code(tar.gz)
    Source code(zip)
  • twisted-21.7.0rc3(Jul 23, 2021)

    Twisted 21.7.0.rc3 (2021-07-23)

    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 PyPy (#10236)
    Source code(tar.gz)
    Source code(zip)
  • twisted-21.7.0rc2(Jul 20, 2021)

    Twisted 21.7.0.rc2 (2021-07-20)

    Bugfixes

    • 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)
    Source code(tar.gz)
    Source code(zip)
  • twisted-21.7.0rc1(Jul 10, 2021)

    Twisted 21.7.0.rc1 (2021-07-10)

    Features

    • support py3.10a5 (by fixing twisted.trial.unittest.TestCase.flushWarnings) (#10111)

    Bugfixes

    • twisted.internet.process can now pause and resume producing in python 3 (#9933)
    • When installing Twisted it now requires a minimum Python 3.5.4 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)

    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)
    Source code(tar.gz)
    Source code(zip)
  • twisted-21.2.0(Feb 28, 2021)

    Ticket numbers in this file can be looked up by visiting http://twistedmatrix.com/trac/ticket/

    .. towncrier release notes start

    Twisted 21.2.0 (2021-02-28)

    Features

    • The enableSessions argument to twisted.internet.ssl.CertificateOptions now actually enables/disables OpenSSL's session cache. Also, due to session-related bugs, it defaults to False. (#9583)
    • twisted.internet.defer.inlineCallbacks and ensureDeferred will now associate a contextvars.Context with the coroutines they run, meaning that ContextVar objects will maintain their value within the same coroutine, similarly to asyncio Tasks. This functionality requires Python 3.7+, or the contextvars PyPI backport to be installed for Python 3.5-3.6. (#9719, #9826)
    • twisted.internet.defer.Deferred.fromCoroutine has been added. This is similar to the existing ensureDeferred function, but is named more consistently inside Twisted and does not pass through Deferreds. (#9825)
    • trial now allows the @unittest.skipIf decorator to specify that an entire test class should be skipped. (#9829)
    • The twisted.python.deprecate.deprecatedKeywordParameter decorator can be used to mark a keyword paramater of a function or method as deprecated. (#9844)
    • Projects using Twisted can now perform type checking against a Twisted installation, for example using mypy. (#9908)
    • twisted.python.util.InsensitiveDict now fully implements MutableMapping. (#9919)
    • Python 3.8 is now tested and supported. (#9955)
    • Support a coroutine function in twisted.internet.task.react (#9974)
    • PyPy 3.7 is now tested and supported. (#10093)

    Bugfixes

    • twisted.web.twcgi.CGIProcessProtocol.processEnded(...) now handles an already-finished request, for example when request.connectionLost(...) was called previously. (#9468)
    • Twisted's dependency on PyHamcrest has been moved from the base package to the new "test" extra. Consequently the test extra must be installed for Twisted's test suite to pass. (#9509)
    • Fixed serialization of timedelta, date, and time objects in twisted.spread. (#9716)
    • twisted.internet.asyncioreactor.AsyncioSelectorReactor now raises an exception if instantiated with an event loop which is not compatible with asyncio.SelectorEventLoop. This fixes the AsyncioSelectorReactor in Python 3.8+ on Windows, where in bp-34687 the default Windows asyncio event loop was changed to ProactorEventLoop. Applications that use AsyncioSelectorReactor on Windows with Python 3.8+ must call asyncio.set_event_loop_policy(asyncio.WindowsSelectorEventLoopPolicy()) before instantiating and running AsyncioSelectorReactor. (#9766)
    • twisted.internet.process.registerReapProcessHandler and ._BaseProcess.reapProcess will no longer raise a TypeError when processing a None PID (#9775)
    • INotify will close its file descriptor if a directory is automatically removed by twisted from the watchlist because it's deleted, avoiding orphaned filedescriptors. (#9777)
    • DelayedCall.reset() is now working properly with asyncioreactor (#9780)
    • AsyncioSelectorReactor.seconds() now correctly returns an epoch time. (#9787)
    • The _connDone parameter has been removed from twisted.internet.abstract.FileDescriptor.loseConnection()'s signature in order to match the signature in the base class twisted.internet._newtls.ConnectionMixin loseConnection(). (#9849)
    • The Gtk3 reactor now runs on Wayland-only sessions (#9904)
    • Descriptive error messages from twisted.internet.error are now present when running with 'python -OO'. (#9918)
    • Comparator methods such as eq() now always return NotImplemented for uncomparable types. (#9919)
    • When installing Twisted it now requires a minimum Python 3.5.4 version to match the version used with automated testing. This is the minimum Python version that we know that Twisted works with. (#10098)

    Improved Documentation

    • The narrative docs now contains the associated Twisted version and the date when they were generated. (#3945)
    • The "Writing a twistd plugin" howto now explains how to deploy twistd plugins using Python packaging and pip (#9243)
    • (#9868, #9873, #9874)
    • Fix a typo in "Introduction to Deferreds" document. (#9948)
    • The Twisted Coding Standard has been changed to refer to The Black code style for guidelines regarding whitespace and line lengths. (#9957)
    • Exempt __repr__, __slots__ and other @attrs.define related changes from compatibility policy. (#9982)
    • Fix many docstring mistakes flagged by new sanity checks in pydoctor. (#10021)
    • Fix a few dozen broken links to API documentation pages. (#10057)

    Deprecations and Removals

    • twisted.cred.credentials.UsernameHashedPassword is now deprecated because it doesn't hash the password, causing it to return the wrong result. (#8368)
    • twisted.news is now removed from the codebase. (This module was never installed on Python 3.) (#9782)
    • Support for Python 2.7 has been removed. Twisted now supports only Python versions 3.5/3.6/3.7. (#9790)
    • twisted.pair.ethernet.IEthernetProtocol.addProto()'s interface was changed to match the existing implementations in the Twisted source code. (#9877)
    • twisted.python.filepath.FilePath.statinfo was deprecated in Twisted 15.0.0 and has now been removed. (#9881)
    • The parameters to twisted.internet.base.ReactorBase.addSystemEventTrigger(), twisted.internet.base.ReactorBase.callWhenRunning(), twisted.internet.base.ReactorBase.callLater(), twisted.internet.task.Clock.callLater() have been renamed to match the parameters defined in the following interfaces: twisted.internet.interfaces.IReactorCore, twisted.internet.interfaces.IReactorTime. (#9897)
    • Functions and types in twisted.python.compat that existed to support the transition from Python 2 to 3 have been deprecated. (#9922)
    • twisted.logger.LoggingFile.softspace has been deprecated. (#10042)
    • twisted.python.win32.WindowsError and FakeWindowsError have been deprecated. (#10053)
    • twisted.mail.pop3client has been renamed to twisted.mail._pop3client, since it has always been a private implementation module. (#10054)

    Misc

    • #5356, #6460, #6903, #6986, #7945, #9306, #9512, #9531, #9622, #9652, #9718, #9744, #9768, #9773, #9776, #9778, #9781, #9784, #9785, #9788, #9789, #9791, #9793, #9795, #9796, #9797, #9798, #9800, #9802, #9803, #9808, #9809, #9810, #9811, #9812, #9820, #9823, #9827, #9833, #9837, #9840, #9842, #9846, #9847, #9848, #9850, #9851, #9852, #9854, #9855, #9856, #9857, #9858, #9861, #9862, #9863, #9864, #9865, #9866, #9867, #9869, #9870, #9871, #9872, #9876, #9878, #9879, #9880, #9882, #9883, #9884, #9886, #9889, #9890, #9891, #9892, #9895, #9896, #9898, #9899, #9902, #9903, #9916, #9917, #9921, #9924, #9927, #9928, #9936, #9953, #9954, #9956, #9959, #9960, #9969, #9970, #9971, #9975, #9976, #9977, #9978, #9979, #9980, #9981, #9983, #9985, #9986, #9987, #9988, #9989, #9991, #9992, #9995, #9999, #10000, #10002, #10009, #10010, #10011, #10014, #10015, #10018, #10025, #10027, #10029, #10032, #10033, #10034, #10036, #10038, #10043, #10044, #10046, #10054, #10059, #10060, #10061, #10063, #10064, #10065, #10069, #10080, #10090

    Conch

    Features

    
    - twisted.conch.ssh now supports Ed25519 keys (requires OpenSSL >= 1.1.1b). (#8966)
    - twisted.conch.ssh.session.SSHSession can now accept environment variables sent by the client, if the SSH avatar implements the new ISessionSetEnv interface. (#9315)
    - twisted.conch.ssh.keys.Key.fromString and twisted.conch.ssh.keys.Key.toString now normalize Unicode passphrases as required by NIST 800-63B. (#9736)
    - twisted.conch.telnet now implements EOR (End of Record) command (RFC 885) (#9875)
    
    
    Bugfixes
    
    • t.c.ssh.filetransfer.FileTransferClient now errbacks any outstanding requests if the connection is lost before a reply is received. (#9571)
    • t.c.ssh.filetransfer.FileTransferClient immediately errbacks any attempt to send a request on a closed channel. (#9572)
    • twisted.conch.ssh.session.SSHSession now accepts environment variables also for multiplexed SSH session. (#10016)

    Improved Documentation

    
    - construct and assign portal and checkers consistently in ssh server example (#9578)
    
    
    Misc
    ~~~~
    
    - #6446, #9571, #9831, #9913
    
    
    Web
    ---
    
    Bugfixes
    ~~~~~~~~
    
    - twisted.web.http.Request.getRequestHostname now supports IPv6 literal hostnames
      in HTTP host headers. (#6014)
    - Fixed unexpected exception by handling subclass of TaskFinished when FileBodyProducer's task stopped twice. (#6528)
    - Importing twisted.web.client no longer has the side effect of initializing the reactor. (#9774)
    - Ensure that all calls to connectionLost use a Failure instance in the HTTP 2 code. (#9817)
    - twisted.web.util.ParentRedirect has been fixed and documented. It was broken by a security fix in Twisted 19.2.0. (#9835)
    - xmlrpc's Proxy class now verifies HTTPS certificates against the system bundle. (#9836)
    - twisted.web.twcgi can now handle url parameters in python 3 (#9887)
    - defer reactor import in twisted.web.xmlrpc (#9931)
    - twisted.web.RedirectAgent now supports 308 redirects (#9940)
    - Fixed an error where twisted.web.http.requestReceived() tries to encode a NoneType returned by cgi.parse_multipart when a multipart body does not contain a "content-disposition" definition. (#10084)
    
    
    Improved Documentation
    
    • xmlrpc's QueryFactory class is now public, more explanation for xmlrpc's queryFactory, and new xmlrpc-debug.py example script for debugging raw XML-RPC traffic. (#9350)
    • twisted.web.client.ContentDecoderAgent's documentation has been corrected and improved. (#9742)

    Misc

    
    - #6446, #9758, #9801, #9831, #9834, #9841
    
    
    Mail
    ----
    
    Bugfixes
    
    • twisted.mail.smtp.ESMTPSender no longer forces TLSv1.0 when used without explicit context factory. (#9740)

    Misc

    
    - #6446, #9831, #9832, #9900, #9910
    
    
    Words
    -----
    
    Misc
    
    • #9901

    Names

    Features

    
    - twisted.names.hosts.Resolver and twisted.names.hosts.searchFileForAll() now ignore malformed lines in hosts files like /etc/hosts (#9752)
    - New interface IEncodableRecord combines IEncodable and IRecord, which is useful when using type annotations. (#9920)
    
    
    Bugfixes
    
    • twistd -n dns --pyzone example-domain.com will no longer throw an exception on startup with Python 3. (#9783)
    • twist dns --pyzone example-domain.com now works on Python 3. (#9786)

    Misc

    
    - #9749
    Source code(tar.gz)
    Source code(zip)
  • twisted-21.2.0rc1(Feb 15, 2021)

    Twisted 21.2.0.rc1 (2021-02-14)

    Features

    • The enableSessions argument to twisted.internet.ssl.CertificateOptions now actually enables/disables OpenSSL's session cache. Also, due to session-related bugs, it defaults to False. (#9583)
    • twisted.internet.defer.inlineCallbacks and ensureDeferred will now associate a contextvars.Context with the coroutines they run, meaning that ContextVar objects will maintain their value within the same coroutine, similarly to asyncio Tasks. This functionality requires Python 3.7+, or the contextvars PyPI backport to be installed for Python 3.5-3.6. (#9719, #9826)
    • twisted.internet.defer.Deferred.fromCoroutine has been added. This is similar to the existing ensureDeferred function, but is named more consistently inside Twisted and does not pass through Deferreds. (#9825)
    • trial now allows the @unittest.skipIf decorator to specify that an entire test class should be skipped. (#9829)
    • The twisted.python.deprecate.deprecatedKeywordParameter decorator can be used to mark a keyword paramater of a function or method as deprecated. (#9844)
    • Projects using Twisted can now perform type checking against a Twisted installation, for example using mypy. (#9908)
    • twisted.python.util.InsensitiveDict now fully implements MutableMapping. (#9919)
    • Python 3.8 is now tested and supported. (#9955)
    • Support a coroutine function in twisted.internet.task.react (#9974)

    Bugfixes

    • twisted.web.twcgi.CGIProcessProtocol.processEnded(...) now handles an already-finished request, for example when request.connectionLost(...) was called previously. (#9468)
    • Twisted's dependency on PyHamcrest has been moved from the base package to the new "test" extra. Consequently the test extra must be installed for Twisted's test suite to pass. (#9509)
    • Fixed serialization of timedelta, date, and time objects in twisted.spread. (#9716)
    • twisted.internet.asyncioreactor.AsyncioSelectorReactor now raises an exception if instantiated with an event loop which is not compatible with asyncio.SelectorEventLoop. This fixes the AsyncioSelectorReactor in Python 3.8+ on Windows, where in bp-34687 the default Windows asyncio event loop was changed to ProactorEventLoop. Applications that use AsyncioSelectorReactor on Windows with Python 3.8+ must call asyncio.set_event_loop_policy(asyncio.WindowsSelectorEventLoopPolicy()) before instantiating and running AsyncioSelectorReactor. (#9766)
    • twisted.internet.process.registerReapProcessHandler and ._BaseProcess.reapProcess will no longer raise a TypeError when processing a None PID (#9775)
    • INotify will close its file descriptor if a directory is automatically removed by twisted from the watchlist because it's deleted, avoiding orphaned filedescriptors. (#9777)
    • DelayedCall.reset() is now working properly with asyncioreactor (#9780)
    • AsyncioSelectorReactor.seconds() now correctly returns an epoch time. (#9787)
    • The _connDone parameter has been removed from twisted.internet.abstract.FileDescriptor.loseConnection()'s signature in order to match the signature in the base class twisted.internet._newtls.ConnectionMixin loseConnection(). (#9849)
    • The Gtk3 reactor now runs on Wayland-only sessions (#9904)
    • Descriptive error messages from twisted.internet.error are now present when running with 'python -OO'. (#9918)
    • Comparator methods such as eq() now always return NotImplemented for uncomparable types. (#9919)

    Improved Documentation

    • The narrative docs now contains the associated Twisted version and the date when they were generated. (#3945)
    • The "Writing a twistd plugin" howto now explains how to deploy twistd plugins using Python packaging and pip (#9243)
    • (#9868, #9873, #9874)
    • Fix a typo in "Introduction to Deferreds" document. (#9948)
    • The Twisted Coding Standard has been changed to refer to The Black code style for guidelines regarding whitespace and line lengths. (#9957)
    • Exempt __repr__, __slots__ and other @attrs.define related changes from compatibility policy. (#9982)
    • Fix many docstring mistakes flagged by new sanity checks in pydoctor. (#10021)
    • Fix a few dozen broken links to API documentation pages. (#10057)

    Deprecations and Removals

    • twisted.cred.credentials.UsernameHashedPassword is now deprecated because it doesn't hash the password, causing it to return the wrong result. (#8368)
    • twisted.news is now removed from the codebase. (This module was never installed on Python 3.) (#9782)
    • Support for Python 2.7 has been removed. Twisted now supports only Python versions 3.5/3.6/3.7. (#9790)
    • twisted.pair.ethernet.IEthernetProtocol.addProto()'s interface was changed to match the existing implementations in the Twisted source code. (#9877)
    • twisted.python.filepath.FilePath.statinfo was deprecated in Twisted 15.0.0 and has now been removed. (#9881)
    • The parameters to twisted.internet.base.ReactorBase.addSystemEventTrigger(), twisted.internet.base.ReactorBase.callWhenRunning(), twisted.internet.base.ReactorBase.callLater(), twisted.internet.task.Clock.callLater() have been renamed to match the parameters defined in the following interfaces: twisted.internet.interfaces.IReactorCore, twisted.internet.interfaces.IReactorTime. (#9897)
    • Functions and types in twisted.python.compat that existed to support the transition from Python 2 to 3 have been deprecated. (#9922)
    • twisted.logger.LoggingFile.softspace has been deprecated. (#10042)
    • twisted.python.win32.WindowsError and FakeWindowsError have been deprecated. (#10053)
    • twisted.mail.pop3client has been renamed to twisted.mail._pop3client, since it has always been a private implementation module. (#10054)

    Misc

    • #5356, #6903, #6986, #7945, #9306, #9512, #9531, #9622, #9652, #9718, #9744, #9768, #9773, #9776, #9778, #9781, #9784, #9785, #9788, #9789, #9791, #9793, #9795, #9796, #9797, #9798, #9800, #9802, #9803, #9808, #9809, #9810, #9811, #9812, #9820, #9823, #9827, #9833, #9837, #9840, #9842, #9846, #9847, #9848, #9850, #9851, #9852, #9854, #9855, #9856, #9857, #9858, #9861, #9862, #9863, #9864, #9865, #9866, #9867, #9869, #9870, #9871, #9872, #9876, #9878, #9879, #9880, #9882, #9883, #9884, #9886, #9889, #9890, #9891, #9892, #9895, #9896, #9898, #9899, #9902, #9903, #9916, #9917, #9921, #9924, #9927, #9928, #9936, #9953, #9954, #9956, #9959, #9960, #9969, #9970, #9971, #9975, #9976, #9977, #9978, #9979, #9980, #9981, #9983, #9985, #9986, #9987, #9988, #9989, #9991, #9992, #9995, #9999, #10000, #10002, #10009, #10010, #10011, #10014, #10015, #10018, #10025, #10027, #10029, #10032, #10033, #10034, #10036, #10038, #10043, #10044, #10046, #10054, #10059, #10060, #10061, #10063, #10064, #10065, #10069, #10080

    Conch

    Features

    
    - twisted.conch.ssh now supports Ed25519 keys (requires OpenSSL >= 1.1.1b). (#8966)
    - twisted.conch.ssh.session.SSHSession can now accept environment variables sent by the client, if the SSH avatar implements the new ISessionSetEnv interface. (#9315)
    - twisted.conch.ssh.keys.Key.fromString and twisted.conch.ssh.keys.Key.toString now normalize Unicode passphrases as required by NIST 800-63B. (#9736)
    - twisted.conch.telnet now implements EOR (End of Record) command (RFC 885) (#9875)
    
    
    Bugfixes
    
    • t.c.ssh.filetransfer.FileTransferClient now errbacks any outstanding requests if the connection is lost before a reply is received. (#9571)
    • t.c.ssh.filetransfer.FileTransferClient immediately errbacks any attempt to send a request on a closed channel. (#9572)
    • twisted.conch.ssh.session.SSHSession now accepts environment variables also for multiplexed SSH session. (#10016)

    Improved Documentation

    
    - construct and assign portal and checkers consistently in ssh server example (#9578)
    
    
    Misc
    ~~~~
    
    - #6446, #9571, #9831, #9913
    
    
    Web
    ---
    
    Bugfixes
    ~~~~~~~~
    
    - twisted.web.http.Request.getRequestHostname now supports IPv6 literal hostnames
      in HTTP host headers. (#6014)
    - Fixed unexpected exception by handling subclass of TaskFinished when FileBodyProducer's task stopped twice. (#6528)
    - Importing twisted.web.client no longer has the side effect of initializing the reactor. (#9774)
    - Ensure that all calls to connectionLost use a Failure instance in the HTTP 2 code. (#9817)
    - twisted.web.util.ParentRedirect has been fixed and documented. It was broken by a security fix in Twisted 19.2.0. (#9835)
    - xmlrpc's Proxy class now verifies HTTPS certificates against the system bundle. (#9836)
    - twisted.web.twcgi can now handle url parameters in python 3 (#9887)
    - defer reactor import in twisted.web.xmlrpc (#9931)
    - twisted.web.RedirectAgent now supports 308 redirects (#9940)
    - Fixed an error where twisted.web.http.requestReceived() tries to encode a NoneType returned by cgi.parse_multipart when a multipart body does not contain a "content-disposition" definition. (#10084)
    
    
    Improved Documentation
    
    • xmlrpc's QueryFactory class is now public, more explanation for xmlrpc's queryFactory, and new xmlrpc-debug.py example script for debugging raw XML-RPC traffic. (#9350)
    • twisted.web.client.ContentDecoderAgent's documentation has been corrected and improved. (#9742)

    Misc

    
    - #6446, #9758, #9801, #9831, #9834, #9841
    
    
    Mail
    ----
    
    Bugfixes
    
    • twisted.mail.smtp.ESMTPSender no longer forces TLSv1.0 when used without explicit context factory. (#9740)

    Misc

    
    - #6446, #9831, #9832, #9900, #9910
    
    
    Words
    -----
    
    Misc
    
    • #9901

    Names

    Features

    
    - twisted.names.hosts.Resolver and twisted.names.hosts.searchFileForAll() now ignore malformed lines in hosts files like /etc/hosts (#9752)
    - New interface IEncodableRecord combines IEncodable and IRecord, which is useful when using type annotations. (#9920)
    
    
    Bugfixes
    
    • twistd -n dns --pyzone example-domain.com will no longer throw an exception on startup with Python 3. (#9783)
    • twist dns --pyzone example-domain.com now works on Python 3. (#9786)

    Misc

    
    - #9749
    
    Source code(tar.gz)
    Source code(zip)
  • twisted-21.2.0.dev0(Feb 1, 2021)

  • twisted-20.11.0.dev5(Oct 19, 2020)

  • twisted-20.11.0.dev4(Oct 19, 2020)

  • twisted-20.11.0.dev3(Oct 19, 2020)

  • twisted-20.11.0.dev2(Oct 4, 2020)

  • twisted-20.11.0.dev1(Oct 4, 2020)

  • twisted-20.11.0.dev0(Oct 4, 2020)

Very simple FTP client, sync folder to FTP server, use python, opensource

ftp-sync-python Opensource, A way to safe your data, avoid lost data by Virus, Randsomware Some functions: Upload a folder automatically to FTP server

4 Sep 13, 2022
msgspec is a fast and friendly implementation of the MessagePack protocol for Python 3.8+

msgspec msgspec is a fast and friendly implementation of the MessagePack protocol for Python 3.8+. In addition to serialization/deserializat

Jim Crist-Harif 414 Jan 06, 2023
Tool for ROS 2 IP Discovery + System Monitoring

Monitor the status of computers on a network using the DDS function of ROS2.

Ar-Ray 33 Apr 03, 2022
Apple Store Stock Notifier monitors the availability of selected Apple devices in selected Apple stores, and sends you a notification when devices are available!

Apple Store Stock Notifier This software will immediately send you a notification via Telegram when one of your coveted Apple Devices is available in

Floris-Jan Willemsen 25 Dec 05, 2022
A simple python application for generating a WiFi QR code for ease of connection

A simple python application for generating a WiFi QR code Initialize the class by providing QR code values WiFi_QR_Code(self, error_correction: int =

Ivan 2 Aug 01, 2022
Mini SCADA. Poll modbus devices by TCP/IP network.

Plans Add saving and loading devices and channels with files or db or someone else. Multitasking system for poll all devices Automatic optimization po

Efi_fi 1 Oct 25, 2021
DataShare - Simple library for data sharing between scripts and public functions calling

DataShare - Simple library for data sharing between scripts and public functions calling. Installation. Install code, Delete LICENSE, README, readme.t

Ivan Perzhinsky. 1 Dec 17, 2021
MoreIP 一款基于Python的面向 MacOS/Linux 用户用于查询IP/域名信息的日常渗透小工具

MoreIP 一款基于Python的面向 MacOS/Linux 用户用于查询IP/域名信息的日常渗透小工具

xq17 9 Sep 21, 2022
BlueHawk is an HTTP/1.1 compliant web server developed in python

This project is done as a part of Computer Networks course. It aims at the implementation of the HTTP/1.1 Protocol based on RFC 2616 and includes the basic HTTP methods of GET, POST, PUT, DELETE and

2 Nov 11, 2022
Use Raspberry Pi and CircuitSetup's power monitor hardware to publish electrical usage to MQTT

This repo has code and notes for whole home electrical power monitoring using a Raspberry Pi and CircuitSetup modules. Beyond just collecting data, it

Eric Tsai 10 Jul 25, 2022
SonicWall SSL-VPN Exploit

VisualDoor SonicWall SSL-VPN Exploit, as used by Phineas Fisher to hack Cayman Trust Bank and Hacking Team.

169 Nov 15, 2022
Arp Spoofer using Python 3.

ARP Spoofer / Wifi Killer By Auax Run: Run the application with the following command: python3 spoof.py -t target_ip_address -lh host_ip_address I

Auax 6 Sep 15, 2022
A simple port scanner for Web/ip scanning Port 0/500 editable inside the .py file

Simple-Port-Scanner a simple port scanner for Web/ip scanning Port 0/500 editable inside the .py file Open Cmd/Terminal Cmd Downloads Run Command: pip

YABOI 1 Nov 22, 2021
Visualize the electric field of a point charge network.

ElectriPy ⚡ Visualize the electric field of a point charges network. 🔌 Installation Install ElectriPy package: $ pip install electripy You are all d

Dylan Tintenfich 29 Aug 29, 2022
Public HTTPS access to Home Assistant with Dataplicity service

Custom component for public HTTPS access to Home Assistant with Dataplicity service. Should work on any Linux PC or ARM, not only Raspberry as Dataplicity service said. Don't work on Windows.

Alex X 70 Oct 03, 2022
Web-server with a parser, connection to DBMS, and the Hugging Face.

Final_Project Web-server with parser, connection to DBMS and the Hugging Face. Team: Aisha Bazylzhanova(SE-2004), Arysbay Dastan(SE-2004) Installation

Aisha Bazylzhanova 2 Nov 18, 2021
This tool extracts Credit card numbers, NTLM(DCE-RPC, HTTP, SQL, LDAP, etc), Kerberos (AS-REQ Pre-Auth etype 23), HTTP Basic, SNMP, POP, SMTP, FTP, IMAP, etc from a pcap file or from a live interface.

This tool extracts Credit card numbers, NTLM(DCE-RPC, HTTP, SQL, LDAP, etc), Kerberos (AS-REQ Pre-Auth etype 23), HTTP Basic, SNMP, POP, SMTP, FTP, IMAP, etc from a pcap file or from a live interface

1.6k Jan 01, 2023
Slowloris is basically an HTTP Denial of Service attack that affects threaded servers.

slowrise-ddos-tool What is Slowloris? Slowloris is basically an HTTP Denial of S

DEMON cat 4 Jun 19, 2022
libsigrok stacked Protocol Decoder for TPM 2.0 transactions from an SPI bus. BitLocker Volume Master Key (VMK) are automatically extracted.

libsigrok stacked Protocol Decoder for TPM 2.0 transactions from an SPI bus. BitLocker Volume Master Key (VMK) are automatically extracted.

Jordan Ovrè 9 Dec 26, 2022
Cobalt Strike C2 Reverse proxy that fends off Blue Teams, AVs, EDRs, scanners through packet inspection and malleable profile correlation

Cobalt Strike C2 Reverse proxy that fends off Blue Teams, AVs, EDRs, scanners through packet inspection and malleable profile correlation

Mariusz B. 715 Dec 25, 2022