fmtr.tools 1.1.30__tar.gz → 1.2.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.

Potentially problematic release.


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

Files changed (89) hide show
  1. {fmtr_tools-1.1.30 → fmtr_tools-1.2.1}/PKG-INFO +57 -55
  2. fmtr_tools-1.2.1/fmtr/tools/entrypoints/cache_hfh.py +3 -0
  3. fmtr_tools-1.2.1/fmtr/tools/entrypoints/ep_test.py +2 -0
  4. fmtr_tools-1.2.1/fmtr/tools/entrypoints/remote_debug_test.py +8 -0
  5. fmtr_tools-1.2.1/fmtr/tools/entrypoints/shell_debug.py +8 -0
  6. fmtr_tools-1.2.1/fmtr/tools/tests/conftest.py +0 -0
  7. fmtr_tools-1.2.1/fmtr/tools/version +1 -0
  8. {fmtr_tools-1.1.30 → fmtr_tools-1.2.1}/fmtr.tools.egg-info/PKG-INFO +57 -55
  9. fmtr_tools-1.2.1/fmtr.tools.egg-info/SOURCES.txt +154 -0
  10. fmtr_tools-1.2.1/fmtr.tools.egg-info/entry_points.txt +5 -0
  11. {fmtr_tools-1.1.30 → fmtr_tools-1.2.1}/fmtr.tools.egg-info/requires.txt +56 -53
  12. fmtr_tools-1.2.1/pyproject.toml +3 -0
  13. fmtr_tools-1.2.1/setup.py +49 -0
  14. fmtr_tools-1.1.30/fmtr/tools/console_script_tools.py +0 -23
  15. fmtr_tools-1.1.30/fmtr/tools/version +0 -1
  16. fmtr_tools-1.1.30/fmtr.tools.egg-info/SOURCES.txt +0 -77
  17. fmtr_tools-1.1.30/fmtr.tools.egg-info/entry_points.txt +0 -4
  18. fmtr_tools-1.1.30/setup.py +0 -50
  19. {fmtr_tools-1.1.30 → fmtr_tools-1.2.1}/LICENSE +0 -0
  20. {fmtr_tools-1.1.30 → fmtr_tools-1.2.1}/README.md +0 -0
  21. {fmtr_tools-1.1.30 → fmtr_tools-1.2.1}/fmtr/tools/__init__.py +0 -0
  22. {fmtr_tools-1.1.30 → fmtr_tools-1.2.1}/fmtr/tools/ai_tools/__init__.py +0 -0
  23. {fmtr_tools-1.1.30 → fmtr_tools-1.2.1}/fmtr/tools/ai_tools/agentic_tools.py +0 -0
  24. {fmtr_tools-1.1.30 → fmtr_tools-1.2.1}/fmtr/tools/ai_tools/inference_tools.py +0 -0
  25. {fmtr_tools-1.1.30 → fmtr_tools-1.2.1}/fmtr/tools/api_tools.py +0 -0
  26. {fmtr_tools-1.1.30 → fmtr_tools-1.2.1}/fmtr/tools/async_tools.py +0 -0
  27. {fmtr_tools-1.1.30 → fmtr_tools-1.2.1}/fmtr/tools/augmentation_tools.py +0 -0
  28. {fmtr_tools-1.1.30 → fmtr_tools-1.2.1}/fmtr/tools/caching_tools.py +0 -0
  29. {fmtr_tools-1.1.30 → fmtr_tools-1.2.1}/fmtr/tools/constants.py +0 -0
  30. {fmtr_tools-1.1.30 → fmtr_tools-1.2.1}/fmtr/tools/data_modelling_tools.py +0 -0
  31. {fmtr_tools-1.1.30 → fmtr_tools-1.2.1}/fmtr/tools/dataclass_tools.py +0 -0
  32. {fmtr_tools-1.1.30 → fmtr_tools-1.2.1}/fmtr/tools/datatype_tools.py +0 -0
  33. {fmtr_tools-1.1.30 → fmtr_tools-1.2.1}/fmtr/tools/debugging_tools.py +0 -0
  34. {fmtr_tools-1.1.30 → fmtr_tools-1.2.1}/fmtr/tools/dns_tools.py +0 -0
  35. {fmtr_tools-1.1.30 → fmtr_tools-1.2.1}/fmtr/tools/docker_tools.py +0 -0
  36. {fmtr_tools-1.1.30/fmtr/tools/tests → fmtr_tools-1.2.1/fmtr/tools/entrypoints}/__init__.py +0 -0
  37. {fmtr_tools-1.1.30 → fmtr_tools-1.2.1}/fmtr/tools/environment_tools.py +0 -0
  38. {fmtr_tools-1.1.30 → fmtr_tools-1.2.1}/fmtr/tools/function_tools.py +0 -0
  39. {fmtr_tools-1.1.30 → fmtr_tools-1.2.1}/fmtr/tools/google_api_tools.py +0 -0
  40. {fmtr_tools-1.1.30 → fmtr_tools-1.2.1}/fmtr/tools/hash_tools.py +0 -0
  41. {fmtr_tools-1.1.30 → fmtr_tools-1.2.1}/fmtr/tools/hfh_tools.py +0 -0
  42. {fmtr_tools-1.1.30 → fmtr_tools-1.2.1}/fmtr/tools/html_tools.py +0 -0
  43. {fmtr_tools-1.1.30 → fmtr_tools-1.2.1}/fmtr/tools/http_tools.py +0 -0
  44. {fmtr_tools-1.1.30 → fmtr_tools-1.2.1}/fmtr/tools/import_tools.py +0 -0
  45. {fmtr_tools-1.1.30 → fmtr_tools-1.2.1}/fmtr/tools/inspection_tools.py +0 -0
  46. {fmtr_tools-1.1.30 → fmtr_tools-1.2.1}/fmtr/tools/interface_tools.py +0 -0
  47. {fmtr_tools-1.1.30 → fmtr_tools-1.2.1}/fmtr/tools/iterator_tools.py +0 -0
  48. {fmtr_tools-1.1.30 → fmtr_tools-1.2.1}/fmtr/tools/json_fix_tools.py +0 -0
  49. {fmtr_tools-1.1.30 → fmtr_tools-1.2.1}/fmtr/tools/json_tools.py +0 -0
  50. {fmtr_tools-1.1.30 → fmtr_tools-1.2.1}/fmtr/tools/logging_tools.py +0 -0
  51. {fmtr_tools-1.1.30 → fmtr_tools-1.2.1}/fmtr/tools/merging_tools.py +0 -0
  52. {fmtr_tools-1.1.30 → fmtr_tools-1.2.1}/fmtr/tools/metric_tools.py +0 -0
  53. {fmtr_tools-1.1.30 → fmtr_tools-1.2.1}/fmtr/tools/name_tools.py +0 -0
  54. {fmtr_tools-1.1.30 → fmtr_tools-1.2.1}/fmtr/tools/netrc_tools.py +0 -0
  55. {fmtr_tools-1.1.30 → fmtr_tools-1.2.1}/fmtr/tools/openai_tools.py +0 -0
  56. {fmtr_tools-1.1.30 → fmtr_tools-1.2.1}/fmtr/tools/packaging_tools.py +0 -0
  57. {fmtr_tools-1.1.30 → fmtr_tools-1.2.1}/fmtr/tools/parallel_tools.py +0 -0
  58. {fmtr_tools-1.1.30 → fmtr_tools-1.2.1}/fmtr/tools/path_tools/__init__.py +0 -0
  59. {fmtr_tools-1.1.30 → fmtr_tools-1.2.1}/fmtr/tools/path_tools/app_path_tools.py +0 -0
  60. {fmtr_tools-1.1.30 → fmtr_tools-1.2.1}/fmtr/tools/path_tools/path_tools.py +0 -0
  61. {fmtr_tools-1.1.30 → fmtr_tools-1.2.1}/fmtr/tools/path_tools/type_path_tools.py +0 -0
  62. {fmtr_tools-1.1.30 → fmtr_tools-1.2.1}/fmtr/tools/pattern_tools.py +0 -0
  63. {fmtr_tools-1.1.30 → fmtr_tools-1.2.1}/fmtr/tools/pdf_tools.py +0 -0
  64. {fmtr_tools-1.1.30 → fmtr_tools-1.2.1}/fmtr/tools/platform_tools.py +0 -0
  65. {fmtr_tools-1.1.30 → fmtr_tools-1.2.1}/fmtr/tools/process_tools.py +0 -0
  66. {fmtr_tools-1.1.30 → fmtr_tools-1.2.1}/fmtr/tools/profiling_tools.py +0 -0
  67. {fmtr_tools-1.1.30 → fmtr_tools-1.2.1}/fmtr/tools/random_tools.py +0 -0
  68. {fmtr_tools-1.1.30 → fmtr_tools-1.2.1}/fmtr/tools/semantic_tools.py +0 -0
  69. {fmtr_tools-1.1.30 → fmtr_tools-1.2.1}/fmtr/tools/settings_tools.py +0 -0
  70. {fmtr_tools-1.1.30 → fmtr_tools-1.2.1}/fmtr/tools/setup_tools/__init__.py +0 -0
  71. {fmtr_tools-1.1.30 → fmtr_tools-1.2.1}/fmtr/tools/setup_tools/setup_tools.py +0 -0
  72. {fmtr_tools-1.1.30 → fmtr_tools-1.2.1}/fmtr/tools/spaces_tools.py +0 -0
  73. {fmtr_tools-1.1.30 → fmtr_tools-1.2.1}/fmtr/tools/string_tools.py +0 -0
  74. {fmtr_tools-1.1.30 → fmtr_tools-1.2.1}/fmtr/tools/tabular_tools.py +0 -0
  75. /fmtr_tools-1.1.30/fmtr/tools/tests/conftest.py → /fmtr_tools-1.2.1/fmtr/tools/tests/__init__.py +0 -0
  76. {fmtr_tools-1.1.30 → fmtr_tools-1.2.1}/fmtr/tools/tests/helpers.py +0 -0
  77. {fmtr_tools-1.1.30 → fmtr_tools-1.2.1}/fmtr/tools/tests/test_datatype.py +0 -0
  78. {fmtr_tools-1.1.30 → fmtr_tools-1.2.1}/fmtr/tools/tests/test_environment.py +0 -0
  79. {fmtr_tools-1.1.30 → fmtr_tools-1.2.1}/fmtr/tools/tests/test_json.py +0 -0
  80. {fmtr_tools-1.1.30 → fmtr_tools-1.2.1}/fmtr/tools/tests/test_path.py +0 -0
  81. {fmtr_tools-1.1.30 → fmtr_tools-1.2.1}/fmtr/tools/tests/test_yaml.py +0 -0
  82. {fmtr_tools-1.1.30 → fmtr_tools-1.2.1}/fmtr/tools/tokenization_tools.py +0 -0
  83. {fmtr_tools-1.1.30 → fmtr_tools-1.2.1}/fmtr/tools/tools.py +0 -0
  84. {fmtr_tools-1.1.30 → fmtr_tools-1.2.1}/fmtr/tools/unicode_tools.py +0 -0
  85. {fmtr_tools-1.1.30 → fmtr_tools-1.2.1}/fmtr/tools/version_tools.py +0 -0
  86. {fmtr_tools-1.1.30 → fmtr_tools-1.2.1}/fmtr/tools/yaml_tools.py +0 -0
  87. {fmtr_tools-1.1.30 → fmtr_tools-1.2.1}/fmtr.tools.egg-info/dependency_links.txt +0 -0
  88. {fmtr_tools-1.1.30 → fmtr_tools-1.2.1}/fmtr.tools.egg-info/top_level.txt +0 -0
  89. {fmtr_tools-1.1.30 → fmtr_tools-1.2.1}/setup.cfg +0 -0
