cron-descriptor


Namecron-descriptor JSON
Version 2.0.6 PyPI version JSON
download
home_pageNone
SummaryA Python library that converts cron expressions into human readable strings.
upload_time2025-09-03 16:30:22
maintainerNone
docs_urlNone
authorNone
requires_python>=3.9
licenseNone
keywords
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage No coveralls.
            # 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]
```

            

Raw data

            {
    "_id": null,
    "home_page": null,
    "name": "cron-descriptor",
    "maintainer": null,
    "docs_url": null,
    "requires_python": ">=3.9",
    "maintainer_email": null,
    "keywords": null,
    "author": null,
    "author_email": "Adam Schubert <adam.schubert@sg1-game.net>",
    "download_url": "https://files.pythonhosted.org/packages/7c/31/0b21d1599656b2ffa6043e51ca01041cd1c0f6dacf5a3e2b620ed120e7d8/cron_descriptor-2.0.6.tar.gz",
    "platform": null,
    "description": "# Cron Descriptor\n\n[![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)\n[![Donate](https://img.shields.io/badge/Donate-PayPal-green.svg)](https://www.paypal.me/salamek)\n\nA Python library that converts cron expressions into human readable strings. Ported to Python from https://github.com/bradyholt/cron-expression-descriptor.\n\n**Author**: Adam Schubert (https://www.salamek.cz)  \n**Original Author & Credit**: Brady Holt (http://www.geekytidbits.com)  \n**License**: [MIT](http://opensource.org/licenses/MIT)\n\n## Features         \n * Supports all cron expression special characters including * / , - ? L W, #\n * Supports 5, 6 (w/ seconds or year), or 7 (w/ seconds and year) part cron expressions\n * Provides casing options (Sentence, Title, Lower, etc.)\n * Localization with support for ~31 languages\n * Supports Python 3.9 - 3.13\n\n## Installation\nUsing PIP\n```bash\npip install cron-descriptor\n```\n\n## Usage example\n\n### Simple\n```python\nfrom cron_descriptor import get_description, ExpressionDescriptor\n\nprint(get_description(\"* 2 3 * *\"))\n\n#OR\n\nprint(str(ExpressionDescriptor(\"* 2 3 * *\")))\n```\n\n### Advanced\n```python\n# Consult Options.py/CasingTypeEnum.py/DescriptionTypeEnum.py for more info\nfrom cron_descriptor import Options, CasingTypeEnum, DescriptionTypeEnum, ExpressionDescriptor\n\ndescriptor = ExpressionDescriptor(\n    expression = \"*/10 * * * *\",\n    casing_type = CasingTypeEnum.Sentence,\n    use_24hour_time_format = True\n)\n\n# GetDescription uses DescriptionTypeEnum.FULL by default:\nprint(descriptor.get_description())\nprint(f\"{descriptor = }\")\n\n# Or passing Options class as second argument:\n\noptions = Options()\noptions.casing_type = CasingTypeEnum.Sentence\noptions.use_24hour_time_format = True\ndescriptor = ExpressionDescriptor(\"*/10 * * * *\", options)\nprint(descriptor.get_description(DescriptionTypeEnum.FULL))\n```\n\n## Languages Available\n\n| Language            | Locale Code | Contributor                                             |\n|---------------------|-------------|---------------------------------------------------------|\n| English             | en          | [Brady Holt](https://github.com/bradyholt)              |\n| Chinese Simplified  | zh_CN       | [Star Peng](https://github.com/starpeng)                |\n| Chinese Traditional | zh_TW       | [Ricky Chiang](https://github.com/metavige)             |\n| Czech               | cs_CZ       | [Adam Schubert](https://github.com/salamek)             |\n| Danish              | da_DK       | [Rasmus Melchior Jacobsen](https://github.com/rmja)     |\n| Dutch               | nl_NL       | [TotalMace](https://github.com/TotalMace)               |\n| Finnish             | fi_FI       | [Mikael Rosenberg](https://github.com/MR77FI)           |\n| French              | fr_FR       | [Arnaud TAMAILLON](https://github.com/Greybird)         |\n| German              | de_DE       | [Michael Schuler](https://github.com/mschuler)          |\n| Hebrew              | he_IL       | [Ariel Deil](https://github.com/arieldeil)              |\n| Hungarian           | hu_HU       | [Varga Mikl\u00f3s](https://github.com/Micky2149)            |\n| Italian             | it_IT       | [rinaldihno](https://github.com/rinaldihno)             |\n| Japanese            | ja_JP       | [Tho Nguyen](https://github.com/tho-asterist)           |\n| Korean              | ko_KR       | [KyuJoo Han](https://github.com/hanqyu)                 |\n| Norwegian           | nb_NO       | [Siarhei Khalipski](https://github.com/KhalipskiSiarhei)|\n| Persian             | fa_IR       | [A. Bahrami](https://github.com/alirezakoo)             |\n| Polish              | pl_PL       | [foka](https://github.com/foka)                         |\n| Portuguese          | pt_PT       | [Renato Lima](https://github.com/natenho)               |\n| Portuguese (Brazil) | pt_BR       | [Renato Lima](https://github.com/natenho)               |\n| Romanian            | ro_RO       | [Illegitimis](https://github.com/illegitimis)           |\n| Russian             | ru_RU       | [LbISS](https://github.com/LbISS)                       |\n| Slovenian           | sl_SI       | [Jani Bevk](https://github.com/jenzy)                   |\n| Spanish             | es_ES       | [Ivan Santos](https://github.com/ivansg)                |\n| Spanish (Mexico)    | es_MX       | [Ion Mincu](https://github.com/ionmincu)                |\n| Swedish             | sv_SE       | [\u00c5ke Engelbrektson](https://github.com/eson57)          |\n| Vietnamese          | vi_VN       | [Nguyen Duc Son](https://github.com/ali33)              |\n| Turkish             | tr_TR       | [Mustafa SADED\u0130L](https://github.com/sadedil)           |\n| Tamil               | ta_IN       | [Sankar Hari](https://github.com/sankarhari)            |\n| Ukrainian           | uk_UA       | [Taras](https://github.com/tbudurovych)                 |\n| Greek               | el_GR       | [hardra1n](https://github.com/Hardra1n)                 |\n| Kazakh              | kk_KZ       | [hardra1n](https://github.com/Hardra1n)                 |\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n<!-- SOON\n## Demo\n\n\n\n## Download\n\n-->\n\n## Original Source\n - .NET - [https://github.com/bradyholt/cron-expression-descriptor](https://github.com/bradyholt/cron-expression-descriptor)\n\n## Ports\n - Java     - [https://github.com/RedHogs/cron-parser](https://github.com/RedHogs/cron-parser)\n - Ruby     - [https://github.com/alpinweis/cronex](https://github.com/alpinweis/cronex)\n - Golang   - [https://github.com/jsuar/go-cron-descriptor](https://github.com/jsuar/go-cron-descriptor)\n\n## Running Unit Tests\n\n```bash\npython setup.py test\n```\n\n## Translating\ncron-descriptor is using [Gettext](https://www.gnu.org/software/gettext/) for translations.\n\n> To create new translation or edit existing one, i suggest using [Poedit](https://poedit.net/).\n\nYou can copy/rename and translate any file from `locale` directory:\n```bash\ncp ./cron_descriptor/locale/de_DE.po ./cron_descriptor/locale/YOUR_LOCALE_CODE.po\npoedit ./cron_descriptor/locale/YOUR_LOCALE_CODE.po\n```\nor you can generate new untranslated *.po file from sources by running in `cron_descriptor` directory:\n```bash\ncd cron_descriptor\nxgettext *.py -o locale/YOUR_LOCALE_CODE.po\n```\n\nGenerating *.mo file from *.po file. In root directory run command:\n```bash\nmsgfmt -o cron_descriptor/locale/YOUR_LOCALE_CODE.mo cron_descriptor/locale/YOUR_LOCALE_CODE.po\n```\n\n## Developing\n\nAll suggestions and PR's are welcomed\n\nJust clone this repository and register pre-commit hook by running:\n\n```bash\nln -s ../../code-check.sh .git/hooks/pre-commit\n```\n\nThen install dev requirements:\n\n```bash\npip install .[dev,test]\n```\n",
    "bugtrack_url": null,
    "license": null,
    "summary": "A Python library that converts cron expressions into human readable strings.",
    "version": "2.0.6",
    "project_urls": {
        "Homepage": "https://github.com/Salamek/cron-descriptor"
    },
    "split_keywords": [],
    "urls": [
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "21cc361326a54ad92e2e12845ad15e335a4e14b8953665007fb514d3393dfb0f",
                "md5": "bb099e395999872109f85036e20adbc3",
                "sha256": "3a1c0d837c0e5a32e415f821b36cf758eb92d510e6beff8fbfe4fa16573d93d6"
            },
            "downloads": -1,
            "filename": "cron_descriptor-2.0.6-py3-none-any.whl",
            "has_sig": false,
            "md5_digest": "bb099e395999872109f85036e20adbc3",
            "packagetype": "bdist_wheel",
            "python_version": "py3",
            "requires_python": ">=3.9",
            "size": 74446,
            "upload_time": "2025-09-03T16:30:21",
            "upload_time_iso_8601": "2025-09-03T16:30:21.397858Z",
            "url": "https://files.pythonhosted.org/packages/21/cc/361326a54ad92e2e12845ad15e335a4e14b8953665007fb514d3393dfb0f/cron_descriptor-2.0.6-py3-none-any.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "7c310b21d1599656b2ffa6043e51ca01041cd1c0f6dacf5a3e2b620ed120e7d8",
                "md5": "3a70cae4c8a2b050c531c530c0d36b08",
                "sha256": "e39d2848e1d8913cfb6e3452e701b5eec662ee18bea8cc5aa53ee1a7bb217157"
            },
            "downloads": -1,
            "filename": "cron_descriptor-2.0.6.tar.gz",
            "has_sig": false,
            "md5_digest": "3a70cae4c8a2b050c531c530c0d36b08",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": ">=3.9",
            "size": 49456,
            "upload_time": "2025-09-03T16:30:22",
            "upload_time_iso_8601": "2025-09-03T16:30:22.434026Z",
            "url": "https://files.pythonhosted.org/packages/7c/31/0b21d1599656b2ffa6043e51ca01041cd1c0f6dacf5a3e2b620ed120e7d8/cron_descriptor-2.0.6.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2025-09-03 16:30:22",
    "github": true,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "github_user": "Salamek",
    "github_project": "cron-descriptor",
    "travis_ci": false,
    "coveralls": false,
    "github_actions": true,
    "lcname": "cron-descriptor"
}
        
Elapsed time: 1.34516s