Skip to main content

Time interval parsing utilities for multiple languages.

Project description

Aika

Time interval parsing utilities for multiple languages.

About

Aika provides date- and time-range parsing utilities for multiple languages. It is based on dateparser, arbitrary-dateparser, and DateRangeParser, and aims for DWIM-like convenience and usefulness.

Currently, it supports 200 language locales through dateparser, and more specific support for English and German through arbitrary-dateparser. Contributions for other languages are welcome.

Setup

Install the most recent version of Aika.

pip install --upgrade aika

Usage

>>> import datetime as dt
>>> from aika import TimeIntervalParser
>>> 
>>> ti = TimeIntervalParser()
>>>
>>> ti.parse("Sat - Tue")
>>> (dt.datetime(2023, 8, 26, 0, 0), dt.datetime(2023, 8, 29, 23, 59, 59, 999999))
>>>
>>> ti.parse_single("1. Juli")
>>> dt.datetime(2023, 7, 1, 0, 0)

Example Expressions

Aika understands all types of date-/time-range expressions like provided by the packages it is based upon, and works with single dates too. This section enumerates a few examples.

dateparser

Calendar notations
  • Week: 2025W01
  • Month: 2025M02, 2025-02
  • Quarter: 2025Q03
  • Year: 2025
Time deltas
  • Day: -1d, -1 day
  • Week: -1w, -1 week
  • Month: -1M, -1 month
  • Year: -1y, -1 year
  • Quarter: -3M, -3 months
  • Mixed: -3d3h5m30s

arbitrary-dateparser » English

  • now
  • today
  • last week to next friday
  • tomorrow - next week
  • next month
  • december
  • July to December
  • jul 1 to jul 7
  • Sat - Tue
  • in March
  • 2024-08-20

arbitrary-dateparser » German

  • jetzt
  • heute
  • letzte woche bis nächsten freitag
  • morgen - nächste woche
  • nächster monat
  • dezember
  • Juli-Dezember
  • jul 1 to jul 7
  • von Samstag bis Dienstag
  • im März
  • 20. August 2024
  • 20.8.2024
  • 20.08.2024

DateRangeParser » English

  • 1st july
  • March 2024
  • July to December
  • 27th-29th June 2010
  • 30 May to 9th Aug
  • 3rd Jan 1980 -- 2nd Jan 2013
  • Wed 23 Jan -> Sat 16 February 2013
  • Tuesday 29 May - Sat 2 June 2012
  • From 1 to 9 Jul
  • jul 1 to jul 9
  • 14th July 1988
  • Jan 2011 - Mar 2014
  • 07:00 Tue 7th June - 17th July 3:30pm
    Caveat: Times will currently be ignored.

DateRangeParser » German

  • 1. Juli
  • 1. bis 7. Juli
  • März 2024
  • Juli bis Dezember
  • Vom 3. März bis zum 9. März 2024

Advanced Usage

By specifying default_start_time and default_end_time arguments, the daterange boundaries will snap to the given times when they otherwise would be "beginning of day" (00:00) or "end of day" (23:59).

import datetime as dt
from aika import TimeIntervalParser

dr = TimeIntervalParser(
    snap_days=True,
    default_start_time=dt.time(hour=9),
    default_end_time=dt.time(hour=17),
)
dr.parse("Sat - Tue")
(datetime(2023, 8, 26, 9, 0), datetime(2023, 8, 29, 17, 0))

Troubleshooting

If you see an error message like locale.Error: unsupported locale setting for code like this,

import locale

locale.setlocale(locale.LC_ALL, "de_DE.UTF-8")

you will need to generate the German locales.

apt-get update
apt-get install --yes tzdata locales
locale-gen de_DE.UTF-8

Development

Acquire source code and install development sandbox.

git clone https://github.com/panodata/aika
cd aika
uv venv --seed --python 3.11
source .venv/bin/activate
uv pip install --editable='.[develop,docs,test]'

Run linters and software tests:

source .venv/bin/activate
poe check

Etymology

Aika means "time" in the Finnish language.

Acknowledgements

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

aika-0.2.0.tar.gz (22.2 kB view details)

Uploaded Source

Built Distribution

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

aika-0.2.0-py3-none-any.whl (19.7 kB view details)

Uploaded Python 3

File details

Details for the file aika-0.2.0.tar.gz.

File metadata

  • Download URL: aika-0.2.0.tar.gz
  • Upload date:
  • Size: 22.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.11.11

File hashes

Hashes for aika-0.2.0.tar.gz
Algorithm Hash digest
SHA256 52f9a248a3ebee9ef920c1ffa1f0f5426b225eb2969b03d433a554263210737e
MD5 75eb710d33b7fbda26ea63d2a3a4352e
BLAKE2b-256 6fd959fd693c4eade2b442d1b00717311c71c80cca151d9e8dba8cae048936e8

See more details on using hashes here.

File details

Details for the file aika-0.2.0-py3-none-any.whl.

File metadata

  • Download URL: aika-0.2.0-py3-none-any.whl
  • Upload date:
  • Size: 19.7 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.11.11

File hashes

Hashes for aika-0.2.0-py3-none-any.whl
Algorithm Hash digest
SHA256 278d565bdc4ab04decce3708992716d80e725ab426bf990acc4f5e95cdc72906
MD5 2d2cb2a08680e6632bd2a0c4d637d802
BLAKE2b-256 83905d3a05cd018f2714dff2e3eb32f6d04b0bc53d32dd2bdcb10f47e0a8f469

See more details on using hashes here.

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