Skip to main content

Fixed calendar package

Project description

FixedCal

CI codecov GitHub

Python package for international fixed calendar dates.

What is that?

International fixed calendar is an alternative calendar system. It divides year into 13 even months by adding a month called Sol between June and July. Each month starts with Sunday and has exactly 28 days or 4 weeks. An additional year day is added to the end of the year and it does not belong to any of the months and has no weekday. You can read more about IFC on Wikipedia.

Installation

This package is available via PyPI:

pip install fixedcal

You can also download the package directly from releases.

Usage

Date initialization

from fixedcal import FixedDate

# Date of today
fixed_date = FixedDate.today()

# From native datetime
import datetime
february_seventh = datetime.date(2022, 2, 7)
fixed_date = FixedDate(february_seventh)

# From day's ordinal in year
fixed_date = FixedDate(day_of_year=107, year=2022)

Date's properties

from fixedcal import FixedDate
import datetime
fixed_date = FixedDate(datetime.date(2022, 8, 12))

fixed_date.date           # datetime.date(2022, 8, 12)
fixed_date.day_of_year    # 224
fixed_date.day_of_month   # 28
fixed_date.month          # 8
fixed_date.year           # 2022
fixed_date.is_year_day    # False
fixed_date.is_leap_day    # False
fixed_date.is_leap_year   # False
fixed_date.week_of_month  # 4
fixed_date.weekday        # 7
fixed_date.week_of_year   # 32
fixed_date.year_quarter   # 3

Date's operations

from fixedcal import FixedDate
from datetime import date, timedelta

fixed_date = FixedDate(date(2022, 12, 6))
jan_first = FixedDate(date(2023, 1, 1))

str(fixed_date)                       # 2022-13-04

new_fixed = fixed_date + timedelta(3) # FixedDate 3 days ahead
new_fixed = fixed_date - timedelta(2) # FixedDate 2 days before
new_fixed = jan_first - fixed_date    # timedelta between dates

fixed_date == fixed_date              # True
fixed_date != jan_first	              # True
jan_first < fixed_date                # False

Year day

Year day is the day after the last of December and before the first of January. For that date, FixedDate gives the following property values.

  • day_of_year = 365 (366 on leap years)
  • day_of_month = 29
  • month = 13
  • year is obviously the ending year
  • is_year_day = True
  • week_of_month = 4
  • weekday = None
  • week_of_year = 52
  • year_quarter = 4

Leap day

Leap day occurres on the same years as in Gregorian calendar. However, the placement of that day is different: after the last day of June and before the first day of Sol (17th June in Gregorian). The following properties are given by FixedDate for leap day:

  • day_of_year = 169
  • day_of_month = 29
  • month = 6
  • is_leap_day = True
  • is_leap_year = True
  • week_of_month = 4
  • weekday = None
  • week_of_year = 24
  • year_quarter = 2

Contributing

Yes, you can contribute in the development of this package. If you find a bug or have a feature request, please file an issue. You can also modify the code yourself and create a pull request.

You need Poetry to manage the development environment. After downloading the source code of this package, run poetry install to install development dependencies and to set up a compatible Python environment.

Please check the following topics before creating a pull request:

  • Your changes should not create new Pylint errors.
  • There should be proper unit tests included in the pull request. This consists of high branch coverage (>90%) and quality of the tests. Working with dates has a lot of corner cases and tests are the best way to avoid bugs.
  • The structure of the project should remain healthy: split the code between modules and packages.

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

fixedcal-1.0.0.tar.gz (6.1 kB view details)

Uploaded Source

Built Distribution

fixedcal-1.0.0-py3-none-any.whl (6.4 kB view details)

Uploaded Python 3

File details

Details for the file fixedcal-1.0.0.tar.gz.

File metadata

  • Download URL: fixedcal-1.0.0.tar.gz
  • Upload date:
  • Size: 6.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.3.1 CPython/3.11.0 Darwin/22.1.0

File hashes

Hashes for fixedcal-1.0.0.tar.gz
Algorithm Hash digest
SHA256 abef4e9f3cc0d1f45cca3e24e3ec1461cb6ee11a5dfa829824df1b911cb0f7fa
MD5 90b940ccc08bd6b5afa7de8efbd49775
BLAKE2b-256 4c161139e59794b62e2fa2a0f2892a29d484616359d601f8ec618d1a18a65670

See more details on using hashes here.

File details

Details for the file fixedcal-1.0.0-py3-none-any.whl.

File metadata

  • Download URL: fixedcal-1.0.0-py3-none-any.whl
  • Upload date:
  • Size: 6.4 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.3.1 CPython/3.11.0 Darwin/22.1.0

File hashes

Hashes for fixedcal-1.0.0-py3-none-any.whl
Algorithm Hash digest
SHA256 3b3305a53670b251b26ec1271ae28c487fc10ad4df8031efdf44b3f655854509
MD5 117a039d99ec90ccc9cae7a0c110ddc0
BLAKE2b-256 8e03ef789d1915ca9a43dd6759d8a00b908da82e4f64a9b917190a7f4eca41fd

See more details on using hashes here.

Supported by

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