forked from twisted/twisted
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathNEWS
1415 lines (1177 loc) · 53.9 KB
/
NEWS
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
Ticket numbers in this file can be looked up by visiting
http://twistedmatrix.com/trac/ticket/<number>
Twisted Core 10.0.0 (2010-03-01)
================================
Features
--------
- The twistd man page now has a SIGNALS section. (#689)
- reactor.spawnProcess now will not emit a PotentialZombieWarning
when called before reactor.run, and there will be no potential for
zombie processes in this case. (#2078)
- High-throughput applications based on Perspective Broker should now
run noticably faster thanks to the use of a more efficient decoding
function in Twisted Spread. (#2310)
- Documentation for trac-post-commit-hook functionality in svn-dev
policy. (#3867)
- twisted.protocols.socks.SOCKSv4 now supports the SOCKSv4a protocol.
(#3886)
- Trial can now output test results according to the subunit
protocol, as long as Subunit is installed (see
https://launchpad.net/subunit). (#4004)
- twisted.protocols.amp now provides a ListOf argument type which can
be composed with some other argument types to create a zero or more
element sequence of that type. (#4116)
- If returnValue is invoked outside of a function decorated with
@inlineCallbacks, but causes a function thusly decorated to exit, a
DeprecationWarning will be emitted explaining this potentially
confusing behavior. In a future release, this will cause an
exception. (#4157)
- twisted.python.logfile.BaseLogFile now has a reopen method allowing
you to use an external logrotate mechanism. (#4255)
Bugfixes
--------
- FTP.ftp_NLST now handles requests on invalid paths in a way
consistent with RFC 959. (#1342)
- twisted.python.util.initgroups now calls the low-level C initgroups
by default if available: the python version can create lots of I/O
with certain authentication setup to retrieve all the necessary
information. (#3226)
- startLogging now does nothing on subsequent invocations, thus
fixing a terrible infinite recursion bug that's only on edge case.
(#3289)
- Stringify non-string data to NetstringReceiver.sendString before
calculating the length so that the calculated length is equal to
the actual length of the transported data. (#3299)
- twisted.python.win32.cmdLineQuote now correctly quotes empty
strings arguments (#3876)
- Change the behavior of the Gtk2Reactor to register only one source
watch for each file descriptor, instead of one for reading and one
for writing. In particular, it fixes a bug with Glib under Windows
where we failed to notify when a client is connected. (#3925)
- Twisted Trial no longer crashes if it can't remove an old
_trial_temp directory. (#4020)
- The optional _c_urlarg extension now handles unquote("") correctly
on platforms where malloc(0) returns NULL, such as AIX. It also
compiles with less warnings. (#4142)
- On POSIX, child processes created with reactor.spawnProcess will no
longer automatically ignore the signals which the parent process
has set to be ignored. (#4199)
- All SOCKSv4a tests now use a dummy reactor with a deterministic
resolve method. (#4275)
- Prevent extraneous server, date and content-type headers in proxy
responses. (#4277)
Deprecations and Removals
-------------------------
- twisted.internet.error.PotentialZombieWarning is now deprecated.
(#2078)
- twisted.test.time_helpers is now deprecated. (#3719)
- The deprecated connectUDP method of IReactorUDP has now been
removed. (#4075)
- twisted.trial.unittest.TestCase now ignores the previously
deprecated setUpClass and tearDownClass methods. (#4175)
Other
-----
- #917, #2406, #2481, #2608, #2689, #2884, #3056, #3082, #3199,
#3480, #3592, #3718, #3935, #4066, #4083, #4154, #4166, #4169,
#4176, #4183, #4186, #4188, #4189, #4194, #4201, #4204, #4209,
#4222, #4234, #4235, #4238, #4240, #4245, #4251, #4264, #4268,
#4269, #4282
Twisted Conch 10.0.0 (2010-03-01)
=================================
Bugfixes
--------
- twisted.conch.checkers.SSHPublicKeyDatabase now looks in the
correct user directory for authorized_keys files. (#3984)
- twisted.conch.ssh.SSHUserAuthClient now honors preferredOrder when
authenticating. (#4266)
Other
-----
- #2391, #4203, #4265
Twisted Lore 10.0.0 (2010-03-01)
================================
Other
-----
- #4241
Twisted Mail 10.0.0 (2010-03-01)
================================
Bugfixes
--------
- twisted.mail.smtp.ESMTPClient and
twisted.mail.smtp.LOGINAuthenticator now implement the (obsolete)
LOGIN SASL mechanism according to the draft specification. (#4031)
- twisted.mail.imap4.IMAP4Client will no longer misparse all html-
formatted message bodies received in response to a fetch command.
(#4049)
- The regression in IMAP4 search handling of "OR" and "NOT" terms has
been fixed. (#4178)
Other
-----
- #4028, #4170, #4200
Twisted Names 10.0.0 (2010-03-01)
=================================
Bugfixes
--------
- twisted.names.root.Resolver no longer leaks UDP sockets while
resolving names. (#970)
Deprecations and Removals
-------------------------
- Several top-level functions in twisted.names.root are now
deprecated. (#970)
Other
-----
- #4066
Twisted Pair 10.0.0 (2010-03-01)
================================
Other
-----
- #4170
Twisted Runner 10.0.0 (2010-03-01)
==================================
Other
-----
- #3961
Twisted Web 10.0.0 (2010-03-01)
===============================
Features
--------
- Twisted Web in 60 Seconds, a series of short tutorials with self-
contained examples on a range of common web topics, is now a part
of the Twisted Web howto documentation. (#4192)
Bugfixes
--------
- Data and File from twisted.web.static and
twisted.web.distrib.UserDirectory will now only generate a 200
response for GET or HEAD requests.
twisted.web.client.HTTPPageGetter will no longer ignore the case of
a request method when considering whether to apply special HEAD
processing to a response. (#446)
- twisted.web.http.HTTPClient now supports multi-line headers.
(#2062)
- Resources served via twisted.web.distrib will no longer encounter a
Banana error when writing more than 640kB at once to the request
object. (#3212)
- The Error, PageRedirect, and InfiniteRedirection exception in
twisted.web now initialize an empty message parameter by mapping
the HTTP status code parameter to a descriptive string. Previously
the lookup would always fail, leaving message empty. (#3806)
- The 'wsgi.input' WSGI environment object now supports -1 and None
as arguments to the read and readlines methods. (#4114)
- twisted.web.wsgi doesn't unquote QUERY_STRING anymore, thus
complying with the WSGI reference implementation. (#4143)
- The HTTP proxy will no longer pass on keep-alive request headers
from the client, preventing pages from loading then "hanging"
(leaving the connection open with no hope of termination). (#4179)
Deprecations and Removals
-------------------------
- Remove '--static' option from twistd web, that served as an alias
for the '--path' option. (#3907)
Other
-----
- #3784, #4216, #4242
Twisted Words 10.0.0 (2010-03-01)
=================================
Features
--------
- twisted.words.protocols.irc.IRCClient.irc_MODE now takes ISUPPORT
parameters into account when parsing mode messages with arguments
that take parameters (#3296)
Bugfixes
--------
- When twisted.words.protocols.irc.IRCClient's versionNum and
versionEnv attributes are set to None, they will no longer be
included in the client's response to CTCP VERSION queries. (#3660)
- twisted.words.protocols.jabber.xmlstream.hashPassword now only
accepts unicode as input (#3741, #3742, #3847)
Other
-----
- #2503, #4066, #4261
Twisted Core 9.0.0 (2009-11-24)
===============================
Features
--------
- LineReceiver.clearLineBuffer now returns the bytes that it cleared (#3573)
- twisted.protocols.amp now raises InvalidSignature when bad arguments are
passed to Command.makeArguments (#2808)
- IArgumentType was added to represent an existing but previously unspecified
interface in amp (#3468)
- Obscure python tricks have been removed from the finger tutorials (#2110)
- The digest auth implementations in twisted.web and twisted.protocolos.sip
have been merged together in twisted.cred (#3575)
- FilePath and ZipPath now has a parents() method which iterates up all of its
parents (#3588)
- reactors which support threads now have a getThreadPool method (#3591)
- The MemCache client implementation now allows arguments to the "stats"
command (#3661)
- The MemCache client now has a getMultiple method which allows fetching of
multiple values (#3171)
- twisted.spread.jelly can now unserialize some new-style classes (#2950)
- twisted.protocols.loopback.loopbackAsync now accepts a parameter to control
the data passed between client and server (#3820)
- The IOCP reactor now supports SSL (#593)
- Tasks in a twisted.internet.task.Cooperator can now be paused, resumed, and
cancelled (#2712)
- AmpList arguments can now be made optional (#3891)
- The syslog output observer now supports log levels (#3300)
- LoopingCall now supports reporting the number of intervals missed if it
isn't able to schedule calls fast enough (#3671)
Fixes
-----
- The deprecated md5 and sha modules are no longer used if the stdlib hashlib
module is available (#2763)
- An obscure deadlock involving waking up the reactor within signal handlers
in particular threads was fixed (#1997)
- The passivePortRange attribute of FTPFactory is now honored (#3593)
- TestCase.flushWarnings now flushes warnings even if they were produced by a
file that was renamed since it was byte compiled (#3598)
- Some internal file descriptors are now marked as close-on-exec, so these will
no longer be leaked to child processes (#3576)
- twisted.python.zipstream now correctly extracts the first file in a directory
as a file, and not an empty directory (#3625)
- proxyForInterface now returns classes which correctly *implement* interfaces
rather than *providing* them (#3646)
- SIP Via header parameters should now be correctly generated (#2194)
- The Deferred returned by stopListening would sometimes previously never fire
if an exception was raised by the underlying file descriptor's connectionLost
method. Now the Deferred will fire with a failure (#3654)
- The command-line tool "manhole" should now work with newer versions of pygtk
(#2464)
- When a DefaultOpenSSLContextFactory is instantiated with invalid parameters,
it will now raise an exception immediately instead of waiting for the first
connection (#3700)
- Twisted command line scripts should now work when installed in a virtualenv
(#3750)
- Trial will no longer delete temp directories which it did not create (#3481)
- Processes started on Windows should now be cleaned up properly in more cases
(#3893)
- Certain misbehaving importers will no longer cause twisted.python.modules
(and thus trial) to raise an exception, but rather issue a warning (#3913)
- MemCache client protocol methods will now fail when the transport has been
disconnected (#3643)
- In the AMP method callRemoteString, the requiresAnswer parameter is now
honored (#3999)
- Spawning a "script" (a file which starts with a #! line) on Windows running
Python 2.6 will now work instead of raising an exception about file mode
"ru" (#3567)
- FilePath's walk method now calls its "descend" parameter even on the first
level of children, instead of only on grandchildren. This allows for better
symlink cycle detection (#3911)
- Attempting to write unicode data to process pipes on Windows will no longer
result in arbitrarily encoded messages being written to the pipe, but instead
will immediately raise an error (#3930)
- The various twisted command line utilities will no longer print
ModuleType.__doc__ when Twisted was installed with setuptools (#4030)
- A Failure object will now be passed to connectionLost on stdio connections
on Windows, instead of an Exception object (#3922)
Deprecations and Removals
-------------------------
- twisted.persisted.marmalade was deleted after a long period of deprecation
(#876)
- Some remaining references to the long-gone plugins.tml system were removed
(#3246)
- SSLv2 is now disabled by default, but it can be re-enabled explicitly
(#3330)
- twisted.python.plugin has been removed (#1911)
- reactor.run will now raise a ReactorAlreadyRunning exception when it is
called reentrantly instead of warning a DeprecationWarning (#1785)
- twisted.spread.refpath is now deprecated because it is unmaintained,
untested, and has dubious value (#3723)
- The unused --quiet flag has been removed from the twistd command (#3003)
Other
-----
- #3545, #3490, #3544, #3537, #3455, #3315, #2281, #3564, #3570, #3571, #3486,
#3241, #3599, #3220, #1522, #3611, #3596, #3606, #3609, #3602, #3637, #3647,
#3632, #3675, #3673, #3686, #2217, #3685, #3688, #2456, #506, #3635, #2153,
#3581, #3708, #3714, #3717, #3698, #3747, #3704, #3707, #3713, #3720, #3692,
#3376, #3652, #3695, #3735, #3786, #3783, #3699, #3340, #3810, #3822, #3817,
#3791, #3859, #2459, #3677, #3883, #3894, #3861, #3822, #3852, #3875, #2722,
#3768, #3914, #3885, #2719, #3905, #3942, #2820, #3990, #3954, #1627, #2326,
#2972, #3253, #3937, #4058, #1200, #3639, #4079, #4063, #4050
Twisted Conch 9.0.0 (2009-11-24)
================================
Fixes
-----
- The SSH key parser has been removed and conch now uses pyASN1 to parse keys.
This should fix a number of cases where parsing a key would fail, but it now
requires users to have pyASN1 installed (#3391)
- The time field on SFTP file listings should now be correct (#3503)
- The day field on SFTP file listings should now be correct on Windows (#3503)
- The "cftp" sftp client now truncates files it is uploading over (#2519)
- The telnet server protocol can now properly respond to subnegotiation
requests (#3655)
- Tests and factoring of the SSHv2 server implementation are now much better
(#2682)
- The SSHv2 server now sends "exit-signal" messages to the client, instead of
raising an exception, when a process dies due to a signal (#2687)
- cftp's client-side "exec" command now uses /bin/sh if the current user has
no shell (#3914)
Deprecations and Removals
-------------------------
- The buggy SSH connection sharing feature of the SSHv2 client was removed
(#3498)
- Use of strings and PyCrypto objects to represent keys is deprecated in favor
of using Conch Key objects (#2682)
Other
-----
- #3548, #3537, #3551, #3220, #3568, #3689, #3709, #3809, #2763, #3540, #3750,
#3897, #3813, #3871, #3916, #4047, #3940, #4050
Twisted Lore 9.0.0 (2009-11-24)
===============================
Features
--------
- Python source listings now include line numbers (#3486)
Fixes
-----
- Lore now uses minidom instead of Twisted's microdom, which incidentally
fixes some Lore bugs such as throwing away certain whitespace
(#3560, #414, #3619)
- Lore's "lint" command should no longer break on documents with links in them
(#4051, #4115)
Deprecations and Removals
-------------------------
- Lore no longer uses the ancient "tml" Twisted plugin system (#1911)
Other
-----
- #3565, #3246, #3540, #3750, #4050
Twisted Mail 9.0.0 (2009-11-24)
===============================
Features
--------
- maildir.StringListMailbox, an in-memory maildir mailbox, now supports
deletion, undeletion, and syncing (#3547)
- SMTPClient's callbacks are now more completely documented (#684)
Fixes
-----
- Parse UNSEEN response data and include it in the result of
IMAP4Client.examine (#3550)
- The IMAP4 client now delivers more unsolicited server responses to callbacks
rather than ignoring them, and also won't ignore solicited responses that
arrive on the same line as an unsolicited one (#1105)
- Several bugs in the SMTP client's idle timeout support were fixed (#3641,
#1219)
- A case where the SMTP client could skip some recipients when retrying
delivery has been fixed (#3638)
- Errors during certain data transfers will no longer be swallowed. They will
now bubble up to the higher-level API (such as the sendmail function) (#3642)
- Escape sequences inside quoted strings in IMAP4 should now be parsed
correctly by the IMAP4 server protocol (#3659)
- The "imap4-utf-7" codec that is registered by twisted.mail.imap4 had a number
of fixes that allow it to work better with the Python codecs system, and to
actually work (#3663)
- The Maildir implementation now ensures time-based ordering of filenames so
that the lexical sorting of messages matches the order in which they were
received (#3812)
- SASL PLAIN credentials generated by the IMAP4 protocol implementations
(client and server) should now be RFC-compliant (#3939)
- Searching for a set of sequences using the IMAP4 "SEARCH" command should
now work on the IMAP4 server protocol implementation. This at least improves
support for the Pine mail client (#1977)
Other
-----
- #2763, #3647, #3750, #3819, #3540, #3846, #2023, #4050
Twisted Names 9.0.0 (2009-11-24)
================================
Deprecations and Removals
-------------------------
- client.ThreadedResolver is deprecated in favor of
twisted.internet.base.ThreadedResolver (#3710)
Other
-----
- #3540, #3560, #3712, #3750, #3990
Twisted News 9.0.0 (2009-11-24)
===============================
Other
-----
- #2763, #3540
Twisted Pair 9.0.0 (2009-11-24)
===============================
Other
-----
- #3540, #4050
Twisted Runner 9.0.0 (2009-11-24)
=================================
Features
--------
- procmon.ProcessMonitor.addProcess now accepts an 'env' parameter which allows
users to specify the environment in which a process will be run (#3691)
Other
-----
- #3540
Twisted Web 9.0.0 (2009-11-24)
==============================
Features
--------
- There is now an iweb.IRequest interface which specifies the interface that
request objects provide (#3416)
- downloadPage now supports the same cookie, redirect, and timeout features
that getPage supports (#2971)
- A chapter about WSGI has been added to the twisted.web documentation (#3510)
- The HTTP auth support in the web server now allows anonymous sessions by
logging in with ANONYMOUS credentials when no Authorization header is
provided in a request (#3924, #3936)
- HTTPClientFactory now accepts a parameter to enable a common deviation from
the HTTP 1.1 standard by responding to redirects in a POSTed request with a
GET instead of another POST (#3624)
- A new basic HTTP/1.1 client API is included in twisted.web.client.Agent
(#886, #3987)
Fixes
-----
- Requests for "insecure" children of a static.File (such as paths containing
encoded directory separators) will now result in a 404 instead of a 500
(#3549, #3469)
- When specifying a followRedirect argument to the getPage function, the state
of redirect-following for other getPage calls should now be unaffected. It
was previously overwriting a class attribute which would affect outstanding
getPage calls (#3192)
- Downloading an URL of the form "http://example.com:/" will now work,
ignoring the extraneous colon (#2402)
- microdom's appendChild method will no longer issue a spurious warning, and
microdom's methods in general should now issue more meaningful exceptions
when invalid parameters are passed (#3421)
- WSGI applications will no longer have spurious Content-Type headers added to
their responses by the twisted.web server. In addition, WSGI applications
will no longer be able to specify the server-restricted headers Server and
Date (#3569)
- http_headers.Headers now normalizes the case of raw headers passed directly
to it in the same way that it normalizes the headers passed to setRawHeaders
(#3557)
- The distrib module no longer relies on the deprecated woven package (#3559)
- twisted.web.domhelpers now works with both microdom and minidom (#3600)
- twisted.web servers will now ignore invalid If-Modified-Since headers instead
of returning a 500 error (#3601)
- Certain request-bound memory and file resources are cleaned up slightly
sooner by the request when the connection is lost (#1621, #3176)
- xmlrpclib.DateTime objects should now correctly round-trip over twisted.web's
XMLRPC support in all supported versions of Python, and errors during error
serialization will no longer hang a twisted.web XMLRPC response (#2446)
- request.content should now always be seeked to the beginning when
request.process is called, so application code should never need to seek
back manually (#3585)
- Fetching a child of static.File with a double-slash in the URL (such as
"example//foo.html") should now return a 404 instead of a traceback and
500 error (#3631)
- downloadPage will now fire a Failure on its returned Deferred instead of
indicating success when the connection is prematurely lost (#3645)
- static.File will now provide a 404 instead of a 500 error when it was
constructed with a non-existent file (#3634)
- microdom should now serialize namespaces correctly (#3672)
- The HTTP Auth support resource wrapper should no longer corrupt requests and
cause them to skip a segment in the request path (#3679)
- The twisted.web WSGI support should now include leading slashes in PATH_INFO,
and SCRIPT_NAME will be empty if the application is at the root of the
resource tree. This means that WSGI applications should no longer generate
URLs with double-slashes in them even if they naively concatenate the values
(#3721)
- WSGI applications should now receive the requesting client's IP in the
REMOTE_ADDR environment variable (#3730)
- The distrib module should work again. It was unfortunately broken with the
refactoring of twisted.web's header support (#3697)
- static.File now supports multiple ranges specified in the Range header
(#3574)
- static.File should now generate a correct Content-Length value when the
requested Range value doesn't fit entirely within the file's contents (#3814)
- Attempting to call request.finish() after the connection has been lost will
now immediately raise a RuntimeError (#4013)
- An HTTP-auth resource should now be able to directly render the wrapped
avatar, whereas before it would only allow retrieval of child resources
(#4014)
- twisted.web's wsgi support should no longer attempt to call request.finish
twice, which would cause errors in certain cases (#4025)
- WSGI applications should now be able to handle requests with large bodies
(#4029)
- Exceptions raised from WSGI applications should now more reliably be turned
into 500 errors on the HTTP level (#4019)
- DeferredResource now correctly passes through exceptions raised from the
wrapped resource, instead of turning them all into 500 errors (#3932)
- Agent.request now generates a Host header when no headers are passed at
(#4131)
Deprecations and Removals
-------------------------
- The unmaintained and untested twisted.web.monitor module was removed (#2763)
- The twisted.web.woven package has been removed (#1522)
- All of the error resources in twisted.web.error are now in
twisted.web.resource, and accessing them through twisted.web.error is now
deprecated (#3035)
- To facilitate a simplification of the timeout logic in server.Session,
various things have been deprecated (#3457)
- the loopFactory attribute is now ignored
- the checkExpired method now does nothing
- the lifetime parameter to startCheckingExpiration is now ignored
- The twisted.web.trp module is now deprecated (#2030)
Other
-----
- #2763, #3540, #3575, #3610, #3605, #1176, #3539, #3750, #3761, #3779, #2677,
#3782, #3904, #3919, #3418, #3990, #1404, #4050
Twisted Words 9.0.0 (2009-11-24)
================================
Features
--------
- IRCClient.describe is a new method meant to replace IRCClient.me to send
CTCP ACTION messages with less confusing behavior (#3910)
- The XMPP client protocol implementation now supports ANONYMOUS SASL
authentication (#4067)
- The IRC client protocol implementation now has better support for the
ISUPPORT server->client message, storing the data in a new
ServerSupportedFeatures object accessible via IRCClient.supported (#3285)
Fixes
-----
- The twisted.words IRC server now always sends an MOTD, which at least makes
Pidgin able to successfully connect to a twisted.words IRC server (#2385)
- The IRC client will now dispatch "RPL MOTD" messages received before a
"RPL MOTD START" instead of raising an exception (#3676)
- The IRC client protocol implementation no longer updates its 'nickname'
attribute directly; instead, that attribute will be updated when the server
acknowledges the change (#3377)
- The IRC client protocol implementation now supports falling back to another
nickname when a nick change request fails (#3377, #4010)
Deprecations and Removals
-------------------------
- The TOC protocol implementation is now deprecated, since the protocol itself
has been deprecated and obselete for quite a long time (#3580)
- The gui "im" application has been removed, since it relied on GTK1, which is
hard to find these days (#3699, #3340)
Other
-----
- #2763, #3540, #3647, #3750, #3895, #3968, #4050
Core 8.2.0 (2008-12-16)
=======================
Features
--------
- Reactors are slowly but surely becoming more isolated, thus improving
testability (#3198)
- FilePath has gained a realpath method, and FilePath.walk no longer infinitely
recurses in the case of a symlink causing a self-recursing filesystem tree
(#3098)
- FilePath's moveTo and copyTo methods now have an option to disable following
of symlinks (#3105)
- Private APIs are now included in the API documentation (#3268)
- hotshot is now the default profiler for the twistd --profile parameter and
using cProfile is now documented (#3355, #3356)
- Process protocols can now implement a processExited method, which is
distinct from processEnded in that it is called immediately when the child
has died, instead of waiting for all the file descriptors to be closed
(#1291)
- twistd now has a --umask option (#966, #3024)
- A new deferToThreadPool function exists in twisted.internet.threads (#2845)
- There is now an example of writing an FTP server in examples/ftpserver.py
(#1579)
- A new runAsEffectiveUser function has been added to twisted.python.util
(#2607)
- twisted.internet.utils.getProcessOutput now offers a mechanism for
waiting for the process to actually end, in the event of data received on
stderr (#3239)
- A fullyQualifiedName function has been added to twisted.python.reflect
(#3254)
- strports now defaults to managing access to a UNIX socket with a lock;
lockfile=0 can be included in the strports specifier to disable this
behavior (#2295)
- FTPClient now has a 'rename' method (#3335)
- FTPClient now has a 'makeDirectory' method (#3500)
- FTPClient now has a 'removeFile' method (#3491)
- flushWarnings, A new Trial method for testing warnings, has been added
(#3487, #3427, #3506)
- The log observer can now be configured in .tac files (#3534)
Fixes
-----
- TLS Session Tickets are now disabled by default, allowing connections to
certain servers which hang when an empty session ticket is received (like
GTalk) (#3463)
- twisted.enterprise.adbapi.ConnectionPool's noisy attribute now defaults to
False, as documented (#1806)
- Error handling and logging in adbapi is now much improved (#3244)
- TCP listeners can now be restarted (#2913)
- Doctests can now be rerun with trial's --until-failure option (#2713)
- Some memory leaks have been fixed in trial's --until-failure
implementation (#3119, #3269)
- Trial's summary reporter now prints correct runtime information and handles
the case of 0 tests (#3184)
- Trial and any other user of the 'namedAny' function now has better error
reporting in the case of invalid module names (#3259)
- Multiple instances of trial can now run in parallel in the same directory
by creating _trial_temp directories with an incremental suffix (#2338)
- Trial's failUnlessWarns method now works on Python 2.6 (#3223)
- twisted.python.log now hooks into the warnings system in a way compatible
with Python 2.6 (#3211)
- The GTK2 reactor is now better supported on Windows, but still not passing
the entire test suite (#3203)
- low-level failure handling in spawnProcess has been improved and no longer
leaks file descriptors (#2305, #1410)
- Perspective Broker avatars now have their logout functions called in more
cases (#392)
- Log observers which raise exceptions are no longer removed (#1069)
- transport.getPeer now always includes an IP address in the Address returned
instead of a hostname (#3059)
- Functions in twisted.internet.utils which spawn processes now avoid calling
chdir in the case where no working directory is passed, to avoid some
obscure permission errors (#3159)
- twisted.spread.publish.Publishable no longer corrupts line endings on
Windows (#2327)
- SelectReactor now properly detects when a TLS/TCP connection has been
disconnected (#3218)
- twisted.python.lockfile no longer raises an EEXIST OSError and is much
better supported on Windows (#3367)
- When ITLSTransport.startTLS is called while there is data in the write
buffer, TLS negotiation will now be delayed instead of the method raising
an exception (#686)
- The userAnonymous argument to FTPFactory is now honored (#3390)
- twisted.python.modules no longer tries to "fix" sys.modules after an import
error, which was just causing problems (#3388)
- setup.py no longer attempts to build extension modules when run with Jython
(#3410)
- AMP boxes can now be sent in IBoxReceiver.startReceivingBoxes (#3477)
- AMP connections are closed as soon as a key length larger than 255 is
received (#3478)
- Log events with timezone offsets between -1 and -59 minutes are now
correctly reported as negative (#3515)
Deprecations and Removals
-------------------------
- Trial's setUpClass and tearDownClass methods are now deprecated (#2903)
- problemsFromTransport has been removed in favor of the argument passed to
connectionLost (#2874)
- The mode parameter to methods of IReactorUNIX and IReactorUNIXDatagram are
deprecated in favor of applications taking other security precautions, since
the mode of a Unix socket is often not respected (#1068)
- Index access on instances of twisted.internet.defer.FirstError has been
removed in favor of the subFailure attribute (#3298)
- The 'changeDirectory' method of FTPClient has been deprecated in favor of
the 'cwd' method (#3491)
Other
-----
- #3202, #2869, #3225, #2955, #3237, #3196, #2355, #2881, #3054, #2374, #2918,
#3210, #3052, #3267, #3288, #2985, #3295, #3297, #2512, #3302, #1222, #2631,
#3306, #3116, #3215, #1489, #3319, #3320, #3321, #1255, #2169, #3182, #3323,
#3301, #3318, #3029, #3338, #3346, #1144, #3173, #3165, #685, #3357, #2582,
#3370, #2438, #1253, #637, #1971, #2208, #979, #1790, #1888, #1882, #1793,
#754, #1890, #1931, #1246, #1025, #3177, #2496, #2567, #3400, #2213, #2027,
#3415, #1262, #3422, #2500, #3414, #3045, #3111, #2974, #2947, #3222, #2878,
#3402, #2909, #3423, #1328, #1852, #3382, #3393, #2029, #3489, #1853, #2026,
#2375, #3502, #3482, #3504, #3505, #3507, #2605, #3519, #3520, #3121, #3484,
#3439, #3216, #3511, #3524, #3521, #3197, #2486, #2449, #2748, #3381, #3236,
#671
Conch 8.2.0 (2008-12-16)
========================
Features
--------
- The type of the protocols instantiated by SSHFactory is now parameterized
(#3443)
Fixes
-----
- A file descriptor leak has been fixed (#3213, #1789)
- "File Already Exists" errors are now handled more correctly (#3033)
- Handling of CR IAC in TelnetClient is now improved (#3305)
- SSHAgent is no longer completely unusable (#3332)
- The performance of insults.ClientProtocol is now greatly increased by
delivering more than one byte at a time to application code (#3386)
- Manhole and the conch server no longer need to be run as root when not
necessary (#2607)
- The value of FILEXFER_ATTR_ACMODTIME has been corrected (#2902)
- The management of known_hosts and host key verification has been overhauled
(#1376, #1301, #3494, #3496, #1292, #3499)
Other
-----
- #3193, #1633
Lore 8.2.0 (2008-12-16)
=======================
Other
-----
- #2207, #2514
Mail 8.2.0 (2008-12-16)
=======================
Fixes
-----
- The mailmail tool now provides better error messages for usage errors (#3339)
- The SMTP protocol implementation now works on PyPy (#2976)
Other
-----
- #3475
Names 8.2.0 (2008-12-16)
========================
Features
--------
- The NAPTR record type is now supported (#2276)
Fixes
-----
- Make client.Resolver less vulnerable to the Birthday Paradox attack by
avoiding sending duplicate queries when it's not necessary (#3347)
- client.Resolver now uses a random source port for each DNS request (#3342)
- client.Resolver now uses a full 16 bits of randomness for message IDs,
instead of 10 which it previously used (#3342)
- All record types now have value-based equality and a string representation
(#2935)
Other
-----
- #1622, #3424
Web 8.2.0 (2008-12-16)
======================
Features
--------
- The web server can now deal with multi-value headers in the new attributes of
Request, requestHeaders and responseHeaders (#165)
- There is now a resource-wrapper which implements HTTP Basic and Digest auth
in terms of twisted.cred (#696)
- It's now possible to limit the number of redirects that client.getPage will
follow (#2412)
- The directory-listing code no longer uses Woven (#3257)
- static.File now supports Range headers with a single range (#1493)
- twisted.web now has a rudimentary WSGI container (#2753)
- The web server now supports chunked encoding in requests (#3385)
Fixes
-----
- The xmlrpc client now raises an error when the server sends an empty
response (#3399)
- HTTPPageGetter no longer duplicates default headers when they're explicitly
overridden in the headers parameter (#1382)
- The server will no longer timeout clients which are still sending request
data (#1903)
- microdom's isEqualToNode now returns False when the nodes aren't equal
(#2542)
Deprecations and Removals
-------------------------
- Request.headers and Request.received_headers are not quite deprecated, but
they are discouraged in favor of requestHeaders and responseHeaders (#165)
Other
-----
- #909, #687, #2938, #1152, #2930, #2025, #2683, #3471
Web2 8.2.0 (2008-12-16)
=======================
Note: Twisted Web2 is being phased out in preference for Twisted Web, but some
maintenance changes have been made.
Fixes
-----
- The main twisted.web2 docstring now indicates the current state of the
project (#2028)
- Headers which require unusual bytes are now quoted (#2346)
- Some links in the introduction documentation have been fixed (#2552)
Words 8.2.0 (2008-12-16)
========================
Feature
-------
- There is now a standalone XMPP router included in twisted.words: it can be
used with the 'twistd xmpp-router' command line (#3407)
- A server factory for Jabber XML Streams has been added (#3435)
- Domish now allows for iterating child elements with specific qualified names
(#2429)
- IRCClient now has a 'back' method which removes the away status (#3366)
- IRCClient now has a 'whois' method (#3133)
Fixes
-----
- The IRC Client implementation can now deal with compound mode changes (#3230)
- The MSN protocol implementation no longer requires the CVR0 protocol to
be included in the VER command (#3394)
- In the IRC server implementation, topic messages will no longer be sent for
a group which has no topic (#2204)
- An infinite loop (which caused infinite memory usage) in irc.split has been
fixed. This was triggered any time a message that starts with a delimiter
was sent (#3446)
- Jabber's toResponse now generates a valid stanza even when stanzaType is not
specified (#3467)
- The lifetime of authenticator instances in XmlStreamServerFactory is no
longer artificially extended (#3464)
Other
-----
- #3365
Core 8.1.0 (2008-05-18)
=======================
Features
--------
- twisted.internet.error.ConnectionClosed is a new exception which is the
superclass of ConnectionLost and ConnectionDone (#3137)
- Trial's CPU and memory performance should be better now (#3034)
- twisted.python.filepath.FilePath now has a chmod method (#3124)
Fixes
-----
- Some reactor re-entrancy regressions were fixed (#3146, #3168)
- A regression was fixed whereby constructing a Failure for an exception and
traceback raised out of a Pyrex extension would fail (#3132)
- CopyableFailures in PB can again be created from CopiedFailures (#3174)
- FilePath.remove, when called on a FilePath representing a symlink to a
directory, no longer removes the contents of the targeted directory, and
instead removes the symlink (#3097)
- FilePath now has a linkTo method for creating new symlinks (#3122)
- The docstring for Trial's addCleanup method now correctly specifies when
cleanup functions are run (#3131)
- assertWarns now deals better with multiple identical warnings (#2904)
- Various windows installer bugs were fixed (#3115, #3144, #3150, #3151, #3164)
- API links in the howto documentation have been corrected (#3130)
- The Win32 Process transport object now has a pid attribute (#1836)
- A doc bug in the twistd plugin howto which would inevitably lead to
confusion was fixed (#3183)
- A regression breaking IOCP introduced after the last release was fixed
(#3200)
Deprecations and Removals
-------------------------
- mktap is now fully deprecated, and will emit DeprecationWarnings when used
(#3127)
Other
-----
- #3079, #3118, #3120, #3145, #3069, #3149, #3186, #3208, #2762
Conch 8.1.0 (2008-05-18)
========================
Fixes
-----
- A regression was fixed whereby the publicKeys and privateKeys attributes of
SSHFactory would not be interpreted as strings (#3141)
- The sshsimpleserver.py example had a minor bug fix (#3135)
- The deprecated mktap API is no longer used (#3127)
- An infelicity was fixed whereby a NameError would be raised in certain
circumstances during authentication when a ConchError should have been
(#3154)
- A workaround was added to conch.insults for a bug in gnome-terminal whereby
it would not scroll correctly (#3189)
Lore 8.1.0 (2008-05-18)
=======================
Fixes
-----
- The deprecated mktap API is no longer used (#3127)
News 8.1.0 (2008-05-18)
=======================