@@ -1,68 +1,15 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: fmtr.tools
3
- Version: 1.1.30
3
+ Version: 1.2.1
4
4
  Summary: Collection of high-level tools to simplify everyday development tasks, with a focus on AI/ML
5
- Home-page: https://github.com/fmtr/fmtr.tools
5
+ Home-page: https://github.com/fmtr/tools
6
6
  Author: Frontmatter
7
7
  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
11
  Provides-Extra: test
12
- Requires-Dist: pydantic-ai[logfire,openai]; extra == "test"
13
- Requires-Dist: distributed; extra == "test"
14
- Requires-Dist: torchvision; extra == "test"
15
- Requires-Dist: openpyxl; extra == "test"
16
- Requires-Dist: pyyaml; extra == "test"
17
- Requires-Dist: pydantic; extra == "test"
18
- Requires-Dist: filetype; extra == "test"
19
- Requires-Dist: yamlscript; extra == "test"
20
- Requires-Dist: dask[bag]; extra == "test"
21
- Requires-Dist: dnspython[doh]; extra == "test"
22
- Requires-Dist: tabulate; extra == "test"
23
- Requires-Dist: appdirs; extra == "test"
24
- Requires-Dist: logfire; extra == "test"
25
- Requires-Dist: pymupdf4llm; extra == "test"
26
- Requires-Dist: peft; extra == "test"
27
- Requires-Dist: faker; extra == "test"
28
- Requires-Dist: huggingface_hub; extra == "test"
29
- Requires-Dist: pandas; extra == "test"
30
- Requires-Dist: sentence_transformers; extra == "test"
31
- Requires-Dist: contexttimer; extra == "test"
32
- Requires-Dist: fastapi; extra == "test"
33
- Requires-Dist: torchaudio; extra == "test"
34
- Requires-Dist: ollama; extra == "test"
35
- Requires-Dist: diskcache; extra == "test"
36
- Requires-Dist: httpx; extra == "test"
37
- Requires-Dist: deepmerge; extra == "test"
38
- Requires-Dist: pymupdf; extra == "test"
39
- Requires-Dist: transformers[sentencepiece]; extra == "test"
40
- Requires-Dist: pydevd-pycharm; extra == "test"
41
12
  Requires-Dist: pytest-cov; extra == "test"
