Cron Descriptor

A Python library that converts cron expressions into human readable strings. Ported to Python from https://github.com/bradyholt/cron-expression-descriptor.
Author: Adam Schubert (https://www.salamek.cz)
Original Author & Credit: Brady Holt (http://www.geekytidbits.com)
License: MIT
Features
- Supports all cron expression special characters including * / , - ? L W, #
- Supports 5, 6 (w/ seconds or year), or 7 (w/ seconds and year) part cron expressions
- Provides casing options (Sentence, Title, Lower, etc.)
- Localization with support for 17 languages
- Supports Python 3.8 - 3.12
Installation
Using PIP
pip install cron-descriptor
Usage example
Simple
from cron_descriptor import get_description, ExpressionDescriptor
print(get_description("* 2 3 * *"))
print(str(ExpressionDescriptor("* 2 3 * *")))
Advanced
from cron_descriptor import Options, CasingTypeEnum, DescriptionTypeEnum, ExpressionDescriptor
descriptor = ExpressionDescriptor(
expression = "*/10 * * * *",
casing_type = CasingTypeEnum.Sentence,
use_24hour_time_format = True
)
print(descriptor.get_description())
print("{}".format(descriptor))
options = Options()
options.casing_type = CasingTypeEnum.Sentence
options.use_24hour_time_format = True
descriptor = ExpressionDescriptor("*/10 * * * *", options)
print(descriptor.get_description(DescriptionTypeEnum.FULL))
Languages Available
Original Source
Ports
Running Unit Tests
python setup.py test
Translating
cron-descriptor is using Gettext for translations.
To create new translation or edit existing one, i suggest using Poedit.
You can copy/rename and translate any file from locale
directory:
cp ./cron_descriptor/locale/de_DE.po ./cron_descriptor/locale/YOUR_LOCALE_CODE.po
poedit ./cron_descriptor/locale/YOUR_LOCALE_CODE.po
or you can generate new untranslated *.po file from sources by running in cron_descriptor
directory:
cd cron_descriptor
xgettext *.py -o locale/YOUR_LOCALE_CODE.po
Generating *.mo file from *.po file. In root directory run command:
msgfmt -o cron_descriptor/locale/YOUR_LOCALE_CODE.mo cron_descriptor/locale/YOUR_LOCALE_CODE.po
Developing
All suggestions and PR's are welcomed
Just clone this repository and register pre-commit hook by running:
ln -s ../../pre-commit.sh .git/hooks/pre-commit
Then install dev requirements:
pip install ruff