Skip to main content

dateme

Dates and intervals.

Build Status codecov License PyPI

dateme is a recurrence and scheduling engine. Given a schedule JSON object, it computes occurrence instants with timezone handling, calendar overlays, makeup rules, bounds, traces, and bindings for Python and JavaScript.

{
  "freq": { "type": "weekly", "days": ["mon"], "time": "17:30" },
  "timezone": "America/New_York",
  "overlays": [{ "calendar": "nyse_holiday", "rule": "exclude" }],
  "makeup": "after"
}

Install

pip install dateme

For JavaScript development from this repository:

cd js
pnpm install
pnpm build

Quick Python Example

from datetime import datetime, timezone
from dateme import Schedule

schedule = Schedule({
    "freq": {"type": "weekly", "days": ["mon"], "time": "17:30"},
    "timezone": "America/New_York",
    "overlays": [{"calendar": "nyse_holiday", "rule": "exclude"}],
    "makeup": "after",
})

after = datetime(2026, 1, 13, tzinfo=timezone.utc)
schedule.next(after)
# datetime.datetime(2026, 1, 20, 22, 30, tzinfo=datetime.timezone.utc)

Quick JavaScript Example

import init, { Schedule } from "dateme";

await init();

const schedule = new Schedule({
  freq: { type: "weekly", days: ["mon"], time: "17:30" },
  timezone: "America/New_York",
  overlays: [{ calendar: "nyse_holiday", rule: "exclude" }],
  makeup: "after",
});

schedule.next(new Date("2026-01-13T00:00:00Z"));
// 2026-01-20T22:30:00.000Z

Documentation

  • Getting started: a first working schedule.
  • How-to guides: recipes for market calendars, makeup, custom calendars, traces, iteration, and persistence.
  • Schedule model: complete JSON reference.
  • Python API: constructors, query methods, typed builders, providers, traces, and iteration.
  • JavaScript API: WebAssembly initialization, methods, TypeScript types, providers, traces, and iteration.
  • How the engine works: background on recurrence generation, overlays, makeup, DST, bounds, and termination.

Supported Schedule Features

  • Frequencies: hourly, daily, weekly, every_n_days, every_n_weeks, monthly_by_day, monthly_by_weekday, yearly, quarterly, custom_cron.
  • Calendars: US federal holidays/business days, NYSE holidays/trading days, inline date sets, unions, differences, and custom providers.
  • Makeup rules: none, before, after, nearest, weekday maps, cascades, hop limits, failure modes, weekday constraints, same-week constraints, weekend exclusion, and next-occurrence bounds.
  • Queries: next, previous, until, since, upcoming, trace variants, occurrence membership, counts, descriptions, and bounded iteration.

Metadata

Release files for dateme 0.2.0

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

Source distribution (sdist)

Source distribution for dateme 0.2.0
File Size Uploaded
dateme-0.2.0.tar.gz 1.7 MB Details

Built distributions (wheels)

Table of built distributions (wheels) for dateme 0.2.0
File Interpreter ABI Platform
dateme-0.2.0-cp311-abi3-manylinux_2_28_x86_64.whl CPython 3.11 abi3 Linux glibc 2.28+ x86-64 Details
dateme-0.2.0-cp310-abi3-win_amd64.whl CPython 3.10 abi3 Windows x86-64 Details
dateme-0.2.0-cp310-abi3-macosx_11_0_arm64.whl CPython 3.10 abi3 macOS 11.0+ ARM64 Details

Total release size: 6.6 MB

Release files / dateme-0.2.0.tar.gz

Download URL dateme-0.2.0.tar.gz
Size 1.7 MB
Tags Source
SHA-256 checksum
How to use checksums
5b6a3e859c806fca7200e758f150fdab8023778aa5906294553bdf4638a97ecd
BLAKE2b-256 checksum
How to use checksums
edfe77a3c74e9228c38bea720c08f0e9f26976675b055a1a5b3f40562f71525b
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.12.13

Release files / dateme-0.2.0-cp311-abi3-manylinux_2_28_x86_64.whl

Download URL dateme-0.2.0-cp311-abi3-manylinux_2_28_x86_64.whl
Size 1.6 MB
Tags CPython 3.11 Linux glibc 2.28+ x86-64 abi3
SHA-256 checksum
How to use checksums
b4a2d5014bd6e1478f9be3ad5503a0b3b8401414034b5ba6d4727354a9abb7e8
BLAKE2b-256 checksum
How to use checksums
8c2102ca6419b5c0dc488953820e40874afac2c1fbadadb45bfdd1cfb0460e58
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.12.13

Release files / dateme-0.2.0-cp310-abi3-win_amd64.whl

Download URL dateme-0.2.0-cp310-abi3-win_amd64.whl
Size 1.8 MB
Tags CPython 3.10 Windows x86-64 abi3
SHA-256 checksum
How to use checksums
9abe47b9783bb7ae5c5e9a0c0c10758b04412794ae7643d28d04283d12a1b20b
BLAKE2b-256 checksum
How to use checksums
be96e6cc9b6c88c6e5d0eff27cd29c552d76201c51ad78d8440835d14be3d487
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.12.13

Release files / dateme-0.2.0-cp310-abi3-macosx_11_0_arm64.whl

Download URL dateme-0.2.0-cp310-abi3-macosx_11_0_arm64.whl
Size 1.5 MB
Tags CPython 3.10 abi3 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
ee1bb958e88c4493067e6e379ec0ec617a6b7c9fc89bb327f7754ac787376f69
BLAKE2b-256 checksum
How to use checksums
a76be18edfd4c0dab2e737ca665ed9c5c0cee3498c919e79445da509c0d8894e
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.12.13

Release history Release notifications | RSS feed

This release

0.2.0 This release

4 release files

0.1.0

4 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