Skip to content

Commit 5529a46

Browse files
committed
Fix typing errors in test_logging
1 parent 1925b8e commit 5529a46

File tree

3 files changed

+32
-22
lines changed

3 files changed

+32
-22
lines changed

pyproject.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -365,6 +365,7 @@ module = [
365365
"tests.test_store.test_fsspec",
366366
"tests.test_store.test_memory",
367367
"tests.test_store.test_core",
368+
"tests.test_store.test_logging",
368369
]
369370
strict = false
370371

@@ -374,7 +375,6 @@ strict = false
374375
module = [
375376
"tests.test_codecs.test_codecs",
376377
"tests.test_metadata.*",
377-
"tests.test_store.test_logging",
378378
"tests.test_store.test_object",
379379
"tests.test_store.test_stateful",
380380
"tests.test_store.test_wrapper",

src/zarr/testing/store.py

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -75,7 +75,15 @@ def test_store_supports_partial_writes(self, store: S) -> None: ...
7575
def test_store_supports_listing(self, store: S) -> None: ...
7676

7777
@pytest.fixture
78-
def open_kwargs(self, store_kwargs: dict[str, Any]) -> dict[str, Any]:
78+
def open_kwargs(
79+
self, store_kwargs: dict[str, Any], *args: Any, **kwargs: Any
80+
) -> dict[str, Any]:
81+
"""
82+
Kwargs for opening a store.
83+
84+
By default uses the result of the store_kwargs fixture,
85+
but can be overridden to be different.
86+
"""
7987
return store_kwargs
8088

8189
@pytest.fixture

tests/test_store/test_logging.py

Lines changed: 22 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
from __future__ import annotations
22

33
import logging
4-
from typing import TYPE_CHECKING
4+
from typing import TYPE_CHECKING, Any
55

66
import pytest
77

@@ -11,60 +11,62 @@
1111
from zarr.testing.store import StoreTests
1212

1313
if TYPE_CHECKING:
14-
from _pytest.compat import LEGACY_PATH
14+
from pathlib import Path
1515

1616
from zarr.abc.store import Store
1717

1818

19-
class TestLoggingStore(StoreTests[LoggingStore, cpu.Buffer]):
19+
class TestLoggingStore(StoreTests[LoggingStore[LocalStore], cpu.Buffer]):
2020
store_cls = LoggingStore
2121
buffer_cls = cpu.Buffer
2222

23-
async def get(self, store: LoggingStore, key: str) -> Buffer:
23+
async def get(self, store: LoggingStore[LocalStore], key: str) -> Buffer:
2424
return self.buffer_cls.from_bytes((store._store.root / key).read_bytes())
2525

26-
async def set(self, store: LoggingStore, key: str, value: Buffer) -> None:
26+
async def set(self, store: LoggingStore[LocalStore], key: str, value: Buffer) -> None:
2727
parent = (store._store.root / key).parent
2828
if not parent.exists():
2929
parent.mkdir(parents=True)
3030
(store._store.root / key).write_bytes(value.to_bytes())
3131

3232
@pytest.fixture
33-
def store_kwargs(self, tmpdir: LEGACY_PATH) -> dict[str, str]:
34-
return {"store": LocalStore(str(tmpdir)), "log_level": "DEBUG"}
33+
def store_kwargs(self, tmp_path: Path) -> dict[str, str | LocalStore]:
34+
return {"store": LocalStore(str(tmp_path)), "log_level": "DEBUG"}
3535

3636
@pytest.fixture
37-
def open_kwargs(self, tmpdir) -> dict[str, str]:
38-
return {"store_cls": LocalStore, "root": str(tmpdir), "log_level": "DEBUG"}
37+
def open_kwargs(self, store_kwargs: dict[str, Any], tmp_path: Path) -> dict[str, Any]:
38+
return {"store_cls": LocalStore, "root": str(tmp_path), "log_level": "DEBUG"}
3939

4040
@pytest.fixture
41-
def store(self, store_kwargs: str | dict[str, Buffer] | None) -> LoggingStore:
41+
async def store(self, store_kwargs: dict[str, Any]) -> LoggingStore[LocalStore]:
4242
return self.store_cls(**store_kwargs)
4343

44-
def test_store_supports_writes(self, store: LoggingStore) -> None:
44+
def test_store_supports_writes(self, store: LoggingStore[LocalStore]) -> None:
4545
assert store.supports_writes
4646

47-
def test_store_supports_partial_writes(self, store: LoggingStore) -> None:
47+
def test_store_supports_partial_writes(self, store: LoggingStore[LocalStore]) -> None:
4848
assert store.supports_partial_writes
4949

50-
def test_store_supports_listing(self, store: LoggingStore) -> None:
50+
def test_store_supports_listing(self, store: LoggingStore[LocalStore]) -> None:
5151
assert store.supports_listing
5252

53-
def test_store_repr(self, store: LoggingStore) -> None:
53+
def test_store_repr(self, store: LoggingStore[LocalStore]) -> None:
5454
assert f"{store!r}" == f"LoggingStore(LocalStore, 'file://{store._store.root.as_posix()}')"
5555

56-
def test_store_str(self, store: LoggingStore) -> None:
56+
def test_store_str(self, store: LoggingStore[LocalStore]) -> None:
5757
assert str(store) == f"logging-file://{store._store.root.as_posix()}"
5858

59-
async def test_default_handler(self, local_store, capsys) -> None:
59+
async def test_default_handler(
60+
self, local_store: LocalStore, capsys: pytest.CaptureFixture[str]
61+
) -> None:
6062
# Store and then remove existing handlers to enter default handler code path
6163
handlers = logging.getLogger().handlers[:]
6264
for h in handlers:
6365
logging.getLogger().removeHandler(h)
6466
# Test logs are sent to stdout
6567
wrapped = LoggingStore(store=local_store)
6668
buffer = default_buffer_prototype().buffer
67-
res = await wrapped.set("foo/bar/c/0", buffer.from_bytes(b"\x01\x02\x03\x04"))
69+
res = await wrapped.set("foo/bar/c/0", buffer.from_bytes(b"\x01\x02\x03\x04")) # type: ignore[func-returns-value]
6870
assert res is None
6971
captured = capsys.readouterr()
7072
assert len(captured) == 2
@@ -74,7 +76,7 @@ async def test_default_handler(self, local_store, capsys) -> None:
7476
for h in handlers:
7577
logging.getLogger().addHandler(h)
7678

77-
def test_is_open_setter_raises(self, store: LoggingStore) -> None:
79+
def test_is_open_setter_raises(self, store: LoggingStore[LocalStore]) -> None:
7880
"Test that a user cannot change `_is_open` without opening the underlying store."
7981
with pytest.raises(
8082
NotImplementedError, match="LoggingStore must be opened via the `_open` method"
@@ -83,12 +85,12 @@ def test_is_open_setter_raises(self, store: LoggingStore) -> None:
8385

8486

8587
@pytest.mark.parametrize("store", ["local", "memory", "zip"], indirect=["store"])
86-
async def test_logging_store(store: Store, caplog) -> None:
88+
async def test_logging_store(store: Store, caplog: pytest.LogCaptureFixture) -> None:
8789
wrapped = LoggingStore(store=store, log_level="DEBUG")
8890
buffer = default_buffer_prototype().buffer
8991

9092
caplog.clear()
91-
res = await wrapped.set("foo/bar/c/0", buffer.from_bytes(b"\x01\x02\x03\x04"))
93+
res = await wrapped.set("foo/bar/c/0", buffer.from_bytes(b"\x01\x02\x03\x04")) # type: ignore[func-returns-value]
9294
assert res is None
9395
assert len(caplog.record_tuples) == 2
9496
for tup in caplog.record_tuples:

0 commit comments

Comments
 (0)