Skip to main content

Date-expression domain specific language parsing. A neat way to express things like "First Saturday of any year", or "3rd thursdays each month" and such

Project description

Cronspell Python Package / CLI Tool

Chronometry Spelled Out

Github Pages

Details Tests License - MIT
Features linting - Ruff types - mypy test - pytest Pre-Commit docs - mkdocs

Date-expression domain specific language parsing. A neat way to express things like "First Saturday of any year", or "3rd thursdays each month" and such.

Installation

Just the python module

If you need just the python function to parse cronspell expressions:

pip install cronspell

With cli tools

If you like to use it in your command line:

pip install cronspell[cli]

Features

Python

Cronspell is heavily inspired by Grafana's relative Date picker user interface. It shines when configuration is needed to reflect irregular date-distances such as in the example below.

cronspell lets you express relative dates such as "last saturday of last month" and converts it to a date object for use in your python project.

from cronspell import cronspell

# Cronspell's purpose is mostly to parse configuration files written in yaml
# and therein express relative date times in a human friendly manner.

# here is but a simple demo:
last_saturday = cronspell("now/sat")
...

Cli

The same interface, exposed to the command line. Formatted via isodate by default -- which is open for configuration using the --format option.

This is how you get the last saturday of the current month, for example:

cronspell parse "now /month + 34 days /m -1d /sat"

Example

To get the last saturday of last month:

"now /m -1d /sat"

The same, more verbose:

"now /month -1day /sat"

Pre-Commit Hook: Validation

Cronspell comes with a pre-commit hook that validates configured date-expressions based on yamlpath.

Check out the documentation for detailed instructions.

Credits

  • Domain-Specific-Language Parser: TextX
  • This package was created with The Hatchlor project template.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

cronspell-0.0.1a1.tar.gz (11.2 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

cronspell-0.0.1a1-py3-none-any.whl (11.7 kB view details)

Uploaded Python 3

File details

Details for the file cronspell-0.0.1a1.tar.gz.

File metadata

  • Download URL: cronspell-0.0.1a1.tar.gz
  • Upload date:
  • Size: 11.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/5.1.1 CPython/3.12.7

File hashes

Hashes for cronspell-0.0.1a1.tar.gz
Algorithm Hash digest
SHA256 05e5f35fca019988c35252bc2507e13e159a59c36612c8cb98507af4e168bb33
MD5 b3404ac1a0c897275950be3b3d8fade8
BLAKE2b-256 b1d32e1461b3a9b0b1dd18c122b27724d7694121be19277b988e68a78f982266

See more details on using hashes here.

Provenance

The following attestation bundles were made for cronspell-0.0.1a1.tar.gz:

Publisher: build.yml on iilei/cronspell

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file cronspell-0.0.1a1-py3-none-any.whl.

File metadata

  • Download URL: cronspell-0.0.1a1-py3-none-any.whl
  • Upload date:
  • Size: 11.7 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/5.1.1 CPython/3.12.7

File hashes

Hashes for cronspell-0.0.1a1-py3-none-any.whl
Algorithm Hash digest
SHA256 5c55eaff937dd570a5bc26217cab305b29a384a5e40039f92158f8a40df3af9f
MD5 caf4c9b177601418e7210e5a318ce7e0
BLAKE2b-256 888269c4e0e992b0a89311ffebdfc286034cec85cfe133cc6c3727125e173a03

See more details on using hashes here.

Provenance

The following attestation bundles were made for cronspell-0.0.1a1-py3-none-any.whl:

Publisher: build.yml on iilei/cronspell

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page