Skip to main content

Aika

Status CI Coverage Downloads per month

License Release Notes PyPI Version Python Versions

About

Time interval parsing utilities for multiple languages.

Details

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_hours=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

Metadata

Release files for aika 0.3.1

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for aika 0.3.1
File Size Uploaded
aika-0.3.1.tar.gz 23.8 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for aika 0.3.1
File Interpreter ABI Platform
aika-0.3.1-py3-none-any.whl Python 3 none any Details

Total release size: 44.2 kB

Release files / aika-0.3.1.tar.gz

Download URL aika-0.3.1.tar.gz
Size 23.8 kB
Tags Source
SHA-256 checksum
How to use checksums
094569ef4865442c2f5442ac90e48ba4085696d7742b9770975fd2be0236c7c2
BLAKE2b-256 checksum
How to use checksums
b608a05d66ff8df784cbbc79a33808a41916246da5fe003bb952f139770d722d
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.13.11

Release files / aika-0.3.1-py3-none-any.whl

Download URL aika-0.3.1-py3-none-any.whl
Size 20.4 kB
Tags Python 3
SHA-256 checksum
How to use checksums
eeb645044b63eb6c078023119f7c251e876f98cf0ccc32d57fc51d78d65e2f53
BLAKE2b-256 checksum
How to use checksums
6a60083ad38cf37a3c895067fa0976fd58054b8d76ec007b9d3ea41ac721a891
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.13.11

Release history Release notifications | RSS feed

This release

0.3.1 This release

2 release files

0.3.0

2 release files

0.2.1

2 release files

0.2.0

2 release files

0.1.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page