205 lines
7.9 KiB
Plaintext
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
|
|
|
|
[](https://github.com/Salamek/cron-descriptor/actions/workflows/python-test.yml)
|
|
[](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]
|
|
```
|