42
- Requires-Dist: google-api-python-client; extra == "test"
43
- Requires-Dist: sre_yield; extra == "test"
44
- Requires-Dist: pydantic-settings; extra == "test"
45
- Requires-Dist: setuptools; extra == "test"
46
- Requires-Dist: json_repair; extra == "test"
47
- Requires-Dist: google-auth-oauthlib; extra == "test"
48
- Requires-Dist: regex; extra == "test"
49
- Requires-Dist: docker; extra == "test"
50
- Requires-Dist: tinynetrc; extra == "test"
51
- Requires-Dist: html2text; extra == "test"
52
- Requires-Dist: flet[all]; extra == "test"
53
- Requires-Dist: semver; extra == "test"
54
- Requires-Dist: tokenizers; extra == "test"
55
- Requires-Dist: bokeh; extra == "test"
56
- Requires-Dist: openai; extra == "test"
57
- Requires-Dist: uvicorn[standard]; extra == "test"
58
- Requires-Dist: flet-video; extra == "test"
59
- Requires-Dist: logfire[fastapi]; extra == "test"
60
- Requires-Dist: Unidecode; extra == "test"
61
- Requires-Dist: google-auth-httplib2; extra == "test"
62
- Requires-Dist: logfire[httpx]; extra == "test"
63
- Requires-Dist: google-auth; extra == "test"
64
- Requires-Dist: httpx_retries; extra == "test"
65
- Requires-Dist: flet-webview; extra == "test"
66
13
  Provides-Extra: yaml
67
14
  Requires-Dist: yamlscript; extra == "yaml"
68
15
  Requires-Dist: pyyaml; extra == "yaml"
@@ -175,6 +122,61 @@ Requires-Dist: semver; extra == "http"
175
122
  Requires-Dist: logfire[httpx]; extra == "http"
176
123
  Provides-Extra: setup
177
124
  Requires-Dist: setuptools; extra == "setup"
125
+ Provides-Extra: all
126
+ Requires-Dist: docker; extra == "all"
127
+ Requires-Dist: huggingface_hub; extra == "all"
128
+ Requires-Dist: filetype; extra == "all"
129
+ Requires-Dist: httpx; extra == "all"
130
+ Requires-Dist: torchvision; extra == "all"
131
+ Requires-Dist: fastapi; extra == "all"
132
+ Requires-Dist: google-auth-oauthlib; extra == "all"
133
+ Requires-Dist: tinynetrc; extra == "all"
134
+ Requires-Dist: html2text; extra == "all"
135
+ Requires-Dist: distributed; extra == "all"
136
+ Requires-Dist: faker; extra == "all"
137
+ Requires-Dist: openpyxl; extra == "all"
138
+ Requires-Dist: pyyaml; extra == "all"
139
+ Requires-Dist: transformers[sentencepiece]; extra == "all"
140
+ Requires-Dist: flet-video; extra == "all"
141
+ Requires-Dist: flet[all]; extra == "all"
142
+ Requires-Dist: logfire[fastapi]; extra == "all"
143
+ Requires-Dist: ollama; extra == "all"
144
+ Requires-Dist: Unidecode; extra == "all"
145
+ Requires-Dist: google-api-python-client; extra == "all"
146
+ Requires-Dist: diskcache; extra == "all"
147
+ Requires-Dist: pymupdf; extra == "all"
148
+ Requires-Dist: torchaudio; extra == "all"
149
+ Requires-Dist: setuptools; extra == "all"
150
+ Requires-Dist: pytest-cov; extra == "all"
151
+ Requires-Dist: google-auth-httplib2; extra == "all"
152
+ Requires-Dist: semver; extra == "all"
153
+ Requires-Dist: yamlscript; extra == "all"
154
+ Requires-Dist: uvicorn[standard]; extra == "all"
155
+ Requires-Dist: pydantic-settings; extra == "all"
156
+ Requires-Dist: flet-webview; extra == "all"
157
+ Requires-Dist: tokenizers; extra == "all"
158
+ Requires-Dist: openai; extra == "all"
159
+ Requires-Dist: dnspython[doh]; extra == "all"
160
+ Requires-Dist: bokeh; extra == "all"
161
+ Requires-Dist: contexttimer; extra == "all"
162
+ Requires-Dist: appdirs; extra == "all"
163
+ Requires-Dist: dask[bag]; extra == "all"
164
+ Requires-Dist: pydevd-pycharm; extra == "all"
165
+ Requires-Dist: sentence_transformers; extra == "all"
166
+ Requires-Dist: pymupdf4llm; extra == "all"
167
+ Requires-Dist: pandas; extra == "all"
168
+ Requires-Dist: pydantic-ai[logfire,openai]; extra == "all"
169
+ Requires-Dist: regex; extra == "all"
170
+ Requires-Dist: logfire[httpx]; extra == "all"
171
+ Requires-Dist: pydantic; extra == "all"
172
+ Requires-Dist: peft; extra == "all"
173
+ Requires-Dist: google-auth; extra == "all"
174
+ Requires-Dist: httpx_retries; extra == "all"
175
+ Requires-Dist: tabulate; extra == "all"
176
+ Requires-Dist: json_repair; extra == "all"
177
+ Requires-Dist: sre_yield; extra == "all"
178
+ Requires-Dist: deepmerge; extra == "all"
179
+ Requires-Dist: logfire; extra == "all"
178
180
  Dynamic: author
