mayutils 1.2.52__tar.gz → 3.0.0__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.
Files changed (215) hide show
  1. mayutils-3.0.0/PKG-INFO +218 -0
  2. mayutils-3.0.0/README.md +67 -0
  3. mayutils-3.0.0/pyproject.toml +258 -0
  4. mayutils-3.0.0/src/mayutils/__init__.py +86 -0
  5. mayutils-3.0.0/src/mayutils/core/__init__.py +27 -0
  6. mayutils-3.0.0/src/mayutils/core/constants.py +26 -0
  7. mayutils-3.0.0/src/mayutils/core/extras.py +593 -0
  8. mayutils-3.0.0/src/mayutils/data/__init__.py +33 -0
  9. mayutils-3.0.0/src/mayutils/data/live.py +1068 -0
  10. mayutils-3.0.0/src/mayutils/data/queries/__init__.py +334 -0
  11. mayutils-3.0.0/src/mayutils/data/queries/templating.py +223 -0
  12. mayutils-3.0.0/src/mayutils/data/read.py +887 -0
  13. mayutils-3.0.0/src/mayutils/environment/__init__.py +36 -0
  14. mayutils-3.0.0/src/mayutils/environment/benchmarking.py +178 -0
  15. mayutils-3.0.0/src/mayutils/environment/databases.py +901 -0
  16. mayutils-3.0.0/src/mayutils/environment/filesystem/__init__.py +60 -0
  17. mayutils-3.0.0/src/mayutils/environment/filesystem/encoding.py +139 -0
  18. mayutils-3.0.0/src/mayutils/environment/filesystem/metadata.py +115 -0
  19. mayutils-3.0.0/src/mayutils/environment/filesystem/reading.py +101 -0
  20. mayutils-3.0.0/src/mayutils/environment/filesystem/roots.py +199 -0
  21. mayutils-3.0.0/src/mayutils/environment/logging.py +1218 -0
  22. mayutils-3.0.0/src/mayutils/environment/memoisation/__init__.py +60 -0
  23. mayutils-3.0.0/src/mayutils/environment/memoisation/clearing.py +210 -0
  24. mayutils-3.0.0/src/mayutils/environment/memoisation/decorators.py +965 -0
  25. mayutils-3.0.0/src/mayutils/environment/memoisation/decorators.pyi +72 -0
  26. mayutils-3.0.0/src/mayutils/environment/memoisation/files.py +1244 -0
  27. mayutils-3.0.0/src/mayutils/environment/memoisation/memory.py +388 -0
  28. mayutils-3.0.0/src/mayutils/environment/memoisation/types.py +234 -0
  29. mayutils-3.0.0/src/mayutils/environment/memoisation/utilities.py +219 -0
  30. mayutils-3.0.0/src/mayutils/environment/oauth.py +934 -0
  31. mayutils-3.0.0/src/mayutils/environment/secrets.py +98 -0
  32. mayutils-3.0.0/src/mayutils/environment/webdrivers.py +137 -0
  33. mayutils-3.0.0/src/mayutils/export/__init__.py +42 -0
  34. mayutils-3.0.0/src/mayutils/export/html.py +321 -0
  35. mayutils-3.0.0/src/mayutils/export/images.py +38 -0
  36. mayutils-3.0.0/src/mayutils/export/nbconvert.py +437 -0
  37. mayutils-3.0.0/src/mayutils/export/quarto.py +592 -0
  38. mayutils-3.0.0/src/mayutils/interfaces/__init__.py +30 -0
  39. mayutils-3.0.0/src/mayutils/interfaces/cloud/__init__.py +30 -0
  40. mayutils-3.0.0/src/mayutils/interfaces/cloud/google.py +957 -0
  41. mayutils-3.0.0/src/mayutils/interfaces/code/__init__.py +25 -0
  42. mayutils-3.0.0/src/mayutils/interfaces/code/notebooks/__init__.py +27 -0
  43. mayutils-3.0.0/src/mayutils/interfaces/code/notebooks/jupyter.py +596 -0
  44. mayutils-3.0.0/src/mayutils/interfaces/code/tui/__init__.py +1 -0
  45. mayutils-3.0.0/src/mayutils/interfaces/code/tui/textual.py +575 -0
  46. mayutils-3.0.0/src/mayutils/interfaces/code/tui/tuiplot.py +1401 -0
  47. mayutils-3.0.0/src/mayutils/interfaces/data/__init__.py +233 -0
  48. mayutils-3.0.0/src/mayutils/interfaces/data/snowflake/__init__.py +1972 -0
  49. mayutils-3.0.0/src/mayutils/interfaces/filetypes/__init__.py +1292 -0
  50. mayutils-3.0.0/src/mayutils/interfaces/filetypes/csv/__init__.py +477 -0
  51. mayutils-3.0.0/src/mayutils/interfaces/filetypes/docs/__init__.py +31 -0
  52. mayutils-3.0.0/src/mayutils/interfaces/filetypes/docx/__init__.py +61 -0
  53. mayutils-3.0.0/src/mayutils/interfaces/filetypes/feather/__init__.py +419 -0
  54. mayutils-3.0.0/src/mayutils/interfaces/filetypes/markdown/__init__.py +506 -0
  55. mayutils-3.0.0/src/mayutils/interfaces/filetypes/parquet/__init__.py +410 -0
  56. mayutils-3.0.0/src/mayutils/interfaces/filetypes/pdf/__init__.py +305 -0
  57. mayutils-3.0.0/src/mayutils/interfaces/filetypes/pptx/__init__.py +2610 -0
  58. mayutils-3.0.0/src/mayutils/interfaces/filetypes/pptx/markdown.py +1502 -0
  59. mayutils-3.0.0/src/mayutils/interfaces/filetypes/pptx/units.py +272 -0
  60. mayutils-3.0.0/src/mayutils/interfaces/filetypes/sheets/__init__.py +3041 -0
  61. mayutils-3.0.0/src/mayutils/interfaces/filetypes/slides/__init__.py +2150 -0
  62. mayutils-3.0.0/src/mayutils/interfaces/filetypes/tex/__init__.py +90 -0
  63. mayutils-3.0.0/src/mayutils/interfaces/filetypes/xlsx/__init__.py +1214 -0
  64. mayutils-3.0.0/src/mayutils/interfaces/websites/__init__.py +24 -0
  65. mayutils-3.0.0/src/mayutils/interfaces/websites/streamlit/__init__.py +1087 -0
  66. mayutils-3.0.0/src/mayutils/interfaces/websites/streamlit/views/__init__.py +32 -0
  67. mayutils-3.0.0/src/mayutils/interfaces/websites/streamlit/views/forbidden.py +36 -0
  68. mayutils-3.0.0/src/mayutils/interfaces/websites/streamlit/views/login.py +37 -0
  69. mayutils-3.0.0/src/mayutils/mathematics/__init__.py +27 -0
  70. mayutils-3.0.0/src/mayutils/mathematics/analytics/__init__.py +25 -0
  71. mayutils-3.0.0/src/mayutils/mathematics/analytics/attribution.py +635 -0
  72. mayutils-3.0.0/src/mayutils/mathematics/machine_learning/__init__.py +27 -0
  73. mayutils-3.0.0/src/mayutils/mathematics/numba.py +556 -0
  74. mayutils-3.0.0/src/mayutils/mathematics/numpy.py +26 -0
  75. mayutils-3.0.0/src/mayutils/mathematics/statistics/__init__.py +26 -0
  76. mayutils-3.0.0/src/mayutils/objects/__init__.py +36 -0
  77. mayutils-3.0.0/src/mayutils/objects/classes.py +641 -0
  78. mayutils-3.0.0/src/mayutils/objects/colours.py +1129 -0
  79. mayutils-3.0.0/src/mayutils/objects/dataframes/__init__.py +97 -0
  80. mayutils-3.0.0/src/mayutils/objects/dataframes/backends.py +515 -0
  81. mayutils-3.0.0/src/mayutils/objects/dataframes/dask/__init__.py +32 -0
  82. mayutils-3.0.0/src/mayutils/objects/dataframes/modin/__init__.py +28 -0
  83. mayutils-3.0.0/src/mayutils/objects/dataframes/pandas/__init__.py +57 -0
  84. mayutils-3.0.0/src/mayutils/objects/dataframes/pandas/dataframes.py +1087 -0
  85. mayutils-3.0.0/src/mayutils/objects/dataframes/pandas/index.py +180 -0
  86. mayutils-3.0.0/src/mayutils/objects/dataframes/pandas/series.py +302 -0
  87. mayutils-3.0.0/src/mayutils/objects/dataframes/pandas/stylers.py +765 -0
  88. mayutils-3.0.0/src/mayutils/objects/dataframes/polars/__init__.py +34 -0
  89. mayutils-3.0.0/src/mayutils/objects/dataframes/polars/dataframes.py +126 -0
  90. mayutils-3.0.0/src/mayutils/objects/dataframes/pyarrow/__init__.py +33 -0
  91. mayutils-3.0.0/src/mayutils/objects/dataframes/snowflake/__init__.py +30 -0
  92. mayutils-3.0.0/src/mayutils/objects/dataframes/temporal.py +246 -0
  93. mayutils-3.0.0/src/mayutils/objects/datetime/__init__.py +151 -0
  94. mayutils-3.0.0/src/mayutils/objects/datetime/constants.py +164 -0
  95. mayutils-3.0.0/src/mayutils/objects/datetime/datetime.py +1779 -0
  96. mayutils-3.0.0/src/mayutils/objects/datetime/interval.py +1235 -0
  97. mayutils-3.0.0/src/mayutils/objects/datetime/timezone.py +487 -0
  98. mayutils-3.0.0/src/mayutils/objects/datetime/traveller.py +169 -0
  99. mayutils-3.0.0/src/mayutils/objects/decorators.py +610 -0
  100. mayutils-3.0.0/src/mayutils/objects/dictionaries.py +125 -0
  101. mayutils-3.0.0/src/mayutils/objects/functions.py +208 -0
  102. mayutils-3.0.0/src/mayutils/objects/hashing.py +179 -0
  103. mayutils-3.0.0/src/mayutils/objects/numbers.py +203 -0
  104. mayutils-3.0.0/src/mayutils/objects/paths.py +140 -0
  105. mayutils-3.0.0/src/mayutils/objects/strings.py +576 -0
  106. mayutils-3.0.0/src/mayutils/objects/types.py +207 -0
  107. mayutils-3.0.0/src/mayutils/objects/versions.py +123 -0
  108. mayutils-3.0.0/src/mayutils/scripts/__init__.py +33 -0
  109. mayutils-3.0.0/src/mayutils/scripts/clear_cache.py +117 -0
  110. mayutils-3.0.0/src/mayutils/scripts/generate_plotly_stubs.py +2747 -0
  111. mayutils-3.0.0/src/mayutils/scripts/refresh_stubs.py +1171 -0
  112. mayutils-3.0.0/src/mayutils/testing/__init__.py +30 -0
  113. mayutils-3.0.0/src/mayutils/visualisation/__init__.py +33 -0
  114. mayutils-3.0.0/src/mayutils/visualisation/console.py +648 -0
  115. mayutils-3.0.0/src/mayutils/visualisation/graphs/__init__.py +31 -0
  116. mayutils-3.0.0/src/mayutils/visualisation/graphs/combine.py +189 -0
  117. mayutils-3.0.0/src/mayutils/visualisation/graphs/matplotlib/__init__.py +30 -0
  118. mayutils-3.0.0/src/mayutils/visualisation/graphs/matplotlib/templates.py +33 -0
  119. mayutils-3.0.0/src/mayutils/visualisation/graphs/plotly/__init__.py +148 -0
  120. mayutils-3.0.0/src/mayutils/visualisation/graphs/plotly/charts/__init__.py +1039 -0
  121. mayutils-3.0.0/src/mayutils/visualisation/graphs/plotly/charts/plot.py +2252 -0
  122. mayutils-3.0.0/src/mayutils/visualisation/graphs/plotly/charts/plot.pyi +3646 -0
  123. mayutils-3.0.0/src/mayutils/visualisation/graphs/plotly/charts/subplot.py +447 -0
  124. mayutils-3.0.0/src/mayutils/visualisation/graphs/plotly/charts/subplot.pyi +3484 -0
  125. mayutils-3.0.0/src/mayutils/visualisation/graphs/plotly/templates.py +857 -0
  126. mayutils-3.0.0/src/mayutils/visualisation/graphs/plotly/traces/__init__.py +91 -0
  127. mayutils-3.0.0/src/mayutils/visualisation/graphs/plotly/traces/ecdf.py +154 -0
  128. mayutils-3.0.0/src/mayutils/visualisation/graphs/plotly/traces/ecdf.pyi +353 -0
  129. mayutils-3.0.0/src/mayutils/visualisation/graphs/plotly/traces/icicle.py +209 -0
  130. mayutils-3.0.0/src/mayutils/visualisation/graphs/plotly/traces/icicle.pyi +50 -0
  131. mayutils-3.0.0/src/mayutils/visualisation/graphs/plotly/traces/kde.py +88 -0
  132. mayutils-3.0.0/src/mayutils/visualisation/graphs/plotly/traces/kde.pyi +352 -0
  133. mayutils-3.0.0/src/mayutils/visualisation/graphs/plotly/traces/line.py +352 -0
  134. mayutils-3.0.0/src/mayutils/visualisation/graphs/plotly/traces/line.pyi +360 -0
  135. mayutils-3.0.0/src/mayutils/visualisation/graphs/plotly/traces/mesh3d.py +483 -0
  136. mayutils-3.0.0/src/mayutils/visualisation/graphs/plotly/traces/mesh3d.pyi +82 -0
  137. mayutils-3.0.0/src/mayutils/visualisation/graphs/plotly/traces/null.py +92 -0
  138. mayutils-3.0.0/src/mayutils/visualisation/graphs/plotly/traces/null.pyi +103 -0
  139. mayutils-3.0.0/src/mayutils/visualisation/graphs/plotly/traces/scatter.py +89 -0
  140. mayutils-3.0.0/src/mayutils/visualisation/graphs/plotly/traces/scatter.pyi +104 -0
  141. mayutils-3.0.0/src/mayutils/visualisation/graphs/plotly/traces/types.py +46 -0
  142. mayutils-3.0.0/src/mayutils/visualisation/graphs/plotly/traces/utilities.py +53 -0
  143. mayutils-3.0.0/src/mayutils/visualisation/graphs/plotly/utilities.py +170 -0
  144. mayutils-3.0.0/src/mayutils/visualisation/notebook.py +358 -0
  145. mayutils-1.2.52/PKG-INFO +0 -109
  146. mayutils-1.2.52/README.md +0 -3
  147. mayutils-1.2.52/pyproject.toml +0 -125
  148. mayutils-1.2.52/src/mayutils/__init__.py +0 -32
  149. mayutils-1.2.52/src/mayutils/core/constants.py +0 -3
  150. mayutils-1.2.52/src/mayutils/data/__init__.py +0 -6
  151. mayutils-1.2.52/src/mayutils/data/analysis/__init__.py +0 -0
  152. mayutils-1.2.52/src/mayutils/data/live.py +0 -176
  153. mayutils-1.2.52/src/mayutils/data/local.py +0 -53
  154. mayutils-1.2.52/src/mayutils/data/queries/__init__.py +0 -65
  155. mayutils-1.2.52/src/mayutils/data/queries/examples/.gitkeep +0 -0
  156. mayutils-1.2.52/src/mayutils/data/read.py +0 -107
  157. mayutils-1.2.52/src/mayutils/environment/__init__.py +0 -0
  158. mayutils-1.2.52/src/mayutils/environment/benchmarking.py +0 -43
  159. mayutils-1.2.52/src/mayutils/environment/databases.py +0 -60
  160. mayutils-1.2.52/src/mayutils/environment/filesystem.py +0 -65
  161. mayutils-1.2.52/src/mayutils/environment/logging.py +0 -255
  162. mayutils-1.2.52/src/mayutils/environment/memoisation.py +0 -227
  163. mayutils-1.2.52/src/mayutils/environment/oauth.py +0 -267
  164. mayutils-1.2.52/src/mayutils/environment/secrets.py +0 -12
  165. mayutils-1.2.52/src/mayutils/environment/webdrivers.py +0 -15
  166. mayutils-1.2.52/src/mayutils/export/__init__.py +0 -4
  167. mayutils-1.2.52/src/mayutils/export/html.py +0 -63
  168. mayutils-1.2.52/src/mayutils/export/images.py +0 -4
  169. mayutils-1.2.52/src/mayutils/export/pdf.py +0 -33
  170. mayutils-1.2.52/src/mayutils/export/slides.py +0 -90
  171. mayutils-1.2.52/src/mayutils/interfaces/__init__.py +0 -0
  172. mayutils-1.2.52/src/mayutils/interfaces/google.py +0 -1561
  173. mayutils-1.2.52/src/mayutils/interfaces/markdown.py +0 -227
  174. mayutils-1.2.52/src/mayutils/interfaces/microsoft/__init__.py +0 -1
  175. mayutils-1.2.52/src/mayutils/interfaces/microsoft/powerpoint/__init__.py +0 -444
  176. mayutils-1.2.52/src/mayutils/interfaces/microsoft/powerpoint/markdown.py +0 -821
  177. mayutils-1.2.52/src/mayutils/interfaces/microsoft.py +0 -0
  178. mayutils-1.2.52/src/mayutils/interfaces/pdf.py +0 -42
  179. mayutils-1.2.52/src/mayutils/interfaces/streamlit.py +0 -35
  180. mayutils-1.2.52/src/mayutils/mathematics/__init__.py +0 -15
  181. mayutils-1.2.52/src/mayutils/mathematics/numba.py +0 -71
  182. mayutils-1.2.52/src/mayutils/mathematics/numpy.py +0 -0
  183. mayutils-1.2.52/src/mayutils/objects/__init__.py +0 -0
  184. mayutils-1.2.52/src/mayutils/objects/classes.py +0 -107
  185. mayutils-1.2.52/src/mayutils/objects/colours.py +0 -355
  186. mayutils-1.2.52/src/mayutils/objects/dataframes.py +0 -660
  187. mayutils-1.2.52/src/mayutils/objects/datetime.py +0 -737
  188. mayutils-1.2.52/src/mayutils/objects/decorators.py +0 -47
  189. mayutils-1.2.52/src/mayutils/objects/dictionaries.py +0 -0
  190. mayutils-1.2.52/src/mayutils/objects/functions.py +0 -18
  191. mayutils-1.2.52/src/mayutils/objects/hashing.py +0 -30
  192. mayutils-1.2.52/src/mayutils/objects/numbers.py +0 -59
  193. mayutils-1.2.52/src/mayutils/objects/strings.py +0 -61
  194. mayutils-1.2.52/src/mayutils/objects/types.py +0 -12
  195. mayutils-1.2.52/src/mayutils/scripts/__init__.py +0 -0
  196. mayutils-1.2.52/src/mayutils/scripts/clear_cache.py +0 -180
  197. mayutils-1.2.52/src/mayutils/scripts/versioning.py +0 -152
  198. mayutils-1.2.52/src/mayutils/testing/__init__.py +0 -0
  199. mayutils-1.2.52/src/mayutils/visualisation/__init__.py +0 -0
  200. mayutils-1.2.52/src/mayutils/visualisation/console.py +0 -41
  201. mayutils-1.2.52/src/mayutils/visualisation/graphs/__init__.py +0 -3
  202. mayutils-1.2.52/src/mayutils/visualisation/graphs/combine.py +0 -51
  203. mayutils-1.2.52/src/mayutils/visualisation/graphs/matplotlib/__init__.py +0 -0
  204. mayutils-1.2.52/src/mayutils/visualisation/graphs/matplotlib/template.py +0 -0
  205. mayutils-1.2.52/src/mayutils/visualisation/graphs/plotly/__init__.py +0 -0
  206. mayutils-1.2.52/src/mayutils/visualisation/graphs/plotly/charts.py +0 -1836
  207. mayutils-1.2.52/src/mayutils/visualisation/graphs/plotly/templates.py +0 -464
  208. mayutils-1.2.52/src/mayutils/visualisation/graphs/plotly/traces.py +0 -555
  209. mayutils-1.2.52/src/mayutils/visualisation/graphs/plotly/utilities.py +0 -56
  210. mayutils-1.2.52/src/mayutils/visualisation/notebook.py +0 -115
  211. {mayutils-1.2.52 → mayutils-3.0.0}/LICENSE +0 -0
  212. {mayutils-1.2.52 → mayutils-3.0.0}/src/mayutils/data/cache/.gitkeep +0 -0
  213. /mayutils-1.2.52/src/mayutils/core/__init__.py → /mayutils-3.0.0/src/mayutils/interfaces/websites/streamlit/css/default.css +0 -0
  214. {mayutils-1.2.52/src/mayutils/data/queries → mayutils-3.0.0/src/mayutils/interfaces/websites/streamlit/images}/.gitkeep +0 -0
  215. {mayutils-1.2.52 → mayutils-3.0.0}/src/mayutils/py.typed +0 -0
