fmtr.tools 1.1.3__tar.gz → 1.1.5__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.

Potentially problematic release.


This version of fmtr.tools might be problematic. Click here for more details.

Files changed (71) hide show
  1. {fmtr_tools-1.1.3 → fmtr_tools-1.1.5}/PKG-INFO +35 -35
  2. {fmtr_tools-1.1.3 → fmtr_tools-1.1.5}/fmtr/tools/ai_tools/agentic_tools.py +50 -23
  3. {fmtr_tools-1.1.3 → fmtr_tools-1.1.5}/fmtr/tools/constants.py +1 -0
  4. {fmtr_tools-1.1.3 → fmtr_tools-1.1.5}/fmtr/tools/path_tools.py +17 -1
  5. fmtr_tools-1.1.5/fmtr/tools/version +1 -0
  6. {fmtr_tools-1.1.3 → fmtr_tools-1.1.5}/fmtr.tools.egg-info/PKG-INFO +35 -35
  7. fmtr_tools-1.1.3/fmtr/tools/version +0 -1
  8. {fmtr_tools-1.1.3 → fmtr_tools-1.1.5}/LICENSE +0 -0
  9. {fmtr_tools-1.1.3 → fmtr_tools-1.1.5}/README.md +0 -0
  10. {fmtr_tools-1.1.3 → fmtr_tools-1.1.5}/fmtr/tools/__init__.py +0 -0
  11. {fmtr_tools-1.1.3 → fmtr_tools-1.1.5}/fmtr/tools/ai_tools/__init__.py +0 -0
  12. {fmtr_tools-1.1.3 → fmtr_tools-1.1.5}/fmtr/tools/ai_tools/inference_tools.py +0 -0
  13. {fmtr_tools-1.1.3 → fmtr_tools-1.1.5}/fmtr/tools/api_tools.py +0 -0
  14. {fmtr_tools-1.1.3 → fmtr_tools-1.1.5}/fmtr/tools/async_tools.py +0 -0
  15. {fmtr_tools-1.1.3 → fmtr_tools-1.1.5}/fmtr/tools/augmentation_tools.py +0 -0
  16. {fmtr_tools-1.1.3 → fmtr_tools-1.1.5}/fmtr/tools/caching_tools.py +0 -0
  17. {fmtr_tools-1.1.3 → fmtr_tools-1.1.5}/fmtr/tools/console_script_tools.py +0 -0
  18. {fmtr_tools-1.1.3 → fmtr_tools-1.1.5}/fmtr/tools/data_modelling_tools.py +0 -0
  19. {fmtr_tools-1.1.3 → fmtr_tools-1.1.5}/fmtr/tools/dataclass_tools.py +0 -0
  20. {fmtr_tools-1.1.3 → fmtr_tools-1.1.5}/fmtr/tools/datatype_tools.py +0 -0
  21. {fmtr_tools-1.1.3 → fmtr_tools-1.1.5}/fmtr/tools/debugging_tools.py +0 -0
  22. {fmtr_tools-1.1.3 → fmtr_tools-1.1.5}/fmtr/tools/docker_tools.py +0 -0
  23. {fmtr_tools-1.1.3 → fmtr_tools-1.1.5}/fmtr/tools/environment_tools.py +0 -0
  24. {fmtr_tools-1.1.3 → fmtr_tools-1.1.5}/fmtr/tools/function_tools.py +0 -0
  25. {fmtr_tools-1.1.3 → fmtr_tools-1.1.5}/fmtr/tools/google_api_tools.py +0 -0
  26. {fmtr_tools-1.1.3 → fmtr_tools-1.1.5}/fmtr/tools/hash_tools.py +0 -0
  27. {fmtr_tools-1.1.3 → fmtr_tools-1.1.5}/fmtr/tools/hfh_tools.py +0 -0
  28. {fmtr_tools-1.1.3 → fmtr_tools-1.1.5}/fmtr/tools/html_tools.py +0 -0
  29. {fmtr_tools-1.1.3 → fmtr_tools-1.1.5}/fmtr/tools/import_tools.py +0 -0
  30. {fmtr_tools-1.1.3 → fmtr_tools-1.1.5}/fmtr/tools/inspection_tools.py +0 -0
  31. {fmtr_tools-1.1.3 → fmtr_tools-1.1.5}/fmtr/tools/interface_tools.py +0 -0
  32. {fmtr_tools-1.1.3 → fmtr_tools-1.1.5}/fmtr/tools/iterator_tools.py +0 -0
  33. {fmtr_tools-1.1.3 → fmtr_tools-1.1.5}/fmtr/tools/json_fix_tools.py +0 -0
  34. {fmtr_tools-1.1.3 → fmtr_tools-1.1.5}/fmtr/tools/json_tools.py +0 -0
  35. {fmtr_tools-1.1.3 → fmtr_tools-1.1.5}/fmtr/tools/logging_tools.py +0 -0
  36. {fmtr_tools-1.1.3 → fmtr_tools-1.1.5}/fmtr/tools/merging_tools.py +0 -0
  37. {fmtr_tools-1.1.3 → fmtr_tools-1.1.5}/fmtr/tools/metric_tools.py +0 -0
  38. {fmtr_tools-1.1.3 → fmtr_tools-1.1.5}/fmtr/tools/name_tools.py +0 -0
  39. {fmtr_tools-1.1.3 → fmtr_tools-1.1.5}/fmtr/tools/netrc_tools.py +0 -0
  40. {fmtr_tools-1.1.3 → fmtr_tools-1.1.5}/fmtr/tools/openai_tools.py +0 -0
  41. {fmtr_tools-1.1.3 → fmtr_tools-1.1.5}/fmtr/tools/parallel_tools.py +0 -0
  42. {fmtr_tools-1.1.3 → fmtr_tools-1.1.5}/fmtr/tools/pdf_tools.py +0 -0
  43. {fmtr_tools-1.1.3 → fmtr_tools-1.1.5}/fmtr/tools/platform_tools.py +0 -0
  44. {fmtr_tools-1.1.3 → fmtr_tools-1.1.5}/fmtr/tools/process_tools.py +0 -0
  45. {fmtr_tools-1.1.3 → fmtr_tools-1.1.5}/fmtr/tools/profiling_tools.py +0 -0
  46. {fmtr_tools-1.1.3 → fmtr_tools-1.1.5}/fmtr/tools/random_tools.py +0 -0
  47. {fmtr_tools-1.1.3 → fmtr_tools-1.1.5}/fmtr/tools/semantic_tools.py +0 -0
  48. {fmtr_tools-1.1.3 → fmtr_tools-1.1.5}/fmtr/tools/settings_tools.py +0 -0
  49. {fmtr_tools-1.1.3 → fmtr_tools-1.1.5}/fmtr/tools/spaces_tools.py +0 -0
  50. {fmtr_tools-1.1.3 → fmtr_tools-1.1.5}/fmtr/tools/string_tools.py +0 -0
  51. {fmtr_tools-1.1.3 → fmtr_tools-1.1.5}/fmtr/tools/tabular_tools.py +0 -0
  52. {fmtr_tools-1.1.3 → fmtr_tools-1.1.5}/fmtr/tools/tests/__init__.py +0 -0
  53. {fmtr_tools-1.1.3 → fmtr_tools-1.1.5}/fmtr/tools/tests/conftest.py +0 -0
  54. {fmtr_tools-1.1.3 → fmtr_tools-1.1.5}/fmtr/tools/tests/helpers.py +0 -0
  55. {fmtr_tools-1.1.3 → fmtr_tools-1.1.5}/fmtr/tools/tests/test_datatype.py +0 -0
  56. {fmtr_tools-1.1.3 → fmtr_tools-1.1.5}/fmtr/tools/tests/test_environment.py +0 -0
  57. {fmtr_tools-1.1.3 → fmtr_tools-1.1.5}/fmtr/tools/tests/test_json.py +0 -0
  58. {fmtr_tools-1.1.3 → fmtr_tools-1.1.5}/fmtr/tools/tests/test_path.py +0 -0
  59. {fmtr_tools-1.1.3 → fmtr_tools-1.1.5}/fmtr/tools/tests/test_yaml.py +0 -0
  60. {fmtr_tools-1.1.3 → fmtr_tools-1.1.5}/fmtr/tools/tokenization_tools.py +0 -0
  61. {fmtr_tools-1.1.3 → fmtr_tools-1.1.5}/fmtr/tools/tools.py +0 -0
  62. {fmtr_tools-1.1.3 → fmtr_tools-1.1.5}/fmtr/tools/unicode_tools.py +0 -0
  63. {fmtr_tools-1.1.3 → fmtr_tools-1.1.5}/fmtr/tools/version_tools.py +0 -0
  64. {fmtr_tools-1.1.3 → fmtr_tools-1.1.5}/fmtr/tools/yaml_tools.py +0 -0
  65. {fmtr_tools-1.1.3 → fmtr_tools-1.1.5}/fmtr.tools.egg-info/SOURCES.txt +0 -0
  66. {fmtr_tools-1.1.3 → fmtr_tools-1.1.5}/fmtr.tools.egg-info/dependency_links.txt +0 -0
  67. {fmtr_tools-1.1.3 → fmtr_tools-1.1.5}/fmtr.tools.egg-info/entry_points.txt +0 -0
  68. {fmtr_tools-1.1.3 → fmtr_tools-1.1.5}/fmtr.tools.egg-info/requires.txt +34 -34
  69. {fmtr_tools-1.1.3 → fmtr_tools-1.1.5}/fmtr.tools.egg-info/top_level.txt +0 -0
  70. {fmtr_tools-1.1.3 → fmtr_tools-1.1.5}/setup.cfg +0 -0
  71. {fmtr_tools-1.1.3 → fmtr_tools-1.1.5}/setup.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: fmtr.tools
