fmtr.tools 1.0.53__py3-none-any.whl → 1.0.55__py3-none-any.whl

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.

@@ -1,7 +1,7 @@
1
1
  import pydantic_ai
2
- from pydantic_ai import RunContext, ModelRetry
3
- from pydantic_ai.agent import AgentRunResult
4
- from pydantic_ai.messages import ModelRequest, SystemPromptPart, ToolCallPart, RetryPromptPart, ModelResponse, ToolReturnPart, UserPromptPart
2
+ from pydantic_ai import RunContext
3
+ from pydantic_ai.agent import AgentRunResult, Agent
4
+ from pydantic_ai.messages import ModelRequest, RetryPromptPart
5
5
  from pydantic_ai.models.openai import OpenAIModel
6
6
  from pydantic_ai.providers.openai import OpenAIProvider
7
7
 
@@ -10,16 +10,6 @@ from fmtr.tools.config import ToolsConfig
10
10
 
11
11
  pydantic_ai.Agent.instrument_all()
12
12
 
13
- class Agent(pydantic_ai.Agent):
14
- """
15
-
16
- Agent stub
17
-
18
- TODO base class is marked `@final`, so is it safe to subclass?
19
-
20
- """
21
-
22
-
23
13
  class Task:
24
14
  """
25
15
 
@@ -28,10 +18,15 @@ class Task:
28
18
  """
29
19
 
30
20
  PROVIDER = OpenAIProvider(api_key=env.get(ToolsConfig.FMTR_OPENAI_API_KEY_KEY))
21
+
22
+ API_HOST_FMTR = env.get(ToolsConfig.FMTR_AI_HOST_KEY, ToolsConfig.FMTR_AI_HOST_DEFAULT)
23
+ API_URL_FMTR = f'https://{API_HOST_FMTR}/v1'
24
+ PROVIDER_FMTR = OpenAIProvider(base_url=API_URL_FMTR)
25
+
31
26
  MODEL_ID = 'gpt-4o'
32
27
  SYSTEM_PROMPT = None
33
- DEPS_TYPE = type(None)
34
- RESULT_TYPE = type(None)
28
+ DEPS_TYPE = str
29
+ RESULT_TYPE = str
35
30
  RESULT_RETRIES = 5
36
31
 
37
32
  def __init__(self, *args, **kwargs):
