fmtr.tools 1.3.47__py3-none-any.whl → 1.3.49__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.
- fmtr/tools/iterator_tools.py +9 -0
- fmtr/tools/path_tools/path_tools.py +26 -0
- fmtr/tools/pdf_tools.py +14 -0
- fmtr/tools/tabular_tools.py +61 -0
- fmtr/tools/version +1 -1
- {fmtr_tools-1.3.47.dist-info → fmtr_tools-1.3.49.dist-info}/METADATA +55 -47
- {fmtr_tools-1.3.47.dist-info → fmtr_tools-1.3.49.dist-info}/RECORD +11 -11
- {fmtr_tools-1.3.47.dist-info → fmtr_tools-1.3.49.dist-info}/WHEEL +0 -0
- {fmtr_tools-1.3.47.dist-info → fmtr_tools-1.3.49.dist-info}/entry_points.txt +0 -0
- {fmtr_tools-1.3.47.dist-info → fmtr_tools-1.3.49.dist-info}/licenses/LICENSE +0 -0
- {fmtr_tools-1.3.47.dist-info → fmtr_tools-1.3.49.dist-info}/top_level.txt +0 -0
fmtr/tools/iterator_tools.py
CHANGED
|
@@ -145,6 +145,32 @@ class Path(type(Path())):
|
|
|
145
145
|
"""
|
|
146
146
|
return self.mkdir(parents=True, exist_ok=True)
|
|
147
147
|
|
|
148
|
+
def with_suffix(self, suffix: str) -> 'Path':
|
|
149
|
+
"""
|
|
150
|
+
|
|
151
|
+
Pathlib doesn't add a dot prefix, but then errors if you don't provide one, which feels rather obnoxious.
|
|
152
|
+
|
|
153
|
+
"""
|
|
154
|
+
if not suffix.startswith('.'):
|
|
155
|
+
suffix = f'.{suffix}'
|
|
156
|
+
return super().with_suffix(suffix)
|
|
157
|
+
|
|
158
|
+
def get_conversion_path(self, suffix: str) -> 'Path':
|
|
159
|
+
"""
|
|
160
|
+
|
|
161
|
+
Fetch the equivalent path for a different format in the standard conversion directory structure.
|
|
162
|
+
.../xyz/filename.xyx -> ../abc/filename.abc
|
|
163
|
+
|
|
164
|
+
"""
|
|
165
|
+
|
|
166
|
+
old_dir = self.parent.name
|
|
167
|
+
|
|
168
|
+
if old_dir != self.suffix.removeprefix('.'):
|
|
169
|
+
raise ValueError(f"Expected parent directory '{old_dir}' to match file extension '{suffix}'")
|
|
170
|
+
|
|
171
|
+
new = self.parent.parent / suffix / f'{self.stem}.{suffix}'
|
|
172
|
+
return new
|
|
173
|
+
|
|
148
174
|
@property
|
|
149
175
|
def exist(self):
|
|
150
176
|
"""
|
fmtr/tools/pdf_tools.py
CHANGED
|
@@ -179,6 +179,20 @@ class Document(pm.Document):
|
|
|
179
179
|
"""
|
|
180
180
|
return pymupdf4llm.to_markdown(self, **kwargs)
|
|
181
181
|
|
|
182
|
+
def to_text(self):
|
|
183
|
+
"""
|
|
184
|
+
|
|
185
|
+
Simple text output.
|
|
186
|
+
|
|
187
|
+
"""
|
|
188
|
+
lines = []
|
|
189
|
+
for page in self:
|
|
190
|
+
text = page.get_text()
|
|
191
|
+
lines.append(text)
|
|
192
|
+
|
|
193
|
+
text = '\n'.join(lines)
|
|
194
|
+
return text
|
|
195
|
+
|
|
182
196
|
|
|
183
197
|
if __name__ == '__main__':
|
|
184
198
|
from fmtr.tools.path_tools import Path
|
fmtr/tools/tabular_tools.py
CHANGED
|
@@ -1,7 +1,68 @@
|
|
|
1
|
+
import deepdiff
|
|
2
|
+
import numpy as np
|
|
1
3
|
import pandas as pd
|
|
2
4
|
|
|
5
|
+
from fmtr.tools.iterator_tools import dedupe
|
|
6
|
+
|
|
3
7
|
Table = DataFrame = pd.DataFrame
|
|
4
8
|
Series = pd.Series
|
|
5
9
|
|
|
10
|
+
nan = np.nan
|
|
11
|
+
|
|
6
12
|
CONCAT_HORIZONTALLY = 1
|
|
7
13
|
CONCAT_VERTICALLY = 0
|
|
14
|
+
|
|
15
|
+
|
|
16
|
+
def normalize_nan(df, value=np.nan):
|
|
17
|
+
return df.replace({pd.NA: value, None: value, np.nan: value})
|
|
18
|
+
|
|
19
|
+
|
|
20
|
+
class Differ:
|
|
21
|
+
"""
|
|
22
|
+
|
|
23
|
+
Diff two dataframes via DeepDiff, after shape normalization, datatype simplification, etc.
|
|
24
|
+
|
|
25
|
+
"""
|
|
26
|
+
|
|
27
|
+
def __init__(self, left: Table, right: Table):
|
|
28
|
+
|
|
29
|
+
self.cols = dedupe(left.columns.tolist() + right.columns.tolist())
|
|
30
|
+
self.rows = dedupe(left.index.values.tolist() + right.index.values.tolist())
|
|
31
|
+
self.left = self.process(left)
|
|
32
|
+
self.right = self.process(right)
|
|
33
|
+
self.dfs = [self.left, self.right]
|
|
34
|
+
|
|
35
|
+
def process(self, df: Table) -> Table:
|
|
36
|
+
"""
|
|
37
|
+
|
|
38
|
+
Ensure same rows/columns, plus simplify datatypes via JSON round-robin.
|
|
39
|
+
|
|
40
|
+
"""
|
|
41
|
+
|
|
42
|
+
df_rows = set(df.index.values.tolist())
|
|
43
|
+
for row in self.rows:
|
|
44
|
+
if row in df_rows:
|
|
45
|
+
continue
|
|
46
|
+
df.loc[len(df)] = None
|
|
47
|
+
|
|
48
|
+
df_cols = set(df.columns.tolist())
|
|
49
|
+
for col in self.cols:
|
|
50
|
+
if col in df_cols:
|
|
51
|
+
continue
|
|
52
|
+
df[col] = None
|
|
53
|
+
|
|
54
|
+
df = pd.read_json(df.to_json(date_format='iso'))
|
|
55
|
+
df = normalize_nan(df, value=None)
|
|
56
|
+
|
|
57
|
+
return df
|
|
58
|
+
|
|
59
|
+
def get_diff(self) -> deepdiff.DeepDiff:
|
|
60
|
+
"""
|
|
61
|
+
|
|
62
|
+
Cast to dicts and get diff
|
|
63
|
+
|
|
64
|
+
"""
|
|
65
|
+
|
|
66
|
+
dicts = [df.to_dict(orient='index') for df in self.dfs]
|
|
67
|
+
diff = deepdiff.DeepDiff(*dicts, ignore_order=True)
|
|
68
|
+
return diff
|
fmtr/tools/version
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
1.3.
|
|
1
|
+
1.3.49
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: fmtr.tools
|
|
3
|
-
Version: 1.3.
|
|
3
|
+
Version: 1.3.49
|
|
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
|
|
@@ -80,14 +80,20 @@ Requires-Dist: sentence_transformers; extra == "semantic"
|
|
|
80
80
|
Requires-Dist: pandas; extra == "semantic"
|
|
81
81
|
Requires-Dist: tabulate; extra == "semantic"
|
|
82
82
|
Requires-Dist: openpyxl; extra == "semantic"
|
|
83
|
+
Requires-Dist: odfpy; extra == "semantic"
|
|
84
|
+
Requires-Dist: deepdiff; extra == "semantic"
|
|
83
85
|
Provides-Extra: metric
|
|
84
86
|
Requires-Dist: pandas; extra == "metric"
|
|
85
87
|
Requires-Dist: tabulate; extra == "metric"
|
|
86
88
|
Requires-Dist: openpyxl; extra == "metric"
|
|
89
|
+
Requires-Dist: odfpy; extra == "metric"
|
|
90
|
+
Requires-Dist: deepdiff; extra == "metric"
|
|
87
91
|
Provides-Extra: tabular
|
|
88
92
|
Requires-Dist: pandas; extra == "tabular"
|
|
89
93
|
Requires-Dist: tabulate; extra == "tabular"
|
|
90
94
|
Requires-Dist: openpyxl; extra == "tabular"
|
|
95
|
+
Requires-Dist: odfpy; extra == "tabular"
|
|
96
|
+
Requires-Dist: deepdiff; extra == "tabular"
|
|
91
97
|
Provides-Extra: html
|
|
92
98
|
Requires-Dist: html2text; extra == "html"
|
|
93
99
|
Provides-Extra: interface
|
|
@@ -148,66 +154,68 @@ Provides-Extra: db-document
|
|
|
148
154
|
Requires-Dist: beanie[odm]; extra == "db-document"
|
|
149
155
|
Requires-Dist: motor; extra == "db-document"
|
|
150
156
|
Provides-Extra: all
|
|
157
|
+
Requires-Dist: pydantic-ai[logfire,openai]; extra == "all"
|
|
151
158
|
Requires-Dist: torchaudio; extra == "all"
|
|
152
|
-
Requires-Dist:
|
|
153
|
-
Requires-Dist:
|
|
159
|
+
Requires-Dist: odfpy; extra == "all"
|
|
160
|
+
Requires-Dist: pymupdf; extra == "all"
|
|
161
|
+
Requires-Dist: distributed; extra == "all"
|
|
162
|
+
Requires-Dist: json_repair; extra == "all"
|
|
154
163
|
Requires-Dist: bokeh; extra == "all"
|
|
155
|
-
Requires-Dist:
|
|
164
|
+
Requires-Dist: tinynetrc; extra == "all"
|
|
165
|
+
Requires-Dist: fastapi; extra == "all"
|
|
166
|
+
Requires-Dist: pycountry; extra == "all"
|
|
167
|
+
Requires-Dist: sre_yield; extra == "all"
|
|
168
|
+
Requires-Dist: semver; extra == "all"
|
|
169
|
+
Requires-Dist: html2text; extra == "all"
|
|
170
|
+
Requires-Dist: pytest-cov; extra == "all"
|
|
156
171
|
Requires-Dist: pyyaml; extra == "all"
|
|
157
|
-
Requires-Dist:
|
|
172
|
+
Requires-Dist: appdirs; extra == "all"
|
|
173
|
+
Requires-Dist: pydantic; extra == "all"
|
|
174
|
+
Requires-Dist: httpx_retries; extra == "all"
|
|
175
|
+
Requires-Dist: ollama; extra == "all"
|
|
176
|
+
Requires-Dist: pandas; extra == "all"
|
|
177
|
+
Requires-Dist: pydantic-extra-types; extra == "all"
|
|
178
|
+
Requires-Dist: google-auth; extra == "all"
|
|
179
|
+
Requires-Dist: dask[bag]; extra == "all"
|
|
180
|
+
Requires-Dist: uvicorn[standard]; extra == "all"
|
|
181
|
+
Requires-Dist: httpx; extra == "all"
|
|
182
|
+
Requires-Dist: pydantic-settings; extra == "all"
|
|
183
|
+
Requires-Dist: sentence_transformers; extra == "all"
|
|
158
184
|
Requires-Dist: tokenizers; extra == "all"
|
|
159
|
-
Requires-Dist:
|
|
185
|
+
Requires-Dist: deepdiff; extra == "all"
|
|
160
186
|
Requires-Dist: diskcache; extra == "all"
|
|
187
|
+
Requires-Dist: faker; extra == "all"
|
|
188
|
+
Requires-Dist: playwright; extra == "all"
|
|
189
|
+
Requires-Dist: contexttimer; extra == "all"
|
|
190
|
+
Requires-Dist: google-api-python-client; extra == "all"
|
|
191
|
+
Requires-Dist: filetype; extra == "all"
|
|
192
|
+
Requires-Dist: motor; extra == "all"
|
|
193
|
+
Requires-Dist: deepmerge; extra == "all"
|
|
194
|
+
Requires-Dist: peft; extra == "all"
|
|
195
|
+
Requires-Dist: yamlscript; extra == "all"
|
|
196
|
+
Requires-Dist: transformers[sentencepiece]; extra == "all"
|
|
197
|
+
Requires-Dist: google-auth-oauthlib; extra == "all"
|
|
161
198
|
Requires-Dist: pymupdf4llm; extra == "all"
|
|
162
|
-
Requires-Dist: pymupdf; extra == "all"
|
|
163
|
-
Requires-Dist: dnspython[doh]; extra == "all"
|
|
164
199
|
Requires-Dist: setuptools; extra == "all"
|
|
165
|
-
Requires-Dist:
|
|
200
|
+
Requires-Dist: tabulate; extra == "all"
|
|
201
|
+
Requires-Dist: logfire; extra == "all"
|
|
166
202
|
Requires-Dist: beanie[odm]; extra == "all"
|
|
167
|
-
Requires-Dist:
|
|
203
|
+
Requires-Dist: pydevd-pycharm~=251.25410.159; extra == "all"
|
|
204
|
+
Requires-Dist: flet-video; extra == "all"
|
|
205
|
+
Requires-Dist: logfire[httpx]; extra == "all"
|
|
206
|
+
Requires-Dist: regex; extra == "all"
|
|
168
207
|
Requires-Dist: openai; extra == "all"
|
|
208
|
+
Requires-Dist: docker; extra == "all"
|
|
209
|
+
Requires-Dist: huggingface_hub; extra == "all"
|
|
210
|
+
Requires-Dist: dnspython[doh]; extra == "all"
|
|
211
|
+
Requires-Dist: google-auth-httplib2; extra == "all"
|
|
169
212
|
Requires-Dist: Unidecode; extra == "all"
|
|
170
|
-
Requires-Dist: pydevd-pycharm~=251.25410.159; extra == "all"
|
|
171
|
-
Requires-Dist: pytest-cov; extra == "all"
|
|
172
213
|
Requires-Dist: logfire[fastapi]; extra == "all"
|
|
173
|
-
Requires-Dist: appdirs; extra == "all"
|
|
174
|
-
Requires-Dist: html2text; extra == "all"
|
|
175
|
-
Requires-Dist: deepmerge; extra == "all"
|
|
176
|
-
Requires-Dist: uvicorn[standard]; extra == "all"
|
|
177
|
-
Requires-Dist: dask[bag]; extra == "all"
|
|
178
|
-
Requires-Dist: peft; extra == "all"
|
|
179
|
-
Requires-Dist: docker; extra == "all"
|
|
180
|
-
Requires-Dist: flet-video; extra == "all"
|
|
181
214
|
Requires-Dist: openpyxl; extra == "all"
|
|
182
|
-
Requires-Dist: json_repair; extra == "all"
|
|
183
|
-
Requires-Dist: pydantic-settings; extra == "all"
|
|
184
|
-
Requires-Dist: google-auth; extra == "all"
|
|
185
|
-
Requires-Dist: google-auth-oauthlib; extra == "all"
|
|
186
|
-
Requires-Dist: playwright; extra == "all"
|
|
187
|
-
Requires-Dist: sre_yield; extra == "all"
|
|
188
|
-
Requires-Dist: semver; extra == "all"
|
|
189
215
|
Requires-Dist: torchvision; extra == "all"
|
|
190
|
-
Requires-Dist: google-api-python-client; extra == "all"
|
|
191
|
-
Requires-Dist: regex; extra == "all"
|
|
192
|
-
Requires-Dist: google-auth-httplib2; extra == "all"
|
|
193
|
-
Requires-Dist: yamlscript; extra == "all"
|
|
194
|
-
Requires-Dist: fastapi; extra == "all"
|
|
195
|
-
Requires-Dist: sentence_transformers; extra == "all"
|
|
196
|
-
Requires-Dist: httpx; extra == "all"
|
|
197
|
-
Requires-Dist: transformers[sentencepiece]; extra == "all"
|
|
198
|
-
Requires-Dist: flet[all]; extra == "all"
|
|
199
|
-
Requires-Dist: faker; extra == "all"
|
|
200
|
-
Requires-Dist: pydantic; extra == "all"
|
|
201
216
|
Requires-Dist: cachetools; extra == "all"
|
|
202
|
-
Requires-Dist:
|
|
203
|
-
Requires-Dist:
|
|
204
|
-
Requires-Dist: distributed; extra == "all"
|
|
205
|
-
Requires-Dist: httpx_retries; extra == "all"
|
|
206
|
-
Requires-Dist: motor; extra == "all"
|
|
207
|
-
Requires-Dist: tinynetrc; extra == "all"
|
|
208
|
-
Requires-Dist: logfire; extra == "all"
|
|
209
|
-
Requires-Dist: pycountry; extra == "all"
|
|
210
|
-
Requires-Dist: pydantic-extra-types; extra == "all"
|
|
217
|
+
Requires-Dist: flet-webview; extra == "all"
|
|
218
|
+
Requires-Dist: flet[all]; extra == "all"
|
|
211
219
|
Dynamic: author
|
|
212
220
|
Dynamic: author-email
|
|
213
221
|
Dynamic: description
|
|
@@ -21,7 +21,7 @@ fmtr/tools/http_tools.py,sha256=RVwGrBNMyjfbpgAPCSnxEkXfSzXXWARb3ayq981ONQE,464
|
|
|
21
21
|
fmtr/tools/import_tools.py,sha256=XJmiWLukRncJAcaGReDn4jIz1_IpVBjfYCQHH1hIg7c,588
|
|
22
22
|
fmtr/tools/inherit_tools.py,sha256=gTGL4mRm5RsbFW76s25AbuAJ2vlymbh1c8Q4Hl2uJGU,646
|
|
23
23
|
fmtr/tools/inspection_tools.py,sha256=tLTRvzy9XVomQPi0dfnF_cgwc7KiDVZAr7gPTk4S_bQ,278
|
|
24
|
-
fmtr/tools/iterator_tools.py,sha256=
|
|
24
|
+
fmtr/tools/iterator_tools.py,sha256=ymxo2U9MrPhouIhWCVvh1TrP1bXJPm_p0Lqwgi5Jr6w,1628
|
|
25
25
|
fmtr/tools/json_fix_tools.py,sha256=vNSlswVQnujPmKEqDjFJcO901mjMyv59q3awsT7mlhs,477
|
|
26
26
|
fmtr/tools/json_tools.py,sha256=WkFc5q7oqMtcFejhN1K5zQFULa9TdLOup83Fr0saDRY,348
|
|
27
27
|
fmtr/tools/logging_tools.py,sha256=M7I5igs_tX5SIRv4f-jfb75LOODclSdmEg5ziAAMSPE,2503
|
|
@@ -33,7 +33,7 @@ fmtr/tools/openai_tools.py,sha256=6SUgejgzUzmlKKct2_ePXntvMegu3FJgfk9x7aqtqYc,74
|
|
|
33
33
|
fmtr/tools/packaging_tools.py,sha256=FlgOTnDRHZWQL2iR-wucTsyGEHRE-MlddKL30MPmUqE,253
|
|
34
34
|
fmtr/tools/parallel_tools.py,sha256=QEb_gN1StkxsqYaH4HSjiJX8Y3gpb2uKNsOzG4uFpaM,3071
|
|
35
35
|
fmtr/tools/pattern_tools.py,sha256=DlEKzNJKhwFmU3-awoGkN5Xy-yLF_bsoj8eoSMCEytE,6018
|
|
36
|
-
fmtr/tools/pdf_tools.py,sha256=
|
|
36
|
+
fmtr/tools/pdf_tools.py,sha256=9ElZRvXtYlvZkw8koB31xSGDM2B9JHQT7FVVIaLoXQI,4311
|
|
37
37
|
fmtr/tools/platform_tools.py,sha256=7p69CmAHe_sF68Fx9uVhns1k5EewTHTWgUYzkl6ZQKA,308
|
|
38
38
|
fmtr/tools/process_tools.py,sha256=Ysh5Dk2QFBhXQerArjKdt7xZd3JrN5Ho02AaOjH0Nnw,1425
|
|
39
39
|
fmtr/tools/profiling_tools.py,sha256=jpXVjaNKPydTasEQVNXvxzGtMhXPit08AnJddkU8uIc,46
|
|
@@ -42,11 +42,11 @@ fmtr/tools/semantic_tools.py,sha256=cxY9NSAHWj4nEc6Oj4qA1omR3dWbl2OuH7_PkINc6_E,
|
|
|
42
42
|
fmtr/tools/settings_tools.py,sha256=o11W3T60UZSvCTkh_eEQq1Mx74GycQ6JxUr0plBDbsk,2356
|
|
43
43
|
fmtr/tools/spaces_tools.py,sha256=D_he3mve6DruB3OPS6QyzqD05ChHnRTb4buViKPe7To,1099
|
|
44
44
|
fmtr/tools/string_tools.py,sha256=On6YRLTAK1i6mmMpOUWVM618CykJiuaoyKIsU1cB_mA,4952
|
|
45
|
-
fmtr/tools/tabular_tools.py,sha256=
|
|
45
|
+
fmtr/tools/tabular_tools.py,sha256=mw6vOij1Ch-pVAyHMPtm5zj__ULZN_TKeBYOfj33wFM,1634
|
|
46
46
|
fmtr/tools/tokenization_tools.py,sha256=me-IBzSLyNYejLybwjO9CNB6Mj2NYfKPaOVThXyaGNg,4268
|
|
47
47
|
fmtr/tools/tools.py,sha256=CAsApa1YwVdNE6H66Vjivs_mXYvOas3rh7fPELAnTpk,795
|
|
48
48
|
fmtr/tools/unicode_tools.py,sha256=yS_9wpu8ogNoiIL7s1G_8bETFFO_YQlo4LNPv1NLDeY,52
|
|
49
|
-
fmtr/tools/version,sha256=
|
|
49
|
+
fmtr/tools/version,sha256=Gu0FxrnxSfSiaBEXNfjNzhDJ5oAjWBiF3qy9XGVZUJU,6
|
|
50
50
|
fmtr/tools/webhook_tools.py,sha256=q3pVJ1NCem2SrMuFcLxiWd7DibFs7Q-uGtojfXd3Qcg,380
|
|
51
51
|
fmtr/tools/yaml_tools.py,sha256=Bhhyd6GQVKO72Lp8ky7bAUjIB_65Hdh0Q45SKIEe6S8,1901
|
|
52
52
|
fmtr/tools/ai_tools/__init__.py,sha256=O8VRlPnnQCncg2ZZ2l_VdWLJf4jkKH6dkZFVbv6o7IM,388
|
|
@@ -71,7 +71,7 @@ fmtr/tools/interface_tools/controls.py,sha256=oOl0_sZB8fkvYB-9A5yjArfQmFQLMCsVGg
|
|
|
71
71
|
fmtr/tools/interface_tools/interface_tools.py,sha256=i1TqP_67pVGiRZotKdVxyH0b5OFwaTZ_5Tf60gip0ts,4214
|
|
72
72
|
fmtr/tools/path_tools/__init__.py,sha256=XrJXt7Zzo90tYUVksMlDfKkWt775zJ9OSi2NbhnqMDI,459
|
|
73
73
|
fmtr/tools/path_tools/app_path_tools.py,sha256=JrJvtTDd_gkCKcZtBCDTMktsM77PZwGV_hzQX0g5GU8,1722
|
|
74
|
-
fmtr/tools/path_tools/path_tools.py,sha256=
|
|
74
|
+
fmtr/tools/path_tools/path_tools.py,sha256=s3RTXsjnr2Ah7vXQGjpGs-4DlWaVGvChu0aTFXX3gsE,8867
|
|
75
75
|
fmtr/tools/path_tools/type_path_tools.py,sha256=Zgs-ek-GXRKDIlVDGdg3muB0PIxTg2ba0NeHw6y8FWQ,40
|
|
76
76
|
fmtr/tools/setup_tools/__init__.py,sha256=Ro_Qj3Xndv8Z68DeWPI7c6X-aWKsdDm0KcX_k1xDhgE,394
|
|
77
77
|
fmtr/tools/setup_tools/setup_tools.py,sha256=7Z6jlU6UE8P4cntGQ_hJR7hGvoqwh15xzZY63cnxG7E,10363
|
|
@@ -85,9 +85,9 @@ fmtr/tools/tests/test_path.py,sha256=AkZQa6_8BQ-VaCyL_J-iKmdf2ZaM-xFYR37Kun3k4_g
|
|
|
85
85
|
fmtr/tools/tests/test_yaml.py,sha256=jc0TwwKu9eC0LvFGNMERdgBue591xwLxYXFbtsRwXVM,287
|
|
86
86
|
fmtr/tools/version_tools/__init__.py,sha256=cjE6nO6AoVOUp3RwgTbqL9wiw8J1l2pHJOz6Gn6bxjA,326
|
|
87
87
|
fmtr/tools/version_tools/version_tools.py,sha256=Hcc6yferZS1hHbugRTdiHhSNmXEEG0hjCiTTXKna-YY,1127
|
|
88
|
-
fmtr_tools-1.3.
|
|
89
|
-
fmtr_tools-1.3.
|
|
90
|
-
fmtr_tools-1.3.
|
|
91
|
-
fmtr_tools-1.3.
|
|
92
|
-
fmtr_tools-1.3.
|
|
93
|
-
fmtr_tools-1.3.
|
|
88
|
+
fmtr_tools-1.3.49.dist-info/licenses/LICENSE,sha256=FW9aa6vVN5IjRQWLT43hs4_koYSmpcbIovlKeAJ0_cI,10757
|
|
89
|
+
fmtr_tools-1.3.49.dist-info/METADATA,sha256=1oejOVboa3Ol_fXNcxIa3WG49h9fMV8G8YgRWGqeJJo,17429
|
|
90
|
+
fmtr_tools-1.3.49.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
|
|
91
|
+
fmtr_tools-1.3.49.dist-info/entry_points.txt,sha256=h-r__Xh5njtFqreMLg6cGuTFS4Qh-QqJPU1HB-_BS-Q,357
|
|
92
|
+
fmtr_tools-1.3.49.dist-info/top_level.txt,sha256=LXem9xCgNOD72tE2gRKESdiQTL902mfFkwWb6-dlwEE,5
|
|
93
|
+
fmtr_tools-1.3.49.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|