3
- Version: 1.1.3
3
+ Version: 1.1.5
4
4
  Summary: Collection of high-level tools to simplify everyday development tasks, with a focus on AI/ML
5
5
  Home-page: https://github.com/fmtr/fmtr.tools
6
6
  Author: Frontmatter
@@ -9,51 +9,51 @@ License: Copyright © 2025 Frontmatter. All rights reserved.
9
9
  Description-Content-Type: text/markdown
10
10
  License-File: LICENSE
11
11
  Provides-Extra: test
12
+ Requires-Dist: pymupdf4llm; extra == "test"
13
+ Requires-Dist: pymupdf; extra == "test"
14
+ Requires-Dist: semver; extra == "test"
15
+ Requires-Dist: distributed; extra == "test"
16
+ Requires-Dist: fastapi; extra == "test"
17
+ Requires-Dist: pydantic-ai[logfire,openai]; extra == "test"
18
+ Requires-Dist: diskcache; extra == "test"
19
+ Requires-Dist: pandas; extra == "test"
20
+ Requires-Dist: contexttimer; extra == "test"
21
+ Requires-Dist: pytest-cov; extra == "test"
22
+ Requires-Dist: uvicorn[standard]; extra == "test"
12
23
  Requires-Dist: flet-webview; extra == "test"
