Skip to content

Commit

Permalink
add testing
Browse files Browse the repository at this point in the history
  • Loading branch information
lfunderburk committed Sep 19, 2024
1 parent 45d1d9a commit 75d1da6
Show file tree
Hide file tree
Showing 17 changed files with 664 additions and 3 deletions.
2 changes: 1 addition & 1 deletion .github/workflows/CI.yml
Original file line number Diff line number Diff line change
Expand Up @@ -123,7 +123,7 @@ jobs:
. venv/bin/activate
WHEEL_FILE=$(ls ./dist/*.whl)
uv pip install -v --no-deps $WHEEL_FILE
just test-py
# just test-py
publish-to-pypi:
name: Publish to PyPI
Expand Down
6 changes: 5 additions & 1 deletion pyproject.toml
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,8 @@ classifiers = [

dependencies = [
"bytewax>=0.21",
"pyarrow>=17.0.0"
"pyarrow>=17.0.0",
"duckdb==1.1.0"
]

[project.urls]
Expand All @@ -38,6 +39,9 @@ build-backend = "setuptools.build_meta"

[tool.pytest.ini_options]
addopts = "-v"
testpaths = [
"pytests"
]

[tool.mypy]
disallow_untyped_defs = true
Expand Down
1 change: 1 addition & 0 deletions pytests/__init__.py
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
"""Test the list_parts method of DuckDBSink."""
1 change: 0 additions & 1 deletion pytests/bytewax_duckdb.py

This file was deleted.

126 changes: 126 additions & 0 deletions pytests/test_sink.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,126 @@
"""Tests for bytewax.bytewax_duckdb module."""

import os
from pathlib import Path
from unittest.mock import patch

import pytest

from bytewax.bytewax_duckdb import DuckDBSink, DuckDBSinkPartition


# Skip the license warning in tests
@pytest.fixture(autouse=True)
def suppress_license_warning(monkeypatch: pytest.MonkeyPatch) -> None:
"""Suppress the license warning in tests."""
monkeypatch.setitem(os.environ, "BYTEWAX_LICENSE", "1")


@pytest.fixture
def db_path(tmp_path: Path) -> str:
"""Generate a temporary path for the DuckDB database file."""
return str(tmp_path / "test_duckdb.db")


@pytest.fixture
def table_name() -> str:
"""Fixture for the table name."""
return "test_table"


@pytest.fixture
def create_table_sql() -> str:
"""Fixture for the SQL statement to create a table."""
return "CREATE TABLE test_table (id INTEGER, name TEXT)"


@pytest.fixture
def sink_partition(
db_path: str, table_name: str, create_table_sql: str
) -> DuckDBSinkPartition:
"""Fixture for the DuckDBSinkPartition class."""
return DuckDBSinkPartition(
db_path=db_path,
table_name=table_name,
create_table_sql=create_table_sql,
resume_state=None,
)


def test_duckdbsinkpartition_initialization(
sink_partition: DuckDBSinkPartition, db_path: str, table_name: str
) -> None:
"""Test the initialization of DuckDBSinkPartition."""
assert sink_partition.db_path == db_path
assert sink_partition.table_name == table_name
assert sink_partition.total_rows_written == 0
assert len(sink_partition.buffer) == 0


def test_duckdbsinkpartition_write_batch(sink_partition: DuckDBSinkPartition) -> None:
"""Test the write_batch method of DuckDBSinkPartition."""
items = [{"id": 1, "name": "Alice"}, {"id": 2, "name": "Bob"}]
sink_partition.write_batch(items)
assert len(sink_partition.buffer) == 2 # All items should be in the buffer


def test_duckdbsinkpartition_safe_write(sink_partition: DuckDBSinkPartition) -> None:
"""Test the _safe_write method of DuckDBSinkPartition."""
items = [{"id": 1, "name": "Alice"}, {"id": 2, "name": "Bob"}]
sink_partition.write_batch(items)

# Mock _safe_write to avoid actual DuckDB interaction
with patch.object(
sink_partition, "_safe_write", wraps=sink_partition._safe_write
) as mock_write:
sink_partition._safe_write(items)
mock_write.assert_called_once()


def test_duckdbsinkpartition_snapshot(sink_partition: DuckDBSinkPartition) -> None:
"""Test the snapshot method of DuckDBSinkPartition."""
items = [{"id": 1, "name": "Alice"}]
sink_partition.write_batch(items)
snapshot = sink_partition.snapshot()
assert snapshot == (0, 1) # 0 rows written, 1 item in buffer


def test_duckdbsinkpartition_close(sink_partition: DuckDBSinkPartition) -> None:
"""Test the close method of DuckDBSinkPartition."""
items = [{"id": 1, "name": "Alice"}]
sink_partition.write_batch(items)
with patch.object(sink_partition, "_safe_write") as mock_write:
sink_partition.close()
mock_write.assert_called_once() # Ensure the buffer was written before closing


def test_duckdbsink_initialization() -> None:
"""Test the initialization of DuckDBSink."""
sink = DuckDBSink(db_path_template="test_{partition}.db", table_name="test_table")
assert sink.db_path_template == "test_{partition}.db"
assert sink.table_name == "test_table"


def test_duckdbsink_list_parts() -> None:
"""Test the list_parts method of DuckDBSink."""
sink = DuckDBSink(db_path_template="test_{partition}.db", table_name="test_table")
parts = sink.list_parts()
assert parts == ["partition_0", "partition_1", "partition_2", "partition_3"]


def test_duckdbsink_part_fn() -> None:
"""Test the part_fn method of DuckDBSink."""
sink = DuckDBSink(db_path_template="test_{partition}.db", table_name="test_table")
partition_index = sink.part_fn("some_key")
assert isinstance(partition_index, int)


def test_duckdbsink_build_part(db_path: str, table_name: str) -> None:
"""Test the build_part method of DuckDBSink."""
sink = DuckDBSink(db_path_template="test_{partition}.db", table_name=table_name)
partition = sink.build_part(
step_id="step_1", for_part="partition_0", resume_state=None
)
assert isinstance(partition, DuckDBSinkPartition)
assert partition.db_path == "test_partition_0.db"
assert partition.table_name == table_name
48 changes: 48 additions & 0 deletions requirements/build-py3.10.txt
Original file line number Diff line number Diff line change
Expand Up @@ -36,6 +36,54 @@ colorama==0.4.6 \
--hash=sha256:08695f5cb7ed6e0531a20572697297273c47b8cae5a63ffc6d6ed5c201be6e44 \
--hash=sha256:4f1d9991f5acc0ca119f9d443620b77f9d6b33703e51011c16baf57afb285fc6
# via -r requirements/build.in
duckdb==1.1.0 \
--hash=sha256:069fb7bca459e31edb32a61f0eea95d7a8a766bef7b8318072563abf8e939593 \
--hash=sha256:0e3644b1f034012d82b9baa12a7ea306fe71dc6623731b28c753c4a617ff9499 \
--hash=sha256:11ec967b67159361ceade34095796a8d19368ea5c30cad988f44896b082b0816 \
--hash=sha256:16243e66a9fd0e64ee265f2634d137adc6593f54ddf3ef55cb8a29e1decf6e54 \
--hash=sha256:1f3aea31341ce400640dd522e4399b941f66df17e39884f446638fe958d6117c \
--hash=sha256:211a33c1ddb5cc609f75eb43772b0b03b45d2fa89bec107e4715267ca907806a \
--hash=sha256:23fc9aa0af74e3803ed90c8d98280fd5bcac8c940592bf6288e8fd60fb051d00 \
--hash=sha256:29dc18087de47563b3859a6b98bbed96e1c96ce5db829646dc3b16a916997e7d \
--hash=sha256:3da30b7b466f710d52caa1fdc3ef0bf4176ad7f115953cd9f8b0fbf0f723778f \
--hash=sha256:3db4ab31c20de4edaef152930836b38e7662cd71370748fdf2c38ba9cf854dc4 \
--hash=sha256:42b910a149e00f40a1766dc74fa309d4255b912a5d2fdcc387287658048650f6 \
--hash=sha256:47849d546dc4238c0f20e95fe53b621aa5b08684e68fff91fd84a7092be91a17 \
--hash=sha256:4e1c3414f7fd01f4810dc8b335deffc91933a159282d65fef11c1286bc0ded04 \
--hash=sha256:510b5885ed6c267b9c0e1e7c6138fdffc2dd6f934a5a95b76da85da127213338 \
--hash=sha256:53825a63193c582a78c152ea53de8d145744ddbeea18f452625a82ebc33eb14a \
--hash=sha256:55ef98bcc7ba745752607f1b926e8d9b7ce32c42c423bbad10c44820aefe23a7 \
--hash=sha256:58f1633dd2c5af5088ae2d119418e200855d0699d84f2fae9d46d30f404bcead \
--hash=sha256:5e4cbc408e6e41146dea89b9044dae7356e353db0c96b183e5583ee02bc6ae5d \
--hash=sha256:61fb838da51e07ceb0222c4406b059b90e10efcc453c19a3650b73c0112138c4 \
--hash=sha256:6370ae27ec8167ccfbefb94f58ad9fdc7bac142399960549d6d367f233189868 \
--hash=sha256:64bf2a6e23840d662bd2ac09206a9bd4fa657418884d69e5c352d4456dc70b3c \
--hash=sha256:655df442ceebfc6f3fd6c8766e04b60d44dddedfa90275d794f9fab2d3180879 \
--hash=sha256:657bc7ac64d5faf069a782ae73afac51ef30ae2e5d0e09ce6a09d03db84ab35e \
--hash=sha256:6e183729bb64be7798ccbfda6283ebf423c869268c25af2b56929e48f763be2f \
--hash=sha256:7807e2f0d3344668e433f0dc1f54bfaddd410589611393e9a7ed56f8dec9514f \
--hash=sha256:78a4510f82431ee3f14db689fe8727a4a9062c8f2fbb3bcfe3bfad3c1a198004 \
--hash=sha256:89f3de8cba57d19b41cd3c47dd06d979bd2a2ffead115480e37afbe72b02896d \
--hash=sha256:8e74b6f8a5145abbf7e6c1a2a61f0adbcd493c19b358f524ec9a3cebdf362abb \
--hash=sha256:aac2fcabe2d5072c252d0b3087365f431de812d8199705089fb073e4d039d19c \
--hash=sha256:aad02f50d5a2020822d1638fc1a9bcf082056f11d2e15ccfc1c1ed4d0f85a3be \
--hash=sha256:b4d4c12b1f98732151bd31377753e0da1a20f6423016d2d097d2e31953ec7c23 \
--hash=sha256:b9b6a77ef0183f561b1fc2945fcc762a71570ffd33fea4e3a855d413ed596fe4 \
--hash=sha256:bd11bc899cebf5ff936d1276a2dfb7b7db08aba3bcc42924afeafc2163bddb43 \
--hash=sha256:c6bc2a58689adf5520303c5f68b065b9f980bd31f1366c541b8c7490abaf55cd \
--hash=sha256:cd9fb1408942411ad360f8414bc3fbf0091c396ca903d947a10f2e31324d5cbd \
--hash=sha256:d02be208d2885ca085d4c852b911493b8cdac9d6eae893259da32bd72a437c25 \
--hash=sha256:d18caea926b1e301c29b140418fca697aad728129e269b4f82c2795a184549e1 \
--hash=sha256:d8333f3e85fa2a0f1c222b752c2bd42ea875235ff88492f7bcbb6867d0f644eb \
--hash=sha256:d86a6926313913cd2cc7e08816d3e7f72ba340adf2959279b1a80058be6526d9 \
--hash=sha256:d89eaaa5df8a57e7d2bc1f4c46493bb1fee319a00155f2015810ad2ace6570ae \
--hash=sha256:e2a08175e43b865c1e9611efd18cacd29ddd69093de442b1ebdf312071df7719 \
--hash=sha256:e39f9b7b62e64e10d421ff04480290a70129c38067d1a4f600e9212b10542c5a \
--hash=sha256:e3b6b4fe1edfe35f64f403a9f0ab75258cee35abd964356893ee37424174b7e4 \
--hash=sha256:eb66e9e7391801928ea134dcab12d2e4c97f2ce0391c603a3e480bbb15830bc8 \
--hash=sha256:ecb19319883564237a7a03a104dbe7f445e73519bb67108fcab3d19b6b91fe30 \
--hash=sha256:f6486323ab20656d22ffa8f3c6e109dde30d0b327b7c831f22ebcfe747f97fb0
# via -r requirements/lib-py3.10.txt
exceptiongroup==1.2.2 \
--hash=sha256:3111b9d131c238bec2f8f516e123e14ba243563fb135d3fe885990585aa7795b \
--hash=sha256:47c2edf7c6738fafb49fd34290706d1a1a2f4d1c6df275526b62cbb4aa5393cc
Expand Down
48 changes: 48 additions & 0 deletions requirements/build-py3.11.txt
Original file line number Diff line number Diff line change
Expand Up @@ -36,6 +36,54 @@ colorama==0.4.6 \
--hash=sha256:08695f5cb7ed6e0531a20572697297273c47b8cae5a63ffc6d6ed5c201be6e44 \
--hash=sha256:4f1d9991f5acc0ca119f9d443620b77f9d6b33703e51011c16baf57afb285fc6
# via -r requirements/build.in
duckdb==1.1.0 \
--hash=sha256:069fb7bca459e31edb32a61f0eea95d7a8a766bef7b8318072563abf8e939593 \
--hash=sha256:0e3644b1f034012d82b9baa12a7ea306fe71dc6623731b28c753c4a617ff9499 \
--hash=sha256:11ec967b67159361ceade34095796a8d19368ea5c30cad988f44896b082b0816 \
--hash=sha256:16243e66a9fd0e64ee265f2634d137adc6593f54ddf3ef55cb8a29e1decf6e54 \
--hash=sha256:1f3aea31341ce400640dd522e4399b941f66df17e39884f446638fe958d6117c \
--hash=sha256:211a33c1ddb5cc609f75eb43772b0b03b45d2fa89bec107e4715267ca907806a \
--hash=sha256:23fc9aa0af74e3803ed90c8d98280fd5bcac8c940592bf6288e8fd60fb051d00 \
--hash=sha256:29dc18087de47563b3859a6b98bbed96e1c96ce5db829646dc3b16a916997e7d \
--hash=sha256:3da30b7b466f710d52caa1fdc3ef0bf4176ad7f115953cd9f8b0fbf0f723778f \
--hash=sha256:3db4ab31c20de4edaef152930836b38e7662cd71370748fdf2c38ba9cf854dc4 \
--hash=sha256:42b910a149e00f40a1766dc74fa309d4255b912a5d2fdcc387287658048650f6 \
--hash=sha256:47849d546dc4238c0f20e95fe53b621aa5b08684e68fff91fd84a7092be91a17 \
--hash=sha256:4e1c3414f7fd01f4810dc8b335deffc91933a159282d65fef11c1286bc0ded04 \
--hash=sha256:510b5885ed6c267b9c0e1e7c6138fdffc2dd6f934a5a95b76da85da127213338 \
--hash=sha256:53825a63193c582a78c152ea53de8d145744ddbeea18f452625a82ebc33eb14a \
--hash=sha256:55ef98bcc7ba745752607f1b926e8d9b7ce32c42c423bbad10c44820aefe23a7 \
--hash=sha256:58f1633dd2c5af5088ae2d119418e200855d0699d84f2fae9d46d30f404bcead \
--hash=sha256:5e4cbc408e6e41146dea89b9044dae7356e353db0c96b183e5583ee02bc6ae5d \
--hash=sha256:61fb838da51e07ceb0222c4406b059b90e10efcc453c19a3650b73c0112138c4 \
--hash=sha256:6370ae27ec8167ccfbefb94f58ad9fdc7bac142399960549d6d367f233189868 \
--hash=sha256:64bf2a6e23840d662bd2ac09206a9bd4fa657418884d69e5c352d4456dc70b3c \
--hash=sha256:655df442ceebfc6f3fd6c8766e04b60d44dddedfa90275d794f9fab2d3180879 \
--hash=sha256:657bc7ac64d5faf069a782ae73afac51ef30ae2e5d0e09ce6a09d03db84ab35e \
--hash=sha256:6e183729bb64be7798ccbfda6283ebf423c869268c25af2b56929e48f763be2f \
--hash=sha256:7807e2f0d3344668e433f0dc1f54bfaddd410589611393e9a7ed56f8dec9514f \
--hash=sha256:78a4510f82431ee3f14db689fe8727a4a9062c8f2fbb3bcfe3bfad3c1a198004 \
--hash=sha256:89f3de8cba57d19b41cd3c47dd06d979bd2a2ffead115480e37afbe72b02896d \
--hash=sha256:8e74b6f8a5145abbf7e6c1a2a61f0adbcd493c19b358f524ec9a3cebdf362abb \
--hash=sha256:aac2fcabe2d5072c252d0b3087365f431de812d8199705089fb073e4d039d19c \
--hash=sha256:aad02f50d5a2020822d1638fc1a9bcf082056f11d2e15ccfc1c1ed4d0f85a3be \
--hash=sha256:b4d4c12b1f98732151bd31377753e0da1a20f6423016d2d097d2e31953ec7c23 \
--hash=sha256:b9b6a77ef0183f561b1fc2945fcc762a71570ffd33fea4e3a855d413ed596fe4 \
--hash=sha256:bd11bc899cebf5ff936d1276a2dfb7b7db08aba3bcc42924afeafc2163bddb43 \
--hash=sha256:c6bc2a58689adf5520303c5f68b065b9f980bd31f1366c541b8c7490abaf55cd \
--hash=sha256:cd9fb1408942411ad360f8414bc3fbf0091c396ca903d947a10f2e31324d5cbd \
--hash=sha256:d02be208d2885ca085d4c852b911493b8cdac9d6eae893259da32bd72a437c25 \
--hash=sha256:d18caea926b1e301c29b140418fca697aad728129e269b4f82c2795a184549e1 \
--hash=sha256:d8333f3e85fa2a0f1c222b752c2bd42ea875235ff88492f7bcbb6867d0f644eb \
--hash=sha256:d86a6926313913cd2cc7e08816d3e7f72ba340adf2959279b1a80058be6526d9 \
--hash=sha256:d89eaaa5df8a57e7d2bc1f4c46493bb1fee319a00155f2015810ad2ace6570ae \
--hash=sha256:e2a08175e43b865c1e9611efd18cacd29ddd69093de442b1ebdf312071df7719 \
--hash=sha256:e39f9b7b62e64e10d421ff04480290a70129c38067d1a4f600e9212b10542c5a \
--hash=sha256:e3b6b4fe1edfe35f64f403a9f0ab75258cee35abd964356893ee37424174b7e4 \
--hash=sha256:eb66e9e7391801928ea134dcab12d2e4c97f2ce0391c603a3e480bbb15830bc8 \
--hash=sha256:ecb19319883564237a7a03a104dbe7f445e73519bb67108fcab3d19b6b91fe30 \
--hash=sha256:f6486323ab20656d22ffa8f3c6e109dde30d0b327b7c831f22ebcfe747f97fb0
# via -r requirements/lib-py3.11.txt
iniconfig==2.0.0 \
--hash=sha256:2d91e135bf72d31a410b17c16da610a82cb55f6b0477d1a902134b24a455b8b3 \
--hash=sha256:b6a85871a79d2e3b22d2d1b94ac2824226a63c6b741c88f7ae975f18b6778374
Expand Down
48 changes: 48 additions & 0 deletions requirements/build-py3.12.txt
Original file line number Diff line number Diff line change
Expand Up @@ -36,6 +36,54 @@ colorama==0.4.6 \
--hash=sha256:08695f5cb7ed6e0531a20572697297273c47b8cae5a63ffc6d6ed5c201be6e44 \
--hash=sha256:4f1d9991f5acc0ca119f9d443620b77f9d6b33703e51011c16baf57afb285fc6
# via -r requirements/build.in
duckdb==1.1.0 \
--hash=sha256:069fb7bca459e31edb32a61f0eea95d7a8a766bef7b8318072563abf8e939593 \
--hash=sha256:0e3644b1f034012d82b9baa12a7ea306fe71dc6623731b28c753c4a617ff9499 \
--hash=sha256:11ec967b67159361ceade34095796a8d19368ea5c30cad988f44896b082b0816 \
--hash=sha256:16243e66a9fd0e64ee265f2634d137adc6593f54ddf3ef55cb8a29e1decf6e54 \
--hash=sha256:1f3aea31341ce400640dd522e4399b941f66df17e39884f446638fe958d6117c \
--hash=sha256:211a33c1ddb5cc609f75eb43772b0b03b45d2fa89bec107e4715267ca907806a \
--hash=sha256:23fc9aa0af74e3803ed90c8d98280fd5bcac8c940592bf6288e8fd60fb051d00 \
--hash=sha256:29dc18087de47563b3859a6b98bbed96e1c96ce5db829646dc3b16a916997e7d \
--hash=sha256:3da30b7b466f710d52caa1fdc3ef0bf4176ad7f115953cd9f8b0fbf0f723778f \
--hash=sha256:3db4ab31c20de4edaef152930836b38e7662cd71370748fdf2c38ba9cf854dc4 \
--hash=sha256:42b910a149e00f40a1766dc74fa309d4255b912a5d2fdcc387287658048650f6 \
--hash=sha256:47849d546dc4238c0f20e95fe53b621aa5b08684e68fff91fd84a7092be91a17 \
--hash=sha256:4e1c3414f7fd01f4810dc8b335deffc91933a159282d65fef11c1286bc0ded04 \
--hash=sha256:510b5885ed6c267b9c0e1e7c6138fdffc2dd6f934a5a95b76da85da127213338 \
--hash=sha256:53825a63193c582a78c152ea53de8d145744ddbeea18f452625a82ebc33eb14a \
--hash=sha256:55ef98bcc7ba745752607f1b926e8d9b7ce32c42c423bbad10c44820aefe23a7 \
--hash=sha256:58f1633dd2c5af5088ae2d119418e200855d0699d84f2fae9d46d30f404bcead \
--hash=sha256:5e4cbc408e6e41146dea89b9044dae7356e353db0c96b183e5583ee02bc6ae5d \
--hash=sha256:61fb838da51e07ceb0222c4406b059b90e10efcc453c19a3650b73c0112138c4 \
--hash=sha256:6370ae27ec8167ccfbefb94f58ad9fdc7bac142399960549d6d367f233189868 \
--hash=sha256:64bf2a6e23840d662bd2ac09206a9bd4fa657418884d69e5c352d4456dc70b3c \
--hash=sha256:655df442ceebfc6f3fd6c8766e04b60d44dddedfa90275d794f9fab2d3180879 \
--hash=sha256:657bc7ac64d5faf069a782ae73afac51ef30ae2e5d0e09ce6a09d03db84ab35e \
--hash=sha256:6e183729bb64be7798ccbfda6283ebf423c869268c25af2b56929e48f763be2f \
--hash=sha256:7807e2f0d3344668e433f0dc1f54bfaddd410589611393e9a7ed56f8dec9514f \
--hash=sha256:78a4510f82431ee3f14db689fe8727a4a9062c8f2fbb3bcfe3bfad3c1a198004 \
--hash=sha256:89f3de8cba57d19b41cd3c47dd06d979bd2a2ffead115480e37afbe72b02896d \
--hash=sha256:8e74b6f8a5145abbf7e6c1a2a61f0adbcd493c19b358f524ec9a3cebdf362abb \
--hash=sha256:aac2fcabe2d5072c252d0b3087365f431de812d8199705089fb073e4d039d19c \
--hash=sha256:aad02f50d5a2020822d1638fc1a9bcf082056f11d2e15ccfc1c1ed4d0f85a3be \
--hash=sha256:b4d4c12b1f98732151bd31377753e0da1a20f6423016d2d097d2e31953ec7c23 \
--hash=sha256:b9b6a77ef0183f561b1fc2945fcc762a71570ffd33fea4e3a855d413ed596fe4 \
--hash=sha256:bd11bc899cebf5ff936d1276a2dfb7b7db08aba3bcc42924afeafc2163bddb43 \
--hash=sha256:c6bc2a58689adf5520303c5f68b065b9f980bd31f1366c541b8c7490abaf55cd \
--hash=sha256:cd9fb1408942411ad360f8414bc3fbf0091c396ca903d947a10f2e31324d5cbd \
--hash=sha256:d02be208d2885ca085d4c852b911493b8cdac9d6eae893259da32bd72a437c25 \
--hash=sha256:d18caea926b1e301c29b140418fca697aad728129e269b4f82c2795a184549e1 \
--hash=sha256:d8333f3e85fa2a0f1c222b752c2bd42ea875235ff88492f7bcbb6867d0f644eb \
--hash=sha256:d86a6926313913cd2cc7e08816d3e7f72ba340adf2959279b1a80058be6526d9 \
--hash=sha256:d89eaaa5df8a57e7d2bc1f4c46493bb1fee319a00155f2015810ad2ace6570ae \
--hash=sha256:e2a08175e43b865c1e9611efd18cacd29ddd69093de442b1ebdf312071df7719 \
--hash=sha256:e39f9b7b62e64e10d421ff04480290a70129c38067d1a4f600e9212b10542c5a \
--hash=sha256:e3b6b4fe1edfe35f64f403a9f0ab75258cee35abd964356893ee37424174b7e4 \
--hash=sha256:eb66e9e7391801928ea134dcab12d2e4c97f2ce0391c603a3e480bbb15830bc8 \
--hash=sha256:ecb19319883564237a7a03a104dbe7f445e73519bb67108fcab3d19b6b91fe30 \
--hash=sha256:f6486323ab20656d22ffa8f3c6e109dde30d0b327b7c831f22ebcfe747f97fb0
# via -r requirements/lib-py3.12.txt
iniconfig==2.0.0 \
--hash=sha256:2d91e135bf72d31a410b17c16da610a82cb55f6b0477d1a902134b24a455b8b3 \
--hash=sha256:b6a85871a79d2e3b22d2d1b94ac2824226a63c6b741c88f7ae975f18b6778374
Expand Down
Loading

0 comments on commit 75d1da6

Please sign in to comment.