summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--dev-python/pyrfc3339/Manifest1
-rw-r--r--dev-python/pyrfc3339/files/pyrfc3339-1.1-pytest.patch193
-rw-r--r--dev-python/pyrfc3339/pyrfc3339-1.1-r1.ebuild32
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
+}