13
- Requires-Dist: torchvision; extra == "test"
24
+ Requires-Dist: google-auth; extra == "test"
25
+ Requires-Dist: deepmerge; extra == "test"
26
+ Requires-Dist: flet-video; extra == "test"
14
27
  Requires-Dist: pydevd-pycharm; extra == "test"
15
- Requires-Dist: pytest-cov; extra == "test"
16
- Requires-Dist: ollama; extra == "test"
17
28
  Requires-Dist: torchaudio; extra == "test"
18
29
  Requires-Dist: faker; extra == "test"
19
- Requires-Dist: uvicorn[standard]; extra == "test"
20
- Requires-Dist: Unidecode; extra == "test"
21
- Requires-Dist: semver; extra == "test"
22
- Requires-Dist: openai; extra == "test"
23
- Requires-Dist: transformers[sentencepiece]; extra == "test"
24
- Requires-Dist: google-auth-httplib2; extra == "test"
25
- Requires-Dist: openpyxl; extra == "test"
30
+ Requires-Dist: bokeh; extra == "test"
26
31
  Requires-Dist: peft; extra == "test"
27
- Requires-Dist: docker; extra == "test"
28
- Requires-Dist: json_repair; extra == "test"
29
- Requires-Dist: dask[bag]; extra == "test"
30
- Requires-Dist: logfire[fastapi]; extra == "test"
31
- Requires-Dist: deepmerge; extra == "test"
32
- Requires-Dist: tinynetrc; extra == "test"
33
- Requires-Dist: sre_yield; extra == "test"
32
+ Requires-Dist: pydantic-settings; extra == "test"
33
+ Requires-Dist: logfire; extra == "test"
34
+ Requires-Dist: pyyaml; extra == "test"
34
35
  Requires-Dist: tabulate; extra == "test"
