<feed xmlns='http://www.w3.org/2005/Atom'>
<title>mailman.git/Mailman/Queue, branch master</title>
<subtitle>The GNU Mailing List manager.
</subtitle>
<id>https://git.neuromancer.sk/mailman.git/atom?h=master</id>
<link rel='self' href='https://git.neuromancer.sk/mailman.git/atom?h=master'/>
<link rel='alternate' type='text/html' href='https://git.neuromancer.sk/mailman.git/'/>
<updated>2007-09-29T18:55:25Z</updated>
<entry>
<title>Reorganize the qrunner infrastructure.  First, the package has been renamed</title>
<updated>2007-09-29T18:55:25Z</updated>
<author>
<name>Barry Warsaw</name>
</author>
<published>2007-09-29T18:55:25Z</published>
<link rel='alternate' type='text/html' href='https://git.neuromancer.sk/mailman.git/commit/?id=3e9ed398b6a05c69daca14c8226ca7f57c164c21'/>
<id>urn:sha1:3e9ed398b6a05c69daca14c8226ca7f57c164c21</id>
<content type='text'>
from Mailman.Queue to Mailman.queue (note the case change to be more PEP 8
compliant).

The Switchboard and Runner classes have been moved into the package
__init__.py and the previous class modules have been removed.

The switchboard cache is removed; I don't think it was ultimately buying us
much.  Now, just import the Switchboard class and instantiate it directly.

Added an IRunner interface.

Renamed the ArchRunner to ArchiveRunner.

