Skip to content

Commit 1dc9037

Browse files
committed
Separates constants from Pendulum class
1 parent 2c6d39b commit 1dc9037

File tree

6 files changed

+116
-92
lines changed

6 files changed

+116
-92
lines changed

pendulum/__init__.py

Lines changed: 8 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -5,22 +5,14 @@
55
from .period import Period
66

77
# Constants
8-
MONDAY = Pendulum.MONDAY
9-
TUESDAY = Pendulum.TUESDAY
10-
WEDNESDAY = Pendulum.WEDNESDAY
11-
THURSDAY = Pendulum.THURSDAY
12-
FRIDAY = Pendulum.FRIDAY
13-
SATURDAY = Pendulum.SATURDAY
14-
SUNDAY = Pendulum.SUNDAY
15-
16-
YEARS_PER_CENTURY = Pendulum.YEARS_PER_CENTURY
17-
YEARS_PER_DECADE = Pendulum.YEARS_PER_DECADE
18-
MONTHS_PER_YEAR = Pendulum.MONTHS_PER_YEAR
19-
WEEKS_PER_YEAR = Pendulum.WEEKS_PER_YEAR
20-
DAYS_PER_WEEK = Pendulum.DAYS_PER_WEEK
21-
HOURS_PER_DAY = Pendulum.HOURS_PER_DAY
22-
MINUTES_PER_HOUR = Pendulum.MINUTES_PER_HOUR
23-
SECONDS_PER_MINUTE = Pendulum.SECONDS_PER_MINUTE
8+
from .constants import (
9+
MONDAY, TUESDAY, WEDNESDAY,
10+
THURSDAY, FRIDAY, SATURDAY, SUNDAY,
11+
YEARS_PER_CENTURY, YEARS_PER_DECADE,
12+
MONTHS_PER_YEAR, WEEKS_PER_YEAR, DAYS_PER_WEEK,
13+
HOURS_PER_DAY, MINUTES_PER_HOUR, SECONDS_PER_MINUTE,
14+
SECONDS_PER_HOUR, SECONDS_PER_DAY
15+
)
2416

2517
# Helpers
2618
instance = Pendulum.instance

pendulum/constants.py

Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
# -*- coding: utf-8 -*-
2+
3+
# The day constants
4+
SUNDAY = 0
5+
MONDAY = 1
6+
TUESDAY = 2
7+
WEDNESDAY = 3
8+
THURSDAY = 4
9+
FRIDAY = 5
10+
SATURDAY = 6
11+
12+
# Number of X in Y.
13+
YEARS_PER_CENTURY = 100
14+
YEARS_PER_DECADE = 10
15+
MONTHS_PER_YEAR = 12
16+
WEEKS_PER_YEAR = 52
17+
DAYS_PER_WEEK = 7
18+
HOURS_PER_DAY = 24
19+
MINUTES_PER_HOUR = 60
20+
SECONDS_PER_MINUTE = 60
21+
SECONDS_PER_HOUR = MINUTES_PER_HOUR * SECONDS_PER_MINUTE
22+
SECONDS_PER_DAY = HOURS_PER_DAY * SECONDS_PER_HOUR
23+
24+
# Formats
25+
ATOM = '%Y-%m-%dT%H:%M:%S%_z'
26+
COOKIE = '%A, %d-%b-%Y %H:%M:%S %Z'
27+
ISO8601 = '%Y-%m-%dT%H:%M:%S%_z'
28+
ISO8601_EXTENDED = '%Y-%m-%dT%H:%M:%S.%f%_z'
29+
RFC822 = '%a, %d %b %y %H:%M:%S %z'
30+
RFC850 = '%A, %d-%b-%y %H:%M:%S %Z'
31+
RFC1036 = '%a, %d %b %y %H:%M:%S %z'
32+
RFC1123 = '%a, %d %b %Y %H:%M:%S %z'
33+
RFC2822 = '%a, %d %b %Y %H:%M:%S %z'
34+
RFC3339 = '%Y-%m-%dT%H:%M:%S%_z'
35+
RFC3339_EXTENDED = '%Y-%m-%dT%H:%M:%S.%f%_z'
36+
RSS = '%a, %d %b %Y %H:%M:%S %z'
37+
W3C = '%Y-%m-%dT%H:%M:%S%_z'

pendulum/interval.py

Lines changed: 12 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,11 @@
66
WordableIntervalMixin
77
)
88