179
181
  Dynamic: author-email
180
182
  Dynamic: description
@@ -0,0 +1,3 @@
1
+ def main():
2
+ from fmtr import tools
3
+ tools.hfh.main()
@@ -0,0 +1,2 @@
1
+ def main():
2
+ print('Ran test entrypoint.')
@@ -0,0 +1,8 @@
1
+ def main():
2
+ """
3
+
4
+ Test debugger connection
5
+
6
+ """
7
+ from fmtr.tools import debug
8
+ debug.trace(is_debug=True)
@@ -0,0 +1,8 @@
1
+ def main():
2
+ """
3
+
4
+ Start debugger
5
+
6
+ """
7
+ from fmtr.tools import debug
8
+ debug.debug_shell()
File without changes
@@ -0,0 +1 @@
1
+ 1.2.1
@@ -1,68 +1,15 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: fmtr.tools
3
- Version: 1.1.30
3
+ Version: 1.2.1
4
4
  Summary: Collection of high-level tools to simplify everyday development tasks, with a focus on AI/ML
5
- Home-page: https://github.com/fmtr/fmtr.tools
5
+ Home-page: https://github.com/fmtr/tools
6
6
  Author: Frontmatter
7
7
  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
11
  Provides-Extra: test
12
- Requires-Dist: pydantic-ai[logfire,openai]; extra == "test"
13
- Requires-Dist: distributed; extra == "test"
14
- Requires-Dist: torchvision; extra == "test"
15
- Requires-Dist: openpyxl; extra == "test"
16
- Requires-Dist: pyyaml; extra == "test"
17
- Requires-Dist: pydantic; extra == "test"
18
- Requires-Dist: filetype; extra == "test"
19
- Requires-Dist: yamlscript; extra == "test"
20
- Requires-Dist: dask[bag]; extra == "test"
21
- Requires-Dist: dnspython[doh]; extra == "test"
22
- Requires-Dist: tabulate; extra == "test"
23
- Requires-Dist: appdirs; extra == "test"
24
- Requires-Dist: logfire; extra == "test"
25
- Requires-Dist: pymupdf4llm; extra == "test"
26
- Requires-Dist: peft; extra == "test"
27
- Requires-Dist: faker; extra == "test"
28
- Requires-Dist: huggingface_hub; extra == "test"
29
- Requires-Dist: pandas; extra == "test"
30
- Requires-Dist: sentence_transformers; extra == "test"
31
- Requires-Dist: contexttimer; extra == "test"
32
- Requires-Dist: fastapi; extra == "test"
33
- Requires-Dist: torchaudio; extra == "test"
34
- Requires-Dist: ollama; extra == "test"
35
- Requires-Dist: diskcache; extra == "test"
36
- Requires-Dist: httpx; extra == "test"
37
- Requires-Dist: deepmerge; extra == "test"
38
- Requires-Dist: pymupdf; extra == "test"
39
- Requires-Dist: transformers[sentencepiece]; extra == "test"
40
- Requires-Dist: pydevd-pycharm; extra == "test"
41
12
  Requires-Dist: pytest-cov; extra == "test"
42
- Requires-Dist: google-api-python-client; extra == "test"
43
- Requires-Dist: sre_yield; extra == "test"
44
- Requires-Dist: pydantic-settings; extra == "test"
45
- Requires-Dist: setuptools; extra == "test"
46
- Requires-Dist: json_repair; extra == "test"
47
- Requires-Dist: google-auth-oauthlib; extra == "test"
48
- Requires-Dist: regex; extra == "test"
49
- Requires-Dist: docker; extra == "test"
50
- Requires-Dist: tinynetrc; extra == "test"
51
- Requires-Dist: html2text; extra == "test"
52
- Requires-Dist: flet[all]; extra == "test"
53
- Requires-Dist: semver; extra == "test"
54
- Requires-Dist: tokenizers; extra == "test"
55
- Requires-Dist: bokeh; extra == "test"
56
- Requires-Dist: openai; extra == "test"
57
- Requires-Dist: uvicorn[standard]; extra == "test"
58
- Requires-Dist: flet-video; extra == "test"
59
- Requires-Dist: logfire[fastapi]; extra == "test"
60
- Requires-Dist: Unidecode; extra == "test"
61
- Requires-Dist: google-auth-httplib2; extra == "test"
62
- Requires-Dist: logfire[httpx]; extra == "test"
63
- Requires-Dist: google-auth; extra == "test"
64
- Requires-Dist: httpx_retries; extra == "test"
65
- Requires-Dist: flet-webview; extra == "test"
66
13
  Provides-Extra: yaml
67
14
  Requires-Dist: yamlscript; extra == "yaml"
68
15
  Requires-Dist: pyyaml; extra == "yaml"
@@ -175,6 +122,61 @@ Requires-Dist: semver; extra == "http"
175
122
  Requires-Dist: logfire[httpx]; extra == "http"
176
123
  Provides-Extra: setup
177
124
  Requires-Dist: setuptools; extra == "setup"
