Skip to content

Commit 6767308

Browse files
committed
tests: use zoneinfo instead of pytz
1 parent 5228721 commit 6767308

File tree

4 files changed

+21
-21
lines changed

4 files changed

+21
-21
lines changed

tests/emscripten_runner.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -86,7 +86,7 @@ async function main() {
8686
FS.mkdir('/test_dir');
8787
FS.mount(FS.filesystems.NODEFS, {root: path.join(root_dir, 'tests')}, '/test_dir');
8888
FS.chdir('/test_dir');
89-
await pyodide.loadPackage(['micropip', 'pytest', 'pytz']);
89+
await pyodide.loadPackage(['micropip', 'pytest']);
9090
// language=python
9191
errcode = await pyodide.runPythonAsync(`
9292
import micropip

tests/requirements.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
backports.zoneinfo==0.2.1;python_version<"3.9"
12
coverage==7.5.0
23
dirty-equals==0.7.1.post0
34
hypothesis==6.100.2
@@ -16,7 +17,6 @@ pytest-speed==0.3.5
1617
pytest-mock==3.14.0
1718
pytest-pretty==1.2.0
1819
pytest-timeout==2.3.1
19-
pytz==2024.1
2020
# numpy doesn't offer prebuilt wheels for all versions and platforms we test in CI e.g. aarch64 musllinux
2121
numpy==1.26.2; python_version >= "3.9" and python_version < "3.13" and implementation_name == "cpython" and platform_machine == 'x86_64'
2222
exceptiongroup==1.1; python_version < "3.11"

tests/validators/test_datetime.py

Lines changed: 18 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
from typing import Dict
88

99
import pytest
10-
import pytz
10+
import zoneinfo
1111

1212
from pydantic_core import SchemaError, SchemaValidator, ValidationError, core_schema, validate_core_schema
1313

@@ -81,8 +81,8 @@ def test_datetime_strict(input_value, expected):
8181

8282

8383
def test_keep_tz():
84-
tz = pytz.timezone('Europe/London')
85-
dt = tz.localize(datetime(2022, 6, 14, 12, 13, 14))
84+
tz = zoneinfo.ZoneInfo('Europe/London')
85+
dt = datetime(2022, 6, 14, 12, 13, 14, tzinfo=tz)
8686
v = SchemaValidator({'type': 'datetime'})
8787

8888
output = v.validate_python(dt)
@@ -94,8 +94,8 @@ def test_keep_tz():
9494

9595

9696
def test_keep_tz_bound():
97-
tz = pytz.timezone('Europe/London')
98-
dt = tz.localize(datetime(2022, 6, 14, 12, 13, 14))
97+
tz = zoneinfo.ZoneInfo('Europe/London')
98+
dt = datetime(2022, 6, 14, 12, 13, 14, tzinfo=tz)
9999
v = SchemaValidator({'type': 'datetime', 'gt': datetime(2022, 1, 1)})
100100

101101
output = v.validate_python(dt)
@@ -106,7 +106,7 @@ def test_keep_tz_bound():
106106
assert output.tzinfo.dst(datetime(2022, 1, 1)) == timedelta(0)
107107

108108
with pytest.raises(ValidationError, match=r'Input should be greater than 2022-01-01T00:00:00 \[type=greater_than'):
109-
v.validate_python(tz.localize(datetime(2021, 6, 14)))
109+
v.validate_python(datetime(2021, 6, 14, tzinfo=tz))
110110

111111

112112
@pytest.mark.parametrize(
@@ -186,8 +186,8 @@ def test_custom_timezone_utc_repr():
186186

187187

188188
def test_tz_comparison():
189-
tz = pytz.timezone('Europe/London')
190-
uk_3pm = tz.localize(datetime(2022, 1, 1, 15, 0, 0))
189+
tz = zoneinfo.ZoneInfo('Europe/London')
190+
uk_3pm = datetime(2022, 1, 1, 15, 0, 0, tzinfo=tz)
191191

192192
# two times are the same instant, therefore le and ge are both ok
193193
v = SchemaValidator({'type': 'datetime', 'le': uk_3pm}).validate_python('2022-01-01T16:00:00+01:00')
@@ -322,22 +322,22 @@ def test_datetime_past_timezone():
322322
now_utc = datetime.now(timezone.utc) - timedelta(seconds=1)
323323
assert v.isinstance_python(now_utc)
324324
# "later" in the day
325-
assert v.isinstance_python(now_utc.astimezone(pytz.timezone('Europe/Istanbul')))
325+
assert v.isinstance_python(now_utc.astimezone(zoneinfo.ZoneInfo('Europe/Istanbul')))
326326
# "earlier" in the day
327-
assert v.isinstance_python(now_utc.astimezone(pytz.timezone('America/Los_Angeles')))
327+
assert v.isinstance_python(now_utc.astimezone(zoneinfo.ZoneInfo('America/Los_Angeles')))
328328

329329
soon_utc = now_utc + timedelta(minutes=1)
330330
assert not v.isinstance_python(soon_utc)
331331

332332
# "later" in the day
333-
assert not v.isinstance_python(soon_utc.astimezone(pytz.timezone('Europe/Istanbul')))
333+
assert not v.isinstance_python(soon_utc.astimezone(zoneinfo.ZoneInfo('Europe/Istanbul')))
334334
# "earlier" in the day
335-
assert not v.isinstance_python(soon_utc.astimezone(pytz.timezone('America/Los_Angeles')))
335+
assert not v.isinstance_python(soon_utc.astimezone(zoneinfo.ZoneInfo('America/Los_Angeles')))
336336

337337
# input value is timezone naive, so we do a dumb comparison in these terms the istanbul time is later so fails
338338
# wile the LA time is earlier so passes
339-
assert not v.isinstance_python(soon_utc.astimezone(pytz.timezone('Europe/Istanbul')).replace(tzinfo=None))
340-
assert v.isinstance_python(soon_utc.astimezone(pytz.timezone('America/Los_Angeles')).replace(tzinfo=None))
339+
assert not v.isinstance_python(soon_utc.astimezone(zoneinfo.ZoneInfo('Europe/Istanbul')).replace(tzinfo=None))
340+
assert v.isinstance_python(soon_utc.astimezone(zoneinfo.ZoneInfo('America/Los_Angeles')).replace(tzinfo=None))
341341

342342

343343
@pytest.mark.parametrize(
@@ -368,17 +368,17 @@ def test_datetime_future_timezone():
368368
assert v.isinstance_python(soon_utc)
369369

370370
# "later" in the day
371-
assert v.isinstance_python(soon_utc.astimezone(pytz.timezone('Europe/Istanbul')))
371+
assert v.isinstance_python(soon_utc.astimezone(zoneinfo.ZoneInfo('Europe/Istanbul')))
372372
# "earlier" in the day
373-
assert v.isinstance_python(soon_utc.astimezone(pytz.timezone('America/Los_Angeles')))
373+
assert v.isinstance_python(soon_utc.astimezone(zoneinfo.ZoneInfo('America/Los_Angeles')))
374374

375375
past_utc = now_utc - timedelta(minutes=1)
376376
assert not v.isinstance_python(past_utc)
377377

378378
# "later" in the day
379-
assert not v.isinstance_python(past_utc.astimezone(pytz.timezone('Europe/Istanbul')))
379+
assert not v.isinstance_python(past_utc.astimezone(zoneinfo.ZoneInfo('Europe/Istanbul')))
380380
# "earlier" in the day
381-
assert not v.isinstance_python(past_utc.astimezone(pytz.timezone('America/Los_Angeles')))
381+
assert not v.isinstance_python(past_utc.astimezone(zoneinfo.ZoneInfo('America/Los_Angeles')))
382382

383383

384384
def test_mock_utc_offset_8_hours(mocker):

wasm-preview/worker.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -97,7 +97,7 @@ async function main() {
9797
setupStreams(FS, pyodide._module.TTY);
9898
FS.mkdir('/test_dir');
9999
FS.chdir('/test_dir');
100-
await pyodide.loadPackage(['micropip', 'pytest', 'pytz', 'numpy']);
100+
await pyodide.loadPackage(['micropip', 'pytest', 'numpy']);
101101
if (pydantic_core_version < '2.0.0') await pyodide.loadPackage(['typing-extensions']);
102102
await pyodide.runPythonAsync(python_code, {globals: pyodide.toPy({pydantic_core_version, tests_zip})});
103103
post();

0 commit comments

Comments
 (0)