<feed xmlns='http://www.w3.org/2005/Atom'>
<title>mailman.git/src/mailman/utilities, branch plugin</title>
<subtitle>The GNU Mailing List manager.
</subtitle>
<id>https://git.neuromancer.sk/mailman.git/atom?h=plugin</id>
<link rel='self' href='https://git.neuromancer.sk/mailman.git/atom?h=plugin'/>
<link rel='alternate' type='text/html' href='https://git.neuromancer.sk/mailman.git/'/>
<updated>2017-08-07T17:00:49Z</updated>
<entry>
<title>Merge branch 'pluggable-workflows' into plugin</title>
<updated>2017-08-07T17:00:49Z</updated>
<author>
<name>J08nY</name>
</author>
<published>2017-08-07T17:00:49Z</published>
<link rel='alternate' type='text/html' href='https://git.neuromancer.sk/mailman.git/commit/?id=ee9da27283ffb7adc836f764f1442cd06e3fb2a5'/>
<id>urn:sha1:ee9da27283ffb7adc836f764f1442cd06e3fb2a5</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Migrate the [un]subscription_policy attribute.</title>
<updated>2017-08-07T16:18:00Z</updated>
<author>
<name>J08nY</name>
</author>
<published>2017-07-04T23:07:37Z</published>
<link rel='alternate' type='text/html' href='https://git.neuromancer.sk/mailman.git/commit/?id=6c621405c88671a58ef24cd84a9bd74ca324207e'/>
<id>urn:sha1:6c621405c88671a58ef24cd84a9bd74ca324207e</id>
<content type='text'>
 - This is quite a huge commit, since it changes the type of the
   MailingList.subscription_policy and unsubscription_policy
   attributes to the new names of pluggable workflows, in all
   occurences.
 - Also adds a migration to migrate the attributes to the new types.
 - Adds tests for the migration.
</content>
</entry>
<entry>
<title>Instantiate components only in add_components, not at lower levels.</title>
<updated>2017-08-07T16:14:00Z</updated>
<author>
<name>J08nY</name>
</author>
<published>2017-07-04T19:18:23Z</published>
<link rel='alternate' type='text/html' href='https://git.neuromancer.sk/mailman.git/commit/?id=00f52639673dc4db32ac9302e2a70483492d621e'/>
<id>urn:sha1:00f52639673dc4db32ac9302e2a70483492d621e</id>
<content type='text'>
 - The scan_module and find_components functions are also useful
   when they don't instantiate the components they load, and
   instantiation is left to add_components.
</content>
</entry>
<entry>
<title>Fix coverage, deprecate, but run non-plugin (post|pre)_hooks.</title>
<updated>2017-08-07T15:39:08Z</updated>
<author>
<name>J08nY</name>
</author>
<published>2017-07-25T19:44:54Z</published>
<link rel='alternate' type='text/html' href='https://git.neuromancer.sk/mailman.git/commit/?id=8addebbf9802e911c06f6a27b7ffff1e0f1d2e57'/>
<id>urn:sha1:8addebbf9802e911c06f6a27b7ffff1e0f1d2e57</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Don't fail when plugins pre_hook or post_hook fails.</title>
<updated>2017-08-07T15:39:08Z</updated>
<author>
<name>J08nY</name>
</author>
<published>2017-06-19T13:04:12Z</published>
<link rel='alternate' type='text/html' href='https://git.neuromancer.sk/mailman.git/commit/?id=0923455ba337fa734f89b3be72bb7fde061dcc91'/>
<id>urn:sha1:0923455ba337fa734f89b3be72bb7fde061dcc91</id>
<content type='text'>
 - Catches all exceptions raised when running a plugins (pre|post)
   _hooks. If its pre_hook raises an exception, the plugin is disabled
   and removed, so its post_hook will not be run and its components
   will not be loaded. If its post_hook raises an exception we just
   continue and hope for the best.
</content>
</entry>
<entry>
<title>Make config.plugin_configs yield a dict with plugin names.</title>
<updated>2017-08-07T15:39:08Z</updated>
<author>
<name>J08nY</name>
</author>
<published>2017-06-06T13:51:10Z</published>
<link rel='alternate' type='text/html' href='https://git.neuromancer.sk/mailman.git/commit/?id=a2668307017e8b3a0c705e5cff49a8fa7dbeac7d'/>
<id>urn:sha1:a2668307017e8b3a0c705e5cff49a8fa7dbeac7d</id>
<content type='text'>
 - Allows to better loop over pluging configs and their names.
</content>
</entry>
<entry>
<title>Add pluggable components.</title>
<updated>2017-08-07T15:39:07Z</updated>
<author>
<name>J08nY</name>
</author>
<published>2017-05-31T00:09:09Z</published>
<link rel='alternate' type='text/html' href='https://git.neuromancer.sk/mailman.git/commit/?id=38a86adcdb78c1944c26a5ab8deddff619b33bcf'/>
<id>urn:sha1:38a86adcdb78c1944c26a5ab8deddff619b33bcf</id>
<content type='text'>
 - Adds the notion of a 'plugin'.
   - A plugin has a package path and a flag specifying whether
     it's enabled or not.

 - Adds a find_pluggable_components function similar to the
   find_components one. This one dynamically searches not only
   the mailman package but all of plugins.
   - e.g. find_pluggable_components('rules', IRule) finds
     all IRule components in mailman.rules but also in
     example_plugin.rules for plugin names example_plugin.

 - Uses the find_pluggable_components function in place of
   find_components when searching for Rules, Handlers, Chains,
   EmailCommands, and Styles.
</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>Provide a better way to avoid instantiating some components</title>
<updated>2017-06-17T03:33:38Z</updated>
<author>
<name>Barry Warsaw</name>
</author>
<published>2017-06-17T03:33:38Z</published>
<link rel='alternate' type='text/html' href='https://git.neuromancer.sk/mailman.git/commit/?id=88f40ac0add14cc9e7c106c5e2e9ec3d6f73df6e'/>
<id>urn:sha1:88f40ac0add14cc9e7c106c5e2e9ec3d6f73df6e</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Enforce a stricter coding style.</title>
<updated>2017-01-27T00:56:34Z</updated>
<author>
<name>Barry Warsaw</name>
</author>
<published>2017-01-27T00:56:34Z</published>
<link rel='alternate' type='text/html' href='https://git.neuromancer.sk/mailman.git/commit/?id=99671bec296123d2934d690557494233f349fc8f'/>
<id>urn:sha1:99671bec296123d2934d690557494233f349fc8f</id>
<content type='text'>
</content>
</entry>
</feed>
