Fixed calendar package
Project description
FixedCal
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
= 29month
= 13year
is obviously the ending yearis_year_day
= Trueweek_of_month
= 4weekday
= Noneweek_of_year
= 52year_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
= 169day_of_month
= 29month
= 6is_leap_day
= Trueis_leap_year
= Trueweek_of_month
= 4weekday
= Noneweek_of_year
= 24year_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
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
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
Algorithm | Hash digest | |
---|---|---|
SHA256 | abef4e9f3cc0d1f45cca3e24e3ec1461cb6ee11a5dfa829824df1b911cb0f7fa |
|
MD5 | 90b940ccc08bd6b5afa7de8efbd49775 |
|
BLAKE2b-256 | 4c161139e59794b62e2fa2a0f2892a29d484616359d601f8ec618d1a18a65670 |
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
Algorithm | Hash digest | |
---|---|---|
SHA256 | 3b3305a53670b251b26ec1271ae28c487fc10ad4df8031efdf44b3f655854509 |
|
MD5 | 117a039d99ec90ccc9cae7a0c110ddc0 |
|
BLAKE2b-256 | 8e03ef789d1915ca9a43dd6759d8a00b908da82e4f64a9b917190a7f4eca41fd |