9+
from .constants import (
10+
SECONDS_PER_DAY, SECONDS_PER_HOUR,
11+
SECONDS_PER_MINUTE
12+
)
13+
914

1015
def _divide_and_round(a, b):
1116
"""divide a by b and round result to the nearest integer
@@ -56,19 +61,19 @@ def __new__(cls, days=0, seconds=0, microseconds=0,
5661
m = -1
5762

5863
self._microseconds = round(total % 1 * 1e6)
59-
self._seconds = abs(int(total)) % 86400 * m
60-
self._days = abs(int(total)) // 86400 * m
64+
self._seconds = abs(int(total)) % SECONDS_PER_DAY * m
65+
self._days = abs(int(total)) // SECONDS_PER_DAY * m
6166

6267
return self
6368

6469
def total_minutes(self):
65-
return self.total_seconds() / 60
70+
return self.total_seconds() / SECONDS_PER_MINUTE
6671

6772
def total_hours(self):
68-
return self.total_seconds() / 3600
73+
return self.total_seconds() / SECONDS_PER_HOUR
6974

7075
def total_days(self):
71-
return self.total_seconds() / 86400
76+
return self.total_seconds() / SECONDS_PER_DAY
7277

7378
def total_weeks(self):
7479
return self.total_days() / 7
@@ -296,7 +301,7 @@ def __new__(cls, days=0, seconds=0, microseconds=0,
296301
total = self.total_seconds()
297302

298303
self._microseconds = abs(round(total % 1 * 1e6))
299-
self._seconds = abs(int(total)) % 86400
300-
self._days = abs(int(total)) // 86400
304+
self._seconds = abs(int(total)) % SECONDS_PER_DAY
305+
self._days = abs(int(total)) // SECONDS_PER_DAY
301306

302307
return self

pendulum/pendulum.py

Lines changed: 22 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -19,19 +19,17 @@
1919
from .tz import Timezone, UTC, FixedTimezone, local_timezone
2020
from .tz.timezone_info import TimezoneInfo
2121
from ._compat import PY33, basestring
22+
from .constants import (
23+
SUNDAY, MONDAY, TUESDAY, WEDNESDAY,
24+
THURSDAY, FRIDAY, SATURDAY,
25+
YEARS_PER_CENTURY, YEARS_PER_DECADE,
26+
MONTHS_PER_YEAR, DAYS_PER_WEEK,
27+
MINUTES_PER_HOUR, SECONDS_PER_MINUTE
28+
)
2229

2330

2431
class Pendulum(datetime.datetime, TranslatableMixin):
2532

26-
# The day constants
27-
SUNDAY = 0
28-
MONDAY = 1
29-
TUESDAY = 2
30-
WEDNESDAY = 3
31-
THURSDAY = 4
32-
FRIDAY = 5
33-
SATURDAY = 6
34-
3533
# Names of days of the week
3634
_days = {
3735
SUNDAY: 'Sunday',
@@ -43,16 +41,6 @@ class Pendulum(datetime.datetime, TranslatableMixin):
4341
SATURDAY: 'Saturday'
4442
}
4543

46-
# Number of X in Y.
47-
YEARS_PER_CENTURY = 100
48-
YEARS_PER_DECADE = 10
49-
MONTHS_PER_YEAR = 12
50-
WEEKS_PER_YEAR = 52
51-
DAYS_PER_WEEK = 7
52-
HOURS_PER_DAY = 24
53-
MINUTES_PER_HOUR = 60
54-
SECONDS_PER_MINUTE = 60
55-
5644
# Formats
5745
ATOM = '%Y-%m-%dT%H:%M:%S%_z'
5846
COOKIE = '%A, %d-%b-%Y %H:%M:%S %Z'
@@ -585,7 +573,7 @@ def float_timestamp(self):
585573

586574
@property
587575
def week_of_month(self):
588-
return math.ceil(self.day / self.DAYS_PER_WEEK)
576+
return math.ceil(self.day / DAYS_PER_WEEK)
589577

590578
@property
591579
def age(self):
@@ -602,8 +590,8 @@ def offset(self):
602590
@property
603591
def offset_hours(self):
604592
return (self.get_offset()
605-
/ self.SECONDS_PER_MINUTE
606-
/ self.MINUTES_PER_HOUR)
593+
/ SECONDS_PER_MINUTE
594+
/ MINUTES_PER_HOUR)
607595

608596
@property
609597
def local(self):
@@ -1351,55 +1339,55 @@ def is_sunday(self):
13511339
13521340
:rtype: bool
13531341
"""
1354-
return self.day_of_week == self.SUNDAY
1342+
return self.day_of_week == SUNDAY
13551343