36
+ Requires-Dist: openpyxl; extra == "test"
37
+ Requires-Dist: google-api-python-client; extra == "test"
38
+ Requires-Dist: flet[all]; extra == "test"
39
+ Requires-Dist: transformers[sentencepiece]; extra == "test"
40
+ Requires-Dist: openai; extra == "test"
35
41
  Requires-Dist: sentence_transformers; extra == "test"
36
- Requires-Dist: google-auth; extra == "test"
37
- Requires-Dist: logfire; extra == "test"
42
+ Requires-Dist: google-auth-httplib2; extra == "test"
43
+ Requires-Dist: huggingface_hub; extra == "test"
44
+ Requires-Dist: dask[bag]; extra == "test"
38
45
  Requires-Dist: html2text; extra == "test"
39
- Requires-Dist: bokeh; extra == "test"
46
+ Requires-Dist: json_repair; extra == "test"
47
+ Requires-Dist: sre_yield; extra == "test"
48
+ Requires-Dist: logfire[fastapi]; extra == "test"
49
+ Requires-Dist: torchvision; extra == "test"
40
50
  Requires-Dist: pydantic; extra == "test"
41
- Requires-Dist: contexttimer; extra == "test"
42
- Requires-Dist: flet[all]; extra == "test"
43
- Requires-Dist: fastapi; extra == "test"
51
+ Requires-Dist: ollama; extra == "test"
52
+ Requires-Dist: Unidecode; extra == "test"
53
+ Requires-Dist: tinynetrc; extra == "test"
44
54
  Requires-Dist: google-auth-oauthlib; extra == "test"
45
- Requires-Dist: pandas; extra == "test"
46
- Requires-Dist: huggingface_hub; extra == "test"
47
- Requires-Dist: pymupdf; extra == "test"
48
- Requires-Dist: google-api-python-client; extra == "test"
49
- Requires-Dist: pydantic-settings; extra == "test"
50
- Requires-Dist: diskcache; extra == "test"
51
- Requires-Dist: distributed; extra == "test"
55
+ Requires-Dist: docker; extra == "test"
52
56
  Requires-Dist: tokenizers; extra == "test"
53
- Requires-Dist: flet-video; extra == "test"
54
- Requires-Dist: pyyaml; extra == "test"
55
- Requires-Dist: pydantic-ai[logfire,openai]; extra == "test"
56
- Requires-Dist: pymupdf4llm; extra == "test"
57
57
  Provides-Extra: yaml
58
58
  Requires-Dist: pyyaml; extra == "yaml"
59
59
  Provides-Extra: logging
@@ -1,9 +1,9 @@
1
1
  import pydantic_ai
2
2
  from pydantic_ai import RunContext
3
3
  from pydantic_ai.agent import AgentRunResult, Agent
4
- from pydantic_ai.messages import ModelRequest, RetryPromptPart
5
4
  from pydantic_ai.models.openai import OpenAIModel
6
5
  from pydantic_ai.providers.openai import OpenAIProvider
6
+ from typing import List, Optional
7
7
 
8
8
  from fmtr.tools import environment_tools as env
9
9
  from fmtr.tools.constants import Constants
@@ -25,7 +25,7 @@ class Task:
25
25
 
26
26
  MODEL_ID = 'gpt-4o'
27
27
  MODEL_ID_FMTR = 'qwen2.5-coder:14b'
28
- SYSTEM_PROMPT = None
28
+ SYSTEM_PROMPT_STATIC = None
29
29
  DEPS_TYPE = str
30
30
  RESULT_TYPE = str
31
31
  RESULT_RETRIES = 5
@@ -41,7 +41,7 @@ class Task:
41
41
  self.agent = Agent(
42
42
  *args,
43
43
  model=self.model,
44
- system_prompt=self.SYSTEM_PROMPT or [],
44
+ system_prompt=self.SYSTEM_PROMPT_STATIC or [],
45
45
  deps_type=self.DEPS_TYPE,
46
46
  result_type=self.RESULT_TYPE,
47
47
  result_retries=self.RESULT_RETRIES,
@@ -49,58 +49,85 @@ class Task:
49
49
  )
50
50
 
51
51
  self.agent.output_validator(self.validate)
52
+ self.agent.system_prompt(self.add_system_prompt)
52
53
  self.history = []
53
54
 
54
- async def run(self, *args, **kwargs) -> AgentRunResult[RESULT_TYPE]:
55
+ @property
56
+ def sync_runner(self):
55
57
  """
56
58
 
57
- Run Agent storing history
59
+ Convenience/debug function to run without async.
58
60
 
59
61
  """
