Files
Iliyan Angelov 6b247e5b9f Updates
2025-09-19 11:58:53 +03:00

205 lines
7.9 KiB
Plaintext

Metadata-Version: 2.4
Name: cron_descriptor
Version: 2.0.6
Summary: A Python library that converts cron expressions into human readable strings.
Author-email: Adam Schubert <adam.schubert@sg1-game.net>
License-Expression: MIT
Project-URL: Homepage, https://github.com/Salamek/cron-descriptor
Classifier: Development Status :: 5 - Production/Stable
Classifier: Environment :: Web Environment
Classifier: Environment :: Console
Classifier: Intended Audience :: Developers
Classifier: Operating System :: OS Independent
Classifier: Programming Language :: Python
Classifier: Programming Language :: Python :: Implementation :: CPython
Classifier: Programming Language :: Python :: Implementation :: PyPy
Classifier: Programming Language :: Python :: 3.9
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Programming Language :: Python :: 3.13
Classifier: Topic :: Software Development
Requires-Python: >=3.9
Description-Content-Type: text/markdown
License-File: LICENSE
Requires-Dist: typing_extensions
Provides-Extra: dev
Requires-Dist: ruff; extra == "dev"
Requires-Dist: mypy; extra == "dev"
Requires-Dist: polib; extra == "dev"
Provides-Extra: test
Requires-Dist: pytest; extra == "test"
Dynamic: license-file
# Cron Descriptor
[![Python tests](https://github.com/Salamek/cron-descriptor/actions/workflows/python-test.yml/badge.svg)](https://github.com/Salamek/cron-descriptor/actions/workflows/python-test.yml)
[![Donate](https://img.shields.io/badge/Donate-PayPal-green.svg)](https://www.paypal.me/salamek)
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](http://opensource.org/licenses/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 ~31 languages
* Supports Python 3.9 - 3.13
## Installation
Using PIP
```bash
pip install cron-descriptor
```
## Usage example
### Simple
```python
from cron_descriptor import get_description, ExpressionDescriptor
print(get_description("* 2 3 * *"))
#OR
print(str(ExpressionDescriptor("* 2 3 * *")))
```
### Advanced
```python
# 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(f"{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](https://github.com/bradyholt) |
| Chinese Simplified | zh_CN | [Star Peng](https://github.com/starpeng) |
| Chinese Traditional | zh_TW | [Ricky Chiang](https://github.com/metavige) |
| Czech | cs_CZ | [Adam Schubert](https://github.com/salamek) |
| Danish | da_DK | [Rasmus Melchior Jacobsen](https://github.com/rmja) |
| Dutch | nl_NL | [TotalMace](https://github.com/TotalMace) |
| Finnish | fi_FI | [Mikael Rosenberg](https://github.com/MR77FI) |
| French | fr_FR | [Arnaud TAMAILLON](https://github.com/Greybird) |
| German | de_DE | [Michael Schuler](https://github.com/mschuler) |
| Hebrew | he_IL | [Ariel Deil](https://github.com/arieldeil) |
| Hungarian | hu_HU | [Varga Miklós](https://github.com/Micky2149) |
| Italian | it_IT | [rinaldihno](https://github.com/rinaldihno) |
| Japanese | ja_JP | [Tho Nguyen](https://github.com/tho-asterist) |
| Korean | ko_KR | [KyuJoo Han](https://github.com/hanqyu) |
| Norwegian | nb_NO | [Siarhei Khalipski](https://github.com/KhalipskiSiarhei)|
| Persian | fa_IR | [A. Bahrami](https://github.com/alirezakoo) |
| Polish | pl_PL | [foka](https://github.com/foka) |
| Portuguese | pt_PT | [Renato Lima](https://github.com/natenho) |
| Portuguese (Brazil) | pt_BR | [Renato Lima](https://github.com/natenho) |
| Romanian | ro_RO | [Illegitimis](https://github.com/illegitimis) |
| Russian | ru_RU | [LbISS](https://github.com/LbISS) |
| Slovenian | sl_SI | [Jani Bevk](https://github.com/jenzy) |
| Spanish | es_ES | [Ivan Santos](https://github.com/ivansg) |
| Spanish (Mexico) | es_MX | [Ion Mincu](https://github.com/ionmincu) |
| Swedish | sv_SE | [Åke Engelbrektson](https://github.com/eson57) |
| Vietnamese | vi_VN | [Nguyen Duc Son](https://github.com/ali33) |
| Turkish | tr_TR | [Mustafa SADEDİL](https://github.com/sadedil) |
| Tamil | ta_IN | [Sankar Hari](https://github.com/sankarhari) |
| Ukrainian | uk_UA | [Taras](https://github.com/tbudurovych) |
| Greek | el_GR | [hardra1n](https://github.com/Hardra1n) |
| Kazakh | kk_KZ | [hardra1n](https://github.com/Hardra1n) |
<!-- SOON
## Demo
## Download
-->
## Original Source
- .NET - [https://github.com/bradyholt/cron-expression-descriptor](https://github.com/bradyholt/cron-expression-descriptor)
## Ports
- Java - [https://github.com/RedHogs/cron-parser](https://github.com/RedHogs/cron-parser)
- Ruby - [https://github.com/alpinweis/cronex](https://github.com/alpinweis/cronex)
- Golang - [https://github.com/jsuar/go-cron-descriptor](https://github.com/jsuar/go-cron-descriptor)
## Running Unit Tests
```bash
python setup.py test
```
## Translating
cron-descriptor is using [Gettext](https://www.gnu.org/software/gettext/) for translations.
> To create new translation or edit existing one, i suggest using [Poedit](https://poedit.net/).
You can copy/rename and translate any file from `locale` directory:
```bash
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:
```bash
cd cron_descriptor
xgettext *.py -o locale/YOUR_LOCALE_CODE.po
```
Generating *.mo file from *.po file. In root directory run command:
```bash
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:
```bash
ln -s ../../code-check.sh .git/hooks/pre-commit
```
Then install dev requirements:
```bash
pip install .[dev,test]
```