<feed xmlns='http://www.w3.org/2005/Atom'>
<title>mailman.git/src/mailman/interfaces, branch pluggable-components</title>
<subtitle>The GNU Mailing List manager.
</subtitle>
<id>https://git.neuromancer.sk/mailman.git/atom?h=pluggable-components</id>
<link rel='self' href='https://git.neuromancer.sk/mailman.git/atom?h=pluggable-components'/>
<link rel='alternate' type='text/html' href='https://git.neuromancer.sk/mailman.git/'/>
<updated>2017-08-07T15:39:07Z</updated>
<entry>
<title>Add REST-ability to plugins.</title>
<updated>2017-08-07T15:39:07Z</updated>
<author>
<name>J08nY</name>
</author>
<published>2017-06-01T18:53:53Z</published>
<link rel='alternate' type='text/html' href='https://git.neuromancer.sk/mailman.git/commit/?id=a665dccf9404d6f95d8a4587f05d748b504e1f9d'/>
<id>urn:sha1:a665dccf9404d6f95d8a4587f05d748b504e1f9d</id>
<content type='text'>
 - Adds the rest_object method to the IPlugin interface. This method
   is called by the REST api to route requests to the plugin's REST
   api. All attributes are proxied, so the object becomes a true
   REST object in the ObjectRouter hierarchy. For example see the
   RESTExample and ExamplePlugin classes in mailman.testing.plugin.
   The plugin might return None from this method, in which case
   all calls to it's REST api route will return 404 NotFound.

 - Adds new routes to the REST api. For version &gt;= 3.1:

   - /3.1/plugins
     Returns a dictionary with plugin names as keys, and their configs
     as values.

   - /3.1/plugins/&lt;plugin_name&gt;
	 Proxies everything to plugin's rest_object, if plugin with such
     name exists and provides a non-null rest_object, else NotFound.
</content>
</entry>
<entry>
<title>Add per-plugin hooks, add docs about plugins.</title>
<updated>2017-08-07T15:39:07Z</updated>
<author>
<name>J08nY</name>
</author>
<published>2017-06-01T13:46:48Z</published>
<link rel='alternate' type='text/html' href='https://git.neuromancer.sk/mailman.git/commit/?id=0d4f53b51892866b5cc85ace229b23f4b9bac896'/>
<id>urn:sha1:0d4f53b51892866b5cc85ace229b23f4b9bac896</id>
<content type='text'>
 - Removes pre_hook, post_hook and ext_dir. With the latter being
   unused. Warns on startup if the hooks are present in config.

 - Adds IPlugin interface with pre_hook and post_hook methods.

 - Adds 'class' config parameter to plugins, which can be set to
   a class implementing the IPlugin interface, it will be
   initialized once on Mailman's startup, then before the DB
   setup the pre_hook will be run, after DB and other components
   the post_hook will be run. Plugin instances are stored in the
   config.plugins dict, with keys being their configuration section
   names.