13561344
def is_monday(self):
13571345
"""
13581346
Checks if this day is a monday.
13591347
13601348
:rtype: bool
13611349
"""
1362-
return self.day_of_week == self.MONDAY
1350+
return self.day_of_week == MONDAY
13631351

13641352
def is_tuesday(self):
13651353
"""
13661354
Checks if this day is a tuesday.
13671355
13681356
:rtype: bool
13691357
"""
1370-
return self.day_of_week == self.TUESDAY
1358+
return self.day_of_week == TUESDAY
13711359

13721360
def is_wednesday(self):
13731361
"""
13741362
Checks if this day is a wednesday.
13751363
13761364
:rtype: bool
13771365
"""
1378-
return self.day_of_week == self.WEDNESDAY
1366+
return self.day_of_week == WEDNESDAY
13791367

13801368
def is_thursday(self):
13811369
"""
13821370
Checks if this day is a thursday.
13831371
13841372
:rtype: bool
13851373
"""
1386-
return self.day_of_week == self.THURSDAY
1374+
return self.day_of_week == THURSDAY
13871375

13881376
def is_friday(self):
13891377
"""
13901378
Checks if this day is a friday.
13911379
13921380
:rtype: bool
13931381
"""
1394-
return self.day_of_week == self.FRIDAY
1382+
return self.day_of_week == FRIDAY
13951383

13961384
def is_saturday(self):
13971385
"""
13981386
Checks if this day is a saturday.
13991387
14001388
:rtype: bool
14011389
"""
1402-
return self.day_of_week == self.SATURDAY
1390+
return self.day_of_week == SATURDAY
14031391

14041392
def is_birthday(self, dt=None):
14051393
"""
@@ -1743,7 +1731,7 @@ def _start_of_decade(self):
17431731
17441732
:rtype: Pendulum
17451733
"""
1746-
year = self.year - self.year % self.YEARS_PER_DECADE
1734+
year = self.year - self.year % YEARS_PER_DECADE
17471735
return self.with_date_time(year, 1, 1, 0, 0, 0)
17481736

17491737
def _end_of_decade(self):
@@ -1753,7 +1741,7 @@ def _end_of_decade(self):
17531741
17541742
:rtype: Pendulum
17551743
"""
1756-
year = self.year - self.year % self.YEARS_PER_DECADE + self.YEARS_PER_DECADE - 1
1744+
year = self.year - self.year % YEARS_PER_DECADE + YEARS_PER_DECADE - 1
17571745

17581746
return self.with_date_time(
17591747
year, 12, 31, 23, 59, 59, 999999
@@ -1766,7 +1754,7 @@ def _start_of_century(self):
17661754
17671755
:rtype: Pendulum
17681756
"""
1769-
year = self.year - 1 - (self.year - 1) % self.YEARS_PER_CENTURY + 1
1757+
year = self.year - 1 - (self.year - 1) % YEARS_PER_CENTURY + 1
17701758

17711759
return self.with_date_time(year, 1, 1, 0, 0, 0)
17721760

@@ -1777,7 +1765,7 @@ def _end_of_century(self):
17771765
17781766
:rtype: Pendulum
17791767
"""
1780-
year = self.year - 1 - (self.year - 1) % self.YEARS_PER_CENTURY + self.YEARS_PER_CENTURY
1768+
year = self.year - 1 - (self.year - 1) % YEARS_PER_CENTURY + YEARS_PER_CENTURY
17811769

17821770
return self.with_date_time(
17831771
year, 12, 31, 23, 59, 59, 999999
@@ -2084,7 +2072,7 @@ def _last_of_year(self, day_of_week=None):
20842072
20852073
:rtype: Pendulum
20862074
"""
2087-
return self.month_(self.MONTHS_PER_YEAR).last_of('month', day_of_week)
2075+
return self.month_(MONTHS_PER_YEAR).last_of('month', day_of_week)
20882076

20892077
def _nth_of_year(self, nth, day_of_week):
20902078
"""

0 commit comments

Comments
 (0)