diff --git a/pyproject.toml b/pyproject.toml index aadd499..6f9dd39 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -17,6 +17,7 @@ dependencies = [ "more-itertools>=10.8.0", "fire>=0.7.1", "pydantic>=2.12.4", + "beartype>=0.22.6", "jinja2>=3.1.6", "pydantic-settings>=2.12.0", "returns>=0.26.0", @@ -47,6 +48,7 @@ packages = ["src/project", "src"] [tool.uv] default-groups = ["dev"] +cache-dir = ".uv-cache" [tool.ruff] target-version = "py313" @@ -154,8 +156,10 @@ dev = [ "tox>=4.30.0", "hypothesis>=6.148.2", "pytest>=9.0.0", + "pytest-sugar>=1.1.1", "pytest-xdist>=3.8.0", "pytest-asyncio>=1.3.0", + "pytest-beartype>=0.2.0", "ruff>=0.14.4", "mypy>=1.18.0", "ty>=0.0.1a26", diff --git a/uv.lock b/uv.lock index 46c40d9..e90eb5d 100644 --- a/uv.lock +++ b/uv.lock @@ -245,6 +245,15 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/b7/b8/3fe70c75fe32afc4bb507f75563d39bc5642255d1d94f1f23604725780bf/babel-2.17.0-py3-none-any.whl", hash = "sha256:4d0b53093fdfb4b21c92b5213dba5a1b23885afa8383709427046b21c366e5f2", size = 10182537, upload-time = "2025-02-01T15:17:37.39Z" }, ] +[[package]] +name = "beartype" +version = "0.22.6" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/88/e2/105ceb1704cb80fe4ab3872529ab7b6f365cf7c74f725e6132d0efcf1560/beartype-0.22.6.tar.gz", hash = "sha256:97fbda69c20b48c5780ac2ca60ce3c1bb9af29b3a1a0216898ffabdd523e48f4", size = 1588975, upload-time = "2025-11-20T04:47:14.736Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/98/c9/ceecc71fe2c9495a1d8e08d44f5f31f5bca1350d5b2e27a4b6265424f59e/beartype-0.22.6-py3-none-any.whl", hash = "sha256:0584bc46a2ea2a871509679278cda992eadde676c01356ab0ac77421f3c9a093", size = 1324807, upload-time = "2025-11-20T04:47:11.837Z" }, +] + [[package]] name = "beautifulsoup4" version = "4.14.2" @@ -2265,6 +2274,7 @@ source = { editable = "." } dependencies = [ { name = "aiofiles" }, { name = "aiohttp" }, + { name = "beartype" }, { name = "beautifulsoup4" }, { name = "cachetools" }, { name = "click" }, @@ -2310,6 +2320,8 @@ dev = [ { name = "pre-commit" }, { name = "pytest" }, { name = "pytest-asyncio" }, + { name = "pytest-beartype" }, + { name = "pytest-sugar" }, { name = "pytest-xdist" }, { name = "ruff" }, { name = "tox" }, @@ -2324,6 +2336,7 @@ dev = [ requires-dist = [ { name = "aiofiles", specifier = ">=25.1.0" }, { name = "aiohttp", specifier = ">=3.9.5" }, + { name = "beartype", specifier = ">=0.22.6" }, { name = "beautifulsoup4", specifier = ">=4.14.0" }, { name = "cachetools", specifier = ">=6.2.1" }, { name = "click", specifier = ">=8.3.1" }, @@ -2369,6 +2382,8 @@ dev = [ { name = "pre-commit", specifier = ">=4.3.0" }, { name = "pytest", specifier = ">=9.0.0" }, { name = "pytest-asyncio", specifier = ">=1.3.0" }, + { name = "pytest-beartype", specifier = ">=0.2.0" }, + { name = "pytest-sugar", specifier = ">=1.1.1" }, { name = "pytest-xdist", specifier = ">=3.8.0" }, { name = "ruff", specifier = ">=0.14.4" }, { name = "tox", specifier = ">=4.30.0" }, @@ -2753,6 +2768,32 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/e5/35/f8b19922b6a25bc0880171a2f1a003eaeb93657475193ab516fd87cac9da/pytest_asyncio-1.3.0-py3-none-any.whl", hash = "sha256:611e26147c7f77640e6d0a92a38ed17c3e9848063698d5c93d5aa7aa11cebff5", size = 15075, upload-time = "2025-11-10T16:07:45.537Z" }, ] +[[package]] +name = "pytest-beartype" +version = "0.2.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "beartype" }, + { name = "pytest" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/63/69/954ee438f1c72f4247b09381cd07a7d776ebdb4f6c0359b3b971676a2eef/pytest_beartype-0.2.0.tar.gz", hash = "sha256:9eeec379f812e0e5c9c1bb7e95d90a33a79c387034f2d735e03bc9aa0fd7cf3f", size = 5871, upload-time = "2024-10-31T17:52:35.974Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/81/69/87efc2482aab172a32e4147eb5666ebc2e4c875e17d3104878553720a83a/pytest_beartype-0.2.0-py3-none-any.whl", hash = "sha256:be6be04be4a143f965f21140d6661bab43dcd7c761d50cf6daa1b16848e5d2d0", size = 4940, upload-time = "2024-10-31T17:52:33.528Z" }, +] + +[[package]] +name = "pytest-sugar" +version = "1.1.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "pytest" }, + { name = "termcolor" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/0b/4e/60fed105549297ba1a700e1ea7b828044842ea27d72c898990510b79b0e2/pytest-sugar-1.1.1.tar.gz", hash = "sha256:73b8b65163ebf10f9f671efab9eed3d56f20d2ca68bda83fa64740a92c08f65d", size = 16533, upload-time = "2025-08-23T12:19:35.737Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/87/d5/81d38a91c1fdafb6711f053f5a9b92ff788013b19821257c2c38c1e132df/pytest_sugar-1.1.1-py3-none-any.whl", hash = "sha256:2f8319b907548d5b9d03a171515c1d43d2e38e32bd8182a1781eb20b43344cc8", size = 11440, upload-time = "2025-08-23T12:19:34.894Z" }, +] + [[package]] name = "pytest-xdist" version = "3.8.0"