Skip to content

Commit 886069b

Browse files
committed
Merge branch 'master' into develop
2 parents 3c5a6dc + 075b295 commit 886069b

File tree

18 files changed

+377
-323
lines changed

18 files changed

+377
-323
lines changed

CHANGELOG.md

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,15 @@
1+
### 0.5.4
2+
3+
(August 30th, 2016)
4+
5+
- [Fix] Fixes broken previous release.
6+
7+
(August 29th, 2016)
8+
9+
- [Fix] Fixes setters and modifiers (start_of/end_of) to properly apply DST transitions.
10+
- [Fix] Fixes timezone file loading on some installs (See [#34](https://github.com/sdispater/pendulum/issues/34))
11+
(Thanks to [mayfield](https://github.com/mayfield))
12+
113
### 0.5.2
214

315
(August 22nd, 2016)

Makefile

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -21,26 +21,28 @@ setup: setup-python
2121
test:
2222
@py.test --cov=pendulum --cov-config .coveragerc tests/ -sq
2323

24-
wheels: clean-wheels wheels_x64 wheels_i686
24+
wheels_x64: clean_wheels build_wheels_x64
2525

26-
wheels_x64:
26+
wheels_i686: clean_wheels build_wheels_i686
27+
28+
build_wheels_x64:
2729
docker pull quay.io/pypa/manylinux1_x86_64
2830
docker run --rm -v `pwd`:/io quay.io/pypa/manylinux1_x86_64 /io/build-wheels.sh
2931

30-
wheels_i686:
32+
build_wheels_i686:
3133
docker pull quay.io/pypa/manylinux1_i686
3234
docker run --rm -v `pwd`:/io quay.io/pypa/manylinux1_i686 /io/build-wheels.sh
3335

34-
clean-wheels:
36+
clean_wheels:
3537
rm -rf wheelhouse/
3638

37-
upload-wheels_x64:
39+
upload_wheels_x64:
3840
@for f in wheelhouse/*manylinux1_x86_64.whl ; do \
3941
echo "Upload $$f" ; \
4042
python -m twine upload $$f ; \
4143
done
4244

43-
upload-wheels_i686:
45+
upload_wheels_i686:
4446
@for f in wheelhouse/*manylinux1_i686.whl ; do \
4547
echo "Upload $$f" ; \
4648
python -m twine upload $$f ; \

build-wheels.sh

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,12 @@ PYTHON_VERSIONS="cp27-cp27m cp35-cp35m"
33

44
echo "Compile wheels"
55
for PYTHON in ${PYTHON_VERSIONS}; do
6-
/opt/python/${PYTHON}/bin/pip install -r /io/wheels-requirements.txt
7-
/opt/python/${PYTHON}/bin/pip wheel /io/ -w /io/wheelhouse/
6+
cd /io
7+
/opt/python/${PYTHON}/bin/pip install -r wheels-requirements.txt
8+
/opt/python/${PYTHON}/bin/pip install -r tests-requirements.txt
9+
/opt/python/${PYTHON}/bin/python setup.py sdist --dist-dir wheelhouse --formats=gztar
10+
/opt/python/${PYTHON}/bin/pip wheel --no-index --no-deps --wheel-dir wheelhouse wheelhouse/*.tar.gz
11+
cd -
812
done
913

1014
echo "Bundle external shared libraries into the wheels"

docs/conf.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -60,7 +60,7 @@
6060
# The short X.Y version.
6161
version = '0.5'
6262
# The full version, including alpha/beta/rc tags.
63-
release = '0.5.2'
63+
release = '0.5.4'
6464

6565
# The language for content autogenerated by Sphinx. Refer to documentation
6666
# for a list of supported languages.

pendulum/pendulum.py

Lines changed: 21 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -471,25 +471,30 @@ def copy(self):
471471
### Getters/Setters
472472

473473
def year_(self, year):
474-
return self.instance(self._datetime.replace(year=year))
474+
return self._setter(year=year)
475475

476476
def month_(self, month):
477-
return self.instance(self._datetime.replace(month=month))
477+
return self._setter(month=month)
478478

479479
def day_(self, day):
480-
return self.instance(self._datetime.replace(day=day))
480+
return self._setter(day=day)
481481

482482
def hour_(self, hour):
483-
return self.instance(self._datetime.replace(hour=hour))
483+
return self._setter(hour=hour)
484484

485485
def minute_(self, minute):
486-
return self.instance(self._datetime.replace(minute=minute))
486+
return self._setter(minute=minute)
487487

488488
def second_(self, second):
489-
return self.instance(self._datetime.replace(second=second))
489+
return self._setter(second=second)
490490

491491
def microsecond_(self, microsecond):
492-
return self.instance(self._datetime.replace(microsecond=microsecond))
492+
return self._setter(microsecond=microsecond)
493+
494+
def _setter(self, **kwargs):
495+
kwargs['tzinfo'] = None
496+
497+
return self.instance(self._datetime.replace(**kwargs), self._tz)
493498

494499
def timezone_(self, tz):
495500
tz = self._safe_create_datetime_zone(tz)
@@ -642,10 +647,11 @@ def with_date(self, year, month, day):
642647
:rtype: Pendulum
643648
"""
644649
dt = self._datetime.replace(
645-
year=int(year), month=int(month), day=int(day)
650+
year=int(year), month=int(month), day=int(day),
651+
tzinfo=None
646652
)
647653

648-
return self.instance(dt)
654+
return self.instance(dt, self._tz)
649655

650656
def with_time(self, hour, minute, second, microsecond=0):
651657
"""
@@ -667,10 +673,11 @@ def with_time(self, hour, minute, second, microsecond=0):
667673
"""
668674
dt = self._datetime.replace(
669675
hour=int(hour), minute=int(minute), second=int(second),
670-
microsecond=microsecond
676+
microsecond=microsecond,
677+
tzinfo=None
671678
)
672679

673-
return self.instance(dt)
680+
return self.instance(dt, self._tz)
674681

675682
def with_date_time(self, year, month, day, hour, minute, second, microsecond=0):
676683
"""
@@ -688,10 +695,11 @@ def with_date_time(self, year, month, day, hour, minute, second, microsecond=0):
688695
dt = self._datetime.replace(
689696
year=year, month=month, day=day,
690697
hour=int(hour), minute=int(minute), second=int(second),
691-
microsecond=microsecond
698+
microsecond=microsecond,
699+
tzinfo=None
692700
)
693701

694-
return self.instance(dt)
702+
return self.instance(dt, self._tz)
695703

696704
def with_time_from_string(self, time):
697705
"""

pendulum/version.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,3 @@
11
# -*- coding: utf-8 -*-
22

3-
VERSION = '0.5.2'
3+
VERSION = '0.5.4'

setup.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -90,7 +90,7 @@ def build_extension(self, ext):
9090
author_email='[email protected]',
9191
url='https://github.com/sdispater/pendulum',
9292
download_url='https://github.com/sdispater/pendulum/archive/%s.tar.gz' % __version__,
93-
packages=['pendulum'],
93+
packages=find_packages(exclude=['tests']),
9494
install_requires=[
9595
'tzlocal',
9696
'pytz',

tests/localization_tests/__init__.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,8 @@ def tearDown(self):
1414
Pendulum.set_locale('en')
1515

1616
def test_diff_for_humans_localized(self):
17-
self.diff_for_humans()
17+
with Pendulum.test(Pendulum(2016, 8, 29)):
18+
self.diff_for_humans()
1819

1920
def diff_for_humans(self):
2021
raise NotImplementedError()

tests/localization_tests/test_da.py

Lines changed: 36 additions & 37 deletions
Original file line numberDiff line numberDiff line change
@@ -12,56 +12,55 @@ class DaTest(AbstractLocalizationTestCase, AbstractTestCase):
1212
locale = 'da'
1313

1414
def diff_for_humans(self):
15-
with self.wrap_with_test_now():
16-
d = Pendulum.now().subtract(seconds=1)
17-
self.assertEqual('1 sekund siden', d.diff_for_humans())
15+
d = Pendulum.now().subtract(seconds=1)
16+
self.assertEqual('1 sekund siden', d.diff_for_humans())
1817

19-
d = Pendulum.now().subtract(seconds=2)
20-
self.assertEqual('2 sekunder siden', d.diff_for_humans())
18+
d = Pendulum.now().subtract(seconds=2)
19+
self.assertEqual('2 sekunder siden', d.diff_for_humans())
2120

22-
d = Pendulum.now().subtract(minutes=1)
23-
self.assertEqual('1 minut siden', d.diff_for_humans())
21+
d = Pendulum.now().subtract(minutes=1)
22+
self.assertEqual('1 minut siden', d.diff_for_humans())
2423

25-
d = Pendulum.now().subtract(minutes=2)
26-
self.assertEqual('2 minutter siden', d.diff_for_humans())
24+
d = Pendulum.now().subtract(minutes=2)
25+
self.assertEqual('2 minutter siden', d.diff_for_humans())
2726

28-
d = Pendulum.now().subtract(hours=1)
29-
self.assertEqual('1 time siden', d.diff_for_humans())
27+
d = Pendulum.now().subtract(hours=1)
28+
self.assertEqual('1 time siden', d.diff_for_humans())
3029

31-
d = Pendulum.now().subtract(hours=2)
32-
self.assertEqual('2 timer siden', d.diff_for_humans())
30+
d = Pendulum.now().subtract(hours=2)
31+
self.assertEqual('2 timer siden', d.diff_for_humans())
3332

34-
d = Pendulum.now().subtract(days=1)
35-
self.assertEqual('1 dag siden', d.diff_for_humans())
33+
d = Pendulum.now().subtract(days=1)
34+
self.assertEqual('1 dag siden', d.diff_for_humans())
3635

37-
d = Pendulum.now().subtract(days=2)
38-
self.assertEqual('2 dage siden', d.diff_for_humans())
36+
d = Pendulum.now().subtract(days=2)
37+
self.assertEqual('2 dage siden', d.diff_for_humans())
3938

40-
d = Pendulum.now().subtract(weeks=1)
41-
self.assertEqual('1 uge siden', d.diff_for_humans())
39+
d = Pendulum.now().subtract(weeks=1)
40+
self.assertEqual('1 uge siden', d.diff_for_humans())
4241

43-
d = Pendulum.now().subtract(weeks=2)
44-
self.assertEqual('2 uger siden', d.diff_for_humans())
42+
d = Pendulum.now().subtract(weeks=2)
43+
self.assertEqual('2 uger siden', d.diff_for_humans())
4544

46-
d = Pendulum.now().subtract(months=1)
47-
self.assertEqual('1 måned siden', d.diff_for_humans())
45+
d = Pendulum.now().subtract(months=1)
46+
self.assertEqual('1 måned siden', d.diff_for_humans())
4847

49-
d = Pendulum.now().subtract(months=2)
50-
self.assertEqual('2 måneder siden', d.diff_for_humans())
48+
d = Pendulum.now().subtract(months=2)
49+
self.assertEqual('2 måneder siden', d.diff_for_humans())
5150

52-
d = Pendulum.now().subtract(years=1)
53-
self.assertEqual('1 år siden', d.diff_for_humans())
51+
d = Pendulum.now().subtract(years=1)
52+
self.assertEqual('1 år siden', d.diff_for_humans())
5453

55-
d = Pendulum.now().subtract(years=2)
56-
self.assertEqual('2 år siden', d.diff_for_humans())
54+
d = Pendulum.now().subtract(years=2)
55+
self.assertEqual('2 år siden', d.diff_for_humans())
5756

58-
d = Pendulum.now().add(seconds=1)
59-
self.assertEqual('om 1 sekund', d.diff_for_humans())
57+
d = Pendulum.now().add(seconds=1)
58+
self.assertEqual('om 1 sekund', d.diff_for_humans())
6059

61-
d = Pendulum.now().add(seconds=1)
62-
d2 = Pendulum.now()
63-
self.assertEqual('1 sekund efter', d.diff_for_humans(d2))
64-
self.assertEqual('1 sekund før', d2.diff_for_humans(d))
60+
d = Pendulum.now().add(seconds=1)
61+
d2 = Pendulum.now()
62+
self.assertEqual('1 sekund efter', d.diff_for_humans(d2))
63+
self.assertEqual('1 sekund før', d2.diff_for_humans(d))
6564

66-
self.assertEqual('1 sekund', d.diff_for_humans(d2, True))
67-
self.assertEqual('2 sekunder', d2.diff_for_humans(d.add(seconds=1), True))
65+
self.assertEqual('1 sekund', d.diff_for_humans(d2, True))
66+
self.assertEqual('2 sekunder', d2.diff_for_humans(d.add(seconds=1), True))

tests/localization_tests/test_de.py

Lines changed: 36 additions & 37 deletions
Original file line numberDiff line numberDiff line change
@@ -12,56 +12,55 @@ class DeTest(AbstractLocalizationTestCase, AbstractTestCase):
1212
locale = 'de'
1313

1414
def diff_for_humans(self):
15-
with self.wrap_with_test_now():
16-
d = Pendulum.now().subtract(seconds=1)
17-
self.assertEqual('vor 1 Sekunde', d.diff_for_humans())
15+
d = Pendulum.now().subtract(seconds=1)
16+
self.assertEqual('vor 1 Sekunde', d.diff_for_humans())
1817

19-
d = Pendulum.now().subtract(seconds=2)
20-
self.assertEqual('vor 2 Sekunden', d.diff_for_humans())
18+
d = Pendulum.now().subtract(seconds=2)
19+
self.assertEqual('vor 2 Sekunden', d.diff_for_humans())
2120

22-
d = Pendulum.now().subtract(minutes=1)
23-
self.assertEqual('vor 1 Minute', d.diff_for_humans())
21+
d = Pendulum.now().subtract(minutes=1)
22+
self.assertEqual('vor 1 Minute', d.diff_for_humans())
2423

25-
d = Pendulum.now().subtract(minutes=2)
26-
self.assertEqual('vor 2 Minuten', d.diff_for_humans())
24+
d = Pendulum.now().subtract(minutes=2)
25+
self.assertEqual('vor 2 Minuten', d.diff_for_humans())
2726

28-
d = Pendulum.now().subtract(hours=1)
29-
self.assertEqual('vor 1 Stunde', d.diff_for_humans())
27+
d = Pendulum.now().subtract(hours=1)
28+
self.assertEqual('vor 1 Stunde', d.diff_for_humans())
3029

31-
d = Pendulum.now().subtract(hours=2)
32-
self.assertEqual('vor 2 Stunden', d.diff_for_humans())
30+
d = Pendulum.now().subtract(hours=2)
31+
self.assertEqual('vor 2 Stunden', d.diff_for_humans())
3332

34-
d = Pendulum.now().subtract(days=1)
35-
self.assertEqual('vor 1 Tag', d.diff_for_humans())
33+
d = Pendulum.now().subtract(days=1)
34+
self.assertEqual('vor 1 Tag', d.diff_for_humans())
3635

37-
d = Pendulum.now().subtract(days=2)
38-
self.assertEqual('vor 2 Tagen', d.diff_for_humans())
36+
d = Pendulum.now().subtract(days=2)
37+
self.assertEqual('vor 2 Tagen', d.diff_for_humans())
3938

40-
d = Pendulum.now().subtract(weeks=1)
41-
self.assertEqual('vor 1 Woche', d.diff_for_humans())
39+
d = Pendulum.now().subtract(weeks=1)
40+
self.assertEqual('vor 1 Woche', d.diff_for_humans())
4241

43-
d = Pendulum.now().subtract(weeks=2)
44-
self.assertEqual('vor 2 Wochen', d.diff_for_humans())
42+
d = Pendulum.now().subtract(weeks=2)
43+
self.assertEqual('vor 2 Wochen', d.diff_for_humans())
4544

46-
d = Pendulum.now().subtract(months=1)
47-
self.assertEqual('vor 1 Monat', d.diff_for_humans())
45+
d = Pendulum.now().subtract(months=1)
46+
self.assertEqual('vor 1 Monat', d.diff_for_humans())
4847

49-
d = Pendulum.now().subtract(months=2)
50-
self.assertEqual('vor 2 Monaten', d.diff_for_humans())
48+
d = Pendulum.now().subtract(months=2)
49+
self.assertEqual('vor 2 Monaten', d.diff_for_humans())
5150

52-
d = Pendulum.now().subtract(years=1)
53-
self.assertEqual('vor 1 Jahr', d.diff_for_humans())
51+
d = Pendulum.now().subtract(years=1)
52+
self.assertEqual('vor 1 Jahr', d.diff_for_humans())
5453

55-
d = Pendulum.now().subtract(years=2)
56-
self.assertEqual('vor 2 Jahren', d.diff_for_humans())
54+
d = Pendulum.now().subtract(years=2)
55+
self.assertEqual('vor 2 Jahren', d.diff_for_humans())
5756

58-
d = Pendulum.now().add(seconds=1)
59-
self.assertEqual('in 1 Sekunde', d.diff_for_humans())
57+
d = Pendulum.now().add(seconds=1)
58+
self.assertEqual('in 1 Sekunde', d.diff_for_humans())
6059

61-
d = Pendulum.now().add(seconds=1)
62-
d2 = Pendulum.now()
63-
self.assertEqual('1 Sekunde später', d.diff_for_humans(d2))
64-
self.assertEqual('1 Sekunde zuvor', d2.diff_for_humans(d))
60+
d = Pendulum.now().add(seconds=1)
61+
d2 = Pendulum.now()
62+
self.assertEqual('1 Sekunde später', d.diff_for_humans(d2))
63+
self.assertEqual('1 Sekunde zuvor', d2.diff_for_humans(d))
6564

66-
self.assertEqual('1 Sekunde', d.diff_for_humans(d2, True))
67-
self.assertEqual('2 Sekunden', d2.diff_for_humans(d.add(seconds=1), True))
65+
self.assertEqual('1 Sekunde', d.diff_for_humans(d2, True))
66+
self.assertEqual('2 Sekunden', d2.diff_for_humans(d.add(seconds=1), True))

0 commit comments

Comments
 (0)