diff options
-rw-r--r-- | dev-python/pyrfc3339/Manifest | 1 | ||||
-rw-r--r-- | dev-python/pyrfc3339/files/pyrfc3339-1.1-pytest.patch | 193 | ||||
-rw-r--r-- | dev-python/pyrfc3339/pyrfc3339-1.1-r1.ebuild | 32 |
3 files changed, 226 insertions, 0 deletions
diff --git a/dev-python/pyrfc3339/Manifest b/dev-python/pyrfc3339/Manifest index fac81e9f9c13..56f9cf5ba3ff 100644 --- a/dev-python/pyrfc3339/Manifest +++ b/dev-python/pyrfc3339/Manifest @@ -1 +1,2 @@ DIST pyRFC3339-1.1.tar.gz 5290 BLAKE2B d3094a22b6903937ae5cfee1210f04b65eb05dd606fe1d3245dca8ec0719ca1a079b720568d8c8e87fea691cebe1944098f99913b97a04570f06354a883e5694 SHA512 958b7761fab590aa42bb57a955c5d834441f717796a452b60df21663099dcf2fc046afe60f8157fd0f1edfd95c5e9c9c5349ab10ca4078d210fc63d848496a2f +DIST pyrfc3339-1.1.gh.tar.gz 11727 BLAKE2B 210104e5e7c3ed917d6a3475335fce74e4da1c55fddbb76c539b3dd37ec4ce943334e530a9558d13954bc625d4f7f1a7ac2296abf0fd01e87a9664167f7de4be SHA512 96627bcaa64556cc0a87be985fd4f42e7733b342882a4dc5bc5b7d0712bf3f197e09d7c9b7f760117a772bb012829176a61b848903fc41584f26776d3f18ec8f diff --git a/dev-python/pyrfc3339/files/pyrfc3339-1.1-pytest.patch b/dev-python/pyrfc3339/files/pyrfc3339-1.1-pytest.patch new file mode 100644 index 000000000000..82dbbb32f3dc --- /dev/null +++ b/dev-python/pyrfc3339/files/pyrfc3339-1.1-pytest.patch @@ -0,0 +1,193 @@ +https://github.com/kurtraschke/pyRFC3339/pull/16 +From: Matthew Davis <github@virtual.drop.net> +Date: Thu, 7 Apr 2022 18:29:02 -0400 +Subject: [PATCH] Remove python-nose requirements from tests + +Converted nose related tests to pytest. +--- a/pyrfc3339/tests/tests.py ++++ b/pyrfc3339/tests/tests.py +@@ -8,12 +8,11 @@ + + from pyrfc3339 import generate, parse + from pyrfc3339.utils import timezone ++import unittest ++import pytest + import pytz + +-from nose.tools import eq_, raises +- +- +-class TestCore(): ++class TestCore(unittest.TestCase): + ''' + This test suite contains tests to address cases not tested in the doctests, + as well as additional tests for end-to-end verification. +@@ -24,8 +23,11 @@ def test_timezone_rounding(self): + Test rounding of timezone values to the nearest second. + + ''' +- eq_(timezone(5429), '+01:30') +- eq_(timezone(5431), '+01:31') ++ if not timezone(5429) == '+01:30': ++ raise AssertionError("%r != %r" % (timezone(5429), '+01:30')) ++ ++ if not timezone(5431) == '+01:31': ++ raise AssertionError("%r != %r" % (timezone(5431), '+01:31')) + + def test_zero_offset(self): + ''' +@@ -34,11 +36,13 @@ def test_zero_offset(self): + ''' + timestamp = '2009-01-01T10:02:03+00:00' + dt = parse(timestamp) +- eq_(dt.tzinfo, pytz.utc) ++ if not dt.tzinfo == pytz.utc: ++ raise AssertionError("%r != %r" % (dt.tzinfo, pytz.utc)) + + timestamp = '2009-01-01T10:02:03-00:00' + dt = parse(timestamp) +- eq_(dt.tzinfo, pytz.utc) ++ if not dt.tzinfo == pytz.utc: ++ raise AssertionError("%r != %r" % (dt.tzinfo, pytz.utc)) + + def test_deepcopy(self): + ''' +@@ -56,7 +60,8 @@ def test_parse_microseconds(self): + ''' + timestamp = '2009-01-01T10:02:03.25Z' + dt = parse(timestamp) +- eq_(dt.microsecond, 250000) ++ if not dt.microsecond == 250000: ++ raise AssertionError("%r != %r" % (dt.microsecond, 250000)) + + def test_generate_microseconds(self): + ''' +@@ -65,7 +70,8 @@ def test_generate_microseconds(self): + ''' + dt = datetime(2009, 1, 1, 10, 2, 3, 500000, pytz.utc) + timestamp = generate(dt, microseconds=True) +- eq_(timestamp, '2009-01-01T10:02:03.500000Z') ++ if not timestamp == '2009-01-01T10:02:03.500000Z': ++ raise AssertionError("%r != %r" % (timestamp, '2009-01-01T10:02:03.500000Z')) + + def test_mixed_case(self): + ''' +@@ -76,7 +82,8 @@ def test_mixed_case(self): + dt1 = parse('2009-01-01t10:01:02z') + dt2 = datetime(2009, 1, 1, 10, 1, 2, tzinfo=pytz.utc) + +- eq_(dt1, dt2) ++ if not dt1 == dt2: ++ raise AssertionError("%r != %r" % (dt1, dt2)) + + def test_parse_naive_utc(self): + ''' +@@ -84,15 +91,17 @@ def test_parse_naive_utc(self): + + ''' + dt1 = parse('2009-01-01T10:01:02Z', produce_naive=True) +- eq_(dt1.tzinfo, None) ++ if not dt1.tzinfo == None: ++ raise AssertionError("%r != %r" % (dt1.tzinfo, None)) + +- @raises(ValueError) + def test_parse_naive_local(self): + ''' + Test that parsing a local timestamp to a naive datetime fails. + + ''' +- parse('2009-01-01T10:01:02-04:00', produce_naive=True) ++ with self.assertRaises(ValueError) as context: ++ parse('2009-01-01T10:01:02-04:00', produce_naive=True) ++ + + def test_generate_utc_parse_utc(self): + ''' +@@ -103,7 +112,8 @@ def test_generate_utc_parse_utc(self): + dt1 = dt1.replace(tzinfo=pytz.utc) + + dt2 = parse(generate(dt1, microseconds=True)) +- eq_(dt1, dt2) ++ if not dt1 == dt2: ++ raise AssertionError("%r != %r" % (dt1, dt2)) + + def test_generate_local_parse_local(self): + ''' +@@ -113,7 +123,8 @@ def test_generate_local_parse_local(self): + eastern = pytz.timezone('US/Eastern') + dt1 = eastern.localize(datetime.utcnow()) + dt2 = parse(generate(dt1, utc=False, microseconds=True), utc=False) +- eq_(dt1, dt2) ++ if not dt1 == dt2: ++ raise AssertionError("%r != %r" % (dt1, dt2)) + + def test_generate_local_parse_utc(self): + ''' +@@ -123,10 +134,12 @@ def test_generate_local_parse_utc(self): + eastern = pytz.timezone('US/Eastern') + dt1 = eastern.localize(datetime.utcnow()) + dt2 = parse(generate(dt1, utc=False, microseconds=True)) +- eq_(dt1, dt2) ++ if not dt1 == dt2: ++ raise AssertionError("%r != %r" % (dt1, dt2)) + + +-class TestExhaustiveRoundtrip(): ++@pytest.mark.parametrize('tz_name', pytz.all_timezones) ++class TestExhaustiveRoundtrip: + ''' + This test suite exhaustively tests parsing and generation by generating + a local RFC 3339 timestamp for every timezone supported by pytz, +@@ -135,36 +148,32 @@ class TestExhaustiveRoundtrip(): + + slow = True + +- def test_local_roundtrip(self): +- for tz_name in pytz.all_timezones: +- yield self.local_roundtrip, tz_name +- +- def local_roundtrip(self, tz_name): ++ def test_local_roundtrip(self, tz_name): + ''' + Generates a local datetime using the given timezone, + produces a local timestamp from the datetime, parses the timestamp + to a local datetime, and verifies that the two datetimes are equal. + + ''' +- tzinfo = pytz.timezone(tz_name) +- dt1 = tzinfo.localize(datetime.utcnow()) +- timestamp = generate(dt1, utc=False, microseconds=True) +- dt2 = parse(timestamp, utc=False) +- eq_(dt1, dt2) +- +- def test_utc_roundtrip(self): +- for tz_name in pytz.all_timezones: +- yield self.utc_roundtrip, tz_name ++ if not tz_name == 'leapseconds': ++ tzinfo = pytz.timezone(tz_name) ++ dt1 = tzinfo.localize(datetime.utcnow()) ++ timestamp = generate(dt1, utc=False, microseconds=True) ++ dt2 = parse(timestamp, utc=False) ++ if not dt1 == dt2: ++ raise AssertionError("%r != %r" % (dt1, dt2)) + +- def utc_roundtrip(self, tz_name): ++ def test_utc_roundtrip(self, tz_name): + ''' + Generates a local datetime using the given timezone, + produces a local timestamp from the datetime, parses the timestamp + to a UTC datetime, and verifies that the two datetimes are equal. + + ''' +- tzinfo = pytz.timezone(tz_name) +- dt1 = tzinfo.localize(datetime.utcnow()) +- timestamp = generate(dt1, utc=False, microseconds=True) +- dt2 = parse(timestamp) +- eq_(dt1, dt2) ++ if not tz_name == 'leapseconds': ++ tzinfo = pytz.timezone(tz_name) ++ dt1 = tzinfo.localize(datetime.utcnow()) ++ timestamp = generate(dt1, utc=False, microseconds=True) ++ dt2 = parse(timestamp) ++ if not dt1 == dt2: ++ raise AssertionError("%r != %r" % (dt1, dt2)) diff --git a/dev-python/pyrfc3339/pyrfc3339-1.1-r1.ebuild b/dev-python/pyrfc3339/pyrfc3339-1.1-r1.ebuild new file mode 100644 index 000000000000..c548353bc870 --- /dev/null +++ b/dev-python/pyrfc3339/pyrfc3339-1.1-r1.ebuild @@ -0,0 +1,32 @@ +# Copyright 1999-2022 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +DISTUTILS_USE_PEP517=setuptools +PYTHON_COMPAT=( python3_{8..10} ) +inherit distutils-r1 + +DESCRIPTION="Generates and parses RFC 3339 timestamps" +HOMEPAGE="https://github.com/kurtraschke/pyRFC3339" +SRC_URI=" + https://github.com/kurtraschke/pyRFC3339/archive/v${PV}.tar.gz + -> ${P}.gh.tar.gz +" +S=${WORKDIR}/pyRFC3339-${PV} + +LICENSE="MIT" +SLOT="0" +KEYWORDS="~amd64 ~arm ~arm64 ~ppc64 ~riscv ~x86" + +RDEPEND="dev-python/pytz[${PYTHON_USEDEP}]" + +PATCHES=( + "${FILESDIR}/${P}-pytest.patch" +) + +distutils_enable_tests pytest + +python_test() { + epytest pyrfc3339/tests/tests.py +} |