</content>
</entry>
<entry>
<title>Rename metadata key for clarity</title>
<updated>2017-08-04T01:13:04Z</updated>
<author>
<name>Barry Warsaw</name>
</author>
<published>2017-08-04T01:13:04Z</published>
<link rel='alternate' type='text/html' href='https://git.neuromancer.sk/mailman.git/commit/?id=9cdcffbc1189a19bc2963cf3d5c86a3d4f1f24a6'/>
<id>urn:sha1:9cdcffbc1189a19bc2963cf3d5c86a3d4f1f24a6</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Convert to click for CLI options</title>
<updated>2017-07-22T03:02:05Z</updated>
<author>
<name>Barry Warsaw</name>
</author>
<published>2017-07-22T03:02:05Z</published>
<link rel='alternate' type='text/html' href='https://git.neuromancer.sk/mailman.git/commit/?id=f00b94f18e1d82d1488cbcee6053f03423bc2f49'/>
<id>urn:sha1:f00b94f18e1d82d1488cbcee6053f03423bc2f49</id>
<content type='text'>
</content>
</entry>
<entry>
<title>IListManager.get() now accepts both List-IDs and FQDN list names.</title>
<updated>2017-06-24T21:57:16Z</updated>
<author>
<name>Barry Warsaw</name>
</author>
<published>2017-06-24T21:57:16Z</published>
<link rel='alternate' type='text/html' href='https://git.neuromancer.sk/mailman.git/commit/?id=e8b134b8f34a8226dd512ecc96a6c908d712663b'/>
<id>urn:sha1:e8b134b8f34a8226dd512ecc96a6c908d712663b</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Moved InvalidListNameError class definition to mailman.interfaces.mailinglist.</title>
<updated>2017-02-21T02:36:36Z</updated>
<author>
<name>Mark Sapiro</name>
</author>
<published>2017-02-21T02:36:36Z</published>
<link rel='alternate' type='text/html' href='https://git.neuromancer.sk/mailman.git/commit/?id=5d2883cb22e36bc8fe1275ae911b2fd97e6e9da1'/>
<id>urn:sha1:5d2883cb22e36bc8fe1275ae911b2fd97e6e9da1</id>
<content type='text'>
Added more documentation on config.mailman.listname_chars.
Made a couple of minor tweaks.
</content>
</entry>
<entry>
<title>Handle PEP 475 fallout.</title>
<updated>2017-01-28T18:19:58Z</updated>
<author>
<name>Barry Warsaw</name>
</author>
<published>2017-01-28T18:17:25Z</published>
<link rel='alternate' type='text/html' href='https://git.neuromancer.sk/mailman.git/commit/?id=7c97e8fbdb90a1a0de1526d7a6f108e95415d6a0'/>
<id>urn:sha1:7c97e8fbdb90a1a0de1526d7a6f108e95415d6a0</id>
<content type='text'>
Closes #255

As of Python 3.5, PEP 475 gets in our way.  Runners with long time.sleep()'s
in their _snooze() method (e.g. the retry runner) will have their system call
implemented time.sleep() automatically retried at the C layer.  The only
reliable way to prevent this is to raise an exception in the signal handler.
The standard run() method automatically suppresses this exception, meaning,
it's caught and ignored, but effectively breaks the run() loop, which is just
what we want.

The lmtp and rest runners implement their own run loops, so they also have to
handle this exception, by ignoring it.
</content>
</entry>
<entry>
<title>Delete subscription requests when a mailing list is deleted.</title>
<updated>2017-01-09T04:21:15Z</updated>
<author>
<name>Barry Warsaw</name>
</author>
<published>2017-01-09T04:21:15Z</published>
<link rel='alternate' type='text/html' href='https://git.neuromancer.sk/mailman.git/commit/?id=a01ef2bac4d52da67e4be1fccc2634086aaa03e3'/>
<id>urn:sha1:a01ef2bac4d52da67e4be1fccc2634086aaa03e3</id>
<content type='text'>
Closes #214
</content>
</entry>
<entry>
<title>Bump copyright years.</title>
<updated>2017-01-04T15:30:17Z</updated>
<author>
<name>Barry Warsaw</name>
</author>
<published>2017-01-04T15:30:17Z</published>
<link rel='alternate' type='text/html' href='https://git.neuromancer.sk/mailman.git/commit/?id=8180990a2ed053f6e4880f93a75acd9845631793'/>
<id>urn:sha1:8180990a2ed053f6e4880f93a75acd9845631793</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Make code style review pass.</title>
<updated>2017-01-04T05:26:59Z</updated>
<author>
<name>Barry Warsaw</name>
</author>
<published>2017-01-04T05:26:59Z</published>
<link rel='alternate' type='text/html' href='https://git.neuromancer.sk/mailman.git/commit/?id=4afccbf0b1800eec6042bbe4f6dcc300165184ad'/>
<id>urn:sha1:4afccbf0b1800eec6042bbe4f6dcc300165184ad</id>
<content type='text'>
</content>
</entry>
</feed>