62
+ import asyncio
63
+ return asyncio.run
60
64
 
61
- result = await self.agent.run(*args, message_history=self.history, **kwargs)
65
+ async def run(self, *args, deps=None, **kwargs) -> AgentRunResult[RESULT_TYPE]:
66
+ """
67
+
68
+ Run Agent with deps-relative user prompt and while storing history
69
+
70
+ """
71
+ result = await self.agent.run(*args, user_prompt=self.get_prompt(deps), deps=deps, message_history=self.history, **kwargs)
62
72
  self.history = result.all_messages()
63
73
  return result
64
74
 
65
- async def revert(self, msg, deps):
75
+ async def validate(self, ctx: RunContext[DEPS_TYPE], output: RESULT_TYPE) -> RESULT_TYPE:
66
76
  """
67
77
 
68
- Post-hoc, user-initiated tool retry.
78
+ Dummy validator
69
79
 
70
80
  """
71
- msg_final = self.history.pop(-1)
72
- tool_return_part = msg_final.parts[0]
81
+ return output
73
82
 
74
- retry_prompt = RetryPromptPart(content=msg, tool_name=tool_return_part.tool_name, tool_call_id=tool_return_part.tool_call_id, timestamp=tool_return_part.timestamp, part_kind='retry-prompt')
75
- retry_request = ModelRequest(parts=[retry_prompt], instructions=msg_final.instructions, kind='request')
83
+ def get_prompt(self, deps: Optional[DEPS_TYPE]) -> Optional[str]:
84
+ """
76
85
 
77
- self.history.append(retry_request)
86
+ Dummy prompt generator
78
87
 
79
- result = await Task.run(self, deps=deps)
80
- return result
88
+ """
89
+ return None
81
90
 
82
- async def validate(self, ctx: RunContext[DEPS_TYPE], output: RESULT_TYPE) -> RESULT_TYPE:
91
+ def add_system_prompt(self, ctx: RunContext[DEPS_TYPE]) -> str | List[str]:
83
92
  """
84
93
 
85
- Dummy validator
94
+ Dummy system prompt append
86
95
 
87
96
  """
88
- return output
97
+
98
+ return []
89
99
 
90
100
  if __name__ == '__main__':
91
101
  import asyncio
92
102
  from fmtr.tools import dm
93
103
 
94
104
 
95
- class TestOutput(dm.BaseModel):
105
+ class TestOutput(dm.Base):
96
106
  text: str
97
107
 
98
108
 
109
+ class TestDeps(dm.Base):
110
+ lang: str
111
+ subject: str
112
+
113
+
99
114
  class TaskTest(Task):
100
- PROVIDER = Task.PROVIDER_FMTR
101
- MODEL_ID = 'qwen2.5-coder:14b'
115
+ # PROVIDER = Task.PROVIDER_FMTR
116
+ # MODEL_ID = 'qwen2.5-coder:14b'
102
117
  RESULT_TYPE = TestOutput
118
+ SYSTEM_PROMPT_STATIC = 'Tell the user jokes.'
119
+
120
+ def add_system_prompt(self, ctx: RunContext[TestDeps]) -> str:
121
+ return f'The jokes must be in the {ctx.deps.lang} language.'
122
+
123
+ def get_prompt(self, deps: Optional[TestDeps]) -> str:
124
+ return f'Tell me one about {deps.subject}.'
103
125
 
104
126
  task = TaskTest()
105
- result = asyncio.run(task.run('Hello! What is your name?'))
106
- result
127
+ deps = TestDeps(lang='English', subject='eggs')
128
+ result1 = task.sync_runner(task.run(deps=deps))
129
+ result1
130
+
131
+ deps = TestDeps(lang='German', subject='sausages')
132
+ result2 = task.sync_runner(task.run(deps=deps))
133
+ result2
@@ -31,3 +31,4 @@ class Constants:
31
31
  FILENAME_CONFIG = 'settings.yaml'
32
32
  DIR_NAME_ARTIFACTS = 'artifacts'
33
33
  FILENAME_VERSION = 'version'
34
+ DIR_NAME_HF = 'hf'
@@ -228,7 +228,14 @@ class PackagePaths:
228
228
  Path of artifacts directory.
229
229
 