125
+ Provides-Extra: all
126
+ Requires-Dist: docker; extra == "all"
127
+ Requires-Dist: huggingface_hub; extra == "all"
128
+ Requires-Dist: filetype; extra == "all"
129
+ Requires-Dist: httpx; extra == "all"
130
+ Requires-Dist: torchvision; extra == "all"
131
+ Requires-Dist: fastapi; extra == "all"
132
+ Requires-Dist: google-auth-oauthlib; extra == "all"
133
+ Requires-Dist: tinynetrc; extra == "all"
134
+ Requires-Dist: html2text; extra == "all"
135
+ Requires-Dist: distributed; extra == "all"
136
+ Requires-Dist: faker; extra == "all"
137
+ Requires-Dist: openpyxl; extra == "all"
138
+ Requires-Dist: pyyaml; extra == "all"
139
+ Requires-Dist: transformers[sentencepiece]; extra == "all"
140
+ Requires-Dist: flet-video; extra == "all"
141
+ Requires-Dist: flet[all]; extra == "all"
142
+ Requires-Dist: logfire[fastapi]; extra == "all"
143
+ Requires-Dist: ollama; extra == "all"
144
+ Requires-Dist: Unidecode; extra == "all"
145
+ Requires-Dist: google-api-python-client; extra == "all"
146
+ Requires-Dist: diskcache; extra == "all"
147
+ Requires-Dist: pymupdf; extra == "all"
148
+ Requires-Dist: torchaudio; extra == "all"
149
+ Requires-Dist: setuptools; extra == "all"
150
+ Requires-Dist: pytest-cov; extra == "all"
151
+ Requires-Dist: google-auth-httplib2; extra == "all"
152
+ Requires-Dist: semver; extra == "all"
153
+ Requires-Dist: yamlscript; extra == "all"
154
+ Requires-Dist: uvicorn[standard]; extra == "all"
155
+ Requires-Dist: pydantic-settings; extra == "all"
156
+ Requires-Dist: flet-webview; extra == "all"
157
+ Requires-Dist: tokenizers; extra == "all"
158
+ Requires-Dist: openai; extra == "all"
159
+ Requires-Dist: dnspython[doh]; extra == "all"
160
+ Requires-Dist: bokeh; extra == "all"
161
+ Requires-Dist: contexttimer; extra == "all"
162
+ Requires-Dist: appdirs; extra == "all"
163
+ Requires-Dist: dask[bag]; extra == "all"
164
+ Requires-Dist: pydevd-pycharm; extra == "all"
165
+ Requires-Dist: sentence_transformers; extra == "all"
166
+ Requires-Dist: pymupdf4llm; extra == "all"
167
+ Requires-Dist: pandas; extra == "all"
168
+ Requires-Dist: pydantic-ai[logfire,openai]; extra == "all"
169
+ Requires-Dist: regex; extra == "all"
170
+ Requires-Dist: logfire[httpx]; extra == "all"
171
+ Requires-Dist: pydantic; extra == "all"
172
+ Requires-Dist: peft; extra == "all"
173
+ Requires-Dist: google-auth; extra == "all"
174
+ Requires-Dist: httpx_retries; extra == "all"
175
+ Requires-Dist: tabulate; extra == "all"
176
+ Requires-Dist: json_repair; extra == "all"
177
+ Requires-Dist: sre_yield; extra == "all"
178
+ Requires-Dist: deepmerge; extra == "all"
179
+ Requires-Dist: logfire; extra == "all"
178
180
  Dynamic: author
179
181
  Dynamic: author-email
180
182
  Dynamic: description
