{ "info": { "author": "Michael Howitz", "author_email": "icemac@gmx.net", "bugtrack_url": null, "classifiers": [ "Development Status :: 5 - Production/Stable", "License :: OSI Approved :: MIT License", "Natural Language :: English", "Operating System :: OS Independent", "Programming Language :: Python :: 2.7", "Programming Language :: Python :: 3.6", "Programming Language :: Python :: 3.7", "Programming Language :: Python :: 3.8", "Programming Language :: Python :: Implementation :: CPython", "Programming Language :: Python :: Implementation :: PyPy" ], "description": "This package provides helper functions to compute recurrences of events in a\nenvironment using the Zope Component Architecture (ZCA).\n\nCopyright (c) 2013-2019 Michael Howitz\n\nThis package is licensed under the MIT License, see LICENSE.txt inside the\npackage.\n\n.. image::\n https://travis-ci.com/icemac/icemac.recurrence.svg?branch=master\n :target: https://travis-ci.com/icemac/icemac.recurrence\n\n.. image::\n https://coveralls.io/repos/github/icemac/icemac.recurrence/badge.svg\n :target: https://coveralls.io/github/icemac/icemac.recurrence\n\n.. image:: https://img.shields.io/pypi/v/icemac.recurrence.svg\n :target: https://pypi.org/project/icemac.recurrence/\n :alt: Current version on PyPI\n\n.. image:: https://img.shields.io/pypi/pyversions/icemac.recurrence.svg\n :target: https://pypi.org/project/icemac.recurrence/\n :alt: Supported Python versions\n\n.. image:: https://img.shields.io/pypi/implementation/icemac.recurrence.svg\n :target: https://pypi.org/project/icemac.recurrence/\n :alt: Supported Python implementations\n\n\n.. contents::\n\n=====\nUsage\n=====\n\n* Register the package at the ZCA via ZCML::\n\n \n\n* Compute recurrences. The example computes the 2nd Tuesday each month.::\n\n >>> from icemac.recurrence import get_recurrences\n >>> get_recurrences(\n ... datetime=datetime(2015, 10, 13, 11, 15),\n ... period='nth weekday of month',\n ... interval_start=datetime(2015, 1, 1),\n ... interval_end=datetime(2015, 12, 31))\n [datetime(2015, 10, 13, 11, 15),\n datetime(2015, 11, 10, 11, 15),\n datetime(2015, 12, 8, 11, 15)]\n\n* Supported recurrence periods:\n\n * ``daily``\n * ``weekly``\n * ``biweekly``\n * ``nth weekday of month``\n * ``nth weekday every other month``\n * ``nth weekday from end of month``\n * ``nth weekday from end of other month``\n * ``yearly``\n\n=========\n Hacking\n=========\n\nSource code\n===========\n\nGet the source code::\n\n $ git clone https://github.com/icemac/icemac.recurrence\n\nor fork me on: https://github.com/icemac/icemac.recurrence\n\nRunning the tests\n=================\n\nYou have to install tox_ onto your machine.\n\nTo run the tests yourself call::\n\n $ tox\n\n.. _tox : https://pypi.org/project/tox/\n\n\n===========\n Changelog\n===========\n\n1.7 (2019-09-26)\n================\n\n- Add support for Python 3.8.\n\n\n1.6 (2018-08-10)\n================\n\n- Add support for Python 3.6 and 3.7, PyPy and PyPy3.\n\n- The tests are now run using `tox`.\n\n\n1.5 (2018-08-03)\n================\n\n- Change license from ZPL to MIT.\n\n\n1.4.2 (2018-03-16)\n==================\n\n- Fix the computation of monthly recurrences not to return a date before the\n given `interval_start` date.\n\n\n1.4.1.post1 (2017-12-26)\n========================\n\n- Also release as wheel.\n\n\n1.4.1 (2017-04-11)\n==================\n\n- Fix a corner case in the computation of monthly recurrences: If the\n beginning of the interval for which recurrences should be computed was\n outside DST but the recurrence date was inside DST - it was incorrectly\n returned with a time zone object which did not have DST switched on.\n\n\n1.4 (2017-04-08)\n================\n\n- No longer exclude tests from coverage report.\n\n\n1.3.1 (2017-02-04)\n==================\n\n- Fix computation of biweekly recurrences: Previously the first recurrence with\n a matching weekday in the interval was used as the first result for the\n interval. This is only correct in half of the cases. Now the computation of\n the first recurrence in the interval takes into account that it has to be an\n even number of weeks after the recurrence start date and it handles DST\n differences correctly.\n\n\n1.3 (2017-01-07)\n================\n\n- Add Manifest and clean up coverage configuration.\n\n\n1.2 (2016-04-16)\n================\n\n- Fix handling for dates with a timezone which has a daylight saving time\n (DST): The local time of the recurrence does not change when switching DST\n though the UTC representation of the time will now change.\n\n\n1.1 (2016-03-01)\n================\n\n- Shorten the import path of ``get_recurrences()`` from\n ``icemac.recurrence.recurrence`` to just ``icemac.recurrence``.\n\n- Refactor tests to use ``py.test`` fixtures.\n\n- Fix an off by one month error in the periods `nth weekday every other month`\n and `nth weekday from end of other month`.\n\n- Bring the test coverage to 100 % even in branch coverage.\n\n\n1.0.1 (2015-10-22)\n==================\n\n- Fix broken 1.0.0 release.\n\n\n1.0.0 (2015-10-13)\n==================\n\n* Extract package from `icemac.ab.calendar` for reuse in other projects.\n\n\n", "description_content_type": "", "docs_url": null, "download_url": "https://pypi.org/project/icemac.recurrence", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/icemac/icemac.recurrence", "keywords": "calendar event recurring recurrence datetime", "license": "MIT", "maintainer": "", "maintainer_email": "", "name": "icemac.recurrence", "package_url": "https://pypi.org/project/icemac.recurrence/", "platform": "", "project_url": "https://pypi.org/project/icemac.recurrence/", "project_urls": { "Download": "https://pypi.org/project/icemac.recurrence", "Homepage": "https://github.com/icemac/icemac.recurrence" }, "release_url": "https://pypi.org/project/icemac.recurrence/1.7/", "requires_dist": [ "gocept.month (>=2)", "grokcore.component (>=2.6)", "setuptools", "zope.cachedescriptors", "zope.component", "zope.globalrequest", "zope.i18nmessageid", "zope.interface", "zope.configuration ; extra == 'test'" ], "requires_python": "", "summary": "Compute recurrences of events", "version": "1.7" }, "last_serial": 5892080, "releases": { "1.0.0": [ { "comment_text": "", "digests": { "md5": "c6ea261c1075191842228514cb5fa53d", "sha256": "fdedc9004e0cb5da414c3576e0b4e39939e1456bd61e1f90acdb69f5a45f04d4" }, "downloads": -1, "filename": "icemac.recurrence-1.0.0.tar.gz", "has_sig": false, "md5_digest": "c6ea261c1075191842228514cb5fa53d", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 8947, "upload_time": "2015-10-21T14:38:42", "url": "https://files.pythonhosted.org/packages/3b/f1/c6462d53383247ae7637b46df654add0433bb8961af8463f9c2aceff7368/icemac.recurrence-1.0.0.tar.gz" } ], "1.0.1": [ { "comment_text": "", "digests": { "md5": "41a20dac686543267e5bd1aef55605bb", "sha256": "1a6afe76dbfa429ea2632af6b3439582f2c0f1fd3bf074037a620850fc057d95" }, "downloads": -1, "filename": "icemac.recurrence-1.0.1.tar.gz", "has_sig": false, "md5_digest": "41a20dac686543267e5bd1aef55605bb", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 12580, "upload_time": "2015-10-22T08:49:44", "url": "https://files.pythonhosted.org/packages/86/35/defd424d7b8feb33b22242c03125a4c64c57e3e633cf1c1d2b560b4158c0/icemac.recurrence-1.0.1.tar.gz" } ], "1.1": [ { "comment_text": "", "digests": { "md5": "7524538d40dc4e8b0a6ea0f3f3717f35", "sha256": "fe77f87c12e7798983c002faff4a956ee5317872711875f09211449c3367b126" }, "downloads": -1, "filename": "icemac.recurrence-1.1.tar.gz", "has_sig": false, "md5_digest": "7524538d40dc4e8b0a6ea0f3f3717f35", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 14335, "upload_time": "2016-03-01T20:16:32", "url": "https://files.pythonhosted.org/packages/a0/4a/694ff75ff55a34c0c9af4260820283da57f9abdf9f6b87cde7521724fcc1/icemac.recurrence-1.1.tar.gz" } ], "1.2": [ { "comment_text": "", "digests": { "md5": "810e7bd2f3dd24f8fb3a16ae254a5f39", "sha256": "d54c124995cfa06d379a4609edabf2a8f503573c7d7b7bc3cc11d9a84d1dfe12" }, "downloads": -1, "filename": "icemac.recurrence-1.2.tar.gz", "has_sig": false, "md5_digest": "810e7bd2f3dd24f8fb3a16ae254a5f39", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 14976, "upload_time": "2016-04-16T11:14:56", "url": "https://files.pythonhosted.org/packages/cc/f9/4d89cd32eec886fde05f4dafca8c850ccd3293c9c3bb3afe13fb96812db3/icemac.recurrence-1.2.tar.gz" } ], "1.3": [ { "comment_text": "", "digests": { "md5": "3450aba9185f28e56cbd07727b6c28e2", "sha256": "13f1e5746098018a0e12a327d9b57e116e9320559641dc1e6ea8e05523aae634" }, "downloads": -1, "filename": "icemac.recurrence-1.3.tar.gz", "has_sig": false, "md5_digest": "3450aba9185f28e56cbd07727b6c28e2", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 14813, "upload_time": "2017-01-07T10:59:29", "url": "https://files.pythonhosted.org/packages/46/b1/e586cd8d4157ead4ac581f456973d41e4f54eb97ba4951a210ec5ec3acc2/icemac.recurrence-1.3.tar.gz" } ], "1.3.1": [ { "comment_text": "", "digests": { "md5": "aec16f4c38131e6fd74b1d10147201a1", "sha256": "78846b32099719ca085f4de7950c4b60ad83baabcfc2804a5f6d72a43d9aadbe" }, "downloads": -1, "filename": "icemac.recurrence-1.3.1.tar.gz", "has_sig": false, "md5_digest": "aec16f4c38131e6fd74b1d10147201a1", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 15828, "upload_time": "2017-02-04T17:23:16", "url": "https://files.pythonhosted.org/packages/0d/3f/2c3e0c3fa3c773f86134917765a3c9448aae14ed2e44a417beeb7e432ac2/icemac.recurrence-1.3.1.tar.gz" } ], "1.4": [ { "comment_text": "", "digests": { "md5": "df9baec33d419d28d1a21580f294559b", "sha256": "a709716d4d2f355fc64a3863efbc97a7dc4ac0b26554a3f3c4484779d976a4c2" }, "downloads": -1, "filename": "icemac.recurrence-1.4.tar.gz", "has_sig": false, "md5_digest": "df9baec33d419d28d1a21580f294559b", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 15874, "upload_time": "2017-04-08T14:47:50", "url": "https://files.pythonhosted.org/packages/b2/06/55ec40be92eb7ee53cb53db7b6ce6ba6ab06ff389feb3bcfdbd48f1ef61b/icemac.recurrence-1.4.tar.gz" } ], "1.4.1": [ { "comment_text": "", "digests": { "md5": "34bf91e1a495b62c72b913ff10217a9c", "sha256": "b676ac44135dffd2cf855876e3d3ba3f9558a4942d33752a6ee8cb4a65ad4b8c" }, "downloads": -1, "filename": "icemac.recurrence-1.4.1.tar.gz", "has_sig": false, "md5_digest": "34bf91e1a495b62c72b913ff10217a9c", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 16243, "upload_time": "2017-04-11T17:23:16", "url": "https://files.pythonhosted.org/packages/ae/53/e345f64462596b4eeb739cf64c24171c283d46dbe132b43db7c5822b3745/icemac.recurrence-1.4.1.tar.gz" } ], "1.4.1.post1": [ { "comment_text": "", "digests": { "md5": "8eed05c36c497fe49ef0a2a07cdc86ef", "sha256": "d1f1dee4530805ba4d4b0769899ddfc32527860bda5b687804a0c021d09d3db1" }, "downloads": -1, "filename": "icemac.recurrence-1.4.1.post1-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "8eed05c36c497fe49ef0a2a07cdc86ef", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 19796, "upload_time": "2017-12-26T06:12:48", "url": "https://files.pythonhosted.org/packages/80/ec/12732e3e6b570fae198b11041457237281e390de59312ee2bfff1bb3704d/icemac.recurrence-1.4.1.post1-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "9c8beef477afe0fcd7b7d327a30bf0de", "sha256": "bab86c7c35d37e9c6e8cee46f2db0c7f7e8310909a3c8b746c79181d3b1450a7" }, "downloads": -1, "filename": "icemac.recurrence-1.4.1.post1.tar.gz", "has_sig": false, "md5_digest": "9c8beef477afe0fcd7b7d327a30bf0de", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 15901, "upload_time": "2017-12-26T06:12:49", "url": "https://files.pythonhosted.org/packages/e3/35/1104b3d35ea75cca4da1d6ed567ed8ebb12540cddffd4badda77c880f96e/icemac.recurrence-1.4.1.post1.tar.gz" } ], "1.4.2": [ { "comment_text": "", "digests": { "md5": "931764842b2790071368f76fb5c6c7f1", "sha256": "2b399fcf7f971ed92841249595559d0270270bd8ab0fcaabb9aec9b06b83b013" }, "downloads": -1, "filename": "icemac.recurrence-1.4.2-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "931764842b2790071368f76fb5c6c7f1", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 19784, "upload_time": "2018-03-16T19:05:58", "url": "https://files.pythonhosted.org/packages/ca/f6/310b77d3eda59c248db9980690e58dc53100e80a298d5584e8c900283f21/icemac.recurrence-1.4.2-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "9439dfbc4aa2ce8d9b8559d9f9756c05", "sha256": "42f78ccb523c3bba2b62e078da7c01ad4c9dff5e39fec0f9fa0bead05cd2d10b" }, "downloads": -1, "filename": "icemac.recurrence-1.4.2.tar.gz", "has_sig": false, "md5_digest": "9439dfbc4aa2ce8d9b8559d9f9756c05", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 16018, "upload_time": "2018-03-16T19:06:01", "url": "https://files.pythonhosted.org/packages/2b/a7/6a6022caf677e7f0d97cbe7db49859c5e76e001499ce5a2ab3cc4fd052c4/icemac.recurrence-1.4.2.tar.gz" } ], "1.5": [ { "comment_text": "", "digests": { "md5": "27a9eb048dcba599b72343dfd9cecc95", "sha256": "c44a800584a28a5b3a6489325b1dde994dd55b2432d0ac724eb50a0fa42d2c1b" }, "downloads": -1, "filename": "icemac.recurrence-1.5-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "27a9eb048dcba599b72343dfd9cecc95", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 19319, "upload_time": "2018-08-03T09:27:50", "url": "https://files.pythonhosted.org/packages/9f/fb/b1cf22a4a9511cf26faaad39573f0a7e6774d3a4ef9829cc52c9221fefcb/icemac.recurrence-1.5-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "048069a15d5e0a7e8c78a2968ab385bb", "sha256": "1fea54a2b180410d0e3cf83fdc9634b615bfaa6a524e65148bd49659d5be1cf9" }, "downloads": -1, "filename": "icemac.recurrence-1.5.tar.gz", "has_sig": false, "md5_digest": "048069a15d5e0a7e8c78a2968ab385bb", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 15460, "upload_time": "2018-08-03T09:27:52", "url": "https://files.pythonhosted.org/packages/72/2c/effb52284576b301fd5ed4d05b585d70d7bd1a9d63c026670f89152436c0/icemac.recurrence-1.5.tar.gz" } ], "1.6": [ { "comment_text": "", "digests": { "md5": "1be95d1c468e087c11c5b76c3b0490e9", "sha256": "6d54f238d21f1b7cc437a393260fc1d95a875921e18fc1d847cd9bb04e6cb804" }, "downloads": -1, "filename": "icemac.recurrence-1.6-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "1be95d1c468e087c11c5b76c3b0490e9", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 19742, "upload_time": "2018-08-10T07:47:54", "url": "https://files.pythonhosted.org/packages/4d/d1/54dd130baae99ea91a185ed3e3f6841b1d5231dfe7b2c2d20f54d2a91c8d/icemac.recurrence-1.6-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "bb5c187fd009580adf3aa3b6efd38c09", "sha256": "194e29f1cc54fd30595f4a315f499984c2394334e0b5480c58681e8ae64f298b" }, "downloads": -1, "filename": "icemac.recurrence-1.6.tar.gz", "has_sig": false, "md5_digest": "bb5c187fd009580adf3aa3b6efd38c09", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 13713, "upload_time": "2018-08-10T07:47:56", "url": "https://files.pythonhosted.org/packages/a9/51/0173cfbe7c630cb7651931f9b4842c6f031372dfd0f71869c88126a2ec96/icemac.recurrence-1.6.tar.gz" } ], "1.7": [ { "comment_text": "", "digests": { "md5": "8c8ff9f582a613a63a6acaabcac3bb76", "sha256": "e0abf52f4028665860190c38be25af44e20c41df5ef6569d12b8e87d1c40711c" }, "downloads": -1, "filename": "icemac.recurrence-1.7-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "8c8ff9f582a613a63a6acaabcac3bb76", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 17903, "upload_time": "2019-09-26T18:35:55", "url": "https://files.pythonhosted.org/packages/fc/fc/a384bf63d33211ec864611df7b5befe677ce7e922ccfe261bcfdf144f25d/icemac.recurrence-1.7-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "7928dd57cebaea6a5b0e9f594f870bbd", "sha256": "946bcd67ce11fd0df16e96db0463cbb87961173c0af6a81699e19bbe4ec40ba9" }, "downloads": -1, "filename": "icemac.recurrence-1.7.tar.gz", "has_sig": false, "md5_digest": "7928dd57cebaea6a5b0e9f594f870bbd", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 13938, "upload_time": "2019-09-26T18:35:58", "url": "https://files.pythonhosted.org/packages/db/1b/3210f4aa272ed986c99a40ca8095ef16b228ff7411a2fa7e6bf6ef5504d4/icemac.recurrence-1.7.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "8c8ff9f582a613a63a6acaabcac3bb76", "sha256": "e0abf52f4028665860190c38be25af44e20c41df5ef6569d12b8e87d1c40711c" }, "downloads": -1, "filename": "icemac.recurrence-1.7-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "8c8ff9f582a613a63a6acaabcac3bb76", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 17903, "upload_time": "2019-09-26T18:35:55", "url": "https://files.pythonhosted.org/packages/fc/fc/a384bf63d33211ec864611df7b5befe677ce7e922ccfe261bcfdf144f25d/icemac.recurrence-1.7-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "7928dd57cebaea6a5b0e9f594f870bbd", "sha256": "946bcd67ce11fd0df16e96db0463cbb87961173c0af6a81699e19bbe4ec40ba9" }, "downloads": -1, "filename": "icemac.recurrence-1.7.tar.gz", "has_sig": false, "md5_digest": "7928dd57cebaea6a5b0e9f594f870bbd", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 13938, "upload_time": "2019-09-26T18:35:58", "url": "https://files.pythonhosted.org/packages/db/1b/3210f4aa272ed986c99a40ca8095ef16b228ff7411a2fa7e6bf6ef5504d4/icemac.recurrence-1.7.tar.gz" } ] }