python-croniter
Port variant v11
Summary Iteration for datetime object like cron (3.11)
Package version 2.0.3
Homepage https://github.com/kiorky/croniter
Keywords python
Maintainer Python Automaton
License Not yet specified
Other variants v12
Ravenports Buildsheet | History
Ravensource Port Directory | History
Last modified 25 MAR 2024, 02:06:36 UTC
Port created 07 JAN 2023, 04:18:24 UTC
Subpackage Descriptions
single Introduction ============ Usage ============ A simple example:: >>> from croniter import croniter >>> from datetime import datetime >>> base = datetime(2010, 1, 25, 4, 46) >>> iter = croniter('*/5 * * * *', base) # every 5 minutes >>> print(iter.get_next(datetime)) # 2010-01-25 04:50:00 >>> print(iter.get_next(datetime)) # 2010-01-25 04:55:00 >>> print(iter.get_next(datetime)) # 2010-01-25 05:00:00 >>> >>> iter = croniter('2 4 * * mon,fri', base) # 04:02 on every Monday and Friday >>> print(iter.get_next(datetime)) # 2010-01-26 04:02:00 >>> print(iter.get_next(datetime)) # 2010-01-30 04:02:00 >>> print(iter.get_next(datetime)) # 2010-02-02 04:02:00 >>> >>> iter = croniter('2 4 1 * wed', base) # 04:02 on every Wednesday OR on 1st day of month >>> print(iter.get_next(datetime)) # 2010-01-27 04:02:00 >>> print(iter.get_next(datetime)) # 2010-02-01 04:02:00 >>> print(iter.get_next(datetime)) # 2010-02-03 04:02:00 >>> >>> iter = croniter('2 4 1 * wed', base, day_or=False) # 04:02 on every 1st day of the month if it is a Wednesday >>> print(iter.get_next(datetime)) # 2010-09-01 04:02:00 >>> print(iter.get_next(datetime)) # 2010-12-01 04:02:00 >>> print(iter.get_next(datetime)) # 2011-06-01 04:02:00 >>> >>> iter = croniter('0 0 * * sat#1,sun#2', base) # 1st Saturday, and 2nd Sunday of the month >>> print(iter.get_next(datetime)) # 2010-02-06 00:00:00 >>> >>> iter = croniter('0 0 * * 5#3,L5', base) # 3rd and last Friday of the month >>> print(iter.get_next(datetime)) # 2010-01-29 00:00:00 >>> print(iter.get_next(datetime)) # 2010-02-19 00:00:00 All you need to know is how to use the constructor and the get_next method, the signature of these methods are listed below:: >>> def __init__(self, cron_format, start_time=time.time(), day_or=True) croniter iterates along with cron_format from start_time. cron_format is **min hour day month day_of_week**, you can refer to http://en.wikipedia.org/wiki/Cron for more details. The day_or switch is used to control how croniter handles **day** and **day_of_week** entries. Default option is the cron behaviour, which connects those values using **OR**. If the switch is set to False, the values are connected using **AND**. This behaves like fcron and enables you to e.g. define a job that executes each 2nd Friday of a month by setting the days of month and the weekday. :: >>> def get_next(self, ret_type=float) get_next calculates the next value according to the cron expression and returns an object of type ret_type. ret_type should be a float or a datetime object. Supported added for get_prev method. (>= 0.2.0):: >>> base = datetime(2010, 8, 25) >>> itr = croniter('0 0 1 * *', base) >>> print(itr.get_prev(datetime)) # 2010-08-01 00:00:00 >>> print(itr.get_prev(datetime)) # 2010-07-01 00:00:00 >>> print(itr.get_prev(datetime)) # 2010-06-01 00:00:00 You can validate your crons using is_valid class method. (>= 0.3.18):: >>> croniter.is_valid('0 0 1 * *') # True >>> croniter.is_valid('0 wrong_value 1 * *') # False About DST ========= Be sure to init your croniter instance with a TZ aware datetime for this to work! Example using pytz:: >>> import pytz >>> tz = pytz.timezone("Europe/Paris") >>> local_date = tz.localize(datetime(2017, 3, 26)) >>> val = croniter('0 0 * * *', local_date).get_next(datetime) Example using python_dateutil:: >>> import dateutil.tz >>> tz = dateutil.tz.gettz('Asia/Tokyo') >>> local_date = datetime(2017, 3, 26, tzinfo=tz) >>> val = croniter('0 0 * * *', local_date).get_next(datetime)
Configuration Switches (platform-specific settings discarded)
PY311 ON Build using Python 3.11 PY312 OFF Build using Python 3.12
Package Dependencies by Type
Build (only) python-pip:single:v11
autoselect-python:single:standard
Build and Runtime python311:single:standard
Runtime (only) python-python-dateutil:single:v11
python-pytz:single:v11
Download groups
main mirror://PYPIWHL/75/b4/a0b97aa934f623fe2342a3c681c70b46f398e91788498802d6147f8f3ff1
Distribution File Information
84dc95b2eb6760144cc01eca65a6b9cc1619c93b2dc37d8a27f4319b3eb740de 20009 croniter-2.0.3-py2.py3-none-any.whl
Ports that require python-croniter:v11
No other ports depend on this one.