toolfuncs 0.3.0__tar.gz → 0.3.1__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,16 +1,17 @@
1
1
  Metadata-Version: 2.5
2
2
  Name: toolfuncs
3
- Version: 0.3.0
3
+ Version: 0.3.1
4
4
  Summary: Executable typed Python function tools discovered through PATH
5
5
  Project-URL: Repository, https://github.com/nimashoghi/toolfuncs
6
6
  Project-URL: Issues, https://github.com/nimashoghi/toolfuncs/issues
7
7
  Author-email: Nima Shoghi <nima@boltz.bio>
8
- Requires-Python: >=3.11
8
+ Requires-Python: >=3.10
9
9
  Requires-Dist: cyclopts<5,>=4.23.2
10
10
  Requires-Dist: packaging>=24
11
11
  Requires-Dist: pip>=25
12
12
  Requires-Dist: pydantic-core<3,>=2
13
13
  Requires-Dist: pydantic<3,>=2
14
+ Requires-Dist: tomli<3,>=2.2; python_version < '3.11'
14
15
  Provides-Extra: hooks
15
16
  Requires-Dist: typed-agent-hooks; extra == 'hooks'
16
17
  Description-Content-Type: text/markdown
@@ -28,7 +29,7 @@ Create an extensionless file named `weather`:
28
29
  ```python
29
30
  #!/usr/bin/env toolfuncs
30
31
  # /// script
31
- # requires-python = ">=3.11"
32
+ # requires-python = ">=3.10"
32
33
  # dependencies = ["weather-client"]
33
34
  # [tool.toolfuncs]
34
35
  # description = "Read current weather conditions."
@@ -113,7 +114,7 @@ A toolfunc remains one script even when most of its implementation lives in a pa
113
114
  ```python
114
115
  #!/usr/bin/env toolfuncs
115
116
  # /// script
116
- # requires-python = ">=3.11"
117
+ # requires-python = ">=3.10"
117
118
  # dependencies = ["my-large-package"]
118
119
  # [tool.toolfuncs]
119
120
  # description = "Run the package's agent operation."
@@ -11,7 +11,7 @@ Create an extensionless file named `weather`:
11
11
  ```python
12
12
  #!/usr/bin/env toolfuncs
13
13
  # /// script
14
- # requires-python = ">=3.11"
14
+ # requires-python = ">=3.10"
15
15
  # dependencies = ["weather-client"]
16
16
  # [tool.toolfuncs]
17
17
  # description = "Read current weather conditions."
@@ -96,7 +96,7 @@ A toolfunc remains one script even when most of its implementation lives in a pa
96
96
  ```python
97
97
  #!/usr/bin/env toolfuncs
98
98
  # /// script
99
- # requires-python = ">=3.11"
99
+ # requires-python = ">=3.10"
100
100
  # dependencies = ["my-large-package"]
101
101
  # [tool.toolfuncs]
102
102
  # description = "Run the package's agent operation."
@@ -1,18 +1,19 @@
1
1
  [project]
2
2
  name = "toolfuncs"
3
- version = "0.3.0"
3
+ version = "0.3.1"
4
4
  description = "Executable typed Python function tools discovered through PATH"
5
5
  readme = "README.md"
6
6
  authors = [
7
7
  { name = "Nima Shoghi", email = "nima@boltz.bio" }
8
8
  ]
9
- requires-python = ">=3.11"
9
+ requires-python = ">=3.10"
10
10
  dependencies = [
11
11
  "cyclopts>=4.23.2,<5",
12
12
  "packaging>=24",
13
13
  "pip>=25",
14
14
  "pydantic>=2,<3",
15
15
  "pydantic-core>=2,<3",
16
+ "tomli>=2.2,<3; python_version < '3.11'",
16
17
  ]
17
18
 
18
19
  [project.scripts]
