fixed pylint errors
This commit is contained in:
parent
6027bdc2d0
commit
dd45d86732
@ -1 +1,3 @@
|
|||||||
from fixedcal.core.date import FixedDate
|
"""A module gathering all needed classes easily available for the user of this library"""
|
||||||
|
|
||||||
|
from fixedcal.core.date import FixedDate
|
||||||
|
@ -1,28 +1,46 @@
|
|||||||
|
"""Module containing class for IFC date"""
|
||||||
|
|
||||||
|
import datetime as dt
|
||||||
from datetime import datetime, timedelta
|
from datetime import datetime, timedelta
|
||||||
from fixedcal.services.leap_days import is_leap_year, gregorian_leap_days_between, fixed_leap_days_between
|
from fixedcal.services.leap_days import is_leap_year,\
|
||||||
|
gregorian_leap_days_between, fixed_leap_days_between
|
||||||
|
|
||||||
class FixedDate:
|
class FixedDate:
|
||||||
def __init__(self, date = None, day_of_year = None, year = None):
|
"""IFC date
|
||||||
|
|
||||||
|
Construct the date by passing either date argument or
|
||||||
|
both day_of_year and year arguments.
|
||||||
|
|
||||||
|
Args:
|
||||||
|
date (Optional[datetime.datetime]): Gregorian date that will be represented
|
||||||
|
day_of_year (Optional[int]): The ordinal of the date in year. In range 1...366.
|
||||||
|
year (Optional[int]): The year in range 1...9999.
|
||||||
|
"""
|
||||||
|
|
||||||
|
def __init__(self,
|
||||||
|
date: dt.datetime = None,
|
||||||
|
day_of_year: int = None,
|
||||||
|
year: int = None) -> None:
|
||||||
if date is not None:
|
if date is not None:
|
||||||
init_tuple = self._from_datetime(date)
|
init_tuple = self._from_datetime(date)
|
||||||
elif day_of_year is not None and year is not None:
|
elif day_of_year is not None and year is not None:
|
||||||
init_tuple = self._from_day_of_year(day_of_year, year)
|
init_tuple = self._from_day_of_year(day_of_year, year)
|
||||||
else:
|
else:
|
||||||
raise ValueError("Invalid FixedDate initialization")
|
raise ValueError("Invalid FixedDate initialization")
|
||||||
|
|
||||||
self._day_of_year, self._year = init_tuple
|
self._day_of_year, self._year = init_tuple
|
||||||
|
|
||||||
def _from_datetime(self, _datetime: datetime) -> tuple:
|
def _from_datetime(self, date: dt.datetime) -> tuple:
|
||||||
"""Initialize this class with native datetime object.
|
"""Initialize this class with native datetime object.
|
||||||
|
|
||||||
Args:
|
Args:
|
||||||
_datetime (datetime): _description_
|
date (datetime): _description_
|
||||||
|
|
||||||
Returns:
|
Returns:
|
||||||
tuple: day of year (1...366) and year (1...9999) in a tuple
|
tuple: day of year (1...366) and year (1...9999) in a tuple
|
||||||
"""
|
"""
|
||||||
day_of_year = _datetime.timetuple().tm_yday
|
day_of_year = date.timetuple().tm_yday
|
||||||
return self._from_day_of_year(day_of_year, _datetime.year)
|
return self._from_day_of_year(day_of_year, date.year)
|
||||||
|
|
||||||
def _from_day_of_year(self, day_of_year: int, year: int) -> tuple:
|
def _from_day_of_year(self, day_of_year: int, year: int) -> tuple:
|
||||||
"""Initialize this class with day of year and year.
|
"""Initialize this class with day of year and year.
|
||||||
@ -37,7 +55,12 @@ class FixedDate:
|
|||||||
return (day_of_year, year)
|
return (day_of_year, year)
|
||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
def today(self) -> "FixedDate":
|
def today(cls) -> "FixedDate":
|
||||||
|
"""Initialize fixed date representing today.
|
||||||
|
|
||||||
|
Returns:
|
||||||
|
FixedDate: Today as fixed date.
|
||||||
|
"""
|
||||||
return FixedDate(date=datetime.today())
|
return FixedDate(date=datetime.today())
|
||||||
|
|
||||||
@property
|
@property
|
||||||
@ -71,7 +94,12 @@ class FixedDate:
|
|||||||
return datetime(self.year, 1, 1) + timedelta(self._day_of_year-1)
|
return datetime(self.year, 1, 1) + timedelta(self._day_of_year-1)
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def day_of_year(self):
|
def day_of_year(self) -> int:
|
||||||
|
"""Ordinal of the day in year. In range 1...366.
|
||||||
|
|
||||||
|
Returns:
|
||||||
|
int: Ordinal in year.
|
||||||
|
"""
|
||||||
return self._day_of_year
|
return self._day_of_year
|
||||||
|
|
||||||
@property
|
@property
|
||||||
@ -99,6 +127,11 @@ class FixedDate:
|
|||||||
|
|
||||||
@property
|
@property
|
||||||
def is_year_day(self) -> bool:
|
def is_year_day(self) -> bool:
|
||||||
|
"""Whether the day is year day.
|
||||||
|
|
||||||
|
Returns:
|
||||||
|
bool: Is the day year day
|
||||||
|
"""
|
||||||
if self.is_leap_year:
|
if self.is_leap_year:
|
||||||
return self._day_of_year == 366
|
return self._day_of_year == 366
|
||||||
return self._day_of_year == 365
|
return self._day_of_year == 365
|
||||||
@ -150,15 +183,15 @@ class FixedDate:
|
|||||||
return 4
|
return 4
|
||||||
return ((self.day_of_year-1) // 91) + 1
|
return ((self.day_of_year-1) // 91) + 1
|
||||||
|
|
||||||
def __eq__(self, o: "FixedDate") -> bool:
|
def __eq__(self, other: "FixedDate") -> bool:
|
||||||
return self._day_of_year == o.day_of_year and self._year == o.year
|
return self._day_of_year == other.day_of_year and self._year == other.year
|
||||||
|
|
||||||
def __gt__(self, o: "FixedDate") -> bool:
|
def __gt__(self, other: "FixedDate") -> bool:
|
||||||
if self._year == o.year:
|
if self._year == other.year:
|
||||||
return self._day_of_year > o.day_of_year
|
return self._day_of_year > other.day_of_year
|
||||||
return self._year > o.year
|
return self._year > other.year
|
||||||
|
|
||||||
def __add__(self, o: timedelta) -> "FixedDate":
|
def __add__(self, other: timedelta) -> "FixedDate":
|
||||||
"""Addition of FixedDate and timedelta.
|
"""Addition of FixedDate and timedelta.
|
||||||
Does not modify this instance, but creates new one.
|
Does not modify this instance, but creates new one.
|
||||||
|
|
||||||
@ -168,10 +201,10 @@ class FixedDate:
|
|||||||
Returns:
|
Returns:
|
||||||
FixedDate: New FixedDate instance that will hold the new date.
|
FixedDate: New FixedDate instance that will hold the new date.
|
||||||
"""
|
"""
|
||||||
new_date = self.datetime + o
|
new_date = self.datetime + other
|
||||||
return FixedDate(date=new_date)
|
return FixedDate(date=new_date)
|
||||||
|
|
||||||
def __sub__(self, o):
|
def __sub__(self, other):
|
||||||
"""Subtraction of FixedDate and some other value.
|
"""Subtraction of FixedDate and some other value.
|
||||||
Does not modify either one of the values.
|
Does not modify either one of the values.
|
||||||
|
|
||||||
@ -186,13 +219,13 @@ class FixedDate:
|
|||||||
timedelta will be returned representing the difference of given fixed dates.
|
timedelta will be returned representing the difference of given fixed dates.
|
||||||
With timedelta as argument, new FixedDate will be returned.
|
With timedelta as argument, new FixedDate will be returned.
|
||||||
"""
|
"""
|
||||||
if isinstance(o, FixedDate):
|
if isinstance(other, FixedDate):
|
||||||
difference = self.datetime - o.datetime
|
difference = self.datetime - other.datetime
|
||||||
greg_leap_days = gregorian_leap_days_between(self.datetime, o.datetime)
|
greg_leap_days = gregorian_leap_days_between(self.datetime, other.datetime)
|
||||||
fixed_leap_days = fixed_leap_days_between(self.datetime, o.datetime)
|
fixed_leap_days = fixed_leap_days_between(self.datetime, other.datetime)
|
||||||
return difference - timedelta(greg_leap_days) + timedelta(fixed_leap_days)
|
return difference - timedelta(greg_leap_days) + timedelta(fixed_leap_days)
|
||||||
elif isinstance(o, timedelta):
|
if isinstance(other, timedelta):
|
||||||
new_date = self.datetime - o
|
new_date = self.datetime - other
|
||||||
return FixedDate(date=new_date)
|
return FixedDate(date=new_date)
|
||||||
raise ValueError("Invalid subtractor type, expected FixedDate or timedelta")
|
raise ValueError("Invalid subtractor type, expected FixedDate or timedelta")
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user