Skip to main content

Lightweight utilities for working with dates and time in Python.

Project description

⏳ Timecraftx

Lightweight, readable, and powerful date utilities for Python.
Get common date calculations like start_of_week, end_of_week, yesterday, tomorrow, or even next_friday and prev_monday — with beautiful, clean code.


🔧 Features

  • start_of_week() and end_of_week() with customizable week start (Sunday or Monday)
  • yesterday() and tomorrow() with optional reference date
  • next_weekday() and prev_weekday() with helpers like next_monday(), prev_sunday(), etc.
  • ✅ Works with date objects directly (no timezone mess)
  • ✅ Enum-based safety for weekdays via Day
  • ✅ Fully tested, no external dependencies

📦 Installation

pip install timecraftx

🚀 Quickstart

from datetime import date
from timecraftx import (
    start_of_week, end_of_week, yesterday, tomorrow,
    next_friday, prev_monday, Day
)

today = date(2025, 6, 4)

print(start_of_week(today))               # 2025-06-02 (Monday)
print(end_of_week(today))                 # 2025-06-08 (Sunday if Monday is week start)

print(yesterday(today))                   # 2025-06-03
print(tomorrow(today))                    # 2025-06-05

print(next_friday(today))                 # 2025-06-06
print(prev_monday(today))                 # 2025-06-02

📘 API Reference

Week Utilities

start_of_week(from_date: Optional[date] = None, week_start: Day = Day.MONDAY) -> date

Returns the first day of the week. Defaults to today and Monday.

end_of_week(from_date: Optional[date] = None, week_start: Day = Day.MONDAY) -> date

Returns the last day of the week (6 days after start_of_week).


Relative Days

yesterday(from_date: Optional[date] = None) -> date

Returns the day before the given date.

tomorrow(from_date: Optional[date] = None) -> date

Returns the day after the given date.


Next Weekday Utilities

next_weekday(from_date: Optional[date] = None, target: Day = Day.MONDAY) -> date

Returns the next occurrence of a specific weekday.

Day-specific helpers:

  • next_monday()
  • next_tuesday()
  • next_wednesday()
  • next_thursday()
  • next_friday()
  • next_saturday()
  • next_sunday()

Previous Weekday Utilities

prev_weekday(from_date: Optional[date] = None, target: Day = Day.MONDAY) -> date

Returns the most recent past occurrence of a specific weekday.

Day-specific helpers:

  • prev_monday()
  • prev_tuesday()
  • prev_wednesday()
  • prev_thursday()
  • prev_friday()
  • prev_saturday()
  • prev_sunday()

Enum

Day

Enum values for each day of the week, from Day.MONDAY to Day.SUNDAY.


🛡️ License

MIT License. See LICENSE.


👤 Author

Jacobo Tapia
GitHub: @Jatapiaro
Project: https://github.com/Jatapiaro/timecraftx


🌟 Contribute

Found a bug or have an idea? PRs welcome. Open an issue or submit a patch.

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

timecraftx-1.0.2.tar.gz (10.7 kB view details)

Uploaded Source

Built Distribution

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

timecraftx-1.0.2-py3-none-any.whl (6.5 kB view details)

Uploaded Python 3

File details

Details for the file timecraftx-1.0.2.tar.gz.

File metadata

  • Download URL: timecraftx-1.0.2.tar.gz
  • Upload date:
  • Size: 10.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: python-requests/2.32.3

File hashes

Hashes for timecraftx-1.0.2.tar.gz
Algorithm Hash digest
SHA256 62f2dc3a8c5a033b09432c8f50b6e7da9812ee3c62d8d18b4424b237ded11dca
MD5 076a54cd7b1ddd90cb54e1bfa45a2113
BLAKE2b-256 5c61ff5373d2385801c89e62b7910210ef7fb81c5786dd679ec6e41ffad6448e

See more details on using hashes here.

File details

Details for the file timecraftx-1.0.2-py3-none-any.whl.

File metadata

  • Download URL: timecraftx-1.0.2-py3-none-any.whl
  • Upload date:
  • Size: 6.5 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: python-requests/2.32.3

File hashes

Hashes for timecraftx-1.0.2-py3-none-any.whl
Algorithm Hash digest
SHA256 84dbdd0f9cdb5b2c558bf242380e2b80293da07dad939f516751e6fbd3a082bb
MD5 464adfe833c0e6a6f2ea3b6b6ed722d1
BLAKE2b-256 fc7c08127f7cd407eef5def586828ea4dc9f5cf1b6ad6f133983fe4daab07772

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