@@ -42,7 +43,7 @@ dev = [
42
43
 
43
44
  [tool.ruff]
44
45
  line-length = 100
45
- target-version = "py311"
46
+ target-version = "py310"
46
47
 
47
48
  [tool.ruff.lint]
48
49
  select = ["E", "F", "I", "UP", "B", "SIM", "RUF"]
@@ -52,5 +53,5 @@ addopts = "-ra"
52
53
  testpaths = ["tests"]
53
54
 
54
55
  [tool.basedpyright]
55
- pythonVersion = "3.11"
56
+ pythonVersion = "3.10"
56
57
  typeCheckingMode = "standard"
@@ -28,7 +28,7 @@ from .sdk import (
28
28
  validators,
29
29
  )
30
30
 
31
- __version__ = "0.3.0"
31
+ __version__ = "0.3.1"
32
32
 
33
33
  __all__ = [
34
34
  "ALLOW_FLOATING_VCS_SHEBANG",
@@ -11,7 +11,6 @@ import re
11
11
  import subprocess
12
12
  import sys
13
13
  import threading
14
- import tomllib
15
14
  from dataclasses import dataclass
16
15
  from pathlib import Path
17
16
  from types import ModuleType
@@ -21,6 +20,11 @@ from packaging.requirements import InvalidRequirement, Requirement
21
20
  from packaging.specifiers import InvalidSpecifier, SpecifierSet
22
21
  from packaging.version import Version
23
22
 
23
+ if sys.version_info >= (3, 11):
24
+ import tomllib
25
+ else:
26
+ import tomli as tomllib
27
+
24
28
  from ._errors import DependencyError, InvalidToolError, ToolConflictError, ToolNotFoundError
25
29
 
26
30
  TOOL_SHEBANG = "#!/usr/bin/env toolfuncs"
@@ -34,7 +34,7 @@ def _script(description: str, body: str = "") -> str:
34
34
  return (
35
35
  f"{TOOL_SHEBANG}\n"
36
36
  "# /// script\n"
37
- '# requires-python = ">=3.11"\n'
37
+ '# requires-python = ">=3.10"\n'
38
38
  "# dependencies = []\n"
39
39
  "# [tool.toolfuncs]\n"
40
40
  f"# description = {json.dumps(description)}\n"
@@ -87,7 +87,7 @@ def test_prepared_runtime_does_not_run_an_inner_installer(tmp_path: Path) -> Non
87
87
  source,
88
88
  f"{TOOL_SHEBANG}\n"
89
89
  "# /// script\n"
90
- '# requires-python = ">=3.11"\n'
90
+ '# requires-python = ">=3.10"\n'
91
91
  '# dependencies = ["package-that-does-not-exist==0"]\n'
92
92
  "# [tool.toolfuncs]\n"
93
93
  '# description = "Already prepared"\n'
@@ -27,7 +27,7 @@ def _script(
27
27
  body: str = "",
28
28
  *,
29
29
  dependencies: list[str] | None = None,
30
- requires_python: str = ">=3.11",
30
+ requires_python: str = ">=3.10",
31
31
  shebang: str = TOOL_SHEBANG,
32
32
  ) -> str:
33
33
  return (
@@ -1,6 +1,6 @@
1
1
  version = 1
2
2
  revision = 3
3
- requires-python = ">=3.11"
3
+ requires-python = ">=3.10"
4
4
 
5
5
  [[package]]
6
6
  name = "annotated-types"
@@ -38,8 +38,10 @@ version = "1.6.0"
38
38
  source = { registry = "https://pypi.org/simple" }
39
39
  dependencies = [
40
40
  { name = "colorama", marker = "os_name == 'nt'" },
41
+ { name = "importlib-metadata", marker = "python_full_version < '3.10.2'" },
41
42
  { name = "packaging" },
42
43
  { name = "pyproject-hooks" },
44
+ { name = "tomli", marker = "python_full_version < '3.11'" },
43
45
  ]
44
46
  sdist = { url = "https://files.pythonhosted.org/packages/4d/b7/1db48a9ce2984842c8c886432ec8a2719613322e868a966ba82a28862f25/build-1.6.0.tar.gz", hash = "sha256:bd2c8afc603e7a2e0ce70e2ea85f0a6d02043bafbd307f5bada0f98669eca5af", size = 113825, upload-time = "2026-08-27T21:01:16.458Z" }
45
47
  wheels = [
@@ -61,6 +63,20 @@ version = "7.15.4"
61
63
  source = { registry = "https://pypi.org/simple" }
62
64
  sdist = { url = "https://files.pythonhosted.org/packages/be/c3/4f2195f512fb172aa425a8803a874b2baa9ba7f80ff7b6080998761fc701/coverage-7.15.4.tar.gz", hash = "sha256:0548198fff07ccf4faf469520bce1c2eceb1ce3e62891921138dec10907f9d00", size = 936952, upload-time = "2026-08-06T13:50:24.442Z" }
63
65
  wheels = [
66
+ { url = "https://files.pythonhosted.org/packages/30/70/b052a519a584663a7bd052841a2debe11c8309ec49a7786340003f9c0a02/coverage-7.15.4-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:d0be6daac4cce6b8c8dc65886bae1b082ddbca4da8e5cbb5e15166acf253e264", size = 222245, upload-time = "2026-08-06T13:46:55.253Z" },
67
+ { url = "https://files.pythonhosted.org/packages/67/39/892fa511aba3d1c3c8f49509a0ff5c71eab9f9f88d08e1a38da395821660/coverage-7.15.4-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:b24e078eabcd6a9caa8b0713f9bc1eeb310bcc960a29d45a3b4fcd4b16d5b11d", size = 222762, upload-time = "2026-08-06T13:46:57.848Z" },
68
+ { url = "https://files.pythonhosted.org/packages/9f/95/b2c724ce1e64bc23cb5b1d7eeffa9548dc3d811f7a6297b2d01607f4e062/coverage-7.15.4-cp310-cp310-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:cfe20cc8cf8821d4fe54f89106cbf06aa27f37b5bbe3535568065a81539b4150", size = 249498, upload-time = "2026-08-06T13:46:59.012Z" },
69
+ { url = "https://files.pythonhosted.org/packages/0b/4f/b1973f67a1382af65b572a31ed692f8e490a6ad707191eab59148376832a/coverage-7.15.4-cp310-cp310-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:83cf06cdd687677742caff1a9134833b7a8b75f111519d2cb0e0ba1b9a851e15", size = 251328, upload-time = "2026-08-06T13:47:00.764Z" },
70
+ { url = "https://files.pythonhosted.org/packages/a2/09/03efa6722a132abcac91b32a60b64b240dd707c189c64eee697e48992c96/coverage-7.15.4-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:8fa4de68e2a752468ff14b4e15db7def689a71be759e826a31ccecbef69c5fd0", size = 253194, upload-time = "2026-08-06T13:47:01.976Z" },
71
+ { url = "https://files.pythonhosted.org/packages/45/63/8299201d9c80fb65551ce99c966cab83d706ec4066ac999bef08201346de/coverage-7.15.4-cp310-cp310-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:4dff9daa47d83120c3ec38ce921214242944a832aa04e903e50b5b7ebac8972d", size = 255106, upload-time = "2026-08-06T13:47:03.281Z" },
72
+ { url = "https://files.pythonhosted.org/packages/ee/16/26fd8a691eb8d9a230128685f6d23309d7402cb030aa553001788c8c50fc/coverage-7.15.4-cp310-cp310-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:a093fd37229918976f602aa07aa59e0973cde82186f220c8e197f721f5be0ce4", size = 250177, upload-time = "2026-08-06T13:47:04.713Z" },
73
+ { url = "https://files.pythonhosted.org/packages/ad/ef/3c7556f33783a0a566e01443ca62bd8eb2cdfe22d271efdc02e08beb5654/coverage-7.15.4-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:317db01a2cb02552fd67e2b1cca77a4b528a2a277176c5e0bf2cecbb639d3f54", size = 251234, upload-time = "2026-08-06T13:47:06.104Z" },
74
+ { url = "https://files.pythonhosted.org/packages/29/49/640a34043edac950738f36a3567832db5731d4cb2ed84b59cdb89c6bccbf/coverage-7.15.4-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:8ee3838dcb656602c3b51e16aed9bfb0822f8d8d6d1c5966d32ec8c104be8e20", size = 249237, upload-time = "2026-08-06T13:47:07.467Z" },
75
+ { url = "https://files.pythonhosted.org/packages/48/f5/e80f212669dd1be954ff844f883ef11a437ef4fd0089c6e0effc7b66b15d/coverage-7.15.4-cp310-cp310-musllinux_1_2_ppc64le.whl", hash = "sha256:425920379052ff1fe465268f3361d35804a241bbdd5a1b592c8cb60df4c52325", size = 253050, upload-time = "2026-08-06T13:47:08.748Z" },
76
+ { url = "https://files.pythonhosted.org/packages/c7/e9/e5da0fe39f7fde1bca9edc09c60921bb5fdba4cec7db5bbad41ddfd8c230/coverage-7.15.4-cp310-cp310-musllinux_1_2_riscv64.whl", hash = "sha256:69bb2400abef928e365ea7d4d9925169ada78ed2295546780002d4b65de3df88", size = 249508, upload-time = "2026-08-06T13:47:10.072Z" },
77
+ { url = "https://files.pythonhosted.org/packages/7d/38/41bf25774a0c8bba6b467f917cb1c9a0a2605e02dc93aad489fc7050ed59/coverage-7.15.4-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:81661f82d302484e3119e7c80c519c02fa9bcc2a6b339baf67d67bc89c580f04", size = 250110, upload-time = "2026-08-06T13:47:11.35Z" },
78
+ { url = "https://files.pythonhosted.org/packages/89/6e/26f2e54b79acc29d179ee4272922625aedb69198c4eb61f7ff4f098f3c78/coverage-7.15.4-cp310-cp310-win32.whl", hash = "sha256:cb476b2e828ecb71cb6b6a928d23fd20a7ddb501188022dae1c37499149cc338", size = 224294, upload-time = "2026-08-06T13:47:12.753Z" },
79
+ { url = "https://files.pythonhosted.org/packages/7b/06/9a318fc3ae040d4d6cb2d86101c6aa963fab20899a5c58666adf52cde0ca/coverage-7.15.4-cp310-cp310-win_amd64.whl", hash = "sha256:3fc2130bf37df31852a8384f12601563a45a0024bccc6624f38355cba7a8d360", size = 224919, upload-time = "2026-08-06T13:47:14.17Z" },
64
80
  { url = "https://files.pythonhosted.org/packages/2a/66/edcec7d7a0b524aa8923e22925fde6fe50ce005a113dca13ae1581455c4c/coverage-7.15.4-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:bbac5abad70df71019988f83f26ac7092ff2642975def4429e98dc7585ef3490", size = 222367, upload-time = "2026-08-06T13:47:15.578Z" },
65
81
  { url = "https://files.pythonhosted.org/packages/e6/c6/ab8de429e2e8548faf58ec7e1674a4ce00414b4113942d3fe87109cf0f68/coverage-7.15.4-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:357a173465c7ce028d07a95cc2b63b5bf59f50ecdd5ad75c5cbb78ada984048e", size = 222874, upload-time = "2026-08-06T13:47:16.961Z" },
66
82
  { url = "https://files.pythonhosted.org/packages/be/c4/3b7b49587e8a6b9af79b3eb468d443d6042b6d65b47aa26586846a0d6566/coverage-7.15.4-cp311-cp311-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:21b803935e2efc3acebe9697197a294fccf5dc4e5382bd6369542ff7a7d2a1d7", size = 253287, upload-time = "2026-08-06T13:47:18.291Z" },
@@ -183,6 +199,8 @@ dependencies = [
183
199
  { name = "docstring-parser" },
184
200
  { name = "rich" },
185
201
  { name = "rich-rst" },
202
+ { name = "tomli", marker = "python_full_version < '3.11'" },
203
+ { name = "typing-extensions", marker = "python_full_version < '3.11'" },
186
204
  ]
187
205
  sdist = { url = "https://files.pythonhosted.org/packages/ca/4e/4afd08d7dd836c436bbc5999f2743eda0ad4eac8946a8eb4b72241e3c555/cyclopts-4.23.3.tar.gz", hash = "sha256:4299ec47f5be853f9a114fcc534c84d42bbf19fefa303994597ecb7e5fd3082b", size = 197067, upload-time = "2026-08-26T18:16:35.688Z" }
188
206
  wheels = [
@@ -198,6 +216,30 @@ wheels = [
198
216
  { url = "https://files.pythonhosted.org/packages/a7/5f/ed01f9a3cdffbd5a008556fc7b2a08ddb1cc6ace7effa7340604b1d16699/docstring_parser-0.18.0-py3-none-any.whl", hash = "sha256:b3fcbed555c47d8479be0796ef7e19c2670d428d72e96da63f3a40122860374b", size = 22484, upload-time = "2026-04-14T04:09:18.638Z" },
199
217
  ]
200
218
 
219
+ [[package]]
220
+ name = "exceptiongroup"
221
+ version = "1.3.1"
222
+ source = { registry = "https://pypi.org/simple" }
223
+ dependencies = [
224
+ { name = "typing-extensions" },
225
+ ]
226
+ sdist = { url = "https://files.pythonhosted.org/packages/50/79/66800aadf48771f6b62f7eb014e352e5d06856655206165d775e675a02c9/exceptiongroup-1.3.1.tar.gz", hash = "sha256:8b412432c6055b0b7d14c310000ae93352ed6754f70fa8f7c34141f91c4e3219", size = 30371, upload-time = "2025-11-21T23:01:54.787Z" }
227
+ wheels = [
228
+ { url = "https://files.pythonhosted.org/packages/8a/0e/97c33bf5009bdbac74fd2beace167cab3f978feb69cc36f1ef79360d6c4e/exceptiongroup-1.3.1-py3-none-any.whl", hash = "sha256:a7a39a3bd276781e98394987d3a5701d0c4edffb633bb7a5144577f82c773598", size = 16740, upload-time = "2025-11-21T23:01:53.443Z" },
229
+ ]
230
+
231
+ [[package]]
232
+ name = "importlib-metadata"
233
+ version = "9.0.0"
234
+ source = { registry = "https://pypi.org/simple" }
235
+ dependencies = [
236
+ { name = "zipp" },
237
+ ]
238
+ sdist = { url = "https://files.pythonhosted.org/packages/a9/01/15bb152d77b21318514a96f43af312635eb2500c96b55398d020c93d86ea/importlib_metadata-9.0.0.tar.gz", hash = "sha256:a4f57ab599e6a2e3016d7595cfd72eb4661a5106e787a95bcc90c7105b831efc", size = 56405, upload-time = "2026-03-20T06:42:56.999Z" }
239
+ wheels = [
240
+ { url = "https://files.pythonhosted.org/packages/38/3d/2d244233ac4f76e38533cfcb2991c9eb4c7bf688ae0a036d30725b8faafe/importlib_metadata-9.0.0-py3-none-any.whl", hash = "sha256:2d21d1cc5a017bd0559e36150c21c830ab1dc304dedd1b7ea85d20f45ef3edd7", size = 27789, upload-time = "2026-03-20T06:42:55.665Z" },
241
+ ]
242
+
201
243
  [[package]]
202
244
  name = "iniconfig"
203
245
  version = "2.3.0"
@@ -295,6 +337,20 @@ dependencies = [
295
337
  ]
296
338
  sdist = { url = "https://files.pythonhosted.org/packages/9d/56/921726b776ace8d8f5db44c4ef961006580d91dc52b803c489fafd1aa249/pydantic_core-2.46.4.tar.gz", hash = "sha256:62f875393d7f270851f20523dd2e29f082bcc82292d66db2b64ea71f64b6e1c1", size = 471464, upload-time = "2026-05-06T13:37:06.98Z" }
297
339
  wheels = [
340
+ { url = "https://files.pythonhosted.org/packages/e7/08/f1ba952f1c8ae5581c70fa9c6da89f247b83e3dd8c09c035d5d7931fc23d/pydantic_core-2.46.4-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:a396dcc17e5a0b164dbe026896245a4fa9ff402edca1dff0be3d53a517f74de4", size = 2113146, upload-time = "2026-05-06T13:37:36.537Z" },
341
+ { url = "https://files.pythonhosted.org/packages/56/c6/65f646c7ff09bd257f660434adb45c4dfcbbcebcc030562fecf6f5bf887d/pydantic_core-2.46.4-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:da4b951fe36dc7c3a1ccb4e3cd1747c3542b8c9ceede8fc86cae054e764485f5", size = 1949769, upload-time = "2026-05-06T13:37:46.365Z" },
342
+ { url = "https://files.pythonhosted.org/packages/64/ba/bfb1d928fd5b49e1258935ff104ae356e9fd89384a55bf9f847e9193ad40/pydantic_core-2.46.4-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:bb63e0198ca18aad131c089b9204c23079c3afa95487e561f4c522d519e55aba", size = 1974958, upload-time = "2026-05-06T13:37:28.611Z" },
343
+ { url = "https://files.pythonhosted.org/packages/4e/74/76223bfb117b64af743c9b6670d1364516f5c0604f96b48f3272f6af6cc6/pydantic_core-2.46.4-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:f47286a97f0bc9b8859519809077b91b2cefe4ae47fcbf5e466a009c1c5d742b", size = 2042118, upload-time = "2026-05-06T13:36:55.216Z" },
344
+ { url = "https://files.pythonhosted.org/packages/cb/7b/848732968bc8f48f3187542f08358b9d842db564147b256669426ebb1652/pydantic_core-2.46.4-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:905a0ed8ea6f2d61c1738835f99b699348d7857379083e5fc497fa0c967a407c", size = 2222876, upload-time = "2026-05-06T13:38:25.455Z" },
345
+ { url = "https://files.pythonhosted.org/packages/b5/2f/e90b63ee2e14bd8d3db8f705a6d75d64e6ee1b7c2c8833747ce706e1e0ce/pydantic_core-2.46.4-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:ea793e075b70290d89d8142074262885d3f7da19634845135751bd6344f73b50", size = 2286703, upload-time = "2026-05-06T13:37:53.304Z" },
346
+ { url = "https://files.pythonhosted.org/packages/ba/1e/acc4d70f88a0a277e4a1fa77ebb985ceabaf900430f875bf9338e11c9420/pydantic_core-2.46.4-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:395aebd9183f9d112f569aeb5b2214d1a10a33bec8456447f7fbdfa51d38d4cd", size = 2092042, upload-time = "2026-05-06T13:38:46.981Z" },
347
+ { url = "https://files.pythonhosted.org/packages/a9/da/0a422b57bf8504102bf3c4ccea9c41bab5a5cee6a54650acf8faf67f5a24/pydantic_core-2.46.4-cp310-cp310-manylinux_2_31_riscv64.whl", hash = "sha256:b078afbc25f3a1436c7a1d2cd3e322497ee99615ba97c563566fdf46aff1ee01", size = 2117231, upload-time = "2026-05-06T13:39:23.146Z" },
348
+ { url = "https://files.pythonhosted.org/packages/bd/2a/2ac13c3af305843e23c5078c53d135656b3f05a2fd78cb7bbbb12e97b473/pydantic_core-2.46.4-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:f747929cf940cddb5b3668a390056ddd5ba2e5010615ea2dcf4f9c4f3ab8791d", size = 2168388, upload-time = "2026-05-06T13:40:08.06Z" },
349
+ { url = "https://files.pythonhosted.org/packages/72/04/2beacf7e1607e93eefe4aed1b4709f079b905fb77530179d4f7c71745f22/pydantic_core-2.46.4-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:daa27d92c36f24388fe3ad306b174781c747627f134452e4f128ea00ce1fe8c4", size = 2184769, upload-time = "2026-05-06T13:38:13.901Z" },
350
+ { url = "https://files.pythonhosted.org/packages/9e/29/d2b9fd9f539133548eaf622c06a4ce176cb46ac59f32d0359c4abc0de047/pydantic_core-2.46.4-cp310-cp310-musllinux_1_1_armv7l.whl", hash = "sha256:19e51f073cd3df251856a8a4189fbdf1de4012c3ebacfb1884f94f1eb406079f", size = 2319312, upload-time = "2026-05-06T13:39:08.24Z" },
351
+ { url = "https://files.pythonhosted.org/packages/7c/af/0f7a5b85fec6075bea96e3ef9187de38fccced0de92c1e7feda8d5cc7bb9/pydantic_core-2.46.4-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:c1747f85cee84c26985853c6f3d9bd3e75da5212912443fa111c113b9c246f39", size = 2361817, upload-time = "2026-05-06T13:38:43.2Z" },
352
+ { url = "https://files.pythonhosted.org/packages/25/a4/73363fec545fd3ec025490bdda2743c56d0dd5b6266b1a53bbe9e4265375/pydantic_core-2.46.4-cp310-cp310-win32.whl", hash = "sha256:2f84c03c8607173d16b5a854ec68a2f9079ae03237a54fb506d13af47e1d018d", size = 1987085, upload-time = "2026-05-06T13:39:25.497Z" },
353
+ { url = "https://files.pythonhosted.org/packages/01/aa/62f082da2c91fac1c234bc9ee0066257ce83f0604abd72e4c9d5991f2d84/pydantic_core-2.46.4-cp310-cp310-win_amd64.whl", hash = "sha256:8358a950c8909158e3df31538a7e4edc2d7265a7c54b47f0864d9e5bae9dcebf", size = 2074311, upload-time = "2026-05-06T13:39:59.922Z" },
298
354
  { url = "https://files.pythonhosted.org/packages/5c/fa/6d7708d2cfc1a832acb6aeb0cd16e801902df8a0f583bb3b4b527fde022e/pydantic_core-2.46.4-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:0e96592440881c74a213e5ad528e2b24d3d4f940de2766bed9010ab1d9e51594", size = 2111872, upload-time = "2026-05-06T13:40:27.596Z" },
299
355
  { url = "https://files.pythonhosted.org/packages/ae/6f/aa064a3e74b5745afbdf250594f38e7ead05e2d651bcb35994b9417a0d4d/pydantic_core-2.46.4-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:e0d65b8c354be7fb5f720c3caa8bc940bc2d20ce749c8e06135f07f8ed95dd7c", size = 1948255, upload-time = "2026-05-06T13:39:12.574Z" },
300
356
  { url = "https://files.pythonhosted.org/packages/43/3a/41114a9f7569b84b4d84e7a018c57c56347dac30c0d4a872946ec4e36c46/pydantic_core-2.46.4-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7bfb192b3f4b9e8a89b6277b6ce787564f62cfd272055f6e685726b111dc7826", size = 1972827, upload-time = "2026-05-06T13:38:19.841Z" },
@@ -412,10 +468,12 @@ version = "9.1.1"
412
468
  source = { registry = "https://pypi.org/simple" }
413
469
  dependencies = [
414
470
  { name = "colorama", marker = "sys_platform == 'win32'" },
471
+ { name = "exceptiongroup", marker = "python_full_version < '3.11'" },
415
472
  { name = "iniconfig" },
416
473
  { name = "packaging" },
417
474
  { name = "pluggy" },
418
475
  { name = "pygments" },
476
+ { name = "tomli", marker = "python_full_version < '3.11'" },
419
477
  ]
420
478
  sdist = { url = "https://files.pythonhosted.org/packages/e4/47/b9efed96c114afcfa3c9d3fe98a76a1d14c74a9e266d397cf6eb64be5e01/pytest-9.1.1.tar.gz", hash = "sha256:1088fbde8f2b49d95a549a195707afa7a76a3ce9bcadc26b6d71f0ffda5fe313", size = 1636369, upload-time = "2026-06-19T10:58:32.857Z" }
421
479
  wheels = [
@@ -543,7 +601,7 @@ wheels = [
543
601
 
544
602
  [[package]]
545
603
  name = "toolfuncs"
546
- version = "0.3.0"
604
+ version = "0.3.1"
547
605
  source = { editable = "." }
548
606
  dependencies = [
549
607
  { name = "cyclopts" },
@@ -551,6 +609,7 @@ dependencies = [
551
609
  { name = "pip" },
552
610
  { name = "pydantic" },
553
611
  { name = "pydantic-core" },
612
+ { name = "tomli", marker = "python_full_version < '3.11'" },
554
613
  ]
555
614
 
556
615
  [package.optional-dependencies]
@@ -575,6 +634,7 @@ requires-dist = [
575
634
  { name = "pip", specifier = ">=25" },
576
635
  { name = "pydantic", specifier = ">=2,<3" },
577
636
  { name = "pydantic-core", specifier = ">=2,<3" },
637
+ { name = "tomli", marker = "python_full_version < '3.11'", specifier = ">=2.2,<3" },
578
638
  { name = "typed-agent-hooks", marker = "extra == 'hooks'" },
579
639
  ]
580
640
  provides-extras = ["hooks"]
@@ -623,3 +683,12 @@ sdist = { url = "https://files.pythonhosted.org/packages/a3/26/b09b8010994eccc3c
623
683
  wheels = [
624
684
  { url = "https://files.pythonhosted.org/packages/67/81/4add07e5172b7ac40d8ed5ff580409a7801a4fe26d529bdd915401dabfbe/typing_inspection-0.4.4-py3-none-any.whl", hash = "sha256:65b8397ba37ccbce054456aaccddfc91e6e3083c92824df348d96ca832f3f147", size = 14750, upload-time = "2026-08-12T12:37:24.648Z" },
625
685
  ]
686
+
687
+ [[package]]
688
+ name = "zipp"
689
+ version = "4.1.0"
690
+ source = { registry = "https://pypi.org/simple" }
691
+ sdist = { url = "https://files.pythonhosted.org/packages/b9/d8/eab98a517c14134c0b2eb4e2387bc5f457334293ec5d2dd3857ec2966802/zipp-4.1.0.tar.gz", hash = "sha256:4cb57381f544315db7688e976e922a2b18cdb513d21cc194eb42232ba2a3e602", size = 26214, upload-time = "2026-05-18T20:08:57.967Z" }
692
+ wheels = [
693
+ { url = "https://files.pythonhosted.org/packages/3a/13/547360d81e6d88d58492968ffda9f9542854f11310ee556fef14260cc886/zipp-4.1.0-py3-none-any.whl", hash = "sha256:25ad4e16390cd314347dd8f1de67a2ac538ae658ed4ab9db16029c07c188e97f", size = 10238, upload-time = "2026-05-18T20:08:57.045Z" },
694
+ ]
File without changes
File without changes
File without changes
File without changes
File without changes