@@ -0,0 +1,154 @@
1
+ LICENSE
2
+ README.md
3
+ pyproject.toml
4
+ setup.py
5
+ ./fmtr/tools/__init__.py
6
+ ./fmtr/tools/api_tools.py
7
+ ./fmtr/tools/async_tools.py
8
+ ./fmtr/tools/augmentation_tools.py
9
+ ./fmtr/tools/caching_tools.py
10
+ ./fmtr/tools/constants.py
11
+ ./fmtr/tools/data_modelling_tools.py
12
+ ./fmtr/tools/dataclass_tools.py
13
+ ./fmtr/tools/datatype_tools.py
14
+ ./fmtr/tools/debugging_tools.py
15
+ ./fmtr/tools/dns_tools.py
16
+ ./fmtr/tools/docker_tools.py
17
+ ./fmtr/tools/environment_tools.py
18
+ ./fmtr/tools/function_tools.py
19
+ ./fmtr/tools/google_api_tools.py
20
+ ./fmtr/tools/hash_tools.py
21
+ ./fmtr/tools/hfh_tools.py
22
+ ./fmtr/tools/html_tools.py
23
+ ./fmtr/tools/http_tools.py
24
+ ./fmtr/tools/import_tools.py
25
+ ./fmtr/tools/inspection_tools.py
26
+ ./fmtr/tools/interface_tools.py
27
+ ./fmtr/tools/iterator_tools.py
28
+ ./fmtr/tools/json_fix_tools.py
29
+ ./fmtr/tools/json_tools.py
30
+ ./fmtr/tools/logging_tools.py
31
+ ./fmtr/tools/merging_tools.py
32
+ ./fmtr/tools/metric_tools.py
33
+ ./fmtr/tools/name_tools.py
34
+ ./fmtr/tools/netrc_tools.py
35
+ ./fmtr/tools/openai_tools.py
36
+ ./fmtr/tools/packaging_tools.py
37
+ ./fmtr/tools/parallel_tools.py
38
+ ./fmtr/tools/pattern_tools.py
39
+ ./fmtr/tools/pdf_tools.py
40
+ ./fmtr/tools/platform_tools.py
41
+ ./fmtr/tools/process_tools.py
42
+ ./fmtr/tools/profiling_tools.py
43
+ ./fmtr/tools/random_tools.py
44
+ ./fmtr/tools/semantic_tools.py
45
+ ./fmtr/tools/settings_tools.py
46
+ ./fmtr/tools/spaces_tools.py
47
+ ./fmtr/tools/string_tools.py
48
+ ./fmtr/tools/tabular_tools.py
49
+ ./fmtr/tools/tokenization_tools.py
50
+ ./fmtr/tools/tools.py
51
+ ./fmtr/tools/unicode_tools.py
52
+ ./fmtr/tools/version
53
+ ./fmtr/tools/version_tools.py
54
+ ./fmtr/tools/yaml_tools.py
55
+ ./fmtr/tools/ai_tools/__init__.py
56
+ ./fmtr/tools/ai_tools/agentic_tools.py
57
+ ./fmtr/tools/ai_tools/inference_tools.py
58
+ ./fmtr/tools/entrypoints/__init__.py
59
+ ./fmtr/tools/entrypoints/cache_hfh.py
60
+ ./fmtr/tools/entrypoints/ep_test.py
61
+ ./fmtr/tools/entrypoints/remote_debug_test.py
62
+ ./fmtr/tools/entrypoints/shell_debug.py
63
+ ./fmtr/tools/path_tools/__init__.py
64
+ ./fmtr/tools/path_tools/app_path_tools.py
65
+ ./fmtr/tools/path_tools/path_tools.py
66
+ ./fmtr/tools/path_tools/type_path_tools.py
67
+ ./fmtr/tools/setup_tools/__init__.py
68
+ ./fmtr/tools/setup_tools/setup_tools.py
69
+ ./fmtr/tools/tests/__init__.py
70
+ ./fmtr/tools/tests/conftest.py
71
+ ./fmtr/tools/tests/helpers.py
72
+ ./fmtr/tools/tests/test_datatype.py
73
+ ./fmtr/tools/tests/test_environment.py
74
+ ./fmtr/tools/tests/test_json.py
75
+ ./fmtr/tools/tests/test_path.py
76
+ ./fmtr/tools/tests/test_yaml.py
77
+ fmtr.tools.egg-info/PKG-INFO
78
+ fmtr.tools.egg-info/SOURCES.txt
79
+ fmtr.tools.egg-info/dependency_links.txt
80
+ fmtr.tools.egg-info/entry_points.txt
81
+ fmtr.tools.egg-info/requires.txt
82
+ fmtr.tools.egg-info/top_level.txt
83
+ fmtr/tools/__init__.py
84
+ fmtr/tools/api_tools.py
85
+ fmtr/tools/async_tools.py
86
+ fmtr/tools/augmentation_tools.py
87
+ fmtr/tools/caching_tools.py
88
+ fmtr/tools/constants.py
89
+ fmtr/tools/data_modelling_tools.py
90
+ fmtr/tools/dataclass_tools.py
91
+ fmtr/tools/datatype_tools.py
92
+ fmtr/tools/debugging_tools.py
93
+ fmtr/tools/dns_tools.py
94
+ fmtr/tools/docker_tools.py
95
+ fmtr/tools/environment_tools.py
96
+ fmtr/tools/function_tools.py
97
+ fmtr/tools/google_api_tools.py
98
+ fmtr/tools/hash_tools.py
99
+ fmtr/tools/hfh_tools.py
100
+ fmtr/tools/html_tools.py
101
+ fmtr/tools/http_tools.py
102
+ fmtr/tools/import_tools.py
103
+ fmtr/tools/inspection_tools.py
104
+ fmtr/tools/interface_tools.py
105
+ fmtr/tools/iterator_tools.py
106
+ fmtr/tools/json_fix_tools.py
107
+ fmtr/tools/json_tools.py
108
+ fmtr/tools/logging_tools.py
109
+ fmtr/tools/merging_tools.py
110
+ fmtr/tools/metric_tools.py
111
+ fmtr/tools/name_tools.py
112
+ fmtr/tools/netrc_tools.py
113
+ fmtr/tools/openai_tools.py
114
+ fmtr/tools/packaging_tools.py
115
+ fmtr/tools/parallel_tools.py
116
+ fmtr/tools/pattern_tools.py
117
+ fmtr/tools/pdf_tools.py
118
+ fmtr/tools/platform_tools.py
119
+ fmtr/tools/process_tools.py
120
+ fmtr/tools/profiling_tools.py
121
+ fmtr/tools/random_tools.py
122
+ fmtr/tools/semantic_tools.py
123
+ fmtr/tools/settings_tools.py
124
+ fmtr/tools/spaces_tools.py
125
+ fmtr/tools/string_tools.py
126
+ fmtr/tools/tabular_tools.py
127
+ fmtr/tools/tokenization_tools.py
128
+ fmtr/tools/tools.py
129
+ fmtr/tools/unicode_tools.py
130
+ fmtr/tools/version
131
+ fmtr/tools/version_tools.py
132
+ fmtr/tools/yaml_tools.py
133
+ fmtr/tools/ai_tools/__init__.py
134
+ fmtr/tools/ai_tools/agentic_tools.py
135
+ fmtr/tools/ai_tools/inference_tools.py
136
+ fmtr/tools/entrypoints/__init__.py
137
+ fmtr/tools/entrypoints/cache_hfh.py
138
+ fmtr/tools/entrypoints/ep_test.py
139
+ fmtr/tools/entrypoints/remote_debug_test.py
140
+ fmtr/tools/entrypoints/shell_debug.py
141
+ fmtr/tools/path_tools/__init__.py
142
+ fmtr/tools/path_tools/app_path_tools.py
143
+ fmtr/tools/path_tools/path_tools.py
144
+ fmtr/tools/path_tools/type_path_tools.py
145
+ fmtr/tools/setup_tools/__init__.py
146
+ fmtr/tools/setup_tools/setup_tools.py
147
+ fmtr/tools/tests/__init__.py
148
+ fmtr/tools/tests/conftest.py
149
+ fmtr/tools/tests/helpers.py
150
+ fmtr/tools/tests/test_datatype.py
151
+ fmtr/tools/tests/test_environment.py
152
+ fmtr/tools/tests/test_json.py
153
+ fmtr/tools/tests/test_path.py
154
+ fmtr/tools/tests/test_yaml.py
@@ -0,0 +1,5 @@
1
+ [console_scripts]
2
+ fmtr-tools-cache-hfh = fmtr.tools.entrypoints.cache_hfh:main
3
+ fmtr-tools-ep-test = fmtr.tools.entrypoints.ep_test:main
4
+ fmtr-tools-remote-debug-test = fmtr.tools.entrypoints.remote_debug_test:main
5
+ fmtr-tools-shell-debug = fmtr.tools.entrypoints.shell_debug:main
@@ -14,6 +14,62 @@ openai
14
14
  pydantic-ai[logfire,openai]
15
15
  ollama
16
16
 
