mayutils 1.2.52__tar.gz → 2.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 (213) hide show
  1. mayutils-2.0.0/PKG-INFO +217 -0
  2. mayutils-2.0.0/README.md +67 -0
  3. mayutils-2.0.0/pyproject.toml +257 -0
  4. mayutils-2.0.0/src/mayutils/__init__.py +86 -0
  5. mayutils-2.0.0/src/mayutils/core/__init__.py +27 -0
  6. mayutils-2.0.0/src/mayutils/core/constants.py +26 -0
  7. mayutils-2.0.0/src/mayutils/core/extras.py +593 -0
  8. mayutils-2.0.0/src/mayutils/data/__init__.py +33 -0
  9. mayutils-2.0.0/src/mayutils/data/live.py +1025 -0
  10. mayutils-2.0.0/src/mayutils/data/queries/__init__.py +310 -0
  11. mayutils-2.0.0/src/mayutils/data/read.py +831 -0
  12. mayutils-2.0.0/src/mayutils/environment/__init__.py +36 -0
  13. mayutils-2.0.0/src/mayutils/environment/benchmarking.py +178 -0
  14. mayutils-2.0.0/src/mayutils/environment/databases.py +880 -0
  15. mayutils-2.0.0/src/mayutils/environment/filesystem/__init__.py +60 -0
  16. mayutils-2.0.0/src/mayutils/environment/filesystem/encoding.py +139 -0
  17. mayutils-2.0.0/src/mayutils/environment/filesystem/metadata.py +114 -0
  18. mayutils-2.0.0/src/mayutils/environment/filesystem/reading.py +101 -0
  19. mayutils-2.0.0/src/mayutils/environment/filesystem/roots.py +199 -0
  20. mayutils-2.0.0/src/mayutils/environment/logging.py +1218 -0
  21. mayutils-2.0.0/src/mayutils/environment/memoisation/__init__.py +60 -0
  22. mayutils-2.0.0/src/mayutils/environment/memoisation/clearing.py +210 -0
  23. mayutils-2.0.0/src/mayutils/environment/memoisation/decorators.py +965 -0
  24. mayutils-2.0.0/src/mayutils/environment/memoisation/decorators.pyi +72 -0
  25. mayutils-2.0.0/src/mayutils/environment/memoisation/files.py +1236 -0
  26. mayutils-2.0.0/src/mayutils/environment/memoisation/memory.py +388 -0
  27. mayutils-2.0.0/src/mayutils/environment/memoisation/types.py +237 -0
  28. mayutils-2.0.0/src/mayutils/environment/memoisation/utilities.py +213 -0
  29. mayutils-2.0.0/src/mayutils/environment/oauth.py +908 -0
  30. mayutils-2.0.0/src/mayutils/environment/secrets.py +98 -0
  31. mayutils-2.0.0/src/mayutils/environment/webdrivers.py +132 -0
  32. mayutils-2.0.0/src/mayutils/export/__init__.py +42 -0
  33. mayutils-2.0.0/src/mayutils/export/html.py +321 -0
  34. mayutils-2.0.0/src/mayutils/export/images.py +38 -0
  35. mayutils-2.0.0/src/mayutils/export/nbconvert.py +434 -0
  36. mayutils-2.0.0/src/mayutils/export/quarto.py +591 -0
  37. mayutils-2.0.0/src/mayutils/interfaces/__init__.py +30 -0
  38. mayutils-2.0.0/src/mayutils/interfaces/cloud/__init__.py +30 -0
  39. mayutils-2.0.0/src/mayutils/interfaces/cloud/google.py +954 -0
  40. mayutils-2.0.0/src/mayutils/interfaces/code/__init__.py +25 -0
  41. mayutils-2.0.0/src/mayutils/interfaces/code/notebooks/__init__.py +27 -0
  42. mayutils-2.0.0/src/mayutils/interfaces/code/notebooks/jupyter.py +585 -0
  43. mayutils-2.0.0/src/mayutils/interfaces/code/tui/__init__.py +1 -0
  44. mayutils-2.0.0/src/mayutils/interfaces/code/tui/textual.py +575 -0
  45. mayutils-2.0.0/src/mayutils/interfaces/code/tui/tuiplot.py +1401 -0
  46. mayutils-2.0.0/src/mayutils/interfaces/data/__init__.py +217 -0
  47. mayutils-2.0.0/src/mayutils/interfaces/data/snowflake/__init__.py +1967 -0
  48. mayutils-2.0.0/src/mayutils/interfaces/filetypes/__init__.py +1288 -0
  49. mayutils-2.0.0/src/mayutils/interfaces/filetypes/csv/__init__.py +458 -0
  50. mayutils-2.0.0/src/mayutils/interfaces/filetypes/docs/__init__.py +31 -0
  51. mayutils-2.0.0/src/mayutils/interfaces/filetypes/docx/__init__.py +61 -0
  52. mayutils-2.0.0/src/mayutils/interfaces/filetypes/feather/__init__.py +399 -0
  53. mayutils-2.0.0/src/mayutils/interfaces/filetypes/markdown/__init__.py +506 -0
  54. mayutils-2.0.0/src/mayutils/interfaces/filetypes/parquet/__init__.py +388 -0
  55. mayutils-2.0.0/src/mayutils/interfaces/filetypes/pdf/__init__.py +305 -0
  56. mayutils-2.0.0/src/mayutils/interfaces/filetypes/pptx/__init__.py +2610 -0
  57. mayutils-2.0.0/src/mayutils/interfaces/filetypes/pptx/markdown.py +1502 -0
  58. mayutils-2.0.0/src/mayutils/interfaces/filetypes/pptx/units.py +272 -0
  59. mayutils-2.0.0/src/mayutils/interfaces/filetypes/sheets/__init__.py +3036 -0
  60. mayutils-2.0.0/src/mayutils/interfaces/filetypes/slides/__init__.py +2150 -0
  61. mayutils-2.0.0/src/mayutils/interfaces/filetypes/tex/__init__.py +90 -0
  62. mayutils-2.0.0/src/mayutils/interfaces/filetypes/xlsx/__init__.py +1181 -0
  63. mayutils-2.0.0/src/mayutils/interfaces/websites/__init__.py +24 -0
  64. mayutils-2.0.0/src/mayutils/interfaces/websites/streamlit/__init__.py +1017 -0
  65. mayutils-2.0.0/src/mayutils/interfaces/websites/streamlit/views/__init__.py +32 -0
  66. mayutils-2.0.0/src/mayutils/interfaces/websites/streamlit/views/forbidden.py +36 -0
  67. mayutils-2.0.0/src/mayutils/interfaces/websites/streamlit/views/login.py +37 -0
  68. mayutils-2.0.0/src/mayutils/mathematics/__init__.py +27 -0
  69. mayutils-2.0.0/src/mayutils/mathematics/analytics/__init__.py +25 -0
  70. mayutils-2.0.0/src/mayutils/mathematics/analytics/attribution.py +635 -0
  71. mayutils-2.0.0/src/mayutils/mathematics/machine_learning/__init__.py +27 -0
  72. mayutils-2.0.0/src/mayutils/mathematics/numba.py +556 -0
  73. mayutils-2.0.0/src/mayutils/mathematics/numpy.py +26 -0
  74. mayutils-2.0.0/src/mayutils/mathematics/statistics/__init__.py +26 -0
  75. mayutils-2.0.0/src/mayutils/objects/__init__.py +36 -0
  76. mayutils-2.0.0/src/mayutils/objects/classes.py +641 -0
  77. mayutils-2.0.0/src/mayutils/objects/colours.py +1053 -0
  78. mayutils-2.0.0/src/mayutils/objects/dataframes/__init__.py +98 -0
  79. mayutils-2.0.0/src/mayutils/objects/dataframes/backends.py +503 -0
  80. mayutils-2.0.0/src/mayutils/objects/dataframes/dask/__init__.py +32 -0
  81. mayutils-2.0.0/src/mayutils/objects/dataframes/modin/__init__.py +28 -0
  82. mayutils-2.0.0/src/mayutils/objects/dataframes/pandas/__init__.py +55 -0
  83. mayutils-2.0.0/src/mayutils/objects/dataframes/pandas/dataframes.py +996 -0
  84. mayutils-2.0.0/src/mayutils/objects/dataframes/pandas/index.py +180 -0
  85. mayutils-2.0.0/src/mayutils/objects/dataframes/pandas/series.py +302 -0
  86. mayutils-2.0.0/src/mayutils/objects/dataframes/pandas/stylers.py +765 -0
  87. mayutils-2.0.0/src/mayutils/objects/dataframes/polars/__init__.py +30 -0
  88. mayutils-2.0.0/src/mayutils/objects/dataframes/polars/dataframes.py +26 -0
  89. mayutils-2.0.0/src/mayutils/objects/dataframes/pyarrow/__init__.py +33 -0
  90. mayutils-2.0.0/src/mayutils/objects/dataframes/snowflake/__init__.py +30 -0
  91. mayutils-2.0.0/src/mayutils/objects/datetime/__init__.py +151 -0
  92. mayutils-2.0.0/src/mayutils/objects/datetime/constants.py +164 -0
  93. mayutils-2.0.0/src/mayutils/objects/datetime/datetime.py +1779 -0
  94. mayutils-2.0.0/src/mayutils/objects/datetime/interval.py +1235 -0
  95. mayutils-2.0.0/src/mayutils/objects/datetime/timezone.py +487 -0
  96. mayutils-2.0.0/src/mayutils/objects/datetime/traveller.py +169 -0
  97. mayutils-2.0.0/src/mayutils/objects/decorators.py +610 -0
  98. mayutils-2.0.0/src/mayutils/objects/dictionaries.py +125 -0
  99. mayutils-2.0.0/src/mayutils/objects/functions.py +208 -0
  100. mayutils-2.0.0/src/mayutils/objects/hashing.py +178 -0
  101. mayutils-2.0.0/src/mayutils/objects/numbers.py +203 -0
  102. mayutils-2.0.0/src/mayutils/objects/paths.py +140 -0
  103. mayutils-2.0.0/src/mayutils/objects/strings.py +576 -0
  104. mayutils-2.0.0/src/mayutils/objects/types.py +204 -0
  105. mayutils-2.0.0/src/mayutils/objects/versions.py +123 -0
  106. mayutils-2.0.0/src/mayutils/scripts/__init__.py +33 -0
  107. mayutils-2.0.0/src/mayutils/scripts/clear_cache.py +117 -0
  108. mayutils-2.0.0/src/mayutils/scripts/generate_plotly_stubs.py +2745 -0
  109. mayutils-2.0.0/src/mayutils/scripts/refresh_stubs.py +1167 -0
  110. mayutils-2.0.0/src/mayutils/testing/__init__.py +30 -0
  111. mayutils-2.0.0/src/mayutils/visualisation/__init__.py +33 -0
  112. mayutils-2.0.0/src/mayutils/visualisation/console.py +587 -0
  113. mayutils-2.0.0/src/mayutils/visualisation/graphs/__init__.py +31 -0
  114. mayutils-2.0.0/src/mayutils/visualisation/graphs/combine.py +189 -0
  115. mayutils-2.0.0/src/mayutils/visualisation/graphs/matplotlib/__init__.py +30 -0
  116. mayutils-2.0.0/src/mayutils/visualisation/graphs/matplotlib/templates.py +33 -0
  117. mayutils-2.0.0/src/mayutils/visualisation/graphs/plotly/__init__.py +69 -0
  118. mayutils-2.0.0/src/mayutils/visualisation/graphs/plotly/charts/__init__.py +982 -0
  119. mayutils-2.0.0/src/mayutils/visualisation/graphs/plotly/charts/plot.py +2250 -0
  120. mayutils-2.0.0/src/mayutils/visualisation/graphs/plotly/charts/plot.pyi +3646 -0
  121. mayutils-2.0.0/src/mayutils/visualisation/graphs/plotly/charts/subplot.py +447 -0
  122. mayutils-2.0.0/src/mayutils/visualisation/graphs/plotly/charts/subplot.pyi +3484 -0
  123. mayutils-2.0.0/src/mayutils/visualisation/graphs/plotly/templates.py +857 -0
  124. mayutils-2.0.0/src/mayutils/visualisation/graphs/plotly/traces/__init__.py +25 -0
  125. mayutils-2.0.0/src/mayutils/visualisation/graphs/plotly/traces/ecdf.py +154 -0
  126. mayutils-2.0.0/src/mayutils/visualisation/graphs/plotly/traces/ecdf.pyi +353 -0
  127. mayutils-2.0.0/src/mayutils/visualisation/graphs/plotly/traces/icicle.py +209 -0
  128. mayutils-2.0.0/src/mayutils/visualisation/graphs/plotly/traces/icicle.pyi +50 -0
  129. mayutils-2.0.0/src/mayutils/visualisation/graphs/plotly/traces/kde.py +88 -0
  130. mayutils-2.0.0/src/mayutils/visualisation/graphs/plotly/traces/kde.pyi +352 -0
  131. mayutils-2.0.0/src/mayutils/visualisation/graphs/plotly/traces/line.py +352 -0
  132. mayutils-2.0.0/src/mayutils/visualisation/graphs/plotly/traces/line.pyi +360 -0
  133. mayutils-2.0.0/src/mayutils/visualisation/graphs/plotly/traces/mesh3d.py +483 -0
  134. mayutils-2.0.0/src/mayutils/visualisation/graphs/plotly/traces/mesh3d.pyi +82 -0
  135. mayutils-2.0.0/src/mayutils/visualisation/graphs/plotly/traces/null.py +91 -0
  136. mayutils-2.0.0/src/mayutils/visualisation/graphs/plotly/traces/null.pyi +103 -0
  137. mayutils-2.0.0/src/mayutils/visualisation/graphs/plotly/traces/scatter.py +89 -0
  138. mayutils-2.0.0/src/mayutils/visualisation/graphs/plotly/traces/scatter.pyi +104 -0
  139. mayutils-2.0.0/src/mayutils/visualisation/graphs/plotly/traces/types.py +46 -0
  140. mayutils-2.0.0/src/mayutils/visualisation/graphs/plotly/traces/utilities.py +50 -0
  141. mayutils-2.0.0/src/mayutils/visualisation/graphs/plotly/utilities.py +163 -0
  142. mayutils-2.0.0/src/mayutils/visualisation/notebook.py +358 -0
  143. mayutils-1.2.52/PKG-INFO +0 -109
  144. mayutils-1.2.52/README.md +0 -3
  145. mayutils-1.2.52/pyproject.toml +0 -125
  146. mayutils-1.2.52/src/mayutils/__init__.py +0 -32
  147. mayutils-1.2.52/src/mayutils/core/constants.py +0 -3
  148. mayutils-1.2.52/src/mayutils/data/__init__.py +0 -6
  149. mayutils-1.2.52/src/mayutils/data/analysis/__init__.py +0 -0
  150. mayutils-1.2.52/src/mayutils/data/live.py +0 -176
  151. mayutils-1.2.52/src/mayutils/data/local.py +0 -53
  152. mayutils-1.2.52/src/mayutils/data/queries/__init__.py +0 -65
  153. mayutils-1.2.52/src/mayutils/data/queries/examples/.gitkeep +0 -0
  154. mayutils-1.2.52/src/mayutils/data/read.py +0 -107
  155. mayutils-1.2.52/src/mayutils/environment/__init__.py +0 -0
  156. mayutils-1.2.52/src/mayutils/environment/benchmarking.py +0 -43
  157. mayutils-1.2.52/src/mayutils/environment/databases.py +0 -60
  158. mayutils-1.2.52/src/mayutils/environment/filesystem.py +0 -65
  159. mayutils-1.2.52/src/mayutils/environment/logging.py +0 -255
  160. mayutils-1.2.52/src/mayutils/environment/memoisation.py +0 -227
  161. mayutils-1.2.52/src/mayutils/environment/oauth.py +0 -267
  162. mayutils-1.2.52/src/mayutils/environment/secrets.py +0 -12
  163. mayutils-1.2.52/src/mayutils/environment/webdrivers.py +0 -15
  164. mayutils-1.2.52/src/mayutils/export/__init__.py +0 -4
  165. mayutils-1.2.52/src/mayutils/export/html.py +0 -63
  166. mayutils-1.2.52/src/mayutils/export/images.py +0 -4
  167. mayutils-1.2.52/src/mayutils/export/pdf.py +0 -33
  168. mayutils-1.2.52/src/mayutils/export/slides.py +0 -90
  169. mayutils-1.2.52/src/mayutils/interfaces/__init__.py +0 -0
  170. mayutils-1.2.52/src/mayutils/interfaces/google.py +0 -1561
  171. mayutils-1.2.52/src/mayutils/interfaces/markdown.py +0 -227
  172. mayutils-1.2.52/src/mayutils/interfaces/microsoft/__init__.py +0 -1
  173. mayutils-1.2.52/src/mayutils/interfaces/microsoft/powerpoint/__init__.py +0 -444
  174. mayutils-1.2.52/src/mayutils/interfaces/microsoft/powerpoint/markdown.py +0 -821
  175. mayutils-1.2.52/src/mayutils/interfaces/microsoft.py +0 -0
  176. mayutils-1.2.52/src/mayutils/interfaces/pdf.py +0 -42
  177. mayutils-1.2.52/src/mayutils/interfaces/streamlit.py +0 -35
  178. mayutils-1.2.52/src/mayutils/mathematics/__init__.py +0 -15
  179. mayutils-1.2.52/src/mayutils/mathematics/numba.py +0 -71
  180. mayutils-1.2.52/src/mayutils/mathematics/numpy.py +0 -0
  181. mayutils-1.2.52/src/mayutils/objects/__init__.py +0 -0
  182. mayutils-1.2.52/src/mayutils/objects/classes.py +0 -107
  183. mayutils-1.2.52/src/mayutils/objects/colours.py +0 -355
  184. mayutils-1.2.52/src/mayutils/objects/dataframes.py +0 -660
  185. mayutils-1.2.52/src/mayutils/objects/datetime.py +0 -737
  186. mayutils-1.2.52/src/mayutils/objects/decorators.py +0 -47
  187. mayutils-1.2.52/src/mayutils/objects/dictionaries.py +0 -0
  188. mayutils-1.2.52/src/mayutils/objects/functions.py +0 -18
  189. mayutils-1.2.52/src/mayutils/objects/hashing.py +0 -30
  190. mayutils-1.2.52/src/mayutils/objects/numbers.py +0 -59
  191. mayutils-1.2.52/src/mayutils/objects/strings.py +0 -61
  192. mayutils-1.2.52/src/mayutils/objects/types.py +0 -12
  193. mayutils-1.2.52/src/mayutils/scripts/__init__.py +0 -0
  194. mayutils-1.2.52/src/mayutils/scripts/clear_cache.py +0 -180
  195. mayutils-1.2.52/src/mayutils/scripts/versioning.py +0 -152
  196. mayutils-1.2.52/src/mayutils/testing/__init__.py +0 -0
  197. mayutils-1.2.52/src/mayutils/visualisation/__init__.py +0 -0
  198. mayutils-1.2.52/src/mayutils/visualisation/console.py +0 -41
  199. mayutils-1.2.52/src/mayutils/visualisation/graphs/__init__.py +0 -3
  200. mayutils-1.2.52/src/mayutils/visualisation/graphs/combine.py +0 -51
  201. mayutils-1.2.52/src/mayutils/visualisation/graphs/matplotlib/__init__.py +0 -0
  202. mayutils-1.2.52/src/mayutils/visualisation/graphs/matplotlib/template.py +0 -0
  203. mayutils-1.2.52/src/mayutils/visualisation/graphs/plotly/__init__.py +0 -0
  204. mayutils-1.2.52/src/mayutils/visualisation/graphs/plotly/charts.py +0 -1836
  205. mayutils-1.2.52/src/mayutils/visualisation/graphs/plotly/templates.py +0 -464
  206. mayutils-1.2.52/src/mayutils/visualisation/graphs/plotly/traces.py +0 -555
  207. mayutils-1.2.52/src/mayutils/visualisation/graphs/plotly/utilities.py +0 -56
  208. mayutils-1.2.52/src/mayutils/visualisation/notebook.py +0 -115
  209. {mayutils-1.2.52 → mayutils-2.0.0}/LICENSE +0 -0
  210. {mayutils-1.2.52 → mayutils-2.0.0}/src/mayutils/data/cache/.gitkeep +0 -0
  211. /mayutils-1.2.52/src/mayutils/core/__init__.py → /mayutils-2.0.0/src/mayutils/interfaces/websites/streamlit/css/default.css +0 -0
  212. {mayutils-1.2.52/src/mayutils/data/queries → mayutils-2.0.0/src/mayutils/interfaces/websites/streamlit/images}/.gitkeep +0 -0
  213. {mayutils-1.2.52 → mayutils-2.0.0}/src/mayutils/py.typed +0 -0
