{ "info": { "author": "Cameron Simpson", "author_email": "cs@cskk.id.au", "bugtrack_url": null, "classifiers": [ "Development Status :: 4 - Beta", "Intended Audience :: Developers", "License :: OSI Approved :: GNU General Public License v3 or later (GPLv3+)", "Operating System :: OS Independent", "Programming Language :: Python", "Programming Language :: Python :: 2", "Programming Language :: Python :: 3", "Topic :: Communications :: Email :: Filters" ], "description": "*Latest release 20191006*:\nUpdate for recent cs.deco.cachedmethod rename.\n\nMailfiler is my email message filing system.\n\nIt monitors multiple Maildir folders for new messages\nand files them according to various easy to write rules.\nIts use is described fully in the mailfiler(1cs) manual entry.\n\nThe rules files are broadly quite simple and described fully\nin the mailfiler(5cs) manual entry.\nThe rules are normally single line rules of the form:\n\n target,... label condition\n\nIf the rule should always fire\nthen the condition may be omitted.\n\nThe targets may be\nmail folders (file the message in the named folder),\nassignment statements (set an environment variable),\nemail addresses (send the message to the specified address)\nor some other special purpose actions.\n\nThe conditions are usually tests of the header email addresses\nincluding whether an address is a member of some group/alias\nbut may also test various other things about the message headers.\n\n## Class `Condition_AddressMatch`\n\nMRO: `_Condition`, `cs.obj.O` \nA condition testing for the presence of an address.\n\n## Class `Condition_HeaderFunction`\n\nMRO: `_Condition`, `cs.obj.O` \nA condition testing the contents of a header.\n\n## Class `Condition_InGroups`\n\nMRO: `_Condition`, `cs.obj.O` \nA condition testing messages addresses against address groups.\n\n## Class `Condition_Regexp`\n\nMRO: `_Condition`, `cs.obj.O` \nA condition testing headers against a regular expression.\n\n## Function `current_value(envvar, cfg, cfg_key, default, environ)`\n\nCompute a configurable path value on the fly.\n\n## Function `FilterReport(rule, matched, saved_to, ok_actions, failed_actions)`\n\nCreate a FilterReport object.\n\nParameters:\n* `rule`: the `Rule` on which to report\n* `matched`: whether the rule was matched\n* `saved_to`: where messages were filed\n* `ok_actions`: actions which succeeded\n* `failed_actions`: actions which failed\n\n## Function `get_target(s, offset, quoted=False)`\n\nParse a single target specification from a string; return Target and new offset.\n\nParameters:\n* `s`: the string to parse\n* `offset`: the starting offset of the parse\n* `quoted`: if true then the parser is already inside quotes:\n do not expect comma or whitespace to end the target specification.\n Default: `False`\n\n## Function `get_targets(s, offset)`\n\nParse list of targets from the string `s` starting at `offset`.\nReturn the list of Targets strings and the new offset.\n\n## Function `maildir_from_name(mdirname, maildir_root, maildir_cache)`\n\nReturn the Maildir derived from mdirpath.\n\n## Class `MailFiler`\n\nMRO: `cs.obj.O` \nA mail filer.\n\n### Method `MailFiler.__init__(self, config_path, environ=None)`\n\nInitialise the MailFiler.\n\nParameters:\n* `config_path`: location of config file, default from `DEFAULT_MAILFILER_RC`.\n* `environ`: initial environment, default from `os.environ`.\n\n## Function `main(argv=None, stdin=None)`\n\nMailfiler main programme.\n\n## Class `MessageFiler`\n\nMRO: `cs.obj.O` \nA message filing object, filtering state information used during rule evaluation.\n\nAttributes:\n* `.maildb`: Current MailDB.\n* `.environ`: Storage for variable settings.\n* `.addresses(header)`: Caching list of addresses from specified header.\n\n### Method `MessageFiler.__init__(self, context, environ=None)`\n\n`context`: External state object, with maildb property, etc..\n`environ`: Mapping which supplies initial variable names.\n Default from os.environ.\n\n## Function `parserules(fp)`\n\nRead rules from `fp`, yield Rules.\n\n## Function `resolve_mail_path(mdirpath, maildir_root)`\n\nReturn the full path to the requested mail folder.\n\n## Class `Rule`\n\nMRO: `cs.obj.O` \nA filing rule.\n\n## Class `Rules`\n\nMRO: `builtins.list` \nSimple subclass of list storing rules, with methods to load\nrules and filter a message using the rules.\n\n## Function `save_to_folderpath(folderpath, M, message_path, flags)`\n\nSave the Message `M` to the resolved `folderpath`.\n\nParameters:\n* `folderpath`: the path to the target mail folder.\n* `M`: the message to save.\n* `message_path`: pathname of existing message file, allowing\n hardlinking to new maildir if not `None`.\n* `flags`: save flags as from MessageFiler.flags\n\n## Function `scrub_header(value)`\n\n\"Scrub\" a header value.\nPresently this means to undo RFC2047 encoding where possible.\n\n## Class `Target_Assign`\n\nMRO: `cs.obj.O` \nA filing target to set a filing state environment variable.\n\n## Class `Target_EnvSub`\n\nMRO: `cs.obj.O` \nA filing target to delivery to a string\nwhich is subject to environment subject to environment variable expansion\nwhere the environment variables are derived from the filing state.\n\n## Class `Target_Function`\n\nMRO: `cs.obj.O` \nA filing target to run a Python function against a message.\n\n## Class `Target_MailAddress`\n\nMRO: `cs.obj.O` \nA filing target for an email address.\n\n## Class `Target_MailFolder`\n\nMRO: `cs.obj.O` \nA filing target for a mail folder.\n\n## Class `Target_PipeLine`\n\nMRO: `cs.obj.O` \nA filing target to pipe the message contents to a shell command.\n\n## Class `Target_SetFlag`\n\nMRO: `cs.obj.O` \nA filing target to apply a flag to a message.\n\n## Class `Target_Substitution`\n\nMRO: `cs.obj.O` \nA filing target to apply a regular expression string substitution\nto message headers.\n\n## Class `WatchedMaildir`\n\nMRO: `cs.obj.O` \nA class to monitor a Maildir and filter messages.\n\n\n\n# Release Log\n\n*Release 20191006*:\nUpdate for recent cs.deco.cachedmethod rename.\n\n*Release 20190512*:\nPromote $DEFAULT to a list of targets.\nImplement save-to-self \".\" target to support folders where filing elsewhere is an exception.\nMove the manual entries to Markdown format.\n\n*Release 20190103.1*:\nDISTINFO fix.\n\n*Release 20190103*:\nVarious fixes. Documentation improvements.\n\n*Release 20160828*:\nUpdate metadata with \"install_requires\" instead of \"requires\".\nA few bugfixes.\n\n*Release 20160403*:\nBug fix for new $ALERT_TARGETS feature.\n\n*Release 20160402*:\nMake rule processing more robust in the face of errors in individual targets.\nAdd \"report\" operation for debugging rules against a test message.\nAdd \"function\" targets.\nMake header values available for use in substitution rules.\nAllow local@domain and @domain inside (...|...) group matches.\nHonour new $ALERT_TARGETS variable for addition targets implied by issues an alert for a message.\n\n*Release 20150805*:\nbetter handling of configuration errors\nsubstitution actions accept multiple header names\ninitial \"scrub\" action\nfiddle headers of resent messages to avoid blowback to original authors\n\n*Release 20150118.6*:\nfurther README updates\n\n*Release 20150118.5*:\nmore README formatting\n\n*Release 20150118.4*:\nmore README fixes\n\n*Release 20150118.3*:\ncs.app.mailfiler README fixes\n\n*Release 20150118.2*:\ndoc updates\n\n*Release 20150118*:\nInitial PyPI release.", "description_content_type": "text/markdown", "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://bitbucket.org/cameron_simpson/css/commits/all", "keywords": "python2,python3", "license": "GNU General Public License v3 or later (GPLv3+)", "maintainer": "", "maintainer_email": "", "name": "cs.app.mailfiler", "package_url": "https://pypi.org/project/cs.app.mailfiler/", "platform": "", "project_url": "https://pypi.org/project/cs.app.mailfiler/", "project_urls": { "Homepage": "https://bitbucket.org/cameron_simpson/css/commits/all" }, "release_url": "https://pypi.org/project/cs.app.mailfiler/20191006/", "requires_dist": null, "requires_python": "", "summary": "email message filing system which monitors multiple inbound Maildir folders", "version": "20191006" }, "last_serial": 5933680, "releases": { "20150118.6": [ { "comment_text": "", "digests": { "md5": "f2ae1dff4ff16920af35b946da587bd2", "sha256": "1e83208fb298a3f8b5df379ce1f8a45f21596e3cafce74a91cb79d88a06cfbf1" }, "downloads": -1, "filename": "cs.app.mailfiler-20150118.6.tar.gz", "has_sig": false, "md5_digest": "f2ae1dff4ff16920af35b946da587bd2", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 17987, "upload_time": "2015-01-18T06:29:05", "url": "https://files.pythonhosted.org/packages/43/70/ffbfe6884776cde85b49ca01226e63f452067c86a92e292e71dafffc82aa/cs.app.mailfiler-20150118.6.tar.gz" } ], "20150805": [ { "comment_text": "", "digests": { "md5": "967d5ad06b57ac2af7f0295eed4949ff", "sha256": "7ec0ab1c2a6413e5acaa4673a5d4d73442f57a405070278f0e136ea979fb6473" }, "downloads": -1, "filename": "cs.app.mailfiler-20150805.tar.gz", "has_sig": false, "md5_digest": "967d5ad06b57ac2af7f0295eed4949ff", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 19173, "upload_time": "2015-08-05T00:33:31", "url": "https://files.pythonhosted.org/packages/bd/ad/5ae7905b71670a98cc0da0a2f050926c83ec3aa038ce23d911295679bb44/cs.app.mailfiler-20150805.tar.gz" } ], "20160402": [ { "comment_text": "", "digests": { "md5": "4c05d23f7153aba73085ba0f9c26cd62", "sha256": "3a4a06ac740f73390313c6469de36afb05c7aa5b5c2e4da26dd6832c40867d63" }, "downloads": -1, "filename": "cs.app.mailfiler-20160402.tar.gz", "has_sig": false, "md5_digest": "4c05d23f7153aba73085ba0f9c26cd62", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 19430, "upload_time": "2016-04-02T03:12:34", "url": "https://files.pythonhosted.org/packages/91/6d/2f3fbbf6da152e6710a75be15281ab0fe1f0be292546ceaee401d7b5d66b/cs.app.mailfiler-20160402.tar.gz" } ], "20160403": [ { "comment_text": "", "digests": { "md5": "dca926b37768b7e4883827e1f0566333", "sha256": "383a92514de6223cb1fe6509bbe9ce170c2b25bc5d3309059d34ecf9dd0790f9" }, "downloads": -1, "filename": "cs.app.mailfiler-20160403.tar.gz", "has_sig": false, "md5_digest": "dca926b37768b7e4883827e1f0566333", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 19461, "upload_time": "2016-04-02T22:55:10", "url": "https://files.pythonhosted.org/packages/43/37/5b4409137c36971da4731d6bddceb108408ed91166e84678bdd598ac8d24/cs.app.mailfiler-20160403.tar.gz" } ], "20160828": [ { "comment_text": "", "digests": { "md5": "c4273133acb9e442e49fddf3b7db9942", "sha256": "4f4c37dc5f918977e57f210c8ab14f7d683a2c392ff0549c47dc94555e08c94f" }, "downloads": -1, "filename": "cs.app.mailfiler-20160828.tar.gz", "has_sig": false, "md5_digest": "c4273133acb9e442e49fddf3b7db9942", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 20092, "upload_time": "2016-08-28T06:03:10", "url": "https://files.pythonhosted.org/packages/45/23/5153811610a0e304e06d01a91c7e3efbce1bf82adca60b1b8279608195b1/cs.app.mailfiler-20160828.tar.gz" } ], "20190103.1": [ { "comment_text": "", "digests": { "md5": "282d4af8ab62783f6886e977c7e3eb09", "sha256": "801d7de798ae8c1c3c5fcff5cfa2de0f4355efdfe91cfa7dcd4c5bee7802eee4" }, "downloads": -1, "filename": "cs.app.mailfiler-20190103.1.tar.gz", "has_sig": false, "md5_digest": "282d4af8ab62783f6886e977c7e3eb09", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 20061, "upload_time": "2019-01-03T02:31:08", "url": "https://files.pythonhosted.org/packages/24/7f/67c46a8e483cb2f7d92914f89d2b07803d2c7ced6af1556721fc1cd81453/cs.app.mailfiler-20190103.1.tar.gz" } ], "20190512": [ { "comment_text": "", "digests": { "md5": "6c380603b9933ade3f9656e590b654b2", "sha256": "2eb7545d5905fe6eb8f58f8a5662497118d0b9e9abf4778bcc1a0864a12393ac" }, "downloads": -1, "filename": "cs.app.mailfiler-20190512.tar.gz", "has_sig": false, "md5_digest": "6c380603b9933ade3f9656e590b654b2", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 22319, "upload_time": "2019-05-12T11:01:26", "url": "https://files.pythonhosted.org/packages/6b/6b/d4b32fd32796049cd7c0ffe5cb36fe5eff7ab186c2d31444fd9759d2d6ed/cs.app.mailfiler-20190512.tar.gz" } ], "20191006": [ { "comment_text": "", "digests": { "md5": "abd5adc2ac973f8700a73d6f309fe60e", "sha256": "b36e939fdda7921aeb351958240d3f62b6664002b18b8ad4febfae4ed46b4646" }, "downloads": -1, "filename": "cs.app.mailfiler-20191006.tar.gz", "has_sig": false, "md5_digest": "abd5adc2ac973f8700a73d6f309fe60e", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 24138, "upload_time": "2019-10-06T03:11:25", "url": "https://files.pythonhosted.org/packages/65/28/615c8a8f8d62e5acfcb9ab0cb7c67409f27c066889adc406d86f5c4baa44/cs.app.mailfiler-20191006.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "abd5adc2ac973f8700a73d6f309fe60e", "sha256": "b36e939fdda7921aeb351958240d3f62b6664002b18b8ad4febfae4ed46b4646" }, "downloads": -1, "filename": "cs.app.mailfiler-20191006.tar.gz", "has_sig": false, "md5_digest": "abd5adc2ac973f8700a73d6f309fe60e", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 24138, "upload_time": "2019-10-06T03:11:25", "url": "https://files.pythonhosted.org/packages/65/28/615c8a8f8d62e5acfcb9ab0cb7c67409f27c066889adc406d86f5c4baa44/cs.app.mailfiler-20191006.tar.gz" } ] }