2005-03-12 Jp Calderone * twisted/scripts/mktap.py, twisted/scripts/twistd.py, twisted/application/app.py: Changed UID and GID defaults for Process to None. Changed mktap behavior to not specify UID and GID if they are not given on the command line. Changed application startup to not change UID or GID if they are not given. Changed twistd to add UID and GID setting command line arguments. 2005-02-10 Jp Calderone * twisted/internet/defer.py: DeferredLock, DeferredSemaphore, and DeferredQueue added. * twisted/test/test_defer.py: Tests for above mentioned three new classes. 2004-11-27 Brian Warner * util.py (SignalStateManager.save): don't save signal handlers for SIGKILL and SIGSTOP, since we can't set them anyway. Python2.4c1 raises an error when you try. 2004-11-07 Brian Warner * twisted/test/test_internet.py: correctly check for SSL support. Improve timeout for testCallLater and testGetDelayedCalls to avoid spurious failures on slow test systems. Close sockets in PortStringification to fix trial warnings. * twisted/internet/ssl.py: add a comment describing the correct way to import twisted.internet.ssl (since it might partially fail if OpenSSL is not available) 2004-11-06 Jp Calderone * twisted/trial/assertions.py: assertRaises/failUnlessRaises now returns the caught exception to allow tests to inspect the contents. 2004-11-02 Brian Warner * loopback.py (loopbackTCP): use trial's spinWhile and spinUntil primitives instead of doing reactor.iterate() ourselves. Make sure to wait for everything before finishing. 2004-10-26 Cory Dodt * twisted/python/{which,process}.py, twisted/test/{test_wprocess,wprocess_for_testing}.py, twisted/internet/{default,error,wprocess,process}.py: back out wprocess due to test failures in wprocess and new trial. Resolves issue 760. 2004-10-24 Itamar Shtull-Trauring * TCP: Half-close of write and read for TCP connections, including protocol notification for protocols that implement IHalfCloseableProtocol. 2004-10-07 Jp Calderone * Transports: Add a maximum to the number of bytes that will be held in the write buffer even after they have been sent. This puts a maximum on the cost of writing faster than the network can accommodate. 2004-10-06 Itamar Shtull-Trauring * Transports: New TCP/SSL/etc. buffering algorithm. All writes are now stored until next iteration before being written, and many small writes are not expensive. 2004-09-30 Brian Warner * glib2reactor.py: new reactor that uses just glib2, not gtk2. This one doesn't require a DISPLAY, and cannot be used for GUI apps. * gtk2reactor.py: import gobject *after* pygtk.require, to make sure we get the same versions of both 2004-09-18 Christopher Armstrong * twisted/internet/defer.py: Add deferredGenerator and waitForDeferred. This lets you write kinda-sorta synchronous-looking code that uses Deferreds. See the waitForDeferred docstring. 2004-09-11 Cory Dodt * twisted/python/{which,process}.py, twisted/test/{test_wprocess,wprocess_for_testing}.py, twisted/internet/{default,error,wprocess,process}.py: merge the "wprocess" branch which uses Trent Mick's process.py to enable spawnProcess in the default reactor on Windows 2004-08-24 Brian Warner * twisted/application/internet.py (TimerService): make it possible to restart a stopped TimerService. Threw out a lot of (apparently) unnecessary code in the process. Make sure it gets pickled in a not-running state too. * twisted/test/test_application.py (TestInternet2.testTimer): test the changes, and update the way the test peeks inside TimerService 2004-07-18 Paul Swartz * twisted/internet/utils.py: By passing errortoo=1, you can get stderr from getProcessOutput 2004-07-18 Paul Swartz * twisted/conch/unix.py: if the utmp module is available, record user logins/logouts into utmp/wtmp. 2004-06-25 Paul Swartz * twisted/conch/checkers.py: Use functionality of crypt module instead of an external module. 2004-06-25 Jp Calderone * twisted/spread/banana.py: Disabled automatic import and use of cBanana. PB will now use the pure-Python version of banana unless cBanana is manually installed by the application. 2004-06-12 Paul Swartz * twisted/conch/client: added -r flag to reconnect to the server if the connection is lost (closes 623). 2004-06-06 Dave Peticolas * twisted/test/test_enterprise.py: test open callback and connect/disconnect. * twisted/enterprise/adbapi.py: add open callback support and disconnect() method. Issue 480. 2004-06-05 Dave Peticolas * twisted/enterprise/adbapi.py: Don't log sql exceptions (issue 631). Remove deprecated api. * twisted/news/database.py: do not use adbapi.Augmentation 2004-06-03 Itamar Shtull-Trauring * twisted/internet/gtk2reactor.py: The choice between glib event loop and gtk+ event loop is determined by argument at reactor install time. 2004-05-31 Dave Peticolas * twisted/enterprise/sqlreflector.py: don't use Augmentation * twisted/enterprise/populate.sql: remove * twisted/enterprise/schema.sql: remove * twisted/enterprise/row.py: remove deprecated classes * twisted/enterprise/dbgadgets.py: remove * twisted/enterprise/dbcred.py: remove * twisted/test/test_enterprise.py: Fix Firebird test case. 2004-05-21 Itamar Shtull-Trauring * twisted/internet/gtk2reactor.py: use glib event loop directly instead of gtk2's event loop if possible. 2004-05-04 Jp Calderone * twisted.news, twisted.protocols.nntp: Moved back into trunk pending an alternate split-up strategy. 2004-05-04 Itamar Shtull-Trauring * twisted.internet.reactor.listenUDP: transport.write() on UDP ports no longer supports unresolved hostnames (though deprecated support still exists). 2004-4-18 Christopher Armstrong * twisted/lore/nevowlore.py, twisted/plugins.tml: Added Nevow support for lore. See docstring of twisted.lore.nevowlore. 2004-4-18 Christopher Armstrong * twisted.news, twisted.protocols.nntp: Moved into a third party package. Deprecated backwards-compatibility exists by importing from the third-party package if available. 2004-4-11 Paul Swartz * twisted.conch: refactored the Conch client to separate connecting to a server from user authentication from client-specific actions. 2004-03-23 Andrew Bennetts * twisted.protocols.http: Small optimisation to HTTP implementation. This changes return value of toChunk to a tuple of strings, rather than one string. 2004-4-3 Paul Swartz * twisted.python.lockfile: added lockfile support, based on liblockfile. * twisted.internet.unix.Port: added a wantPID kwarg. If True, it checks for and gets a lockfile for the UNIX socket. * twisted.internet.unix.Connector: added a checkPID kwarg. If True, it checks that the lockfile for the socket is current. 2004-03-23 Pavel Pergamenshchik * twisted.internet.iocp: Support for Windows IO Completion Ports. Use with "--reactor=iocp" parameter to twistd or trial. 2004-03-20 Itamar Shtull-Trauring * twisted.internet: getHost(), getPeer(), buildProtocol() etc. all use address objects from twisted.internet.address. * twisted/internet/udp.py: Connected UDP support is now part of the standard listenUDP-resulting UDP transport using a connect() method. 2004-03-18 Jp Calderone * twisted/application/internet.py: Changed TimerService to log errors from the function it calls. * twisted/application/test_application.py: Added test case for logging of exceptions from functions TimerService calls. 2004-03-07 Christopher Armstrong * .: Releasing Twisted 1.2.1alpha1. 2004-03-03 Christopher Armstrong * twisted/web/server.py: Fix UnsupportedMethod so that users' allowedMethods are actually honored. * twisted/web/resource.py: (Resource.render) If the resource has an 'allowedMethods' attribute, pass it to UnsupportedMethod. 2004-02-27 Andrew Bennetts * twisted/internet/defer.py: Add consumeErrors flag to DeferredList. This takes care of the most common use-case for the recently deprecated addDeferred method. 2004-02-28 Dave Peticolas * setup.py: install tap2rpm as a bin script * twisted/test/test_enterprise.py: Test Firebird db. Fix typos. 2004-02-27 Andrew Bennetts * twisted/internet/defer.py: Deprecated DeferredList.addDeferred. It isn't as useful as it looks, and can have surprising behaviour. 2004-02-25 Christopher Armstrong * twisted/protocols/dns.py: Fixed a bug in TCP support: It wouldn't process any messages after the first, causing AXFR queries to be totally broken (in addition to other problems in the implementation of AXFR). * twisted/names/client.py: Fixed the AXFR client (lookupZone), thanks to DJB's wonderful documentation of the horribleness of DNS. 2004-02-25 Christopher Armstrong * .: Releasing Twisted 1.2.0 final! Same as rc3. 2004-02-24 Christopher Armstrong * .: Releasing Twisted 1.2.0rc3 (same as rc2, with cBanana bug fixed). 2004-02-19 Kevin Turner * twisted/application/service.py (IService.disownServiceParent) (IServiceCollection.removeService): These may return Deferred if they have asynchronous side effects. 2004-02-18 Christopher Armstrong * .: Releasing Twisted 1.2.0rc2. Brown-paper bag release bug. 2004-02-17 Christopher Armstrong * .: Releasing Twisted 1.2.0rc1. 2004-02-13 Brian Warner * doc/howto/faq.xhtml: add entry on transport.getPeer() 2004-01-31 Christopher Armstrong * .: Releasing Twisted 1.1.2alpha2 (problem with Debian packaging). 2004-01-30 Christopher Armstrong * .: Releasing Twisted 1.1.2alpha1. 2004-01-23 Christopher Armstrong * twisted/scripts/trial.py: trial now supports a --coverage option, requiring Python 2.3.3. Give it a directory name (relative to _trial_temp) to put code-coverage info in. It uses the stdlib 'trace' module. 2004-01-21 Pavel Pergamenshchik * twisted/protocols/stateful.py: A new way to write protocols! Current state is encoded as a pair (func, len). As soon as len of data arrives, func is called with that amount of data. New state is returned from func. * twisted/test/test_stateful.py: Tests and an example, an Int32StringReceiver implementation. 2004-01-18 Christopher Armstrong * twisted/web/resource.py: The default render method of Resource now supports delegating to methods of the form "render_*" where "*" is the HTTP method that was used to make the request. Examples: request_GET, request_HEAD, request_CONNECT, and so on. This won't break any existing code - when people want to use the better API, they can stop overriding 'render' and instead override individual render_* methods. 2004-01-13 Itamar Shtull-Trauring * twisted/web/soap.py: Beginning of client SOAP support. 2004-01-10 Andrew Bennetts * twisted/protocols/ftp.py: Added support for partial downloads and uploads to FTPClient (see the offset parameter of retrieveFile). 2004-01-09 Jp Calderone * twisted/protocols/imap4.py: Add IMessageCopier interface to allow for optimized implementations of message copying. 2004-01-06 Brian Warner * twisted/internet/default.py (PosixReactorBase.spawnProcess): add a 'childFDs' argument which allows the child's file descriptors to be arbitrarily mapped to parent FDs or pipes. This allows you to set up additional pipes into the child (say for a GPG passphrase or separate status information). * twisted/internet/process.py (Process): add childFDs, split out ProcessReader and ProcessWriter (so that Process itself is no longer also reading stdout). * twisted/internet/protocol.py (ProcessProtocol): add new childDataReceived and childConnectionLost methods, which default to invoking the old methods for backwards compatibility * twisted/test/test_process.py (FDTest): add test for childFDs mapping. Also add timeouts to most tests, and make all reactor.iterate() loops wait 10ms between iterations to avoid spamming the CPU quite so badly. Closes issue435. * twisted/test/process_fds.py: new child process for FDTest * doc/howto/process.xhtml: document childFDs argument, add example 2004-01-04 Itamar Shtull-Trauring * twisted/internet/gladereactor.py: logs all network traffic for TCP/SSL/Unix sockets, allowing traffic to be displayed. 2004-01-04 Dave Peticolas * twisted/test/test_enterprise.py: test deleting rows not in cache * twisted/enterprise/reflector.py: deleted rows don't have to be in cache * doc/examples/row_example.py: use KeyFactory from row_util * doc/examples/row_util.py: add KeyFactory 2003-12-31 Brian Warner * twisted/internet/defer.py (Deferred.setTimeout): if the Deferred has already been called, don't bother with the timeout. This happens when trial.util.deferredResult is used with a timeout argument and the Deferred was created by defer.succeed(). * twisted/test/test_defer.py (DeferredTestCase.testImmediateSuccess2): test for same 2003-12-31 Jp Calderone * twisted/protocols/ident.py: Client and server ident implementation * twisted/test/test_ident.py: Test cases for ident protocol 2003-12-29 Jp Calderone * twisted/spread/pb.py: Changed PBServerFactory to use "protocol" instance attribute for Broker creation. 2003-12-26 Itamar Shtull-Trauring * twisted/web/server.py: display of tracebacks on web pages can now be disabled by setting displayTracebacks to False on the Site or by using applicable tap option. Woven does not yet use this attribute. 2003-12-23 Itamar Shtull-Trauring * twisted/web/client.py: if Host header is passed, use that instead of extracting from request URL. 2003-12-14 Dave Peticolas * twisted/test/test_enterprise.py: Frederico Di Gregorio's patch adding a psycopg test case. 2003-12-09 Christopher Armstrong * .: Releasing Twisted 1.1.1, based on rc4. 2003-12-06 Itamar Shtull-Trauring * twisted/internet/wxreactor.py: Added experimental wxPython reactor, which seems to work better than the twisted.internet.wxsupport. 2003-12-05 Paul Swartz * twisted/conch/ssh/filetransfer.py, session.py: added SFTPv3 support to the Conch server. 2003-12-04 Christopher Armstrong * .: Releasing Twisted 1.1.1rc4, based on rc2. rc3 never happened! 2003-12-04 Brian Warner * twisted/persisted/sob.py (Persistent): fix misspelled class name, add compatibility binding to "Persistant" (sic). * twisted/test/test_sob.py: use Persistent * twisted/application/service.py (Application): use Persistent 2003-12-03 Jp Calderone * twisted/protocols/imap4.py: Added support for the IDLE command (RFC 2177). 2003-12-03 Jp Calderone * twisted/python/log.py: Added exception handling to log publishing code. Observers which raise exceptions will now be removed from the observer list. 2003-12-02 Jp Calderone * .: Releasing Twisted 1.1.1rc3. 2003-12-01 Christopher Armstrong * .: Releasing Twisted 1.1.1rc2 (from CVS HEAD). 2003-12-01 Jp Calderone * twisted/python/runtime.py: Added seconds method to Platform class. * twisted/internet/base.py, twisted/internet/task.py: Changed use of time.time() to use Platform.seconds() instead. 2003-11-24 Jp Calderone * twisted/internet/abstract.py: Changed FileDescriptor's registerProducer method to immediately call the given producer's stopProducing method if the FileDescriptor is in the process of or has finished disconnecting. 2003-11-24 Jp Calderone * twisted/protocols/imap4.py: Fix incorrect behavior of closing the mailbox in response to an EXPUNGE command. 2003-11-21 Jp Calderone * twisted/trial/runner.py: Added missing calls to setUpClass and tearDownClass in SingletonRunner. 2003-11-21 Christopher Armstrong * .: Releasing Twisted 1.1.1rc1. 2003-11-20 Jp Calderone * twisted/protocols/imap4.py: Fixed incorrect generation of INTERNALDATE information. 2003-11-20 Jp Calderone * twisted/internet/abstract.py: Added an assert to FileDescriptor.resumeProducing to prevent it from being called when the transport is no longer connected. 2003-11-20 Jp Calderone * twisted/internet/tasks.py: LoopingCall added. 2003-10-14 Itamar Shtull-Trauring * twisted/internet/tasks.py: Deprecated scheduling API removed. 2003-11-18 Jonathan Simms * twisted/protocols/ftp.py: refactored to add cred support, pipelining, security. * twisted/test/test_ftp.py: tests for the new ftp 2003-11-18 Sam Jordan * twisted/protocols/msn.py: support for MSNP8 * doc/examples/msn_example.py: small msn example 2003-11-13 Paul Swartz * twisted/conch/ssh/agent.py: support for the OpenSSH agent protocol * twisted/conch/ssh/connection.py: fix broken channel retrieval code * twisted/conch/ssh/userauth.py: refactoring to allow use of the agent * twisted/conch/ssj/transport.py: fix intermittent test failure * twisted/internet/protocol.py: add UNIX socket support to ClientCreator * twisted/scripts/conch.py: use the key agent if available, also agent forwarding 2003-11-07 Brian Warner * twisted/application/app.py (getApplication): provide a more constructive error message when a .tac file doesn't define 'application'. Closes issue387. 2003-11-01 Paul Swartz * twisted/conch/ssh/common.py: use GMPy for faster math if it's available 2003-10-24 Christopher Armstrong * .: Releasing Twisted 1.1.0 final. Same codebase as rc2. 2003-10-24 Brian Warner * doc/howto/test-standard.xhtml: Add section on how to clean up. * twisted/test/test_conch.py: improve post-test cleanup. Addresses problems seen in issue343. * twisted/internet/base.py (ReactorBase.callLater): prefix "internal" parameter names with an underscore, to avoid colliding with named parameters in the user's callback invocation. Closes issue347. (ReactorBase.addSystemEventTrigger) (ReactorBase.callWhenRunning) (ReactorBase.callInThread): same * doc/howto/coding-standard.xhtml (Callback Arguments): explain why 2003-10-22 Christopher Armstrong * .: Releasing Twisted 1.1.0rc2. 2003-10-21 Andrew Bennetts * twisted/lore/tree.py, twisted/lore/lint.py, doc/howto/stylesheet.css: add a plain 'listing' class, for file listings that aren't python source or HTML. This has slightly changed the classes in the generated HTML, so custom stylesheets may need updating. 2003-10-16 Christopher Armstrong * .: Releasing Twisted 1.1.0alpha3. 2003-10-16 Brian Warner * doc/howto/pb-cred.xhtml: update for newcred. Closes issue172. 2003-10-15 Brian Warner * twisted/internet/base.py: add optional debug code, enabled with base.DelayedCall.debug=True . If active, the call stack which invoked reactor.callLater will be recorded in each DelayedCall. If an exception happens when the timer function is run, the creator stack will be logged in addition to the usual log.deferr(). * twisted/internet/defer.py: add some optional debug code, enabled with defer.Deferred.debug=True . If active, it will record a stack trace when the Deferred is created, and another when it is first invoked. AlreadyCalledErrors will be given these two stack traces, making it slightly easier to find the source of the problem. 2003-10-15 Christopher Armstrong * .: Releasing Twisted 1.1.0alpha2 (alpha1 was dead in the water). 2003-10-15 Brian Warner * setup.py: remove cReactor/ to the sandbox. Closes issue318. 2003-10-14 Itamar Shtull-Trauring * twisted/web/static.py: registry no longer has support for getting services based on their interfaces. 2003-10-14 Christopher Armstrong * .: Releasing Twisted 1.1.0alpha1. 2003-10-13 Bob Ippolito * doc/howto/choosing-reactor.xhtml: Added cfreactor/Cocoa information. * doc/examples/cocoaDemo: Removed, replaced by doc/examples/Cocoa cfreactor demos. * doc/examples/Cocoa: Moved from sandbox/etrepum/examples/PyObjC, cleaned up. * twisted/internet/cfsupport, twisted/internet/cfreactor.py: Moved from sandbox/etrepum, cleaned up. * twisted/application/app.py: Added 'cf' -> twisted.internet.cfreactor to reactorTypes * setup.py: sys.platform=='darwin' - build cfsupport, do not build cReactor. * INSTALL: Changed URL of pimp repository to shorter version. 2003-10-12 Jp Calderone * bin/tktwistd, twisted/scripts/tktwistd.py, doc/man/tktwistd.1: Removed. 2003-10-12 Itamar Shtull-Trauring * twisted/spread/pb.py: Perspective Broker no longer sends detailed tracebacks over the wire unless the "unsafeTracebacks" attribute is set of the factory. 2003-10-02 Jp Calderone * setup.py, twisted/test/test_dir.py, twisted/python/_c_dir.c: Removed _c_dir extension module for portability and maintenance reasons. 2003-10-03 Moshe Zadka * twisted/spread/util.py twisted/test/test_spread.py: Fix issue 286 2003-10-01 Brian Warner * twisted/web/client.py (HTTPDownloader): accept either a filename or a file-like object (it must respond to .write and .close, and partial requests will not be used with file-like objects). errback the deferred if an IOError occurs in .open, .write. or .close, usually something like "permission denied" or "file system full". Closes issue234. * twisted/test/test_webclient.py (WebClientTestCase.write): verify that the errback gets called * twisted/scripts/trial.py (run): add --until-failure option to re-run the test until something fails. Closes issue87. 2003-09-30 Brian Warner * twisted/test/test_conch.py (testOurServerOpenSSHClient): replace reactor.run() with .iterate calls: when using .run, exceptions in the server cause a hang. 2003-9-29 Moshe Zadka * twisted/tap/procmon.py twisted/plugins.tml: remove procmon tap. It was crufty and hard to port properly to new application. 2003-09-29 Brian Warner * twisted/scripts/trial.py (Options.opt_reactor): make trial accept the same reactor-name abbreviations as twistd does. Closes issue69. (top): add test-case-name tag * doc/man/trial.1: document the change 2003-09-28 Christopher Armstrong * .: Releasing Twisted 1.0.8alpha3. 2003-09-27 Cory Dodt * win32/main.aap win32/pyx.x-foo.iss.template win32/README.win32: Be nice to people who don't install Python for "All Users" on win32. 2003-9-18 Moshe Zadka * twisted/application/strports.py twisted/test/test_strports.py: New API/mini-language for defining ports 2003-9-18 Moshe Zadka * twisted/web/spider.py: removed, it was unmaintained. 2003-09-19 Christopher Armstrong * twisted/names/authority.py twisted/test/test_names.py twisted/protocols/dns.py: Client and server support for TTLs on all records. All Record_* types now take a ttl= keyword argument. You can pass the ttl= argument to all the record classes in your pyzones, too. 2003-09-19 Moshe Zadka * twisted/application/__init__.py twisted/application/app.py twisted/application/compat.py twisted/application/internet.py twisted/application/service.py twisted/scripts/twistd.py twisted/scripts/twistw.py twisted/scripts/mktap.py twisted/scripts/tapconvert.py bin/twistw: Update to new-style applications. 2003-09-19 Jp Calderone * twisted/names/client.py: Instantiation of theResolver global made lazy. As a result importing it directly will now fail if it has not yet been created. It should not be used directly anymore; instead, use the module-scope lookup methods, or instantiate your own resolver. * twisted/mail/relaymanager.py: Instantiation of MXCalculator made lazy. 2003-09-18 Stephen Thorne * twisted/web/distrib.py: Removed dependancy on twisted.web.widgets, and instead using woven. 2003-09-18 Stephen Thorne * doc/howto/woven-reference.html: Added this new documentation file. * doc/howto/index.html: Added woven-reference to index * admin/: Added woven-reference.tex to book.tex 2003-09-18 Stephen Thorne * twisted/web/woven/widgets.py: Stop the 'Option' widget from having a name="" attribute. Closes issue255. 2003-09-16 Christopher Armstrong * .: Releasing Twisted 1.0.8alpha1. * .: Releasing Twisted 1.0.8alpha2 (Fixed Debian packages). 2003-09-13 Christopher Armstrong * .: Releasing Twisted 1.0.7 (no code changes since 1.0.7rc1). * twisted/web/vhost.py: Un-gobble the path segment that a vhost eats when the resource we're wrapping isLeaf. Potentially closes issue125. 2003-09-12 Itamar Shtull-Trauring * twisted/web/microdom.py: lenient mode correctly handles