@@ -0,0 +1,217 @@
1
+ Metadata-Version: 2.3
2
+ Name: mayutils
3
+ Version: 2.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: pydantic>=2.11.7
29
+ Requires-Dist: pydantic-settings>=2.10.1
30
+ 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'
31
+ Requires-Dist: asyncer>=0.0.8 ; extra == 'async'
32
+ Requires-Dist: cookiecutter>=2.6.0 ; extra == 'cli'
33
+ Requires-Dist: mayutils[console] ; extra == 'cli'
34
+ Requires-Dist: typer ; extra == 'cli'
35
+ Requires-Dist: rich>=14.1.0 ; extra == 'console'
36
+ Requires-Dist: mayutils[pandas] ; extra == 'dataframes'
37
+ Requires-Dist: modin[all]>=0.35.0 ; extra == 'dataframes'
38
+ Requires-Dist: polars>=1.32.3 ; extra == 'dataframes'
39
+ Requires-Dist: dask ; extra == 'dataframes'
40
+ Requires-Dist: mayutils[numerics] ; extra == 'datetime'
41
+ Requires-Dist: pendulum[test]>=3.1.0 ; extra == 'datetime'
42
+ Requires-Dist: gitpython>=3.1.45 ; extra == 'filesystem'
43
+ Requires-Dist: watchdog>=6.0.0 ; extra == 'filesystem'
44
+ Requires-Dist: mayutils[numerics] ; extra == 'financials'
45
+ Requires-Dist: numpy-financial>=1.0.0 ; extra == 'financials'
46
+ Requires-Dist: google-api-python-client>=2.179.0 ; extra == 'google'
47
+ Requires-Dist: google-auth>=2.40.3 ; extra == 'google'
48
+ Requires-Dist: google-auth-httplib2>=0.2.0 ; extra == 'google'
49
+ Requires-Dist: google-auth-oauthlib>=1.2.2 ; extra == 'google'
50
+ Requires-Dist: google-cloud-storage>=3.3.0 ; extra == 'google'
51
+ Requires-Dist: mayutils[numerics] ; extra == 'mathematics'
52
+ Requires-Dist: sympy ; extra == 'mathematics'
53
+ Requires-Dist: numba>=0.62.0rc1 ; extra == 'mathematics'
54
+ Requires-Dist: fastexcel>=0.14 ; extra == 'microsoft'
55
+ Requires-Dist: openpyxl>=3.1.5 ; extra == 'microsoft'
56
+ Requires-Dist: python-docx>=1.2.0 ; extra == 'microsoft'
57
+ Requires-Dist: python-pptx>=1.0.2 ; extra == 'microsoft'
58
+ Requires-Dist: ipykernel>=6.30.1 ; extra == 'notebook'
59
+ Requires-Dist: itables>=2.4.5 ; extra == 'notebook'
60
+ Requires-Dist: jupyter>=1.1.1 ; extra == 'notebook'
61
+ Requires-Dist: jupysql>=0.11.1 ; extra == 'notebook'
62
+ Requires-Dist: mayutils[console] ; extra == 'notebook'
63
+ Requires-Dist: nbconvert>=7.16.6 ; extra == 'notebook'
64
+ Requires-Dist: unicodeit>=0.7.5 ; extra == 'notebook'
65
+ Requires-Dist: quarto-cli>=1.9.37 ; extra == 'notebook'
66
+ Requires-Dist: numpy>=2.3.2 ; extra == 'numerics'
67
+ Requires-Dist: mayutils[numerics] ; extra == 'pandas'
68
+ Requires-Dist: pandas>=2.3.2 ; extra == 'pandas'
69
+ Requires-Dist: pyarrow>=21.0.0 ; extra == 'pandas'
70
+ Requires-Dist: pillow>=11.3.0 ; extra == 'pdf'
71
+ Requires-Dist: pymupdf>=1.26.4 ; extra == 'pdf'
72
+ Requires-Dist: mayutils[numerics] ; extra == 'plotting'
73
+ Requires-Dist: dataframe-image>=0.2.7 ; extra == 'plotting'
74
+ Requires-Dist: great-tables>=0.18.0 ; extra == 'plotting'
75
+ Requires-Dist: html2image>=2.0.7 ; extra == 'plotting'
76
+ Requires-Dist: kaleido>=1.0.0 ; extra == 'plotting'
77
+ Requires-Dist: markdown ; extra == 'plotting'
78
+ Requires-Dist: matplotlib>=3.10.5 ; extra == 'plotting'
79
+ Requires-Dist: mistune>=3.2.0 ; extra == 'plotting'
80
+ Requires-Dist: pillow>=11.3.0 ; extra == 'plotting'
81
+ Requires-Dist: plotly>=6.3.0 ; extra == 'plotting'
82
+ Requires-Dist: scipy>=1.16.1 ; extra == 'plotting'
83
+ Requires-Dist: mayutils[console,pandas,datetime,notebook,plotting,secrets] ; extra == 'recommended'
84
+ Requires-Dist: python-dotenv>=1.1.1 ; extra == 'secrets'
85
+ Requires-Dist: keyring>=25.6.0 ; extra == 'secrets'
86
+ Requires-Dist: mayutils[sql] ; extra == 'snowflake'
87
+ Requires-Dist: snowflake-connector-python[secure-local-storage]>=3.17.2 ; extra == 'snowflake'
88
+ Requires-Dist: snowflake-snowpark-python>=1.27 ; extra == 'snowflake'
89
+ Requires-Dist: snowflake-sqlalchemy>=1.7.6 ; extra == 'snowflake'
90
+ Requires-Dist: sqlalchemy>=2.0.43,<2.1 ; extra == 'sql'
91
+ Requires-Dist: mayutils[numerics] ; extra == 'statistics'
92
+ Requires-Dist: scikit-learn>=1.7.1 ; extra == 'statistics'
93
+ Requires-Dist: scipy>=1.16.1 ; extra == 'statistics'
94
+ Requires-Dist: statsmodels ; extra == 'statistics'
95
+ Requires-Dist: bcrypt>=4.3.0 ; extra == 'streamlit'
96
+ Requires-Dist: streamlit>=1.49.0 ; extra == 'streamlit'
97
+ Requires-Dist: mayutils[cli,pandas,plotting,snowflake] ; extra == 'tui'
98
+ Requires-Dist: pyyaml>=6.0.2 ; extra == 'tui'
99
+ Requires-Dist: textual>=8.2.7 ; extra == 'tui'
100
+ Requires-Dist: textual-image>=0.13.2 ; extra == 'tui'
101
+ Requires-Dist: google-api-python-client-stubs>=1.34.0 ; extra == 'types'
102
+ Requires-Dist: lxml-stubs>=0.5.1 ; extra == 'types'
103
+ Requires-Dist: pandas-stubs>=2.3.2.250827 ; extra == 'types'
104
+ Requires-Dist: plotly-stubs>=0.1.3 ; extra == 'types'
105
+ Requires-Dist: pyarrow-stubs>=20.0.0.20251215 ; extra == 'types'
106
+ Requires-Dist: scipy-stubs>=1.16.2.4 ; extra == 'types'
107
+ Requires-Dist: types-cachetools>=6.2.0.20251022 ; extra == 'types'
108
+ Requires-Dist: types-decorator>=5.2.0.20250324 ; extra == 'types'
109
+ Requires-Dist: types-markdown>=3.10.0.20251106 ; extra == 'types'
110
+ Requires-Dist: types-openpyxl>=3.1.5.20250919 ; extra == 'types'
111
+ Requires-Dist: types-pycurl>=7.45.7.20250926 ; extra == 'types'
112
+ Requires-Dist: types-python-dateutil>=2.9.0.20251008 ; extra == 'types'
113
+ Requires-Dist: types-pyyaml>=6.0.12.20250915 ; extra == 'types'
114
+ Requires-Dist: types-requests>=2.32.4.20250913 ; extra == 'types'
115
+ Requires-Dist: types-simplejson>=3.20.0.20250822 ; extra == 'types'
116
+ Requires-Dist: types-six>=1.17.0.20250515 ; extra == 'types'
117
+ Requires-Dist: types-toml>=0.10.8.20240310 ; extra == 'types'
118
+ Requires-Dist: chromedriver-autoinstaller>=0.6.4 ; extra == 'web'
119
+ Requires-Dist: playwright>=1.55.0 ; extra == 'web'
120
+ Requires-Dist: selenium>=4.35.0 ; extra == 'web'
121
+ Maintainer: Mayuran Visakan
122
+ Maintainer-email: Mayuran Visakan <mayuran.k.v@gmail.com>
123
+ Requires-Python: >=3.13, <4.0
124
+ Provides-Extra: all
125
+ Provides-Extra: async
126
+ Provides-Extra: cli
127
+ Provides-Extra: console
128
+ Provides-Extra: dataframes
129
+ Provides-Extra: datetime
130
+ Provides-Extra: filesystem
131
+ Provides-Extra: financials
132
+ Provides-Extra: google
133
+ Provides-Extra: mathematics
134
+ Provides-Extra: microsoft
135
+ Provides-Extra: notebook
136
+ Provides-Extra: numerics
137
+ Provides-Extra: pandas
138
+ Provides-Extra: pdf
139
+ Provides-Extra: plotting
140
+ Provides-Extra: recommended
141
+ Provides-Extra: secrets
142
+ Provides-Extra: snowflake
143
+ Provides-Extra: sql
144
+ Provides-Extra: statistics
145
+ Provides-Extra: streamlit
146
+ Provides-Extra: tui
147
+ Provides-Extra: types
148
+ Provides-Extra: web
149
+ Description-Content-Type: text/markdown
150
+
151
+ # mayutils
152
+
153
+ [![CI](https://github.com/mayuran-visakan/mayutils/actions/workflows/ci.yaml/badge.svg)](https://github.com/mayuran-visakan/mayutils/actions/workflows/ci.yaml) [![Documentation](https://img.shields.io/badge/Documentation-mkdocs%20material-indigo.svg)](https://mayuran-visakan.github.io/mayutils/) [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](./LICENSE)
154
+
155
+ 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.
156
+
157
+ ## Quick Start
158
+
159
+ ```zsh
160
+ uv add mayutils # core only
161
+ uv add "mayutils[plotting]" # + plotly/kaleido/matplotlib/scipy
162
+ uv add "mayutils[recommended]" # curated data-analysis set (console+pandas+datetime+notebook+plotting+secrets)
163
+ uv add "mayutils[all]" # everything
164
+ ```
165
+
166
+ ```python
167
+ import mayutils
168
+ from mayutils.objects.numbers import prettify
169
+
170
+ mayutils.setup()
171
+ print(prettify(num=1_234_567)) # "1.23M"
172
+ ```
173
+
174
+ ## Dependency Groups
175
+
176
+ | Group | Use it for |
177
+ | ------------- | ----------------------------------------------------------------------------- |
178
+ | `plotting` | `plotly`, `kaleido`, `matplotlib`, `scipy`, `great-tables` |
179
+ | `notebook` | `jupyter`, `ipykernel`, `nbconvert`, `itables`, `jupysql`, `quarto-cli` |
180
+ | `pandas` | `pandas`, `pyarrow` |
181
+ | `dataframes` | `polars`, `modin`, `dask` (+ `pandas`) |
182
+ | `mathematics` | `sympy`, `numba` |
183
+ | `statistics` | `scikit-learn`, `scipy`, `statsmodels` |
184
+ | `financials` | `numpy-financial` |
185
+ | `google` | Google Drive / Sheets / Cloud Storage + auth |
186
+ | `microsoft` | `python-pptx`, `openpyxl` |
187
+ | `sql` | `sqlalchemy` |
188
+ | `snowflake` | `snowflake-connector-python`, `snowflake-sqlalchemy` (+ `sql`) |
189
+ | `streamlit` | `streamlit` |
190
+ | `web` | `selenium`, `playwright`, `chromedriver-autoinstaller` |
191
+ | `pdf` | `pymupdf`, `pillow` |
192
+ | `datetime` | `pendulum` |
193
+ | `cli` | `typer`, `cookiecutter` |
194
+ | `filesystem` | `gitpython`, `watchdog` |
195
+ | `secrets` | `python-dotenv`, `keyring` |
196
+ | `recommended` | meta: `console` + `pandas` + `datetime` + `notebook` + `plotting` + `secrets` |
197
+ | `all` | Every runtime extra |
198
+
199
+ Full details: [docs/guides/dependency-groups.md](docs/guides/dependency-groups.md).
200
+
201
+ ## Documentation
202
+
203
+ - [Getting Started](docs/getting-started.md)
204
+ - [Development](docs/guides/development.md)
205
+ - [Testing](docs/guides/testing.md)
206
+ - [Documentation](docs/guides/documentation.md)
207
+ - [Roadmap](docs/roadmap.md) — translated from the legacy `.todo` file
208
+ - [Changelog](docs/changelog.md)
209
+ - [API Reference](https://mayuran-visakan.github.io/mayutils/reference/) — auto-generated from docstrings
210
+
211
+ ## Contributing
212
+
213
+ See the [contributing guide](docs/contributing.md) for setup, commit conventions (Conventional Commits), and release flow.
214
+
215
+ ## License
216
+
217
+ MIT — see [LICENSE](LICENSE).
@@ -0,0 +1,67 @@
1
+ # mayutils
2
+
3
+ [![CI](https://github.com/mayuran-visakan/mayutils/actions/workflows/ci.yaml/badge.svg)](https://github.com/mayuran-visakan/mayutils/actions/workflows/ci.yaml) [![Documentation](https://img.shields.io/badge/Documentation-mkdocs%20material-indigo.svg)](https://mayuran-visakan.github.io/mayutils/) [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](./LICENSE)
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://mayuran-visakan.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,257 @@
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
+ "pydantic>=2.11.7",
40
+ "pydantic-settings>=2.10.1"
41
+ ]
42
+ description = "Utilities for Python from Mayuran Visakan"
43
+ license = {file = "LICENSE"}
44
+ maintainers = [{email = "mayuran.k.v@gmail.com", name = "Mayuran Visakan"}]
45
+ name = "mayutils"
46
+ readme = "README.md"
47
+ requires-python = ">=3.13,<4.0"
48
+ version = "2.0.0"
49
+
50
+ [project.optional-dependencies]
51
+ all = [
52
+ "mayutils[async,cli,console,dataframes,datetime,filesystem,financials,google,mathematics,microsoft,notebook,numerics,pandas,pdf,plotting,secrets,snowflake,sql,statistics,streamlit,tui,web]"
53
+ ]
54
+ async = [
55
+ "asyncer>=0.0.8"
56
+ ]
57
+ cli = [
58
+ "cookiecutter>=2.6.0",
59
+ "mayutils[console]",
60
+ "typer"
61
+ ]
62
+ console = [
63
+ "rich>=14.1.0"
64
+ ]
65
+ dataframes = [
66
+ "mayutils[pandas]",
67
+ "modin[all]>=0.35.0",
68
+ "polars>=1.32.3",
69
+ "dask"
70
+ ]
71
+ datetime = [
72
+ "mayutils[numerics]",
73
+ "pendulum[test]>=3.1.0"
74
+ ]
75
+ filesystem = [
76
+ "gitpython>=3.1.45",
77
+ "watchdog>=6.0.0"
78
+ ]
79
+ financials = [
80
+ "mayutils[numerics]",
81
+ "numpy-financial>=1.0.0"
82
+ ]
83
+ google = [
84
+ "google-api-python-client>=2.179.0",
85
+ "google-auth>=2.40.3",
86
+ "google-auth-httplib2>=0.2.0",
87
+ "google-auth-oauthlib>=1.2.2",
88
+ "google-cloud-storage>=3.3.0"
89
+ ]
90
+ mathematics = [
91
+ "mayutils[numerics]",
92
+ "sympy",
93
+ "numba>=0.62.0rc1"
94
+ ]
95
+ microsoft = [
96
+ "fastexcel>=0.14",
97
+ "openpyxl>=3.1.5",
98
+ "python-docx>=1.2.0",
99
+ "python-pptx>=1.0.2"
100
+ ]
101
+ notebook = [
102
+ "ipykernel>=6.30.1",
103
+ "itables>=2.4.5",
104
+ "jupyter>=1.1.1",
105
+ "jupysql>=0.11.1",
106
+ "mayutils[console]",
107
+ "nbconvert>=7.16.6",
108
+ "unicodeit>=0.7.5",
109
+ "quarto-cli>=1.9.37"
110
+ ]
111
+ numerics = [
112
+ "numpy>=2.3.2"
113
+ ]
114
+ pandas = [
115
+ "mayutils[numerics]",
116
+ "pandas>=2.3.2",
117
+ "pyarrow>=21.0.0"
118
+ ]
119
+ pdf = [
120
+ "pillow>=11.3.0",
121
+ "pymupdf>=1.26.4"
122
+ ]
123
+ plotting = [
124
+ "mayutils[numerics]",
125
+ "dataframe-image>=0.2.7",
126
+ "great-tables>=0.18.0",
127
+ "html2image>=2.0.7",
128
+ "kaleido>=1.0.0",
129
+ "markdown",
130
+ "matplotlib>=3.10.5",
131
+ "mistune>=3.2.0",
132
+ "pillow>=11.3.0",
133
+ "plotly>=6.3.0",
134
+ "scipy>=1.16.1"
135
+ ]
136
+ recommended = [
137
+ "mayutils[console,pandas,datetime,notebook,plotting,secrets]"
138
+ ]
139
+ secrets = [
140
+ "python-dotenv>=1.1.1",
141
+ "keyring>=25.6.0"
142
+ ]
143
+ snowflake = [
144
+ "mayutils[sql]",
145
+ "snowflake-connector-python[secure-local-storage]>=3.17.2",
146
+ "snowflake-snowpark-python>=1.27",
147
+ "snowflake-sqlalchemy>=1.7.6"
148
+ ]
149
+ sql = [
150
+ "sqlalchemy>=2.0.43,<2.1"
151
+ ]
152
+ statistics = [
153
+ "mayutils[numerics]",
154
+ "scikit-learn>=1.7.1",
155
+ "scipy>=1.16.1",
156
+ "statsmodels"
157
+ ]
158
+ streamlit = [
159
+ "bcrypt>=4.3.0",
160
+ "streamlit>=1.49.0"
161
+ ]
162
+ tui = [
163
+ "mayutils[cli,pandas,plotting,snowflake]",
164
+ "pyyaml>=6.0.2",
165
+ "textual>=8.2.7",
166
+ "textual-image>=0.13.2"
167
+ ]
168
+ types = [
169
+ "google-api-python-client-stubs>=1.34.0",
170
+ "lxml-stubs>=0.5.1",
171
+ "pandas-stubs>=2.3.2.250827",
172
+ "plotly-stubs>=0.1.3",
173
+ "pyarrow-stubs>=20.0.0.20251215",
174
+ "scipy-stubs>=1.16.2.4",
175
+ "types-cachetools>=6.2.0.20251022",
176
+ "types-decorator>=5.2.0.20250324",
177
+ "types-markdown>=3.10.0.20251106",
178
+ "types-openpyxl>=3.1.5.20250919",
179
+ "types-pycurl>=7.45.7.20250926",
180
+ "types-python-dateutil>=2.9.0.20251008",
181
+ "types-pyyaml>=6.0.12.20250915",
182
+ "types-requests>=2.32.4.20250913",
183
+ "types-simplejson>=3.20.0.20250822",
184
+ "types-six>=1.17.0.20250515",
185
+ "types-toml>=0.10.8.20240310"
186
+ ]
187
+ web = [
188
+ "chromedriver-autoinstaller>=0.6.4",
189
+ "playwright>=1.55.0",
190
+ "selenium>=4.35.0"
191
+ ]
192
+
193
+ [project.scripts]
194
+ clear_cache = "mayutils.scripts.clear_cache:app"
195
+ generate_encryption_key = "mayutils.environment.oauth:generate_fernet_key"
196
+ generate_plotly_stubs = "mayutils.scripts.generate_plotly_stubs:app"
197
+ refresh_stubs = "mayutils.scripts.refresh_stubs:app"
198
+ tuiplot = "mayutils.interfaces.code.tui.tuiplot:app"
199
+
200
+ [tool.commitizen]
201
+ annotated_tag = true
202
+ changelog_file = "CHANGELOG.md"
203
+ changelog_incremental = true
204
+ name = "cz_conventional_commits"
205
+ pre_bump_hooks = [
206
+ "uv lock",
207
+ "git add uv.lock"
208
+ ]
209
+ tag_format = "v$version"
210
+ update_changelog_on_bump = true
211
+ version = "2.0.0"
212
+ version_files = ["pyproject.toml:^version"]
213
+
214
+ [tool.mdformat]
215
+ wrap = 1000
216
+
217
+ [tool.numpydoc_validation]
218
+ checks = [
219
+ "all",
220
+ "PR04",
221
+ "RT03"
222
+ ]
223
+
224
+ [tool.pyright]
225
+ exclude = [
226
+ "**/__pycache__",
227
+ "**/.venv",
228
+ "**/.ruff_cache",
229
+ "**/.pytest_cache",
230
+ "**/.mypy_cache",
231
+ "**/node_modules",
232
+ "Templates",
233
+ "typings",
234
+ "**/.*"
235
+ ]
236
+ pythonVersion = "3.13"
237
+ stubPath = "typings"
238
+ typeCheckingMode = "strict"
239
+ venv = ".venv"
240
+ venvPath = "."
241
+
242
+ [tool.pytest.ini_options]
243
+ addopts = "-ra --doctest-modules"
244
+ doctest_optionflags = ["ELLIPSIS", "NORMALIZE_WHITESPACE"]
245
+ filterwarnings = [
246
+ "ignore:builtin type Swig.*has no __module__:DeprecationWarning",
247
+ "ignore:builtin type swigvarlink has no __module__:DeprecationWarning",
248
+ "ignore:.*scattermapbox.*:DeprecationWarning"
249
+ ]
250
+ testpaths = ["src/mayutils", "tests"]
251
+
252
+ [tool.uv]
253
+ default-groups = ["dev"]
254
+ prerelease = "if-necessary-or-explicit"
255
+
256
+ [tool.uv.sources]
257
+ 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 # noqa: PLC0415
48
+ from mayutils.environment.logging import Logger # noqa: PLC0415
49
+
50
+ if logging:
51
+ Logger.configure()
52
+
53
+ if plotly:
54
+ try:
55
+ from mayutils.visualisation.graphs.plotly.templates import register_templates # noqa: PLC0415
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 # noqa: PLC0415
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 # noqa: PLC0415
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
+ """