From 59c1ccc32faf98d19a68bcf7f70544756fac3b6c Mon Sep 17 00:00:00 2001 From: Asher Norland Date: Thu, 15 Jun 2023 03:39:45 -0400 Subject: [PATCH 01/16] Update pdm.lock --- pdm.lock | 48 ++++++++++++++++++++++++------------------------ 1 file changed, 24 insertions(+), 24 deletions(-) diff --git a/pdm.lock b/pdm.lock index 8fcf779..c4f1532 100644 --- a/pdm.lock +++ b/pdm.lock @@ -63,7 +63,7 @@ dependencies = [ [[package]] name = "cppython-core" -version = "0.6.1.dev68" +version = "0.6.1.dev70" requires_python = ">=3.11" summary = "Data definitions for CPPython" dependencies = [ @@ -130,7 +130,7 @@ summary = "Utility library for gitignore style pattern matching of file paths." [[package]] name = "platformdirs" -version = "3.5.1" +version = "3.5.3" requires_python = ">=3.7" summary = "A small Python package for determining appropriate platform-specific dirs, e.g. a \"user data dir\"." @@ -142,7 +142,7 @@ summary = "plugin and hook calling mechanisms for python" [[package]] name = "pydantic" -version = "2.0b1" +version = "2.0b2" requires_python = ">=3.7" summary = "Data validation using Python type hints" dependencies = [ @@ -174,7 +174,7 @@ dependencies = [ [[package]] name = "pytest" -version = "7.3.1" +version = "7.3.2" requires_python = ">=3.7" summary = "pytest: simple powerful testing with Python" dependencies = [ @@ -205,7 +205,7 @@ dependencies = [ [[package]] name = "pytest-cppython" -version = "0.3.1.dev42" +version = "0.3.1.dev44" requires_python = ">=3.11" summary = "A pytest plugin that imports CPPython testing types" dependencies = [ @@ -230,7 +230,7 @@ summary = "Style preserving TOML library" [[package]] name = "typing-extensions" -version = "4.6.2" +version = "4.6.3" requires_python = ">=3.7" summary = "Backported and Experimental Type Hints for Python 3.7+" @@ -352,9 +352,9 @@ content_hash = "sha256:773ab8aa79c3209ee9a05956dc5808f351d35914c4c996301b024b71c {url = "https://files.pythonhosted.org/packages/fe/57/e4f8ad64d84ca9e759d783a052795f62a9f9111585e46068845b1cb52c2b/coverage-7.2.7-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6f48351d66575f535669306aa7d6d6f71bc43372473b54a832222803eb956fd1"}, {url = "https://files.pythonhosted.org/packages/ff/d5/52fa1891d1802ab2e1b346d37d349cb41cdd4fd03f724ebbf94e80577687/coverage-7.2.7-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:f2f67fe12b22cd130d34d0ef79206061bfb5eda52feb6ce0dba0644e20a03cf4"}, ] -"cppython-core 0.6.1.dev68" = [ - {url = "https://files.pythonhosted.org/packages/5a/bd/f8bb92a67c89cc907031436960a0e4a7a97bfb5ac83bb0356ca0075d711b/cppython-core-0.6.1.dev68.tar.gz", hash = "sha256:17330d7a1dfb8ec39d65f5140befd374696dfe3e315549d84c4a0a17fdbb27af"}, - {url = "https://files.pythonhosted.org/packages/6f/79/7c91049050e3714317f934f9a23ca7232b39930fd79a74cb09672a1016ee/cppython_core-0.6.1.dev68-py3-none-any.whl", hash = "sha256:b3343fd13575757d2b39aecd30ba675177b94df8371055ca0c2e4ceb4cc04ca4"}, +"cppython-core 0.6.1.dev70" = [ + {url = "https://files.pythonhosted.org/packages/82/44/6b22f00a9590ac4edba724f891f05ac4936b441456ab26bf90dbf80e6d07/cppython_core-0.6.1.dev70-py3-none-any.whl", hash = "sha256:c2761c1b9f20d5da53f52d2273be9dced812f56d2f8186786ccd662505da14fc"}, + {url = "https://files.pythonhosted.org/packages/b9/a7/cdad28d35ac41701ebf868f238abd9ac8eecb89283bfafdedbcbe644d4aa/cppython-core-0.6.1.dev70.tar.gz", hash = "sha256:55dc44f3570c67a63ca9d88848a543d71eff476fe13f77948f11ea5f579822b9"}, ] "dill 0.3.6" = [ {url = "https://files.pythonhosted.org/packages/7c/e7/364a09134e1062d4d5ff69b853a56cf61c223e0afcc6906b6832bcd51ea8/dill-0.3.6.tar.gz", hash = "sha256:e5db55f3687856d8fbdab002ed78544e1c4559a130302693d839dfe8f93f2373"}, @@ -450,17 +450,17 @@ content_hash = "sha256:773ab8aa79c3209ee9a05956dc5808f351d35914c4c996301b024b71c {url = "https://files.pythonhosted.org/packages/95/60/d93628975242cc515ab2b8f5b2fc831d8be2eff32f5a1be4776d49305d13/pathspec-0.11.1.tar.gz", hash = "sha256:2798de800fa92780e33acca925945e9a19a133b715067cf165b8866c15a31687"}, {url = "https://files.pythonhosted.org/packages/be/c8/551a803a6ebb174ec1c124e68b449b98a0961f0b737def601e3c1fbb4cfd/pathspec-0.11.1-py3-none-any.whl", hash = "sha256:d8af70af76652554bd134c22b3e8a1cc46ed7d91edcdd721ef1a0c51a84a5293"}, ] -"platformdirs 3.5.1" = [ - {url = "https://files.pythonhosted.org/packages/89/7e/c6ff9ddcf93b9b36c90d88111c4db354afab7f9a58c7ac3257fa717f1268/platformdirs-3.5.1-py3-none-any.whl", hash = "sha256:e2378146f1964972c03c085bb5662ae80b2b8c06226c54b2ff4aa9483e8a13a5"}, - {url = "https://files.pythonhosted.org/packages/9c/0e/ae9ef1049d4b5697e79250c4b2e72796e4152228e67733389868229c92bb/platformdirs-3.5.1.tar.gz", hash = "sha256:412dae91f52a6f84830f39a8078cecd0e866cb72294a5c66808e74d5e88d251f"}, +"platformdirs 3.5.3" = [ + {url = "https://files.pythonhosted.org/packages/6d/1a/96efea7b36835ce89911d7813fe68f5b1db7ecae4023bf209a7aeba93017/platformdirs-3.5.3-py3-none-any.whl", hash = "sha256:0ade98a4895e87dc51d47151f7d2ec290365a585151d97b4d8d6312ed6132fed"}, + {url = "https://files.pythonhosted.org/packages/d2/5d/29eed8861e07378ef46e956650615a9677f8f48df7911674f923236ced2b/platformdirs-3.5.3.tar.gz", hash = "sha256:e48fabd87db8f3a7df7150a4a5ea22c546ee8bc39bc2473244730d4b56d2cc4e"}, ] "pluggy 1.0.0" = [ {url = "https://files.pythonhosted.org/packages/9e/01/f38e2ff29715251cf25532b9082a1589ab7e4f571ced434f98d0139336dc/pluggy-1.0.0-py2.py3-none-any.whl", hash = "sha256:74134bbf457f031a36d68416e1509f34bd5ccc019f0bcc952c7b909d06b37bd3"}, {url = "https://files.pythonhosted.org/packages/a1/16/db2d7de3474b6e37cbb9c008965ee63835bba517e22cdb8c35b5116b5ce1/pluggy-1.0.0.tar.gz", hash = "sha256:4224373bacce55f955a878bf9cfa763c1e360858e330072059e10bad68531159"}, ] -"pydantic 2.0b1" = [ - {url = "https://files.pythonhosted.org/packages/41/ef/dbe593b0a21e187ebbd7d63f714a0d8eeb069520afea5decb46642ff8854/pydantic-2.0b1.tar.gz", hash = "sha256:cba25f8a6090f8bdbc7bea424ad95a53687e10be2f23883c3460a32afd7223d6"}, - {url = "https://files.pythonhosted.org/packages/c9/30/34f9376cb61eaf06973b4d1915fa6aaed5a9db9ad0e255c3d317ae672e34/pydantic-2.0b1-py3-none-any.whl", hash = "sha256:669f0d5e777462bd000682dd3ad4cee249e3c14bab9d0648aa179a766ac0ccd4"}, +"pydantic 2.0b2" = [ + {url = "https://files.pythonhosted.org/packages/05/6f/504e94dcda88a5ec8c680864d188bf3501090536f0bbd3e72c8cb22446bf/pydantic-2.0b2.tar.gz", hash = "sha256:3491863cd9be6608f9cae6796a4fd151d38df1872242c1d5e992dcceb27697fe"}, + {url = "https://files.pythonhosted.org/packages/ad/87/2cc0ffb4493da08e2b76296f380a5e912abbcb95d2f460a08a67259f6151/pydantic-2.0b2-py3-none-any.whl", hash = "sha256:a07edf22ceb91790a4954db62b82dfc0360034e2ab30c1a23d4a65024bc66eb9"}, ] "pydantic-core 0.38.0" = [ {url = "https://files.pythonhosted.org/packages/00/16/21726a8e6d18512f6d604934adc82e6a326cccaa1b6b3b7a29fbfe0f8f12/pydantic_core-0.38.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:16aa493f005447bf6528734432ecf571c7c4dcf54712154a6e3fe70d0576b9d0"}, @@ -549,9 +549,9 @@ content_hash = "sha256:773ab8aa79c3209ee9a05956dc5808f351d35914c4c996301b024b71c {url = "https://files.pythonhosted.org/packages/04/4c/3f7d42a1378c40813772bc5f25184144da09f00ffbe3f60ae985ffa7e10f/pylint-2.17.4-py3-none-any.whl", hash = "sha256:7a1145fb08c251bdb5cca11739722ce64a63db479283d10ce718b2460e54123c"}, {url = "https://files.pythonhosted.org/packages/7e/d4/aba77d10841710fea016422f419dfe501dee05fa0fc3898dc048f7bf3f60/pylint-2.17.4.tar.gz", hash = "sha256:5dcf1d9e19f41f38e4e85d10f511e5b9c35e1aa74251bf95cdd8cb23584e2db1"}, ] -"pytest 7.3.1" = [ - {url = "https://files.pythonhosted.org/packages/1b/d1/72df649a705af1e3a09ffe14b0c7d3be1fd730da6b98beb4a2ed26b8a023/pytest-7.3.1-py3-none-any.whl", hash = "sha256:3799fa815351fea3a5e96ac7e503a96fa51cc9942c3753cda7651b93c1cfa362"}, - {url = "https://files.pythonhosted.org/packages/ec/d9/36b65598f3d19d0a14d13dc87ad5fa42869ae53bb7471f619a30eaabc4bf/pytest-7.3.1.tar.gz", hash = "sha256:434afafd78b1d78ed0addf160ad2b77a30d35d4bdf8af234fe621919d9ed15e3"}, +"pytest 7.3.2" = [ + {url = "https://files.pythonhosted.org/packages/58/2a/07c65fdc40846ecb8a9dcda2c38fcb5a06a3e39d08d4a4960916431951cb/pytest-7.3.2.tar.gz", hash = "sha256:ee990a3cc55ba808b80795a79944756f315c67c12b56abd3ac993a7b8c17030b"}, + {url = "https://files.pythonhosted.org/packages/7a/d0/de969198293cdea22b3a6fb99a99aeeddb7b3827f0823b33c5dc0734bbe5/pytest-7.3.2-py3-none-any.whl", hash = "sha256:cdcbd012c9312258922f8cd3f1b62a6580fdced17db6014896053d47cddf9295"}, ] "pytest-click 1.1.0" = [ {url = "https://files.pythonhosted.org/packages/72/1a/eb53371999b94b3c995c00117f3a232dbf6f56c7152a52cf3e3777e7d49d/pytest_click-1.1.0-py3-none-any.whl", hash = "sha256:eade4742c2f02c345e78a32534a43e8db04acf98d415090539dacc880b7cd0e9"}, @@ -561,9 +561,9 @@ content_hash = "sha256:773ab8aa79c3209ee9a05956dc5808f351d35914c4c996301b024b71c {url = "https://files.pythonhosted.org/packages/7a/15/da3df99fd551507694a9b01f512a2f6cf1254f33601605843c3775f39460/pytest-cov-4.1.0.tar.gz", hash = "sha256:3904b13dfbfec47f003b8e77fd5b589cd11904a21ddf1ab38a64f204d6a10ef6"}, {url = "https://files.pythonhosted.org/packages/a7/4b/8b78d126e275efa2379b1c2e09dc52cf70df16fc3b90613ef82531499d73/pytest_cov-4.1.0-py3-none-any.whl", hash = "sha256:6ba70b9e97e69fcc3fb45bfeab2d0a138fb65c4d0d6a41ef33983ad114be8c3a"}, ] -"pytest-cppython 0.3.1.dev42" = [ - {url = "https://files.pythonhosted.org/packages/0f/39/0588ed438c66da56810e14540c4821ce3d56953ca09ef077b0a19e66395d/pytest_cppython-0.3.1.dev42-py3-none-any.whl", hash = "sha256:03e917571605cc6bb86f90839ffb441d743e96280feb49094b1f577e232dbfd5"}, - {url = "https://files.pythonhosted.org/packages/b8/84/6848328a2ce0f9fe495ae2b21845ce7dc95aed4cf2ce6b7b0396545114f3/pytest-cppython-0.3.1.dev42.tar.gz", hash = "sha256:8cda22c1c44312c62e6b3d88c687047a48aec26ec474508c0a861f5fcdcdeb7f"}, +"pytest-cppython 0.3.1.dev44" = [ + {url = "https://files.pythonhosted.org/packages/36/46/87da70abaf4cd3fb4b63418c2da15d81cdbdc9286883a9c51b98b3285772/pytest_cppython-0.3.1.dev44-py3-none-any.whl", hash = "sha256:ef033a44691a950bae1ef083bd7efad145818b6b697fa2588e17a1e36bbc5bca"}, + {url = "https://files.pythonhosted.org/packages/dc/3f/1149db4cdfbe2759626e631377fd8c119c8293a0d9fcfa807665c1cdd5bb/pytest-cppython-0.3.1.dev44.tar.gz", hash = "sha256:690bacb37be24c68ab7ce7bfc3c967768fa8824c452f86f31e1b6729bfd77f1f"}, ] "pytest-mock 3.10.0" = [ {url = "https://files.pythonhosted.org/packages/91/84/c951790e199cd54ddbf1021965b62a5415b81193ebdb4f4af2659fd06a73/pytest_mock-3.10.0-py3-none-any.whl", hash = "sha256:f4c973eeae0282963eb293eb173ce91b091a79c1334455acfac9ddee8a1c784b"}, @@ -573,9 +573,9 @@ content_hash = "sha256:773ab8aa79c3209ee9a05956dc5808f351d35914c4c996301b024b71c {url = "https://files.pythonhosted.org/packages/10/37/dd53019ccb72ef7d73fff0bee9e20b16faff9658b47913a35d79e89978af/tomlkit-0.11.8.tar.gz", hash = "sha256:9330fc7faa1db67b541b28e62018c17d20be733177d290a13b24c62d1614e0c3"}, {url = "https://files.pythonhosted.org/packages/ef/a8/b1c193be753c02e2a94af6e37ee45d3378a74d44fe778c2434a63af92731/tomlkit-0.11.8-py3-none-any.whl", hash = "sha256:8c726c4c202bdb148667835f68d68780b9a003a9ec34167b6c673b38eff2a171"}, ] -"typing-extensions 4.6.2" = [ - {url = "https://files.pythonhosted.org/packages/38/60/300ad6f93adca578bf05d5f6cd1d854b7d140bebe2f9829561aa9977d9f3/typing_extensions-4.6.2-py3-none-any.whl", hash = "sha256:3a8b36f13dd5fdc5d1b16fe317f5668545de77fa0b8e02006381fd49d731ab98"}, - {url = "https://files.pythonhosted.org/packages/be/fc/3d12393d634fcb31d5f4231c28feaf4ead225124ba08021046317d5f450d/typing_extensions-4.6.2.tar.gz", hash = "sha256:06006244c70ac8ee83fa8282cb188f697b8db25bc8b4df07be1873c43897060c"}, +"typing-extensions 4.6.3" = [ + {url = "https://files.pythonhosted.org/packages/42/56/cfaa7a5281734dadc842f3a22e50447c675a1c5a5b9f6ad8a07b467bffe7/typing_extensions-4.6.3.tar.gz", hash = "sha256:d91d5919357fe7f681a9f2b5b4cb2a5f1ef0a1e9f59c4d8ff0d3491e05c0ffd5"}, + {url = "https://files.pythonhosted.org/packages/5f/86/d9b1518d8e75b346a33eb59fa31bdbbee11459a7e2cc5be502fa779e96c5/typing_extensions-4.6.3-py3-none-any.whl", hash = "sha256:88a4153d8505aabbb4e13aacb7c486c2b4a33ca3b3f807914a9b4c844c471c26"}, ] "wrapt 1.15.0" = [ {url = "https://files.pythonhosted.org/packages/0c/6e/f80c23efc625c10460240e31dcb18dd2b34b8df417bc98521fbfd5bc2e9a/wrapt-1.15.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:21f6d9a0d5b3a207cdf7acf8e58d7d13d463e639f0c7e01d82cdb671e6cb7923"}, From f12cdb57074ff2ec47899016cd3daf5d46b57ee6 Mon Sep 17 00:00:00 2001 From: Asher Norland Date: Mon, 19 Jun 2023 19:40:10 -0400 Subject: [PATCH 02/16] Updates --- cppython/builder.py | 44 ++++++++-- cppython/project.py | 3 +- pdm.lock | 210 ++++++++++++++++++++++---------------------- 3 files changed, 145 insertions(+), 112 deletions(-) diff --git a/cppython/builder.py b/cppython/builder.py index f456966..e163f01 100644 --- a/cppython/builder.py +++ b/cppython/builder.py @@ -115,7 +115,6 @@ def generate_core_data( self, project_data: ProjectData, pyproject: PyProject, - pep621_data: PEP621Data, plugin_build_date: PluginBuildData, ) -> CoreData: """Parses and returns resolved data from all configuration sources @@ -123,7 +122,6 @@ def generate_core_data( Args: project_data: Project data pyproject: TODO - pep621_data: TODO plugin_build_date: TODO Raises: @@ -137,7 +135,41 @@ def generate_core_data( cppython_data = resolve_cppython(pyproject.tool.cppython, global_configuration, project_data, plugin_build_date) - return CoreData(project_data=project_data, pep621_data=pep621_data, cppython_data=cppython_data) + return CoreData(project_data=project_data, cppython_data=cppython_data) + + def resolve_global_config() -> CPPythonGlobalConfiguration: + """_summary_ + + Returns: + _description_ + """ + + return CPPythonGlobalConfiguration() + + def resolve_core_data( + project_data: ProjectData, + pyproject: PyProject, + plugin_build_date: PluginBuildData, + ) -> CoreData: + """Parses and returns resolved data from all configuration sources + + Args: + project_data: Project data + pyproject: TODO + plugin_build_date: TODO + + Raises: + ConfigError: Raised if data cannot be parsed + + Returns: + The resolved core object + """ + + global_configuration = resolve_global_config() + + cppython_data = resolve_cppython(pyproject.tool.cppython, global_configuration, project_data, plugin_build_date) + + return CoreData(project_data=project_data, cppython_data=cppython_data) def find_generators(self) -> list[type[Generator]]: """_summary_ @@ -341,7 +373,6 @@ def create_generator( The constructed generator """ - generator_data = resolve_generator(core_data.project_data) cppython_plugin_data = resolve_cppython_plugin(core_data.cppython_data, generator_type) core_plugin_data = CorePluginData( @@ -350,6 +381,8 @@ def create_generator( cppython_data=cppython_plugin_data, ) + generator_data = resolve_generator(core_plugin_data) + if not generator_configuration: self.logger.error( "The pyproject.toml table 'tool.cppython.generator' does not exist. Sending generator empty data", @@ -374,7 +407,6 @@ def create_provider( A constructed provider plugins """ - provider_data = resolve_provider(core_data.project_data) cppython_plugin_data = resolve_cppython_plugin(core_data.cppython_data, provider_type) core_plugin_data = CorePluginData( @@ -383,6 +415,8 @@ def create_provider( cppython_data=cppython_plugin_data, ) + provider_data = resolve_provider(core_plugin_data) + if not provider_configuration: self.logger.error( "The pyproject.toml table 'tool.cppython.provider' does not exist. Sending provider empty data", diff --git a/cppython/project.py b/cppython/project.py index b018abf..3b4e6ed 100644 --- a/cppython/project.py +++ b/cppython/project.py @@ -40,11 +40,10 @@ def __init__( # Once the plugins are resolved, the core data is complete and can be generated - pep621_data = builder.generate_pep621_data(pyproject, project_configuration, self._scm) + pep621_data = builder.generate_pep621_data(pyproject, project_configuration, self.scm) self._core_data = builder.generate_core_data( project_data, pyproject, - pep621_data, plugin_build_data, ) diff --git a/pdm.lock b/pdm.lock index c4f1532..5d3ff1f 100644 --- a/pdm.lock +++ b/pdm.lock @@ -63,7 +63,7 @@ dependencies = [ [[package]] name = "cppython-core" -version = "0.6.1.dev70" +version = "0.7.0" requires_python = ">=3.11" summary = "Data definitions for CPPython" dependencies = [ @@ -130,7 +130,7 @@ summary = "Utility library for gitignore style pattern matching of file paths." [[package]] name = "platformdirs" -version = "3.5.3" +version = "3.6.0" requires_python = ">=3.7" summary = "A small Python package for determining appropriate platform-specific dirs, e.g. a \"user data dir\"." @@ -142,18 +142,18 @@ summary = "plugin and hook calling mechanisms for python" [[package]] name = "pydantic" -version = "2.0b2" +version = "2.0b3" requires_python = ">=3.7" summary = "Data validation using Python type hints" dependencies = [ "annotated-types>=0.4.0", - "pydantic-core==0.38.0", + "pydantic-core==0.39.0", "typing-extensions>=4.6.1", ] [[package]] name = "pydantic-core" -version = "0.38.0" +version = "0.39.0" requires_python = ">=3.7" summary = "" @@ -205,7 +205,7 @@ dependencies = [ [[package]] name = "pytest-cppython" -version = "0.3.1.dev44" +version = "0.3.1.dev45" requires_python = ">=3.11" summary = "A pytest plugin that imports CPPython testing types" dependencies = [ @@ -215,7 +215,7 @@ dependencies = [ [[package]] name = "pytest-mock" -version = "3.10.0" +version = "3.11.1" requires_python = ">=3.7" summary = "Thin-wrapper around the mock package for easier use with pytest" dependencies = [ @@ -352,9 +352,9 @@ content_hash = "sha256:773ab8aa79c3209ee9a05956dc5808f351d35914c4c996301b024b71c {url = "https://files.pythonhosted.org/packages/fe/57/e4f8ad64d84ca9e759d783a052795f62a9f9111585e46068845b1cb52c2b/coverage-7.2.7-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6f48351d66575f535669306aa7d6d6f71bc43372473b54a832222803eb956fd1"}, {url = "https://files.pythonhosted.org/packages/ff/d5/52fa1891d1802ab2e1b346d37d349cb41cdd4fd03f724ebbf94e80577687/coverage-7.2.7-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:f2f67fe12b22cd130d34d0ef79206061bfb5eda52feb6ce0dba0644e20a03cf4"}, ] -"cppython-core 0.6.1.dev70" = [ - {url = "https://files.pythonhosted.org/packages/82/44/6b22f00a9590ac4edba724f891f05ac4936b441456ab26bf90dbf80e6d07/cppython_core-0.6.1.dev70-py3-none-any.whl", hash = "sha256:c2761c1b9f20d5da53f52d2273be9dced812f56d2f8186786ccd662505da14fc"}, - {url = "https://files.pythonhosted.org/packages/b9/a7/cdad28d35ac41701ebf868f238abd9ac8eecb89283bfafdedbcbe644d4aa/cppython-core-0.6.1.dev70.tar.gz", hash = "sha256:55dc44f3570c67a63ca9d88848a543d71eff476fe13f77948f11ea5f579822b9"}, +"cppython-core 0.7.0" = [ + {url = "https://files.pythonhosted.org/packages/59/9d/cc4dfc428a02f0c1e4de24e97dcb234e371a8c4769b78ffd42ba5a4cdb3f/cppython-core-0.7.0.tar.gz", hash = "sha256:e7c6194a1c4c7cfad0ee201d0130e6567e2014c518e5c96a2bfbf9a8fd6d304a"}, + {url = "https://files.pythonhosted.org/packages/9b/b2/dae29c30ceab55386f88b96ae08824b7f9871dcc54dd89fa6c898579987c/cppython_core-0.7.0-py3-none-any.whl", hash = "sha256:f95965d33373f4dbcd59764c46704cfa6cf0373384d15b9a80c5925a27155633"}, ] "dill 0.3.6" = [ {url = "https://files.pythonhosted.org/packages/7c/e7/364a09134e1062d4d5ff69b853a56cf61c223e0afcc6906b6832bcd51ea8/dill-0.3.6.tar.gz", hash = "sha256:e5db55f3687856d8fbdab002ed78544e1c4559a130302693d839dfe8f93f2373"}, @@ -450,100 +450,100 @@ content_hash = "sha256:773ab8aa79c3209ee9a05956dc5808f351d35914c4c996301b024b71c {url = "https://files.pythonhosted.org/packages/95/60/d93628975242cc515ab2b8f5b2fc831d8be2eff32f5a1be4776d49305d13/pathspec-0.11.1.tar.gz", hash = "sha256:2798de800fa92780e33acca925945e9a19a133b715067cf165b8866c15a31687"}, {url = "https://files.pythonhosted.org/packages/be/c8/551a803a6ebb174ec1c124e68b449b98a0961f0b737def601e3c1fbb4cfd/pathspec-0.11.1-py3-none-any.whl", hash = "sha256:d8af70af76652554bd134c22b3e8a1cc46ed7d91edcdd721ef1a0c51a84a5293"}, ] -"platformdirs 3.5.3" = [ - {url = "https://files.pythonhosted.org/packages/6d/1a/96efea7b36835ce89911d7813fe68f5b1db7ecae4023bf209a7aeba93017/platformdirs-3.5.3-py3-none-any.whl", hash = "sha256:0ade98a4895e87dc51d47151f7d2ec290365a585151d97b4d8d6312ed6132fed"}, - {url = "https://files.pythonhosted.org/packages/d2/5d/29eed8861e07378ef46e956650615a9677f8f48df7911674f923236ced2b/platformdirs-3.5.3.tar.gz", hash = "sha256:e48fabd87db8f3a7df7150a4a5ea22c546ee8bc39bc2473244730d4b56d2cc4e"}, +"platformdirs 3.6.0" = [ + {url = "https://files.pythonhosted.org/packages/05/31/793923615e85deef0c25abf5d044b3f99f1348b620122ab184b7d3f70f21/platformdirs-3.6.0.tar.gz", hash = "sha256:57e28820ca8094678b807ff529196506d7a21e17156cb1cddb3e74cebce54640"}, + {url = "https://files.pythonhosted.org/packages/a7/4d/00f9fe4bbb3459da0d6c790b1526e5edebaeff2a80166eabb0a42f9e0a05/platformdirs-3.6.0-py3-none-any.whl", hash = "sha256:ffa199e3fbab8365778c4a10e1fbf1b9cd50707de826eb304b50e57ec0cc8d38"}, ] "pluggy 1.0.0" = [ {url = "https://files.pythonhosted.org/packages/9e/01/f38e2ff29715251cf25532b9082a1589ab7e4f571ced434f98d0139336dc/pluggy-1.0.0-py2.py3-none-any.whl", hash = "sha256:74134bbf457f031a36d68416e1509f34bd5ccc019f0bcc952c7b909d06b37bd3"}, {url = "https://files.pythonhosted.org/packages/a1/16/db2d7de3474b6e37cbb9c008965ee63835bba517e22cdb8c35b5116b5ce1/pluggy-1.0.0.tar.gz", hash = "sha256:4224373bacce55f955a878bf9cfa763c1e360858e330072059e10bad68531159"}, ] -"pydantic 2.0b2" = [ - {url = "https://files.pythonhosted.org/packages/05/6f/504e94dcda88a5ec8c680864d188bf3501090536f0bbd3e72c8cb22446bf/pydantic-2.0b2.tar.gz", hash = "sha256:3491863cd9be6608f9cae6796a4fd151d38df1872242c1d5e992dcceb27697fe"}, - {url = "https://files.pythonhosted.org/packages/ad/87/2cc0ffb4493da08e2b76296f380a5e912abbcb95d2f460a08a67259f6151/pydantic-2.0b2-py3-none-any.whl", hash = "sha256:a07edf22ceb91790a4954db62b82dfc0360034e2ab30c1a23d4a65024bc66eb9"}, -] -"pydantic-core 0.38.0" = [ - {url = "https://files.pythonhosted.org/packages/00/16/21726a8e6d18512f6d604934adc82e6a326cccaa1b6b3b7a29fbfe0f8f12/pydantic_core-0.38.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:16aa493f005447bf6528734432ecf571c7c4dcf54712154a6e3fe70d0576b9d0"}, - {url = "https://files.pythonhosted.org/packages/01/63/9f7e1515b7984dfcc9542a9654113a3f84055c74d2416766eab6490779e2/pydantic_core-0.38.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:936e127cca7e108db179cccb7e0918408d125d9e1b62aaa74cd2fe1730626e4d"}, - {url = "https://files.pythonhosted.org/packages/03/19/e3e8a4b75754b85b67ab2a91429dac56a12d07ef2d997115f2d5d8021204/pydantic_core-0.38.0-pp39-pypy39_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:ee661c6d648ad35c790b14a6444e399e508e779e18130b2e603c8f8fd30e584f"}, - {url = "https://files.pythonhosted.org/packages/03/22/d5a96fb2b6a606a49f455c9ae1ab233450d0bc77415619ce985e8ce85143/pydantic_core-0.38.0-cp311-cp311-manylinux_2_24_s390x.whl", hash = "sha256:9a00c1de2f3ead6becf379a61bebc444561a8542eeb140b126482113d4a6a146"}, - {url = "https://files.pythonhosted.org/packages/04/e7/b1d488453e5da908fb8397c24a2b6f210f3c4dc8c7404accea35e7432f55/pydantic_core-0.38.0-cp38-none-win_amd64.whl", hash = "sha256:4affbf8e1722d33c6611870e93142eceda5cdbcbbc9712dae98c6cef3916d7c8"}, - {url = "https://files.pythonhosted.org/packages/06/78/a0fe6c7e3cc5de6c4fa2e13c1b0eaf36f65b21b8e0a78fc16f625d480830/pydantic_core-0.38.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f7e91caff0aadc8682e58c0f4d78c78cade1ab4da0ffbc83d8d609c3ddc35124"}, - {url = "https://files.pythonhosted.org/packages/0a/91/5ddc2a2709afb0a5f34329578a2d2923befd20a555cbce227c98c2400292/pydantic_core-0.38.0-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:af9e40fc42b5e9ba2d1aebbcd28376f3dc1fea779804b53cba5116f2412b54aa"}, - {url = "https://files.pythonhosted.org/packages/11/0e/e58bbc600e68f524f016d03f0d38a2360d6fa10c15fa3381bcefa035c348/pydantic_core-0.38.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:8cfac969e1614217629183e8b37f2ce21f366341f6923cccf1d522914a5d1ae6"}, - {url = "https://files.pythonhosted.org/packages/11/f4/4bd5272cfa98a2b69f603fe13312ff2934790c22e5810ae3937401e2fe9e/pydantic_core-0.38.0-cp310-cp310-manylinux_2_24_ppc64le.whl", hash = "sha256:46e6a14096525eff39e453daa0a636cdb9d8cc1e16b7585dd8bc424bf7f87cba"}, - {url = "https://files.pythonhosted.org/packages/17/78/7e1cf85519d5cf2bcae065bcb0d6887f8e76393125354d295bc2020accfd/pydantic_core-0.38.0-pp38-pypy38_pp73-macosx_10_7_x86_64.whl", hash = "sha256:778d84e366d67ad6afc0e0201040968e27d9c16c3749025348cdd777eda7b66b"}, - {url = "https://files.pythonhosted.org/packages/19/43/90676fda19b88c24b88c2d13ddbbddc9fa72743521b72be35b30e070263d/pydantic_core-0.38.0-cp37-none-win32.whl", hash = "sha256:aa02be03ccbb60ed85b1be36d68e1354194f78da74311d6e1d4187045a596edd"}, - {url = "https://files.pythonhosted.org/packages/1b/60/c1f8f287c83fa015f861dddc148ff36fdf07d1e3ef1af0aa2aade243d5cc/pydantic_core-0.38.0-cp310-cp310-macosx_10_7_x86_64.whl", hash = "sha256:accb236fa98c1a66e5270f2a4e60aee6911e977f016ef40a0cc32115047075ac"}, - {url = "https://files.pythonhosted.org/packages/20/c9/59fedbd6a406092a9966ecd2fa94e47431f86eea14f674af4b1524cf3f10/pydantic_core-0.38.0-pp37-pypy37_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:1a442e40dc11bbc6f9ab1a740d20c5ab3997214f97b7dd465c11c9055032d90e"}, - {url = "https://files.pythonhosted.org/packages/22/e7/35d913327b3702b801e6984c1ed241012ca86d24d8e4e0c1203dd9d8aeda/pydantic_core-0.38.0-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1e616c427665c7ef7e747d2824d481c96d283df72bfbf97f1f1925917af2fe3b"}, - {url = "https://files.pythonhosted.org/packages/23/30/fc83bc887559e5859f73d3f0e91606b32e57360222dd84ed4c9af4743053/pydantic_core-0.38.0-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:17596cded1e8f635b797e5bb0139543fb7fabbcfc920b5d243365f490978a989"}, - {url = "https://files.pythonhosted.org/packages/26/8e/a8523dfdb2e59cc5cccbab75aaa32295431043d90c44737e2487e104b59c/pydantic_core-0.38.0-pp37-pypy37_pp73-macosx_10_7_x86_64.whl", hash = "sha256:8616a7a6fe69b9751b53ba45821138bda0bd815d55616172e7ab6fb1b891ecd9"}, - {url = "https://files.pythonhosted.org/packages/2a/d4/9204871e8ab7db2467e9b0e95f297125aab66c44db5a8ca9d6882cde820e/pydantic_core-0.38.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:03b05b91ed73699cde6749c74c59dae16d076b5fff008e9388859b44bf573918"}, - {url = "https://files.pythonhosted.org/packages/2d/ce/b60b7431a48c1f9239855fd6959f5f620630e750a728ec67516720e29630/pydantic_core-0.38.0-cp39-cp39-manylinux_2_24_armv7l.whl", hash = "sha256:559ab8165b6b3c48c75d0b4941ded8d35800192eabfea15388591a69ddecec5c"}, - {url = "https://files.pythonhosted.org/packages/30/8e/3a8b2eb11ab3b571f6fa8e59267318d41042cab3b9c972607bd561af2637/pydantic_core-0.38.0-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:a30e3aeb02d5326084e8917420f74f56797f1ebce08685fc1ee8b69e86a34917"}, - {url = "https://files.pythonhosted.org/packages/33/19/5c85e046dad099b269ed36cf2233437f044a48fc4895b1974fdf3c865b98/pydantic_core-0.38.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:24475cf8055ab19f91f5a874f5e5434a64f8086a76e2bfd39a820bde80a077de"}, - {url = "https://files.pythonhosted.org/packages/35/2d/156e831677e4cfbf8b1db6dbfb97fb891fd71e7e1a43de4e5c9265299c2a/pydantic_core-0.38.0-cp311-cp311-manylinux_2_24_ppc64le.whl", hash = "sha256:2e773acaefe9b0f9d87544725e6e59a9d10dfe035729cf1ea154c85390f4a8f1"}, - {url = "https://files.pythonhosted.org/packages/37/e6/6e3c2b1ab72c79185aef5f969ad11e92c0b4d989891c2e004e196b384551/pydantic_core-0.38.0-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:4a7297db3a7249253602f121fd1186b32c850dbe4cee7e2f4ed411d7447e1469"}, - {url = "https://files.pythonhosted.org/packages/37/fd/15c2e64d7952d6e1bf3f11e9b826c2deb4bb919208cf7bc77a8bc6cde69e/pydantic_core-0.38.0-cp38-none-win32.whl", hash = "sha256:bcb73e4b971de5c7d6b6af4f0878bae99a72be5bd1fbb0333c3d2741b1f9c04c"}, - {url = "https://files.pythonhosted.org/packages/38/17/f854e7c8e006254cfe322154e491c4cbb09e1a254e38a6e6e8f820ef92ce/pydantic_core-0.38.0-cp310-none-win_amd64.whl", hash = "sha256:bcb79118d68063b6ce54fb0aa3ce350027588cbad7ef6880317158a0e005b747"}, - {url = "https://files.pythonhosted.org/packages/3a/c3/1724e27344f3b78bdb4aadecc77443cd242108f72182f89ec5672864dc46/pydantic_core-0.38.0-cp311-cp311-macosx_10_7_x86_64.whl", hash = "sha256:bda2b18ba047e8b16fc022ce9c36825c7a6175b821b6b718ff4520c27f8b04e6"}, - {url = "https://files.pythonhosted.org/packages/3c/f0/8c57b488b89ecc5576a8a129c9738e5d4a03c328453bf5b3c2c608226d58/pydantic_core-0.38.0-cp310-cp310-manylinux_2_24_s390x.whl", hash = "sha256:ea751034409470b3bfeef9a154bc3653ecbe4e6bc539ad4fa7789344a9ff4e2d"}, - {url = "https://files.pythonhosted.org/packages/3e/74/b907721d484044740741b8557bddba9727106590cd070c69b2c53b6f4211/pydantic_core-0.38.0-pp38-pypy38_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:59ea7fb6470d6c8c106b22649470ec322f5289d721dc3ce26c7bd9e1beee0110"}, - {url = "https://files.pythonhosted.org/packages/40/93/4b29a099983bb118bd7c3533981b75eacfb193b8142fc5be8e99a0a134ab/pydantic_core-0.38.0-cp310-cp310-manylinux_2_24_armv7l.whl", hash = "sha256:2e1cd60a1310b0abc8a3ac2871536734e4c7692df85dc5b4b91fb2976005d5dc"}, - {url = "https://files.pythonhosted.org/packages/40/dc/34e260d6edf90f705870db0a94486eb104255bf843323fc3697d7d65f765/pydantic_core-0.38.0-pp37-pypy37_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:488de557c2544f084bd72cd96fd7adcc88b0d31d5f27b2d658f13107fee75642"}, - {url = "https://files.pythonhosted.org/packages/42/93/a38edeaf76a5aa1cc6321b274cdec52a3c7019f64572a006e5b2df8164b3/pydantic_core-0.38.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:064010574757a7fea60dc2be63c047ace8a653f3d5c601b33603099d811a53b0"}, - {url = "https://files.pythonhosted.org/packages/44/d8/80c2c2de8928914580edb1d61543d378d4f1ef9359d82f0890d3684609bc/pydantic_core-0.38.0-pp39-pypy39_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:eccb197288f28fd773562df33742b5347658211d2679e7e2639dcdbf6ba32389"}, - {url = "https://files.pythonhosted.org/packages/45/4a/8eb3e1983abcc6bb7c63dfd2f69702ce7d860d7a021e11d7395ab1038ff4/pydantic_core-0.38.0-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:2bf57bf395b9f9435ee0a3c7017592d64eb4e702da2c6dbc1da0d9369b733ce9"}, - {url = "https://files.pythonhosted.org/packages/48/d5/f4e8096247ea8f3bb95537c6a3fa51e73855c764332961bfbbb41b70b345/pydantic_core-0.38.0-cp39-cp39-macosx_10_7_x86_64.whl", hash = "sha256:c8adb85fca667013e373e6df23743fce72e6730dde9ffbcd1451669b037d29a3"}, - {url = "https://files.pythonhosted.org/packages/4b/8e/766165fd99090a77eab75856afdba04aabde28a58f0678ed71e802605a4e/pydantic_core-0.38.0-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:d9991c294b73b39f88fab055bdc03f3f890d1d7e3abb8c6f2d8bb4fd4185e407"}, - {url = "https://files.pythonhosted.org/packages/4e/1f/18e4801818d42359a707778b2f6540752e11f765d82542c5b11c5cd33529/pydantic_core-0.38.0-cp39-cp39-manylinux_2_24_s390x.whl", hash = "sha256:e3d97b9858ea4d8b1ede28eb07d5ffd39b104e0491f125b12010be183390e3ed"}, - {url = "https://files.pythonhosted.org/packages/55/65/c155d9f8e5d808a641b4fb741fa3a92c7d856b3c78a39ac87ea6677cc4aa/pydantic_core-0.38.0-cp37-none-win_amd64.whl", hash = "sha256:f93ae751fe034a890d59c37a95eaf4ce5dfcbe7e3bedd49a32a45367671cdb80"}, - {url = "https://files.pythonhosted.org/packages/56/da/5e42753d89d57a5bdf87ecc13fe7f49e717988b38a50c5e45e0497c10e0a/pydantic_core-0.38.0-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:05daac88565ab9fe343c8469d6606a122288c2ade74a073d0e0df52a0f701dbe"}, - {url = "https://files.pythonhosted.org/packages/57/fa/887a5a70998399f993cb625ad6553a00dbe7d08fa8d44ed7dbe247edcd77/pydantic_core-0.38.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:c458635159543b85d6f40cf492d9462e92ba2a347d5458daaeccf6dea335275c"}, - {url = "https://files.pythonhosted.org/packages/5e/02/28fb814b4d76d54c8ebe90448d64f07c908a2209f11052055aba088ca7cc/pydantic_core-0.38.0-cp37-cp37m-macosx_11_0_arm64.whl", hash = "sha256:f4f862c699c6184e0926173cf845a9a6e0937d346cee2f29aa21fffff616e3e1"}, - {url = "https://files.pythonhosted.org/packages/5e/77/6d6c0b22f1c22c5211566787ec5c7f0ebb2cb5c977c82d2710c547774676/pydantic_core-0.38.0-pp38-pypy38_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:35f737da50781be050aa675fd371c67561bba9119aec552dbbc85b7abb60390c"}, - {url = "https://files.pythonhosted.org/packages/61/93/d3bd13b300247296963df0fa038991fa7e8015ddd968beef5ed293561e8e/pydantic_core-0.38.0-pp38-pypy38_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:ca37ae371e5a66325509926b3e86ff59486da1046696000f4f3e7c7183054abc"}, - {url = "https://files.pythonhosted.org/packages/69/06/99dbd542cc7c25a3a46e678d9470248a5a5f073b5d657cd89e4430131de1/pydantic_core-0.38.0-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:f9fbaf14d32c3afa6159ca87f2d7fcf07b36a7579b78bdf80b14ada0068c164e"}, - {url = "https://files.pythonhosted.org/packages/69/ae/861438940cf1d4002a188c5a59343a2c1fe7f5f71c4fb1bd39d9244a6d34/pydantic_core-0.38.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ed1f15613f0a067edc373a31c45f80c55454389806894b101a12620b6f0e68d7"}, - {url = "https://files.pythonhosted.org/packages/6c/2b/a56267e6856143c6e79d641919945b6f21070c3842b60f0d83575edec566/pydantic_core-0.38.0-pp39-pypy39_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:ef093c90c95f4747f5eca63f5bc7f345e05996137a86a4131587a3a90a6dd208"}, - {url = "https://files.pythonhosted.org/packages/71/4c/7abf99c1e48e5153288aa677d19f4085fb50604e5fd67f22c9a9a9ee17a8/pydantic_core-0.38.0-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b59cf0d1a362a1e451398b61f0f03fb63acf138c73c03195a2d439ebb5e75b17"}, - {url = "https://files.pythonhosted.org/packages/71/69/e8c0767ba4bf322d3518a5c31b126659e3043aa918cbc6be03fb86c807d4/pydantic_core-0.38.0-cp39-cp39-manylinux_2_24_ppc64le.whl", hash = "sha256:56929a9ed009c799c6a25af5a45a70ee929cc87cf8d6dfb48c7e7b80c5749eef"}, - {url = "https://files.pythonhosted.org/packages/71/75/287c8ff1f811f8697543df71607dd8ebcfe75aa399538766ea43289e4002/pydantic_core-0.38.0-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4bc7add8c0ca9385dedec86671899ff47d08b1054e1719f335470e2d8460f09a"}, - {url = "https://files.pythonhosted.org/packages/71/96/81e811ea942c01fb1224bd58942b2d59cbce134452c10a6d9133213b7783/pydantic_core-0.38.0-cp38-cp38-macosx_10_7_x86_64.whl", hash = "sha256:3397fc9fdcce07c7018a5f627da1b42150896f4face9860d89a46c8b9fa3c96f"}, - {url = "https://files.pythonhosted.org/packages/72/d0/e7bfd070dc814968ef7c82130ca5f879710be0246cb13e7fb7edf24968fe/pydantic_core-0.38.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:0ba5ea4ddee0b721fd0e1f25caefd5bea4ab43d99bbf20b4b0b5b4c98af97a86"}, - {url = "https://files.pythonhosted.org/packages/72/e1/a5259c6ecbdbb09fbb91d4a12312be6e38f8936974e10caa84f5d9529b50/pydantic_core-0.38.0-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1d4affc151ec02510dd6973582a21193880ffb3960c5032368643fc86e26e495"}, - {url = "https://files.pythonhosted.org/packages/75/b1/0c7656942730687f062cdb2c800d2c6cecde147d2bd4727d9395d58a80dd/pydantic_core-0.38.0-cp311-none-win32.whl", hash = "sha256:8c8ac6d074cd4308afc4bc002171e8f6f1d684a518baa5f339b838a8b5d3173b"}, - {url = "https://files.pythonhosted.org/packages/78/11/f97c852a3c3c1bea21fc55690c1afffd74f55544026d279cd6661c7dfac2/pydantic_core-0.38.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:9c2c5afc146acd7f98252a02812563a8eacb5e07e5d5d890899c519fb5c890fb"}, - {url = "https://files.pythonhosted.org/packages/78/e6/3373e50cc9c990d4c12a774f980634c3eda94a243af16fd7a6fb92f43dfe/pydantic_core-0.38.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:552d4613436d3a485f579137a9a64069be1695922f704dbe9908f195e49b58cb"}, - {url = "https://files.pythonhosted.org/packages/7c/c7/bee2a9d9d6d830c11668ef7df7c5b30e400b79bc04702e3357d805640ffa/pydantic_core-0.38.0-cp311-cp311-manylinux_2_24_armv7l.whl", hash = "sha256:c8083e1c82f0d816ddfb07698c4c1ea126624114ddbe2d78659a54f3cc2749f7"}, - {url = "https://files.pythonhosted.org/packages/7f/b0/8b67a37379b7d2c879ffe1a88be9b7789bd42f54d402e0c70ad4881b4ecd/pydantic_core-0.38.0-pp37-pypy37_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:09a65a3375ef6da47266106f10894452ccacf3c12c5645f813bf511abfff5020"}, - {url = "https://files.pythonhosted.org/packages/82/62/e3fde091e45d9c0b342081a81be5d8204bc00d9be5acf840ea871d6e5e6c/pydantic_core-0.38.0-cp39-none-win32.whl", hash = "sha256:d9b6070774035969b0b48d8b8d15274965dc3155b88eb08e27ba193f73dc979c"}, - {url = "https://files.pythonhosted.org/packages/87/df/0d0dcd91298046805c5da96e26c5df91401e34bdebc43592165ffba49b93/pydantic_core-0.38.0-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:db673aab3e55f21bdcc4d8d420080593437c795bd4d8fcc4718ba664bead3e7d"}, - {url = "https://files.pythonhosted.org/packages/93/9e/9101083efac1e71c24ea4262583efea253c6af3af5eab4dbd5b337398608/pydantic_core-0.38.0-cp310-none-win32.whl", hash = "sha256:1e4475d319feadcc05ff0b8a8b3509dfdcac21b852667323bb7862ec8ec061c0"}, - {url = "https://files.pythonhosted.org/packages/9a/58/aef09b70f98b4f60d7c6f4728ea9cc82b2ba5ba20451d28b41baec0ccb37/pydantic_core-0.38.0-cp37-cp37m-manylinux_2_24_ppc64le.whl", hash = "sha256:a84c9d20bc8f3473ef5e4d5177a91438b87650615da05ba5045e8378594673be"}, - {url = "https://files.pythonhosted.org/packages/9b/34/b0fa47dd42f60873d4ab9730645e5460adb107a982c40dd62fd607e3af41/pydantic_core-0.38.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:752a6f0bd20dca278f1e28a0b94e9654a7c2151e1a8d3fff8d5f247555a4c213"}, - {url = "https://files.pythonhosted.org/packages/a1/d0/bd0298f328d83b4a731bea83e13510bcd7d6bc321b71222888d73a446824/pydantic_core-0.38.0-cp38-cp38-manylinux_2_24_armv7l.whl", hash = "sha256:bb862c3ddccbd86470557ce2b780a750ed29d8e6636c3be2399e02bf76b5b4d7"}, - {url = "https://files.pythonhosted.org/packages/a2/d9/8c9998ad174e8267e0c629fc419034be75bda7d41fe85d69acbe59566da8/pydantic_core-0.38.0-cp39-none-win_amd64.whl", hash = "sha256:33bfe0ffa5584d3521a68674f3bfb034a1f6aa27dbba43f28731614f23df595d"}, - {url = "https://files.pythonhosted.org/packages/a4/71/aefa588cd6425660ec300e3c6fd96c4dcad77a0cc82a69729bdd68e1331c/pydantic_core-0.38.0-pp37-pypy37_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c6a1ddda8eb7f774516701ecefe02d8d2c9ee0d6a924ed5abe46cbade0c294d9"}, - {url = "https://files.pythonhosted.org/packages/ae/a4/b34ce844bb791ca0c4734ee455f591104e9e45d1a527107f00d61a1a6d76/pydantic_core-0.38.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f5e744f72b33abf292c0526188f9d0b8614e072dbf3712ed32b2a6f1f769869e"}, - {url = "https://files.pythonhosted.org/packages/b2/12/ebd9b8664dd73f85bca77c8102f970a4848b482e267c052e15e76b777ab8/pydantic_core-0.38.0-pp38-pypy38_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3dda6549462b9fdbf07ca8531c07450fd99def8be5676ade3a6809effb567922"}, - {url = "https://files.pythonhosted.org/packages/b2/b9/c082de0d8ae2ed32ae2ea0335065c80ca3dc31827694f1d1c999095173fb/pydantic_core-0.38.0-cp38-cp38-manylinux_2_24_s390x.whl", hash = "sha256:8eccf9a9a7b861214a2cb16939b8d54e8b00c4e4a94c1c57dec9e253c46b77fa"}, - {url = "https://files.pythonhosted.org/packages/b4/5c/87da54a6e9a4e2463d936c6140ff444b928a5f11a225d541143e049baf19/pydantic_core-0.38.0-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:0fab1ef6d7c241e06fdd2fce41826f961ea415b044869381909e463eca1d5461"}, - {url = "https://files.pythonhosted.org/packages/b5/7d/2176efd6d731c61e88a491104987f9144d3e6ce413b7923886c2542c2228/pydantic_core-0.38.0-cp311-none-win_amd64.whl", hash = "sha256:766916b2456ea7101919ac6bbd3f5f2d48041a3bee994916cff476aaafd3b3f5"}, - {url = "https://files.pythonhosted.org/packages/b8/25/a2fc5e99171f3dfed42a6e701c25978b33a0d8c2580fb3e07edf61890414/pydantic_core-0.38.0-pp37-pypy37_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:3e11dba101c6ad15def6de7d651a97d2bf4f9cebcbb35b73af759a24c22a6409"}, - {url = "https://files.pythonhosted.org/packages/bb/5c/287a6a342e6712d8ecb1365211a09621160c3220727964f1daeb2062754e/pydantic_core-0.38.0-pp39-pypy39_pp73-macosx_10_7_x86_64.whl", hash = "sha256:07987d16882bbb70880223dce838cf6ded0a962dae1ee045c2ba91e2368062ca"}, - {url = "https://files.pythonhosted.org/packages/bb/cd/0276a61723b8c46d59a21fa80e7d139b7d333e21bc280d1305d20dabb7eb/pydantic_core-0.38.0-cp37-cp37m-manylinux_2_24_s390x.whl", hash = "sha256:d3ae5a8cc8d0f95bf2ac9469822c5deadd78fcbe3bcee7d0522c77e84ec03243"}, - {url = "https://files.pythonhosted.org/packages/c2/8a/427fa0e6dbf64ef4fdac352c1b175352d97469219f3b470f2a14ff7ecdfc/pydantic_core-0.38.0-cp37-cp37m-manylinux_2_24_armv7l.whl", hash = "sha256:deefd57033824e41cfbe984e71f4cc2be8be2b3a9d44890ce29b0db774c20790"}, - {url = "https://files.pythonhosted.org/packages/c6/5c/9553ab75c60df17a49ceabc412db57d16f4b22548f45e9d9362adce44fa7/pydantic_core-0.38.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9de9165653127f2d06ab3b375b0f330ea8bbc6f935b9a61f32e08b6011569076"}, - {url = "https://files.pythonhosted.org/packages/c9/8e/bb78aa76ebd117e6b531e8f7f4105ad1e15e77fb3ae7eef8974eae8458dc/pydantic_core-0.38.0-cp37-cp37m-macosx_10_7_x86_64.whl", hash = "sha256:c6857e05c3437943e2b1abf6dc99b61fd059b60fcb0bb1487f687c5a86b10ec6"}, - {url = "https://files.pythonhosted.org/packages/cb/27/e2b153cc34d6bd98f06b7326b502329e950100f73a79bb5b02ec04444a41/pydantic_core-0.38.0-cp38-cp38-manylinux_2_24_ppc64le.whl", hash = "sha256:0ea7cca3ec85e1926a2b9d0511c3b3565515af350704e285c8e2d915f75b2aaf"}, - {url = "https://files.pythonhosted.org/packages/cd/5e/1d7c432522ad22750a3967bfe660f7182d801e1398a7bd98cc75456d68e9/pydantic_core-0.38.0-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:fdd0c847ddc51c6419d2f22934c089fcdd63e3e7f7c1d6bde3490eebe37eeab2"}, - {url = "https://files.pythonhosted.org/packages/d2/5a/c0112e9a251d5bec4ecb832f94b3220e7de6c52621f36a654650f4eaec05/pydantic_core-0.38.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:0410d2aba8d7f82e00691b6a4d3b12b52e0dbb0006278b414db48d0ee5524baa"}, - {url = "https://files.pythonhosted.org/packages/dd/71/bbc65baaccb7d71d4da761a3773ea2cf225966bc0a470a7bbe725a5e83c4/pydantic_core-0.38.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:60bd9f221b434619d50d78793a376efc6e515233f5cb694f9688f4f458c3d99f"}, - {url = "https://files.pythonhosted.org/packages/f7/f2/6d0222111802b678235d742e8a831df2412ed39541f31b46618c9da04a90/pydantic_core-0.38.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e60dba35a3b7e295d239887497ee44e086ddcd1e3b5a5aac94940172dd9a9c62"}, - {url = "https://files.pythonhosted.org/packages/f8/cf/f90e20287cb4697d440aeed435e4fa5587bb9a84082dce1bb19411a9176d/pydantic_core-0.38.0-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e1b5fb341fb0fc065d1d13d669f11ed03c1c39901debcd637b36a0380fa42a6b"}, - {url = "https://files.pythonhosted.org/packages/fc/7f/8b5c2323fa7f2d4ae8ca5e1d95451b9e8f38dce3f4248b521243b1598bba/pydantic_core-0.38.0.tar.gz", hash = "sha256:b94a00b52ccc368720d4fe6929a818e368901091b36bca049f89b600923d6c45"}, +"pydantic 2.0b3" = [ + {url = "https://files.pythonhosted.org/packages/85/13/e96e6dda5cf3fb8f8df959d1bfaa819869328ffb0d8ed7d27eb36659093e/pydantic-2.0b3.tar.gz", hash = "sha256:057fb3050b8d3952153a0df45188882096ac53fe087b196fd0d877442b0c029b"}, + {url = "https://files.pythonhosted.org/packages/af/ce/dabc6cd90abaf903d84a329f29a5ce34643fd66ac2a78f3eb1c668bd4fb3/pydantic-2.0b3-py3-none-any.whl", hash = "sha256:dd6a8f835aceef1a399329478c355c91985f582afda7027055834d6822aa0ce2"}, +] +"pydantic-core 0.39.0" = [ + {url = "https://files.pythonhosted.org/packages/02/28/05cf18d0f511ba56e7257027ae24f524d6845ec47c70ad893a165f475b27/pydantic_core-0.39.0-pp39-pypy39_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:99de1fe8dcb3dc6e853ff6b96da4faa54384bbc4e73dbeb7dc8473f7e9d84243"}, + {url = "https://files.pythonhosted.org/packages/02/e6/fdf028114408f727b7767106509664a4d560198c40abe5eb4a7e7d6650ba/pydantic_core-0.39.0-cp37-cp37m-macosx_11_0_arm64.whl", hash = "sha256:bd5f3e98d112c6eab8c41cf2baf3dab8006c3223d5f2c9695b1cba7ab87bbfb5"}, + {url = "https://files.pythonhosted.org/packages/03/34/5bdb0bc053b1c848bbe696cb75007a9b5b1351136de4e7a79d6aea1ae7c6/pydantic_core-0.39.0-pp39-pypy39_pp73-macosx_10_7_x86_64.whl", hash = "sha256:96100fb53a7384a99c6121ea90f01aa1cb6100af8dd25f227a5132f38b9199df"}, + {url = "https://files.pythonhosted.org/packages/03/5f/e72f736d303d695be4d45b00cd9a26063575058d57b49c2962cfae75a43c/pydantic_core-0.39.0-cp37-none-win32.whl", hash = "sha256:2bfe35d886d93c7911b4d56ab3a6725a7866b35f09aceaf3d0d64babed701b73"}, + {url = "https://files.pythonhosted.org/packages/06/59/4117e5ac138bca096879d07f446fd24a9b198755d344e0f640fb1f2b23bf/pydantic_core-0.39.0-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:351a34da43f44a52bbd52380322bfb364f2efe423275c4917c8c26100c1b8ced"}, + {url = "https://files.pythonhosted.org/packages/07/b4/9c10f031fa975fde14f97d4be8c58c3be669b0cd2ff20242b405312c86a8/pydantic_core-0.39.0-cp38-cp38-manylinux_2_24_armv7l.whl", hash = "sha256:b749a22e311e235974516a4bca00afdf4f2e67dd7773d3850c1b17f1da1131b1"}, + {url = "https://files.pythonhosted.org/packages/0a/5e/5c089f8b5633c304b82cfbde3fee9c4e6d0897fa9ab0c5a09e01469d24dc/pydantic_core-0.39.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f8178dc88a246c60fb8264a8422587abc209cac1d9160329af8a6f5f89797cb3"}, + {url = "https://files.pythonhosted.org/packages/10/13/f6b741c1118001be9fbfd469eeee2b415d004fa6ddafbfd355e4ff9db634/pydantic_core-0.39.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:c9c16fc80e2612b0121eb425890e2e29f03e3038bbd53e5b637cd72aad2c5339"}, + {url = "https://files.pythonhosted.org/packages/10/15/82a7866bd5660dd4251c87ca23b01b8ba495ea0b7013bb8ee884dfce0311/pydantic_core-0.39.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f9e18e91b5f4172ea5ebc8fe0461acf6f2de73d4b85b47aee26924dcd304141a"}, + {url = "https://files.pythonhosted.org/packages/10/5b/3ae9f4f1e5299c9c2ba7a578b852f0a40c54f9c1a83f3de5d08b90826281/pydantic_core-0.39.0-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:9602b61c85d9c12b0e66792eebc85152b565c24431a69c47f3cba811b1507389"}, + {url = "https://files.pythonhosted.org/packages/18/a0/0b22604892e136e7429c17b6bf0d05ef788759b8633c4d94f638740ad779/pydantic_core-0.39.0-pp37-pypy37_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9d32b45650e5bb8670b73d0f9acdae184197308f5a5ecf8e714849c76fd0a6ed"}, + {url = "https://files.pythonhosted.org/packages/1b/7b/b9ccbcd5392b02270ee14e1121672bc102b903bb3eb2d528347c08ee6fa8/pydantic_core-0.39.0-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:1f89064cf78b57bf2930a14b41aa4b4240bd2993a57efb56b5ad8be02f4048b3"}, + {url = "https://files.pythonhosted.org/packages/1b/fb/760b5481281b9615e55f4c7a3363feaef05f8441cbc93925a4621148f70a/pydantic_core-0.39.0-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:bf55dc04bb037c06d256e22254401b10fbc3a478835837987435e3c77ec929f9"}, + {url = "https://files.pythonhosted.org/packages/1e/82/3b5a71e50b570b041e402469ae21b8242081504e4c50ba6bc40a51440308/pydantic_core-0.39.0-cp38-cp38-manylinux_2_24_s390x.whl", hash = "sha256:e77a053384a29c4ffdad2a717809e347b864c582c407ab88eb9ff3fa3bce22a7"}, + {url = "https://files.pythonhosted.org/packages/21/15/7cc4530aaa6800fa91ed70464a79593865159f629ce22675d1f7e5a90e7b/pydantic_core-0.39.0-cp37-cp37m-macosx_10_7_x86_64.whl", hash = "sha256:9aba06c25f356c0fb11f1dd2d0317a5599f223a3b283ebbc1aa3a1100a6920f7"}, + {url = "https://files.pythonhosted.org/packages/28/ac/cda6b041201ccb695f2eded45bf0b834eaa60beebe616973f1f3f1e782c2/pydantic_core-0.39.0-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:2c7b5e09e5e6c7cf2ed0ccb5a1ddf1f6d12131315ff70d100fc197711df4a37e"}, + {url = "https://files.pythonhosted.org/packages/2e/39/87420354aaedf26df93f26a6c6a36fb6e77a32d97a608fa2ee3bb086bf45/pydantic_core-0.39.0-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:30ad66243a64818e8afb584596cc9f7f8738406ffe1b4ab0be00e23375753b7c"}, + {url = "https://files.pythonhosted.org/packages/2e/4a/71cd253c40cd57fafe76d3701c4deab358799e6f72a63bac4356d8cba806/pydantic_core-0.39.0-cp310-cp310-macosx_10_7_x86_64.whl", hash = "sha256:361135e456636aecad3c15ceabc206fe93b4f86778ca24eefd707952954b7e70"}, + {url = "https://files.pythonhosted.org/packages/30/ad/86af97225b000bdaae55672d1bae9cc2c8dc9149c57cd37e2116ed8699a5/pydantic_core-0.39.0-cp38-none-win32.whl", hash = "sha256:3a5795a0521ce88adbffd16796e85cdd06546805ff869fed0cac1a9c297d9445"}, + {url = "https://files.pythonhosted.org/packages/30/be/207b81da280ba0c4111d12bc5dc9667a584280a8f7c94c79b6a0ec485652/pydantic_core-0.39.0-cp38-cp38-macosx_10_7_x86_64.whl", hash = "sha256:abbcbc69868ad7f642caa319a7b5f829e6f9b6db5194b6b82b7a9561ac992663"}, + {url = "https://files.pythonhosted.org/packages/32/48/df3cd4a5256f3832b5ce0bc45e8d97081db80860870d3522c5d524e27fe4/pydantic_core-0.39.0-cp39-cp39-macosx_10_7_x86_64.whl", hash = "sha256:c2fb59f98fd0f9f3ee1b77b2c44f282ed8b1cc52d332c2d2a34b6364f63dbfa1"}, + {url = "https://files.pythonhosted.org/packages/38/31/b6d08564f771ce87b5a9dec32746b33b90ae35ddbbc3b06e1cc49e1d6110/pydantic_core-0.39.0-pp37-pypy37_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:a5a377d9bf58a99e55d74167c658cb1f170cc1c008b849f5a8ec31b7b0eb65e7"}, + {url = "https://files.pythonhosted.org/packages/3d/b2/8d38bd801be8244e0c97d6a83ac898fae172e918dc63afd016cb67e958f8/pydantic_core-0.39.0-cp38-none-win_amd64.whl", hash = "sha256:dc8234bd4325341eb660a86dba3688a5287789309a84261b3dbe76d4dd0472e8"}, + {url = "https://files.pythonhosted.org/packages/3f/bf/0271744df2c60a000ade36ac42ef34aaf9dcde7cfa246f4e20e2f9ba51f3/pydantic_core-0.39.0-pp39-pypy39_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:b2352ef56d0a5157dea6d39f3342980523673ac7f08967e39a68e06c168b94a4"}, + {url = "https://files.pythonhosted.org/packages/49/d4/06ca9f1732fe981f3ae7c749a0ceb3b9e0848896eac610afeaf413ae7d38/pydantic_core-0.39.0-cp38-cp38-manylinux_2_24_ppc64le.whl", hash = "sha256:749c0a2038ca7fb3a29ff7f9ce7d3248d8bb9f42d2ef609b4e4c158e74368145"}, + {url = "https://files.pythonhosted.org/packages/4a/c9/e3aede8a6e8e2b552cd12a7a8b5488686d6a6534060ff7d6da2867022fa3/pydantic_core-0.39.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d1f187d852ca78b9e23a0155be5f759f65f5e5c7dc4b29b7ea7aa5df48537ba1"}, + {url = "https://files.pythonhosted.org/packages/4c/29/49eea949174ad30c23a1f42fb5d105d194d98d7c9b96b1c8fda7d88cc57b/pydantic_core-0.39.0.tar.gz", hash = "sha256:8368d0510d0020d1bbb4124b31fb663e17e5661b5cc85c48e2b9d9bb0a378d9f"}, + {url = "https://files.pythonhosted.org/packages/4c/d1/5254c030dadeb88a063ac7135f443ccd50a1033681980016a3976a655d0f/pydantic_core-0.39.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0203bc58c551d018bff3ce3bc863cd2c88504dbb96f79357fdaa22955db64ffe"}, + {url = "https://files.pythonhosted.org/packages/52/e9/377b6997e222288a723fc99bcf76d6b68216ef6269f7733a82b408d74e5a/pydantic_core-0.39.0-pp37-pypy37_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:5570c884284a5e69278c4bb259c1694d64a5d9bc9a28674d088134246ad73358"}, + {url = "https://files.pythonhosted.org/packages/5b/0e/6b3aaf8e73eab3846e0f0898dc9c5611e3c30c80fa1f567f1160881738ef/pydantic_core-0.39.0-cp39-cp39-manylinux_2_24_s390x.whl", hash = "sha256:5438ffb320ad430de40de405078b0770beb1eec00e54de18a63c842d114d86b9"}, + {url = "https://files.pythonhosted.org/packages/61/e3/48b6fd9589f9d04efd16604b384aa6cf662513041794155f30ca2dc76ec2/pydantic_core-0.39.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:3cb0cdc1c5c036aa7caccf6a28e9a2ce3058ae18aceb143870a6a379235b075d"}, + {url = "https://files.pythonhosted.org/packages/62/2f/090ba715ed3e6211f9fd5e8a0c3ff29ebd0e0c01eb69971cec46493923e4/pydantic_core-0.39.0-cp37-cp37m-manylinux_2_24_ppc64le.whl", hash = "sha256:549a0940b7164b23d52df4d6bd73637e989688d28dbeb9e24d87a27da48f23bc"}, + {url = "https://files.pythonhosted.org/packages/63/03/81dce913aef3ff28a5c1c3938590d9ad3336d4bb35e39ffffd7f5450dbbe/pydantic_core-0.39.0-cp311-cp311-macosx_10_7_x86_64.whl", hash = "sha256:9f1ddc997865f29eee3fea397885595d361a76df80356fec8c47f45b987b7490"}, + {url = "https://files.pythonhosted.org/packages/65/cb/a5fb2d0d9ddedb109af8104445843059173d036e53be720e257fa51c035f/pydantic_core-0.39.0-cp37-cp37m-manylinux_2_24_armv7l.whl", hash = "sha256:45926ab2adef2deff4fc89e12bf5ba015ad297efefcd0f84b8689123a6c3b126"}, + {url = "https://files.pythonhosted.org/packages/68/e1/4e1553a3ecdd375845f320d386f3149e122ea44c1781e8d923a3186a1dbf/pydantic_core-0.39.0-cp311-none-win32.whl", hash = "sha256:3696a567b7517c09ed7dae942fa5b38cd552af5160d0905b76e9607b87e31d01"}, + {url = "https://files.pythonhosted.org/packages/6a/2e/81ce629273eac5daabcbc47c0e68c2f5e3e7926275726b635b9de50a73c9/pydantic_core-0.39.0-pp38-pypy38_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:711d3a4c9ed8cce84dd55284ff9f4494b825930154a52a37cd02ac4e3a5fd62d"}, + {url = "https://files.pythonhosted.org/packages/6c/55/ecbf0c01c8196ca6d3ef37ee03c965a15e4e2fe15748ba4119d102ed8584/pydantic_core-0.39.0-pp38-pypy38_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f29f3197b1b50550c299ad8700918fbe383412df6f864fe02190a958b60a3c29"}, + {url = "https://files.pythonhosted.org/packages/6d/c4/a7e33420c947fb90e84686db7e156d212931405c453f71d6237489eb78d6/pydantic_core-0.39.0-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:6e9f98a9df2cea76b1a8bd70d00b4ee3b7597887281c2e85c8ad690ed881ef34"}, + {url = "https://files.pythonhosted.org/packages/6e/66/017c518c8aef90beee755c2236fee4657c9f2004da1b0457454283e1ec6a/pydantic_core-0.39.0-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4908e1bbafa91dcbcc8778bfe11ede713ef18dafac4a7f66b7108d348d46e5ea"}, + {url = "https://files.pythonhosted.org/packages/77/b7/ee023ab701dc89b9509a1f435d73316b9ef6789396a7655601a7e3816710/pydantic_core-0.39.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:e7ad056aeb02a474957fa950ff169549e214cec5f0b5c18dae683b0d21227def"}, + {url = "https://files.pythonhosted.org/packages/78/8b/d1bfbd837d46dc150e7f90cbf8129077c9464f755aa78d92356cc298c1bf/pydantic_core-0.39.0-cp310-none-win_amd64.whl", hash = "sha256:ddf0177f2324200cf9ea3100d4232be275c8986a4cb9b1892e1f53d2584f6b17"}, + {url = "https://files.pythonhosted.org/packages/7a/a4/e0b1cb44397c99fd3737224bf32af94cf596bef80715c0e26732a8e71a1f/pydantic_core-0.39.0-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:00c3a5ab18f355a0b082019fdc4af41b61c4a2e33d97af44c69b611d818bdfe2"}, + {url = "https://files.pythonhosted.org/packages/7c/cd/128d387f0acc2e008eb1d1869648c0358ac89637d067fffde77440ef9548/pydantic_core-0.39.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:5ccb4a21713a831f888c0bf22be4888df475650f699cc35a675cb91cc55e780b"}, + {url = "https://files.pythonhosted.org/packages/82/58/54cda4561c6e099fc41c37ee9cd6752caad6d3cc17a83a1c24b6cd596754/pydantic_core-0.39.0-cp311-none-win_amd64.whl", hash = "sha256:c9b4909e971e8745af251cecd92aa55f9239bbc9a9630811dd53a00a2b5285f8"}, + {url = "https://files.pythonhosted.org/packages/83/fc/3e212b137c5f53564ed8228509700dde0c8dd17f110a097225bd988af0eb/pydantic_core-0.39.0-cp39-none-win32.whl", hash = "sha256:579c69e5a7bf2fd3dedd3c51e91b1beb0c89782ea6c0d1ffd8e48259b70f9d61"}, + {url = "https://files.pythonhosted.org/packages/86/5d/c1d7ad0f076292d5a473585c36e30eb51229d72749ab1306fa0a4ec33b76/pydantic_core-0.39.0-cp310-cp310-manylinux_2_24_s390x.whl", hash = "sha256:f8992a135442959269d2c013bd9913c837d5ea215b0e480cda1820c7310df55b"}, + {url = "https://files.pythonhosted.org/packages/88/59/8feb158be87ba69547bf471709a84acd8e3b671729cabcb691697bcfb1b4/pydantic_core-0.39.0-cp311-cp311-manylinux_2_24_ppc64le.whl", hash = "sha256:87e4d828c0cc28e8ec1abad2e83110e0cca175b3799fc3eeab22e615cefc551f"}, + {url = "https://files.pythonhosted.org/packages/8a/7c/55f6824b2966b5a13fdddc8cf67ed2a830ab2a3d1e428c3f1b84c868f52d/pydantic_core-0.39.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:9595444868ece2e67b5e64a583eab10756491d9bf4e6d3876410299297d4adb3"}, + {url = "https://files.pythonhosted.org/packages/8d/1c/119f34be34bd9f2078f5e6225cb4dd9af4748612becb46a8541c4ee8f05c/pydantic_core-0.39.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c3b42892739cd3e27c2efbab6682fa91ec07c76381db1ca66da2d889c21e1c8a"}, + {url = "https://files.pythonhosted.org/packages/91/c4/ecae440c8c627ae810544257294b78a52f5eaff2c6c1b2005fda386e0d3f/pydantic_core-0.39.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:126db921ac7c72cb5d8d1b46540d594d559c25e243b3515aed040a0cd0eafac8"}, + {url = "https://files.pythonhosted.org/packages/95/37/8045af516750341f434ea7f414774b37fdf023f3249c5036e1b51a07cc0a/pydantic_core-0.39.0-pp38-pypy38_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:058ea15957753eeb0547bbcb9aca1dca1f11969f0517a6f988d708110c4717e4"}, + {url = "https://files.pythonhosted.org/packages/96/3f/7f99a99e3efedddfe04750ab20c38ceb9cf82da8035116367e051143c908/pydantic_core-0.39.0-pp38-pypy38_pp73-macosx_10_7_x86_64.whl", hash = "sha256:e7d2a139d384911ee97ad2e9472ae4e79e9fedf278fa8c31b3e391c0279c0207"}, + {url = "https://files.pythonhosted.org/packages/96/5b/09027349536a371da3bdc413e129824778ea25fe036d8270ed038bb17cde/pydantic_core-0.39.0-cp39-cp39-manylinux_2_24_armv7l.whl", hash = "sha256:bb4cea3c63defa0fe891af206ad04c8b167852feb6bfba7c1cc4f26a4a2eb39e"}, + {url = "https://files.pythonhosted.org/packages/9c/df/2140080b89404fe58c49cd13b87ff9fea0006c375ee6db526f665c6e1ed9/pydantic_core-0.39.0-cp311-cp311-manylinux_2_24_armv7l.whl", hash = "sha256:d3a8d0734b1e82df4a725fa39a1b78625c407b8cf31ae1652382a2f4c8c757b4"}, + {url = "https://files.pythonhosted.org/packages/9d/f1/49aa2eed0fb5c4593ff7e6b682b55227ccff446e5968de4244858aa153a4/pydantic_core-0.39.0-cp39-none-win_amd64.whl", hash = "sha256:3a4d4d87dc988d9c52d4e7e31b77d6036b4cab36109826b57cd293ae3179440d"}, + {url = "https://files.pythonhosted.org/packages/a0/bb/6e4744e06e503aab065cc1a1c30b048e0d7cdc915e7aaec4e90f5dfeb920/pydantic_core-0.39.0-pp37-pypy37_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4ee34d942a3ab3d55db4945b42ce000c5ca2fd749ab9bbc3fb4ddab41742cbbd"}, + {url = "https://files.pythonhosted.org/packages/a8/a0/1a8775109cb96cf2814b2e4672ce8077639ea8fea9a763855961f962a08a/pydantic_core-0.39.0-cp37-cp37m-manylinux_2_24_s390x.whl", hash = "sha256:a0f7d1454f86865cd2ec47e36ebe2e20cca5be71eaa5c2e422adf1e0355ae705"}, + {url = "https://files.pythonhosted.org/packages/af/13/a2263078a389ae865416ebd11b7e1ea6857ba17a3fe824247443dc8094dc/pydantic_core-0.39.0-cp310-cp310-manylinux_2_24_ppc64le.whl", hash = "sha256:8ac4ba34ac3977fa5c6cef5921564133e1295b9d202fed2d6e62187f61651f3c"}, + {url = "https://files.pythonhosted.org/packages/b6/cf/7e4c78ea6dd20fae6fcc40d080ea0cc0d243c455bd7f2876f4358083e734/pydantic_core-0.39.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:73f785920e974f86d2e37a7fc44a5fdd3e9b6d40fba94137da7a1e02c4dd7c11"}, + {url = "https://files.pythonhosted.org/packages/b9/6e/33ce81ab5b6216551c79a0de33d0561870ef8ce7044ad19d1bdcbbf7ac4c/pydantic_core-0.39.0-pp38-pypy38_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:5cf2849e22925411a15d955c03197f71c6507fcdfcaeee110a7202f6e436b5fa"}, + {url = "https://files.pythonhosted.org/packages/ba/5d/8da971a0738ba60e4b5fa4017edfc8b2ea7c33b497ff36c47579aaf8b2f7/pydantic_core-0.39.0-cp310-none-win32.whl", hash = "sha256:dc12b16753591143bdd0c117d74fbe46fda84b4a8eb0383931811819d8679c89"}, + {url = "https://files.pythonhosted.org/packages/bd/10/eae179a0e14dafdb99d8daad2214fbd4ce37ec930d5f4d6d5a76c53fb9b4/pydantic_core-0.39.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:a5ca573f261ea525c5bb10e03d41dd9ce76aea93b75f9ca2dc5dc4ef147ea2a3"}, + {url = "https://files.pythonhosted.org/packages/c0/d0/be263343068f7b3add37590ada5aae3e6e9ef9d71fde57bbf5af1c77fd61/pydantic_core-0.39.0-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:71e12169625eb4b6939617333dd1aa671c156a44c44880db207c47a2e4c9fe81"}, + {url = "https://files.pythonhosted.org/packages/c1/3b/dfbf0b7528a391cc9f5f0ece71384d80a462a3ea29629d04d0077c60e2a6/pydantic_core-0.39.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:d0ef384f3b4aa5ef4c66d47f4446ca9dc8adbfbc7bf74d1b31b19cc2e2bdf9e8"}, + {url = "https://files.pythonhosted.org/packages/cb/72/aa3d34b34ce6efe00fd1f3cf91e26d5df3fe17fec6233d411117f1fd1afc/pydantic_core-0.39.0-cp310-cp310-manylinux_2_24_armv7l.whl", hash = "sha256:ac8756c26cbfc57e89ff52817a2802e97376948de002ffe39adb238fbb12c8db"}, + {url = "https://files.pythonhosted.org/packages/cf/af/2c3098c684b769aa23e8cd52aeb6f9f1f57bd29001de4d504bffd971d061/pydantic_core-0.39.0-cp39-cp39-manylinux_2_24_ppc64le.whl", hash = "sha256:17a08e9af181097759362182bffa5614cd8c1278f12bab529e6e3bdc4b2d3860"}, + {url = "https://files.pythonhosted.org/packages/d1/49/665fa0ab78fb9d64737f9244611112ed2dd62294da07abbec5ff621e78cb/pydantic_core-0.39.0-cp37-none-win_amd64.whl", hash = "sha256:84675545b74ce4ea53f0e2413f182db1501b1684d6359f7c2cb4d37d24a9afec"}, + {url = "https://files.pythonhosted.org/packages/d1/57/09cf964c2fc35b47d720328e0cfc6db9541a253ff6cc252caea948dbbd9f/pydantic_core-0.39.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:103179d734dafb5da5f74065d1a18274709684a9dc01c61f119c5e39dea4d2df"}, + {url = "https://files.pythonhosted.org/packages/d9/59/b88cfad8e4d286c06eb8b2179b65d81e9f0e8a43b0501a10c5f6e7223059/pydantic_core-0.39.0-cp311-cp311-manylinux_2_24_s390x.whl", hash = "sha256:472049006abb4070750d530c96d76122497aec86b99c618d583e596fe986ad0a"}, + {url = "https://files.pythonhosted.org/packages/e1/05/0e5fc693d422d8fc385af604dedbbf7989fd5ec0d48b18f2eb8c5cd215a3/pydantic_core-0.39.0-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:ef212fafe222ae7fdf38ba16b5c7bb7eddf1b44cc901bc3056569eefcf54da94"}, + {url = "https://files.pythonhosted.org/packages/e3/d2/03bfd28dbe7b88c0c3dc6d972eaa1893174802c11375ebafff3b5047374e/pydantic_core-0.39.0-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:38ac25daeb3ea45ecd4e8580f7375e6434daf02c6ca185f246f2e682de554ab5"}, + {url = "https://files.pythonhosted.org/packages/e7/94/7400beb368dda61e6f77777f8a708faa001f4aec20a537fe56c4d067dc9d/pydantic_core-0.39.0-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:cf6cff67dcf885f36e9f8a8771225df6b9cd76f308d0c7af66bfd2776f471c7c"}, + {url = "https://files.pythonhosted.org/packages/e9/22/a393b654f9e74c37f5ace2739d521430ce8944c2ceb5eec9c1b0576c47f1/pydantic_core-0.39.0-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:8849794ae4da5d244d215ee582e83e169120c475a7e05f1adf227035b9edbde3"}, + {url = "https://files.pythonhosted.org/packages/eb/95/ff4b8fdfdc07645854fe141d684ada721eafe182482bcb08d2bac7531ca5/pydantic_core-0.39.0-pp37-pypy37_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:45f55076c3844ccf1a9f912d5bef61282baae203b30a7b0158add0b4a2141036"}, + {url = "https://files.pythonhosted.org/packages/ef/d6/11fdc62864ce49bbab385bb06de6b717b2e9447884fe723e1c7f4ff376e2/pydantic_core-0.39.0-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:bed383476707e6aeb8d9d6fc83a9b9a6b4f0a00ae440ca3f1cc17686ae3e45ab"}, + {url = "https://files.pythonhosted.org/packages/f2/68/df76ad84b7ed61ef388eeaab89bc9669fb709127c01abafe8009d51329a4/pydantic_core-0.39.0-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:7cdcd13b84411d6194de988044b21c2859fcc7c673e0f6dd92e854489c21ae2f"}, + {url = "https://files.pythonhosted.org/packages/f3/d9/9b7391a49be7ccbd721026c4dd660f1452526a7812b6588d7a41c657c175/pydantic_core-0.39.0-pp37-pypy37_pp73-macosx_10_7_x86_64.whl", hash = "sha256:d3240340147504a1d6a3c86f43b644469f8c61992e0d88287701ee8f6b1b0b2d"}, + {url = "https://files.pythonhosted.org/packages/f8/64/20fd09945907199d0a0f516bd4589e31a04e25fce9775ffc3514016444bf/pydantic_core-0.39.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:7bf7470f621285303a5aa6b3e4fb148c5b69f8ee485a920ee9cc1472fd282d2e"}, + {url = "https://files.pythonhosted.org/packages/f8/ac/b53b69b8dc48f26a3c4176960e5d488772c6912cf1bfb998e8ca57498f10/pydantic_core-0.39.0-pp39-pypy39_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:d2c52a9269c302b75265e45f72e1c3a3d4e473c90f11d3c5671ddfa7ba891eae"}, + {url = "https://files.pythonhosted.org/packages/fd/e4/62a993fd668c679373487a9f4eb89bcda1d44a7d75c532872cf549cabc93/pydantic_core-0.39.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4060e765690727095969f7038e8e1c7251d4bd518e151174b5cb54dae0163c68"}, + {url = "https://files.pythonhosted.org/packages/ff/89/1c2c8c2f9631dcce456e7f116e3af5c049795336ae6bcd8631154ead29d0/pydantic_core-0.39.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:8e86833a13a4f00f264d04f3f36048ce3fea0a92a730db6c9c9c0bf33e277bc2"}, ] "pylint 2.17.4" = [ {url = "https://files.pythonhosted.org/packages/04/4c/3f7d42a1378c40813772bc5f25184144da09f00ffbe3f60ae985ffa7e10f/pylint-2.17.4-py3-none-any.whl", hash = "sha256:7a1145fb08c251bdb5cca11739722ce64a63db479283d10ce718b2460e54123c"}, @@ -561,13 +561,13 @@ content_hash = "sha256:773ab8aa79c3209ee9a05956dc5808f351d35914c4c996301b024b71c {url = "https://files.pythonhosted.org/packages/7a/15/da3df99fd551507694a9b01f512a2f6cf1254f33601605843c3775f39460/pytest-cov-4.1.0.tar.gz", hash = "sha256:3904b13dfbfec47f003b8e77fd5b589cd11904a21ddf1ab38a64f204d6a10ef6"}, {url = "https://files.pythonhosted.org/packages/a7/4b/8b78d126e275efa2379b1c2e09dc52cf70df16fc3b90613ef82531499d73/pytest_cov-4.1.0-py3-none-any.whl", hash = "sha256:6ba70b9e97e69fcc3fb45bfeab2d0a138fb65c4d0d6a41ef33983ad114be8c3a"}, ] -"pytest-cppython 0.3.1.dev44" = [ - {url = "https://files.pythonhosted.org/packages/36/46/87da70abaf4cd3fb4b63418c2da15d81cdbdc9286883a9c51b98b3285772/pytest_cppython-0.3.1.dev44-py3-none-any.whl", hash = "sha256:ef033a44691a950bae1ef083bd7efad145818b6b697fa2588e17a1e36bbc5bca"}, - {url = "https://files.pythonhosted.org/packages/dc/3f/1149db4cdfbe2759626e631377fd8c119c8293a0d9fcfa807665c1cdd5bb/pytest-cppython-0.3.1.dev44.tar.gz", hash = "sha256:690bacb37be24c68ab7ce7bfc3c967768fa8824c452f86f31e1b6729bfd77f1f"}, +"pytest-cppython 0.3.1.dev45" = [ + {url = "https://files.pythonhosted.org/packages/5f/73/cd09e0ab2240398b7cdb8055f5bc218c2ba46e4f01c2feddce52838cafc7/pytest-cppython-0.3.1.dev45.tar.gz", hash = "sha256:e71f4ecbfb9e0d1e0c2f6d48b71cd119df554d0c68c2ba7c7e0a33ce66e00fe0"}, + {url = "https://files.pythonhosted.org/packages/a4/d7/926420c6e86280c37b1d4b02aea02f86820b5c7656da21a923d7055b8c14/pytest_cppython-0.3.1.dev45-py3-none-any.whl", hash = "sha256:b1a4bd299cf70000563a7317b2717e7168d03f2f6a84cdd3a507e3e0d2fe9736"}, ] -"pytest-mock 3.10.0" = [ - {url = "https://files.pythonhosted.org/packages/91/84/c951790e199cd54ddbf1021965b62a5415b81193ebdb4f4af2659fd06a73/pytest_mock-3.10.0-py3-none-any.whl", hash = "sha256:f4c973eeae0282963eb293eb173ce91b091a79c1334455acfac9ddee8a1c784b"}, - {url = "https://files.pythonhosted.org/packages/f6/2b/137a7db414aeaf3d753d415a2bc3b90aba8c5f61dff7a7a736d84b2ec60d/pytest-mock-3.10.0.tar.gz", hash = "sha256:fbbdb085ef7c252a326fd8cdcac0aa3b1333d8811f131bdcc701002e1be7ed4f"}, +"pytest-mock 3.11.1" = [ + {url = "https://files.pythonhosted.org/packages/d8/2d/b3a811ec4fa24190a9ec5013e23c89421a7916167c6240c31fdc445f850c/pytest-mock-3.11.1.tar.gz", hash = "sha256:7f6b125602ac6d743e523ae0bfa71e1a697a2f5534064528c6ff84c2f7c2fc7f"}, + {url = "https://files.pythonhosted.org/packages/da/85/80ae98e019a429445bfb74e153d4cb47c3695e3e908515e95e95c18237e5/pytest_mock-3.11.1-py3-none-any.whl", hash = "sha256:21c279fff83d70763b05f8874cc9cfb3fcacd6d354247a976f9529d19f9acf39"}, ] "tomlkit 0.11.8" = [ {url = "https://files.pythonhosted.org/packages/10/37/dd53019ccb72ef7d73fff0bee9e20b16faff9658b47913a35d79e89978af/tomlkit-0.11.8.tar.gz", hash = "sha256:9330fc7faa1db67b541b28e62018c17d20be733177d290a13b24c62d1614e0c3"}, From 39d10af5fda06483e886311bfce23060f1fba6b2 Mon Sep 17 00:00:00 2001 From: Asher Norland Date: Mon, 19 Jun 2023 19:58:47 -0400 Subject: [PATCH 03/16] Steps --- cppython/builder.py | 6 ++++-- cppython/project.py | 5 ++--- 2 files changed, 6 insertions(+), 5 deletions(-) diff --git a/cppython/builder.py b/cppython/builder.py index e163f01..cf286dd 100644 --- a/cppython/builder.py +++ b/cppython/builder.py @@ -67,7 +67,7 @@ def generate_project_data(self, project_configuration: ProjectConfiguration) -> return resolve_project_configuration(project_configuration) - def generate_data_plugins(self, pyproject: PyProject) -> PluginBuildData: + def generate_plugins(self, pyproject: PyProject) -> PluginBuildData: """_summary_ Args: @@ -91,10 +91,12 @@ def generate_data_plugins(self, pyproject: PyProject) -> PluginBuildData: "Provider", ) + self._scm = builder.create_scm(project_data) + # Solve the messy interactions between plugins generator_type, provider_type = self.solve(generator_plugins, provider_plugins) - return PluginBuildData(generator_type=generator_type, provider_type=provider_type) + return PluginBuildData(generator_type=generator_type, provider_type=provider_type, scm_type=scm_type) def generate_pep621_data( self, pyproject: PyProject, project_configuration: ProjectConfiguration, scm: SCM | None diff --git a/cppython/project.py b/cppython/project.py index 3b4e6ed..b66949e 100644 --- a/cppython/project.py +++ b/cppython/project.py @@ -32,13 +32,12 @@ def __init__( self.logger.info("Initializing project") project_data = builder.generate_project_data(project_configuration) - self._scm = builder.create_scm(project_data) - pyproject = PyProject(**pyproject_data) - plugin_build_data = builder.generate_data_plugins(pyproject) + plugin_build_data = builder.generate_plugins(pyproject) # Once the plugins are resolved, the core data is complete and can be generated + self.scm = plugin_build_data.scm_type() pep621_data = builder.generate_pep621_data(pyproject, project_configuration, self.scm) self._core_data = builder.generate_core_data( From ab9b73b4706c0d4d74dc3e3ddf54dfbfd61d5f41 Mon Sep 17 00:00:00 2001 From: Asher Norland Date: Tue, 27 Jun 2023 05:14:23 -0400 Subject: [PATCH 04/16] Update pyproject.toml --- pyproject.toml | 1 - 1 file changed, 1 deletion(-) diff --git a/pyproject.toml b/pyproject.toml index 4c84938..d15a6b8 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -28,7 +28,6 @@ paths = ["LICENSE.md"] homepage = "https://github.com/Synodic-Software/CPPython" repository = "https://github.com/Synodic-Software/CPPython" -[project.optional-dependencies] [tool.pdm] version = {use_scm = true} From b3708930d3d0341855b859c9537fbefb56b06755 Mon Sep 17 00:00:00 2001 From: Asher Norland Date: Mon, 17 Jul 2023 20:16:59 -0400 Subject: [PATCH 05/16] Update pyproject.toml --- pyproject.toml | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/pyproject.toml b/pyproject.toml index d15a6b8..993ed7b 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -104,5 +104,6 @@ default-docstring-type = "google" skip_empty = true [build-system] -build-backend = "pdm.pep517.api" -requires = ["pdm-pep517"] +build-backend = "pdm.backend" +requires = ["pdm.backend"] + From 4cd84d52f68daeafbdf39b83aba4e43cf4e691c0 Mon Sep 17 00:00:00 2001 From: Asher Norland Date: Wed, 30 Aug 2023 23:14:36 -0400 Subject: [PATCH 06/16] Update Extensions Recs --- .vscode/extensions.json | 7 +++++++ .vscode/settings.json | 6 ------ 2 files changed, 7 insertions(+), 6 deletions(-) create mode 100644 .vscode/extensions.json diff --git a/.vscode/extensions.json b/.vscode/extensions.json new file mode 100644 index 0000000..2a98eef --- /dev/null +++ b/.vscode/extensions.json @@ -0,0 +1,7 @@ +{ + "recommendations": [ + "ms-python.mypy-type-checker", + "ms-python.pylint", + "ms-python.black-formatter" + ] +} \ No newline at end of file diff --git a/.vscode/settings.json b/.vscode/settings.json index 71959b3..cafb1c1 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -1,17 +1,11 @@ { - "python.linting.enabled": true, - "python.linting.flake8Enabled": false, - "python.linting.pylintEnabled": true, "python.testing.pytestArgs": [ "tests" ], - "python.formatting.provider": "black", "python.testing.unittestEnabled": false, "python.testing.pytestEnabled": true, "editor.formatOnSave": true, "editor.codeActionsOnSave": { "source.organizeImports": true }, - "python.linting.mypyEnabled": true, - "mypy.runUsingActiveInterpreter": true } \ No newline at end of file From 24a8e31b5f0aa80eea9aa9c46bdc7c2263e26d1d Mon Sep 17 00:00:00 2001 From: Asher Norland Date: Wed, 13 Mar 2024 16:33:15 -0400 Subject: [PATCH 07/16] Builder Simplification --- .vscode/settings.json | 2 +- cppython/builder.py | 296 ++++++++------ cppython/console/interface.py | 6 +- cppython/project.py | 77 +--- pdm.lock | 734 ++++++++++++---------------------- pyproject.toml | 28 +- tests/unit/test_project.py | 71 +++- 7 files changed, 538 insertions(+), 676 deletions(-) diff --git a/.vscode/settings.json b/.vscode/settings.json index cafb1c1..33312c0 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -6,6 +6,6 @@ "python.testing.pytestEnabled": true, "editor.formatOnSave": true, "editor.codeActionsOnSave": { - "source.organizeImports": true + "source.organizeImports": "explicit" }, } \ No newline at end of file diff --git a/cppython/builder.py b/cppython/builder.py index cf286dd..c4ed91c 100644 --- a/cppython/builder.py +++ b/cppython/builder.py @@ -1,7 +1,7 @@ -"""Everything needed to build a CPPython project -""" +"""Everything needed to build a CPPython project""" import logging +from dataclasses import dataclass from importlib import metadata from inspect import getmodule from logging import Logger @@ -13,10 +13,10 @@ from cppython_core.plugin_schema.scm import SCM from cppython_core.resolution import ( PluginBuildData, + PluginCPPythonData, resolve_cppython, resolve_cppython_plugin, resolve_generator, - resolve_name, resolve_pep621, resolve_project_configuration, resolve_provider, @@ -26,26 +26,31 @@ CoreData, CorePluginData, CPPythonGlobalConfiguration, - DataPluginT, + CPPythonLocalConfiguration, + DataPlugin, + PEP621Configuration, PEP621Data, ProjectConfiguration, ProjectData, - PyProject, ) +@dataclass +class Plugins: + """The plugin data for CPPython""" + + generator: Generator + provider: Provider + scm: SCM + + class Builder: """Helper class for building CPPython projects""" - def __init__(self, logger: Logger) -> None: + def __init__(self, project_configuration: ProjectConfiguration, logger: Logger) -> None: + self.project_configuration = project_configuration self.logger = logger - def setup_logger(self, project_configuration: ProjectConfiguration) -> None: - """_summary_ - - Args: - project_configuration: _description_ - """ # Default logging levels levels = [logging.WARNING, logging.INFO, logging.DEBUG] @@ -67,11 +72,14 @@ def generate_project_data(self, project_configuration: ProjectConfiguration) -> return resolve_project_configuration(project_configuration) - def generate_plugins(self, pyproject: PyProject) -> PluginBuildData: + def generate_plugins( + self, local_configuration: CPPythonLocalConfiguration, project_data: ProjectData + ) -> PluginBuildData: """_summary_ Args: - pyproject: _description_ + local_configuration: _description_ + project_data: _description_ Returns: _description_ @@ -80,51 +88,69 @@ def generate_plugins(self, pyproject: PyProject) -> PluginBuildData: raw_generator_plugins = self.find_generators() generator_plugins = self.filter_plugins( raw_generator_plugins, - pyproject.tool.cppython.generator_name, + local_configuration.generator_name, "Generator", ) raw_provider_plugins = self.find_providers() provider_plugins = self.filter_plugins( raw_provider_plugins, - pyproject.tool.cppython.provider_name, + local_configuration.provider_name, "Provider", ) - self._scm = builder.create_scm(project_data) + scm_plugins = self.find_source_managers() + + scm_type = self.select_scm(scm_plugins, project_data) # Solve the messy interactions between plugins generator_type, provider_type = self.solve(generator_plugins, provider_plugins) return PluginBuildData(generator_type=generator_type, provider_type=provider_type, scm_type=scm_type) + def generate_cppython_plugin_data(self, plugin_build_data: PluginBuildData) -> PluginCPPythonData: + """Generates the CPPython plugin data from the resolved plugins + + Args: + plugin_build_data: The resolved plugin data + + Returns: + The plugin data used by CPPython + """ + + return PluginCPPythonData( + generator_name=plugin_build_data.generator_type.name(), + provider_name=plugin_build_data.provider_type.name(), + scm_name=plugin_build_data.scm_type.name(), + ) + def generate_pep621_data( - self, pyproject: PyProject, project_configuration: ProjectConfiguration, scm: SCM | None + self, pep621_configuration: PEP621Configuration, project_configuration: ProjectConfiguration, scm: SCM | None ) -> PEP621Data: """_summary_ Args: - pyproject: _description_ + pep621_configuration: _description_ project_configuration: _description_ scm: _description_ Returns: _description_ """ - return resolve_pep621(pyproject.project, project_configuration, scm) + return resolve_pep621(pep621_configuration, project_configuration, scm) def generate_core_data( self, project_data: ProjectData, - pyproject: PyProject, - plugin_build_date: PluginBuildData, + local_configuration: CPPythonLocalConfiguration, + plugin_cppython_date: PluginCPPythonData, ) -> CoreData: """Parses and returns resolved data from all configuration sources Args: project_data: Project data - pyproject: TODO - plugin_build_date: TODO + local_configuration: TODO + plugin_cppython_date: TODO Raises: ConfigError: Raised if data cannot be parsed @@ -135,44 +161,19 @@ def generate_core_data( global_configuration = CPPythonGlobalConfiguration() - cppython_data = resolve_cppython(pyproject.tool.cppython, global_configuration, project_data, plugin_build_date) + cppython_data = resolve_cppython(local_configuration, global_configuration, project_data, plugin_cppython_date) return CoreData(project_data=project_data, cppython_data=cppython_data) - def resolve_global_config() -> CPPythonGlobalConfiguration: - """_summary_ + def resolve_global_config(self) -> CPPythonGlobalConfiguration: + """Generates the global configuration object Returns: - _description_ + The global configuration object """ return CPPythonGlobalConfiguration() - def resolve_core_data( - project_data: ProjectData, - pyproject: PyProject, - plugin_build_date: PluginBuildData, - ) -> CoreData: - """Parses and returns resolved data from all configuration sources - - Args: - project_data: Project data - pyproject: TODO - plugin_build_date: TODO - - Raises: - ConfigError: Raised if data cannot be parsed - - Returns: - The resolved core object - """ - - global_configuration = resolve_global_config() - - cppython_data = resolve_cppython(pyproject.tool.cppython, global_configuration, project_data, plugin_build_date) - - return CoreData(project_data=project_data, cppython_data=cppython_data) - def find_generators(self) -> list[type[Generator]]: """_summary_ @@ -191,13 +192,11 @@ def find_generators(self) -> list[type[Generator]]: loaded_type = entry_point.load() if not issubclass(loaded_type, Generator): self.logger.warning( - f"Found incompatible plugin. The '{resolve_name(loaded_type)}' plugin must be an instance of" + f"Found incompatible plugin. The '{loaded_type.name()}' plugin must be an instance of" f" '{group_name}'" ) else: - self.logger.warning( - f"{group_name} plugin found: {resolve_name(loaded_type)} from {getmodule(loaded_type)}" - ) + self.logger.warning(f"{group_name} plugin found: {loaded_type.name()} from {getmodule(loaded_type)}") plugin_types.append(loaded_type) if not plugin_types: @@ -223,13 +222,41 @@ def find_providers(self) -> list[type[Provider]]: loaded_type = entry_point.load() if not issubclass(loaded_type, Provider): self.logger.warning( - f"Found incompatible plugin. The '{resolve_name(loaded_type)}' plugin must be an instance of" + f"Found incompatible plugin. The '{loaded_type.name()}' plugin must be an instance of" f" '{group_name}'" ) else: + self.logger.warning(f"{group_name} plugin found: {loaded_type.name()} from {getmodule(loaded_type)}") + plugin_types.append(loaded_type) + + if not plugin_types: + raise PluginError(f"No {group_name} plugin was found") + + return plugin_types + + def find_source_managers(self) -> list[type[SCM]]: + """_summary_ + + Raises: + PluginError: _description_ + + Returns: + _description_ + """ + + group_name = "scm" + plugin_types: list[type[SCM]] = [] + + # Filter entries by type + for entry_point in list(metadata.entry_points(group=f"cppython.{group_name}")): + loaded_type = entry_point.load() + if not issubclass(loaded_type, SCM): self.logger.warning( - f"{group_name} plugin found: {resolve_name(loaded_type)} from {getmodule(loaded_type)}" + f"Found incompatible plugin. The '{loaded_type.name()}' plugin must be an instance of" + f" '{group_name}'" ) + else: + self.logger.warning(f"{group_name} plugin found: {loaded_type.name()} from {getmodule(loaded_type)}") plugin_types.append(loaded_type) if not plugin_types: @@ -237,9 +264,9 @@ def find_providers(self) -> list[type[Provider]]: return plugin_types - def filter_plugins( - self, plugin_types: list[type[DataPluginT]], pinned_name: str | None, group_name: str - ) -> list[type[DataPluginT]]: + def filter_plugins[ + T: DataPlugin + ](self, plugin_types: list[type[T]], pinned_name: str | None, group_name: str) -> list[type[T]]: """Finds and filters data plugins Args: @@ -257,20 +284,20 @@ def filter_plugins( # Lookup the requested plugin if given if pinned_name is not None: for loaded_type in plugin_types: - if resolve_name(loaded_type) == pinned_name: + if loaded_type.name() == pinned_name: self.logger.warning( - f"Using {group_name} plugin: {resolve_name(loaded_type)} from {getmodule(loaded_type)}" + f"Using {group_name} plugin: {loaded_type.name()} from {getmodule(loaded_type)}" ) return [loaded_type] self.logger.warning(f"'{group_name}_name' was empty. Trying to deduce {group_name}s") - supported_types: list[type[DataPluginT]] = [] + supported_types: list[type[T]] = [] # Deduce types for loaded_type in plugin_types: self.logger.warning( - f"A {group_name} plugin is supported: {resolve_name(loaded_type)} from {getmodule(loaded_type)}" + f"A {group_name} plugin is supported: {loaded_type.name()} from {getmodule(loaded_type)}" ) supported_types.append(loaded_type) @@ -280,6 +307,26 @@ def filter_plugins( return supported_types + def select_scm(self, scm_plugins: list[type[SCM]], project_data: ProjectData) -> type[SCM]: + """_summary_ + + Args: + scm_plugins: _description_ + project_data: _description_ + + Raises: + PluginError: _description_ + + Returns: + _description_ + """ + + for scm_type in scm_plugins: + if scm_type.features(project_data.pyproject_file.parent).repository: + return scm_type + + raise PluginError("No SCM plugin was found that supports the given path") + def solve( self, generator_types: list[type[Generator]], provider_types: list[type[Provider]] ) -> tuple[type[Generator], type[Provider]]: @@ -313,12 +360,13 @@ def solve( def create_scm( self, - project_data: ProjectData, - ) -> SCM | None: + core_data: CoreData, + scm_type: type[SCM], + ) -> SCM: """_summary_ Args: - project_data: _description_ + core_data: _description_ Raises: PluginError: Ya @@ -326,45 +374,26 @@ def create_scm( Returns: _description_ """ - group = "scm" - path = project_data.pyproject_file.parent - scm_types: list[type[SCM]] = [] + cppython_plugin_data = resolve_cppython_plugin(core_data.cppython_data, scm_type) + scm_data = resolve_scm(core_data.project_data, cppython_plugin_data) - if not (entries := list(metadata.entry_points(group=f"cppython.{group}"))): - raise PluginError("No SCM plugin found") - - # Filter entries - for entry_point in entries: - plugin_type = entry_point.load() - if not issubclass(plugin_type, SCM): - self.logger.warning( - f"Found incompatible plugin. The '{resolve_name(plugin_type)}' plugin must be an instance of" - f" '{group}'" - ) - else: - scm_types.append(plugin_type) - - # Deduce the SCM repository - plugin = None - for scm_type in scm_types: - if scm_type.features(path).repository: - scm_data = resolve_scm(project_data) - plugin = scm_type(scm_data) - break - - if not plugin: - self.logger.error("No applicable SCM plugin found for the given path") + plugin = scm_type(scm_data) return plugin def create_generator( - self, core_data: CoreData, generator_configuration: dict[str, Any], generator_type: type[Generator] + self, + core_data: CoreData, + pep621_data: PEP621Data, + generator_configuration: dict[str, Any], + generator_type: type[Generator], ) -> Generator: """Creates a generator from input configuration Args: core_data: The resolved configuration data + pep621_data: The PEP621 data generator_configuration: The generator table of the CPPython configuration data generator_type: The plugin type @@ -377,28 +406,33 @@ def create_generator( cppython_plugin_data = resolve_cppython_plugin(core_data.cppython_data, generator_type) - core_plugin_data = CorePluginData( - project_data=core_data.project_data, - pep621_data=core_data.pep621_data, - cppython_data=cppython_plugin_data, - ) - - generator_data = resolve_generator(core_plugin_data) + generator_data = resolve_generator(core_data.project_data, cppython_plugin_data) if not generator_configuration: self.logger.error( "The pyproject.toml table 'tool.cppython.generator' does not exist. Sending generator empty data", ) + core_plugin_data = CorePluginData( + project_data=core_data.project_data, + pep621_data=pep621_data, + cppython_data=cppython_plugin_data, + ) + return generator_type(generator_data, core_plugin_data, generator_configuration) def create_provider( - self, core_data: CoreData, provider_configuration: dict[str, Any], provider_type: type[Provider] + self, + core_data: CoreData, + pep621_data: PEP621Data, + provider_configuration: dict[str, Any], + provider_type: type[Provider], ) -> Provider: """Creates Providers from input data Args: core_data: The resolved configuration data + pep621_data: The PEP621 data provider_configuration: The provider data table provider_type: The type to instantiate @@ -411,17 +445,55 @@ def create_provider( cppython_plugin_data = resolve_cppython_plugin(core_data.cppython_data, provider_type) - core_plugin_data = CorePluginData( - project_data=core_data.project_data, - pep621_data=core_data.pep621_data, - cppython_data=cppython_plugin_data, - ) - - provider_data = resolve_provider(core_plugin_data) + provider_data = resolve_provider(core_data.project_data, cppython_plugin_data) if not provider_configuration: self.logger.error( "The pyproject.toml table 'tool.cppython.provider' does not exist. Sending provider empty data", ) + core_plugin_data = CorePluginData( + project_data=core_data.project_data, + pep621_data=pep621_data, + cppython_data=cppython_plugin_data, + ) + return provider_type(provider_data, core_plugin_data, provider_configuration) + + def build( + self, pep621_configuration: PEP621Configuration, local_configuration: CPPythonLocalConfiguration + ) -> Plugins: + """_summary_ + + Args: + pep621_configuration: _description_ + local_configuration: _description_ + + Returns: + _description_ + """ + + project_data = self.generate_project_data(self.project_configuration) + + plugin_build_data = self.generate_plugins(local_configuration, project_data) + plugin_cppython_data = self.generate_cppython_plugin_data(plugin_build_data) + + _core_data = self.generate_core_data( + project_data, + local_configuration, + plugin_cppython_data, + ) + + scm = self.create_scm(_core_data, plugin_build_data.scm_type) + + pep621_data = self.generate_pep621_data(pep621_configuration, self.project_configuration, scm) + + # Create the chosen plugins + generator = self.create_generator( + _core_data, pep621_data, local_configuration.generator, plugin_build_data.generator_type + ) + provider = self.create_provider( + _core_data, pep621_data, local_configuration.provider, plugin_build_data.provider_type + ) + + return Plugins(generator=generator, provider=provider, scm=scm) diff --git a/cppython/console/interface.py b/cppython/console/interface.py index 53f5b03..1a5e49b 100644 --- a/cppython/console/interface.py +++ b/cppython/console/interface.py @@ -1,5 +1,4 @@ -"""A click CLI for CPPython interfacing -""" +"""A click CLI for CPPython interfacing""" from logging import getLogger from pathlib import Path @@ -61,7 +60,8 @@ def generate_project(self) -> Project: The constructed Project """ - pyproject_data = tomlkit.loads(self.configuration.pyproject_file.read_text(encoding="utf-8")) + path: Path = self.configuration.pyproject_file + pyproject_data = tomlkit.loads(path.read_text(encoding="utf-8")) return Project(self.configuration, self.interface, pyproject_data) diff --git a/cppython/project.py b/cppython/project.py index b66949e..a85acff 100644 --- a/cppython/project.py +++ b/cppython/project.py @@ -1,22 +1,19 @@ -"""Manages data flow to and from plugins -""" +"""Manages data flow to and from plugins""" import asyncio import logging from typing import Any -from cppython_core.exceptions import ConfigError, PluginError -from cppython_core.plugin_schema.scm import SCM -from cppython_core.resolution import resolve_name +from cppython_core.exceptions import ConfigException, PluginError +from cppython_core.resolution import resolve_model from cppython_core.schema import CoreData, Interface, ProjectConfiguration, PyProject -from pydantic import ValidationError from cppython.builder import Builder from cppython.schema import API class Project(API): - """The object constructed at each entry_point""" + """The object that should be constructed at each entry_point""" def __init__( self, project_configuration: ProjectConfiguration, interface: Interface, pyproject_data: dict[str, Any] @@ -25,42 +22,22 @@ def __init__( self._interface = interface self.logger = logging.getLogger("cppython") - try: - builder = Builder(self.logger) - builder.setup_logger(project_configuration) - - self.logger.info("Initializing project") - - project_data = builder.generate_project_data(project_configuration) - pyproject = PyProject(**pyproject_data) - - plugin_build_data = builder.generate_plugins(pyproject) + builder = Builder(project_configuration, self.logger) - # Once the plugins are resolved, the core data is complete and can be generated - self.scm = plugin_build_data.scm_type() + self.logger.info("Initializing project") - pep621_data = builder.generate_pep621_data(pyproject, project_configuration, self.scm) - self._core_data = builder.generate_core_data( - project_data, - pyproject, - plugin_build_data, - ) - - # Create the chosen plugins - self._generator = builder.create_generator( - self._core_data, pyproject.tool.cppython.generator, plugin_build_data.generator_type - ) - self._provider = builder.create_provider( - self._core_data, pyproject.tool.cppython.provider, plugin_build_data.provider_type - ) - - except ConfigError: - logging.exception("Unhandled configuration. CPPython will process no further") + try: + pyproject = resolve_model(PyProject, pyproject_data) + except ConfigException as error: + self.logger.error(error, exc_info=True) return - except ValidationError as error: - logging.error(error) + + if not pyproject.tool or not pyproject.tool.cppython: + self.logger.warning("The pyproject.toml file doesn't contain the `tool.cppython` table") return + self._plugins = builder.build(pyproject.project, pyproject.tool.cppython) + self._enabled = True self.logger.info("Initialized project successfully") @@ -83,29 +60,19 @@ def core_data(self) -> CoreData | None: """ return self._core_data if self._enabled else None - @property - def scm(self) -> SCM | None: - """SCM - - Returns: - SCM, if enabled - """ - return self._scm if self._enabled else None - async def download_provider_tools(self) -> None: """Download the provider tooling if required""" if not self._enabled: self.logger.info("Skipping 'download_provider_tools' because the project is not enabled") return - name = resolve_name(type(self._provider)) base_path = self._core_data.cppython_data.install_path - path = base_path / name + path = base_path / self._provider.name() path.mkdir(parents=True, exist_ok=True) - self.logger.warning("Downloading the %s requirements to %s", name, path) + self.logger.warning("Downloading the %s requirements to %s", self._provider.name(), path) await self._provider.download_tooling(path) def sync(self) -> None: @@ -135,13 +102,12 @@ def install(self) -> None: asyncio.run(self.download_provider_tools()) self.logger.info("Installing project") - name = resolve_name(type(self._provider)) - self.logger.info("Installing %s provider", name) + self.logger.info("Installing %s provider", self._provider.name()) try: self._provider.install() except Exception as exception: - self.logger.error("Provider %s failed to install", name) + self.logger.error("Provider %s failed to install", self._provider.name()) raise exception self.sync() @@ -160,13 +126,12 @@ def update(self) -> None: asyncio.run(self.download_provider_tools()) self.logger.info("Updating project") - name = resolve_name(type(self._provider)) - self.logger.info("Updating %s provider", name) + self.logger.info("Updating %s provider", self._provider.name()) try: self._provider.update() except Exception as exception: - self.logger.error("Provider %s failed to update", name) + self.logger.error("Provider %s failed to update", self._provider.name()) raise exception self.sync() diff --git a/pdm.lock b/pdm.lock index 5d3ff1f..6e8466d 100644 --- a/pdm.lock +++ b/pdm.lock @@ -1,26 +1,36 @@ # This file is @generated by PDM. # It is not intended for manual editing. +[metadata] +groups = ["default", "lint", "test"] +strategy = ["cross_platform"] +lock_version = "4.4.1" +content_hash = "sha256:017552fe0fbb7c28de2016f00448dcb31947be6084adb54e69b470ee2eed83ba" + [[package]] name = "annotated-types" -version = "0.5.0" -requires_python = ">=3.7" +version = "0.6.0" +requires_python = ">=3.8" summary = "Reusable constraint types to use with typing.Annotated" +files = [ + {file = "annotated_types-0.6.0-py3-none-any.whl", hash = "sha256:0641064de18ba7a25dee8f96403ebc39113d0cb953a01429249d5c7564666a43"}, + {file = "annotated_types-0.6.0.tar.gz", hash = "sha256:563339e807e53ffd9c267e99fc6d9ea23eb8443c08f112651963e24e22f84a5d"}, +] [[package]] name = "astroid" -version = "2.15.5" -requires_python = ">=3.7.2" +version = "3.1.0" +requires_python = ">=3.8.0" summary = "An abstract syntax tree for Python with inference support." -dependencies = [ - "lazy-object-proxy>=1.4.0", - "wrapt<2,>=1.14; python_version >= \"3.11\"", +files = [ + {file = "astroid-3.1.0-py3-none-any.whl", hash = "sha256:951798f922990137ac090c53af473db7ab4e70c770e6d7fae0cec59f74411819"}, + {file = "astroid-3.1.0.tar.gz", hash = "sha256:ac248253bfa4bd924a0de213707e7ebeeb3138abeb48d798784ead1e56d419d4"}, ] [[package]] name = "black" -version = "23.3.0" -requires_python = ">=3.7" +version = "24.2.0" +requires_python = ">=3.8" summary = "The uncompromising code formatter." dependencies = [ "click>=8.0.0", @@ -29,85 +39,153 @@ dependencies = [ "pathspec>=0.9.0", "platformdirs>=2", ] +files = [ + {file = "black-24.2.0-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:d84f29eb3ee44859052073b7636533ec995bd0f64e2fb43aeceefc70090e752b"}, + {file = "black-24.2.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:1e08fb9a15c914b81dd734ddd7fb10513016e5ce7e6704bdd5e1251ceee51ac9"}, + {file = "black-24.2.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:810d445ae6069ce64030c78ff6127cd9cd178a9ac3361435708b907d8a04c693"}, + {file = "black-24.2.0-cp312-cp312-win_amd64.whl", hash = "sha256:ba15742a13de85e9b8f3239c8f807723991fbfae24bad92d34a2b12e81904982"}, + {file = "black-24.2.0-py3-none-any.whl", hash = "sha256:e8a6ae970537e67830776488bca52000eaa37fa63b9988e8c487458d9cd5ace6"}, + {file = "black-24.2.0.tar.gz", hash = "sha256:bce4f25c27c3435e4dace4815bcb2008b87e167e3bf4ee47ccdc5ce906eb4894"}, +] [[package]] name = "click" -version = "8.1.3" +version = "8.1.7" requires_python = ">=3.7" summary = "Composable command line interface toolkit" dependencies = [ "colorama; platform_system == \"Windows\"", ] +files = [ + {file = "click-8.1.7-py3-none-any.whl", hash = "sha256:ae74fb96c20a0277a1d615f1e4d73c8414f5a98db8b799a7931d1582f3390c28"}, + {file = "click-8.1.7.tar.gz", hash = "sha256:ca9853ad459e787e2192211578cc907e7594e294c7ccc834310722b41b9ca6de"}, +] [[package]] name = "colorama" version = "0.4.6" requires_python = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,!=3.6.*,>=2.7" summary = "Cross-platform colored terminal text." +files = [ + {file = "colorama-0.4.6-py2.py3-none-any.whl", hash = "sha256:4f1d9991f5acc0ca119f9d443620b77f9d6b33703e51011c16baf57afb285fc6"}, + {file = "colorama-0.4.6.tar.gz", hash = "sha256:08695f5cb7ed6e0531a20572697297273c47b8cae5a63ffc6d6ed5c201be6e44"}, +] [[package]] name = "coverage" -version = "7.2.7" -requires_python = ">=3.7" +version = "7.4.3" +requires_python = ">=3.8" summary = "Code coverage measurement for Python" +files = [ + {file = "coverage-7.4.3-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:b51bfc348925e92a9bd9b2e48dad13431b57011fd1038f08316e6bf1df107d10"}, + {file = "coverage-7.4.3-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:d6cdecaedea1ea9e033d8adf6a0ab11107b49571bbb9737175444cea6eb72328"}, + {file = "coverage-7.4.3-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3b2eccb883368f9e972e216c7b4c7c06cabda925b5f06dde0650281cb7666a30"}, + {file = "coverage-7.4.3-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:6c00cdc8fa4e50e1cc1f941a7f2e3e0f26cb2a1233c9696f26963ff58445bac7"}, + {file = "coverage-7.4.3-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b9a4a8dd3dcf4cbd3165737358e4d7dfbd9d59902ad11e3b15eebb6393b0446e"}, + {file = "coverage-7.4.3-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:062b0a75d9261e2f9c6d071753f7eef0fc9caf3a2c82d36d76667ba7b6470003"}, + {file = "coverage-7.4.3-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:ebe7c9e67a2d15fa97b77ea6571ce5e1e1f6b0db71d1d5e96f8d2bf134303c1d"}, + {file = "coverage-7.4.3-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:c0a120238dd71c68484f02562f6d446d736adcc6ca0993712289b102705a9a3a"}, + {file = "coverage-7.4.3-cp312-cp312-win32.whl", hash = "sha256:37389611ba54fd6d278fde86eb2c013c8e50232e38f5c68235d09d0a3f8aa352"}, + {file = "coverage-7.4.3-cp312-cp312-win_amd64.whl", hash = "sha256:d25b937a5d9ffa857d41be042b4238dd61db888533b53bc76dc082cb5a15e914"}, + {file = "coverage-7.4.3-pp38.pp39.pp310-none-any.whl", hash = "sha256:7cbde573904625509a3f37b6fecea974e363460b556a627c60dc2f47e2fffa51"}, + {file = "coverage-7.4.3.tar.gz", hash = "sha256:276f6077a5c61447a48d133ed13e759c09e62aff0dc84274a68dc18660104d52"}, +] [[package]] name = "coverage" -version = "7.2.7" +version = "7.4.3" extras = ["toml"] -requires_python = ">=3.7" +requires_python = ">=3.8" summary = "Code coverage measurement for Python" dependencies = [ - "coverage==7.2.7", + "coverage==7.4.3", +] +files = [ + {file = "coverage-7.4.3-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:b51bfc348925e92a9bd9b2e48dad13431b57011fd1038f08316e6bf1df107d10"}, + {file = "coverage-7.4.3-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:d6cdecaedea1ea9e033d8adf6a0ab11107b49571bbb9737175444cea6eb72328"}, + {file = "coverage-7.4.3-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3b2eccb883368f9e972e216c7b4c7c06cabda925b5f06dde0650281cb7666a30"}, + {file = "coverage-7.4.3-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:6c00cdc8fa4e50e1cc1f941a7f2e3e0f26cb2a1233c9696f26963ff58445bac7"}, + {file = "coverage-7.4.3-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b9a4a8dd3dcf4cbd3165737358e4d7dfbd9d59902ad11e3b15eebb6393b0446e"}, + {file = "coverage-7.4.3-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:062b0a75d9261e2f9c6d071753f7eef0fc9caf3a2c82d36d76667ba7b6470003"}, + {file = "coverage-7.4.3-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:ebe7c9e67a2d15fa97b77ea6571ce5e1e1f6b0db71d1d5e96f8d2bf134303c1d"}, + {file = "coverage-7.4.3-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:c0a120238dd71c68484f02562f6d446d736adcc6ca0993712289b102705a9a3a"}, + {file = "coverage-7.4.3-cp312-cp312-win32.whl", hash = "sha256:37389611ba54fd6d278fde86eb2c013c8e50232e38f5c68235d09d0a3f8aa352"}, + {file = "coverage-7.4.3-cp312-cp312-win_amd64.whl", hash = "sha256:d25b937a5d9ffa857d41be042b4238dd61db888533b53bc76dc082cb5a15e914"}, + {file = "coverage-7.4.3-pp38.pp39.pp310-none-any.whl", hash = "sha256:7cbde573904625509a3f37b6fecea974e363460b556a627c60dc2f47e2fffa51"}, + {file = "coverage-7.4.3.tar.gz", hash = "sha256:276f6077a5c61447a48d133ed13e759c09e62aff0dc84274a68dc18660104d52"}, ] [[package]] name = "cppython-core" -version = "0.7.0" -requires_python = ">=3.11" +version = "0.7.1.dev12" +requires_python = ">=3.12" summary = "Data definitions for CPPython" dependencies = [ - "pydantic>=2.0b1", + "pydantic>=2.6.3", + "synodic-utilities>=0.1.1.dev3", +] +files = [ + {file = "cppython_core-0.7.1.dev12-py3-none-any.whl", hash = "sha256:3b6e047874f3c7294c215b344a89147445bda4aecfa81564260cd944ee147551"}, + {file = "cppython_core-0.7.1.dev12.tar.gz", hash = "sha256:1bd3cc2c6bbcadd71dd565a27713f4ff38b3d3c790485ce424b14d4d18081e53"}, ] [[package]] name = "dill" -version = "0.3.6" -requires_python = ">=3.7" -summary = "serialize all of python" +version = "0.3.8" +requires_python = ">=3.8" +summary = "serialize all of Python" +files = [ + {file = "dill-0.3.8-py3-none-any.whl", hash = "sha256:c36ca9ffb54365bdd2f8eb3eff7d2a21237f8452b57ace88b1ac615b7e815bd7"}, + {file = "dill-0.3.8.tar.gz", hash = "sha256:3ebe3c479ad625c4553aca177444d89b486b1d84982eeacded644afc0cf797ca"}, +] [[package]] name = "iniconfig" version = "2.0.0" requires_python = ">=3.7" summary = "brain-dead simple config-ini parsing" +files = [ + {file = "iniconfig-2.0.0-py3-none-any.whl", hash = "sha256:b6a85871a79d2e3b22d2d1b94ac2824226a63c6b741c88f7ae975f18b6778374"}, + {file = "iniconfig-2.0.0.tar.gz", hash = "sha256:2d91e135bf72d31a410b17c16da610a82cb55f6b0477d1a902134b24a455b8b3"}, +] [[package]] name = "isort" -version = "5.12.0" +version = "5.13.2" requires_python = ">=3.8.0" summary = "A Python utility / library to sort Python imports." - -[[package]] -name = "lazy-object-proxy" -version = "1.9.0" -requires_python = ">=3.7" -summary = "A fast and thorough lazy object proxy." +files = [ + {file = "isort-5.13.2-py3-none-any.whl", hash = "sha256:8ca5e72a8d85860d5a3fa69b8745237f2939afe12dbf656afbcb47fe72d947a6"}, + {file = "isort-5.13.2.tar.gz", hash = "sha256:48fdfcb9face5d58a4f6dde2e72a1fb8dcaf8ab26f95ab49fab84c2ddefb0109"}, +] [[package]] name = "mccabe" version = "0.7.0" requires_python = ">=3.6" summary = "McCabe checker, plugin for flake8" +files = [ + {file = "mccabe-0.7.0-py2.py3-none-any.whl", hash = "sha256:6c2d30ab6be0e4a46919781807b4f0d834ebdd6c6e3dca0bda5a15f863427b6e"}, + {file = "mccabe-0.7.0.tar.gz", hash = "sha256:348e0240c33b60bbdf4e523192ef919f28cb2c3d7d5c7794f74009290f236325"}, +] [[package]] name = "mypy" -version = "1.3.0" -requires_python = ">=3.7" +version = "1.9.0" +requires_python = ">=3.8" summary = "Optional static typing for Python" dependencies = [ "mypy-extensions>=1.0.0", - "typing-extensions>=3.10", + "typing-extensions>=4.1.0", +] +files = [ + {file = "mypy-1.9.0-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:aceb1db093b04db5cd390821464504111b8ec3e351eb85afd1433490163d60cd"}, + {file = "mypy-1.9.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:0235391f1c6f6ce487b23b9dbd1327b4ec33bb93934aa986efe8a9563d9349e6"}, + {file = "mypy-1.9.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d4d5ddc13421ba3e2e082a6c2d74c2ddb3979c39b582dacd53dd5d9431237185"}, + {file = "mypy-1.9.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:190da1ee69b427d7efa8aa0d5e5ccd67a4fb04038c380237a0d96829cb157913"}, + {file = "mypy-1.9.0-cp312-cp312-win_amd64.whl", hash = "sha256:fe28657de3bfec596bbeef01cb219833ad9d38dd5393fc649f4b366840baefe6"}, + {file = "mypy-1.9.0-py3-none-any.whl", hash = "sha256:a260627a570559181a9ea5de61ac6297aa5af202f06fd7ab093ce74e7181e43e"}, + {file = "mypy-1.9.0.tar.gz", hash = "sha256:3cc5da0127e6a478cddd906068496a97a7618a21ce9b54bde5bf7e539c7af974"}, ] [[package]] @@ -115,73 +193,141 @@ name = "mypy-extensions" version = "1.0.0" requires_python = ">=3.5" summary = "Type system extensions for programs checked with the mypy type checker." +files = [ + {file = "mypy_extensions-1.0.0-py3-none-any.whl", hash = "sha256:4392f6c0eb8a5668a69e23d168ffa70f0be9ccfd32b5cc2d26a34ae5b844552d"}, + {file = "mypy_extensions-1.0.0.tar.gz", hash = "sha256:75dbf8955dc00442a438fc4d0666508a9a97b6bd41aa2f0ffe9d2f2725af0782"}, +] [[package]] name = "packaging" -version = "23.1" +version = "24.0" requires_python = ">=3.7" summary = "Core utilities for Python packages" +files = [ + {file = "packaging-24.0-py3-none-any.whl", hash = "sha256:2ddfb553fdf02fb784c234c7ba6ccc288296ceabec964ad2eae3777778130bc5"}, + {file = "packaging-24.0.tar.gz", hash = "sha256:eb82c5e3e56209074766e6885bb04b8c38a0c015d0a30036ebe7ece34c9989e9"}, +] [[package]] name = "pathspec" -version = "0.11.1" -requires_python = ">=3.7" +version = "0.12.1" +requires_python = ">=3.8" summary = "Utility library for gitignore style pattern matching of file paths." +files = [ + {file = "pathspec-0.12.1-py3-none-any.whl", hash = "sha256:a0d503e138a4c123b27490a4f7beda6a01c6f288df0e4a8b79c7eb0dc7b4cc08"}, + {file = "pathspec-0.12.1.tar.gz", hash = "sha256:a482d51503a1ab33b1c67a6c3813a26953dbdc71c31dacaef9a838c4e29f5712"}, +] [[package]] name = "platformdirs" -version = "3.6.0" -requires_python = ">=3.7" +version = "4.2.0" +requires_python = ">=3.8" summary = "A small Python package for determining appropriate platform-specific dirs, e.g. a \"user data dir\"." +files = [ + {file = "platformdirs-4.2.0-py3-none-any.whl", hash = "sha256:0614df2a2f37e1a662acbd8e2b25b92ccf8632929bc6d43467e17fe89c75e068"}, + {file = "platformdirs-4.2.0.tar.gz", hash = "sha256:ef0cc731df711022c174543cb70a9b5bd22e5a9337c8624ef2c2ceb8ddad8768"}, +] [[package]] name = "pluggy" -version = "1.0.0" -requires_python = ">=3.6" +version = "1.4.0" +requires_python = ">=3.8" summary = "plugin and hook calling mechanisms for python" +files = [ + {file = "pluggy-1.4.0-py3-none-any.whl", hash = "sha256:7db9f7b503d67d1c5b95f59773ebb58a8c1c288129a88665838012cfb07b8981"}, + {file = "pluggy-1.4.0.tar.gz", hash = "sha256:8c85c2876142a764e5b7548e7d9a0e0ddb46f5185161049a79b7e974454223be"}, +] [[package]] name = "pydantic" -version = "2.0b3" -requires_python = ">=3.7" +version = "2.6.4" +requires_python = ">=3.8" summary = "Data validation using Python type hints" dependencies = [ "annotated-types>=0.4.0", - "pydantic-core==0.39.0", + "pydantic-core==2.16.3", "typing-extensions>=4.6.1", ] +files = [ + {file = "pydantic-2.6.4-py3-none-any.whl", hash = "sha256:cc46fce86607580867bdc3361ad462bab9c222ef042d3da86f2fb333e1d916c5"}, + {file = "pydantic-2.6.4.tar.gz", hash = "sha256:b1704e0847db01817624a6b86766967f552dd9dbf3afba4004409f908dcc84e6"}, +] [[package]] name = "pydantic-core" -version = "0.39.0" -requires_python = ">=3.7" +version = "2.16.3" +requires_python = ">=3.8" summary = "" +dependencies = [ + "typing-extensions!=4.7.0,>=4.6.0", +] +files = [ + {file = "pydantic_core-2.16.3-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:0f56ae86b60ea987ae8bcd6654a887238fd53d1384f9b222ac457070b7ac4cff"}, + {file = "pydantic_core-2.16.3-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:c9bd22a2a639e26171068f8ebb5400ce2c1bc7d17959f60a3b753ae13c632975"}, + {file = "pydantic_core-2.16.3-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4204e773b4b408062960e65468d5346bdfe139247ee5f1ca2a378983e11388a2"}, + {file = "pydantic_core-2.16.3-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:f651dd19363c632f4abe3480a7c87a9773be27cfe1341aef06e8759599454120"}, + {file = "pydantic_core-2.16.3-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:aaf09e615a0bf98d406657e0008e4a8701b11481840be7d31755dc9f97c44053"}, + {file = "pydantic_core-2.16.3-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:8e47755d8152c1ab5b55928ab422a76e2e7b22b5ed8e90a7d584268dd49e9c6b"}, + {file = "pydantic_core-2.16.3-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:500960cb3a0543a724a81ba859da816e8cf01b0e6aaeedf2c3775d12ee49cade"}, + {file = "pydantic_core-2.16.3-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:cf6204fe865da605285c34cf1172879d0314ff267b1c35ff59de7154f35fdc2e"}, + {file = "pydantic_core-2.16.3-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:d33dd21f572545649f90c38c227cc8631268ba25c460b5569abebdd0ec5974ca"}, + {file = "pydantic_core-2.16.3-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:49d5d58abd4b83fb8ce763be7794d09b2f50f10aa65c0f0c1696c677edeb7cbf"}, + {file = "pydantic_core-2.16.3-cp312-none-win32.whl", hash = "sha256:f53aace168a2a10582e570b7736cc5bef12cae9cf21775e3eafac597e8551fbe"}, + {file = "pydantic_core-2.16.3-cp312-none-win_amd64.whl", hash = "sha256:0d32576b1de5a30d9a97f300cc6a3f4694c428d956adbc7e6e2f9cad279e45ed"}, + {file = "pydantic_core-2.16.3-cp312-none-win_arm64.whl", hash = "sha256:ec08be75bb268473677edb83ba71e7e74b43c008e4a7b1907c6d57e940bf34b6"}, + {file = "pydantic_core-2.16.3-pp310-pypy310_pp73-macosx_10_12_x86_64.whl", hash = "sha256:36fa178aacbc277bc6b62a2c3da95226520da4f4e9e206fdf076484363895d2c"}, + {file = "pydantic_core-2.16.3-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:dcca5d2bf65c6fb591fff92da03f94cd4f315972f97c21975398bd4bd046854a"}, + {file = "pydantic_core-2.16.3-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2a72fb9963cba4cd5793854fd12f4cfee731e86df140f59ff52a49b3552db241"}, + {file = "pydantic_core-2.16.3-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b60cc1a081f80a2105a59385b92d82278b15d80ebb3adb200542ae165cd7d183"}, + {file = "pydantic_core-2.16.3-pp310-pypy310_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:cbcc558401de90a746d02ef330c528f2e668c83350f045833543cd57ecead1ad"}, + {file = "pydantic_core-2.16.3-pp310-pypy310_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:fee427241c2d9fb7192b658190f9f5fd6dfe41e02f3c1489d2ec1e6a5ab1e04a"}, + {file = "pydantic_core-2.16.3-pp310-pypy310_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:f4cb85f693044e0f71f394ff76c98ddc1bc0953e48c061725e540396d5c8a2e1"}, + {file = "pydantic_core-2.16.3-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:b29eeb887aa931c2fcef5aa515d9d176d25006794610c264ddc114c053bf96fe"}, + {file = "pydantic_core-2.16.3-pp39-pypy39_pp73-macosx_10_12_x86_64.whl", hash = "sha256:a425479ee40ff021f8216c9d07a6a3b54b31c8267c6e17aa88b70d7ebd0e5e5b"}, + {file = "pydantic_core-2.16.3-pp39-pypy39_pp73-macosx_11_0_arm64.whl", hash = "sha256:5c5cbc703168d1b7a838668998308018a2718c2130595e8e190220238addc96f"}, + {file = "pydantic_core-2.16.3-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:99b6add4c0b39a513d323d3b93bc173dac663c27b99860dd5bf491b240d26137"}, + {file = "pydantic_core-2.16.3-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:75f76ee558751746d6a38f89d60b6228fa174e5172d143886af0f85aa306fd89"}, + {file = "pydantic_core-2.16.3-pp39-pypy39_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:00ee1c97b5364b84cb0bd82e9bbf645d5e2871fb8c58059d158412fee2d33d8a"}, + {file = "pydantic_core-2.16.3-pp39-pypy39_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:287073c66748f624be4cef893ef9174e3eb88fe0b8a78dc22e88eca4bc357ca6"}, + {file = "pydantic_core-2.16.3-pp39-pypy39_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:ed25e1835c00a332cb10c683cd39da96a719ab1dfc08427d476bce41b92531fc"}, + {file = "pydantic_core-2.16.3-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:86b3d0033580bd6bbe07590152007275bd7af95f98eaa5bd36f3da219dcd93da"}, + {file = "pydantic_core-2.16.3.tar.gz", hash = "sha256:1cac689f80a3abab2d3c0048b29eea5751114054f032a941a32de4c852c59cad"}, +] [[package]] name = "pylint" -version = "2.17.4" -requires_python = ">=3.7.2" +version = "3.1.0" +requires_python = ">=3.8.0" summary = "python code static checker" dependencies = [ - "astroid<=2.17.0-dev0,>=2.15.4", + "astroid<=3.2.0-dev0,>=3.1.0", "colorama>=0.4.5; sys_platform == \"win32\"", "dill>=0.3.6; python_version >= \"3.11\"", - "isort<6,>=4.2.5", + "dill>=0.3.7; python_version >= \"3.12\"", + "isort!=5.13.0,<6,>=4.2.5", "mccabe<0.8,>=0.6", "platformdirs>=2.2.0", "tomlkit>=0.10.1", ] +files = [ + {file = "pylint-3.1.0-py3-none-any.whl", hash = "sha256:507a5b60953874766d8a366e8e8c7af63e058b26345cfcb5f91f89d987fd6b74"}, + {file = "pylint-3.1.0.tar.gz", hash = "sha256:6a69beb4a6f63debebaab0a3477ecd0f559aa726af4954fc948c51f7a2549e23"}, +] [[package]] name = "pytest" -version = "7.3.2" -requires_python = ">=3.7" +version = "8.1.1" +requires_python = ">=3.8" summary = "pytest: simple powerful testing with Python" dependencies = [ "colorama; sys_platform == \"win32\"", "iniconfig", "packaging", - "pluggy<2.0,>=0.12", + "pluggy<2.0,>=1.4", +] +files = [ + {file = "pytest-8.1.1-py3-none-any.whl", hash = "sha256:2a8386cfc11fa9d2c50ee7b2a57e7d898ef90470a7a34c4b949ff59662bb78b7"}, + {file = "pytest-8.1.1.tar.gz", hash = "sha256:ac978141a75948948817d360297b7aae0fcb9d6ff6bc9ec6d514b85d5a65c044"}, ] [[package]] @@ -192,6 +338,10 @@ dependencies = [ "click>=6.0", "pytest>=5.0", ] +files = [ + {file = "pytest_click-1.1.0-py3-none-any.whl", hash = "sha256:eade4742c2f02c345e78a32534a43e8db04acf98d415090539dacc880b7cd0e9"}, + {file = "pytest_click-1.1.0.tar.gz", hash = "sha256:fdd9f6721f877dda021e7c5dc73e70aecd37e5ed23ec6820f8a7b3fd7b4f8d30"}, +] [[package]] name = "pytest-cov" @@ -202,455 +352,81 @@ dependencies = [ "coverage[toml]>=5.2.1", "pytest>=4.6", ] +files = [ + {file = "pytest-cov-4.1.0.tar.gz", hash = "sha256:3904b13dfbfec47f003b8e77fd5b589cd11904a21ddf1ab38a64f204d6a10ef6"}, + {file = "pytest_cov-4.1.0-py3-none-any.whl", hash = "sha256:6ba70b9e97e69fcc3fb45bfeab2d0a138fb65c4d0d6a41ef33983ad114be8c3a"}, +] [[package]] name = "pytest-cppython" -version = "0.3.1.dev45" -requires_python = ">=3.11" +version = "0.3.1.dev49" +requires_python = ">=3.12" summary = "A pytest plugin that imports CPPython testing types" dependencies = [ "cppython-core>=0.4.1.dev13", - "pydantic>=2.0a4", + "pydantic>=2.6.3", + "pytest-mock>=3.12.0", + "pytest-synodic>=0.0.0", + "pytest>=8.0.0", +] +files = [ + {file = "pytest_cppython-0.3.1.dev49-py3-none-any.whl", hash = "sha256:99e61318c4af078d86529b8f7e16da24de8b31ea1eb2df4cf99a9c667ad88000"}, + {file = "pytest_cppython-0.3.1.dev49.tar.gz", hash = "sha256:d1a685c6cbfedcf9c6c17516c201026c7449918978b08afa935db38d0df28707"}, ] [[package]] name = "pytest-mock" -version = "3.11.1" -requires_python = ">=3.7" +version = "3.12.0" +requires_python = ">=3.8" summary = "Thin-wrapper around the mock package for easier use with pytest" dependencies = [ "pytest>=5.0", ] +files = [ + {file = "pytest-mock-3.12.0.tar.gz", hash = "sha256:31a40f038c22cad32287bb43932054451ff5583ff094bca6f675df2f8bc1a6e9"}, + {file = "pytest_mock-3.12.0-py3-none-any.whl", hash = "sha256:0972719a7263072da3a21c7f4773069bcc7486027d7e8e1f81d98a47e701bc4f"}, +] + +[[package]] +name = "pytest-synodic" +version = "0.1.1.dev6" +requires_python = ">=3.12" +summary = "Synodic Pytest utilities" +dependencies = [ + "pytest>=8.0.2", + "synodic-utilities>=0.1.1.dev5", +] +files = [ + {file = "pytest_synodic-0.1.1.dev6-py3-none-any.whl", hash = "sha256:9c4e0a450379c54bcb4d2f3875fe8db1ffe3c58ea90ce5a41df5e79fe3a01d46"}, + {file = "pytest_synodic-0.1.1.dev6.tar.gz", hash = "sha256:16739c0021a778dc69ea5d57b264118e68ef7cc5429312a1a389bd5c1a784239"}, +] + +[[package]] +name = "synodic-utilities" +version = "0.1.1.dev8" +requires_python = ">=3.12" +summary = "Synodic python utility library" +files = [ + {file = "synodic_utilities-0.1.1.dev8-py3-none-any.whl", hash = "sha256:3034f10f780629ef5eea2078fcf82875f7aedee3b0e3fe2c04759bac4a55662a"}, + {file = "synodic_utilities-0.1.1.dev8.tar.gz", hash = "sha256:e25a9dbd0cdd77bd555705ef3d13489591d43cd8bd93ac211cf9bead4e476c68"}, +] [[package]] name = "tomlkit" -version = "0.11.8" +version = "0.12.4" requires_python = ">=3.7" summary = "Style preserving TOML library" +files = [ + {file = "tomlkit-0.12.4-py3-none-any.whl", hash = "sha256:5cd82d48a3dd89dee1f9d64420aa20ae65cfbd00668d6f094d7578a78efbb77b"}, + {file = "tomlkit-0.12.4.tar.gz", hash = "sha256:7ca1cfc12232806517a8515047ba66a19369e71edf2439d0f5824f91032b6cc3"}, +] [[package]] name = "typing-extensions" -version = "4.6.3" -requires_python = ">=3.7" -summary = "Backported and Experimental Type Hints for Python 3.7+" - -[[package]] -name = "wrapt" -version = "1.15.0" -requires_python = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,>=2.7" -summary = "Module for decorators, wrappers and monkey patching." - -[metadata] -lock_version = "4.2" -cross_platform = true -groups = ["default", "lint", "test"] -content_hash = "sha256:773ab8aa79c3209ee9a05956dc5808f351d35914c4c996301b024b71ce69f2a9" - -[metadata.files] -"annotated-types 0.5.0" = [ - {url = "https://files.pythonhosted.org/packages/42/97/41ccb6acac36fdd13592a686a21b311418f786f519e5794b957afbcea938/annotated_types-0.5.0.tar.gz", hash = "sha256:47cdc3490d9ac1506ce92c7aaa76c579dc3509ff11e098fc867e5130ab7be802"}, - {url = "https://files.pythonhosted.org/packages/d8/f0/a2ee543a96cc624c35a9086f39b1ed2aa403c6d355dfe47a11ee5c64a164/annotated_types-0.5.0-py3-none-any.whl", hash = "sha256:58da39888f92c276ad970249761ebea80ba544b77acddaa1a4d6cf78287d45fd"}, -] -"astroid 2.15.5" = [ - {url = "https://files.pythonhosted.org/packages/6f/51/868921f570a1ad2ddefd04594e1f95aacd6208c85f6b0ab75401acf65cfb/astroid-2.15.5-py3-none-any.whl", hash = "sha256:078e5212f9885fa85fbb0cf0101978a336190aadea6e13305409d099f71b2324"}, - {url = "https://files.pythonhosted.org/packages/e9/8d/338debdfc65383c2e1a0eaf336810ced0e8bc58a3f64d8f957cfb7b19e84/astroid-2.15.5.tar.gz", hash = "sha256:1039262575027b441137ab4a62a793a9b43defb42c32d5670f38686207cd780f"}, -] -"black 23.3.0" = [ - {url = "https://files.pythonhosted.org/packages/06/1e/273d610249f0335afb1ddb03664a03223f4826e3d1a95170a0142cb19fb4/black-23.3.0-cp39-cp39-win_amd64.whl", hash = "sha256:6b39abdfb402002b8a7d030ccc85cf5afff64ee90fa4c5aebc531e3ad0175ddb"}, - {url = "https://files.pythonhosted.org/packages/12/4b/99c71d1cf1353edd5aff2700b8960f92e9b805c9dab72639b67dbb449d3a/black-23.3.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:562bd3a70495facf56814293149e51aa1be9931567474993c7942ff7d3533961"}, - {url = "https://files.pythonhosted.org/packages/13/0a/ed8b66c299e896780e4528eed4018f5b084da3b9ba4ee48328550567d866/black-23.3.0-cp38-cp38-macosx_10_16_x86_64.whl", hash = "sha256:064101748afa12ad2291c2b91c960be28b817c0c7eaa35bec09cc63aa56493c5"}, - {url = "https://files.pythonhosted.org/packages/13/25/cfa06788d0a936f2445af88f13604b5bcd5c9d050db618c718e6ebe66f74/black-23.3.0-cp39-cp39-macosx_10_16_arm64.whl", hash = "sha256:3238f2aacf827d18d26db07524e44741233ae09a584273aa059066d644ca7b30"}, - {url = "https://files.pythonhosted.org/packages/21/14/d5a2bec5fb15f9118baab7123d344646fac0b1c6939d51c2b05259cd2d9c/black-23.3.0-cp38-cp38-macosx_10_16_universal2.whl", hash = "sha256:714290490c18fb0126baa0fca0a54ee795f7502b44177e1ce7624ba1c00f2331"}, - {url = "https://files.pythonhosted.org/packages/24/eb/2d2d2c27cb64cfd073896f62a952a802cd83cf943a692a2f278525b57ca9/black-23.3.0-cp37-cp37m-macosx_10_16_x86_64.whl", hash = "sha256:1d06691f1eb8de91cd1b322f21e3bfc9efe0c7ca1f0e1eb1db44ea367dff656b"}, - {url = "https://files.pythonhosted.org/packages/27/70/07aab2623cfd3789786f17e051487a41d5657258c7b1ef8f780512ffea9c/black-23.3.0-cp310-cp310-macosx_10_16_universal2.whl", hash = "sha256:67de8d0c209eb5b330cce2469503de11bca4085880d62f1628bd9972cc3366b9"}, - {url = "https://files.pythonhosted.org/packages/29/b1/b584fc863c155653963039664a592b3327b002405043b7e761b9b0212337/black-23.3.0-cp310-cp310-macosx_10_16_x86_64.whl", hash = "sha256:7c3eb7cea23904399866c55826b31c1f55bbcd3890ce22ff70466b907b6775c2"}, - {url = "https://files.pythonhosted.org/packages/3c/d7/85f3d79f9e543402de2244c4d117793f262149e404ea0168841613c33e07/black-23.3.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3a150542a204124ed00683f0db1f5cf1c2aaaa9cc3495b7a3b5976fb136090ab"}, - {url = "https://files.pythonhosted.org/packages/3f/0d/81dd4194ce7057c199d4f28e4c2a885082d9d929e7a55c514b23784f7787/black-23.3.0-cp311-cp311-win_amd64.whl", hash = "sha256:11c410f71b876f961d1de77b9699ad19f939094c3a677323f43d7a29855fe326"}, - {url = "https://files.pythonhosted.org/packages/49/36/15d2122f90ff1cd70f06892ebda777b650218cf84b56b5916a993dc1359a/black-23.3.0-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:50cb33cac881766a5cd9913e10ff75b1e8eb71babf4c7104f2e9c52da1fb7de2"}, - {url = "https://files.pythonhosted.org/packages/49/d7/f3b7da6c772800f5375aeb050a3dcf682f0bbeb41d313c9c2820d0156e4e/black-23.3.0-cp39-cp39-macosx_10_16_x86_64.whl", hash = "sha256:92c543f6854c28a3c7f39f4d9b7694f9a6eb9d3c5e2ece488c327b6e7ea9b266"}, - {url = "https://files.pythonhosted.org/packages/69/49/7e1f0cf585b0d607aad3f971f95982cc4208fc77f92363d632d23021ee57/black-23.3.0-cp311-cp311-macosx_10_16_x86_64.whl", hash = "sha256:a6f6886c9869d4daae2d1715ce34a19bbc4b95006d20ed785ca00fa03cba312d"}, - {url = "https://files.pythonhosted.org/packages/6d/b4/0f13ab7f5e364795ff82b76b0f9a4c9c50afda6f1e2feeb8b03fdd7ec57d/black-23.3.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:32daa9783106c28815d05b724238e30718f34155653d4d6e125dc7daec8e260c"}, - {url = "https://files.pythonhosted.org/packages/ad/e7/4642b7f462381799393fbad894ba4b32db00870a797f0616c197b07129a9/black-23.3.0-py3-none-any.whl", hash = "sha256:ec751418022185b0c1bb7d7736e6933d40bbb14c14a0abcf9123d1b159f98dd4"}, - {url = "https://files.pythonhosted.org/packages/c0/53/42e312c17cfda5c8fc4b6b396a508218807a3fcbb963b318e49d3ddd11d5/black-23.3.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6f3c333ea1dd6771b2d3777482429864f8e258899f6ff05826c3a4fcc5ce3f70"}, - {url = "https://files.pythonhosted.org/packages/ca/44/eb41edd3f558a6139f09eee052dead4a7a464e563b822ddf236f5a8ee286/black-23.3.0-cp37-cp37m-win_amd64.whl", hash = "sha256:e114420bf26b90d4b9daa597351337762b63039752bdf72bf361364c1aa05925"}, - {url = "https://files.pythonhosted.org/packages/ce/f4/2b0c6ac9e1f8584296747f66dd511898b4ebd51d6510dba118279bff53b6/black-23.3.0-cp38-cp38-macosx_10_16_arm64.whl", hash = "sha256:48f9d345675bb7fbc3dd85821b12487e1b9a75242028adad0333ce36ed2a6d27"}, - {url = "https://files.pythonhosted.org/packages/d1/6e/5810b6992ed70403124c67e8b3f62858a32b35405177553f1a78ed6b6e31/black-23.3.0-cp38-cp38-win_amd64.whl", hash = "sha256:e198cf27888ad6f4ff331ca1c48ffc038848ea9f031a3b40ba36aced7e22f2c8"}, - {url = "https://files.pythonhosted.org/packages/d6/36/66370f5017b100225ec4950a60caeef60201a10080da57ddb24124453fba/black-23.3.0.tar.gz", hash = "sha256:1c7b8d606e728a41ea1ccbd7264677e494e87cf630e399262ced92d4a8dac940"}, - {url = "https://files.pythonhosted.org/packages/d7/6f/d3832960a3b646b333b7f0d80d336a3c123012e9d9d5dba4a622b2b6181d/black-23.3.0-cp311-cp311-macosx_10_16_arm64.whl", hash = "sha256:a8a968125d0a6a404842fa1bf0b349a568634f856aa08ffaff40ae0dfa52e7c6"}, - {url = "https://files.pythonhosted.org/packages/db/f4/7908f71cc71da08df1317a3619f002cbf91927fb5d3ffc7723905a2113f7/black-23.3.0-cp310-cp310-macosx_10_16_arm64.whl", hash = "sha256:0945e13506be58bf7db93ee5853243eb368ace1c08a24c65ce108986eac65915"}, - {url = "https://files.pythonhosted.org/packages/de/b4/76f152c5eb0be5471c22cd18380d31d188930377a1a57969073b89d6615d/black-23.3.0-cp310-cp310-win_amd64.whl", hash = "sha256:35d1381d7a22cc5b2be2f72c7dfdae4072a3336060635718cc7e1ede24221d6c"}, - {url = "https://files.pythonhosted.org/packages/eb/a5/17b40bfd9b607b69fa726b0b3a473d14b093dcd5191ea1a1dd664eccfee3/black-23.3.0-cp311-cp311-macosx_10_16_universal2.whl", hash = "sha256:c7ab5790333c448903c4b721b59c0d80b11fe5e9803d8703e84dcb8da56fec1b"}, - {url = "https://files.pythonhosted.org/packages/fd/5b/fc2d7922c1a6bb49458d424b5be71d251f2d0dc97be9534e35d171bdc653/black-23.3.0-cp39-cp39-macosx_10_16_universal2.whl", hash = "sha256:f0bd2f4a58d6666500542b26354978218a9babcdc972722f4bf90779524515f3"}, -] -"click 8.1.3" = [ - {url = "https://files.pythonhosted.org/packages/59/87/84326af34517fca8c58418d148f2403df25303e02736832403587318e9e8/click-8.1.3.tar.gz", hash = "sha256:7682dc8afb30297001674575ea00d1814d808d6a36af415a82bd481d37ba7b8e"}, - {url = "https://files.pythonhosted.org/packages/c2/f1/df59e28c642d583f7dacffb1e0965d0e00b218e0186d7858ac5233dce840/click-8.1.3-py3-none-any.whl", hash = "sha256:bb4d8133cb15a609f44e8213d9b391b0809795062913b383c62be0ee95b1db48"}, -] -"colorama 0.4.6" = [ - {url = "https://files.pythonhosted.org/packages/d1/d6/3965ed04c63042e047cb6a3e6ed1a63a35087b6a609aa3a15ed8ac56c221/colorama-0.4.6-py2.py3-none-any.whl", hash = "sha256:4f1d9991f5acc0ca119f9d443620b77f9d6b33703e51011c16baf57afb285fc6"}, - {url = "https://files.pythonhosted.org/packages/d8/53/6f443c9a4a8358a93a6792e2acffb9d9d5cb0a5cfd8802644b7b1c9a02e4/colorama-0.4.6.tar.gz", hash = "sha256:08695f5cb7ed6e0531a20572697297273c47b8cae5a63ffc6d6ed5c201be6e44"}, -] -"coverage 7.2.7" = [ - {url = "https://files.pythonhosted.org/packages/01/24/be01e62a7bce89bcffe04729c540382caa5a06bee45ae42136c93e2499f5/coverage-7.2.7-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:d39b5b4f2a66ccae8b7263ac3c8170994b65266797fb96cbbfd3fb5b23921db8"}, - {url = "https://files.pythonhosted.org/packages/03/ec/6f30b4e0c96ce03b0e64aec46b4af2a8c49b70d1b5d0d69577add757b946/coverage-7.2.7-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:0a5f9e1dbd7fbe30196578ca36f3fba75376fb99888c395c5880b355e2875f8a"}, - {url = "https://files.pythonhosted.org/packages/04/d6/8cba3bf346e8b1a4fb3f084df7d8cea25a6b6c56aaca1f2e53829be17e9e/coverage-7.2.7-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:b46517c02ccd08092f4fa99f24c3b83d8f92f739b4657b0f146246a0ca6a831d"}, - {url = "https://files.pythonhosted.org/packages/04/fa/43b55101f75a5e9115259e8be70ff9279921cb6b17f04c34a5702ff9b1f7/coverage-7.2.7-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:48c19d2159d433ccc99e729ceae7d5293fbffa0bdb94952d3579983d1c8c9d97"}, - {url = "https://files.pythonhosted.org/packages/0d/31/340428c238eb506feb96d4fb5c9ea614db1149517f22cc7ab8c6035ef6d9/coverage-7.2.7-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:b7aa5f8a41217360e600da646004f878250a0d6738bcdc11a0a39928d7dc2050"}, - {url = "https://files.pythonhosted.org/packages/0e/bc/7e3a31534fabb043269f14fb64e2bb2733f85d4cf39e5bbc71357c57553a/coverage-7.2.7-cp37-cp37m-win_amd64.whl", hash = "sha256:b1c546aca0ca4d028901d825015dc8e4d56aac4b541877690eb76490f1dc8ed0"}, - {url = "https://files.pythonhosted.org/packages/15/81/b108a60bc758b448c151e5abceed027ed77a9523ecbc6b8a390938301841/coverage-7.2.7-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:171717c7cb6b453aebac9a2ef603699da237f341b38eebfee9be75d27dc38e01"}, - {url = "https://files.pythonhosted.org/packages/1f/e9/d6730247d8dec2a3dddc520ebe11e2e860f0f98cee3639e23de6cf920255/coverage-7.2.7-cp310-cp310-win_amd64.whl", hash = "sha256:f75f7168ab25dd93110c8a8117a22450c19976afbc44234cbf71481094c1b850"}, - {url = "https://files.pythonhosted.org/packages/22/c1/2f6c1b6f01a0996c9e067a9c780e1824351dbe17faae54388a4477e6d86f/coverage-7.2.7-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:419bfd2caae268623dd469eff96d510a920c90928b60f2073d79f8fe2bbc5959"}, - {url = "https://files.pythonhosted.org/packages/24/df/6765898d54ea20e3197a26d26bb65b084deefadd77ce7de946b9c96dfdc5/coverage-7.2.7-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a342242fe22407f3c17f4b499276a02b01e80f861f1682ad1d95b04018e0c0d4"}, - {url = "https://files.pythonhosted.org/packages/28/d7/9a8de57d87f4bbc6f9a6a5ded1eaac88a89bf71369bb935dac3c0cf2893e/coverage-7.2.7-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:3d376df58cc111dc8e21e3b6e24606b5bb5dee6024f46a5abca99124b2229ef5"}, - {url = "https://files.pythonhosted.org/packages/29/8f/4fad1c2ba98104425009efd7eaa19af9a7c797e92d40cd2ec026fa1f58cb/coverage-7.2.7-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:d62a5c7dad11015c66fbb9d881bc4caa5b12f16292f857842d9d1871595f4495"}, - {url = "https://files.pythonhosted.org/packages/2b/86/3dbf9be43f8bf6a5ca28790a713e18902b2d884bc5fa9512823a81dff601/coverage-7.2.7-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:ebba1cd308ef115925421d3e6a586e655ca5a77b5bf41e02eb0e4562a111f2d1"}, - {url = "https://files.pythonhosted.org/packages/3d/80/7060a445e1d2c9744b683dc935248613355657809d6c6b2716cdf4ca4766/coverage-7.2.7-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:6d040ef7c9859bb11dfeb056ff5b3872436e3b5e401817d87a31e1750b9ae2fb"}, - {url = "https://files.pythonhosted.org/packages/44/55/49f65ccdd4dfd6d5528e966b28c37caec64170c725af32ab312889d2f857/coverage-7.2.7-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8d13c64ee2d33eccf7437961b6ea7ad8673e2be040b4f7fd4fd4d4d28d9ccb1e"}, - {url = "https://files.pythonhosted.org/packages/45/8b/421f30467e69ac0e414214856798d4bc32da1336df745e49e49ae5c1e2a8/coverage-7.2.7.tar.gz", hash = "sha256:924d94291ca674905fe9481f12294eb11f2d3d3fd1adb20314ba89e94f44ed59"}, - {url = "https://files.pythonhosted.org/packages/4a/fb/78986d3022e5ccf2d4370bc43a5fef8374f092b3c21d32499dee8e30b7b6/coverage-7.2.7-cp38-cp38-win32.whl", hash = "sha256:d2c2db7fd82e9b72937969bceac4d6ca89660db0a0967614ce2481e81a0b771e"}, - {url = "https://files.pythonhosted.org/packages/61/90/c76b9462f39897ebd8714faf21bc985b65c4e1ea6dff428ea9dc711ed0dd/coverage-7.2.7-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:49969a9f7ffa086d973d91cec8d2e31080436ef0fb4a359cae927e742abfaaa6"}, - {url = "https://files.pythonhosted.org/packages/61/af/5964b8d7d9a5c767785644d9a5a63cacba9a9c45cc42ba06d25895ec87be/coverage-7.2.7-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:201e7389591af40950a6480bd9edfa8ed04346ff80002cec1a66cac4549c1ad7"}, - {url = "https://files.pythonhosted.org/packages/66/2e/c99fe1f6396d93551aa352c75410686e726cd4ea104479b9af1af22367ce/coverage-7.2.7-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:81c13a1fc7468c40f13420732805a4c38a105d89848b7c10af65a90beff25250"}, - {url = "https://files.pythonhosted.org/packages/67/a2/6fa66a50e6e894286d79a3564f42bd54a9bd27049dc0a63b26d9924f0aa3/coverage-7.2.7-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a895fcc7b15c3fc72beb43cdcbdf0ddb7d2ebc959edac9cef390b0d14f39f8a9"}, - {url = "https://files.pythonhosted.org/packages/67/d7/cd8fe689b5743fffac516597a1222834c42b80686b99f5b44ef43ccc2a43/coverage-7.2.7-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:5baa06420f837184130752b7c5ea0808762083bf3487b5038d68b012e5937dbe"}, - {url = "https://files.pythonhosted.org/packages/67/fb/b3b1d7887e1ea25a9608b0776e480e4bbc303ca95a31fd585555ec4fff5a/coverage-7.2.7-pp37.pp38.pp39-none-any.whl", hash = "sha256:b7b4c971f05e6ae490fef852c218b0e79d4e52f79ef0c8475566584a8fb3e01d"}, - {url = "https://files.pythonhosted.org/packages/68/5f/d2bd0f02aa3c3e0311986e625ccf97fdc511b52f4f1a063e4f37b624772f/coverage-7.2.7-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:0e1f928eaf5469c11e886fe0885ad2bf1ec606434e79842a879277895a50942a"}, - {url = "https://files.pythonhosted.org/packages/69/8c/26a95b08059db1cbb01e4b0e6d40f2e9debb628c6ca86b78f625ceaf9bab/coverage-7.2.7-cp312-cp312-win32.whl", hash = "sha256:8de8bb0e5ad103888d65abef8bca41ab93721647590a3f740100cd65c3b00511"}, - {url = "https://files.pythonhosted.org/packages/6e/ea/4a252dc77ca0605b23d477729d139915e753ee89e4c9507630e12ad64a80/coverage-7.2.7-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:a3d33a6b3eae87ceaefa91ffdc130b5e8536182cd6dfdbfc1aa56b46ff8c86de"}, - {url = "https://files.pythonhosted.org/packages/7a/05/084864fa4bbf8106f44fb72a56e67e0cd372d3bf9d893be818338c81af5d/coverage-7.2.7-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d22656368f0e6189e24722214ed8d66b8022db19d182927b9a248a2a8a2f67eb"}, - {url = "https://files.pythonhosted.org/packages/7b/e3/f552d5871943f747165b92a924055c5d6daa164ae659a13f9018e22f3990/coverage-7.2.7-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1e9d683426464e4a252bf70c3498756055016f99ddaec3774bf368e76bbe02b6"}, - {url = "https://files.pythonhosted.org/packages/80/d7/67937c80b8fd4c909fdac29292bc8b35d9505312cff6bcab41c53c5b1df6/coverage-7.2.7-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:58c2ccc2f00ecb51253cbe5d8d7122a34590fac9646a960d1430d5b15321d95f"}, - {url = "https://files.pythonhosted.org/packages/88/8b/b0d9fe727acae907fa7f1c8194ccb6fe9d02e1c3e9001ecf74c741f86110/coverage-7.2.7-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:b29019c76039dc3c0fd815c41392a044ce555d9bcdd38b0fb60fb4cd8e475ba9"}, - {url = "https://files.pythonhosted.org/packages/88/da/495944ebf0ad246235a6bd523810d9f81981f9b81c6059ba1f56e943abe0/coverage-7.2.7-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:537891ae8ce59ef63d0123f7ac9e2ae0fc8b72c7ccbe5296fec45fd68967b6c9"}, - {url = "https://files.pythonhosted.org/packages/8c/95/16eed713202406ca0a37f8ac259bbf144c9d24f9b8097a8e6ead61da2dbb/coverage-7.2.7-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:fdec9e8cbf13a5bf63290fc6013d216a4c7232efb51548594ca3631a7f13c3a3"}, - {url = "https://files.pythonhosted.org/packages/8d/d6/53e999ec1bf7498ca4bc5f3b8227eb61db39068d2de5dcc359dec5601b5a/coverage-7.2.7-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:2aee274c46590717f38ae5e4650988d1af340fe06167546cc32fe2f58ed05b02"}, - {url = "https://files.pythonhosted.org/packages/8f/a8/12cc7b261f3082cc299ab61f677f7e48d93e35ca5c3c2f7241ed5525ccea/coverage-7.2.7-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:afb17f84d56068a7c29f5fa37bfd38d5aba69e3304af08ee94da8ed5b0865833"}, - {url = "https://files.pythonhosted.org/packages/91/e8/469ed808a782b9e8305a08bad8c6fa5f8e73e093bda6546c5aec68275bff/coverage-7.2.7-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:cb017fd1b2603ef59e374ba2063f593abe0fc45f2ad9abdde5b4d83bd922a353"}, - {url = "https://files.pythonhosted.org/packages/94/4e/d4e46a214ae857be3d7dc5de248ba43765f60daeb1ab077cb6c1536c7fba/coverage-7.2.7-cp310-cp310-win32.whl", hash = "sha256:ee57190f24fba796e36bb6d3aa8a8783c643d8fa9760c89f7a98ab5455fbf818"}, - {url = "https://files.pythonhosted.org/packages/9f/5c/d9760ac497c41f9c4841f5972d0edf05d50cad7814e86ee7d133ec4a0ac8/coverage-7.2.7-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:976b9c42fb2a43ebf304fa7d4a310e5f16cc99992f33eced91ef6f908bd8f33d"}, - {url = "https://files.pythonhosted.org/packages/a7/cd/3ce94ad9d407a052dc2a74fbeb1c7947f442155b28264eb467ee78dea812/coverage-7.2.7-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:63426706118b7f5cf6bb6c895dc215d8a418d5952544042c8a2d9fe87fcf09cb"}, - {url = "https://files.pythonhosted.org/packages/a9/0c/4a848ae663b47f1195abcb09a951751dd61f80b503303b9b9d768e0fd321/coverage-7.2.7-cp39-cp39-win_amd64.whl", hash = "sha256:eb393e5ebc85245347950143969b241d08b52b88a3dc39479822e073a1a8eb27"}, - {url = "https://files.pythonhosted.org/packages/b1/96/c12ed0dfd4ec587f3739f53eb677b9007853fd486ccb0e7d5512a27bab2e/coverage-7.2.7-cp311-cp311-win_amd64.whl", hash = "sha256:5b7540161790b2f28143191f5f8ec02fb132660ff175b7747b95dcb77ac26562"}, - {url = "https://files.pythonhosted.org/packages/b1/d5/a8e276bc005e42114468d4fe03e0a9555786bc51cbfe0d20827a46c1565a/coverage-7.2.7-cp39-cp39-win32.whl", hash = "sha256:7ee7d9d4822c8acc74a5e26c50604dff824710bc8de424904c0982e25c39c6cb"}, - {url = "https://files.pythonhosted.org/packages/b4/bd/1b2331e3a04f4cc9b7b332b1dd0f3a1261dfc4114f8479bebfcc2afee9e8/coverage-7.2.7-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:31563e97dae5598556600466ad9beea39fb04e0229e61c12eaa206e0aa202063"}, - {url = "https://files.pythonhosted.org/packages/b7/00/14b00a0748e9eda26e97be07a63cc911108844004687321ddcc213be956c/coverage-7.2.7-cp312-cp312-win_amd64.whl", hash = "sha256:9e31cb64d7de6b6f09702bb27c02d1904b3aebfca610c12772452c4e6c21a0d3"}, - {url = "https://files.pythonhosted.org/packages/b8/9d/926fce7e03dbfc653104c2d981c0fa71f0572a9ebd344d24c573bd6f7c4f/coverage-7.2.7-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ba90a9563ba44a72fda2e85302c3abc71c5589cea608ca16c22b9804262aaeb6"}, - {url = "https://files.pythonhosted.org/packages/ba/92/69c0722882643df4257ecc5437b83f4c17ba9e67f15dc6b77bad89b6982e/coverage-7.2.7-cp311-cp311-win32.whl", hash = "sha256:33d6d3ea29d5b3a1a632b3c4e4f4ecae24ef170b0b9ee493883f2df10039959a"}, - {url = "https://files.pythonhosted.org/packages/bb/e9/88747b40c8fb4a783b40222510ce6d66170217eb05d7f46462c36b4fa8cc/coverage-7.2.7-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:975d70ab7e3c80a3fe86001d8751f6778905ec723f5b110aed1e450da9d4b7f2"}, - {url = "https://files.pythonhosted.org/packages/c1/49/4d487e2ad5d54ed82ac1101e467e8994c09d6123c91b2a962145f3d262c2/coverage-7.2.7-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:52edc1a60c0d34afa421c9c37078817b2e67a392cab17d97283b64c5833f427f"}, - {url = "https://files.pythonhosted.org/packages/c3/1c/6b3c9c363fb1433c79128e0d692863deb761b1b78162494abb9e5c328bc0/coverage-7.2.7-cp38-cp38-win_amd64.whl", hash = "sha256:2e07b54284e381531c87f785f613b833569c14ecacdcb85d56b25c4622c16c3c"}, - {url = "https://files.pythonhosted.org/packages/c6/fa/529f55c9a1029c840bcc9109d5a15ff00478b7ff550a1ae361f8745f8ad5/coverage-7.2.7-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:06a9a2be0b5b576c3f18f1a241f0473575c4a26021b52b2a85263a00f034d51f"}, - {url = "https://files.pythonhosted.org/packages/c6/fc/be19131010930a6cf271da48202c8cc1d3f971f68c02fb2d3a78247f43dc/coverage-7.2.7-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:54b896376ab563bd38453cecb813c295cf347cf5906e8b41d340b0321a5433e5"}, - {url = "https://files.pythonhosted.org/packages/c8/e4/e6182e4697665fb594a7f4e4f27cb3a4dd00c2e3d35c5c706765de8c7866/coverage-7.2.7-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5e330fc79bd7207e46c7d7fd2bb4af2963f5f635703925543a70b99574b0fea9"}, - {url = "https://files.pythonhosted.org/packages/ca/0c/3dfeeb1006c44b911ee0ed915350db30325d01808525ae7cc8d57643a2ce/coverage-7.2.7-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:06fb182e69f33f6cd1d39a6c597294cff3143554b64b9825d1dc69d18cc2fff2"}, - {url = "https://files.pythonhosted.org/packages/d1/3a/67f5d18f911abf96857f6f7e4df37ca840e38179e2cc9ab6c0b9c3380f19/coverage-7.2.7-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e7d9405291c6928619403db1d10bd07888888ec1abcbd9748fdaa971d7d661b2"}, - {url = "https://files.pythonhosted.org/packages/d9/1d/cd467fceb62c371f9adb1d739c92a05d4e550246daa90412e711226bd320/coverage-7.2.7-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f6951407391b639504e3b3be51b7ba5f3528adbf1a8ac3302b687ecababf929e"}, - {url = "https://files.pythonhosted.org/packages/dd/ce/97c1dd6592c908425622fe7f31c017d11cf0421729b09101d4de75bcadc8/coverage-7.2.7-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:8fa03bce9bfbeeef9f3b160a8bed39a221d82308b4152b27d82d8daa7041fee5"}, - {url = "https://files.pythonhosted.org/packages/de/a3/5a98dc9e239d0dc5f243ef5053d5b1bdcaa1dee27a691dfc12befeccf878/coverage-7.2.7-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:245167dd26180ab4c91d5e1496a30be4cd721a5cf2abf52974f965f10f11419f"}, - {url = "https://files.pythonhosted.org/packages/e2/c0/73f139794c742840b9ab88e2e17fe14a3d4668a166ff95d812ac66c0829d/coverage-7.2.7-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e84606b74eb7de6ff581a7915e2dab7a28a0517fbe1c9239eb227e1354064dcd"}, - {url = "https://files.pythonhosted.org/packages/e9/40/383305500d24122dbed73e505a4d6828f8f3356d1f68ab6d32c781754b81/coverage-7.2.7-cp37-cp37m-win32.whl", hash = "sha256:61b9a528fb348373c433e8966535074b802c7a5d7f23c4f421e6c6e2f1697a6f"}, - {url = "https://files.pythonhosted.org/packages/fe/57/e4f8ad64d84ca9e759d783a052795f62a9f9111585e46068845b1cb52c2b/coverage-7.2.7-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6f48351d66575f535669306aa7d6d6f71bc43372473b54a832222803eb956fd1"}, - {url = "https://files.pythonhosted.org/packages/ff/d5/52fa1891d1802ab2e1b346d37d349cb41cdd4fd03f724ebbf94e80577687/coverage-7.2.7-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:f2f67fe12b22cd130d34d0ef79206061bfb5eda52feb6ce0dba0644e20a03cf4"}, -] -"cppython-core 0.7.0" = [ - {url = "https://files.pythonhosted.org/packages/59/9d/cc4dfc428a02f0c1e4de24e97dcb234e371a8c4769b78ffd42ba5a4cdb3f/cppython-core-0.7.0.tar.gz", hash = "sha256:e7c6194a1c4c7cfad0ee201d0130e6567e2014c518e5c96a2bfbf9a8fd6d304a"}, - {url = "https://files.pythonhosted.org/packages/9b/b2/dae29c30ceab55386f88b96ae08824b7f9871dcc54dd89fa6c898579987c/cppython_core-0.7.0-py3-none-any.whl", hash = "sha256:f95965d33373f4dbcd59764c46704cfa6cf0373384d15b9a80c5925a27155633"}, -] -"dill 0.3.6" = [ - {url = "https://files.pythonhosted.org/packages/7c/e7/364a09134e1062d4d5ff69b853a56cf61c223e0afcc6906b6832bcd51ea8/dill-0.3.6.tar.gz", hash = "sha256:e5db55f3687856d8fbdab002ed78544e1c4559a130302693d839dfe8f93f2373"}, - {url = "https://files.pythonhosted.org/packages/be/e3/a84bf2e561beed15813080d693b4b27573262433fced9c1d1fea59e60553/dill-0.3.6-py3-none-any.whl", hash = "sha256:a07ffd2351b8c678dfc4a856a3005f8067aea51d6ba6c700796a4d9e280f39f0"}, -] -"iniconfig 2.0.0" = [ - {url = "https://files.pythonhosted.org/packages/d7/4b/cbd8e699e64a6f16ca3a8220661b5f83792b3017d0f79807cb8708d33913/iniconfig-2.0.0.tar.gz", hash = "sha256:2d91e135bf72d31a410b17c16da610a82cb55f6b0477d1a902134b24a455b8b3"}, - {url = "https://files.pythonhosted.org/packages/ef/a6/62565a6e1cf69e10f5727360368e451d4b7f58beeac6173dc9db836a5b46/iniconfig-2.0.0-py3-none-any.whl", hash = "sha256:b6a85871a79d2e3b22d2d1b94ac2824226a63c6b741c88f7ae975f18b6778374"}, -] -"isort 5.12.0" = [ - {url = "https://files.pythonhosted.org/packages/0a/63/4036ae70eea279c63e2304b91ee0ac182f467f24f86394ecfe726092340b/isort-5.12.0-py3-none-any.whl", hash = "sha256:f84c2818376e66cf843d497486ea8fed8700b340f308f076c6fb1229dff318b6"}, - {url = "https://files.pythonhosted.org/packages/a9/c4/dc00e42c158fc4dda2afebe57d2e948805c06d5169007f1724f0683010a9/isort-5.12.0.tar.gz", hash = "sha256:8bef7dde241278824a6d83f44a544709b065191b95b6e50894bdc722fcba0504"}, -] -"lazy-object-proxy 1.9.0" = [ - {url = "https://files.pythonhosted.org/packages/00/74/46a68f51457639c0cd79e385e2f49c0fa7324470997ac096108669c1e182/lazy_object_proxy-1.9.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:946d27deaff6cf8452ed0dba83ba38839a87f4f7a9732e8f9fd4107b21e6ff07"}, - {url = "https://files.pythonhosted.org/packages/11/04/fa820296cb937b378d801cdc81c19de06624cfed481c1b8a6b439255a188/lazy_object_proxy-1.9.0-cp37-cp37m-win32.whl", hash = "sha256:f12ad7126ae0c98d601a7ee504c1122bcef553d1d5e0c3bfa77b16b3968d2734"}, - {url = "https://files.pythonhosted.org/packages/11/fe/be1eb76d83f1b5242c492b410ce86c59db629c0b0f0f8e75018dfd955c30/lazy_object_proxy-1.9.0-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9f5fa4a61ce2438267163891961cfd5e32ec97a2c444e5b842d574251ade27d2"}, - {url = "https://files.pythonhosted.org/packages/16/f2/e74981dedeb1a858cd5db9bcec81c4107da374249bc6894613472e01996f/lazy_object_proxy-1.9.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:f0117049dd1d5635bbff65444496c90e0baa48ea405125c088e93d9cf4525b11"}, - {url = "https://files.pythonhosted.org/packages/18/1b/04ac4490a62ae1916f88e629e74192ada97d74afc927453d005f003e5a8f/lazy_object_proxy-1.9.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5f83ac4d83ef0ab017683d715ed356e30dd48a93746309c8f3517e1287523ef4"}, - {url = "https://files.pythonhosted.org/packages/1d/5d/25b9007c65f45805e711b56beac50ba395214e9e556cc8ee57f0882f88a9/lazy_object_proxy-1.9.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e8c6cfb338b133fbdbc5cfaa10fe3c6aeea827db80c978dbd13bc9dd8526b7d4"}, - {url = "https://files.pythonhosted.org/packages/20/c0/8bab72a73607d186edad50d0168ca85bd2743cfc55560c9d721a94654b20/lazy-object-proxy-1.9.0.tar.gz", hash = "sha256:659fb5809fa4629b8a1ac5106f669cfc7bef26fbb389dda53b3e010d1ac4ebae"}, - {url = "https://files.pythonhosted.org/packages/27/a1/7cc10ca831679c5875c18ae6e0a468f7787ecd31fdd53598f91ea50df58d/lazy_object_proxy-1.9.0-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:721532711daa7db0d8b779b0bb0318fa87af1c10d7fe5e52ef30f8eff254d0cd"}, - {url = "https://files.pythonhosted.org/packages/31/ad/e8605300f51061284cc57ca0f4ef582047c7f309bda1bb1c3c19b64af5c9/lazy_object_proxy-1.9.0-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:66a3de4a3ec06cd8af3f61b8e1ec67614fbb7c995d02fa224813cb7afefee701"}, - {url = "https://files.pythonhosted.org/packages/4c/a4/cdd6f41a675a89ab584c78019a24adc533829764bcc85b0e24ed2678020c/lazy_object_proxy-1.9.0-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7322c3d6f1766d4ef1e51a465f47955f1e8123caee67dd641e67d539a534d006"}, - {url = "https://files.pythonhosted.org/packages/4d/7b/a959ff734bd3d8df7b761bfeaec6428549b77267072676a337b774f3b3ef/lazy_object_proxy-1.9.0-cp310-cp310-win32.whl", hash = "sha256:f0705c376533ed2a9e5e97aacdbfe04cecd71e0aa84c7c0595d02ef93b6e4455"}, - {url = "https://files.pythonhosted.org/packages/4e/cb/aca3f4d89d3efbed724fd9504a96dafbe2d903ea908355a335acb110a5cd/lazy_object_proxy-1.9.0-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:660c94ea760b3ce47d1855a30984c78327500493d396eac4dfd8bd82041b22be"}, - {url = "https://files.pythonhosted.org/packages/51/28/5c6dfb51df2cbb6d771a3b0d009f1edeab01f5cb16303ce32764b01636c0/lazy_object_proxy-1.9.0-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:bfb38f9ffb53b942f2b5954e0f610f1e721ccebe9cce9025a38c8ccf4a5183a4"}, - {url = "https://files.pythonhosted.org/packages/5b/a6/3c0a8b2ad6ce7af133ed54321b0ead5509303be3a80f98506af198e50cb7/lazy_object_proxy-1.9.0-cp38-cp38-win32.whl", hash = "sha256:0a891e4e41b54fd5b8313b96399f8b0e173bbbfc03c7631f01efbe29bb0bcf82"}, - {url = "https://files.pythonhosted.org/packages/5c/76/0b16dc53e9ee5b24c621d808f46cca11e5e86c602b6bcd6dc27f9504af5b/lazy_object_proxy-1.9.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:09763491ce220c0299688940f8dc2c5d05fd1f45af1e42e636b2e8b2303e4382"}, - {url = "https://files.pythonhosted.org/packages/69/1f/51657d681711476287c9ff643428be0f9663addc1d341d4be1bad89290bd/lazy_object_proxy-1.9.0-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:e7c21c95cae3c05c14aafffe2865bbd5e377cfc1348c4f7751d9dc9a48ca4bda"}, - {url = "https://files.pythonhosted.org/packages/69/da/58391196d8a41fa8fa69b47e8a7893f279d369939e4994b3bc8648ff0433/lazy_object_proxy-1.9.0-cp39-cp39-win32.whl", hash = "sha256:9090d8e53235aa280fc9239a86ae3ea8ac58eff66a705fa6aa2ec4968b95c821"}, - {url = "https://files.pythonhosted.org/packages/70/e7/f3735f8e47cb29a207568c5b8d28d9f5673228789b66cb0c48d488a37f94/lazy_object_proxy-1.9.0-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:212774e4dfa851e74d393a2370871e174d7ff0ebc980907723bb67d25c8a7c30"}, - {url = "https://files.pythonhosted.org/packages/82/ac/d079d3ad377ba72e29d16ac077f8626ad4d3f55369c93168d0b81153d9a2/lazy_object_proxy-1.9.0-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:18b78ec83edbbeb69efdc0e9c1cb41a3b1b1ed11ddd8ded602464c3fc6020494"}, - {url = "https://files.pythonhosted.org/packages/86/93/e921f7a795e252df7248e0d220dc69a9443ad507fe258dea51a32e5435ca/lazy_object_proxy-1.9.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:b40387277b0ed2d0602b8293b94d7257e17d1479e257b4de114ea11a8cb7f2d7"}, - {url = "https://files.pythonhosted.org/packages/8d/6d/10420823a979366bf43ca5e69433c0c588865883566b96b6e3ed5b51c1f8/lazy_object_proxy-1.9.0-cp311-cp311-win_amd64.whl", hash = "sha256:f2457189d8257dd41ae9b434ba33298aec198e30adf2dcdaaa3a28b9994f6adb"}, - {url = "https://files.pythonhosted.org/packages/9d/d7/81d466f2e69784bd416797824a2b8794aaf0b864a2390062ea197f06f0fc/lazy_object_proxy-1.9.0-cp311-cp311-win32.whl", hash = "sha256:81fc4d08b062b535d95c9ea70dbe8a335c45c04029878e62d744bdced5141586"}, - {url = "https://files.pythonhosted.org/packages/a7/51/6626c133e966698d53d65bcd90e34ad4986c5f0968c2328b3e9de51dbcf1/lazy_object_proxy-1.9.0-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:d9e25ef10a39e8afe59a5c348a4dbf29b4868ab76269f81ce1674494e2565a6e"}, - {url = "https://files.pythonhosted.org/packages/a8/32/c1a67f76ec6923a8a8b1bc006b7cb3d195e386e03fe56e20fe38fce0321e/lazy_object_proxy-1.9.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:9e7551208b2aded9c1447453ee366f1c4070602b3d932ace044715d89666899b"}, - {url = "https://files.pythonhosted.org/packages/b0/78/78962cb6f6d31a952acbc54e7838a5a85d952144973bd6e7ad24323dd466/lazy_object_proxy-1.9.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:189bbd5d41ae7a498397287c408617fe5c48633e7755287b21d741f7db2706a9"}, - {url = "https://files.pythonhosted.org/packages/b1/80/2d9583fa8e5ac47ef183d811d26d833477b7ed02b64c17dd2ede68a3f9cf/lazy_object_proxy-1.9.0-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:cbf9b082426036e19c6924a9ce90c740a9861e2bdc27a4834fd0a910742ac1e8"}, - {url = "https://files.pythonhosted.org/packages/c9/8f/c8aab72c72634de0c726a98a1e4c84a93ef20049ee0427c871214f6a58d5/lazy_object_proxy-1.9.0-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f699ac1c768270c9e384e4cbd268d6e67aebcfae6cd623b4d7c3bfde5a35db59"}, - {url = "https://files.pythonhosted.org/packages/cd/b6/84efe6e878e94f20cf9564ac3ede5e98d37c692b07080aef50cc4341052e/lazy_object_proxy-1.9.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:2d0daa332786cf3bb49e10dc6a17a52f6a8f9601b4cf5c295a4f85854d61de63"}, - {url = "https://files.pythonhosted.org/packages/d0/f4/95999792ce5f9223bac10cb31b1724723ecd0ba13e081c5fb806d7f5b9c4/lazy_object_proxy-1.9.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:1aa3de4088c89a1b69f8ec0dcc169aa725b0ff017899ac568fe44ddc1396df46"}, - {url = "https://files.pythonhosted.org/packages/db/92/284ab10a6d0f82da36a20d9c1464c30bb318d1a6dd0ae476de9f890e7abd/lazy_object_proxy-1.9.0-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:8fa02eaab317b1e9e03f69aab1f91e120e7899b392c4fc19807a8278a07a97e8"}, - {url = "https://files.pythonhosted.org/packages/e7/86/ec93d495197f1006d7c9535e168fe763b3cc21928fb35c8f9ce08944b614/lazy_object_proxy-1.9.0-cp310-cp310-win_amd64.whl", hash = "sha256:ea806fd4c37bf7e7ad82537b0757999264d5f70c45468447bb2b91afdbe73a6e"}, - {url = "https://files.pythonhosted.org/packages/ed/9b/44c370c8bbba32fd0217b4f15ca99f750d669d653c7f1eefa051627710e8/lazy_object_proxy-1.9.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9cd077f3d04a58e83d04b20e334f678c2b0ff9879b9375ed107d5d07ff160171"}, - {url = "https://files.pythonhosted.org/packages/f5/4f/9ad496dc26a10ed9ab8f088732f08dc1f88488897d6c9ac5e3432a254c30/lazy_object_proxy-1.9.0-cp37-cp37m-win_amd64.whl", hash = "sha256:edd20c5a55acb67c7ed471fa2b5fb66cb17f61430b7a6b9c3b4a1e40293b1671"}, - {url = "https://files.pythonhosted.org/packages/fb/f4/c5d6d771e70ec7a9483a98054e8a5f386eda5b18b6c96544d251558c6c92/lazy_object_proxy-1.9.0-cp38-cp38-win_amd64.whl", hash = "sha256:9990d8e71b9f6488e91ad25f322898c136b008d87bf852ff65391b004da5e17b"}, - {url = "https://files.pythonhosted.org/packages/fc/8d/8e0fbfeec6e51184326e0886443e44142ce22d89fa9e9c3152900e654fa0/lazy_object_proxy-1.9.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:79a31b086e7e68b24b99b23d57723ef7e2c6d81ed21007b6281ebcd1688acb0a"}, - {url = "https://files.pythonhosted.org/packages/fe/bb/0fcc8585ffb7285df94382e20b54d54ca62a1bcf594f6f18d8feb3fc3b98/lazy_object_proxy-1.9.0-cp39-cp39-win_amd64.whl", hash = "sha256:db1c1722726f47e10e0b5fdbf15ac3b8adb58c091d12b3ab713965795036985f"}, -] -"mccabe 0.7.0" = [ - {url = "https://files.pythonhosted.org/packages/27/1a/1f68f9ba0c207934b35b86a8ca3aad8395a3d6dd7921c0686e23853ff5a9/mccabe-0.7.0-py2.py3-none-any.whl", hash = "sha256:6c2d30ab6be0e4a46919781807b4f0d834ebdd6c6e3dca0bda5a15f863427b6e"}, - {url = "https://files.pythonhosted.org/packages/e7/ff/0ffefdcac38932a54d2b5eed4e0ba8a408f215002cd178ad1df0f2806ff8/mccabe-0.7.0.tar.gz", hash = "sha256:348e0240c33b60bbdf4e523192ef919f28cb2c3d7d5c7794f74009290f236325"}, -] -"mypy 1.3.0" = [ - {url = "https://files.pythonhosted.org/packages/09/7b/8eb0d648352c61b08cb364d278b5c12c3f1c5841724fdd2929d7172b7eaf/mypy-1.3.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:f9dca1e257d4cc129517779226753dbefb4f2266c4eaad610fc15c6a7e14283e"}, - {url = "https://files.pythonhosted.org/packages/11/41/d24f93eefc89c650782bf1f9acfdb02a32f327b841058a5b0ce5857b60af/mypy-1.3.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:4c99c3ecf223cf2952638da9cd82793d8f3c0c5fa8b6ae2b2d9ed1e1ff51ba85"}, - {url = "https://files.pythonhosted.org/packages/25/c7/4735f81858a727e170279144600881fe3299aa7589ed585af6b788ea4556/mypy-1.3.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:6e33bb8b2613614a33dff70565f4c803f889ebd2f859466e42b46e1df76018dd"}, - {url = "https://files.pythonhosted.org/packages/2b/27/4a26f91301804969194ee0dc9393843f10566d7fdf192ce11fc0218a989d/mypy-1.3.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:c1eb485cea53f4f5284e5baf92902cd0088b24984f4209e25981cc359d64448d"}, - {url = "https://files.pythonhosted.org/packages/3c/5d/b87339c1fdfec7d13899cd7ad2ee992801695114c1cf9e1645da264cd437/mypy-1.3.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:74bc9b6e0e79808bf8678d7678b2ae3736ea72d56eede3820bd3849823e7f305"}, - {url = "https://files.pythonhosted.org/packages/47/f6/25c154bb1c479f2047093f0580c2c35ffc1ff007d52b7e50020cca60c010/mypy-1.3.0-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:76ec771e2342f1b558c36d49900dfe81d140361dd0d2df6cd71b3db1be155409"}, - {url = "https://files.pythonhosted.org/packages/4c/10/530d2df4d57f46f77b8211cf9bbe090baacff02e7076f21f1bf08148d541/mypy-1.3.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:ddae0f39ca146972ff6bb4399f3b2943884a774b8771ea0a8f50e971f5ea5ba8"}, - {url = "https://files.pythonhosted.org/packages/55/e1/90487a3ea5a88b8f5c9d7fbf6f5fa7fcc8633d0132ce8364810a1da901c9/mypy-1.3.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:cbc07246253b9e3d7d74c9ff948cd0fd7a71afcc2b77c7f0a59c26e9395cb152"}, - {url = "https://files.pythonhosted.org/packages/5b/fb/0b1c90c635319b98dd65c6d6d6347413e42397e94057993011eeedeffbd9/mypy-1.3.0-cp37-cp37m-win_amd64.whl", hash = "sha256:8c5979d0deb27e0f4479bee18ea0f83732a893e81b78e62e2dda3e7e518c92ee"}, - {url = "https://files.pythonhosted.org/packages/6a/d0/4681d84878cecfd911752016ab30566366f6de7296fdc977b746eb68bf45/mypy-1.3.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:7d23370d2a6b7a71dc65d1266f9a34e4cde9e8e21511322415db4b26f46f6b8c"}, - {url = "https://files.pythonhosted.org/packages/6a/d9/48de5203f4b6287a98fadcc47072b1bc69e3faaa39cba59a3a600b05a42c/mypy-1.3.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:6e42d29e324cdda61daaec2336c42512e59c7c375340bd202efa1fe0f7b8f8ca"}, - {url = "https://files.pythonhosted.org/packages/7e/75/021af7f0683ea19b9ad6a436e1b5c7cb39899c0f7b31040fa69b2395421e/mypy-1.3.0-cp310-cp310-win_amd64.whl", hash = "sha256:a22435632710a4fcf8acf86cbd0d69f68ac389a3892cb23fbad176d1cddaf228"}, - {url = "https://files.pythonhosted.org/packages/86/56/08c5ff6b2139f301d9aa56cb8e7b2a24d4faa6fc3e94234dfe7eeecc9c44/mypy-1.3.0-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:faff86aa10c1aa4a10e1a301de160f3d8fc8703b88c7e98de46b531ff1276a9a"}, - {url = "https://files.pythonhosted.org/packages/88/0e/646696eb8fe7658b752009a495054a0214ae8e659e9cbcde8181f16ae999/mypy-1.3.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:658fe7b674769a0770d4b26cb4d6f005e88a442fe82446f020be8e5f5efb2fae"}, - {url = "https://files.pythonhosted.org/packages/8d/c8/681f4a19c62aa71bdc9ad3a4bc9a0fb8846bd0b5a8bc1b29d261c8025f80/mypy-1.3.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:550a8b3a19bb6589679a7c3c31f64312e7ff482a816c96e0cecec9ad3a7564dd"}, - {url = "https://files.pythonhosted.org/packages/90/b6/a2d2ba604982af6034e3fcad17a464a66127be47f07b4587beec76e8f80b/mypy-1.3.0-cp38-cp38-win_amd64.whl", hash = "sha256:44797d031a41516fcf5cbfa652265bb994e53e51994c1bd649ffcd0c3a7eccbf"}, - {url = "https://files.pythonhosted.org/packages/b1/ce/8d87f684bb7e2a520cfa9cd17b8dc686a83143bb12a3e1ac4ad6d8d4825c/mypy-1.3.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:c5d2cc54175bab47011b09688b418db71403aefad07cbcd62d44010543fc143f"}, - {url = "https://files.pythonhosted.org/packages/b1/e1/399e3dfeb2842e4a2634866e4ef8b69151d465b7a5ceb648d7f1296f17d0/mypy-1.3.0-cp39-cp39-win_amd64.whl", hash = "sha256:95d8d31a7713510685b05fbb18d6ac287a56c8f6554d88c19e73f724a445448a"}, - {url = "https://files.pythonhosted.org/packages/b8/36/6628916f94bb0816e1719117e1962750413ab408f83673ce7d571caf3960/mypy-1.3.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:1c4c42c60a8103ead4c1c060ac3cdd3ff01e18fddce6f1016e08939647a0e703"}, - {url = "https://files.pythonhosted.org/packages/ba/ac/1c280246fc0c5239409f31e1a321f178ba11a9c6e5eaaf6d56f9ff627cdf/mypy-1.3.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e86c2c6852f62f8f2b24cb7a613ebe8e0c7dc1402c61d36a609174f63e0ff017"}, - {url = "https://files.pythonhosted.org/packages/c9/c5/f3e4ed59e08e3a728a15da198317edfcd13b7dc2215d52b5d85fce716285/mypy-1.3.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:87df44954c31d86df96c8bd6e80dfcd773473e877ac6176a8e29898bfb3501cb"}, - {url = "https://files.pythonhosted.org/packages/cd/b9/6abe1cd8ac8e70f12f43eebe6427814f9d36142d331eae5cc5bba77585a2/mypy-1.3.0-cp311-cp311-win_amd64.whl", hash = "sha256:d0b6c62206e04061e27009481cb0ec966f7d6172b5b936f3ead3d74f29fe3dcf"}, - {url = "https://files.pythonhosted.org/packages/d8/c6/de2e214a42b63d7ea0abef9f02a6da69cad6d532165bb7a8cc8291099a0c/mypy-1.3.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:473117e310febe632ddf10e745a355714e771ffe534f06db40702775056614c4"}, - {url = "https://files.pythonhosted.org/packages/d9/79/82d452b409d7610944ba3a1a6079987d3ed6062cb8fe5c8850f26dafb6e0/mypy-1.3.0-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ebc95f8386314272bbc817026f8ce8f4f0d2ef7ae44f947c4664efac9adec929"}, - {url = "https://files.pythonhosted.org/packages/e3/f7/1fed3b24abb75f244fa6bc60ea03cd9d3d8ad225a4cfda7533042fe6d831/mypy-1.3.0-py3-none-any.whl", hash = "sha256:a8763e72d5d9574d45ce5881962bc8e9046bf7b375b0abf031f3e6811732a897"}, - {url = "https://files.pythonhosted.org/packages/f9/88/3bfe07521fb9e74b449cbc4367434067ec70bfd8a24c652fa3e0f9597389/mypy-1.3.0.tar.gz", hash = "sha256:e1f4d16e296f5135624b34e8fb741eb0eadedca90862405b1f1fde2040b9bd11"}, -] -"mypy-extensions 1.0.0" = [ - {url = "https://files.pythonhosted.org/packages/2a/e2/5d3f6ada4297caebe1a2add3b126fe800c96f56dbe5d1988a2cbe0b267aa/mypy_extensions-1.0.0-py3-none-any.whl", hash = "sha256:4392f6c0eb8a5668a69e23d168ffa70f0be9ccfd32b5cc2d26a34ae5b844552d"}, - {url = "https://files.pythonhosted.org/packages/98/a4/1ab47638b92648243faf97a5aeb6ea83059cc3624972ab6b8d2316078d3f/mypy_extensions-1.0.0.tar.gz", hash = "sha256:75dbf8955dc00442a438fc4d0666508a9a97b6bd41aa2f0ffe9d2f2725af0782"}, -] -"packaging 23.1" = [ - {url = "https://files.pythonhosted.org/packages/ab/c3/57f0601a2d4fe15de7a553c00adbc901425661bf048f2a22dfc500caf121/packaging-23.1-py3-none-any.whl", hash = "sha256:994793af429502c4ea2ebf6bf664629d07c1a9fe974af92966e4b8d2df7edc61"}, - {url = "https://files.pythonhosted.org/packages/b9/6c/7c6658d258d7971c5eb0d9b69fa9265879ec9a9158031206d47800ae2213/packaging-23.1.tar.gz", hash = "sha256:a392980d2b6cffa644431898be54b0045151319d1e7ec34f0cfed48767dd334f"}, -] -"pathspec 0.11.1" = [ - {url = "https://files.pythonhosted.org/packages/95/60/d93628975242cc515ab2b8f5b2fc831d8be2eff32f5a1be4776d49305d13/pathspec-0.11.1.tar.gz", hash = "sha256:2798de800fa92780e33acca925945e9a19a133b715067cf165b8866c15a31687"}, - {url = "https://files.pythonhosted.org/packages/be/c8/551a803a6ebb174ec1c124e68b449b98a0961f0b737def601e3c1fbb4cfd/pathspec-0.11.1-py3-none-any.whl", hash = "sha256:d8af70af76652554bd134c22b3e8a1cc46ed7d91edcdd721ef1a0c51a84a5293"}, -] -"platformdirs 3.6.0" = [ - {url = "https://files.pythonhosted.org/packages/05/31/793923615e85deef0c25abf5d044b3f99f1348b620122ab184b7d3f70f21/platformdirs-3.6.0.tar.gz", hash = "sha256:57e28820ca8094678b807ff529196506d7a21e17156cb1cddb3e74cebce54640"}, - {url = "https://files.pythonhosted.org/packages/a7/4d/00f9fe4bbb3459da0d6c790b1526e5edebaeff2a80166eabb0a42f9e0a05/platformdirs-3.6.0-py3-none-any.whl", hash = "sha256:ffa199e3fbab8365778c4a10e1fbf1b9cd50707de826eb304b50e57ec0cc8d38"}, -] -"pluggy 1.0.0" = [ - {url = "https://files.pythonhosted.org/packages/9e/01/f38e2ff29715251cf25532b9082a1589ab7e4f571ced434f98d0139336dc/pluggy-1.0.0-py2.py3-none-any.whl", hash = "sha256:74134bbf457f031a36d68416e1509f34bd5ccc019f0bcc952c7b909d06b37bd3"}, - {url = "https://files.pythonhosted.org/packages/a1/16/db2d7de3474b6e37cbb9c008965ee63835bba517e22cdb8c35b5116b5ce1/pluggy-1.0.0.tar.gz", hash = "sha256:4224373bacce55f955a878bf9cfa763c1e360858e330072059e10bad68531159"}, -] -"pydantic 2.0b3" = [ - {url = "https://files.pythonhosted.org/packages/85/13/e96e6dda5cf3fb8f8df959d1bfaa819869328ffb0d8ed7d27eb36659093e/pydantic-2.0b3.tar.gz", hash = "sha256:057fb3050b8d3952153a0df45188882096ac53fe087b196fd0d877442b0c029b"}, - {url = "https://files.pythonhosted.org/packages/af/ce/dabc6cd90abaf903d84a329f29a5ce34643fd66ac2a78f3eb1c668bd4fb3/pydantic-2.0b3-py3-none-any.whl", hash = "sha256:dd6a8f835aceef1a399329478c355c91985f582afda7027055834d6822aa0ce2"}, -] -"pydantic-core 0.39.0" = [ - {url = "https://files.pythonhosted.org/packages/02/28/05cf18d0f511ba56e7257027ae24f524d6845ec47c70ad893a165f475b27/pydantic_core-0.39.0-pp39-pypy39_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:99de1fe8dcb3dc6e853ff6b96da4faa54384bbc4e73dbeb7dc8473f7e9d84243"}, - {url = "https://files.pythonhosted.org/packages/02/e6/fdf028114408f727b7767106509664a4d560198c40abe5eb4a7e7d6650ba/pydantic_core-0.39.0-cp37-cp37m-macosx_11_0_arm64.whl", hash = "sha256:bd5f3e98d112c6eab8c41cf2baf3dab8006c3223d5f2c9695b1cba7ab87bbfb5"}, - {url = "https://files.pythonhosted.org/packages/03/34/5bdb0bc053b1c848bbe696cb75007a9b5b1351136de4e7a79d6aea1ae7c6/pydantic_core-0.39.0-pp39-pypy39_pp73-macosx_10_7_x86_64.whl", hash = "sha256:96100fb53a7384a99c6121ea90f01aa1cb6100af8dd25f227a5132f38b9199df"}, - {url = "https://files.pythonhosted.org/packages/03/5f/e72f736d303d695be4d45b00cd9a26063575058d57b49c2962cfae75a43c/pydantic_core-0.39.0-cp37-none-win32.whl", hash = "sha256:2bfe35d886d93c7911b4d56ab3a6725a7866b35f09aceaf3d0d64babed701b73"}, - {url = "https://files.pythonhosted.org/packages/06/59/4117e5ac138bca096879d07f446fd24a9b198755d344e0f640fb1f2b23bf/pydantic_core-0.39.0-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:351a34da43f44a52bbd52380322bfb364f2efe423275c4917c8c26100c1b8ced"}, - {url = "https://files.pythonhosted.org/packages/07/b4/9c10f031fa975fde14f97d4be8c58c3be669b0cd2ff20242b405312c86a8/pydantic_core-0.39.0-cp38-cp38-manylinux_2_24_armv7l.whl", hash = "sha256:b749a22e311e235974516a4bca00afdf4f2e67dd7773d3850c1b17f1da1131b1"}, - {url = "https://files.pythonhosted.org/packages/0a/5e/5c089f8b5633c304b82cfbde3fee9c4e6d0897fa9ab0c5a09e01469d24dc/pydantic_core-0.39.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f8178dc88a246c60fb8264a8422587abc209cac1d9160329af8a6f5f89797cb3"}, - {url = "https://files.pythonhosted.org/packages/10/13/f6b741c1118001be9fbfd469eeee2b415d004fa6ddafbfd355e4ff9db634/pydantic_core-0.39.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:c9c16fc80e2612b0121eb425890e2e29f03e3038bbd53e5b637cd72aad2c5339"}, - {url = "https://files.pythonhosted.org/packages/10/15/82a7866bd5660dd4251c87ca23b01b8ba495ea0b7013bb8ee884dfce0311/pydantic_core-0.39.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f9e18e91b5f4172ea5ebc8fe0461acf6f2de73d4b85b47aee26924dcd304141a"}, - {url = "https://files.pythonhosted.org/packages/10/5b/3ae9f4f1e5299c9c2ba7a578b852f0a40c54f9c1a83f3de5d08b90826281/pydantic_core-0.39.0-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:9602b61c85d9c12b0e66792eebc85152b565c24431a69c47f3cba811b1507389"}, - {url = "https://files.pythonhosted.org/packages/18/a0/0b22604892e136e7429c17b6bf0d05ef788759b8633c4d94f638740ad779/pydantic_core-0.39.0-pp37-pypy37_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9d32b45650e5bb8670b73d0f9acdae184197308f5a5ecf8e714849c76fd0a6ed"}, - {url = "https://files.pythonhosted.org/packages/1b/7b/b9ccbcd5392b02270ee14e1121672bc102b903bb3eb2d528347c08ee6fa8/pydantic_core-0.39.0-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:1f89064cf78b57bf2930a14b41aa4b4240bd2993a57efb56b5ad8be02f4048b3"}, - {url = "https://files.pythonhosted.org/packages/1b/fb/760b5481281b9615e55f4c7a3363feaef05f8441cbc93925a4621148f70a/pydantic_core-0.39.0-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:bf55dc04bb037c06d256e22254401b10fbc3a478835837987435e3c77ec929f9"}, - {url = "https://files.pythonhosted.org/packages/1e/82/3b5a71e50b570b041e402469ae21b8242081504e4c50ba6bc40a51440308/pydantic_core-0.39.0-cp38-cp38-manylinux_2_24_s390x.whl", hash = "sha256:e77a053384a29c4ffdad2a717809e347b864c582c407ab88eb9ff3fa3bce22a7"}, - {url = "https://files.pythonhosted.org/packages/21/15/7cc4530aaa6800fa91ed70464a79593865159f629ce22675d1f7e5a90e7b/pydantic_core-0.39.0-cp37-cp37m-macosx_10_7_x86_64.whl", hash = "sha256:9aba06c25f356c0fb11f1dd2d0317a5599f223a3b283ebbc1aa3a1100a6920f7"}, - {url = "https://files.pythonhosted.org/packages/28/ac/cda6b041201ccb695f2eded45bf0b834eaa60beebe616973f1f3f1e782c2/pydantic_core-0.39.0-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:2c7b5e09e5e6c7cf2ed0ccb5a1ddf1f6d12131315ff70d100fc197711df4a37e"}, - {url = "https://files.pythonhosted.org/packages/2e/39/87420354aaedf26df93f26a6c6a36fb6e77a32d97a608fa2ee3bb086bf45/pydantic_core-0.39.0-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:30ad66243a64818e8afb584596cc9f7f8738406ffe1b4ab0be00e23375753b7c"}, - {url = "https://files.pythonhosted.org/packages/2e/4a/71cd253c40cd57fafe76d3701c4deab358799e6f72a63bac4356d8cba806/pydantic_core-0.39.0-cp310-cp310-macosx_10_7_x86_64.whl", hash = "sha256:361135e456636aecad3c15ceabc206fe93b4f86778ca24eefd707952954b7e70"}, - {url = "https://files.pythonhosted.org/packages/30/ad/86af97225b000bdaae55672d1bae9cc2c8dc9149c57cd37e2116ed8699a5/pydantic_core-0.39.0-cp38-none-win32.whl", hash = "sha256:3a5795a0521ce88adbffd16796e85cdd06546805ff869fed0cac1a9c297d9445"}, - {url = "https://files.pythonhosted.org/packages/30/be/207b81da280ba0c4111d12bc5dc9667a584280a8f7c94c79b6a0ec485652/pydantic_core-0.39.0-cp38-cp38-macosx_10_7_x86_64.whl", hash = "sha256:abbcbc69868ad7f642caa319a7b5f829e6f9b6db5194b6b82b7a9561ac992663"}, - {url = "https://files.pythonhosted.org/packages/32/48/df3cd4a5256f3832b5ce0bc45e8d97081db80860870d3522c5d524e27fe4/pydantic_core-0.39.0-cp39-cp39-macosx_10_7_x86_64.whl", hash = "sha256:c2fb59f98fd0f9f3ee1b77b2c44f282ed8b1cc52d332c2d2a34b6364f63dbfa1"}, - {url = "https://files.pythonhosted.org/packages/38/31/b6d08564f771ce87b5a9dec32746b33b90ae35ddbbc3b06e1cc49e1d6110/pydantic_core-0.39.0-pp37-pypy37_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:a5a377d9bf58a99e55d74167c658cb1f170cc1c008b849f5a8ec31b7b0eb65e7"}, - {url = "https://files.pythonhosted.org/packages/3d/b2/8d38bd801be8244e0c97d6a83ac898fae172e918dc63afd016cb67e958f8/pydantic_core-0.39.0-cp38-none-win_amd64.whl", hash = "sha256:dc8234bd4325341eb660a86dba3688a5287789309a84261b3dbe76d4dd0472e8"}, - {url = "https://files.pythonhosted.org/packages/3f/bf/0271744df2c60a000ade36ac42ef34aaf9dcde7cfa246f4e20e2f9ba51f3/pydantic_core-0.39.0-pp39-pypy39_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:b2352ef56d0a5157dea6d39f3342980523673ac7f08967e39a68e06c168b94a4"}, - {url = "https://files.pythonhosted.org/packages/49/d4/06ca9f1732fe981f3ae7c749a0ceb3b9e0848896eac610afeaf413ae7d38/pydantic_core-0.39.0-cp38-cp38-manylinux_2_24_ppc64le.whl", hash = "sha256:749c0a2038ca7fb3a29ff7f9ce7d3248d8bb9f42d2ef609b4e4c158e74368145"}, - {url = "https://files.pythonhosted.org/packages/4a/c9/e3aede8a6e8e2b552cd12a7a8b5488686d6a6534060ff7d6da2867022fa3/pydantic_core-0.39.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d1f187d852ca78b9e23a0155be5f759f65f5e5c7dc4b29b7ea7aa5df48537ba1"}, - {url = "https://files.pythonhosted.org/packages/4c/29/49eea949174ad30c23a1f42fb5d105d194d98d7c9b96b1c8fda7d88cc57b/pydantic_core-0.39.0.tar.gz", hash = "sha256:8368d0510d0020d1bbb4124b31fb663e17e5661b5cc85c48e2b9d9bb0a378d9f"}, - {url = "https://files.pythonhosted.org/packages/4c/d1/5254c030dadeb88a063ac7135f443ccd50a1033681980016a3976a655d0f/pydantic_core-0.39.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0203bc58c551d018bff3ce3bc863cd2c88504dbb96f79357fdaa22955db64ffe"}, - {url = "https://files.pythonhosted.org/packages/52/e9/377b6997e222288a723fc99bcf76d6b68216ef6269f7733a82b408d74e5a/pydantic_core-0.39.0-pp37-pypy37_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:5570c884284a5e69278c4bb259c1694d64a5d9bc9a28674d088134246ad73358"}, - {url = "https://files.pythonhosted.org/packages/5b/0e/6b3aaf8e73eab3846e0f0898dc9c5611e3c30c80fa1f567f1160881738ef/pydantic_core-0.39.0-cp39-cp39-manylinux_2_24_s390x.whl", hash = "sha256:5438ffb320ad430de40de405078b0770beb1eec00e54de18a63c842d114d86b9"}, - {url = "https://files.pythonhosted.org/packages/61/e3/48b6fd9589f9d04efd16604b384aa6cf662513041794155f30ca2dc76ec2/pydantic_core-0.39.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:3cb0cdc1c5c036aa7caccf6a28e9a2ce3058ae18aceb143870a6a379235b075d"}, - {url = "https://files.pythonhosted.org/packages/62/2f/090ba715ed3e6211f9fd5e8a0c3ff29ebd0e0c01eb69971cec46493923e4/pydantic_core-0.39.0-cp37-cp37m-manylinux_2_24_ppc64le.whl", hash = "sha256:549a0940b7164b23d52df4d6bd73637e989688d28dbeb9e24d87a27da48f23bc"}, - {url = "https://files.pythonhosted.org/packages/63/03/81dce913aef3ff28a5c1c3938590d9ad3336d4bb35e39ffffd7f5450dbbe/pydantic_core-0.39.0-cp311-cp311-macosx_10_7_x86_64.whl", hash = "sha256:9f1ddc997865f29eee3fea397885595d361a76df80356fec8c47f45b987b7490"}, - {url = "https://files.pythonhosted.org/packages/65/cb/a5fb2d0d9ddedb109af8104445843059173d036e53be720e257fa51c035f/pydantic_core-0.39.0-cp37-cp37m-manylinux_2_24_armv7l.whl", hash = "sha256:45926ab2adef2deff4fc89e12bf5ba015ad297efefcd0f84b8689123a6c3b126"}, - {url = "https://files.pythonhosted.org/packages/68/e1/4e1553a3ecdd375845f320d386f3149e122ea44c1781e8d923a3186a1dbf/pydantic_core-0.39.0-cp311-none-win32.whl", hash = "sha256:3696a567b7517c09ed7dae942fa5b38cd552af5160d0905b76e9607b87e31d01"}, - {url = "https://files.pythonhosted.org/packages/6a/2e/81ce629273eac5daabcbc47c0e68c2f5e3e7926275726b635b9de50a73c9/pydantic_core-0.39.0-pp38-pypy38_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:711d3a4c9ed8cce84dd55284ff9f4494b825930154a52a37cd02ac4e3a5fd62d"}, - {url = "https://files.pythonhosted.org/packages/6c/55/ecbf0c01c8196ca6d3ef37ee03c965a15e4e2fe15748ba4119d102ed8584/pydantic_core-0.39.0-pp38-pypy38_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f29f3197b1b50550c299ad8700918fbe383412df6f864fe02190a958b60a3c29"}, - {url = "https://files.pythonhosted.org/packages/6d/c4/a7e33420c947fb90e84686db7e156d212931405c453f71d6237489eb78d6/pydantic_core-0.39.0-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:6e9f98a9df2cea76b1a8bd70d00b4ee3b7597887281c2e85c8ad690ed881ef34"}, - {url = "https://files.pythonhosted.org/packages/6e/66/017c518c8aef90beee755c2236fee4657c9f2004da1b0457454283e1ec6a/pydantic_core-0.39.0-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4908e1bbafa91dcbcc8778bfe11ede713ef18dafac4a7f66b7108d348d46e5ea"}, - {url = "https://files.pythonhosted.org/packages/77/b7/ee023ab701dc89b9509a1f435d73316b9ef6789396a7655601a7e3816710/pydantic_core-0.39.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:e7ad056aeb02a474957fa950ff169549e214cec5f0b5c18dae683b0d21227def"}, - {url = "https://files.pythonhosted.org/packages/78/8b/d1bfbd837d46dc150e7f90cbf8129077c9464f755aa78d92356cc298c1bf/pydantic_core-0.39.0-cp310-none-win_amd64.whl", hash = "sha256:ddf0177f2324200cf9ea3100d4232be275c8986a4cb9b1892e1f53d2584f6b17"}, - {url = "https://files.pythonhosted.org/packages/7a/a4/e0b1cb44397c99fd3737224bf32af94cf596bef80715c0e26732a8e71a1f/pydantic_core-0.39.0-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:00c3a5ab18f355a0b082019fdc4af41b61c4a2e33d97af44c69b611d818bdfe2"}, - {url = "https://files.pythonhosted.org/packages/7c/cd/128d387f0acc2e008eb1d1869648c0358ac89637d067fffde77440ef9548/pydantic_core-0.39.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:5ccb4a21713a831f888c0bf22be4888df475650f699cc35a675cb91cc55e780b"}, - {url = "https://files.pythonhosted.org/packages/82/58/54cda4561c6e099fc41c37ee9cd6752caad6d3cc17a83a1c24b6cd596754/pydantic_core-0.39.0-cp311-none-win_amd64.whl", hash = "sha256:c9b4909e971e8745af251cecd92aa55f9239bbc9a9630811dd53a00a2b5285f8"}, - {url = "https://files.pythonhosted.org/packages/83/fc/3e212b137c5f53564ed8228509700dde0c8dd17f110a097225bd988af0eb/pydantic_core-0.39.0-cp39-none-win32.whl", hash = "sha256:579c69e5a7bf2fd3dedd3c51e91b1beb0c89782ea6c0d1ffd8e48259b70f9d61"}, - {url = "https://files.pythonhosted.org/packages/86/5d/c1d7ad0f076292d5a473585c36e30eb51229d72749ab1306fa0a4ec33b76/pydantic_core-0.39.0-cp310-cp310-manylinux_2_24_s390x.whl", hash = "sha256:f8992a135442959269d2c013bd9913c837d5ea215b0e480cda1820c7310df55b"}, - {url = "https://files.pythonhosted.org/packages/88/59/8feb158be87ba69547bf471709a84acd8e3b671729cabcb691697bcfb1b4/pydantic_core-0.39.0-cp311-cp311-manylinux_2_24_ppc64le.whl", hash = "sha256:87e4d828c0cc28e8ec1abad2e83110e0cca175b3799fc3eeab22e615cefc551f"}, - {url = "https://files.pythonhosted.org/packages/8a/7c/55f6824b2966b5a13fdddc8cf67ed2a830ab2a3d1e428c3f1b84c868f52d/pydantic_core-0.39.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:9595444868ece2e67b5e64a583eab10756491d9bf4e6d3876410299297d4adb3"}, - {url = "https://files.pythonhosted.org/packages/8d/1c/119f34be34bd9f2078f5e6225cb4dd9af4748612becb46a8541c4ee8f05c/pydantic_core-0.39.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c3b42892739cd3e27c2efbab6682fa91ec07c76381db1ca66da2d889c21e1c8a"}, - {url = "https://files.pythonhosted.org/packages/91/c4/ecae440c8c627ae810544257294b78a52f5eaff2c6c1b2005fda386e0d3f/pydantic_core-0.39.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:126db921ac7c72cb5d8d1b46540d594d559c25e243b3515aed040a0cd0eafac8"}, - {url = "https://files.pythonhosted.org/packages/95/37/8045af516750341f434ea7f414774b37fdf023f3249c5036e1b51a07cc0a/pydantic_core-0.39.0-pp38-pypy38_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:058ea15957753eeb0547bbcb9aca1dca1f11969f0517a6f988d708110c4717e4"}, - {url = "https://files.pythonhosted.org/packages/96/3f/7f99a99e3efedddfe04750ab20c38ceb9cf82da8035116367e051143c908/pydantic_core-0.39.0-pp38-pypy38_pp73-macosx_10_7_x86_64.whl", hash = "sha256:e7d2a139d384911ee97ad2e9472ae4e79e9fedf278fa8c31b3e391c0279c0207"}, - {url = "https://files.pythonhosted.org/packages/96/5b/09027349536a371da3bdc413e129824778ea25fe036d8270ed038bb17cde/pydantic_core-0.39.0-cp39-cp39-manylinux_2_24_armv7l.whl", hash = "sha256:bb4cea3c63defa0fe891af206ad04c8b167852feb6bfba7c1cc4f26a4a2eb39e"}, - {url = "https://files.pythonhosted.org/packages/9c/df/2140080b89404fe58c49cd13b87ff9fea0006c375ee6db526f665c6e1ed9/pydantic_core-0.39.0-cp311-cp311-manylinux_2_24_armv7l.whl", hash = "sha256:d3a8d0734b1e82df4a725fa39a1b78625c407b8cf31ae1652382a2f4c8c757b4"}, - {url = "https://files.pythonhosted.org/packages/9d/f1/49aa2eed0fb5c4593ff7e6b682b55227ccff446e5968de4244858aa153a4/pydantic_core-0.39.0-cp39-none-win_amd64.whl", hash = "sha256:3a4d4d87dc988d9c52d4e7e31b77d6036b4cab36109826b57cd293ae3179440d"}, - {url = "https://files.pythonhosted.org/packages/a0/bb/6e4744e06e503aab065cc1a1c30b048e0d7cdc915e7aaec4e90f5dfeb920/pydantic_core-0.39.0-pp37-pypy37_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4ee34d942a3ab3d55db4945b42ce000c5ca2fd749ab9bbc3fb4ddab41742cbbd"}, - {url = "https://files.pythonhosted.org/packages/a8/a0/1a8775109cb96cf2814b2e4672ce8077639ea8fea9a763855961f962a08a/pydantic_core-0.39.0-cp37-cp37m-manylinux_2_24_s390x.whl", hash = "sha256:a0f7d1454f86865cd2ec47e36ebe2e20cca5be71eaa5c2e422adf1e0355ae705"}, - {url = "https://files.pythonhosted.org/packages/af/13/a2263078a389ae865416ebd11b7e1ea6857ba17a3fe824247443dc8094dc/pydantic_core-0.39.0-cp310-cp310-manylinux_2_24_ppc64le.whl", hash = "sha256:8ac4ba34ac3977fa5c6cef5921564133e1295b9d202fed2d6e62187f61651f3c"}, - {url = "https://files.pythonhosted.org/packages/b6/cf/7e4c78ea6dd20fae6fcc40d080ea0cc0d243c455bd7f2876f4358083e734/pydantic_core-0.39.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:73f785920e974f86d2e37a7fc44a5fdd3e9b6d40fba94137da7a1e02c4dd7c11"}, - {url = "https://files.pythonhosted.org/packages/b9/6e/33ce81ab5b6216551c79a0de33d0561870ef8ce7044ad19d1bdcbbf7ac4c/pydantic_core-0.39.0-pp38-pypy38_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:5cf2849e22925411a15d955c03197f71c6507fcdfcaeee110a7202f6e436b5fa"}, - {url = "https://files.pythonhosted.org/packages/ba/5d/8da971a0738ba60e4b5fa4017edfc8b2ea7c33b497ff36c47579aaf8b2f7/pydantic_core-0.39.0-cp310-none-win32.whl", hash = "sha256:dc12b16753591143bdd0c117d74fbe46fda84b4a8eb0383931811819d8679c89"}, - {url = "https://files.pythonhosted.org/packages/bd/10/eae179a0e14dafdb99d8daad2214fbd4ce37ec930d5f4d6d5a76c53fb9b4/pydantic_core-0.39.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:a5ca573f261ea525c5bb10e03d41dd9ce76aea93b75f9ca2dc5dc4ef147ea2a3"}, - {url = "https://files.pythonhosted.org/packages/c0/d0/be263343068f7b3add37590ada5aae3e6e9ef9d71fde57bbf5af1c77fd61/pydantic_core-0.39.0-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:71e12169625eb4b6939617333dd1aa671c156a44c44880db207c47a2e4c9fe81"}, - {url = "https://files.pythonhosted.org/packages/c1/3b/dfbf0b7528a391cc9f5f0ece71384d80a462a3ea29629d04d0077c60e2a6/pydantic_core-0.39.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:d0ef384f3b4aa5ef4c66d47f4446ca9dc8adbfbc7bf74d1b31b19cc2e2bdf9e8"}, - {url = "https://files.pythonhosted.org/packages/cb/72/aa3d34b34ce6efe00fd1f3cf91e26d5df3fe17fec6233d411117f1fd1afc/pydantic_core-0.39.0-cp310-cp310-manylinux_2_24_armv7l.whl", hash = "sha256:ac8756c26cbfc57e89ff52817a2802e97376948de002ffe39adb238fbb12c8db"}, - {url = "https://files.pythonhosted.org/packages/cf/af/2c3098c684b769aa23e8cd52aeb6f9f1f57bd29001de4d504bffd971d061/pydantic_core-0.39.0-cp39-cp39-manylinux_2_24_ppc64le.whl", hash = "sha256:17a08e9af181097759362182bffa5614cd8c1278f12bab529e6e3bdc4b2d3860"}, - {url = "https://files.pythonhosted.org/packages/d1/49/665fa0ab78fb9d64737f9244611112ed2dd62294da07abbec5ff621e78cb/pydantic_core-0.39.0-cp37-none-win_amd64.whl", hash = "sha256:84675545b74ce4ea53f0e2413f182db1501b1684d6359f7c2cb4d37d24a9afec"}, - {url = "https://files.pythonhosted.org/packages/d1/57/09cf964c2fc35b47d720328e0cfc6db9541a253ff6cc252caea948dbbd9f/pydantic_core-0.39.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:103179d734dafb5da5f74065d1a18274709684a9dc01c61f119c5e39dea4d2df"}, - {url = "https://files.pythonhosted.org/packages/d9/59/b88cfad8e4d286c06eb8b2179b65d81e9f0e8a43b0501a10c5f6e7223059/pydantic_core-0.39.0-cp311-cp311-manylinux_2_24_s390x.whl", hash = "sha256:472049006abb4070750d530c96d76122497aec86b99c618d583e596fe986ad0a"}, - {url = "https://files.pythonhosted.org/packages/e1/05/0e5fc693d422d8fc385af604dedbbf7989fd5ec0d48b18f2eb8c5cd215a3/pydantic_core-0.39.0-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:ef212fafe222ae7fdf38ba16b5c7bb7eddf1b44cc901bc3056569eefcf54da94"}, - {url = "https://files.pythonhosted.org/packages/e3/d2/03bfd28dbe7b88c0c3dc6d972eaa1893174802c11375ebafff3b5047374e/pydantic_core-0.39.0-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:38ac25daeb3ea45ecd4e8580f7375e6434daf02c6ca185f246f2e682de554ab5"}, - {url = "https://files.pythonhosted.org/packages/e7/94/7400beb368dda61e6f77777f8a708faa001f4aec20a537fe56c4d067dc9d/pydantic_core-0.39.0-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:cf6cff67dcf885f36e9f8a8771225df6b9cd76f308d0c7af66bfd2776f471c7c"}, - {url = "https://files.pythonhosted.org/packages/e9/22/a393b654f9e74c37f5ace2739d521430ce8944c2ceb5eec9c1b0576c47f1/pydantic_core-0.39.0-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:8849794ae4da5d244d215ee582e83e169120c475a7e05f1adf227035b9edbde3"}, - {url = "https://files.pythonhosted.org/packages/eb/95/ff4b8fdfdc07645854fe141d684ada721eafe182482bcb08d2bac7531ca5/pydantic_core-0.39.0-pp37-pypy37_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:45f55076c3844ccf1a9f912d5bef61282baae203b30a7b0158add0b4a2141036"}, - {url = "https://files.pythonhosted.org/packages/ef/d6/11fdc62864ce49bbab385bb06de6b717b2e9447884fe723e1c7f4ff376e2/pydantic_core-0.39.0-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:bed383476707e6aeb8d9d6fc83a9b9a6b4f0a00ae440ca3f1cc17686ae3e45ab"}, - {url = "https://files.pythonhosted.org/packages/f2/68/df76ad84b7ed61ef388eeaab89bc9669fb709127c01abafe8009d51329a4/pydantic_core-0.39.0-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:7cdcd13b84411d6194de988044b21c2859fcc7c673e0f6dd92e854489c21ae2f"}, - {url = "https://files.pythonhosted.org/packages/f3/d9/9b7391a49be7ccbd721026c4dd660f1452526a7812b6588d7a41c657c175/pydantic_core-0.39.0-pp37-pypy37_pp73-macosx_10_7_x86_64.whl", hash = "sha256:d3240340147504a1d6a3c86f43b644469f8c61992e0d88287701ee8f6b1b0b2d"}, - {url = "https://files.pythonhosted.org/packages/f8/64/20fd09945907199d0a0f516bd4589e31a04e25fce9775ffc3514016444bf/pydantic_core-0.39.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:7bf7470f621285303a5aa6b3e4fb148c5b69f8ee485a920ee9cc1472fd282d2e"}, - {url = "https://files.pythonhosted.org/packages/f8/ac/b53b69b8dc48f26a3c4176960e5d488772c6912cf1bfb998e8ca57498f10/pydantic_core-0.39.0-pp39-pypy39_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:d2c52a9269c302b75265e45f72e1c3a3d4e473c90f11d3c5671ddfa7ba891eae"}, - {url = "https://files.pythonhosted.org/packages/fd/e4/62a993fd668c679373487a9f4eb89bcda1d44a7d75c532872cf549cabc93/pydantic_core-0.39.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4060e765690727095969f7038e8e1c7251d4bd518e151174b5cb54dae0163c68"}, - {url = "https://files.pythonhosted.org/packages/ff/89/1c2c8c2f9631dcce456e7f116e3af5c049795336ae6bcd8631154ead29d0/pydantic_core-0.39.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:8e86833a13a4f00f264d04f3f36048ce3fea0a92a730db6c9c9c0bf33e277bc2"}, -] -"pylint 2.17.4" = [ - {url = "https://files.pythonhosted.org/packages/04/4c/3f7d42a1378c40813772bc5f25184144da09f00ffbe3f60ae985ffa7e10f/pylint-2.17.4-py3-none-any.whl", hash = "sha256:7a1145fb08c251bdb5cca11739722ce64a63db479283d10ce718b2460e54123c"}, - {url = "https://files.pythonhosted.org/packages/7e/d4/aba77d10841710fea016422f419dfe501dee05fa0fc3898dc048f7bf3f60/pylint-2.17.4.tar.gz", hash = "sha256:5dcf1d9e19f41f38e4e85d10f511e5b9c35e1aa74251bf95cdd8cb23584e2db1"}, -] -"pytest 7.3.2" = [ - {url = "https://files.pythonhosted.org/packages/58/2a/07c65fdc40846ecb8a9dcda2c38fcb5a06a3e39d08d4a4960916431951cb/pytest-7.3.2.tar.gz", hash = "sha256:ee990a3cc55ba808b80795a79944756f315c67c12b56abd3ac993a7b8c17030b"}, - {url = "https://files.pythonhosted.org/packages/7a/d0/de969198293cdea22b3a6fb99a99aeeddb7b3827f0823b33c5dc0734bbe5/pytest-7.3.2-py3-none-any.whl", hash = "sha256:cdcbd012c9312258922f8cd3f1b62a6580fdced17db6014896053d47cddf9295"}, -] -"pytest-click 1.1.0" = [ - {url = "https://files.pythonhosted.org/packages/72/1a/eb53371999b94b3c995c00117f3a232dbf6f56c7152a52cf3e3777e7d49d/pytest_click-1.1.0-py3-none-any.whl", hash = "sha256:eade4742c2f02c345e78a32534a43e8db04acf98d415090539dacc880b7cd0e9"}, - {url = "https://files.pythonhosted.org/packages/ec/ec/bca3cd29ba2b025ae41666b851f6ff05fb77cb4c13719baaeda6a757772a/pytest_click-1.1.0.tar.gz", hash = "sha256:fdd9f6721f877dda021e7c5dc73e70aecd37e5ed23ec6820f8a7b3fd7b4f8d30"}, -] -"pytest-cov 4.1.0" = [ - {url = "https://files.pythonhosted.org/packages/7a/15/da3df99fd551507694a9b01f512a2f6cf1254f33601605843c3775f39460/pytest-cov-4.1.0.tar.gz", hash = "sha256:3904b13dfbfec47f003b8e77fd5b589cd11904a21ddf1ab38a64f204d6a10ef6"}, - {url = "https://files.pythonhosted.org/packages/a7/4b/8b78d126e275efa2379b1c2e09dc52cf70df16fc3b90613ef82531499d73/pytest_cov-4.1.0-py3-none-any.whl", hash = "sha256:6ba70b9e97e69fcc3fb45bfeab2d0a138fb65c4d0d6a41ef33983ad114be8c3a"}, -] -"pytest-cppython 0.3.1.dev45" = [ - {url = "https://files.pythonhosted.org/packages/5f/73/cd09e0ab2240398b7cdb8055f5bc218c2ba46e4f01c2feddce52838cafc7/pytest-cppython-0.3.1.dev45.tar.gz", hash = "sha256:e71f4ecbfb9e0d1e0c2f6d48b71cd119df554d0c68c2ba7c7e0a33ce66e00fe0"}, - {url = "https://files.pythonhosted.org/packages/a4/d7/926420c6e86280c37b1d4b02aea02f86820b5c7656da21a923d7055b8c14/pytest_cppython-0.3.1.dev45-py3-none-any.whl", hash = "sha256:b1a4bd299cf70000563a7317b2717e7168d03f2f6a84cdd3a507e3e0d2fe9736"}, -] -"pytest-mock 3.11.1" = [ - {url = "https://files.pythonhosted.org/packages/d8/2d/b3a811ec4fa24190a9ec5013e23c89421a7916167c6240c31fdc445f850c/pytest-mock-3.11.1.tar.gz", hash = "sha256:7f6b125602ac6d743e523ae0bfa71e1a697a2f5534064528c6ff84c2f7c2fc7f"}, - {url = "https://files.pythonhosted.org/packages/da/85/80ae98e019a429445bfb74e153d4cb47c3695e3e908515e95e95c18237e5/pytest_mock-3.11.1-py3-none-any.whl", hash = "sha256:21c279fff83d70763b05f8874cc9cfb3fcacd6d354247a976f9529d19f9acf39"}, -] -"tomlkit 0.11.8" = [ - {url = "https://files.pythonhosted.org/packages/10/37/dd53019ccb72ef7d73fff0bee9e20b16faff9658b47913a35d79e89978af/tomlkit-0.11.8.tar.gz", hash = "sha256:9330fc7faa1db67b541b28e62018c17d20be733177d290a13b24c62d1614e0c3"}, - {url = "https://files.pythonhosted.org/packages/ef/a8/b1c193be753c02e2a94af6e37ee45d3378a74d44fe778c2434a63af92731/tomlkit-0.11.8-py3-none-any.whl", hash = "sha256:8c726c4c202bdb148667835f68d68780b9a003a9ec34167b6c673b38eff2a171"}, -] -"typing-extensions 4.6.3" = [ - {url = "https://files.pythonhosted.org/packages/42/56/cfaa7a5281734dadc842f3a22e50447c675a1c5a5b9f6ad8a07b467bffe7/typing_extensions-4.6.3.tar.gz", hash = "sha256:d91d5919357fe7f681a9f2b5b4cb2a5f1ef0a1e9f59c4d8ff0d3491e05c0ffd5"}, - {url = "https://files.pythonhosted.org/packages/5f/86/d9b1518d8e75b346a33eb59fa31bdbbee11459a7e2cc5be502fa779e96c5/typing_extensions-4.6.3-py3-none-any.whl", hash = "sha256:88a4153d8505aabbb4e13aacb7c486c2b4a33ca3b3f807914a9b4c844c471c26"}, -] -"wrapt 1.15.0" = [ - {url = "https://files.pythonhosted.org/packages/0c/6e/f80c23efc625c10460240e31dcb18dd2b34b8df417bc98521fbfd5bc2e9a/wrapt-1.15.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:21f6d9a0d5b3a207cdf7acf8e58d7d13d463e639f0c7e01d82cdb671e6cb7923"}, - {url = "https://files.pythonhosted.org/packages/0f/9a/179018bb3f20071f39597cd38fc65d6285d7b89d57f6c51f502048ed28d9/wrapt-1.15.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:76407ab327158c510f44ded207e2f76b657303e17cb7a572ffe2f5a8a48aa04d"}, - {url = "https://files.pythonhosted.org/packages/12/5a/fae60a8bc9b07a3a156989b79e14c58af05ab18375749ee7c12b2f0dddbd/wrapt-1.15.0-cp27-cp27m-macosx_10_9_x86_64.whl", hash = "sha256:ca1cccf838cd28d5a0883b342474c630ac48cac5df0ee6eacc9c7290f76b11c1"}, - {url = "https://files.pythonhosted.org/packages/18/f6/659d7c431a57da9c9a86945834ab2bf512f1d9ebefacea49135a0135ef1a/wrapt-1.15.0-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:f2e69b3ed24544b0d3dbe2c5c0ba5153ce50dcebb576fdc4696d52aa22db6034"}, - {url = "https://files.pythonhosted.org/packages/1e/3c/cb96dbcafbf3a27413fb15e0a1997c4610283f895dc01aca955cd2fda8b9/wrapt-1.15.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:0970ddb69bba00670e58955f8019bec4a42d1785db3faa043c33d81de2bf843c"}, - {url = "https://files.pythonhosted.org/packages/20/01/baec2650208284603961d61f53ee6ae8e3eff63489c7230dff899376a6f6/wrapt-1.15.0-cp35-cp35m-win_amd64.whl", hash = "sha256:fd69666217b62fa5d7c6aa88e507493a34dec4fa20c5bd925e4bc12fce586639"}, - {url = "https://files.pythonhosted.org/packages/21/42/36c98e9c024978f52c218f22eba1addd199a356ab16548af143d3a72ac0d/wrapt-1.15.0-cp27-cp27mu-manylinux1_i686.whl", hash = "sha256:f87ec75864c37c4c6cb908d282e1969e79763e0d9becdfe9fe5473b7bb1e5f09"}, - {url = "https://files.pythonhosted.org/packages/23/0a/9964d7141b8c5e31c32425d3412662a7873aaf0c0964166f4b37b7db51b6/wrapt-1.15.0-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:b67b819628e3b748fd3c2192c15fb951f549d0f47c0449af0764d7647302fda3"}, - {url = "https://files.pythonhosted.org/packages/29/41/f05bf85417473cf6fe4eec7396c63762e5a457a42102bd1b8af059af6586/wrapt-1.15.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:63424c681923b9f3bfbc5e3205aafe790904053d42ddcc08542181a30a7a51bd"}, - {url = "https://files.pythonhosted.org/packages/2b/fb/c31489631bb94ac225677c1090f787a4ae367614b5277f13dbfde24b2b69/wrapt-1.15.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:a74d56552ddbde46c246b5b89199cb3fd182f9c346c784e1a93e4dc3f5ec9975"}, - {url = "https://files.pythonhosted.org/packages/2d/47/16303c59a890696e1a6fd82ba055fc4e0f793fb4815b5003f1f85f7202ce/wrapt-1.15.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:d5fe3e099cf07d0fb5a1e23d399e5d4d1ca3e6dfcbe5c8570ccff3e9208274f7"}, - {url = "https://files.pythonhosted.org/packages/2e/ce/90dcde9ff9238689f111f07b46da2db570252445a781ea147ff668f651b0/wrapt-1.15.0-cp36-cp36m-musllinux_1_1_x86_64.whl", hash = "sha256:b56d5519e470d3f2fe4aa7585f0632b060d532d0696c5bdfb5e8319e1d0f69a2"}, - {url = "https://files.pythonhosted.org/packages/31/e6/6ac59c5570a7b9aaecb10de39f70dacd0290620330277e60b29edcf8bc9a/wrapt-1.15.0-cp27-cp27m-manylinux1_x86_64.whl", hash = "sha256:5fc8e02f5984a55d2c653f5fea93531e9836abbd84342c1d1e17abc4a15084c2"}, - {url = "https://files.pythonhosted.org/packages/39/ee/2b8d608f2bcf86242daadf5b0b746c11d3657b09892345f10f171b5ca3ac/wrapt-1.15.0-cp35-cp35m-win32.whl", hash = "sha256:fbec11614dba0424ca72f4e8ba3c420dba07b4a7c206c8c8e4e73f2e98f4c559"}, - {url = "https://files.pythonhosted.org/packages/44/a1/40379212a0b678f995fdb4f4f28aeae5724f3212cdfbf97bee8e6fba3f1b/wrapt-1.15.0-cp36-cp36m-win_amd64.whl", hash = "sha256:077ff0d1f9d9e4ce6476c1a924a3332452c1406e59d90a2cf24aeb29eeac9420"}, - {url = "https://files.pythonhosted.org/packages/45/90/a959fa50084d7acc2e628f093c9c2679dd25085aa5085a22592e028b3e06/wrapt-1.15.0-cp27-cp27m-manylinux2010_i686.whl", hash = "sha256:96e25c8603a155559231c19c0349245eeb4ac0096fe3c1d0be5c47e075bd4f46"}, - {url = "https://files.pythonhosted.org/packages/47/dd/bee4d33058656c0b2e045530224fcddd9492c354af5d20499e5261148dcb/wrapt-1.15.0-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:5c5aa28df055697d7c37d2099a7bc09f559d5053c3349b1ad0c39000e611d317"}, - {url = "https://files.pythonhosted.org/packages/48/65/0061e7432ca4b635e96e60e27e03a60ddaca3aeccc30e7415fed0325c3c2/wrapt-1.15.0-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:76e9c727a874b4856d11a32fb0b389afc61ce8aaf281ada613713ddeadd1cfec"}, - {url = "https://files.pythonhosted.org/packages/4a/7b/c63103817bd2f3b0145608ef642ce90d8b6d1e5780d218bce92e93045e06/wrapt-1.15.0-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:d787272ed958a05b2c86311d3a4135d3c2aeea4fc655705f074130aa57d71653"}, - {url = "https://files.pythonhosted.org/packages/50/eb/af864a01300878f69b4949f8381ad57d5519c1791307e9fd0bc7f5ab50a5/wrapt-1.15.0-cp27-cp27m-manylinux1_i686.whl", hash = "sha256:e826aadda3cae59295b95343db8f3d965fb31059da7de01ee8d1c40a60398b29"}, - {url = "https://files.pythonhosted.org/packages/54/21/282abeb456f22d93533b2d373eeb393298a30b0cb0683fa8a4ed77654273/wrapt-1.15.0-cp38-cp38-win_amd64.whl", hash = "sha256:b06fa97478a5f478fb05e1980980a7cdf2712015493b44d0c87606c1513ed5b1"}, - {url = "https://files.pythonhosted.org/packages/55/20/90f5affc2c879db408124ce14b9443b504f961e47a517dff4f24a00df439/wrapt-1.15.0-cp38-cp38-win32.whl", hash = "sha256:abd8f36c99512755b8456047b7be10372fca271bf1467a1caa88db991e7c421b"}, - {url = "https://files.pythonhosted.org/packages/5d/c4/3cc25541ec0404dd1d178e7697a34814d77be1e489cd6f8cb055ac688314/wrapt-1.15.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:74934ebd71950e3db69960a7da29204f89624dde411afbfb3b4858c1409b1e98"}, - {url = "https://files.pythonhosted.org/packages/65/be/3ae5afe9d78d97595b28914fa7e375ebc6329549d98f02768d5a08f34937/wrapt-1.15.0-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:780c82a41dc493b62fc5884fb1d3a3b81106642c5c5c78d6a0d4cbe96d62ba7e"}, - {url = "https://files.pythonhosted.org/packages/6b/b0/bde5400fdf6d18cb7ef527831de0f86ac206c4da1670b67633e5a547b05f/wrapt-1.15.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:56374914b132c702aa9aa9959c550004b8847148f95e1b824772d453ac204a72"}, - {url = "https://files.pythonhosted.org/packages/78/f2/106d90140a93690eab240fae76759d62dae639fcec1bd098eccdb83aa38f/wrapt-1.15.0-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:078e2a1a86544e644a68422f881c48b84fef6d18f8c7a957ffd3f2e0a74a0d4a"}, - {url = "https://files.pythonhosted.org/packages/7f/b6/6dc0ddacd20337b4ce6ab0d6b0edc7da3898f85c4f97df7f30267e57509e/wrapt-1.15.0-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2fbfbca668dd15b744418265a9607baa970c347eefd0db6a518aaf0cfbd153c0"}, - {url = "https://files.pythonhosted.org/packages/81/1e/0bb8f01c6ac5baba66ef1ab65f4644bede856c3c7aede18c896be222151c/wrapt-1.15.0-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:b0724f05c396b0a4c36a3226c31648385deb6a65d8992644c12a4963c70326ba"}, - {url = "https://files.pythonhosted.org/packages/88/f1/4dfaa1ad111d2a48429dca133e46249922ee2f279e9fdd4ab5b149cd6c71/wrapt-1.15.0-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:e20076a211cd6f9b44a6be58f7eeafa7ab5720eb796975d0c03f05b47d89eb90"}, - {url = "https://files.pythonhosted.org/packages/8a/1c/740c3ad1b7754dd7213f4df09ccdaf6b19e36da5ff3a269444ba9e103f1b/wrapt-1.15.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:7dc0713bf81287a00516ef43137273b23ee414fe41a3c14be10dd95ed98a2df9"}, - {url = "https://files.pythonhosted.org/packages/8f/87/ba6dc86e8edb28fd1e314446301802751bd3157e9780385c9eef633994b9/wrapt-1.15.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:3bbe623731d03b186b3d6b0d6f51865bf598587c38d6f7b0be2e27414f7f214e"}, - {url = "https://files.pythonhosted.org/packages/94/55/91dd3a7efbc1db2b07bbfc490d48e8484852c355d55e61e8b1565d7725f6/wrapt-1.15.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:54accd4b8bc202966bafafd16e69da9d5640ff92389d33d28555c5fd4f25ccb7"}, - {url = "https://files.pythonhosted.org/packages/96/37/a33c1220e8a298ab18eb070b6a59e4ccc3f7344b434a7ac4bd5d4bdccc97/wrapt-1.15.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:ce42618f67741d4697684e501ef02f29e758a123aa2d669e2d964ff734ee00ee"}, - {url = "https://files.pythonhosted.org/packages/9b/50/383c155a05e3e0361d209e3f55ec823f3736c7a46b29923ea33ab85e8d70/wrapt-1.15.0-cp35-cp35m-manylinux1_i686.whl", hash = "sha256:4ff0d20f2e670800d3ed2b220d40984162089a6e2c9646fdb09b85e6f9a8fc29"}, - {url = "https://files.pythonhosted.org/packages/9d/40/fee1288d654c80fe1bc5ecee1c8d58f761a39bb30c73f1ce106701dd8b0a/wrapt-1.15.0-cp27-cp27mu-manylinux2010_i686.whl", hash = "sha256:493d389a2b63c88ad56cdc35d0fa5752daac56ca755805b1b0c530f785767d5e"}, - {url = "https://files.pythonhosted.org/packages/a2/3e/ee671ac60945154dfa3a406b8cb5cef2e3b4fa31c7d04edeb92716342026/wrapt-1.15.0-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e169e957c33576f47e21864cf3fc9ff47c223a4ebca8960079b8bd36cb014fd0"}, - {url = "https://files.pythonhosted.org/packages/a4/af/8552671e4e7674fcae14bd3976dd9dc6a2b7294730e4a9a94597ac292a21/wrapt-1.15.0-cp35-cp35m-manylinux2010_x86_64.whl", hash = "sha256:75669d77bb2c071333417617a235324a1618dba66f82a750362eccbe5b61d248"}, - {url = "https://files.pythonhosted.org/packages/a6/32/f4868adc994648fac4cfe347bcc1381c9afcb1602c8ba0910f36b96c5449/wrapt-1.15.0-cp310-cp310-win_amd64.whl", hash = "sha256:75760a47c06b5974aa5e01949bf7e66d2af4d08cb8c1d6516af5e39595397f5e"}, - {url = "https://files.pythonhosted.org/packages/a7/da/04883b14284c437eac98c7ad2959197f02acbabd57d5ea8ff4893a7c3920/wrapt-1.15.0-cp37-cp37m-win32.whl", hash = "sha256:02fce1852f755f44f95af51f69d22e45080102e9d00258053b79367d07af39c0"}, - {url = "https://files.pythonhosted.org/packages/a9/64/886e512f438f12424b48a3ab23ae2583ec633be6e13eb97b0ccdff8e328a/wrapt-1.15.0-cp310-cp310-win32.whl", hash = "sha256:26458da5653aa5b3d8dc8b24192f574a58984c749401f98fff994d41d3f08da1"}, - {url = "https://files.pythonhosted.org/packages/aa/24/bbd64ee4e1db9c75ec2a9677c538866f81800bcd2a8abd1a383369369cf5/wrapt-1.15.0-cp27-cp27m-manylinux2010_x86_64.whl", hash = "sha256:40737a081d7497efea35ab9304b829b857f21558acfc7b3272f908d33b0d9d4c"}, - {url = "https://files.pythonhosted.org/packages/af/23/cf5dbfd676480fa8fc6eecc4c413183cd8e14369321c5111fec5c12550e9/wrapt-1.15.0-cp39-cp39-win32.whl", hash = "sha256:46ed616d5fb42f98630ed70c3529541408166c22cdfd4540b88d5f21006b0eff"}, - {url = "https://files.pythonhosted.org/packages/af/7f/25913aacbe0c2c68e7354222bdefe4e840489725eb835e311c581396f91f/wrapt-1.15.0-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c99f4309f5145b93eca6e35ac1a988f0dc0a7ccf9ccdcd78d3c0adf57224e62f"}, - {url = "https://files.pythonhosted.org/packages/b1/8b/f4c02cf1f841dede987f93c37d42256dc4a82cd07173ad8a5458eee1c412/wrapt-1.15.0-cp37-cp37m-win_amd64.whl", hash = "sha256:abd52a09d03adf9c763d706df707c343293d5d106aea53483e0ec8d9e310ad5e"}, - {url = "https://files.pythonhosted.org/packages/b2/b0/a56b129822568d9946e009e8efd53439b9dd38cc1c4af085aa44b2485b40/wrapt-1.15.0-cp36-cp36m-win32.whl", hash = "sha256:77d4c1b881076c3ba173484dfa53d3582c1c8ff1f914c6461ab70c8428b796c1"}, - {url = "https://files.pythonhosted.org/packages/b6/0c/435198dbe6961c2343ca725be26b99c8aee615e32c45bc1cb2a960b06183/wrapt-1.15.0-cp36-cp36m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:38adf7198f8f154502883242f9fe7333ab05a5b02de7d83aa2d88ea621f13364"}, - {url = "https://files.pythonhosted.org/packages/b7/3d/9d3cd75f7fc283b6e627c9b0e904189c41ca144185fd8113a1a094dec8ca/wrapt-1.15.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:2e51de54d4fb8fb50d6ee8327f9828306a959ae394d3e01a1ba8b2f937747d86"}, - {url = "https://files.pythonhosted.org/packages/b9/40/975fbb1ab03fa987900bacc365645c4cbead22baddd273b4f5db7f9843d2/wrapt-1.15.0-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3abbe948c3cbde2689370a262a8d04e32ec2dd4f27103669a45c6929bcdbfe7c"}, - {url = "https://files.pythonhosted.org/packages/bd/47/57ffe222af59fae1eb56bca7d458b704a9b59380c47f0921efb94dc4786a/wrapt-1.15.0-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:b130fe77361d6771ecf5a219d8e0817d61b236b7d8b37cc045172e574ed219e6"}, - {url = "https://files.pythonhosted.org/packages/c3/12/5fabf0014a0f30eb3975b7199ac2731215a40bc8273083f6a89bd6cadec6/wrapt-1.15.0-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:cd525e0e52a5ff16653a3fc9e3dd827981917d34996600bbc34c05d048ca35cc"}, - {url = "https://files.pythonhosted.org/packages/c4/e3/01f879f8e7c1221c72dbd4bfa106624ee3d01cb8cbc82ef57fbb95880cac/wrapt-1.15.0-cp35-cp35m-manylinux2010_i686.whl", hash = "sha256:896689fddba4f23ef7c718279e42f8834041a21342d95e56922e1c10c0cc7afb"}, - {url = "https://files.pythonhosted.org/packages/c7/cd/18d95465323f29e3f3fd3ff84f7acb402a6a61e6caf994dced7140d78f85/wrapt-1.15.0-cp35-cp35m-manylinux1_x86_64.whl", hash = "sha256:9ed6aa0726b9b60911f4aed8ec5b8dd7bf3491476015819f56473ffaef8959bd"}, - {url = "https://files.pythonhosted.org/packages/ca/1c/5caf61431705b3076ca1152abfd6da6304697d7d4fe48bb3448a6decab40/wrapt-1.15.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a89ce3fd220ff144bd9d54da333ec0de0399b52c9ac3d2ce34b569cf1a5748fb"}, - {url = "https://files.pythonhosted.org/packages/cd/a0/84b8fe24af8d7f7374d15e0da1cd5502fff59964bbbf34982df0ca2c9047/wrapt-1.15.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:230ae493696a371f1dbffaad3dafbb742a4d27a0afd2b1aecebe52b740167e7f"}, - {url = "https://files.pythonhosted.org/packages/cd/f0/060add4fcb035024f84fb3b5523fb2b119ac08608af3f61dbdda38477900/wrapt-1.15.0-cp39-cp39-win_amd64.whl", hash = "sha256:eef4d64c650f33347c1f9266fa5ae001440b232ad9b98f1f43dfe7a79435c0a6"}, - {url = "https://files.pythonhosted.org/packages/cf/b1/3c24fc0f6b589ad8c99cfd1cd3e586ef144e16aaf9381ed952d047a7ee54/wrapt-1.15.0-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:578383d740457fa790fdf85e6d346fda1416a40549fe8db08e5e9bd281c6a475"}, - {url = "https://files.pythonhosted.org/packages/d1/74/3c99ce16947f7af901f6203ab4a3d0908c4db06e800571dabfe8525fa925/wrapt-1.15.0-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:bbeccb1aa40ab88cd29e6c7d8585582c99548f55f9b2581dfc5ba68c59a85752"}, - {url = "https://files.pythonhosted.org/packages/d2/60/9fe25f4cd910ae94e75a1fd4772b058545e107a82629a5ca0f2cd7cc34d5/wrapt-1.15.0-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3a8564f283394634a7a7054b7983e47dbf39c07712d7b177b37e03f2467a024e"}, - {url = "https://files.pythonhosted.org/packages/d7/4b/1bd4837362d31d402b9bc1a27cdd405baf994dbf9942696f291d2f7eeb73/wrapt-1.15.0-cp36-cp36m-musllinux_1_1_aarch64.whl", hash = "sha256:a4cbb9ff5795cd66f0066bdf5947f170f5d63a9274f99bdbca02fd973adcf2a8"}, - {url = "https://files.pythonhosted.org/packages/dd/42/9eedee19435dfc0478cdb8bdc71800aab15a297d1074f1aae0d9489adbc3/wrapt-1.15.0-cp311-cp311-win_amd64.whl", hash = "sha256:a487f72a25904e2b4bbc0817ce7a8de94363bd7e79890510174da9d901c38705"}, - {url = "https://files.pythonhosted.org/packages/dd/e9/85e780a6b70191114b13b129867cec2fab84279f6beb788e130a26e4ca58/wrapt-1.15.0-cp27-cp27mu-manylinux1_x86_64.whl", hash = "sha256:1286eb30261894e4c70d124d44b7fd07825340869945c79d05bda53a40caa079"}, - {url = "https://files.pythonhosted.org/packages/dd/eb/389f9975a6be31ddd19d29128a11f1288d07b624e464598a4b450f8d007e/wrapt-1.15.0-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9d37ac69edc5614b90516807de32d08cb8e7b12260a285ee330955604ed9dd29"}, - {url = "https://files.pythonhosted.org/packages/de/77/e2ebfa2f46c19094888a364fdb59aeab9d3336a3ad7ccdf542de572d2a35/wrapt-1.15.0-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:96177eb5645b1c6985f5c11d03fc2dbda9ad24ec0f3a46dcce91445747e15094"}, - {url = "https://files.pythonhosted.org/packages/e8/86/fc38e58843159bdda745258d872b1187ad916087369ec57ef93f5e832fa8/wrapt-1.15.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:ba1711cda2d30634a7e452fc79eabcadaffedf241ff206db2ee93dd2c89a60e7"}, - {url = "https://files.pythonhosted.org/packages/ec/f4/f84538a367105f0a7e507f0c6766d3b15b848fd753647bbf0c206399b322/wrapt-1.15.0-cp311-cp311-win32.whl", hash = "sha256:bd84395aab8e4d36263cd1b9308cd504f6cf713b7d6d3ce25ea55670baec5416"}, - {url = "https://files.pythonhosted.org/packages/ee/25/83f5dcd9f96606521da2d0e7a03a18800264eafb59b569ff109c4d2fea67/wrapt-1.15.0-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:7eebcdbe3677e58dd4c0e03b4f2cfa346ed4049687d839adad68cc38bb559c92"}, - {url = "https://files.pythonhosted.org/packages/f6/89/bf77b063c594795aaa056cac7b467463702f346d124d46d7f06e76e8cd97/wrapt-1.15.0-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:2cf56d0e237280baed46f0b5316661da892565ff58309d4d2ed7dba763d984b8"}, - {url = "https://files.pythonhosted.org/packages/f6/d3/3c6bd4db883537c40eb9d41d738d329d983d049904f708267f3828a60048/wrapt-1.15.0-cp27-cp27mu-manylinux2010_x86_64.whl", hash = "sha256:58d7a75d731e8c63614222bcb21dd992b4ab01a399f1f09dd82af17bbfc2368a"}, - {url = "https://files.pythonhosted.org/packages/f8/49/10013abe31f6892ae57c5cc260f71b7e08f1cc00f0d7b2bcfa482ea74349/wrapt-1.15.0-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d6bcbfc99f55655c3d93feb7ef3800bd5bbe963a755687cbf1f490a71fb7794b"}, - {url = "https://files.pythonhosted.org/packages/f8/7d/73e4e3cdb2c780e13f9d87dc10488d7566d8fd77f8d68f0e416bfbd144c7/wrapt-1.15.0.tar.gz", hash = "sha256:d06730c6aed78cee4126234cf2d071e01b44b915e725a6cb439a879ec9754a3a"}, - {url = "https://files.pythonhosted.org/packages/f8/f8/e068dafbb844c1447c55b23c921f3d338cddaba4ea53187a7dd0058452d9/wrapt-1.15.0-py3-none-any.whl", hash = "sha256:64b1df0f83706b4ef4cfb4fb0e4c2669100fd7ecacfb59e091fad300d4e04640"}, - {url = "https://files.pythonhosted.org/packages/fb/2d/b6fd53b7dbf94d542866cbf1021b9a62595177fc8405fd75e0a5bf3fa3b8/wrapt-1.15.0-cp36-cp36m-musllinux_1_1_i686.whl", hash = "sha256:af5bd9ccb188f6a5fdda9f1f09d9f4c86cc8a539bd48a0bfdc97723970348418"}, - {url = "https://files.pythonhosted.org/packages/fb/bd/ca7fd05a45e7022f3b780a709bbdb081a6138d828ecdb5b7df113a3ad3be/wrapt-1.15.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:41d07d029dd4157ae27beab04d22b8e261eddfc6ecd64ff7000b10dc8b3a5727"}, - {url = "https://files.pythonhosted.org/packages/fd/8a/db55250ad0b536901173d737781e3b5a7cc7063c46b232c2e3a82a33c032/wrapt-1.15.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:cdb4f085756c96a3af04e6eca7f08b1345e94b53af8921b25c72f096e704e145"}, - {url = "https://files.pythonhosted.org/packages/ff/f6/c044dec6bec4ce64fbc92614c5238dd432780b06293d2efbcab1a349629c/wrapt-1.15.0-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:b02f21c1e2074943312d03d243ac4388319f2456576b2c6023041c4d57cd7019"}, +version = "4.10.0" +requires_python = ">=3.8" +summary = "Backported and Experimental Type Hints for Python 3.8+" +files = [ + {file = "typing_extensions-4.10.0-py3-none-any.whl", hash = "sha256:69b1a937c3a517342112fb4c6df7e72fc39a38e7891a5730ed4985b5214b5475"}, + {file = "typing_extensions-4.10.0.tar.gz", hash = "sha256:b0abd7c89e8fb96f98db18d86106ff1d90ab692004eb746cf6eda2682f91b3cb"}, ] diff --git a/pyproject.toml b/pyproject.toml index 993ed7b..c1855d7 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -2,7 +2,7 @@ description = "A Python management solution for C++ dependencies" name = "cppython" -license = "MIT" +license = {text = "MIT"} authors = [ {name = "Synodic Software", email = "contact@synodic.software"}, @@ -11,13 +11,13 @@ readme = "README.md" dynamic = ["version"] -requires-python = ">=3.11" +requires-python = ">=3.12" dependencies = [ "click>=8.1.3", - "tomlkit>=0.11.4", + "tomlkit>=0.12.4", "cppython-core>=0.4.1.dev19", - "pydantic>=2.0a4", + "pydantic>=2.6.3", "packaging>=21.3", ] @@ -28,18 +28,21 @@ paths = ["LICENSE.md"] homepage = "https://github.com/Synodic-Software/CPPython" repository = "https://github.com/Synodic-Software/CPPython" -[tool.pdm] -version = {use_scm = true} +[tool.pdm.options] +update = ["--update-all"] + +[tool.pdm.version] +source = "scm" [tool.pdm.dev-dependencies] lint = [ - "black>=22.6.0", - "pylint>=2.14.5", + "black>=24.2.0", + "pylint>=3.0.0", "isort>=5.10.1", - "mypy>=1.2", + "mypy>=1.9", ] test = [ - "pytest>=7.1.2", + "pytest>=8.0.2", "pytest-cov>=3.0.0", "pytest-click>=1.1", "pytest-mock>=3.8.2", @@ -74,7 +77,6 @@ skip_gitignore = true [tool.mypy] exclude = "__pypackages__" plugins = ["pydantic.mypy"] -show_error_codes = true strict = true [tool.pylint.MAIN] @@ -87,9 +89,6 @@ load-plugins = [ "pylint.extensions.bad_builtin", ] -[tool.pylint.typecheck] -ignored-classes = "FieldInfo" - [tool.pylint.format] max-line-length = "120" @@ -106,4 +105,3 @@ skip_empty = true [build-system] build-backend = "pdm.backend" requires = ["pdm.backend"] - diff --git a/tests/unit/test_project.py b/tests/unit/test_project.py index e505f18..73c4e56 100644 --- a/tests/unit/test_project.py +++ b/tests/unit/test_project.py @@ -1,22 +1,28 @@ """Tests the Project type""" - from pathlib import Path import tomlkit -from cppython_core.schema import ProjectConfiguration +from cppython_core.schema import ( + CPPythonLocalConfiguration, + PEP621Configuration, + ProjectConfiguration, + PyProject, + ToolData, +) from pytest import FixtureRequest from pytest_cppython.mock.interface import MockInterface from cppython.project import Project +pep621 = PEP621Configuration(name="test-project", version="0.1.0") + class TestProject: """Various tests for the project object""" - def test_default_construction(self, request: FixtureRequest) -> None: - """The project type should be constructable without pyproject.toml support. - The CPPython project uses a working pyproject.toml file, and this file is used as the test data + def test_self_construction(self, request: FixtureRequest) -> None: + """The project type should be constructable with this projects configuration Args: request: The pytest request fixture @@ -30,10 +36,52 @@ def test_default_construction(self, request: FixtureRequest) -> None: pyproject_data = tomlkit.loads(file.read_text(encoding="utf-8")) project = Project(project_configuration, interface, pyproject_data) - assert project + # Doesn't have the cppython table + assert not project.enabled + + def test_missing_tool_table(self, tmp_path: Path) -> None: + """The project type should be constructable without the tool table + + Args: + tmp_path: Temporary directory for dummy data + """ + + file_path = tmp_path / "pyproject.toml" + + with open(file_path, "a", encoding="utf8") as file: + file.write("") + + project_configuration = ProjectConfiguration(pyproject_file=file_path, version=None) + interface = MockInterface() + + pyproject = PyProject(project=pep621) + project = Project(project_configuration, interface, pyproject.model_dump(by_alias=True)) + + assert not project.enabled + + def test_missing_cppython_table(self, tmp_path: Path) -> None: + """The project type should be constructable without the cppython table + + Args: + tmp_path: Temporary directory for dummy data + """ + + file_path = tmp_path / "pyproject.toml" + + with open(file_path, "a", encoding="utf8") as file: + file.write("") + + project_configuration = ProjectConfiguration(pyproject_file=file_path, version=None) + interface = MockInterface() + + tool_data = ToolData() + pyproject = PyProject(project=pep621, tool=tool_data) + project = Project(project_configuration, interface, pyproject.model_dump(by_alias=True)) + + assert not project.enabled - def test_missing_project_table(self, tmp_path: Path) -> None: - """The project type should be constructable without the top level table + def test_default_cppython_table(self, tmp_path: Path) -> None: + """The project type should be constructable with the default cppython table Args: tmp_path: Temporary directory for dummy data @@ -47,6 +95,9 @@ def test_missing_project_table(self, tmp_path: Path) -> None: project_configuration = ProjectConfiguration(pyproject_file=file_path, version=None) interface = MockInterface() - project = Project(project_configuration, interface, {}) + cppython_config = CPPythonLocalConfiguration() + tool_data = ToolData(cppython=cppython_config) + pyproject = PyProject(project=pep621, tool=tool_data) + project = Project(project_configuration, interface, pyproject.model_dump(by_alias=True)) - assert project + assert project.enabled From f028bf58ba93c80cdb60031832818d273b32c6db Mon Sep 17 00:00:00 2001 From: Asher Norland Date: Wed, 13 Mar 2024 17:39:34 -0400 Subject: [PATCH 08/16] Data Object After initialization, supports data queries and management --- cppython/builder.py | 102 ++++++++++++++++---------------------------- cppython/data.py | 56 ++++++++++++++++++++++++ cppython/project.py | 63 ++++++--------------------- 3 files changed, 106 insertions(+), 115 deletions(-) create mode 100644 cppython/data.py diff --git a/cppython/builder.py b/cppython/builder.py index c4ed91c..72a5394 100644 --- a/cppython/builder.py +++ b/cppython/builder.py @@ -1,7 +1,6 @@ """Everything needed to build a CPPython project""" import logging -from dataclasses import dataclass from importlib import metadata from inspect import getmodule from logging import Logger @@ -34,14 +33,7 @@ ProjectData, ) - -@dataclass -class Plugins: - """The plugin data for CPPython""" - - generator: Generator - provider: Provider - scm: SCM +from cppython.data import Data, Plugins class Builder: @@ -60,19 +52,7 @@ def __init__(self, project_configuration: ProjectConfiguration, logger: Logger) self.logger.info("Logging setup complete") - def generate_project_data(self, project_configuration: ProjectConfiguration) -> ProjectData: - """_summary_ - - Args: - project_configuration: _description_ - - Returns: - _description_ - """ - - return resolve_project_configuration(project_configuration) - - def generate_plugins( + def _generate_plugins( self, local_configuration: CPPythonLocalConfiguration, project_data: ProjectData ) -> PluginBuildData: """_summary_ @@ -85,30 +65,30 @@ def generate_plugins( _description_ """ - raw_generator_plugins = self.find_generators() - generator_plugins = self.filter_plugins( + raw_generator_plugins = self._find_generators() + generator_plugins = self._filter_plugins( raw_generator_plugins, local_configuration.generator_name, "Generator", ) - raw_provider_plugins = self.find_providers() - provider_plugins = self.filter_plugins( + raw_provider_plugins = self._find_providers() + provider_plugins = self._filter_plugins( raw_provider_plugins, local_configuration.provider_name, "Provider", ) - scm_plugins = self.find_source_managers() + scm_plugins = self._find_source_managers() - scm_type = self.select_scm(scm_plugins, project_data) + scm_type = self._select_scm(scm_plugins, project_data) # Solve the messy interactions between plugins - generator_type, provider_type = self.solve(generator_plugins, provider_plugins) + generator_type, provider_type = self._solve(generator_plugins, provider_plugins) return PluginBuildData(generator_type=generator_type, provider_type=provider_type, scm_type=scm_type) - def generate_cppython_plugin_data(self, plugin_build_data: PluginBuildData) -> PluginCPPythonData: + def _generate_cppython_plugin_data(self, plugin_build_data: PluginBuildData) -> PluginCPPythonData: """Generates the CPPython plugin data from the resolved plugins Args: @@ -124,7 +104,7 @@ def generate_cppython_plugin_data(self, plugin_build_data: PluginBuildData) -> P scm_name=plugin_build_data.scm_type.name(), ) - def generate_pep621_data( + def _generate_pep621_data( self, pep621_configuration: PEP621Configuration, project_configuration: ProjectConfiguration, scm: SCM | None ) -> PEP621Data: """_summary_ @@ -139,7 +119,7 @@ def generate_pep621_data( """ return resolve_pep621(pep621_configuration, project_configuration, scm) - def generate_core_data( + def _generate_core_data( self, project_data: ProjectData, local_configuration: CPPythonLocalConfiguration, @@ -165,7 +145,7 @@ def generate_core_data( return CoreData(project_data=project_data, cppython_data=cppython_data) - def resolve_global_config(self) -> CPPythonGlobalConfiguration: + def _resolve_global_config(self) -> CPPythonGlobalConfiguration: """Generates the global configuration object Returns: @@ -174,7 +154,7 @@ def resolve_global_config(self) -> CPPythonGlobalConfiguration: return CPPythonGlobalConfiguration() - def find_generators(self) -> list[type[Generator]]: + def _find_generators(self) -> list[type[Generator]]: """_summary_ Raises: @@ -204,7 +184,7 @@ def find_generators(self) -> list[type[Generator]]: return plugin_types - def find_providers(self) -> list[type[Provider]]: + def _find_providers(self) -> list[type[Provider]]: """_summary_ Raises: @@ -234,7 +214,7 @@ def find_providers(self) -> list[type[Provider]]: return plugin_types - def find_source_managers(self) -> list[type[SCM]]: + def _find_source_managers(self) -> list[type[SCM]]: """_summary_ Raises: @@ -264,7 +244,7 @@ def find_source_managers(self) -> list[type[SCM]]: return plugin_types - def filter_plugins[ + def _filter_plugins[ T: DataPlugin ](self, plugin_types: list[type[T]], pinned_name: str | None, group_name: str) -> list[type[T]]: """Finds and filters data plugins @@ -307,7 +287,7 @@ def filter_plugins[ return supported_types - def select_scm(self, scm_plugins: list[type[SCM]], project_data: ProjectData) -> type[SCM]: + def _select_scm(self, scm_plugins: list[type[SCM]], project_data: ProjectData) -> type[SCM]: """_summary_ Args: @@ -327,7 +307,7 @@ def select_scm(self, scm_plugins: list[type[SCM]], project_data: ProjectData) -> raise PluginError("No SCM plugin was found that supports the given path") - def solve( + def _solve( self, generator_types: list[type[Generator]], provider_types: list[type[Provider]] ) -> tuple[type[Generator], type[Provider]]: """_summary_ @@ -358,7 +338,7 @@ def solve( return combos[0] - def create_scm( + def _create_scm( self, core_data: CoreData, scm_type: type[SCM], @@ -367,9 +347,7 @@ def create_scm( Args: core_data: _description_ - - Raises: - PluginError: Ya + scm_type: _description_ Returns: _description_ @@ -382,7 +360,7 @@ def create_scm( return plugin - def create_generator( + def _create_generator( self, core_data: CoreData, pep621_data: PEP621Data, @@ -397,9 +375,6 @@ def create_generator( generator_configuration: The generator table of the CPPython configuration data generator_type: The plugin type - Raises: - PluginError: Raised if no viable generator plugin was found - Returns: The constructed generator """ @@ -421,7 +396,7 @@ def create_generator( return generator_type(generator_data, core_plugin_data, generator_configuration) - def create_provider( + def _create_provider( self, core_data: CoreData, pep621_data: PEP621Data, @@ -436,9 +411,6 @@ def create_provider( provider_configuration: The provider data table provider_type: The type to instantiate - Raises: - PluginError: Raised if no viable provider plugin was found - Returns: A constructed provider plugins """ @@ -460,9 +432,7 @@ def create_provider( return provider_type(provider_data, core_plugin_data, provider_configuration) - def build( - self, pep621_configuration: PEP621Configuration, local_configuration: CPPythonLocalConfiguration - ) -> Plugins: + def build(self, pep621_configuration: PEP621Configuration, local_configuration: CPPythonLocalConfiguration) -> Data: """_summary_ Args: @@ -473,27 +443,29 @@ def build( _description_ """ - project_data = self.generate_project_data(self.project_configuration) + project_data = resolve_project_configuration(self.project_configuration) - plugin_build_data = self.generate_plugins(local_configuration, project_data) - plugin_cppython_data = self.generate_cppython_plugin_data(plugin_build_data) + plugin_build_data = self._generate_plugins(local_configuration, project_data) + plugin_cppython_data = self._generate_cppython_plugin_data(plugin_build_data) - _core_data = self.generate_core_data( + core_data = self._generate_core_data( project_data, local_configuration, plugin_cppython_data, ) - scm = self.create_scm(_core_data, plugin_build_data.scm_type) + scm = self._create_scm(core_data, plugin_build_data.scm_type) - pep621_data = self.generate_pep621_data(pep621_configuration, self.project_configuration, scm) + pep621_data = self._generate_pep621_data(pep621_configuration, self.project_configuration, scm) # Create the chosen plugins - generator = self.create_generator( - _core_data, pep621_data, local_configuration.generator, plugin_build_data.generator_type + generator = self._create_generator( + core_data, pep621_data, local_configuration.generator, plugin_build_data.generator_type ) - provider = self.create_provider( - _core_data, pep621_data, local_configuration.provider, plugin_build_data.provider_type + provider = self._create_provider( + core_data, pep621_data, local_configuration.provider, plugin_build_data.provider_type ) - return Plugins(generator=generator, provider=provider, scm=scm) + plugins = Plugins(generator=generator, provider=provider, scm=scm) + + return Data(core_data, plugins, self.logger) diff --git a/cppython/data.py b/cppython/data.py new file mode 100644 index 0000000..41ea771 --- /dev/null +++ b/cppython/data.py @@ -0,0 +1,56 @@ +"""Contains and manages the project data""" + +from dataclasses import dataclass +from logging import Logger + +from cppython_core.exceptions import PluginError +from cppython_core.plugin_schema.generator import Generator +from cppython_core.plugin_schema.provider import Provider +from cppython_core.plugin_schema.scm import SCM +from cppython_core.schema import CoreData + + +@dataclass +class Plugins: + """The plugin data for CPPython""" + + generator: Generator + provider: Provider + scm: SCM + + +class Data: + """_summary_""" + + def __init__(self, core_data: CoreData, plugins: Plugins, logger: Logger) -> None: + self._core_data = core_data + self._plugins = plugins + self.logger = logger + + @property + def plugins(self) -> Plugins: + """The plugin data for CPPython""" + return self._plugins + + def sync(self) -> None: + """Gathers sync information from providers and passes it to the generator + + Raises: + PluginError: Plugin error + """ + + if (sync_data := self.plugins.provider.sync_data(self.plugins.generator)) is None: + raise PluginError("The provider doesn't support the generator") + + self.plugins.generator.sync(sync_data) + + async def download_provider_tools(self) -> None: + """Download the provider tooling if required""" + base_path = self._core_data.cppython_data.install_path + + path = base_path / self.plugins.provider.name() + + path.mkdir(parents=True, exist_ok=True) + + self.logger.warning("Downloading the %s requirements to %s", self.plugins.provider.name(), path) + await self.plugins.provider.download_tooling(path) diff --git a/cppython/project.py b/cppython/project.py index a85acff..f4e7d3a 100644 --- a/cppython/project.py +++ b/cppython/project.py @@ -4,9 +4,9 @@ import logging from typing import Any -from cppython_core.exceptions import ConfigException, PluginError +from cppython_core.exceptions import ConfigException from cppython_core.resolution import resolve_model -from cppython_core.schema import CoreData, Interface, ProjectConfiguration, PyProject +from cppython_core.schema import Interface, ProjectConfiguration, PyProject from cppython.builder import Builder from cppython.schema import API @@ -36,7 +36,7 @@ def __init__( self.logger.warning("The pyproject.toml file doesn't contain the `tool.cppython` table") return - self._plugins = builder.build(pyproject.project, pyproject.tool.cppython) + self._data = builder.build(pyproject.project, pyproject.tool.cppython) self._enabled = True @@ -51,43 +51,6 @@ def enabled(self) -> bool: """ return self._enabled - @property - def core_data(self) -> CoreData | None: - """Core data - - Returns: - Core data, if enabled - """ - return self._core_data if self._enabled else None - - async def download_provider_tools(self) -> None: - """Download the provider tooling if required""" - if not self._enabled: - self.logger.info("Skipping 'download_provider_tools' because the project is not enabled") - return - - base_path = self._core_data.cppython_data.install_path - - path = base_path / self._provider.name() - - path.mkdir(parents=True, exist_ok=True) - - self.logger.warning("Downloading the %s requirements to %s", self._provider.name(), path) - await self._provider.download_tooling(path) - - def sync(self) -> None: - """Gathers sync information from providers and passes it to the generator - - Raises: - PluginError: Plugin error - """ - - if (sync_data := self._provider.sync_data(self._generator)) is None: - raise PluginError("The provider doesn't support the generator") - - self._generator.sync(sync_data) - - # API Contract def install(self) -> None: """Installs project dependencies @@ -99,18 +62,18 @@ def install(self) -> None: return self.logger.info("Installing tools") - asyncio.run(self.download_provider_tools()) + asyncio.run(self._data.download_provider_tools()) self.logger.info("Installing project") - self.logger.info("Installing %s provider", self._provider.name()) + self.logger.info("Installing %s provider", self._data.plugins.provider.name()) try: - self._provider.install() + self._data.plugins.provider.install() except Exception as exception: - self.logger.error("Provider %s failed to install", self._provider.name()) + self.logger.error("Provider %s failed to install", self._data.plugins.provider.name()) raise exception - self.sync() + self._data.sync() def update(self) -> None: """Updates project dependencies @@ -123,15 +86,15 @@ def update(self) -> None: return self.logger.info("Updating tools") - asyncio.run(self.download_provider_tools()) + asyncio.run(self._data.download_provider_tools()) self.logger.info("Updating project") - self.logger.info("Updating %s provider", self._provider.name()) + self.logger.info("Updating %s provider", self._data.plugins.provider.name()) try: - self._provider.update() + self._data.plugins.provider.update() except Exception as exception: - self.logger.error("Provider %s failed to update", self._provider.name()) + self.logger.error("Provider %s failed to update", self._data.plugins.provider.name()) raise exception - self.sync() + self._data.sync() From 86810a84e0e400c0eb483fe5f29e1cdf827da63f Mon Sep 17 00:00:00 2001 From: Asher Norland Date: Wed, 13 Mar 2024 17:39:47 -0400 Subject: [PATCH 09/16] Add Builder and Data Tests --- tests/unit/test_builder.py | 0 tests/unit/test_data.py | 0 2 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 tests/unit/test_builder.py create mode 100644 tests/unit/test_data.py diff --git a/tests/unit/test_builder.py b/tests/unit/test_builder.py new file mode 100644 index 0000000..e69de29 diff --git a/tests/unit/test_data.py b/tests/unit/test_data.py new file mode 100644 index 0000000..e69de29 From e5e93eb7f46775edfb6557466c417292a1bb813e Mon Sep 17 00:00:00 2001 From: Asher Norland Date: Wed, 13 Mar 2024 17:50:37 -0400 Subject: [PATCH 10/16] Resolver Object --- cppython/builder.py | 119 ++++++++++++++++++++++++-------------------- 1 file changed, 65 insertions(+), 54 deletions(-) diff --git a/cppython/builder.py b/cppython/builder.py index 72a5394..7f4a4a6 100644 --- a/cppython/builder.py +++ b/cppython/builder.py @@ -36,23 +36,15 @@ from cppython.data import Data, Plugins -class Builder: - """Helper class for building CPPython projects""" +class Resolver: + """The resolution of data sources for the builder""" def __init__(self, project_configuration: ProjectConfiguration, logger: Logger) -> None: - self.project_configuration = project_configuration - self.logger = logger - - # Default logging levels - levels = [logging.WARNING, logging.INFO, logging.DEBUG] - # Add default output stream - self.logger.addHandler(logging.StreamHandler()) - self.logger.setLevel(levels[project_configuration.verbosity]) - - self.logger.info("Logging setup complete") + self._project_configuration = project_configuration + self._logger = logger - def _generate_plugins( + def generate_plugins( self, local_configuration: CPPythonLocalConfiguration, project_data: ProjectData ) -> PluginBuildData: """_summary_ @@ -65,30 +57,30 @@ def _generate_plugins( _description_ """ - raw_generator_plugins = self._find_generators() - generator_plugins = self._filter_plugins( + raw_generator_plugins = self.find_generators() + generator_plugins = self.filter_plugins( raw_generator_plugins, local_configuration.generator_name, "Generator", ) - raw_provider_plugins = self._find_providers() - provider_plugins = self._filter_plugins( + raw_provider_plugins = self.find_providers() + provider_plugins = self.filter_plugins( raw_provider_plugins, local_configuration.provider_name, "Provider", ) - scm_plugins = self._find_source_managers() + scm_plugins = self.find_source_managers() - scm_type = self._select_scm(scm_plugins, project_data) + scm_type = self.select_scm(scm_plugins, project_data) # Solve the messy interactions between plugins - generator_type, provider_type = self._solve(generator_plugins, provider_plugins) + generator_type, provider_type = self.solve(generator_plugins, provider_plugins) return PluginBuildData(generator_type=generator_type, provider_type=provider_type, scm_type=scm_type) - def _generate_cppython_plugin_data(self, plugin_build_data: PluginBuildData) -> PluginCPPythonData: + def generate_cppython_plugin_data(self, plugin_build_data: PluginBuildData) -> PluginCPPythonData: """Generates the CPPython plugin data from the resolved plugins Args: @@ -104,7 +96,7 @@ def _generate_cppython_plugin_data(self, plugin_build_data: PluginBuildData) -> scm_name=plugin_build_data.scm_type.name(), ) - def _generate_pep621_data( + def generate_pep621_data( self, pep621_configuration: PEP621Configuration, project_configuration: ProjectConfiguration, scm: SCM | None ) -> PEP621Data: """_summary_ @@ -119,7 +111,7 @@ def _generate_pep621_data( """ return resolve_pep621(pep621_configuration, project_configuration, scm) - def _generate_core_data( + def generate_core_data( self, project_data: ProjectData, local_configuration: CPPythonLocalConfiguration, @@ -139,13 +131,13 @@ def _generate_core_data( The resolved core object """ - global_configuration = CPPythonGlobalConfiguration() + global_configuration = self.resolve_global_config() cppython_data = resolve_cppython(local_configuration, global_configuration, project_data, plugin_cppython_date) return CoreData(project_data=project_data, cppython_data=cppython_data) - def _resolve_global_config(self) -> CPPythonGlobalConfiguration: + def resolve_global_config(self) -> CPPythonGlobalConfiguration: """Generates the global configuration object Returns: @@ -154,7 +146,7 @@ def _resolve_global_config(self) -> CPPythonGlobalConfiguration: return CPPythonGlobalConfiguration() - def _find_generators(self) -> list[type[Generator]]: + def find_generators(self) -> list[type[Generator]]: """_summary_ Raises: @@ -171,12 +163,12 @@ def _find_generators(self) -> list[type[Generator]]: for entry_point in list(metadata.entry_points(group=f"cppython.{group_name}")): loaded_type = entry_point.load() if not issubclass(loaded_type, Generator): - self.logger.warning( + self._logger.warning( f"Found incompatible plugin. The '{loaded_type.name()}' plugin must be an instance of" f" '{group_name}'" ) else: - self.logger.warning(f"{group_name} plugin found: {loaded_type.name()} from {getmodule(loaded_type)}") + self._logger.warning(f"{group_name} plugin found: {loaded_type.name()} from {getmodule(loaded_type)}") plugin_types.append(loaded_type) if not plugin_types: @@ -184,7 +176,7 @@ def _find_generators(self) -> list[type[Generator]]: return plugin_types - def _find_providers(self) -> list[type[Provider]]: + def find_providers(self) -> list[type[Provider]]: """_summary_ Raises: @@ -201,12 +193,12 @@ def _find_providers(self) -> list[type[Provider]]: for entry_point in list(metadata.entry_points(group=f"cppython.{group_name}")): loaded_type = entry_point.load() if not issubclass(loaded_type, Provider): - self.logger.warning( + self._logger.warning( f"Found incompatible plugin. The '{loaded_type.name()}' plugin must be an instance of" f" '{group_name}'" ) else: - self.logger.warning(f"{group_name} plugin found: {loaded_type.name()} from {getmodule(loaded_type)}") + self._logger.warning(f"{group_name} plugin found: {loaded_type.name()} from {getmodule(loaded_type)}") plugin_types.append(loaded_type) if not plugin_types: @@ -214,7 +206,7 @@ def _find_providers(self) -> list[type[Provider]]: return plugin_types - def _find_source_managers(self) -> list[type[SCM]]: + def find_source_managers(self) -> list[type[SCM]]: """_summary_ Raises: @@ -231,12 +223,12 @@ def _find_source_managers(self) -> list[type[SCM]]: for entry_point in list(metadata.entry_points(group=f"cppython.{group_name}")): loaded_type = entry_point.load() if not issubclass(loaded_type, SCM): - self.logger.warning( + self._logger.warning( f"Found incompatible plugin. The '{loaded_type.name()}' plugin must be an instance of" f" '{group_name}'" ) else: - self.logger.warning(f"{group_name} plugin found: {loaded_type.name()} from {getmodule(loaded_type)}") + self._logger.warning(f"{group_name} plugin found: {loaded_type.name()} from {getmodule(loaded_type)}") plugin_types.append(loaded_type) if not plugin_types: @@ -244,7 +236,7 @@ def _find_source_managers(self) -> list[type[SCM]]: return plugin_types - def _filter_plugins[ + def filter_plugins[ T: DataPlugin ](self, plugin_types: list[type[T]], pinned_name: str | None, group_name: str) -> list[type[T]]: """Finds and filters data plugins @@ -265,18 +257,18 @@ def _filter_plugins[ if pinned_name is not None: for loaded_type in plugin_types: if loaded_type.name() == pinned_name: - self.logger.warning( + self._logger.warning( f"Using {group_name} plugin: {loaded_type.name()} from {getmodule(loaded_type)}" ) return [loaded_type] - self.logger.warning(f"'{group_name}_name' was empty. Trying to deduce {group_name}s") + self._logger.warning(f"'{group_name}_name' was empty. Trying to deduce {group_name}s") supported_types: list[type[T]] = [] # Deduce types for loaded_type in plugin_types: - self.logger.warning( + self._logger.warning( f"A {group_name} plugin is supported: {loaded_type.name()} from {getmodule(loaded_type)}" ) supported_types.append(loaded_type) @@ -287,7 +279,7 @@ def _filter_plugins[ return supported_types - def _select_scm(self, scm_plugins: list[type[SCM]], project_data: ProjectData) -> type[SCM]: + def select_scm(self, scm_plugins: list[type[SCM]], project_data: ProjectData) -> type[SCM]: """_summary_ Args: @@ -307,7 +299,7 @@ def _select_scm(self, scm_plugins: list[type[SCM]], project_data: ProjectData) - raise PluginError("No SCM plugin was found that supports the given path") - def _solve( + def solve( self, generator_types: list[type[Generator]], provider_types: list[type[Provider]] ) -> tuple[type[Generator], type[Provider]]: """_summary_ @@ -338,7 +330,7 @@ def _solve( return combos[0] - def _create_scm( + def create_scm( self, core_data: CoreData, scm_type: type[SCM], @@ -360,7 +352,7 @@ def _create_scm( return plugin - def _create_generator( + def create_generator( self, core_data: CoreData, pep621_data: PEP621Data, @@ -384,7 +376,7 @@ def _create_generator( generator_data = resolve_generator(core_data.project_data, cppython_plugin_data) if not generator_configuration: - self.logger.error( + self._logger.error( "The pyproject.toml table 'tool.cppython.generator' does not exist. Sending generator empty data", ) @@ -396,7 +388,7 @@ def _create_generator( return generator_type(generator_data, core_plugin_data, generator_configuration) - def _create_provider( + def create_provider( self, core_data: CoreData, pep621_data: PEP621Data, @@ -420,7 +412,7 @@ def _create_provider( provider_data = resolve_provider(core_data.project_data, cppython_plugin_data) if not provider_configuration: - self.logger.error( + self._logger.error( "The pyproject.toml table 'tool.cppython.provider' does not exist. Sending provider empty data", ) @@ -432,6 +424,25 @@ def _create_provider( return provider_type(provider_data, core_plugin_data, provider_configuration) + +class Builder: + """Helper class for building CPPython projects""" + + def __init__(self, project_configuration: ProjectConfiguration, logger: Logger) -> None: + self._project_configuration = project_configuration + self._logger = logger + + # Default logging levels + levels = [logging.WARNING, logging.INFO, logging.DEBUG] + + # Add default output stream + self._logger.addHandler(logging.StreamHandler()) + self._logger.setLevel(levels[project_configuration.verbosity]) + + self._logger.info("Logging setup complete") + + self._resolver = Resolver(self._project_configuration, self._logger) + def build(self, pep621_configuration: PEP621Configuration, local_configuration: CPPythonLocalConfiguration) -> Data: """_summary_ @@ -443,29 +454,29 @@ def build(self, pep621_configuration: PEP621Configuration, local_configuration: _description_ """ - project_data = resolve_project_configuration(self.project_configuration) + project_data = resolve_project_configuration(self._project_configuration) - plugin_build_data = self._generate_plugins(local_configuration, project_data) - plugin_cppython_data = self._generate_cppython_plugin_data(plugin_build_data) + plugin_build_data = self._resolver.generate_plugins(local_configuration, project_data) + plugin_cppython_data = self._resolver.generate_cppython_plugin_data(plugin_build_data) - core_data = self._generate_core_data( + core_data = self._resolver.generate_core_data( project_data, local_configuration, plugin_cppython_data, ) - scm = self._create_scm(core_data, plugin_build_data.scm_type) + scm = self._resolver.create_scm(core_data, plugin_build_data.scm_type) - pep621_data = self._generate_pep621_data(pep621_configuration, self.project_configuration, scm) + pep621_data = self._resolver.generate_pep621_data(pep621_configuration, self._project_configuration, scm) # Create the chosen plugins - generator = self._create_generator( + generator = self._resolver.create_generator( core_data, pep621_data, local_configuration.generator, plugin_build_data.generator_type ) - provider = self._create_provider( + provider = self._resolver.create_provider( core_data, pep621_data, local_configuration.provider, plugin_build_data.provider_type ) plugins = Plugins(generator=generator, provider=provider, scm=scm) - return Data(core_data, plugins, self.logger) + return Data(core_data, plugins, self._logger) From 0151142777004e182a98a4eebb79f6e5d63aca0c Mon Sep 17 00:00:00 2001 From: Asher Norland Date: Wed, 13 Mar 2024 17:57:13 -0400 Subject: [PATCH 11/16] Update schema.py --- cppython/schema.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/cppython/schema.py b/cppython/schema.py index 061b06e..2f43a0c 100644 --- a/cppython/schema.py +++ b/cppython/schema.py @@ -1,10 +1,10 @@ -"""Project schema specifications -""" +"""Project schema specifications""" from abc import abstractmethod +from typing import Protocol -class API: +class API(Protocol): """Project API specification""" @abstractmethod From 0a09ce0fa06f33b1aed9fbb228e99664fe2421a8 Mon Sep 17 00:00:00 2001 From: Asher Norland Date: Wed, 13 Mar 2024 18:07:00 -0400 Subject: [PATCH 12/16] Add Tests --- tests/unit/test_builder.py | 21 +++++++++++++++++++++ tests/unit/test_data.py | 11 +++++++++++ 2 files changed, 32 insertions(+) diff --git a/tests/unit/test_builder.py b/tests/unit/test_builder.py index e69de29..896c719 100644 --- a/tests/unit/test_builder.py +++ b/tests/unit/test_builder.py @@ -0,0 +1,21 @@ +"""Tests the Builder and Resolver types""" + +import pytest + +from cppython.builder import Builder, Resolver + + +class TestBuilder: + """Various tests for the Builder type""" + + def test_build(self) -> None: + """Verifies that the builder can build a project""" + pytest.fail("Test not implemented") + + +class TestResolver: + """Various tests for the Resolver type""" + + def test_generate_plugins(self) -> None: + """Verifies that the resolver can generate plugins""" + pytest.fail("Test not implemented") diff --git a/tests/unit/test_data.py b/tests/unit/test_data.py index e69de29..40b92fe 100644 --- a/tests/unit/test_data.py +++ b/tests/unit/test_data.py @@ -0,0 +1,11 @@ +"""Tests the Data type""" + +import pytest + + +class TestData: + """Various tests for the Data type""" + + def test_sync(self) -> None: + """Verifies that the data can be synchronized""" + pytest.fail("Test not implemented") From c2c5a172ab370d19dbd30a2fd180682b0487a9e2 Mon Sep 17 00:00:00 2001 From: Asher Norland Date: Thu, 14 Mar 2024 02:33:02 -0400 Subject: [PATCH 13/16] Remove Scaffolding Function --- cppython/builder.py | 36 +++++------------------------------- pdm.lock | 6 +++--- 2 files changed, 8 insertions(+), 34 deletions(-) diff --git a/cppython/builder.py b/cppython/builder.py index 7f4a4a6..271f241 100644 --- a/cppython/builder.py +++ b/cppython/builder.py @@ -111,32 +111,6 @@ def generate_pep621_data( """ return resolve_pep621(pep621_configuration, project_configuration, scm) - def generate_core_data( - self, - project_data: ProjectData, - local_configuration: CPPythonLocalConfiguration, - plugin_cppython_date: PluginCPPythonData, - ) -> CoreData: - """Parses and returns resolved data from all configuration sources - - Args: - project_data: Project data - local_configuration: TODO - plugin_cppython_date: TODO - - Raises: - ConfigError: Raised if data cannot be parsed - - Returns: - The resolved core object - """ - - global_configuration = self.resolve_global_config() - - cppython_data = resolve_cppython(local_configuration, global_configuration, project_data, plugin_cppython_date) - - return CoreData(project_data=project_data, cppython_data=cppython_data) - def resolve_global_config(self) -> CPPythonGlobalConfiguration: """Generates the global configuration object @@ -459,11 +433,11 @@ def build(self, pep621_configuration: PEP621Configuration, local_configuration: plugin_build_data = self._resolver.generate_plugins(local_configuration, project_data) plugin_cppython_data = self._resolver.generate_cppython_plugin_data(plugin_build_data) - core_data = self._resolver.generate_core_data( - project_data, - local_configuration, - plugin_cppython_data, - ) + global_configuration = self._resolver.resolve_global_config() + + cppython_data = resolve_cppython(local_configuration, global_configuration, project_data, plugin_cppython_data) + + core_data = CoreData(project_data=project_data, cppython_data=cppython_data) scm = self._resolver.create_scm(core_data, plugin_build_data.scm_type) diff --git a/pdm.lock b/pdm.lock index 6e8466d..1da143f 100644 --- a/pdm.lock +++ b/pdm.lock @@ -117,7 +117,7 @@ files = [ [[package]] name = "cppython-core" -version = "0.7.1.dev12" +version = "0.7.1.dev14" requires_python = ">=3.12" summary = "Data definitions for CPPython" dependencies = [ @@ -125,8 +125,8 @@ dependencies = [ "synodic-utilities>=0.1.1.dev3", ] files = [ - {file = "cppython_core-0.7.1.dev12-py3-none-any.whl", hash = "sha256:3b6e047874f3c7294c215b344a89147445bda4aecfa81564260cd944ee147551"}, - {file = "cppython_core-0.7.1.dev12.tar.gz", hash = "sha256:1bd3cc2c6bbcadd71dd565a27713f4ff38b3d3c790485ce424b14d4d18081e53"}, + {file = "cppython_core-0.7.1.dev14-py3-none-any.whl", hash = "sha256:dc3f8a27b9f02ef3c11a113ed5f1d836c744170863cdaf62721b99ed65366307"}, + {file = "cppython_core-0.7.1.dev14.tar.gz", hash = "sha256:87673de19b7998480aceee5ef7a4bc112dfaf5c349a4d76b0ac547b8b9a925af"}, ] [[package]] From c02f5df909118f8a67f8f2b3a1ae9246e8ac31c4 Mon Sep 17 00:00:00 2001 From: Asher Norland Date: Thu, 14 Mar 2024 04:07:17 -0400 Subject: [PATCH 14/16] Implement Data And Builder Tests --- cppython/builder.py | 30 ++++++++++++++------- tests/unit/test_builder.py | 50 ++++++++++++++++++++++++++++++----- tests/unit/test_data.py | 53 +++++++++++++++++++++++++++++++++++--- 3 files changed, 113 insertions(+), 20 deletions(-) diff --git a/cppython/builder.py b/cppython/builder.py index 271f241..59e8c17 100644 --- a/cppython/builder.py +++ b/cppython/builder.py @@ -45,12 +45,12 @@ def __init__(self, project_configuration: ProjectConfiguration, logger: Logger) self._logger = logger def generate_plugins( - self, local_configuration: CPPythonLocalConfiguration, project_data: ProjectData + self, cppython_local_configuration: CPPythonLocalConfiguration, project_data: ProjectData ) -> PluginBuildData: """_summary_ Args: - local_configuration: _description_ + cppython_local_configuration: _description_ project_data: _description_ Returns: @@ -60,14 +60,14 @@ def generate_plugins( raw_generator_plugins = self.find_generators() generator_plugins = self.filter_plugins( raw_generator_plugins, - local_configuration.generator_name, + cppython_local_configuration.generator_name, "Generator", ) raw_provider_plugins = self.find_providers() provider_plugins = self.filter_plugins( raw_provider_plugins, - local_configuration.provider_name, + cppython_local_configuration.provider_name, "Provider", ) @@ -417,12 +417,18 @@ def __init__(self, project_configuration: ProjectConfiguration, logger: Logger) self._resolver = Resolver(self._project_configuration, self._logger) - def build(self, pep621_configuration: PEP621Configuration, local_configuration: CPPythonLocalConfiguration) -> Data: + def build( + self, + pep621_configuration: PEP621Configuration, + cppython_local_configuration: CPPythonLocalConfiguration, + plugin_build_data: PluginBuildData | None = None, + ) -> Data: """_summary_ Args: pep621_configuration: _description_ - local_configuration: _description_ + cppython_local_configuration: _description_ + plugin_build_data: _description_ Returns: _description_ @@ -430,12 +436,16 @@ def build(self, pep621_configuration: PEP621Configuration, local_configuration: project_data = resolve_project_configuration(self._project_configuration) - plugin_build_data = self._resolver.generate_plugins(local_configuration, project_data) + if plugin_build_data is None: + plugin_build_data = self._resolver.generate_plugins(cppython_local_configuration, project_data) + plugin_cppython_data = self._resolver.generate_cppython_plugin_data(plugin_build_data) global_configuration = self._resolver.resolve_global_config() - cppython_data = resolve_cppython(local_configuration, global_configuration, project_data, plugin_cppython_data) + cppython_data = resolve_cppython( + cppython_local_configuration, global_configuration, project_data, plugin_cppython_data + ) core_data = CoreData(project_data=project_data, cppython_data=cppython_data) @@ -445,10 +455,10 @@ def build(self, pep621_configuration: PEP621Configuration, local_configuration: # Create the chosen plugins generator = self._resolver.create_generator( - core_data, pep621_data, local_configuration.generator, plugin_build_data.generator_type + core_data, pep621_data, cppython_local_configuration.generator, plugin_build_data.generator_type ) provider = self._resolver.create_provider( - core_data, pep621_data, local_configuration.provider, plugin_build_data.provider_type + core_data, pep621_data, cppython_local_configuration.provider, plugin_build_data.provider_type ) plugins = Plugins(generator=generator, provider=provider, scm=scm) diff --git a/tests/unit/test_builder.py b/tests/unit/test_builder.py index 896c719..2b4e4b8 100644 --- a/tests/unit/test_builder.py +++ b/tests/unit/test_builder.py @@ -1,6 +1,14 @@ """Tests the Builder and Resolver types""" -import pytest +import logging + +import pytest_cppython +from cppython_core.schema import ( + CPPythonLocalConfiguration, + PEP621Configuration, + ProjectConfiguration, + ProjectData, +) from cppython.builder import Builder, Resolver @@ -8,14 +16,42 @@ class TestBuilder: """Various tests for the Builder type""" - def test_build(self) -> None: - """Verifies that the builder can build a project""" - pytest.fail("Test not implemented") + def test_build( + self, + project_configuration: ProjectConfiguration, + pep621_configuration: PEP621Configuration, + cppython_local_configuration: CPPythonLocalConfiguration, + ) -> None: + """Verifies that the builder can build a project with all test variants + + Args: + project_configuration: Variant fixture for the project configuration + pep621_configuration: Variant fixture for PEP 621 configuration + cppython_local_configuration: Variant fixture for cppython configuration + """ + logger = logging.getLogger() + builder = Builder(project_configuration, logger) + + assert builder.build(pep621_configuration, cppython_local_configuration) class TestResolver: """Various tests for the Resolver type""" - def test_generate_plugins(self) -> None: - """Verifies that the resolver can generate plugins""" - pytest.fail("Test not implemented") + def test_generate_plugins( + self, + project_configuration: ProjectConfiguration, + cppython_local_configuration: CPPythonLocalConfiguration, + project_data: ProjectData, + ) -> None: + """Verifies that the resolver can generate plugins + + Args: + project_configuration: Variant fixture for the project configuration + cppython_local_configuration: Variant fixture for cppython configuration + project_data: Variant fixture for the project data + """ + logger = logging.getLogger() + resolver = Resolver(project_configuration, logger) + + assert resolver.generate_plugins(cppython_local_configuration, project_data) diff --git a/tests/unit/test_data.py b/tests/unit/test_data.py index 40b92fe..8539e9d 100644 --- a/tests/unit/test_data.py +++ b/tests/unit/test_data.py @@ -1,11 +1,58 @@ """Tests the Data type""" +import logging + import pytest +import pytest_cppython +from cppython_core.resolution import PluginBuildData +from cppython_core.schema import ( + CPPythonLocalConfiguration, + PEP621Configuration, + ProjectConfiguration, +) +from pytest_cppython.mock.generator import MockGenerator +from pytest_cppython.mock.provider import MockProvider +from pytest_cppython.mock.scm import MockSCM + +from cppython.builder import Builder +from cppython.data import Data class TestData: """Various tests for the Data type""" - def test_sync(self) -> None: - """Verifies that the data can be synchronized""" - pytest.fail("Test not implemented") + @pytest.fixture( + name="data", + scope="session", + ) + def fixture_data( + self, + project_configuration: ProjectConfiguration, + pep621_configuration: PEP621Configuration, + cppython_local_configuration: CPPythonLocalConfiguration, + ) -> Data: + """Creates a mock plugins fixture. We want all the plugins to use the same data variants at the same time, so we have to resolve data inside the fixture instead of using other data fixtures + + Args: + project_configuration: Variant fixture for the project configuration + pep621_configuration: Variant fixture for PEP 621 configuration + cppython_local_configuration: Variant fixture for cppython configuration + + Returns: + The mock plugins fixture + """ + + logger = logging.getLogger() + builder = Builder(project_configuration, logger) + + plugin_build_data = PluginBuildData(generator_type=MockGenerator, provider_type=MockProvider, scm_type=MockSCM) + + return builder.build(pep621_configuration, cppython_local_configuration, plugin_build_data) + + def test_sync(self, data: Data) -> None: + """Verifies that the sync method executes without error + + Args: + data: Fixture for the mocked data class + """ + data.sync() From 188b50d0377914a15e0c5d0b72d9b8f6ce12a17a Mon Sep 17 00:00:00 2001 From: Asher Norland Date: Thu, 14 Mar 2024 04:42:03 -0400 Subject: [PATCH 15/16] Update pdm.lock --- pdm.lock | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/pdm.lock b/pdm.lock index 1da143f..ef06942 100644 --- a/pdm.lock +++ b/pdm.lock @@ -359,7 +359,7 @@ files = [ [[package]] name = "pytest-cppython" -version = "0.3.1.dev49" +version = "0.3.1.dev50" requires_python = ">=3.12" summary = "A pytest plugin that imports CPPython testing types" dependencies = [ @@ -370,8 +370,8 @@ dependencies = [ "pytest>=8.0.0", ] files = [ - {file = "pytest_cppython-0.3.1.dev49-py3-none-any.whl", hash = "sha256:99e61318c4af078d86529b8f7e16da24de8b31ea1eb2df4cf99a9c667ad88000"}, - {file = "pytest_cppython-0.3.1.dev49.tar.gz", hash = "sha256:d1a685c6cbfedcf9c6c17516c201026c7449918978b08afa935db38d0df28707"}, + {file = "pytest_cppython-0.3.1.dev50-py3-none-any.whl", hash = "sha256:1b22cce6af81dbd6e6c1e6f8e15654ad6b0149c3d38e1312e8be36324b17f88a"}, + {file = "pytest_cppython-0.3.1.dev50.tar.gz", hash = "sha256:c39ff9ee013af4c7e8b500d95eeb4e8dabc33099a9a8a9ab15139e328d8782c2"}, ] [[package]] From 2b93d6e8bd0643bd926f3b79602ad90e947d8205 Mon Sep 17 00:00:00 2001 From: Asher Norland Date: Thu, 14 Mar 2024 04:50:53 -0400 Subject: [PATCH 16/16] Comments --- cppython/builder.py | 76 ++++++++++++++++++++++----------------------- cppython/data.py | 4 +-- 2 files changed, 40 insertions(+), 40 deletions(-) diff --git a/cppython/builder.py b/cppython/builder.py index 59e8c17..9b5bdb8 100644 --- a/cppython/builder.py +++ b/cppython/builder.py @@ -1,4 +1,4 @@ -"""Everything needed to build a CPPython project""" +"""Defines the data and routines for building a CPPython project type""" import logging from importlib import metadata @@ -47,14 +47,14 @@ def __init__(self, project_configuration: ProjectConfiguration, logger: Logger) def generate_plugins( self, cppython_local_configuration: CPPythonLocalConfiguration, project_data: ProjectData ) -> PluginBuildData: - """_summary_ + """Generates the plugin data from the local configuration and project data Args: - cppython_local_configuration: _description_ - project_data: _description_ + cppython_local_configuration: The local configuration + project_data: The project data Returns: - _description_ + The resolved plugin data """ raw_generator_plugins = self.find_generators() @@ -99,15 +99,15 @@ def generate_cppython_plugin_data(self, plugin_build_data: PluginBuildData) -> P def generate_pep621_data( self, pep621_configuration: PEP621Configuration, project_configuration: ProjectConfiguration, scm: SCM | None ) -> PEP621Data: - """_summary_ + """Generates the PEP621 data from configuration sources Args: - pep621_configuration: _description_ - project_configuration: _description_ - scm: _description_ + pep621_configuration: The PEP621 configuration + project_configuration: The project configuration + scm: The source control manager, if any Returns: - _description_ + The resolved PEP621 data """ return resolve_pep621(pep621_configuration, project_configuration, scm) @@ -121,13 +121,13 @@ def resolve_global_config(self) -> CPPythonGlobalConfiguration: return CPPythonGlobalConfiguration() def find_generators(self) -> list[type[Generator]]: - """_summary_ + """Extracts the generator plugins from the package's entry points Raises: - PluginError: _description_ + PluginError: Raised if no plugins can be found Returns: - _description_ + The list of generator plugin types """ group_name = "generator" @@ -151,13 +151,13 @@ def find_generators(self) -> list[type[Generator]]: return plugin_types def find_providers(self) -> list[type[Provider]]: - """_summary_ + """Extracts the provider plugins from the package's entry points Raises: - PluginError: _description_ + PluginError: Raised if no plugins can be found Returns: - _description_ + The list of provider plugin types """ group_name = "provider" @@ -181,13 +181,13 @@ def find_providers(self) -> list[type[Provider]]: return plugin_types def find_source_managers(self) -> list[type[SCM]]: - """_summary_ + """Extracts the source control manager plugins from the package's entry points Raises: - PluginError: _description_ + PluginError: Raised if no plugins can be found Returns: - _description_ + The list of source control manager plugin types """ group_name = "scm" @@ -254,17 +254,17 @@ def filter_plugins[ return supported_types def select_scm(self, scm_plugins: list[type[SCM]], project_data: ProjectData) -> type[SCM]: - """_summary_ + """Given data constraints, selects the SCM plugin to use Args: - scm_plugins: _description_ - project_data: _description_ + scm_plugins: The list of SCM plugin types + project_data: The project data Raises: - PluginError: _description_ + PluginError: Raised if no SCM plugin was found that supports the given data Returns: - _description_ + The selected SCM plugin type """ for scm_type in scm_plugins: @@ -276,17 +276,17 @@ def select_scm(self, scm_plugins: list[type[SCM]], project_data: ProjectData) -> def solve( self, generator_types: list[type[Generator]], provider_types: list[type[Provider]] ) -> tuple[type[Generator], type[Provider]]: - """_summary_ + """Selects the first generator and provider that can work together Args: - generator_types: _description_ - provider_types: _description_ + generator_types: The list of generator plugin types + provider_types: The list of provider plugin types Raises: - PluginError: _description_ + PluginError: Raised if no provider that supports a given generator could be deduced Returns: - _description_ + A tuple of the selected generator and provider plugin types """ combos: list[tuple[type[Generator], type[Provider]]] = [] @@ -309,14 +309,14 @@ def create_scm( core_data: CoreData, scm_type: type[SCM], ) -> SCM: - """_summary_ + """Creates a source control manager from input configuration Args: - core_data: _description_ - scm_type: _description_ + core_data: The resolved configuration data + scm_type: The plugin type Returns: - _description_ + The constructed source control manager """ cppython_plugin_data = resolve_cppython_plugin(core_data.cppython_data, scm_type) @@ -423,15 +423,15 @@ def build( cppython_local_configuration: CPPythonLocalConfiguration, plugin_build_data: PluginBuildData | None = None, ) -> Data: - """_summary_ + """Builds the project data Args: - pep621_configuration: _description_ - cppython_local_configuration: _description_ - plugin_build_data: _description_ + pep621_configuration: The PEP621 configuration + cppython_local_configuration: The local configuration + plugin_build_data: Plugin override data. If it exists, the build will use the given types instead of resolving them Returns: - _description_ + The built data object """ project_data = resolve_project_configuration(self._project_configuration) diff --git a/cppython/data.py b/cppython/data.py index 41ea771..ad24718 100644 --- a/cppython/data.py +++ b/cppython/data.py @@ -1,4 +1,4 @@ -"""Contains and manages the project data""" +"""Defines the post-construction data management for CPPython""" from dataclasses import dataclass from logging import Logger @@ -20,7 +20,7 @@ class Plugins: class Data: - """_summary_""" + """Contains and manages the project data""" def __init__(self, core_data: CoreData, plugins: Plugins, logger: Logger) -> None: self._core_data = core_data