@@ -45,7 +40,7 @@ class Task:
45
40
  self.agent = Agent(
46
41
  *args,
47
42
  model=self.model,
48
- system_prompt=self.SYSTEM_PROMPT,
43
+ system_prompt=self.SYSTEM_PROMPT or [],
49
44
  deps_type=self.DEPS_TYPE,
50
45
  result_type=self.RESULT_TYPE,
51
46
  result_retries=self.RESULT_RETRIES,
@@ -90,3 +85,16 @@ class Task:
90
85
 
91
86
  """
92
87
  return output
88
+
89
+
90
+ class TaskTest(Task):
91
+ PROVIDER = Task.PROVIDER_FMTR
92
+ MODEL_ID = 'mixtral:8x7b'
93
+
94
+
95
+ if __name__ == '__main__':
96
+ import asyncio
97
+
98
+ task = TaskTest()
99
+ result = asyncio.run(task.run('Hello! What is your name?'))
100
+ result
fmtr/tools/config.py CHANGED
@@ -26,3 +26,6 @@ class ToolsConfig(ConfigClass):
26
26
  FMTR_REMOTE_DEBUG_ENABLED_KEY = 'FMTR_REMOTE_DEBUG_ENABLED'
27
27
 
28
28
  FMTR_OPENAI_API_KEY_KEY = 'FMTR_OPENAI_API_KEY'
29
+
30
+ FMTR_AI_HOST_KEY = 'FMTR_URL_HOST'
31
+ FMTR_AI_HOST_DEFAULT = 'ai.gex.fmtr.dev'
fmtr/tools/version CHANGED
@@ -1 +1 @@
1
- 1.0.53
1
+ 1.0.55
@@ -1,6 +1,6 @@
1
- Metadata-Version: 2.1
1
+ Metadata-Version: 2.4
2
2
  Name: fmtr.tools
3
- Version: 1.0.53
3
+ Version: 1.0.55
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
@@ -8,141 +8,150 @@ Author-email: innovative.fowler@mask.pro.fmtr.dev
8
8
  License: Copyright © 2025 Frontmatter. All rights reserved.
9
9
  Description-Content-Type: text/markdown
10
10
  License-File: LICENSE
11
- Provides-Extra: ai
12
- Requires-Dist: peft ; extra == 'ai'
13
- Requires-Dist: pydantic ; extra == 'ai'
14
- Requires-Dist: torchaudio ; extra == 'ai'
15
- Requires-Dist: torchvision ; extra == 'ai'
16
- Requires-Dist: transformers[sentencepiece] ; extra == 'ai'
17
- Provides-Extra: ai.client
18
- Requires-Dist: logfire ; extra == 'ai.client'
19
- Requires-Dist: ollama ; extra == 'ai.client'
20
- Requires-Dist: openai ; extra == 'ai.client'
21
- Requires-Dist: pydantic ; extra == 'ai.client'
22
- Requires-Dist: pydantic-ai[logfire,openai] ; extra == 'ai.client'
23
- Requires-Dist: semver ; extra == 'ai.client'
24
- Provides-Extra: api
25
- Requires-Dist: fastapi ; extra == 'api'
26
- Requires-Dist: logfire ; extra == 'api'
27
- Requires-Dist: pydantic ; extra == 'api'
28
- Requires-Dist: semver ; extra == 'api'
29
- Requires-Dist: uvicorn ; extra == 'api'
30
- Provides-Extra: augmentation
31
- Requires-Dist: faker ; extra == 'augmentation'
32
- Requires-Dist: sre-yield ; extra == 'augmentation'
33
- Provides-Extra: caching
34
- Requires-Dist: diskcache ; extra == 'caching'
35
- Provides-Extra: debug
36
- Requires-Dist: pydevd-pycharm ; extra == 'debug'
37
- Provides-Extra: dm
38
- Requires-Dist: pydantic ; extra == 'dm'
39
- Provides-Extra: docker.api
40
- Requires-Dist: docker ; extra == 'docker.api'
41
- Provides-Extra: google.api
42
- Requires-Dist: google-api-python-client ; extra == 'google.api'
43
- Requires-Dist: google-auth ; extra == 'google.api'
44
- Requires-Dist: google-auth-httplib2 ; extra == 'google.api'
45
- Requires-Dist: google-auth-oauthlib ; extra == 'google.api'
46
- Provides-Extra: hfh
47
- Requires-Dist: huggingface-hub ; extra == 'hfh'
48
- Provides-Extra: html
49
- Requires-Dist: html2text ; extra == 'html'
50
- Provides-Extra: interface
51
- Requires-Dist: flet-video ; extra == 'interface'
52
- Requires-Dist: flet-webview ; extra == 'interface'
53
- Requires-Dist: flet[all] ; extra == 'interface'
54
- Requires-Dist: pydantic ; extra == 'interface'
55
- Provides-Extra: json-fix
56
- Requires-Dist: json-repair ; extra == 'json-fix'
11
+ Provides-Extra: test
12
+ Requires-Dist: distributed; extra == "test"
13
+ Requires-Dist: ollama; extra == "test"
14
+ Requires-Dist: pytest-cov; extra == "test"
15
+ Requires-Dist: google-auth-httplib2; extra == "test"
16
+ Requires-Dist: semver; extra == "test"
17
+ Requires-Dist: pyyaml; extra == "test"
18
+ Requires-Dist: tinynetrc; extra == "test"
19
+ Requires-Dist: dask[bag]; extra == "test"
20
+ Requires-Dist: peft; extra == "test"
21
+ Requires-Dist: openpyxl; extra == "test"
22
+ Requires-Dist: google-auth-oauthlib; extra == "test"
23
+ Requires-Dist: huggingface_hub; extra == "test"
24
+ Requires-Dist: bokeh; extra == "test"
25
+ Requires-Dist: Unidecode; extra == "test"
26
+ Requires-Dist: docker; extra == "test"
27
+ Requires-Dist: deepmerge; extra == "test"
28
+ Requires-Dist: json_repair; extra == "test"
29
+ Requires-Dist: fastapi; extra == "test"
30
+ Requires-Dist: transformers[sentencepiece]; extra == "test"
31
+ Requires-Dist: pydevd-pycharm; extra == "test"
32
+ Requires-Dist: tokenizers; extra == "test"
33
+ Requires-Dist: diskcache; extra == "test"
34
+ Requires-Dist: logfire; extra == "test"
35
+ Requires-Dist: contexttimer; extra == "test"
36
+ Requires-Dist: flet-video; extra == "test"
37
+ Requires-Dist: torchvision; extra == "test"
38
+ Requires-Dist: google-api-python-client; extra == "test"
39
+ Requires-Dist: google-auth; extra == "test"
40
+ Requires-Dist: pydantic-ai[logfire,openai]; extra == "test"
41
+ Requires-Dist: flet[all]; extra == "test"
42
+ Requires-Dist: uvicorn; extra == "test"
43
+ Requires-Dist: pydantic; extra == "test"
44
+ Requires-Dist: tabulate; extra == "test"
45
+ Requires-Dist: pymupdf4llm; extra == "test"
46
+ Requires-Dist: openai; extra == "test"
47
+ Requires-Dist: pandas; extra == "test"
48
+ Requires-Dist: faker; extra == "test"
49
+ Requires-Dist: pymupdf; extra == "test"
50
+ Requires-Dist: sre_yield; extra == "test"
51
+ Requires-Dist: flet-webview; extra == "test"
52
+ Requires-Dist: sentence_transformers; extra == "test"
53
+ Requires-Dist: torchaudio; extra == "test"
54
+ Requires-Dist: html2text; extra == "test"
55
+ Provides-Extra: yaml
56
+ Requires-Dist: pyyaml; extra == "yaml"
57
57
  Provides-Extra: logging
58
- Requires-Dist: logfire ; extra == 'logging'
59
- Requires-Dist: semver ; extra == 'logging'
60
- Provides-Extra: merging
61
- Requires-Dist: deepmerge ; extra == 'merging'
62
- Provides-Extra: metric
63
- Requires-Dist: openpyxl ; extra == 'metric'
64
- Requires-Dist: pandas ; extra == 'metric'
65
- Requires-Dist: tabulate ; extra == 'metric'
66
- Provides-Extra: netrc
67
- Requires-Dist: tinynetrc ; extra == 'netrc'
68
- Provides-Extra: openai.api
69
- Requires-Dist: openai ; extra == 'openai.api'
58
+ Requires-Dist: logfire; extra == "logging"
59
+ Requires-Dist: semver; extra == "logging"
70
60
  Provides-Extra: parallel
71
- Requires-Dist: bokeh ; extra == 'parallel'
72
- Requires-Dist: dask[bag] ; extra == 'parallel'
73
- Requires-Dist: distributed ; extra == 'parallel'
74
- Provides-Extra: pdf
75
- Requires-Dist: pydantic ; extra == 'pdf'
76
- Requires-Dist: pymupdf ; extra == 'pdf'
77
- Requires-Dist: pymupdf4llm ; extra == 'pdf'
61
+ Requires-Dist: dask[bag]; extra == "parallel"
62
+ Requires-Dist: distributed; extra == "parallel"
63
+ Requires-Dist: bokeh; extra == "parallel"
64
+ Provides-Extra: tokenization
65
+ Requires-Dist: tokenizers; extra == "tokenization"
66
+ Provides-Extra: augmentation
67
+ Requires-Dist: faker; extra == "augmentation"
68
+ Requires-Dist: sre_yield; extra == "augmentation"
78
69
  Provides-Extra: process
79
- Requires-Dist: logfire ; extra == 'process'
80
- Requires-Dist: semver ; extra == 'process'
70
+ Requires-Dist: logfire; extra == "process"
71
+ Requires-Dist: semver; extra == "process"
81
72
  Provides-Extra: profiling
82
- Requires-Dist: contexttimer ; extra == 'profiling'
83
- Provides-Extra: semantic
84
- Requires-Dist: openpyxl ; extra == 'semantic'
85
- Requires-Dist: pandas ; extra == 'semantic'
86
- Requires-Dist: sentence-transformers ; extra == 'semantic'
87
- Requires-Dist: tabulate ; extra == 'semantic'
88
- Provides-Extra: spaces
89
- Requires-Dist: tinynetrc ; extra == 'spaces'
90
- Provides-Extra: tabular
91
- Requires-Dist: openpyxl ; extra == 'tabular'
92
- Requires-Dist: pandas ; extra == 'tabular'
93
- Requires-Dist: tabulate ; extra == 'tabular'
94
- Provides-Extra: test
95
- Requires-Dist: Unidecode ; extra == 'test'
96
- Requires-Dist: bokeh ; extra == 'test'
97
- Requires-Dist: contexttimer ; extra == 'test'
98
- Requires-Dist: dask[bag] ; extra == 'test'
99
- Requires-Dist: deepmerge ; extra == 'test'
100
- Requires-Dist: diskcache ; extra == 'test'
101
- Requires-Dist: distributed ; extra == 'test'
102
- Requires-Dist: docker ; extra == 'test'
103
- Requires-Dist: faker ; extra == 'test'
104
- Requires-Dist: fastapi ; extra == 'test'
105
- Requires-Dist: flet-video ; extra == 'test'
106
- Requires-Dist: flet-webview ; extra == 'test'
107
- Requires-Dist: flet[all] ; extra == 'test'
108
- Requires-Dist: google-api-python-client ; extra == 'test'
109
- Requires-Dist: google-auth ; extra == 'test'
110
- Requires-Dist: google-auth-httplib2 ; extra == 'test'
111
- Requires-Dist: google-auth-oauthlib ; extra == 'test'
112
- Requires-Dist: html2text ; extra == 'test'
113
- Requires-Dist: huggingface-hub ; extra == 'test'
114
- Requires-Dist: json-repair ; extra == 'test'
115
- Requires-Dist: logfire ; extra == 'test'
116
- Requires-Dist: ollama ; extra == 'test'
117
- Requires-Dist: openai ; extra == 'test'
118
- Requires-Dist: openpyxl ; extra == 'test'
119
- Requires-Dist: pandas ; extra == 'test'
120
- Requires-Dist: peft ; extra == 'test'
121
- Requires-Dist: pydantic ; extra == 'test'
122
- Requires-Dist: pydantic-ai[logfire,openai] ; extra == 'test'
123
- Requires-Dist: pydevd-pycharm ; extra == 'test'
124
- Requires-Dist: pymupdf ; extra == 'test'
125
- Requires-Dist: pymupdf4llm ; extra == 'test'
126
- Requires-Dist: pytest-cov ; extra == 'test'
127
- Requires-Dist: pyyaml ; extra == 'test'
128
- Requires-Dist: semver ; extra == 'test'
129
- Requires-Dist: sentence-transformers ; extra == 'test'
130
- Requires-Dist: sre-yield ; extra == 'test'
131
- Requires-Dist: tabulate ; extra == 'test'
132
- Requires-Dist: tinynetrc ; extra == 'test'
133
- Requires-Dist: tokenizers ; extra == 'test'
134
- Requires-Dist: torchaudio ; extra == 'test'
135
- Requires-Dist: torchvision ; extra == 'test'
136
- Requires-Dist: transformers[sentencepiece] ; extra == 'test'
137
- Requires-Dist: uvicorn ; extra == 'test'
138
- Provides-Extra: tokenization
139
- Requires-Dist: tokenizers ; extra == 'tokenization'
73
+ Requires-Dist: contexttimer; extra == "profiling"
74
+ Provides-Extra: docker-api
75
+ Requires-Dist: docker; extra == "docker-api"
140
76
  Provides-Extra: unicode
141
- Requires-Dist: Unidecode ; extra == 'unicode'
77
+ Requires-Dist: Unidecode; extra == "unicode"
142
78
  Provides-Extra: version
143
- Requires-Dist: semver ; extra == 'version'
144
- Provides-Extra: yaml
145
- Requires-Dist: pyyaml ; extra == 'yaml'
79
+ Requires-Dist: semver; extra == "version"
80
+ Provides-Extra: spaces
81
+ Requires-Dist: tinynetrc; extra == "spaces"
82
+ Provides-Extra: netrc
83
+ Requires-Dist: tinynetrc; extra == "netrc"
84
+ Provides-Extra: hfh
85
+ Requires-Dist: huggingface_hub; extra == "hfh"
86
+ Provides-Extra: merging
87
+ Requires-Dist: deepmerge; extra == "merging"
88
+ Provides-Extra: api
89
+ Requires-Dist: fastapi; extra == "api"
90
+ Requires-Dist: uvicorn; extra == "api"
91
+ Requires-Dist: logfire; extra == "api"
92
+ Requires-Dist: semver; extra == "api"
93
+ Requires-Dist: pydantic; extra == "api"
94
+ Provides-Extra: ai
95
+ Requires-Dist: peft; extra == "ai"
96
+ Requires-Dist: transformers[sentencepiece]; extra == "ai"
97
+ Requires-Dist: torchvision; extra == "ai"
98
+ Requires-Dist: torchaudio; extra == "ai"
99
+ Requires-Dist: pydantic; extra == "ai"
100
+ Provides-Extra: dm
101
+ Requires-Dist: pydantic; extra == "dm"
102
+ Provides-Extra: openai-api
103
+ Requires-Dist: openai; extra == "openai-api"
104
+ Provides-Extra: ai-client
105
+ Requires-Dist: logfire; extra == "ai-client"
106
+ Requires-Dist: semver; extra == "ai-client"
107
+ Requires-Dist: pydantic; extra == "ai-client"
108
+ Requires-Dist: openai; extra == "ai-client"
109
+ Requires-Dist: pydantic-ai[logfire,openai]; extra == "ai-client"
110
+ Requires-Dist: ollama; extra == "ai-client"
111
+ Provides-Extra: json-fix
112
+ Requires-Dist: json_repair; extra == "json-fix"
113
+ Provides-Extra: semantic
114
+ Requires-Dist: sentence_transformers; extra == "semantic"
115
+ Requires-Dist: pandas; extra == "semantic"
116
+ Requires-Dist: tabulate; extra == "semantic"
117
+ Requires-Dist: openpyxl; extra == "semantic"
118
+ Provides-Extra: metric
119
+ Requires-Dist: pandas; extra == "metric"
120
+ Requires-Dist: tabulate; extra == "metric"
121
+ Requires-Dist: openpyxl; extra == "metric"
122
+ Provides-Extra: tabular
123
+ Requires-Dist: pandas; extra == "tabular"
124
+ Requires-Dist: tabulate; extra == "tabular"
125
+ Requires-Dist: openpyxl; extra == "tabular"
126
+ Provides-Extra: html
127
+ Requires-Dist: html2text; extra == "html"
128
+ Provides-Extra: interface
129
+ Requires-Dist: flet[all]; extra == "interface"
130
+ Requires-Dist: flet-video; extra == "interface"
131
+ Requires-Dist: flet-webview; extra == "interface"
132
+ Requires-Dist: pydantic; extra == "interface"
133
+ Provides-Extra: google-api
134
+ Requires-Dist: google-auth; extra == "google-api"
135
+ Requires-Dist: google-auth-oauthlib; extra == "google-api"
136
+ Requires-Dist: google-auth-httplib2; extra == "google-api"
137
+ Requires-Dist: google-api-python-client; extra == "google-api"
138
+ Provides-Extra: caching
139
+ Requires-Dist: diskcache; extra == "caching"
140
+ Provides-Extra: pdf
141
+ Requires-Dist: pymupdf; extra == "pdf"
142
+ Requires-Dist: pydantic; extra == "pdf"
143
+ Requires-Dist: pymupdf4llm; extra == "pdf"
144
+ Provides-Extra: debug
145
+ Requires-Dist: pydevd-pycharm; extra == "debug"
146
+ Dynamic: author
147
+ Dynamic: author-email
148
+ Dynamic: description
149
+ Dynamic: description-content-type
150
+ Dynamic: home-page
151
+ Dynamic: license
152
+ Dynamic: license-file
153
+ Dynamic: provides-extra
154
+ Dynamic: summary
146
155
 
147
156
  # `fmtr.tools`
148
157
 
@@ -3,7 +3,7 @@ fmtr/tools/api_tools.py,sha256=u5YEdKyKto8MKY8legULLU7xeJ7lY2Bgyaep_xa8iZg,2089
3
3
  fmtr/tools/async_tools.py,sha256=ewz757WcveQJd-G5SVr2JDOQVbdLGecCgl-tsBGVZz4,284
4
4
  fmtr/tools/augmentation_tools.py,sha256=-6ESbO4CDlKqVOV1J1V6qBeoBMzbFIinkDHRHnCBej0,55
5
5
  fmtr/tools/caching_tools.py,sha256=UOCYUNvLQ-NofR_dhqBmZF96-HRPf4At5MmxVk3gAIk,2943
6
- fmtr/tools/config.py,sha256=1KcYvxLgjza8wHXbf7f9KO48v6SHCHi-b-3PvCAYQ4s,972
6
+ fmtr/tools/config.py,sha256=3jHO3KhRlzJUCdQmJ_j1DFzep00MSD5qTJHfK6i3FZA,1057
7
7
  fmtr/tools/config_tools.py,sha256=27PbPYj90ClIW4QcRoUoiFM3SbWeMIIZsZR32IPU4V8,805
8
8
  fmtr/tools/console_script_tools.py,sha256=Jcmm4WPhCQdPZfd468xD0epkt29sgcPROwKu79V_ehg,203
9
9
  fmtr/tools/data_modelling_tools.py,sha256=0BFm-F_cYzVTxftWQwORkPd0FM2BTLVh9-s0-rTTFoo,1744
@@ -43,11 +43,11 @@ fmtr/tools/tabular_tools.py,sha256=tpIpZzYku1HcJrHZJL6BC39LmN3WUWVhFbK2N7nDVmE,1
43
43
  fmtr/tools/tokenization_tools.py,sha256=9FP5vgPufWv0XA961eVKObFll0d_2mM0W3ut3rtZyeo,4329
44
44
  fmtr/tools/tools.py,sha256=xnfUrOnrT4OxFYez6vV5tAhydzCICJFiGVnviiZDEQo,796
45
45
  fmtr/tools/unicode_tools.py,sha256=yS_9wpu8ogNoiIL7s1G_8bETFFO_YQlo4LNPv1NLDeY,52
46
- fmtr/tools/version,sha256=DTZzMapstdQgNnaNf2y1vK3ZPVo-9SQw2Eo79N9wvg4,6
46
+ fmtr/tools/version,sha256=PSXMF35J29qA7yxbAYVCFS2KwVCgo1LjZ-WN0QfBZFY,6
47
47
  fmtr/tools/version_tools.py,sha256=axzzHBS9V1n6YuSacsDKG3VfAvRqR8qr6aENCibR8vs,1248
48
48
  fmtr/tools/yaml_tools.py,sha256=Ol43ZwbnSXGnn1K98Uxx61KPGSqfC4axE-X2q1LKMwk,349
49
49
  fmtr/tools/ai_tools/__init__.py,sha256=JZrLuOFNV1A3wvJgonxOgz_4WS-7MfCuowGWA5uYCjs,372
50
- fmtr/tools/ai_tools/agentic_tools.py,sha256=yhcyeCFNudr16bw8t5NE3I83LFk32vCDKUpE8yjnx4Q,2552
50
+ fmtr/tools/ai_tools/agentic_tools.py,sha256=Y4MhkGqQ9wL1gFXAsaaO8BIYS1mncVcUPsH-iZ0-UY8,2760
51
51
  fmtr/tools/ai_tools/inference_tools.py,sha256=yF8Oxph0L8W2CnK_o-MVztBhWVwBpgOEkx9_m3uqQww,11840
52
52
  fmtr/tools/tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
53
53
  fmtr/tools/tests/conftest.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
@@ -57,9 +57,9 @@ fmtr/tools/tests/test_environment.py,sha256=iHaiMQfECYZPkPKwfuIZV9uHuWe3aE-p_dN_
57
57
  fmtr/tools/tests/test_json.py,sha256=IeSP4ziPvRcmS8kq7k9tHonC9rN5YYq9GSNT2ul6Msk,287
58
58
  fmtr/tools/tests/test_path.py,sha256=AkZQa6_8BQ-VaCyL_J-iKmdf2ZaM-xFYR37Kun3k4_g,2188
59
59
  fmtr/tools/tests/test_yaml.py,sha256=jc0TwwKu9eC0LvFGNMERdgBue591xwLxYXFbtsRwXVM,287
60
- fmtr.tools-1.0.53.dist-info/LICENSE,sha256=FW9aa6vVN5IjRQWLT43hs4_koYSmpcbIovlKeAJ0_cI,10757
61
- fmtr.tools-1.0.53.dist-info/METADATA,sha256=31l50dJyQyQLlfFOaPoM_EmW0EVq_XBt7tUbQVYwyQU,13978
62
- fmtr.tools-1.0.53.dist-info/WHEEL,sha256=oiQVh_5PnQM0E3gPdiz09WCNmwiHDMaGer_elqB3coM,92
63
- fmtr.tools-1.0.53.dist-info/entry_points.txt,sha256=Zmeyls-zo5S99SlKUmsy9ULUNmk-4B9WQCEjuPIH0Yw,142
64
- fmtr.tools-1.0.53.dist-info/top_level.txt,sha256=t5341a8ii3n4RFizwTeXGmcq_pf4GqL1h9ylE5LIWRk,12
65
- fmtr.tools-1.0.53.dist-info/RECORD,,
60
+ fmtr_tools-1.0.55.dist-info/licenses/LICENSE,sha256=FW9aa6vVN5IjRQWLT43hs4_koYSmpcbIovlKeAJ0_cI,10757
61
+ fmtr_tools-1.0.55.dist-info/METADATA,sha256=7JEET3FilYkEqJsZePMIDXim5sbdAzwrfsyHzC3aVpw,14065
62
+ fmtr_tools-1.0.55.dist-info/WHEEL,sha256=GHB6lJx2juba1wDgXDNlMTyM13ckjBMKf-OnwgKOCtA,91
63
+ fmtr_tools-1.0.55.dist-info/entry_points.txt,sha256=Zmeyls-zo5S99SlKUmsy9ULUNmk-4B9WQCEjuPIH0Yw,142
64
+ fmtr_tools-1.0.55.dist-info/top_level.txt,sha256=t5341a8ii3n4RFizwTeXGmcq_pf4GqL1h9ylE5LIWRk,12
65
+ fmtr_tools-1.0.55.dist-info/RECORD,,
@@ -1,5 +1,5 @@
1
1
  Wheel-Version: 1.0
2
- Generator: bdist_wheel (0.42.0)
2
+ Generator: setuptools (80.3.0)
3
3
  Root-Is-Purelib: true
4
4
  Tag: py3-none-any
5
5