# Conditional build:
%bcond_without python2 # Python 2.x modules
%bcond_without python3 # Python 3.x modules
+%bcond_without tests # unit tests
#
# NOTE
# - as we use system tzdata package, keeping this pkg up to the latest is
# newer version anyway, through egg dependencies
%define module pytz
%define pypi_name pytz
-%define olsonver 2016g
+%define olsonver 2018d
Summary: pytz - Olson timezone database in Python
Summary(pl.UTF-8): pytz - baza stref czasowych Olsona w Pythonie
Name: python-%{module}
-Version: 2016.7
-Release: 2
+Version: 2018.4
+Release: 1
License: MIT or ZPL v2.1
Group: Libraries/Python
-Source0: https://files.pythonhosted.org/packages/source/p/%{pypi_name}/%{pypi_name}-%{version}.tar.bz2
-# Source0-md5: 8d8121d619a43cf0b38a4195de1cb8a5
+#Source0Download: https://pypi.org/simple/pytz/
+Source0: https://files.pythonhosted.org/packages/source/p/pytz/%{pypi_name}-%{version}.tar.gz
+# Source0-md5: f054437920c895dd14a4509fabafe029
Patch0: zoneinfo.patch
URL: http://pytz.sourceforge.net/
+BuildRequires: rpmbuild(macros) >= 1.714
BuildRequires: sed >= 4.0
%if %{with python2}
BuildRequires: python >= 1:2.3
BuildRequires: python-setuptools
%endif
%if %{with python3}
-BuildRequires: python3-devel
+BuildRequires: python3-devel >= 1:3.2
BuildRequires: python3-setuptools
%endif
-BuildRequires: rpmbuild(macros) >= 1.710
-%if %{with python2}
-Requires: python >= 1:2.3
-%endif
+Requires: python-modules >= 1:2.3
Requires: tzdata-zoneinfo >= %{olsonver}
BuildArch: noarch
BuildRoot: %{tmpdir}/%{name}-%{version}-root-%(id -u -n)
Summary: pytz - Olson timezone database in Python 3.x
Summary(pl.UTF-8): pytz - baza stref czasowych Olsona w Pythonie 3.x
Group: Libraries/Python
+Requires: python3-modules >= 1:3.2
Requires: tzdata-zoneinfo >= %{olsonver}
%description -n python3-%{module}
%if %{with python2}
%py_build
%py_lint
+
+%if %{with tests}
+%{__python} -munittest discover -s pytz/tests
%endif
+%endif
+
%if %{with python3}
%py3_build
+
+%if %{with tests}
+%{__python3} -munittest discover -s pytz/tests
+%endif
%endif
%install
rm -rf $RPM_BUILD_ROOT
+
%if %{with python2}
%py_install
+
%{__rm} -r $RPM_BUILD_ROOT%{py_sitescriptdir}/pytz/zoneinfo
%py_postclean
%endif
%if %{with python3}
%py3_install
+
+%{__rm} -r $RPM_BUILD_ROOT%{py3_sitescriptdir}/pytz/zoneinfo
%endif
%clean
%if %{with python2}
%files
%defattr(644,root,root,755)
-%doc CHANGES.txt LICENSE.txt README.txt
+%doc LICENSE.txt README.txt
%{py_sitescriptdir}/pytz
%{py_sitescriptdir}/pytz-%{version}-py*.egg-info
%endif
%if %{with python3}
%files -n python3-%{module}
%defattr(644,root,root,755)
-%doc CHANGES.txt LICENSE.txt README.txt
+%doc LICENSE.txt README.txt
%{py3_sitescriptdir}/pytz
%{py3_sitescriptdir}/pytz-%{version}-py*.egg-info
%endif
---- pytz-2016.7/pytz/__init__.py~ 2016-10-17 23:41:37.000000000 +0300
-+++ pytz-2016.7/pytz/__init__.py 2016-10-17 23:44:26.782524661 +0300
-@@ -70,30 +70,18 @@
- """
+--- pytz-2018.4/pytz/__init__.py.orig 2018-05-26 18:14:11.777750792 +0200
++++ pytz-2018.4/pytz/__init__.py 2018-05-26 19:37:10.177693947 +0200
+@@ -74,12 +74,13 @@
return s.encode('ASCII')
+
+_tzinfo_dir = os.getenv("TZDIR") or "/usr/share/zoneinfo"
+if _tzinfo_dir.endswith(os.sep):
+ _tzinfo_dir = _tzinfo_dir[:-1]
-
++
def open_resource(name):
"""Open a resource from the zoneinfo subdir for reading.
--
+
- Uses the pkg_resources module if available and no standard file
- found at the calculated location.
+-
+ It is possible to specify different location for zoneinfo
+ subdir by using the PYTZ_TZDATADIR environment variable.
"""
- name_parts = name.lstrip('/').split('/')
- for part in name_parts:
- if part == os.path.pardir or os.path.sep in part:
- raise ValueError('Bad path segment: %r' % part)
-- filename = os.path.join(os.path.dirname(__file__),
-- 'zoneinfo', *name_parts)
-- if not os.path.exists(filename):
-- # http://bugs.launchpad.net/bugs/383171 - we avoid using this
-- # unless absolutely necessary to help when a broken version of
-- # pkg_resources is installed.
-- try:
-- from pkg_resources import resource_stream
-- except ImportError:
-- resource_stream = None
+@@ -91,19 +92,7 @@
+ if zoneinfo_dir is not None:
+ filename = os.path.join(zoneinfo_dir, *name_parts)
+ else:
+- filename = os.path.join(os.path.dirname(__file__),
+- 'zoneinfo', *name_parts)
+- if not os.path.exists(filename):
+- # http://bugs.launchpad.net/bugs/383171 - we avoid using this
+- # unless absolutely necessary to help when a broken version of
+- # pkg_resources is installed.
+- try:
+- from pkg_resources import resource_stream
+- except ImportError:
+- resource_stream = None
-
-- if resource_stream is not None:
-- return resource_stream(__name__, 'zoneinfo/' + name)
-+ filename = os.path.join(_tzinfo_dir, *name_parts)
+- if resource_stream is not None:
+- return resource_stream(__name__, 'zoneinfo/' + name)
++ filename = os.path.join(_tzinfo_dir, *name_parts)
return open(filename, 'rb')
-@@ -489,11 +484,32 @@
+@@ -484,11 +473,33 @@
+
if __name__ == '__main__':
_test()
-
-all_timezones = LazyList(
- tz for tz in all_timezones if resource_exists(tz))
+-
++
+all_timezones = []
+for root, dirs, files in os.walk(_tzinfo_dir):
+ for exclude in "posix", "right":
+ if file != "README" and file != "Theory"
+ and "." not in file)
+all_timezones.sort()
-
++
all_timezones_set = LazySet(all_timezones)
-common_timezones = LazyList(
- tz for tz in common_timezones if tz in all_timezones)