fmtr.tools 1.1.25__tar.gz → 1.1.26__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.
- {fmtr_tools-1.1.25 → fmtr_tools-1.1.26}/PKG-INFO +43 -43
- {fmtr_tools-1.1.25 → fmtr_tools-1.1.26}/fmtr/tools/__init__.py +6 -0
- fmtr_tools-1.1.26/fmtr/tools/http_tools.py +26 -0
- {fmtr_tools-1.1.25 → fmtr_tools-1.1.26}/fmtr/tools/pattern_tools.py +7 -72
- fmtr_tools-1.1.26/fmtr/tools/version +1 -0
- {fmtr_tools-1.1.25 → fmtr_tools-1.1.26}/fmtr.tools.egg-info/PKG-INFO +43 -43
- {fmtr_tools-1.1.25 → fmtr_tools-1.1.26}/fmtr.tools.egg-info/SOURCES.txt +1 -0
- fmtr_tools-1.1.25/fmtr/tools/version +0 -1
- {fmtr_tools-1.1.25 → fmtr_tools-1.1.26}/LICENSE +0 -0
- {fmtr_tools-1.1.25 → fmtr_tools-1.1.26}/README.md +0 -0
- {fmtr_tools-1.1.25 → fmtr_tools-1.1.26}/fmtr/tools/ai_tools/__init__.py +0 -0
- {fmtr_tools-1.1.25 → fmtr_tools-1.1.26}/fmtr/tools/ai_tools/agentic_tools.py +0 -0
- {fmtr_tools-1.1.25 → fmtr_tools-1.1.26}/fmtr/tools/ai_tools/inference_tools.py +0 -0
- {fmtr_tools-1.1.25 → fmtr_tools-1.1.26}/fmtr/tools/api_tools.py +0 -0
- {fmtr_tools-1.1.25 → fmtr_tools-1.1.26}/fmtr/tools/async_tools.py +0 -0
- {fmtr_tools-1.1.25 → fmtr_tools-1.1.26}/fmtr/tools/augmentation_tools.py +0 -0
- {fmtr_tools-1.1.25 → fmtr_tools-1.1.26}/fmtr/tools/caching_tools.py +0 -0
- {fmtr_tools-1.1.25 → fmtr_tools-1.1.26}/fmtr/tools/console_script_tools.py +0 -0
- {fmtr_tools-1.1.25 → fmtr_tools-1.1.26}/fmtr/tools/constants.py +0 -0
- {fmtr_tools-1.1.25 → fmtr_tools-1.1.26}/fmtr/tools/data_modelling_tools.py +0 -0
- {fmtr_tools-1.1.25 → fmtr_tools-1.1.26}/fmtr/tools/dataclass_tools.py +0 -0
- {fmtr_tools-1.1.25 → fmtr_tools-1.1.26}/fmtr/tools/datatype_tools.py +0 -0
- {fmtr_tools-1.1.25 → fmtr_tools-1.1.26}/fmtr/tools/debugging_tools.py +0 -0
- {fmtr_tools-1.1.25 → fmtr_tools-1.1.26}/fmtr/tools/dns_tools.py +0 -0
- {fmtr_tools-1.1.25 → fmtr_tools-1.1.26}/fmtr/tools/docker_tools.py +0 -0
- {fmtr_tools-1.1.25 → fmtr_tools-1.1.26}/fmtr/tools/environment_tools.py +0 -0
- {fmtr_tools-1.1.25 → fmtr_tools-1.1.26}/fmtr/tools/function_tools.py +0 -0
- {fmtr_tools-1.1.25 → fmtr_tools-1.1.26}/fmtr/tools/google_api_tools.py +0 -0
- {fmtr_tools-1.1.25 → fmtr_tools-1.1.26}/fmtr/tools/hash_tools.py +0 -0
- {fmtr_tools-1.1.25 → fmtr_tools-1.1.26}/fmtr/tools/hfh_tools.py +0 -0
- {fmtr_tools-1.1.25 → fmtr_tools-1.1.26}/fmtr/tools/html_tools.py +0 -0
- {fmtr_tools-1.1.25 → fmtr_tools-1.1.26}/fmtr/tools/import_tools.py +0 -0
- {fmtr_tools-1.1.25 → fmtr_tools-1.1.26}/fmtr/tools/inspection_tools.py +0 -0
- {fmtr_tools-1.1.25 → fmtr_tools-1.1.26}/fmtr/tools/interface_tools.py +0 -0
- {fmtr_tools-1.1.25 → fmtr_tools-1.1.26}/fmtr/tools/iterator_tools.py +0 -0
- {fmtr_tools-1.1.25 → fmtr_tools-1.1.26}/fmtr/tools/json_fix_tools.py +0 -0
- {fmtr_tools-1.1.25 → fmtr_tools-1.1.26}/fmtr/tools/json_tools.py +0 -0
- {fmtr_tools-1.1.25 → fmtr_tools-1.1.26}/fmtr/tools/logging_tools.py +0 -0
- {fmtr_tools-1.1.25 → fmtr_tools-1.1.26}/fmtr/tools/merging_tools.py +0 -0
- {fmtr_tools-1.1.25 → fmtr_tools-1.1.26}/fmtr/tools/metric_tools.py +0 -0
- {fmtr_tools-1.1.25 → fmtr_tools-1.1.26}/fmtr/tools/name_tools.py +0 -0
- {fmtr_tools-1.1.25 → fmtr_tools-1.1.26}/fmtr/tools/netrc_tools.py +0 -0
- {fmtr_tools-1.1.25 → fmtr_tools-1.1.26}/fmtr/tools/openai_tools.py +0 -0
- {fmtr_tools-1.1.25 → fmtr_tools-1.1.26}/fmtr/tools/packaging_tools.py +0 -0
- {fmtr_tools-1.1.25 → fmtr_tools-1.1.26}/fmtr/tools/parallel_tools.py +0 -0
- {fmtr_tools-1.1.25 → fmtr_tools-1.1.26}/fmtr/tools/path_tools/__init__.py +0 -0
- {fmtr_tools-1.1.25 → fmtr_tools-1.1.26}/fmtr/tools/path_tools/app_path_tools.py +0 -0
- {fmtr_tools-1.1.25 → fmtr_tools-1.1.26}/fmtr/tools/path_tools/path_tools.py +0 -0
- {fmtr_tools-1.1.25 → fmtr_tools-1.1.26}/fmtr/tools/path_tools/type_path_tools.py +0 -0
- {fmtr_tools-1.1.25 → fmtr_tools-1.1.26}/fmtr/tools/pdf_tools.py +0 -0
- {fmtr_tools-1.1.25 → fmtr_tools-1.1.26}/fmtr/tools/platform_tools.py +0 -0
- {fmtr_tools-1.1.25 → fmtr_tools-1.1.26}/fmtr/tools/process_tools.py +0 -0
- {fmtr_tools-1.1.25 → fmtr_tools-1.1.26}/fmtr/tools/profiling_tools.py +0 -0
- {fmtr_tools-1.1.25 → fmtr_tools-1.1.26}/fmtr/tools/random_tools.py +0 -0
- {fmtr_tools-1.1.25 → fmtr_tools-1.1.26}/fmtr/tools/semantic_tools.py +0 -0
- {fmtr_tools-1.1.25 → fmtr_tools-1.1.26}/fmtr/tools/settings_tools.py +0 -0
- {fmtr_tools-1.1.25 → fmtr_tools-1.1.26}/fmtr/tools/setup_tools/__init__.py +0 -0
- {fmtr_tools-1.1.25 → fmtr_tools-1.1.26}/fmtr/tools/setup_tools/setup_tools.py +0 -0
- {fmtr_tools-1.1.25 → fmtr_tools-1.1.26}/fmtr/tools/spaces_tools.py +0 -0
- {fmtr_tools-1.1.25 → fmtr_tools-1.1.26}/fmtr/tools/string_tools.py +0 -0
- {fmtr_tools-1.1.25 → fmtr_tools-1.1.26}/fmtr/tools/tabular_tools.py +0 -0
- {fmtr_tools-1.1.25 → fmtr_tools-1.1.26}/fmtr/tools/tests/__init__.py +0 -0
- {fmtr_tools-1.1.25 → fmtr_tools-1.1.26}/fmtr/tools/tests/conftest.py +0 -0
- {fmtr_tools-1.1.25 → fmtr_tools-1.1.26}/fmtr/tools/tests/helpers.py +0 -0
- {fmtr_tools-1.1.25 → fmtr_tools-1.1.26}/fmtr/tools/tests/test_datatype.py +0 -0
- {fmtr_tools-1.1.25 → fmtr_tools-1.1.26}/fmtr/tools/tests/test_environment.py +0 -0
- {fmtr_tools-1.1.25 → fmtr_tools-1.1.26}/fmtr/tools/tests/test_json.py +0 -0
- {fmtr_tools-1.1.25 → fmtr_tools-1.1.26}/fmtr/tools/tests/test_path.py +0 -0
- {fmtr_tools-1.1.25 → fmtr_tools-1.1.26}/fmtr/tools/tests/test_yaml.py +0 -0
- {fmtr_tools-1.1.25 → fmtr_tools-1.1.26}/fmtr/tools/tokenization_tools.py +0 -0
- {fmtr_tools-1.1.25 → fmtr_tools-1.1.26}/fmtr/tools/tools.py +0 -0
- {fmtr_tools-1.1.25 → fmtr_tools-1.1.26}/fmtr/tools/unicode_tools.py +0 -0
- {fmtr_tools-1.1.25 → fmtr_tools-1.1.26}/fmtr/tools/version_tools.py +0 -0
- {fmtr_tools-1.1.25 → fmtr_tools-1.1.26}/fmtr/tools/yaml_tools.py +0 -0
- {fmtr_tools-1.1.25 → fmtr_tools-1.1.26}/fmtr.tools.egg-info/dependency_links.txt +0 -0
- {fmtr_tools-1.1.25 → fmtr_tools-1.1.26}/fmtr.tools.egg-info/entry_points.txt +0 -0
- {fmtr_tools-1.1.25 → fmtr_tools-1.1.26}/fmtr.tools.egg-info/requires.txt +42 -42
- {fmtr_tools-1.1.25 → fmtr_tools-1.1.26}/fmtr.tools.egg-info/top_level.txt +0 -0
- {fmtr_tools-1.1.25 → fmtr_tools-1.1.26}/setup.cfg +0 -0
- {fmtr_tools-1.1.25 → fmtr_tools-1.1.26}/setup.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: fmtr.tools
|
|
3
|
-
Version: 1.1.
|
|
3
|
+
Version: 1.1.26
|
|
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,60 +9,60 @@ 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: google-auth; extra == "test"
|
|
13
|
-
Requires-Dist: pandas; extra == "test"
|
|
14
|
-
Requires-Dist: sre_yield; extra == "test"
|
|
15
|
-
Requires-Dist: semver; extra == "test"
|
|
16
|
-
Requires-Dist: dask[bag]; extra == "test"
|
|
17
12
|
Requires-Dist: torchaudio; extra == "test"
|
|
13
|
+
Requires-Dist: semver; extra == "test"
|
|
14
|
+
Requires-Dist: docker; extra == "test"
|
|
15
|
+
Requires-Dist: logfire; extra == "test"
|
|
18
16
|
Requires-Dist: ollama; extra == "test"
|
|
19
|
-
Requires-Dist:
|
|
20
|
-
Requires-Dist:
|
|
21
|
-
Requires-Dist:
|
|
22
|
-
Requires-Dist: html2text; extra == "test"
|
|
17
|
+
Requires-Dist: openpyxl; extra == "test"
|
|
18
|
+
Requires-Dist: flet[all]; extra == "test"
|
|
19
|
+
Requires-Dist: diskcache; extra == "test"
|
|
23
20
|
Requires-Dist: pymupdf; extra == "test"
|
|
24
|
-
Requires-Dist:
|
|
25
|
-
Requires-Dist:
|
|
26
|
-
Requires-Dist:
|
|
27
|
-
Requires-Dist:
|
|
28
|
-
Requires-Dist:
|
|
29
|
-
Requires-Dist:
|
|
30
|
-
Requires-Dist: bokeh; extra == "test"
|
|
31
|
-
Requires-Dist: tokenizers; extra == "test"
|
|
32
|
-
Requires-Dist: httpx_retries; extra == "test"
|
|
21
|
+
Requires-Dist: pydevd-pycharm; extra == "test"
|
|
22
|
+
Requires-Dist: filetype; extra == "test"
|
|
23
|
+
Requires-Dist: sentence_transformers; extra == "test"
|
|
24
|
+
Requires-Dist: peft; extra == "test"
|
|
25
|
+
Requires-Dist: flet-video; extra == "test"
|
|
26
|
+
Requires-Dist: appdirs; extra == "test"
|
|
33
27
|
Requires-Dist: huggingface_hub; extra == "test"
|
|
34
|
-
Requires-Dist: pydantic-settings; extra == "test"
|
|
35
|
-
Requires-Dist: google-auth-oauthlib; extra == "test"
|
|
36
|
-
Requires-Dist: google-api-python-client; extra == "test"
|
|
37
|
-
Requires-Dist: pydantic; extra == "test"
|
|
38
|
-
Requires-Dist: tabulate; extra == "test"
|
|
39
|
-
Requires-Dist: distributed; extra == "test"
|
|
40
|
-
Requires-Dist: logfire; extra == "test"
|
|
41
28
|
Requires-Dist: flet-webview; extra == "test"
|
|
42
|
-
Requires-Dist:
|
|
29
|
+
Requires-Dist: httpx; extra == "test"
|
|
43
30
|
Requires-Dist: deepmerge; extra == "test"
|
|
44
|
-
Requires-Dist: pyyaml; extra == "test"
|
|
45
|
-
Requires-Dist: contexttimer; extra == "test"
|
|
46
31
|
Requires-Dist: pytest-cov; extra == "test"
|
|
47
|
-
Requires-Dist: filetype; extra == "test"
|
|
48
|
-
Requires-Dist: setuptools; extra == "test"
|
|
49
|
-
Requires-Dist: flet[all]; extra == "test"
|
|
50
|
-
Requires-Dist: diskcache; extra == "test"
|
|
51
|
-
Requires-Dist: openpyxl; extra == "test"
|
|
52
32
|
Requires-Dist: dnspython[doh]; extra == "test"
|
|
33
|
+
Requires-Dist: regex; extra == "test"
|
|
53
34
|
Requires-Dist: openai; extra == "test"
|
|
54
|
-
Requires-Dist:
|
|
55
|
-
Requires-Dist: httpx; extra == "test"
|
|
35
|
+
Requires-Dist: html2text; extra == "test"
|
|
56
36
|
Requires-Dist: yamlscript; extra == "test"
|
|
57
|
-
Requires-Dist:
|
|
58
|
-
Requires-Dist:
|
|
59
|
-
Requires-Dist:
|
|
37
|
+
Requires-Dist: pydantic-settings; extra == "test"
|
|
38
|
+
Requires-Dist: dask[bag]; extra == "test"
|
|
39
|
+
Requires-Dist: tinynetrc; extra == "test"
|
|
40
|
+
Requires-Dist: pandas; extra == "test"
|
|
41
|
+
Requires-Dist: bokeh; extra == "test"
|
|
42
|
+
Requires-Dist: uvicorn[standard]; extra == "test"
|
|
43
|
+
Requires-Dist: torchvision; extra == "test"
|
|
44
|
+
Requires-Dist: logfire[fastapi]; extra == "test"
|
|
60
45
|
Requires-Dist: Unidecode; extra == "test"
|
|
61
|
-
Requires-Dist:
|
|
62
|
-
Requires-Dist:
|
|
46
|
+
Requires-Dist: tabulate; extra == "test"
|
|
47
|
+
Requires-Dist: distributed; extra == "test"
|
|
48
|
+
Requires-Dist: tokenizers; extra == "test"
|
|
49
|
+
Requires-Dist: faker; extra == "test"
|
|
50
|
+
Requires-Dist: contexttimer; extra == "test"
|
|
51
|
+
Requires-Dist: google-auth-oauthlib; extra == "test"
|
|
52
|
+
Requires-Dist: fastapi; extra == "test"
|
|
53
|
+
Requires-Dist: google-api-python-client; extra == "test"
|
|
54
|
+
Requires-Dist: logfire[httpx]; extra == "test"
|
|
63
55
|
Requires-Dist: json_repair; extra == "test"
|
|
64
|
-
Requires-Dist:
|
|
65
|
-
Requires-Dist:
|
|
56
|
+
Requires-Dist: pymupdf4llm; extra == "test"
|
|
57
|
+
Requires-Dist: sre_yield; extra == "test"
|
|
58
|
+
Requires-Dist: setuptools; extra == "test"
|
|
59
|
+
Requires-Dist: transformers[sentencepiece]; extra == "test"
|
|
60
|
+
Requires-Dist: pydantic-ai[logfire,openai]; extra == "test"
|
|
61
|
+
Requires-Dist: pydantic; extra == "test"
|
|
62
|
+
Requires-Dist: google-auth; extra == "test"
|
|
63
|
+
Requires-Dist: pyyaml; extra == "test"
|
|
64
|
+
Requires-Dist: google-auth-httplib2; extra == "test"
|
|
65
|
+
Requires-Dist: httpx_retries; extra == "test"
|
|
66
66
|
Provides-Extra: yaml
|
|
67
67
|
Requires-Dist: yamlscript; extra == "yaml"
|
|
68
68
|
Requires-Dist: pyyaml; extra == "yaml"
|
|
@@ -176,3 +176,9 @@ try:
|
|
|
176
176
|
from fmtr.tools import dns_tools as dns
|
|
177
177
|
except ImportError as exception:
|
|
178
178
|
dns = MissingExtraMockModule('dns', exception)
|
|
179
|
+
|
|
180
|
+
try:
|
|
181
|
+
from fmtr.tools import http_tools as http
|
|
182
|
+
from fmtr.tools.http_tools import Client
|
|
183
|
+
except ImportError as exception:
|
|
184
|
+
http = Client = MissingExtraMockModule('http', exception)
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import httpx
|
|
2
|
+
from httpx_retries import RetryTransport
|
|
3
|
+
|
|
4
|
+
from fmtr.tools import logging_tools
|
|
5
|
+
|
|
6
|
+
logging_tools.logger.instrument_httpx()
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
class Client(httpx.Client):
|
|
10
|
+
"""
|
|
11
|
+
|
|
12
|
+
Instrumented client base
|
|
13
|
+
|
|
14
|
+
"""
|
|
15
|
+
|
|
16
|
+
TRANSPORT = RetryTransport()
|
|
17
|
+
|
|
18
|
+
def __init__(self, *args, **kwargs):
|
|
19
|
+
super().__init__(*args, transport=self.TRANSPORT, **kwargs)
|
|
20
|
+
|
|
21
|
+
|
|
22
|
+
client = Client()
|
|
23
|
+
|
|
24
|
+
if __name__ == '__main__':
|
|
25
|
+
resp = client.get('http://httpbin.org/delay/10')
|
|
26
|
+
resp
|
|
@@ -1,8 +1,9 @@
|
|
|
1
|
-
import regex as re
|
|
2
1
|
from dataclasses import dataclass
|
|
3
2
|
from functools import cached_property
|
|
4
3
|
from typing import List
|
|
5
4
|
|
|
5
|
+
import regex as re
|
|
6
|
+
|
|
6
7
|
from fmtr.tools.logging_tools import logger
|
|
7
8
|
|
|
8
9
|
|
|
@@ -15,7 +16,7 @@ class RewriteCircularLoopError(Exception):
|
|
|
15
16
|
|
|
16
17
|
|
|
17
18
|
@dataclass
|
|
18
|
-
class
|
|
19
|
+
class Rewrite:
|
|
19
20
|
"""
|
|
20
21
|
Represents a single rule for pattern matching and target string replacement.
|
|
21
22
|
|
|
@@ -66,7 +67,7 @@ class Rewriter:
|
|
|
66
67
|
recursive rewriting until a stable state is reached.
|
|
67
68
|
|
|
68
69
|
"""
|
|
69
|
-
rules: List[
|
|
70
|
+
rules: List[Rewrite]
|
|
70
71
|
|
|
71
72
|
@cached_property
|
|
72
73
|
def pattern(self):
|
|
@@ -106,7 +107,7 @@ class Rewriter:
|
|
|
106
107
|
|
|
107
108
|
"""
|
|
108
109
|
|
|
109
|
-
match = self.rx.
|
|
110
|
+
match = self.rx.fullmatch(source)
|
|
110
111
|
|
|
111
112
|
if not match:
|
|
112
113
|
return source
|
|
@@ -163,75 +164,9 @@ class Rewriter:
|
|
|
163
164
|
|
|
164
165
|
@classmethod
|
|
165
166
|
def from_data(cls, data):
|
|
166
|
-
rules = [
|
|
167
|
+
rules = [Rewrite(*pair) for pair in data.items()]
|
|
167
168
|
self = cls(rules=rules)
|
|
168
169
|
return self
|
|
169
170
|
|
|
170
171
|
|
|
171
|
-
|
|
172
|
-
data = {
|
|
173
|
-
|
|
174
|
-
r'(?P<name>[a-z]+)\.dev\.example\.com': '{name}.test.example.com',
|
|
175
|
-
r'img\d+\.static\.cdn\.example\.com': 'images.cdn.example.com',
|
|
176
|
-
r'service\.(?P<env>dev|staging|prod)\.example\.org': '{env}-service.example.org',
|
|
177
|
-
r'legacy\.(?P<region>[a-z]+)\.oldsite\.com': '{region}.newsitenow.com',
|
|
178
|
-
r'shop\.(?P<country_code>[a-z]{2})\.example\.net': 'store.{country_code}.example.net',
|
|
179
|
-
r'(?P<user>[a-z]+)\.mail\.example\.com': '{user}.email.example.com',
|
|
180
|
-
r'app1\.cluster(?P<num>[0-9]+)\.example\.cloud': 'service{num}.example.cloud',
|
|
181
|
-
r'(?P<project>[a-z]+)\.research\.corp\.com': '{project}.lab.corp.com',
|
|
182
|
-
r'cdn\.(?P<version>v[0-9]+)\.content\.net': 'static.{version}.content.net',
|
|
183
|
-
# Literal rule without named group
|
|
184
|
-
r'corp\.secureaccess\.com': 'access.corp.com',
|
|
185
|
-
# Literal rule without named group
|
|
186
|
-
r'redirect\.oldsite\.org': 'homepage.newsite.org',
|
|
187
|
-
# # Recursive rules
|
|
188
|
-
|
|
189
|
-
r'archive\.(?P<year>\d{4})\.oldsite\.net': 'legacy.{year}.oldsite.net', # Recursive matching
|
|
190
|
-
r'legacy\.(?P<year>\d{4})\.oldsite\.net': 'archive-backup.{year}.net', # Continuation
|
|
191
|
-
|
|
192
|
-
# r'(?P<subd>[a-zA-Z]+)\.vpn': '{subd}.loop.ts.net',
|
|
193
|
-
# r'(?P<subd>[a-zA-Z]+)\.loop\.ts\.net': '{subd}.vpn', # Recursive loop back to .vpn
|
|
194
|
-
}
|
|
195
|
-
|
|
196
|
-
rewriter = Rewriter.from_data(data)
|
|
197
|
-
|
|
198
|
-
tests = [
|
|
199
|
-
"sales.vpn",
|
|
200
|
-
"marketing.dev.example.com",
|
|
201
|
-
"img01.static.cdn.example.com",
|
|
202
|
-
"service.dev.example.org",
|
|
203
|
-
"legacy.eu.oldsite.com",
|
|
204
|
-
"shop.us.example.net",
|
|
205
|
-
"alice.mail.example.com",
|
|
206
|
-
"app1.cluster1.example.cloud",
|
|
207
|
-
"genetics.research.corp.com",
|
|
208
|
-
"cdn.v2.content.net",
|
|
209
|
-
"corp.secureaccess.com",
|
|
210
|
-
"redirect.oldsite.org",
|
|
211
|
-
"support.bbb.ts.net",
|
|
212
|
-
"support.ccc.ts.net",
|
|
213
|
-
"archive.2022.oldsite.net",
|
|
214
|
-
"legacy.2022.oldsite.net",
|
|
215
|
-
"finance.vpn",
|
|
216
|
-
"engineering.dev.example.com",
|
|
217
|
-
"img02.static.cdn.example.com",
|
|
218
|
-
"service.staging.example.org",
|
|
219
|
-
"legacy.apac.oldsite.com",
|
|
220
|
-
"shop.uk.example.net",
|
|
221
|
-
"bob.mail.example.com",
|
|
222
|
-
"app1.cluster2.example.cloud",
|
|
223
|
-
"astrophysics.research.corp.com",
|
|
224
|
-
"cdn.v3.content.net",
|
|
225
|
-
"archive.2021.oldsite.net",
|
|
226
|
-
"legacy.2021.oldsite.net",
|
|
227
|
-
"quality.bbb.ts.net",
|
|
228
|
-
"quality.ccc.ts.net"
|
|
229
|
-
]
|
|
230
|
-
|
|
231
|
-
logger.warning('hello?')
|
|
232
|
-
for test in tests:
|
|
233
|
-
print(test)
|
|
234
|
-
text = rewriter.rewrite(test)
|
|
235
|
-
text
|
|
236
|
-
|
|
237
|
-
tests
|
|
172
|
+
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
1.1.26
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: fmtr.tools
|
|
3
|
-
Version: 1.1.
|
|
3
|
+
Version: 1.1.26
|
|
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,60 +9,60 @@ 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: google-auth; extra == "test"
|
|
13
|
-
Requires-Dist: pandas; extra == "test"
|
|
14
|
-
Requires-Dist: sre_yield; extra == "test"
|
|
15
|
-
Requires-Dist: semver; extra == "test"
|
|
16
|
-
Requires-Dist: dask[bag]; extra == "test"
|
|
17
12
|
Requires-Dist: torchaudio; extra == "test"
|
|
13
|
+
Requires-Dist: semver; extra == "test"
|
|
14
|
+
Requires-Dist: docker; extra == "test"
|
|
15
|
+
Requires-Dist: logfire; extra == "test"
|
|
18
16
|
Requires-Dist: ollama; extra == "test"
|
|
19
|
-
Requires-Dist:
|
|
20
|
-
Requires-Dist:
|
|
21
|
-
Requires-Dist:
|
|
22
|
-
Requires-Dist: html2text; extra == "test"
|
|
17
|
+
Requires-Dist: openpyxl; extra == "test"
|
|
18
|
+
Requires-Dist: flet[all]; extra == "test"
|
|
19
|
+
Requires-Dist: diskcache; extra == "test"
|
|
23
20
|
Requires-Dist: pymupdf; extra == "test"
|
|
24
|
-
Requires-Dist:
|
|
25
|
-
Requires-Dist:
|
|
26
|
-
Requires-Dist:
|
|
27
|
-
Requires-Dist:
|
|
28
|
-
Requires-Dist:
|
|
29
|
-
Requires-Dist:
|
|
30
|
-
Requires-Dist: bokeh; extra == "test"
|
|
31
|
-
Requires-Dist: tokenizers; extra == "test"
|
|
32
|
-
Requires-Dist: httpx_retries; extra == "test"
|
|
21
|
+
Requires-Dist: pydevd-pycharm; extra == "test"
|
|
22
|
+
Requires-Dist: filetype; extra == "test"
|
|
23
|
+
Requires-Dist: sentence_transformers; extra == "test"
|
|
24
|
+
Requires-Dist: peft; extra == "test"
|
|
25
|
+
Requires-Dist: flet-video; extra == "test"
|
|
26
|
+
Requires-Dist: appdirs; extra == "test"
|
|
33
27
|
Requires-Dist: huggingface_hub; extra == "test"
|
|
34
|
-
Requires-Dist: pydantic-settings; extra == "test"
|
|
35
|
-
Requires-Dist: google-auth-oauthlib; extra == "test"
|
|
36
|
-
Requires-Dist: google-api-python-client; extra == "test"
|
|
37
|
-
Requires-Dist: pydantic; extra == "test"
|
|
38
|
-
Requires-Dist: tabulate; extra == "test"
|
|
39
|
-
Requires-Dist: distributed; extra == "test"
|
|
40
|
-
Requires-Dist: logfire; extra == "test"
|
|
41
28
|
Requires-Dist: flet-webview; extra == "test"
|
|
42
|
-
Requires-Dist:
|
|
29
|
+
Requires-Dist: httpx; extra == "test"
|
|
43
30
|
Requires-Dist: deepmerge; extra == "test"
|
|
44
|
-
Requires-Dist: pyyaml; extra == "test"
|
|
45
|
-
Requires-Dist: contexttimer; extra == "test"
|
|
46
31
|
Requires-Dist: pytest-cov; extra == "test"
|
|
47
|
-
Requires-Dist: filetype; extra == "test"
|
|
48
|
-
Requires-Dist: setuptools; extra == "test"
|
|
49
|
-
Requires-Dist: flet[all]; extra == "test"
|
|
50
|
-
Requires-Dist: diskcache; extra == "test"
|
|
51
|
-
Requires-Dist: openpyxl; extra == "test"
|
|
52
32
|
Requires-Dist: dnspython[doh]; extra == "test"
|
|
33
|
+
Requires-Dist: regex; extra == "test"
|
|
53
34
|
Requires-Dist: openai; extra == "test"
|
|
54
|
-
Requires-Dist:
|
|
55
|
-
Requires-Dist: httpx; extra == "test"
|
|
35
|
+
Requires-Dist: html2text; extra == "test"
|
|
56
36
|
Requires-Dist: yamlscript; extra == "test"
|
|
57
|
-
Requires-Dist:
|
|
58
|
-
Requires-Dist:
|
|
59
|
-
Requires-Dist:
|
|
37
|
+
Requires-Dist: pydantic-settings; extra == "test"
|
|
38
|
+
Requires-Dist: dask[bag]; extra == "test"
|
|
39
|
+
Requires-Dist: tinynetrc; extra == "test"
|
|
40
|
+
Requires-Dist: pandas; extra == "test"
|
|
41
|
+
Requires-Dist: bokeh; extra == "test"
|
|
42
|
+
Requires-Dist: uvicorn[standard]; extra == "test"
|
|
43
|
+
Requires-Dist: torchvision; extra == "test"
|
|
44
|
+
Requires-Dist: logfire[fastapi]; extra == "test"
|
|
60
45
|
Requires-Dist: Unidecode; extra == "test"
|
|
61
|
-
Requires-Dist:
|
|
62
|
-
Requires-Dist:
|
|
46
|
+
Requires-Dist: tabulate; extra == "test"
|
|
47
|
+
Requires-Dist: distributed; extra == "test"
|
|
48
|
+
Requires-Dist: tokenizers; extra == "test"
|
|
49
|
+
Requires-Dist: faker; extra == "test"
|
|
50
|
+
Requires-Dist: contexttimer; extra == "test"
|
|
51
|
+
Requires-Dist: google-auth-oauthlib; extra == "test"
|
|
52
|
+
Requires-Dist: fastapi; extra == "test"
|
|
53
|
+
Requires-Dist: google-api-python-client; extra == "test"
|
|
54
|
+
Requires-Dist: logfire[httpx]; extra == "test"
|
|
63
55
|
Requires-Dist: json_repair; extra == "test"
|
|
64
|
-
Requires-Dist:
|
|
65
|
-
Requires-Dist:
|
|
56
|
+
Requires-Dist: pymupdf4llm; extra == "test"
|
|
57
|
+
Requires-Dist: sre_yield; extra == "test"
|
|
58
|
+
Requires-Dist: setuptools; extra == "test"
|
|
59
|
+
Requires-Dist: transformers[sentencepiece]; extra == "test"
|
|
60
|
+
Requires-Dist: pydantic-ai[logfire,openai]; extra == "test"
|
|
61
|
+
Requires-Dist: pydantic; extra == "test"
|
|
62
|
+
Requires-Dist: google-auth; extra == "test"
|
|
63
|
+
Requires-Dist: pyyaml; extra == "test"
|
|
64
|
+
Requires-Dist: google-auth-httplib2; extra == "test"
|
|
65
|
+
Requires-Dist: httpx_retries; extra == "test"
|
|
66
66
|
Provides-Extra: yaml
|
|
67
67
|
Requires-Dist: yamlscript; extra == "yaml"
|
|
68
68
|
Requires-Dist: pyyaml; extra == "yaml"
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
1.1.25
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
@@ -135,60 +135,60 @@ tabulate
|
|
|
135
135
|
openpyxl
|
|
136
136
|
|
|
137
137
|
[test]
|
|
138
|
-
google-auth
|
|
139
|
-
pandas
|
|
140
|
-
sre_yield
|
|
141
|
-
semver
|
|
142
|
-
dask[bag]
|
|
143
138
|
torchaudio
|
|
139
|
+
semver
|
|
140
|
+
docker
|
|
141
|
+
logfire
|
|
144
142
|
ollama
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
html2text
|
|
143
|
+
openpyxl
|
|
144
|
+
flet[all]
|
|
145
|
+
diskcache
|
|
149
146
|
pymupdf
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
bokeh
|
|
157
|
-
tokenizers
|
|
158
|
-
httpx_retries
|
|
147
|
+
pydevd-pycharm
|
|
148
|
+
filetype
|
|
149
|
+
sentence_transformers
|
|
150
|
+
peft
|
|
151
|
+
flet-video
|
|
152
|
+
appdirs
|
|
159
153
|
huggingface_hub
|
|
160
|
-
pydantic-settings
|
|
161
|
-
google-auth-oauthlib
|
|
162
|
-
google-api-python-client
|
|
163
|
-
pydantic
|
|
164
|
-
tabulate
|
|
165
|
-
distributed
|
|
166
|
-
logfire
|
|
167
154
|
flet-webview
|
|
168
|
-
|
|
155
|
+
httpx
|
|
169
156
|
deepmerge
|
|
170
|
-
pyyaml
|
|
171
|
-
contexttimer
|
|
172
157
|
pytest-cov
|
|
173
|
-
filetype
|
|
174
|
-
setuptools
|
|
175
|
-
flet[all]
|
|
176
|
-
diskcache
|
|
177
|
-
openpyxl
|
|
178
158
|
dnspython[doh]
|
|
159
|
+
regex
|
|
179
160
|
openai
|
|
180
|
-
|
|
181
|
-
httpx
|
|
161
|
+
html2text
|
|
182
162
|
yamlscript
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
163
|
+
pydantic-settings
|
|
164
|
+
dask[bag]
|
|
165
|
+
tinynetrc
|
|
166
|
+
pandas
|
|
167
|
+
bokeh
|
|
168
|
+
uvicorn[standard]
|
|
169
|
+
torchvision
|
|
170
|
+
logfire[fastapi]
|
|
186
171
|
Unidecode
|
|
187
|
-
|
|
188
|
-
|
|
172
|
+
tabulate
|
|
173
|
+
distributed
|
|
174
|
+
tokenizers
|
|
175
|
+
faker
|
|
176
|
+
contexttimer
|
|
177
|
+
google-auth-oauthlib
|
|
178
|
+
fastapi
|
|
179
|
+
google-api-python-client
|
|
180
|
+
logfire[httpx]
|
|
189
181
|
json_repair
|
|
190
|
-
|
|
191
|
-
|
|
182
|
+
pymupdf4llm
|
|
183
|
+
sre_yield
|
|
184
|
+
setuptools
|
|
185
|
+
transformers[sentencepiece]
|
|
186
|
+
pydantic-ai[logfire,openai]
|
|
187
|
+
pydantic
|
|
188
|
+
google-auth
|
|
189
|
+
pyyaml
|
|
190
|
+
google-auth-httplib2
|
|
191
|
+
httpx_retries
|
|
192
192
|
|
|
193
193
|
[tokenization]
|
|
194
194
|
tokenizers
|
|
File without changes
|
|
File without changes
|
|
File without changes
|