17
+ [all]
18
+ docker
19
+ huggingface_hub
20
+ filetype
21
+ httpx
22
+ torchvision
23
+ fastapi
24
+ google-auth-oauthlib
25
+ tinynetrc
26
+ html2text
27
+ distributed
28
+ faker
29
+ openpyxl
30
+ pyyaml
31
+ transformers[sentencepiece]
32
+ flet-video
33
+ flet[all]
34
+ logfire[fastapi]
35
+ ollama
36
+ Unidecode
37
+ google-api-python-client
38
+ diskcache
39
+ pymupdf
40
+ torchaudio
41
+ setuptools
42
+ pytest-cov
43
+ google-auth-httplib2
44
+ semver
45
+ yamlscript
46
+ uvicorn[standard]
47
+ pydantic-settings
48
+ flet-webview
49
+ tokenizers
50
+ openai
51
+ dnspython[doh]
52
+ bokeh
53
+ contexttimer
54
+ appdirs
55
+ dask[bag]
56
+ pydevd-pycharm
57
+ sentence_transformers
58
+ pymupdf4llm
59
+ pandas
60
+ pydantic-ai[logfire,openai]
61
+ regex
62
+ logfire[httpx]
63
+ pydantic
64
+ peft
65
+ google-auth
66
+ httpx_retries
67
+ tabulate
68
+ json_repair
69
+ sre_yield
70
+ deepmerge
71
+ logfire
72
+
17
73
  [api]
18
74
  fastapi
19
75
  uvicorn[standard]
@@ -135,60 +191,7 @@ tabulate
135
191
  openpyxl
136
192
 
137
193
  [test]
138
- pydantic-ai[logfire,openai]
139
- distributed
140
- torchvision
141
- openpyxl
142
- pyyaml
143
- pydantic
144
- filetype
145
- yamlscript
146
- dask[bag]
147
- dnspython[doh]
148
- tabulate
149
- appdirs
150
- logfire
151
- pymupdf4llm
152
- peft
153
- faker
154
- huggingface_hub
155
- pandas
156
- sentence_transformers
157
- contexttimer
158
- fastapi
159
- torchaudio
160
- ollama
161
- diskcache
162
- httpx
163
- deepmerge
164
- pymupdf
165
- transformers[sentencepiece]
166
- pydevd-pycharm
167
194
  pytest-cov
168
- google-api-python-client
169
- sre_yield
170
- pydantic-settings
171
- setuptools
172
- json_repair
173
- google-auth-oauthlib
174
- regex
175
- docker
176
- tinynetrc
177
- html2text
178
- flet[all]
179
- semver
180
- tokenizers
181
- bokeh
182
- openai
183
- uvicorn[standard]
184
- flet-video
185
- logfire[fastapi]
186
- Unidecode
187
- google-auth-httplib2
188
- logfire[httpx]
189
- google-auth
190
- httpx_retries
191
- flet-webview
192
195
 
193
196
  [tokenization]
194
197
  tokenizers