bin/qrunner and bin/mailmanctl are updated accordingly.  For the former, it no
long accepts -r=All to run all qrunners.  You can still use the short name
(e.g. --runner=incoming) to run the built-in queue runners, but this design
will eventually allow for plugin qrunners by allowing them to be run
specifying the full package path to the class.  It also now accepts a leading
dot to indicate a qrunner class relative to the Mailman.queue package.
</content>
</entry>
<entry>
<title>qrunner, mailmanctl and various other repairs.</title>
<updated>2007-09-29T15:09:14Z</updated>
<author>
<name>Barry Warsaw</name>
</author>
<published>2007-09-29T15:09:14Z</published>
<link rel='alternate' type='text/html' href='https://git.neuromancer.sk/mailman.git/commit/?id=cbf2967239163e42cc2b25eece7bb5cb71b197fe'/>
<id>urn:sha1:cbf2967239163e42cc2b25eece7bb5cb71b197fe</id>
<content type='text'>
The convenience methods in Defaults for getting seconds, minutes, hours, and
days now returns a subtype of timedelta, which provides conversion to float
and int for compatibility with interfaces that require those values
(e.g. signal.alarm() and time.sleep().

In bin/make_instance, the var_dir really needs to be an absolute path,
otherwise it's possible to get a var dir nested inside the var dir.

More MailList object eradication.
</content>
</entry>
<entry>
<title>Repair the test suite.</title>
<updated>2007-09-28T02:33:04Z</updated>
<author>
<name>Barry Warsaw</name>
</author>
<published>2007-09-28T02:33:04Z</published>
<link rel='alternate' type='text/html' href='https://git.neuromancer.sk/mailman.git/commit/?id=773980eb727b98c902b93894cafcd6bc7d22510d'/>
<id>urn:sha1:773980eb727b98c902b93894cafcd6bc7d22510d</id>
<content type='text'>
</content>
</entry>
<entry>
<title>OMGW00T: After over a decade, the MailList mixin class is gone!  Well,</title>
<updated>2007-09-21T12:51:38Z</updated>
<author>
<name>Barry Warsaw</name>
</author>
<published>2007-09-21T12:51:38Z</published>
<link rel='alternate' type='text/html' href='https://git.neuromancer.sk/mailman.git/commit/?id=65c64773d910b3b2a3e2a9b9db4669e57170ece2'/>
<id>urn:sha1:65c64773d910b3b2a3e2a9b9db4669e57170ece2</id>
<content type='text'>
mostly.  It's no longer needed by anything in the test suite, and
therefore the list manager returns database MailingList objects
directly.  The wrapper cruft has been removed.

To accomplish this, a couple of hacks were added to the Mailman.app
package, which will get cleaned up over time.  The MailList module
itself (and its few remaining mixins) aren't yet removed from the tree
because some of the code is still not tested, and I want to leave this
code around until I've finished converting it.
</content>
</entry>
<entry>
<title>Implement a context manager for Python 2.5's with statement, which is</title>
<updated>2007-09-19T11:28:58Z</updated>
<author>
<name>Barry Warsaw</name>
</author>
<published>2007-09-19T11:28:58Z</published>
<link rel='alternate' type='text/html' href='https://git.neuromancer.sk/mailman.git/commit/?id=4c517789fa8b29d2a23791e6f390d9f1173c3125'/>
<id>urn:sha1:4c517789fa8b29d2a23791e6f390d9f1173c3125</id>
<content type='text'>
used where we used to do a try/except to temporarily change the global
translation language.  This makes the code shorter and cleaner.  E.g.

with i18n.using_language(another_language):
    # do something
</content>
</entry>
<entry>
<title>Refactor IDatabase interface so that the user_manager, list_manager,</title>
<updated>2007-08-02T14:47:56Z</updated>
<author>
<name>Barry Warsaw</name>
</author>
<published>2007-08-02T14:47:56Z</published>
<link rel='alternate' type='text/html' href='https://git.neuromancer.sk/mailman.git/commit/?id=ec734fab4791c107610caf73931e570b2d1b6bd0'/>
<id>urn:sha1:ec734fab4791c107610caf73931e570b2d1b6bd0</id>
<content type='text'>
message_store, and pendings 'databases' hang off the IDatabase object attached
to the config object.  For IPending, no adaptation is necessary.
</content>
</entry>
<entry>
<title>Repair some test suite regressions.</title>
<updated>2007-08-01T21:05:06Z</updated>
<author>
<name>Barry Warsaw</name>
</author>
<published>2007-08-01T21:05:06Z</published>
<link rel='alternate' type='text/html' href='https://git.neuromancer.sk/mailman.git/commit/?id=b2ce38ca3bf73010794860e969f6006ce632f151'/>
<id>urn:sha1:b2ce38ca3bf73010794860e969f6006ce632f151</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Move the pending database into the SQLAlchemy/Elixir layer.  The old</title>
<updated>2007-08-01T20:11:08Z</updated>
<author>
<name>Barry Warsaw</name>
</author>
<published>2007-08-01T20:11:08Z</published>
<link rel='alternate' type='text/html' href='https://git.neuromancer.sk/mailman.git/commit/?id=f8a6c46455a409125dcc0fcace7d7116898b0319'/>
<id>urn:sha1:f8a6c46455a409125dcc0fcace7d7116898b0319</id>
<content type='text'>
Pending.py module is removed.  Added an interface to this functionality such
that any IPendable (essentially a key/value mapping) can be associated with a
token, and that token can be confirmed and has a lifetime.  Any keys and
values can be stored, as long as both are unicodes.

Added a doctest.

Modified initialization of the database layer to support pluggability via
setuptools.  No longer is this layer initialized from a module, but now it's
instantiated from a class that implements IDatabase.  The StockDatabase class
implements the SQLAchemy/Elixir layer, but this can be overridden in a
setup.py.  Bye bye MANAGERS_INIT_FUNCTION, we hardly knew ye.

Added a package Mailman.app which will contain certain application specific
functionality.  Right now, the only there there is an IRegistar
implementation, which didn't seem to fit anywhere else.

Speaking of which, the IRegistrar interface implements all the logic related
to registration and verification of email addresses.  Think the equivalent of
MailList.AddMember() except generalized out of a mailing list context.  This
latter will eventually go away.  The IRegistrar sends the confirmation email.

Added an IDomain interface, though the only implementation of this so far
lives in the registration.txt doctest.  This defines the context necessary for
domain-level things, like address confirmation.

A bunch of other cleanups in modules that are necessary due to the refactoring
of Pending, but don't affect anything that's actually tested yet, so I won't
vouch for them (except that they don't throw errors on import!).

Clean up Defaults.py; also turn the functions seconds(), minutes(), hours()
and days() into their datetime.timedelta equivalents.

Consolidated the bogus email address exceptions.

In some places where appropriate, use email 4.0 module names instead of the
older brand.

Switch from Mailman.Utils.unique_message_id() to email.utils.make_msgid()
everywhere.  This is because we need to allow sending not in the context of a
mailing list (i.e. domain-wide address confirmation message).  So we can't use
a Message-ID generator that requires a mailing list.  OTOH, this breaks
Message-ID collision detection in the mail-&gt;news gateway.  I'll fix that
eventually.

Remove the 'verified' row on the Address table.  Now verification is checked
by Address.verified_on not being None.
</content>
</entry>
<entry>
<title>The start of a setuptools conversion.  All the Makefile.in and autoconf</title>
<updated>2007-07-13T04:19:10Z</updated>
<author>
<name>Barry Warsaw</name>
</author>
<published>2007-07-13T04:19:10Z</published>
<link rel='alternate' type='text/html' href='https://git.neuromancer.sk/mailman.git/commit/?id=288ae405b09baa443eb1b39422c48c315fbb2e5a'/>
<id>urn:sha1:288ae405b09baa443eb1b39422c48c315fbb2e5a</id>
<content type='text'>
artifacts are removed, as is the C files which we will no longer need.
</content>
</entry>
<entry>
<title>Convert failing test_message.py to doctests bounces.txt and message.txt, which</title>
<updated>2007-07-02T03:31:21Z</updated>
<author>
<name>Barry Warsaw</name>
</author>
<published>2007-07-02T03:31:21Z</published>
<link rel='alternate' type='text/html' href='https://git.neuromancer.sk/mailman.git/commit/?id=8e1e73e9499dc11a98126f964225895578306965'/>
<id>urn:sha1:8e1e73e9499dc11a98126f964225895578306965</id>
<content type='text'>
of course now succeed.

Rename Bouncer.py's BounceMessage() method to bounce_message() and remove the
'msgdata' parameter, which wasn't being used.  Change the RejectNotice
exception class to expose .notice directly, as there's no reason for this to
be an accessor or property.

Move the coverage.py installation to the install-packages target instead of
the install-other target, so that it only gets installed once the pythonlib
directory is created.
</content>
</entry>
</feed>