@@ -0,0 +1,218 @@
1
+ Metadata-Version: 2.3
2
+ Name: mayutils
3
+ Version: 3.0.0
4
+ Summary: Utilities for Python from Mayuran Visakan
5
+ Author: Mayuran Visakan
6
+ Author-email: Mayuran Visakan <mayuran.k.v@gmail.com>
7
+ License: MIT License
8
+
9
+ Copyright (c) 2025 Mayuran Visakan
10
+
11
+ Permission is hereby granted, free of charge, to any person obtaining a copy
12
+ of this software and associated documentation files (the "Software"), to deal
13
+ in the Software without restriction, including without limitation the rights
14
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
15
+ copies of the Software, and to permit persons to whom the Software is
16
+ furnished to do so, subject to the following conditions:
17
+
18
+ The above copyright notice and this permission notice shall be included in all
19
+ copies or substantial portions of the Software.
20
+
21
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
22
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
23
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
24
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
25
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
26
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
27
+ SOFTWARE.
28
+ Requires-Dist: jinja2>=3.1
29
+ Requires-Dist: pydantic>=2.11.7
30
+ Requires-Dist: pydantic-settings>=2.10.1
31
+ Requires-Dist: mayutils[async,cli,console,dataframes,datetime,filesystem,financials,google,mathematics,microsoft,notebook,numerics,pandas,pdf,plotting,secrets,snowflake,sql,statistics,streamlit,tui,web] ; extra == 'all'
32
+ Requires-Dist: asyncer>=0.0.8 ; extra == 'async'
33
+ Requires-Dist: cookiecutter>=2.6.0 ; extra == 'cli'
34
+ Requires-Dist: mayutils[console] ; extra == 'cli'
35
+ Requires-Dist: typer ; extra == 'cli'
36
+ Requires-Dist: rich>=14.1.0 ; extra == 'console'
37
+ Requires-Dist: mayutils[pandas] ; extra == 'dataframes'
38
+ Requires-Dist: modin[all]>=0.35.0 ; extra == 'dataframes'
39
+ Requires-Dist: polars>=1.32.3 ; extra == 'dataframes'
40
+ Requires-Dist: dask ; extra == 'dataframes'
41
+ Requires-Dist: mayutils[numerics] ; extra == 'datetime'
42
+ Requires-Dist: pendulum[test]>=3.1.0 ; extra == 'datetime'
43
+ Requires-Dist: gitpython>=3.1.45 ; extra == 'filesystem'
44
+ Requires-Dist: watchdog>=6.0.0 ; extra == 'filesystem'
45
+ Requires-Dist: mayutils[numerics] ; extra == 'financials'
46
+ Requires-Dist: numpy-financial>=1.0.0 ; extra == 'financials'
47
+ Requires-Dist: google-api-python-client>=2.179.0 ; extra == 'google'
48
+ Requires-Dist: google-auth>=2.40.3 ; extra == 'google'
49
+ Requires-Dist: google-auth-httplib2>=0.2.0 ; extra == 'google'
50
+ Requires-Dist: google-auth-oauthlib>=1.2.2 ; extra == 'google'
51
+ Requires-Dist: google-cloud-storage>=3.3.0 ; extra == 'google'
52
+ Requires-Dist: mayutils[numerics] ; extra == 'mathematics'
53
+ Requires-Dist: sympy ; extra == 'mathematics'
54
+ Requires-Dist: numba>=0.62.0rc1 ; extra == 'mathematics'
55
+ Requires-Dist: fastexcel>=0.14 ; extra == 'microsoft'
56
+ Requires-Dist: openpyxl>=3.1.5 ; extra == 'microsoft'
57
+ Requires-Dist: python-docx>=1.2.0 ; extra == 'microsoft'
58
+ Requires-Dist: python-pptx>=1.0.2 ; extra == 'microsoft'
59
+ Requires-Dist: ipykernel>=6.30.1 ; extra == 'notebook'
60
+ Requires-Dist: itables>=2.4.5 ; extra == 'notebook'
61
+ Requires-Dist: jupyter>=1.1.1 ; extra == 'notebook'
62
+ Requires-Dist: jupysql>=0.11.1 ; extra == 'notebook'
63
+ Requires-Dist: mayutils[console] ; extra == 'notebook'
64
+ Requires-Dist: nbconvert>=7.16.6 ; extra == 'notebook'
65
+ Requires-Dist: unicodeit>=0.7.5 ; extra == 'notebook'
66
+ Requires-Dist: quarto-cli>=1.9.37 ; extra == 'notebook'
67
+ Requires-Dist: numpy>=2.3.2 ; extra == 'numerics'
68
+ Requires-Dist: mayutils[numerics] ; extra == 'pandas'
69
+ Requires-Dist: pandas>=2.3.2 ; extra == 'pandas'
70
+ Requires-Dist: pyarrow>=21.0.0 ; extra == 'pandas'
71
+ Requires-Dist: pillow>=11.3.0 ; extra == 'pdf'
72
+ Requires-Dist: pymupdf>=1.26.4 ; extra == 'pdf'
73
+ Requires-Dist: mayutils[numerics] ; extra == 'plotting'
74
+ Requires-Dist: dataframe-image>=0.2.7 ; extra == 'plotting'
75
+ Requires-Dist: great-tables>=0.18.0 ; extra == 'plotting'
76
+ Requires-Dist: html2image>=2.0.7 ; extra == 'plotting'
77
+ Requires-Dist: kaleido>=1.0.0 ; extra == 'plotting'
78
+ Requires-Dist: markdown ; extra == 'plotting'
79
+ Requires-Dist: matplotlib>=3.10.5 ; extra == 'plotting'
80
+ Requires-Dist: mistune>=3.2.0 ; extra == 'plotting'
81
+ Requires-Dist: pillow>=11.3.0 ; extra == 'plotting'
82
+ Requires-Dist: plotly>=6.3.0 ; extra == 'plotting'
83
+ Requires-Dist: scipy>=1.16.1 ; extra == 'plotting'
84
+ Requires-Dist: mayutils[console,pandas,datetime,notebook,plotting,secrets] ; extra == 'recommended'
85
+ Requires-Dist: python-dotenv>=1.1.1 ; extra == 'secrets'
86
+ Requires-Dist: keyring>=25.6.0 ; extra == 'secrets'
87
+ Requires-Dist: mayutils[sql] ; extra == 'snowflake'
88
+ Requires-Dist: snowflake-connector-python[secure-local-storage]>=3.17.2 ; extra == 'snowflake'
89
+ Requires-Dist: snowflake-snowpark-python>=1.27 ; extra == 'snowflake'
90
+ Requires-Dist: snowflake-sqlalchemy>=1.7.6 ; extra == 'snowflake'
91
+ Requires-Dist: sqlalchemy>=2.0.43,<2.1 ; extra == 'sql'
92
+ Requires-Dist: mayutils[numerics] ; extra == 'statistics'
93
+ Requires-Dist: scikit-learn>=1.7.1 ; extra == 'statistics'
94
+ Requires-Dist: scipy>=1.16.1 ; extra == 'statistics'
95
+ Requires-Dist: statsmodels ; extra == 'statistics'
96
+ Requires-Dist: bcrypt>=4.3.0 ; extra == 'streamlit'
97
+ Requires-Dist: streamlit>=1.49.0 ; extra == 'streamlit'
98
+ Requires-Dist: mayutils[cli,pandas,plotting,snowflake] ; extra == 'tui'
99
+ Requires-Dist: pyyaml>=6.0.2 ; extra == 'tui'
100
+ Requires-Dist: textual>=8.2.7 ; extra == 'tui'
101
+ Requires-Dist: textual-image>=0.13.2 ; extra == 'tui'
102
+ Requires-Dist: google-api-python-client-stubs>=1.34.0 ; extra == 'types'
103
+ Requires-Dist: lxml-stubs>=0.5.1 ; extra == 'types'
104
+ Requires-Dist: pandas-stubs>=2.3.2.250827 ; extra == 'types'
105
+ Requires-Dist: plotly-stubs>=0.1.3 ; extra == 'types'
106
+ Requires-Dist: pyarrow-stubs>=20.0.0.20251215 ; extra == 'types'
107
+ Requires-Dist: scipy-stubs>=1.16.2.4 ; extra == 'types'
108
+ Requires-Dist: types-cachetools>=6.2.0.20251022 ; extra == 'types'
109
+ Requires-Dist: types-decorator>=5.2.0.20250324 ; extra == 'types'
110
+ Requires-Dist: types-markdown>=3.10.0.20251106 ; extra == 'types'
111
+ Requires-Dist: types-openpyxl>=3.1.5.20250919 ; extra == 'types'
112
+ Requires-Dist: types-pycurl>=7.45.7.20250926 ; extra == 'types'
113
+ Requires-Dist: types-python-dateutil>=2.9.0.20251008 ; extra == 'types'
114
+ Requires-Dist: types-pyyaml>=6.0.12.20250915 ; extra == 'types'
115
+ Requires-Dist: types-requests>=2.32.4.20250913 ; extra == 'types'
116
+ Requires-Dist: types-simplejson>=3.20.0.20250822 ; extra == 'types'
117
+ Requires-Dist: types-six>=1.17.0.20250515 ; extra == 'types'
118
+ Requires-Dist: types-toml>=0.10.8.20240310 ; extra == 'types'
119
+ Requires-Dist: chromedriver-autoinstaller>=0.6.4 ; extra == 'web'
120
+ Requires-Dist: playwright>=1.55.0 ; extra == 'web'
121
+ Requires-Dist: selenium>=4.35.0 ; extra == 'web'
122
+ Maintainer: Mayuran Visakan
123
+ Maintainer-email: Mayuran Visakan <mayuran.k.v@gmail.com>
124
+ Requires-Python: >=3.13, <4.0
125
+ Provides-Extra: all
126
+ Provides-Extra: async
127
+ Provides-Extra: cli
128
+ Provides-Extra: console
129
+ Provides-Extra: dataframes
130
+ Provides-Extra: datetime
131
+ Provides-Extra: filesystem
132
+ Provides-Extra: financials
133
+ Provides-Extra: google
134
+ Provides-Extra: mathematics
135
+ Provides-Extra: microsoft
136
+ Provides-Extra: notebook
137
+ Provides-Extra: numerics
138
+ Provides-Extra: pandas
139
+ Provides-Extra: pdf
140
+ Provides-Extra: plotting
141
+ Provides-Extra: recommended
142
+ Provides-Extra: secrets
143
+ Provides-Extra: snowflake
144
+ Provides-Extra: sql
145
+ Provides-Extra: statistics
146
+ Provides-Extra: streamlit
147
+ Provides-Extra: tui
148
+ Provides-Extra: types
149
+ Provides-Extra: web
150
+ Description-Content-Type: text/markdown
151
+
152
+ # mayutils
153
+
154
+ [![CI](https://img.shields.io/github/actions/workflow/status/mayurankv/mayutils/ci.yaml?branch=main&style=for-the-badge&logo=githubactions&logoColor=white&label=CI)](https://github.com/mayurankv/mayutils/actions/workflows/ci.yaml) [![PyPI](https://img.shields.io/pypi/v/mayutils?style=for-the-badge&logo=pypi&logoColor=white&label=PyPI&color=3775A9)](https://pypi.org/project/mayutils/) [![Python](https://img.shields.io/badge/python-3.13%2B-3776AB?style=for-the-badge&logo=python&logoColor=white)](https://www.python.org/downloads/) [![License](https://img.shields.io/badge/license-MIT-green?style=for-the-badge&logo=opensourceinitiative&logoColor=white)](./LICENSE) [![Docs](https://img.shields.io/badge/docs-mkdocs--material-3F51B5?style=for-the-badge&logo=materialformkdocs&logoColor=white)](https://mayurankv.github.io/mayutils/)
155
+
156
+ Utilities for Python — plotting helpers, dataframe adapters, Snowflake/SQL glue, PowerPoint/PDF export, notebook display tweaks, OAuth helpers, and a fistful of miscellaneous object helpers. Heavy dependencies are grouped behind extras so the core install stays small.
157
+
158
+ ## Quick Start
159
+
160
+ ```zsh
161
+ uv add mayutils # core only
162
+ uv add "mayutils[plotting]" # + plotly/kaleido/matplotlib/scipy
163
+ uv add "mayutils[recommended]" # curated data-analysis set (console+pandas+datetime+notebook+plotting+secrets)
164
+ uv add "mayutils[all]" # everything
165
+ ```
166
+
167
+ ```python
168
+ import mayutils
169
+ from mayutils.objects.numbers import prettify
170
+
171
+ mayutils.setup()
172
+ print(prettify(num=1_234_567)) # "1.23M"
173
+ ```
174
+
175
+ ## Dependency Groups
176
+
177
+ | Group | Use it for |
178
+ | ------------- | ----------------------------------------------------------------------------- |
179
+ | `plotting` | `plotly`, `kaleido`, `matplotlib`, `scipy`, `great-tables` |
180
+ | `notebook` | `jupyter`, `ipykernel`, `nbconvert`, `itables`, `jupysql`, `quarto-cli` |
181
+ | `pandas` | `pandas`, `pyarrow` |
182
+ | `dataframes` | `polars`, `modin`, `dask` (+ `pandas`) |
183
+ | `mathematics` | `sympy`, `numba` |
184
+ | `statistics` | `scikit-learn`, `scipy`, `statsmodels` |
185
+ | `financials` | `numpy-financial` |
186
+ | `google` | Google Drive / Sheets / Cloud Storage + auth |
187
+ | `microsoft` | `python-pptx`, `openpyxl` |
188
+ | `sql` | `sqlalchemy` |
189
+ | `snowflake` | `snowflake-connector-python`, `snowflake-sqlalchemy` (+ `sql`) |
190
+ | `streamlit` | `streamlit` |
191
+ | `web` | `selenium`, `playwright`, `chromedriver-autoinstaller` |
192
+ | `pdf` | `pymupdf`, `pillow` |
193
+ | `datetime` | `pendulum` |
194
+ | `cli` | `typer`, `cookiecutter` |
195
+ | `filesystem` | `gitpython`, `watchdog` |
196
+ | `secrets` | `python-dotenv`, `keyring` |
197
+ | `recommended` | meta: `console` + `pandas` + `datetime` + `notebook` + `plotting` + `secrets` |
198
+ | `all` | Every runtime extra |
199
+
200
+ Full details: [docs/guides/dependency-groups.md](docs/guides/dependency-groups.md).
201
+
202
+ ## Documentation
203
+
204
+ - [Getting Started](docs/getting-started.md)
205
+ - [Development](docs/guides/development.md)
206
+ - [Testing](docs/guides/testing.md)
207
+ - [Documentation](docs/guides/documentation.md)
208
+ - [Roadmap](docs/roadmap.md) — translated from the legacy `.todo` file
209
+ - [Changelog](docs/changelog.md)
210
+ - [API Reference](https://mayurankv.github.io/mayutils/reference/) — auto-generated from docstrings
211
+
212
+ ## Contributing
213
+
214
+ See the [contributing guide](docs/contributing.md) for setup, commit conventions (Conventional Commits), and release flow.
215
+
216
+ ## License
217
+
218
+ MIT — see [LICENSE](LICENSE).
@@ -0,0 +1,67 @@
1
+ # mayutils
2
+
3
+ [![CI](https://img.shields.io/github/actions/workflow/status/mayurankv/mayutils/ci.yaml?branch=main&style=for-the-badge&logo=githubactions&logoColor=white&label=CI)](https://github.com/mayurankv/mayutils/actions/workflows/ci.yaml) [![PyPI](https://img.shields.io/pypi/v/mayutils?style=for-the-badge&logo=pypi&logoColor=white&label=PyPI&color=3775A9)](https://pypi.org/project/mayutils/) [![Python](https://img.shields.io/badge/python-3.13%2B-3776AB?style=for-the-badge&logo=python&logoColor=white)](https://www.python.org/downloads/) [![License](https://img.shields.io/badge/license-MIT-green?style=for-the-badge&logo=opensourceinitiative&logoColor=white)](./LICENSE) [![Docs](https://img.shields.io/badge/docs-mkdocs--material-3F51B5?style=for-the-badge&logo=materialformkdocs&logoColor=white)](https://mayurankv.github.io/mayutils/)
4
+
5
+ Utilities for Python — plotting helpers, dataframe adapters, Snowflake/SQL glue, PowerPoint/PDF export, notebook display tweaks, OAuth helpers, and a fistful of miscellaneous object helpers. Heavy dependencies are grouped behind extras so the core install stays small.
6
+
7
+ ## Quick Start
8
+
9
+ ```zsh
10
+ uv add mayutils # core only
11
+ uv add "mayutils[plotting]" # + plotly/kaleido/matplotlib/scipy
12
+ uv add "mayutils[recommended]" # curated data-analysis set (console+pandas+datetime+notebook+plotting+secrets)
13
+ uv add "mayutils[all]" # everything
14
+ ```
15
+
16
+ ```python
17
+ import mayutils
18
+ from mayutils.objects.numbers import prettify
19
+
20
+ mayutils.setup()
21
+ print(prettify(num=1_234_567)) # "1.23M"
22
+ ```
23
+
24
+ ## Dependency Groups
25
+
26
+ | Group | Use it for |
27
+ | ------------- | ----------------------------------------------------------------------------- |
28
+ | `plotting` | `plotly`, `kaleido`, `matplotlib`, `scipy`, `great-tables` |
29
+ | `notebook` | `jupyter`, `ipykernel`, `nbconvert`, `itables`, `jupysql`, `quarto-cli` |
30
+ | `pandas` | `pandas`, `pyarrow` |
31
+ | `dataframes` | `polars`, `modin`, `dask` (+ `pandas`) |
32
+ | `mathematics` | `sympy`, `numba` |
33
+ | `statistics` | `scikit-learn`, `scipy`, `statsmodels` |
34
+ | `financials` | `numpy-financial` |
35
+ | `google` | Google Drive / Sheets / Cloud Storage + auth |
36
+ | `microsoft` | `python-pptx`, `openpyxl` |
37
+ | `sql` | `sqlalchemy` |
38
+ | `snowflake` | `snowflake-connector-python`, `snowflake-sqlalchemy` (+ `sql`) |
39
+ | `streamlit` | `streamlit` |
40
+ | `web` | `selenium`, `playwright`, `chromedriver-autoinstaller` |
41
+ | `pdf` | `pymupdf`, `pillow` |
42
+ | `datetime` | `pendulum` |
43
+ | `cli` | `typer`, `cookiecutter` |
44
+ | `filesystem` | `gitpython`, `watchdog` |
45
+ | `secrets` | `python-dotenv`, `keyring` |
46
+ | `recommended` | meta: `console` + `pandas` + `datetime` + `notebook` + `plotting` + `secrets` |
47
+ | `all` | Every runtime extra |
48
+
49
+ Full details: [docs/guides/dependency-groups.md](docs/guides/dependency-groups.md).
50
+
51
+ ## Documentation
52
+
53
+ - [Getting Started](docs/getting-started.md)
54
+ - [Development](docs/guides/development.md)
55
+ - [Testing](docs/guides/testing.md)
56
+ - [Documentation](docs/guides/documentation.md)
57
+ - [Roadmap](docs/roadmap.md) — translated from the legacy `.todo` file
58
+ - [Changelog](docs/changelog.md)
59
+ - [API Reference](https://mayurankv.github.io/mayutils/reference/) — auto-generated from docstrings
60
+
61
+ ## Contributing
62
+
63
+ See the [contributing guide](docs/contributing.md) for setup, commit conventions (Conventional Commits), and release flow.
64
+
65
+ ## License
66
+
67
+ MIT — see [LICENSE](LICENSE).
@@ -0,0 +1,258 @@
1
+ [build-system]
2
+ build-backend = "uv_build"
3
+ requires = ["uv_build>=0.11.7,<0.12.0"]
4
+
5
+ [dependency-groups]
6
+ dev = [
7
+ "commitizen>=4.13",
8
+ "coverage>=7.11.0",
9
+ "ipdb>=0.13.13",
10
+ "mayutils",
11
+ "mdformat>=1.0.0",
12
+ "mdformat-gfm>=1.0.0",
13
+ "mdformat-mkdocs>=5.2.0b2",
14
+ "mdformat-pyproject>=0.1.1",
15
+ "mypy>=1.18.2",
16
+ "numpydoc>=1.8",
17
+ "pre-commit>=4.3.0",
18
+ "prek>=0.3.11",
19
+ "pyright>=1.1.405",
20
+ "pytest>=8.4.2",
21
+ "ruff>=0.14.2",
22
+ "toml-sort>=0.24",
23
+ "ty>=0.0.1a24"
24
+ ]
25
+ docs = [
26
+ "mkdocs>=1.6",
27
+ "mkdocs-autorefs>=1.4.4",
28
+ "mkdocs-gen-files>=0.5",
29
+ "mkdocs-literate-nav>=0.6",
30
+ "mkdocs-material>=9.6",
31
+ "mkdocs-section-index>=0.3",
32
+ "mkdocstrings[python]>=0.29"
33
+ ]
34
+ testing = ["pytest>=8.4.2"]
35
+
36
+ [project]
37
+ authors = [{email = "mayuran.k.v@gmail.com", name = "Mayuran Visakan"}]
38
+ dependencies = [
39
+ "jinja2>=3.1",
40
+ "pydantic>=2.11.7",
41
+ "pydantic-settings>=2.10.1"
42
+ ]
43
+ description = "Utilities for Python from Mayuran Visakan"
44
+ license = {file = "LICENSE"}
45
+ maintainers = [{email = "mayuran.k.v@gmail.com", name = "Mayuran Visakan"}]
46
+ name = "mayutils"
47
+ readme = "README.md"
48
+ requires-python = ">=3.13,<4.0"
49
+ version = "3.0.0"
50
+
51
+ [project.optional-dependencies]
52
+ all = [
53
+ "mayutils[async,cli,console,dataframes,datetime,filesystem,financials,google,mathematics,microsoft,notebook,numerics,pandas,pdf,plotting,secrets,snowflake,sql,statistics,streamlit,tui,web]"
54
+ ]
55
+ async = [
56
+ "asyncer>=0.0.8"
57
+ ]
58
+ cli = [
59
+ "cookiecutter>=2.6.0",
60
+ "mayutils[console]",
61
+ "typer"
62
+ ]
63
+ console = [
64
+ "rich>=14.1.0"
65
+ ]
66
+ dataframes = [
67
+ "mayutils[pandas]",
68
+ "modin[all]>=0.35.0",
69
+ "polars>=1.32.3",
70
+ "dask"
71
+ ]
72
+ datetime = [
73
+ "mayutils[numerics]",
74
+ "pendulum[test]>=3.1.0"
75
+ ]
76
+ filesystem = [
77
+ "gitpython>=3.1.45",
78
+ "watchdog>=6.0.0"
79
+ ]
80
+ financials = [
81
+ "mayutils[numerics]",
82
+ "numpy-financial>=1.0.0"
83
+ ]
84
+ google = [
85
+ "google-api-python-client>=2.179.0",
86
+ "google-auth>=2.40.3",
87
+ "google-auth-httplib2>=0.2.0",
88
+ "google-auth-oauthlib>=1.2.2",
89
+ "google-cloud-storage>=3.3.0"
90
+ ]
91
+ mathematics = [
92
+ "mayutils[numerics]",
93
+ "sympy",
94
+ "numba>=0.62.0rc1"
95
+ ]
96
+ microsoft = [
97
+ "fastexcel>=0.14",
98
+ "openpyxl>=3.1.5",
99
+ "python-docx>=1.2.0",
100
+ "python-pptx>=1.0.2"
101
+ ]
102
+ notebook = [
103
+ "ipykernel>=6.30.1",
104
+ "itables>=2.4.5",
105
+ "jupyter>=1.1.1",
106
+ "jupysql>=0.11.1",
107
+ "mayutils[console]",
108
+ "nbconvert>=7.16.6",
109
+ "unicodeit>=0.7.5",
110
+ "quarto-cli>=1.9.37"
111
+ ]
112
+ numerics = [
113
+ "numpy>=2.3.2"
114
+ ]
115
+ pandas = [
116
+ "mayutils[numerics]",
117
+ "pandas>=2.3.2",
118
+ "pyarrow>=21.0.0"
119
+ ]
120
+ pdf = [
121
+ "pillow>=11.3.0",
122
+ "pymupdf>=1.26.4"
123
+ ]
124
+ plotting = [
125
+ "mayutils[numerics]",
126
+ "dataframe-image>=0.2.7",
127
+ "great-tables>=0.18.0",
128
+ "html2image>=2.0.7",
129
+ "kaleido>=1.0.0",
130
+ "markdown",
131
+ "matplotlib>=3.10.5",
132
+ "mistune>=3.2.0",
133
+ "pillow>=11.3.0",
134
+ "plotly>=6.3.0",
135
+ "scipy>=1.16.1"
136
+ ]
137
+ recommended = [
138
+ "mayutils[console,pandas,datetime,notebook,plotting,secrets]"
139
+ ]
140
+ secrets = [
141
+ "python-dotenv>=1.1.1",
142
+ "keyring>=25.6.0"
143
+ ]
144
+ snowflake = [
145
+ "mayutils[sql]",
146
+ "snowflake-connector-python[secure-local-storage]>=3.17.2",
147
+ "snowflake-snowpark-python>=1.27",
148
+ "snowflake-sqlalchemy>=1.7.6"
149
+ ]
150
+ sql = [
151
+ "sqlalchemy>=2.0.43,<2.1"
152
+ ]
153
+ statistics = [
154
+ "mayutils[numerics]",
155
+ "scikit-learn>=1.7.1",
156
+ "scipy>=1.16.1",
157
+ "statsmodels"
158
+ ]
159
+ streamlit = [
160
+ "bcrypt>=4.3.0",
161
+ "streamlit>=1.49.0"
162
+ ]
163
+ tui = [
164
+ "mayutils[cli,pandas,plotting,snowflake]",
165
+ "pyyaml>=6.0.2",
166
+ "textual>=8.2.7",
167
+ "textual-image>=0.13.2"
168
+ ]
169
+ types = [
170
+ "google-api-python-client-stubs>=1.34.0",
171
+ "lxml-stubs>=0.5.1",
172
+ "pandas-stubs>=2.3.2.250827",
173
+ "plotly-stubs>=0.1.3",
174
+ "pyarrow-stubs>=20.0.0.20251215",
175
+ "scipy-stubs>=1.16.2.4",
176
+ "types-cachetools>=6.2.0.20251022",
177
+ "types-decorator>=5.2.0.20250324",
178
+ "types-markdown>=3.10.0.20251106",
179
+ "types-openpyxl>=3.1.5.20250919",
180
+ "types-pycurl>=7.45.7.20250926",
181
+ "types-python-dateutil>=2.9.0.20251008",
182
+ "types-pyyaml>=6.0.12.20250915",
183
+ "types-requests>=2.32.4.20250913",
184
+ "types-simplejson>=3.20.0.20250822",
185
+ "types-six>=1.17.0.20250515",
186
+ "types-toml>=0.10.8.20240310"
187
+ ]
188
+ web = [
189
+ "chromedriver-autoinstaller>=0.6.4",
190
+ "playwright>=1.55.0",
191
+ "selenium>=4.35.0"
192
+ ]
193
+
194
+ [project.scripts]
195
+ clear_cache = "mayutils.scripts.clear_cache:app"
196
+ generate_encryption_key = "mayutils.environment.oauth:generate_fernet_key"
197
+ generate_plotly_stubs = "mayutils.scripts.generate_plotly_stubs:app"
198
+ refresh_stubs = "mayutils.scripts.refresh_stubs:app"
199
+ tuiplot = "mayutils.interfaces.code.tui.tuiplot:app"
200
+
201
+ [tool.commitizen]
202
+ annotated_tag = true
203
+ changelog_file = "CHANGELOG.md"
204
+ changelog_incremental = true
205
+ name = "cz_conventional_commits"
206
+ pre_bump_hooks = [
207
+ "uv lock",
208
+ "git add uv.lock"
209
+ ]
210
+ tag_format = "v$version"
211
+ update_changelog_on_bump = true
212
+ version = "3.0.0"
213
+ version_files = ["pyproject.toml:^version"]
214
+
215
+ [tool.mdformat]
216
+ wrap = 1000
217
+
218
+ [tool.numpydoc_validation]
219
+ checks = [
220
+ "all",
221
+ "PR04",
222
+ "RT03"
223
+ ]
224
+
225
+ [tool.pyright]
226
+ exclude = [
227
+ "**/__pycache__",
228
+ "**/.venv",
229
+ "**/.ruff_cache",
230
+ "**/.pytest_cache",
231
+ "**/.mypy_cache",
232
+ "**/node_modules",
233
+ "Templates",
234
+ "typings",
235
+ "**/.*"
236
+ ]
237
+ pythonVersion = "3.13"
238
+ stubPath = "typings"
239
+ typeCheckingMode = "strict"
240
+ venv = ".venv"
241
+ venvPath = "."
242
+
243
+ [tool.pytest.ini_options]
244
+ addopts = "-ra --doctest-modules"
245
+ doctest_optionflags = ["ELLIPSIS", "NORMALIZE_WHITESPACE"]
246
+ filterwarnings = [
247
+ "ignore:builtin type Swig.*has no __module__:DeprecationWarning",
248
+ "ignore:builtin type swigvarlink has no __module__:DeprecationWarning",
249
+ "ignore:.*scattermapbox.*:DeprecationWarning"
250
+ ]
251
+ testpaths = ["src/mayutils", "tests"]
252
+
253
+ [tool.uv]
254
+ default-groups = ["dev"]
255
+ prerelease = "if-necessary-or-explicit"
256
+
257
+ [tool.uv.sources]
258
+ mayutils = {workspace = true}
@@ -0,0 +1,86 @@
1
+ """Expose the top-level ``mayutils`` package surface and runtime entry point."""
2
+
3
+ from importlib import metadata
4
+
5
+ __version__ = metadata.version(distribution_name="mayutils")
6
+
7
+
8
+ def setup(
9
+ *,
10
+ logging: bool = True,
11
+ plotly: bool = True,
12
+ notebook: bool = True,
13
+ pandas: bool = True,
14
+ ) -> None:
15
+ """
16
+ Initialise the standard mayutils runtime environment.
17
+
18
+ Configures logging, registers Plotly templates, sets up IPython
19
+ display hooks and pandas options based on the supplied flags.
20
+
21
+ Parameters
22
+ ----------
23
+ logging
24
+ When ``True``, install Rich console and rotating file handlers
25
+ on the root logger via :meth:`Logger.configure`.
26
+ plotly
27
+ When ``True``, register the custom Plotly templates via
28
+ :func:`register_templates`.
29
+ notebook
30
+ When ``True``, configure IPython display hooks via
31
+ :meth:`mayutils.visualisation.notebook.Notebook.setup`.
32
+ pandas
33
+ When ``True``, apply default pandas display options via
34
+ :func:`mayutils.objects.dataframes.setup_pandas`.
35
+
36
+ See Also
37
+ --------
38
+ mayutils.environment.logging.Logger.configure : Logging setup.
39
+ mayutils.visualisation.graphs.plotly.templates.register_templates :
40
+ Plotly template registration.
41
+
42
+ Examples
43
+ --------
44
+ >>> from mayutils import setup
45
+ >>> setup(logging=False, plotly=False, notebook=False, pandas=False)
46
+ """
47
+ from mayutils.core.extras import format_missing_extra_hint
48
+ from mayutils.environment.logging import Logger
49
+
50
+ if logging:
51
+ Logger.configure()
52
+
53
+ if plotly:
54
+ try:
55
+ from mayutils.visualisation.graphs.plotly.templates import register_templates
56
+
57
+ register_templates()
58
+ except ImportError as err:
59
+ missing = getattr(err, "name", None) or "dependency"
60
+ Logger.spawn().warning(
61
+ f"Skipping Plotly template registration: {err}. {format_missing_extra_hint(missing)}",
62
+ )
63
+
64
+ if notebook:
65
+ try:
66
+ from mayutils.visualisation.notebook import Notebook
67
+
68
+ Notebook.setup()
69
+ except ImportError as err:
70
+ missing = getattr(err, "name", None) or "dependency"
71
+ Logger.spawn().warning(
72
+ f"Skipping notebook setup: {err}. {format_missing_extra_hint(missing)}",
73
+ )
74
+ except RuntimeError:
75
+ Logger.spawn().debug("Skipping notebook setup: no active IPython shell.")
76
+
77
+ if pandas:
78
+ try:
79
+ from mayutils.objects.dataframes import setup_pandas
80
+
81
+ setup_pandas()
82
+ except ImportError as err:
83
+ missing = getattr(err, "name", None) or "dependency"
84
+ Logger.spawn().warning(
85
+ f"Skipping pandas setup: {err}. {format_missing_extra_hint(missing)}",
86
+ )
@@ -0,0 +1,27 @@
1
+ """
2
+ Expose the mayutils core subpackage of shared runtime primitives.
3
+
4
+ Group the foundational building blocks that the rest of mayutils depends
5
+ upon, including lightweight base classes, shared constants, and
6
+ cross-cutting helper types. Modules in this package intentionally avoid
7
+ heavy third-party dependencies so that importing mayutils remains cheap
8
+ and side-effect free, allowing higher-level subpackages to layer
9
+ domain-specific behaviour on top of a stable, minimal core.
10
+
11
+ See Also
12
+ --------
13
+ mayutils.core.extras : Optional-dependency resolution helpers that map
14
+ ``ImportError`` failures back to the extras that provide the missing
15
+ distribution.
16
+ mayutils.core.constants : Shared literal values and lookup tables used
17
+ by the rest of the mayutils library.
18
+
19
+ Examples
20
+ --------
21
+ >>> import mayutils.core
22
+ >>> mayutils.core.__name__
23
+ 'mayutils.core'
24
+ >>> from mayutils.core import extras
25
+ >>> hasattr(extras, "may_require_extras")
26
+ True
27
+ """
@@ -0,0 +1,26 @@
1
+ """
2
+ Expose shared package-level constants used across :mod:`mayutils`.
3
+
4
+ Centralises singleton instances and literal values that need to stay
5
+ identical across subpackages, so lookups and comparisons remain
6
+ consistent regardless of which feature module first imports them. The
7
+ module is kept intentionally dependency-light and free of optional
8
+ extras, which makes it safe to import from any bootstrap path without
9
+ pulling in heavier runtimes. Heavier shared singletons whose creation
10
+ depends on third-party libraries live in the feature-specific submodules
11
+ behind their own optional-dependency groups and are never re-exported
12
+ from here.
13
+
14
+ See Also
15
+ --------
16
+ mayutils.core.extras : Companion module that resolves which optional
17
+ extras ship a given import and formats actionable install hints.
18
+ mayutils : Top-level package whose subpackages consume the constants
19
+ defined here to keep identifier values in lockstep.
20
+
21
+ Examples
22
+ --------
23
+ >>> from mayutils.core import constants
24
+ >>> constants.__name__
25
+ 'mayutils.core.constants'
26
+ """