@@ -0,0 +1,3 @@
1
+ [build-system]
2
+ requires = ["fmtr.tools[setup]==1.2.0"]
3
+ build-backend = "setuptools.build_meta"
@@ -0,0 +1,49 @@
1
+ from fmtr.tools import Setup
2
+
3
+ DEPENDENCIES = {
4
+ 'install': [],
5
+ 'test': ['pytest-cov'],
6
+ 'yaml': ['yamlscript', 'pyyaml'],
7
+ 'logging': ['logfire', 'version'],
8
+ 'parallel': ['dask[bag]', 'distributed', 'bokeh'],
9
+ 'tokenization': ['tokenizers'],
10
+ 'augmentation': ['faker', 'sre_yield'],
11
+ 'process': ['logging'],
12
+ 'profiling': ['contexttimer'],
13
+ 'docker.api': ['docker'],
14
+ 'unicode': ['Unidecode'],
15
+ 'version': ['semver'],
16
+ 'spaces': ['netrc'],
17
+ 'netrc': ['tinynetrc'],
18
+ 'hfh': ['huggingface_hub'],
19
+ 'merging': ['deepmerge'],
20
+ 'api': ['fastapi', 'uvicorn[standard]', 'logging', 'dm', 'logfire[fastapi]'],
21
+ 'ai': ['peft', 'transformers[sentencepiece]', 'torchvision', 'torchaudio', 'dm'],
22
+ 'dm': ['pydantic'],
23
+ 'openai.api': ['openai'],
24
+ 'ai.client': ['logging', 'dm', 'openai.api', 'pydantic-ai[logfire,openai]', 'ollama'],
25
+ 'json-fix': ['json_repair'],
26
+ 'semantic': ['sentence_transformers', 'metric'],
27
+ 'metric': ['tabular'],
28
+ 'tabular': ['pandas', 'tabulate', 'openpyxl'],
29
+ 'html': ['html2text'],
30
+ 'interface': ['flet[all]', 'flet-video', 'flet-webview', 'dm'],
31
+ 'google.api': ['google-auth', 'google-auth-oauthlib', 'google-auth-httplib2', 'google-api-python-client'],
32
+ 'caching': ['diskcache'],
33
+ 'pdf': ['pymupdf', 'dm', 'pymupdf4llm'],
34
+ 'debug': ['pydevd-pycharm'],
35
+ 'sets': ['pydantic-settings', 'dm'],
36
+ 'path.app': ['appdirs'],
37
+ 'path.type': ['filetype'],
38
+ 'dns': ['dnspython[doh]'],
39
+ 'patterns': ['regex'],
40
+ 'http': ['httpx', 'httpx_retries', 'logging', 'logfire[httpx]'],
41
+ 'setup': ['setuptools']
42
+ }
43
+
44
+ setup = Setup(
45
+ dependencies=DEPENDENCIES,
46
+ description='Collection of high-level tools to simplify everyday development tasks, with a focus on AI/ML',
47
+ )
48
+
49
+ setup
@@ -1,23 +0,0 @@
1
- def cache_hfh():
2
- from fmtr import tools
3
- tools.hfh.main()
4
-
5
-
6
- def remote_debug_test():
7
- """
8
-
9
- Test debugger connection
10
-
11
- """
12
- from fmtr.tools import debug
13
- debug.trace(is_debug=True)
14
-
15
-
16
- def shell_debug():
17
- """
18
-
19
- Test debugger connection
20
-
21
- """
22
- from fmtr.tools import debug
23
- debug.debug_shell()
@@ -1 +0,0 @@
1
- 1.1.30
@@ -1,77 +0,0 @@
1
- LICENSE
2
- README.md
3
- setup.py
4
- ./fmtr/tools/__init__.py
5
- ./fmtr/tools/api_tools.py
6
- ./fmtr/tools/async_tools.py
7
- ./fmtr/tools/augmentation_tools.py
8
- ./fmtr/tools/caching_tools.py
9
- ./fmtr/tools/console_script_tools.py
10
- ./fmtr/tools/constants.py
11
- ./fmtr/tools/data_modelling_tools.py
12
- ./fmtr/tools/dataclass_tools.py
13
- ./fmtr/tools/datatype_tools.py
14
- ./fmtr/tools/debugging_tools.py
15
- ./fmtr/tools/dns_tools.py
16
- ./fmtr/tools/docker_tools.py
17
- ./fmtr/tools/environment_tools.py
18
- ./fmtr/tools/function_tools.py
19
- ./fmtr/tools/google_api_tools.py
20
- ./fmtr/tools/hash_tools.py
21
- ./fmtr/tools/hfh_tools.py
22
- ./fmtr/tools/html_tools.py
23
- ./fmtr/tools/http_tools.py
24
- ./fmtr/tools/import_tools.py
25
- ./fmtr/tools/inspection_tools.py
26
- ./fmtr/tools/interface_tools.py
27
- ./fmtr/tools/iterator_tools.py
28
- ./fmtr/tools/json_fix_tools.py
29
- ./fmtr/tools/json_tools.py
30
- ./fmtr/tools/logging_tools.py
31
- ./fmtr/tools/merging_tools.py
32
- ./fmtr/tools/metric_tools.py
33
- ./fmtr/tools/name_tools.py
34
- ./fmtr/tools/netrc_tools.py
35
- ./fmtr/tools/openai_tools.py
36
- ./fmtr/tools/packaging_tools.py
37
- ./fmtr/tools/parallel_tools.py
38
- ./fmtr/tools/pattern_tools.py
39
- ./fmtr/tools/pdf_tools.py
40
- ./fmtr/tools/platform_tools.py
41
- ./fmtr/tools/process_tools.py
42
- ./fmtr/tools/profiling_tools.py
43
- ./fmtr/tools/random_tools.py
44
- ./fmtr/tools/semantic_tools.py
45
- ./fmtr/tools/settings_tools.py
46
- ./fmtr/tools/spaces_tools.py
47
- ./fmtr/tools/string_tools.py
48
- ./fmtr/tools/tabular_tools.py
49
- ./fmtr/tools/tokenization_tools.py
50
- ./fmtr/tools/tools.py
51
- ./fmtr/tools/unicode_tools.py
52
- ./fmtr/tools/version
53
- ./fmtr/tools/version_tools.py
54
- ./fmtr/tools/yaml_tools.py
55
- ./fmtr/tools/ai_tools/__init__.py
56
- ./fmtr/tools/ai_tools/agentic_tools.py
57
- ./fmtr/tools/ai_tools/inference_tools.py
58
- ./fmtr/tools/path_tools/__init__.py
59
- ./fmtr/tools/path_tools/app_path_tools.py
60
- ./fmtr/tools/path_tools/path_tools.py
61
- ./fmtr/tools/path_tools/type_path_tools.py
62
- ./fmtr/tools/setup_tools/__init__.py
63
- ./fmtr/tools/setup_tools/setup_tools.py
64
- ./fmtr/tools/tests/__init__.py
65
- ./fmtr/tools/tests/conftest.py
66
- ./fmtr/tools/tests/helpers.py
67
- ./fmtr/tools/tests/test_datatype.py
68
- ./fmtr/tools/tests/test_environment.py
69
- ./fmtr/tools/tests/test_json.py
70
- ./fmtr/tools/tests/test_path.py
71
- ./fmtr/tools/tests/test_yaml.py
72
- fmtr.tools.egg-info/PKG-INFO
73
- fmtr.tools.egg-info/SOURCES.txt
74
- fmtr.tools.egg-info/dependency_links.txt
75
- fmtr.tools.egg-info/entry_points.txt
76
- fmtr.tools.egg-info/requires.txt
77
- fmtr.tools.egg-info/top_level.txt
@@ -1,4 +0,0 @@
1
- [console_scripts]
2
- cache-hfh = fmtr.tools.console_script_tools:cache_hfh
3
- fmtr-shell-debug = fmtr.tools.console_script_tools:shell_debug
4
- remote-debug-test = fmtr.tools.console_script_tools:remote_debug_test
@@ -1,50 +0,0 @@
1
- from datetime import datetime
2
- from pathlib import Path
3
- from setuptools import find_namespace_packages, setup, find_packages
4
-
5
- import requirements
6
-
7
- ORG, PACKAGE = 'fmtr', 'tools'
8
- ORG_GITHUB = ORG
9
- AUTHOR = 'Frontmatter'
10
- AUTHOR_EMAIL = 'innovative.fowler@mask.pro.fmtr.dev'
11
- DESCRIPTION = 'Collection of high-level tools to simplify everyday development tasks, with a focus on AI/ML'
12
-
13
- PATH_BASE = Path(__file__).absolute().parent
14
- IS_SINGLETON = (PATH_BASE / PACKAGE).exists()
15
- VERSION = 'version'
16
-
17
- if IS_SINGLETON:
18
- packages = find_packages()
19
- package_dir = None
20
- name = PACKAGE
21
- path_ver = PATH_BASE / name / VERSION
22
- else:
23
- packages = find_namespace_packages()
24
- package_dir = {'': '.'}
25
- name = f'{ORG}.{PACKAGE}'
26
- path_ver = PATH_BASE / ORG / PACKAGE / VERSION
27
-
28
- __version__ = path_ver.read_text().strip()
29
-
30
- setup(
31
- name=name,
32
- version=__version__,
33
- url=f'https://github.com/{ORG_GITHUB}/{name}',
34
- author=AUTHOR,
35
- license=f'Copyright © {datetime.now().year} {AUTHOR}. All rights reserved.',
36
- author_email=AUTHOR_EMAIL,
37
- description=DESCRIPTION,
38
- long_description=(PATH_BASE / 'README.md').read_text(),
39
- long_description_content_type='text/markdown',
40
- packages=packages,
41
- package_dir=package_dir,
42
- package_data={
43
- name: [VERSION],
44
- },
45
- entry_points={
46
- 'console_scripts': requirements.CONSOLE_SCRIPTS,
47
- },
48
- install_requires=requirements.INSTALL,
49
- extras_require=requirements.EXTRAS,
50
- )
File without changes
File without changes
File without changes