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 2.7 - 3.10
Installation
Using PIP
pip install cron-descriptor
Usage example
Simple
from cron_descriptor import get_description, ExpressionDescriptor
print(get_description("* 2 3 * *"))
#OR
print(str(ExpressionDescriptor("* 2 3 * *")))
Advanced
# Consult Options.py/CasingTypeEnum.py/DescriptionTypeEnum.py for more info
from cron_descriptor import Options, CasingTypeEnum, DescriptionTypeEnum, ExpressionDescriptor
descriptor = ExpressionDescriptor(
expression = "*/10 * * * *",
casing_type = CasingTypeEnum.Sentence,
use_24hour_time_format = True
)
# GetDescription uses DescriptionTypeEnum.FULL by default:
print(descriptor.get_description())
print("{}".format(descriptor))
# Or passing Options class as second argument:
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
| Language | Locale Code | Contributor |
|---|---|---|
| English | en | Brady Holt |
| Brazilian | pt_PT | Renato Lima |
| Chinese Simplified | zh_CN | Star Peng |
| Spanish | es_ES | Ivan Santos |
| Norwegian | nb_NO | Siarhei Khalipski |
| Turkish | tr_TR | Mustafa SADEDİL |
| Dutch | nl_NL | TotalMace |
| Russian | ru_RU | LbISS |
| French | fr_FR | Arnaud TAMAILLON |
| German | de_DE | Michael Schuler |
| Ukrainian | uk_UA | Taras |
| Italian | it_IT | rinaldihno |
| Czech | cs_CZ | Adam Schubert |
| Swedish | sv_SE | Åke Engelbrektson |
| Tamil | ta_IN | Sankar Hari |
| Persian | fa_IR | M. Yas. Davoodeh |
| Korean | ko_KR | KyuJoo Han |
| Japanese | ja_JP | Tho Nguyen |
Original Source
Ports
- Java - https://github.com/RedHogs/cron-parser
- Ruby - https://github.com/alpinweis/cronex
- Golang - https://github.com/jsuar/go-cron-descriptor
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 pep8
pip install flake8
pip install pep8-naming
Metadata
Release files for cron-descriptor 1.3.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | Actions |
|---|---|---|---|---|
| cron_descriptor-1.3.0.tar.gz | 29.0 kB | Without provenance | Details for cron_descriptor-1.3.0.tar.gz |
Release files / cron_descriptor-1.3.0.tar.gz
| Download URL | cron_descriptor-1.3.0.tar.gz |
|---|---|
| Size | 29.0 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
9280a8d4431826e6958f99a9433b04a24758455cc51893adafc31bc7e7a6e4dc
|
|
BLAKE2b-256 checksum How to use checksums |
c8f323c073a2589701db965a6b3d83114b943f2de2420808f44e88795a086c73
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/3.3.0 pkginfo/1.4.2 requests/2.25.1 setuptools/52.0.0 requests-toolbelt/0.9.1 tqdm/4.57.0 CPython/3.9.2
|
Security for cron-descriptor 1.3.0
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.