230
230
  """
231
- return self.repo / self.dir_name_artifacts
231
+
232
+ from fmtr.tools import env
233
+ if env.IS_DEBUG:
234
+ path = self.repo / self.dir_name_artifacts
235
+ else:
236
+ path = Path('/') / self.dir_name_artifacts
237
+
238
+ return path
232
239
 
233
240
  @property
234
241
  def settings(self) -> Path:
@@ -239,6 +246,15 @@ class PackagePaths:
239
246
  """
240
247
  return self.artifacts / self.filename_config
241
248
 
249
+ @property
250
+ def hf(self) -> Path:
251
+ """
252
+
253
+ Path of HuggingFace directory
254
+
255
+ """
256
+ return self.artifacts / Constants.DIR_NAME_HF
257
+
242
258
  def __repr__(self) -> str:
243
259
  """
244
260
 
@@ -0,0 +1 @@
1
+ 1.1.5
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: fmtr.tools
3
- Version: 1.1.3
3
+ Version: 1.1.5
4
4
  Summary: Collection of high-level tools to simplify everyday development tasks, with a focus on AI/ML
5
5
  Home-page: https://github.com/fmtr/fmtr.tools
6
6
  Author: Frontmatter
@@ -9,51 +9,51 @@ License: Copyright © 2025 Frontmatter. All rights reserved.
9
9
  Description-Content-Type: text/markdown
10
10
  License-File: LICENSE
11
11
  Provides-Extra: test
12
+ Requires-Dist: pymupdf4llm; extra == "test"
13
+ Requires-Dist: pymupdf; extra == "test"
14
+ Requires-Dist: semver; extra == "test"
15
+ Requires-Dist: distributed; extra == "test"
16
+ Requires-Dist: fastapi; extra == "test"
17
+ Requires-Dist: pydantic-ai[logfire,openai]; extra == "test"
18
+ Requires-Dist: diskcache; extra == "test"
19
+ Requires-Dist: pandas; extra == "test"
20
+ Requires-Dist: contexttimer; extra == "test"
21
+ Requires-Dist: pytest-cov; extra == "test"
22
+ Requires-Dist: uvicorn[standard]; extra == "test"
12
23
  Requires-Dist: flet-webview; extra == "test"
13
- Requires-Dist: torchvision; extra == "test"
24
+ Requires-Dist: google-auth; extra == "test"
25
+ Requires-Dist: deepmerge; extra == "test"
26
+ Requires-Dist: flet-video; extra == "test"
14
27
  Requires-Dist: pydevd-pycharm; extra == "test"
15
- Requires-Dist: pytest-cov; extra == "test"
16
- Requires-Dist: ollama; extra == "test"
17
28
  Requires-Dist: torchaudio; extra == "test"
18
29
  Requires-Dist: faker; extra == "test"
19
- Requires-Dist: uvicorn[standard]; extra == "test"
20
- Requires-Dist: Unidecode; extra == "test"
21
- Requires-Dist: semver; extra == "test"
22
- Requires-Dist: openai; extra == "test"
23
- Requires-Dist: transformers[sentencepiece]; extra == "test"
24
- Requires-Dist: google-auth-httplib2; extra == "test"
25
- Requires-Dist: openpyxl; extra == "test"
30
+ Requires-Dist: bokeh; extra == "test"
26
31
  Requires-Dist: peft; extra == "test"
27
- Requires-Dist: docker; extra == "test"
28
- Requires-Dist: json_repair; extra == "test"
29
- Requires-Dist: dask[bag]; extra == "test"
30
- Requires-Dist: logfire[fastapi]; extra == "test"
31
- Requires-Dist: deepmerge; extra == "test"
32
- Requires-Dist: tinynetrc; extra == "test"
33
- Requires-Dist: sre_yield; extra == "test"
32
+ Requires-Dist: pydantic-settings; extra == "test"
33
+ Requires-Dist: logfire; extra == "test"
34
+ Requires-Dist: pyyaml; extra == "test"
34
35
  Requires-Dist: tabulate; extra == "test"
36
+ Requires-Dist: openpyxl; extra == "test"
37
+ Requires-Dist: google-api-python-client; extra == "test"
38
+ Requires-Dist: flet[all]; extra == "test"
39
+ Requires-Dist: transformers[sentencepiece]; extra == "test"
40
+ Requires-Dist: openai; extra == "test"
35
41
  Requires-Dist: sentence_transformers; extra == "test"
36
- Requires-Dist: google-auth; extra == "test"
37
- Requires-Dist: logfire; extra == "test"
42
+ Requires-Dist: google-auth-httplib2; extra == "test"
43
+ Requires-Dist: huggingface_hub; extra == "test"
44
+ Requires-Dist: dask[bag]; extra == "test"
38
45
  Requires-Dist: html2text; extra == "test"
39
- Requires-Dist: bokeh; extra == "test"
46
+ Requires-Dist: json_repair; extra == "test"
47
+ Requires-Dist: sre_yield; extra == "test"
48
+ Requires-Dist: logfire[fastapi]; extra == "test"
49
+ Requires-Dist: torchvision; extra == "test"
40
50
  Requires-Dist: pydantic; extra == "test"
41
- Requires-Dist: contexttimer; extra == "test"
42
- Requires-Dist: flet[all]; extra == "test"
43
- Requires-Dist: fastapi; extra == "test"
51
+ Requires-Dist: ollama; extra == "test"
52
+ Requires-Dist: Unidecode; extra == "test"
53
+ Requires-Dist: tinynetrc; extra == "test"
44
54
  Requires-Dist: google-auth-oauthlib; extra == "test"
45
- Requires-Dist: pandas; extra == "test"
46
- Requires-Dist: huggingface_hub; extra == "test"
47
- Requires-Dist: pymupdf; extra == "test"
48
- Requires-Dist: google-api-python-client; extra == "test"
49
- Requires-Dist: pydantic-settings; extra == "test"
50
- Requires-Dist: diskcache; extra == "test"
51
- Requires-Dist: distributed; extra == "test"
55
+ Requires-Dist: docker; extra == "test"
52
56
  Requires-Dist: tokenizers; extra == "test"
53
- Requires-Dist: flet-video; extra == "test"
54
- Requires-Dist: pyyaml; extra == "test"
55
- Requires-Dist: pydantic-ai[logfire,openai]; extra == "test"
56
- Requires-Dist: pymupdf4llm; extra == "test"
57
57
  Provides-Extra: yaml
58
58
  Requires-Dist: pyyaml; extra == "yaml"
59
59
  Provides-Extra: logging
@@ -1 +0,0 @@
1
- 1.1.3
File without changes
File without changes
@@ -113,51 +113,51 @@ tabulate
113
113
  openpyxl
114
114
 
115
115
  [test]
116
+ pymupdf4llm
117
+ pymupdf
118
+ semver
119
+ distributed
120
+ fastapi
121
+ pydantic-ai[logfire,openai]
122
+ diskcache
123
+ pandas
124
+ contexttimer
125
+ pytest-cov
126
+ uvicorn[standard]
116
127
  flet-webview
117
- torchvision
128
+ google-auth
129
+ deepmerge
130
+ flet-video
118
131
  pydevd-pycharm
119
- pytest-cov
120
- ollama
121
132
  torchaudio
122
133
  faker
123
- uvicorn[standard]
124
- Unidecode
125
- semver
126
- openai
127
- transformers[sentencepiece]
128
- google-auth-httplib2
129
- openpyxl
134
+ bokeh
130
135
  peft
131
- docker
132
- json_repair
133
- dask[bag]
134
- logfire[fastapi]
135
- deepmerge
136
- tinynetrc
137
- sre_yield
136
+ pydantic-settings
137
+ logfire
138
+ pyyaml
138
139
  tabulate
140
+ openpyxl
141
+ google-api-python-client
142
+ flet[all]
143
+ transformers[sentencepiece]
144
+ openai
139
145
  sentence_transformers
140
- google-auth
141
- logfire
146
+ google-auth-httplib2
147
+ huggingface_hub
148
+ dask[bag]
142
149
  html2text
143
- bokeh
150
+ json_repair
151
+ sre_yield
152
+ logfire[fastapi]
153
+ torchvision
144
154
  pydantic
145
- contexttimer
146
- flet[all]
147
- fastapi
155
+ ollama
156
+ Unidecode
157
+ tinynetrc
148
158
  google-auth-oauthlib
149
- pandas
150
- huggingface_hub
151
- pymupdf
152
- google-api-python-client
153
- pydantic-settings
154
- diskcache
155
- distributed
159
+ docker
156
160
  tokenizers
157
- flet-video
158
- pyyaml
159
- pydantic-ai[logfire,openai]
160
- pymupdf4llm
161
161
 
162
162
  [tokenization]
163
163
  tokenizers
File without changes
File without changes