meerschaum 2.9.5__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 (323) hide show
  1. meerschaum-3.0.0/MANIFEST.in +2 -0
  2. meerschaum-3.0.0/NOTICE +2 -0
  3. {meerschaum-2.9.5 → meerschaum-3.0.0}/PKG-INFO +94 -96
  4. {meerschaum-2.9.5 → meerschaum-3.0.0}/meerschaum/__init__.py +5 -2
  5. {meerschaum-2.9.5 → meerschaum-3.0.0}/meerschaum/_internal/__init__.py +1 -0
  6. {meerschaum-2.9.5 → meerschaum-3.0.0}/meerschaum/_internal/arguments/_parse_arguments.py +4 -4
  7. {meerschaum-2.9.5 → meerschaum-3.0.0}/meerschaum/_internal/arguments/_parser.py +33 -4
  8. meerschaum-3.0.0/meerschaum/_internal/cli/__init__.py +6 -0
  9. meerschaum-3.0.0/meerschaum/_internal/cli/daemons.py +103 -0
  10. meerschaum-3.0.0/meerschaum/_internal/cli/entry.py +220 -0
  11. meerschaum-3.0.0/meerschaum/_internal/cli/workers.py +435 -0
  12. {meerschaum-2.9.5 → meerschaum-3.0.0}/meerschaum/_internal/docs/index.py +48 -2
  13. {meerschaum-2.9.5 → meerschaum-3.0.0}/meerschaum/_internal/entry.py +50 -14
  14. {meerschaum-2.9.5 → meerschaum-3.0.0}/meerschaum/_internal/shell/Shell.py +121 -29
  15. {meerschaum-2.9.5 → meerschaum-3.0.0}/meerschaum/_internal/shell/__init__.py +4 -1
  16. meerschaum-3.0.0/meerschaum/_internal/static.py +359 -0
  17. {meerschaum-2.9.5 → meerschaum-3.0.0}/meerschaum/_internal/term/TermPageHandler.py +1 -2
  18. {meerschaum-2.9.5 → meerschaum-3.0.0}/meerschaum/_internal/term/__init__.py +40 -6
  19. {meerschaum-2.9.5 → meerschaum-3.0.0}/meerschaum/_internal/term/tools.py +33 -8
  20. {meerschaum-2.9.5 → meerschaum-3.0.0}/meerschaum/actions/__init__.py +6 -4
  21. {meerschaum-2.9.5 → meerschaum-3.0.0}/meerschaum/actions/api.py +53 -13
  22. {meerschaum-2.9.5 → meerschaum-3.0.0}/meerschaum/actions/attach.py +1 -0
  23. {meerschaum-2.9.5 → meerschaum-3.0.0}/meerschaum/actions/bootstrap.py +8 -8
  24. {meerschaum-2.9.5 → meerschaum-3.0.0}/meerschaum/actions/delete.py +4 -2
  25. {meerschaum-2.9.5 → meerschaum-3.0.0}/meerschaum/actions/edit.py +171 -25
  26. {meerschaum-2.9.5 → meerschaum-3.0.0}/meerschaum/actions/login.py +8 -8
  27. {meerschaum-2.9.5 → meerschaum-3.0.0}/meerschaum/actions/register.py +143 -6
  28. meerschaum-3.0.0/meerschaum/actions/reload.py +38 -0
  29. {meerschaum-2.9.5 → meerschaum-3.0.0}/meerschaum/actions/restart.py +14 -0
  30. {meerschaum-2.9.5 → meerschaum-3.0.0}/meerschaum/actions/show.py +184 -31
  31. {meerschaum-2.9.5 → meerschaum-3.0.0}/meerschaum/actions/start.py +166 -17
  32. {meerschaum-2.9.5 → meerschaum-3.0.0}/meerschaum/actions/stop.py +38 -2
  33. {meerschaum-2.9.5 → meerschaum-3.0.0}/meerschaum/actions/sync.py +7 -2
  34. {meerschaum-2.9.5 → meerschaum-3.0.0}/meerschaum/actions/tag.py +9 -8
  35. {meerschaum-2.9.5 → meerschaum-3.0.0}/meerschaum/actions/verify.py +5 -8
  36. {meerschaum-2.9.5 → meerschaum-3.0.0}/meerschaum/api/__init__.py +45 -15
  37. {meerschaum-2.9.5 → meerschaum-3.0.0}/meerschaum/api/_events.py +46 -4
  38. meerschaum-3.0.0/meerschaum/api/_oauth2.py +205 -0
  39. meerschaum-3.0.0/meerschaum/api/_tokens.py +102 -0
  40. {meerschaum-2.9.5 → meerschaum-3.0.0}/meerschaum/api/dash/__init__.py +0 -3
  41. {meerschaum-2.9.5 → meerschaum-3.0.0}/meerschaum/api/dash/callbacks/__init__.py +1 -0
  42. {meerschaum-2.9.5 → meerschaum-3.0.0}/meerschaum/api/dash/callbacks/custom.py +4 -3
  43. {meerschaum-2.9.5 → meerschaum-3.0.0}/meerschaum/api/dash/callbacks/dashboard.py +198 -118
  44. {meerschaum-2.9.5 → meerschaum-3.0.0}/meerschaum/api/dash/callbacks/jobs.py +14 -7
  45. {meerschaum-2.9.5 → meerschaum-3.0.0}/meerschaum/api/dash/callbacks/login.py +10 -1
  46. meerschaum-3.0.0/meerschaum/api/dash/callbacks/pipes.py +235 -0
  47. {meerschaum-2.9.5 → meerschaum-3.0.0}/meerschaum/api/dash/callbacks/plugins.py +0 -1
  48. {meerschaum-2.9.5 → meerschaum-3.0.0}/meerschaum/api/dash/callbacks/register.py +10 -3
  49. {meerschaum-2.9.5 → meerschaum-3.0.0}/meerschaum/api/dash/callbacks/settings/password_reset.py +2 -2
  50. meerschaum-3.0.0/meerschaum/api/dash/callbacks/tokens.py +389 -0
  51. {meerschaum-2.9.5 → meerschaum-3.0.0}/meerschaum/api/dash/components.py +36 -15
  52. {meerschaum-2.9.5 → meerschaum-3.0.0}/meerschaum/api/dash/jobs.py +1 -1
  53. {meerschaum-2.9.5 → meerschaum-3.0.0}/meerschaum/api/dash/keys.py +35 -93
  54. {meerschaum-2.9.5 → meerschaum-3.0.0}/meerschaum/api/dash/pages/__init__.py +2 -1
  55. {meerschaum-2.9.5 → meerschaum-3.0.0}/meerschaum/api/dash/pages/dashboard.py +1 -20
  56. meerschaum-2.9.5/meerschaum/api/dash/pages/job.py → meerschaum-3.0.0/meerschaum/api/dash/pages/jobs.py +10 -7
  57. {meerschaum-2.9.5 → meerschaum-3.0.0}/meerschaum/api/dash/pages/login.py +2 -2
  58. meerschaum-3.0.0/meerschaum/api/dash/pages/pipes.py +33 -0
  59. {meerschaum-2.9.5 → meerschaum-3.0.0}/meerschaum/api/dash/pages/settings/password_reset.py +1 -1
  60. meerschaum-3.0.0/meerschaum/api/dash/pages/tokens.py +53 -0
  61. {meerschaum-2.9.5 → meerschaum-3.0.0}/meerschaum/api/dash/pipes.py +382 -95
  62. {meerschaum-2.9.5 → meerschaum-3.0.0}/meerschaum/api/dash/sessions.py +12 -0
  63. meerschaum-3.0.0/meerschaum/api/dash/tokens.py +603 -0
  64. {meerschaum-2.9.5 → meerschaum-3.0.0}/meerschaum/api/dash/websockets.py +1 -1
  65. {meerschaum-2.9.5 → meerschaum-3.0.0}/meerschaum/api/dash/webterm.py +18 -6
  66. meerschaum-3.0.0/meerschaum/api/models/__init__.py +31 -0
  67. meerschaum-3.0.0/meerschaum/api/models/_actions.py +22 -0
  68. meerschaum-3.0.0/meerschaum/api/models/_pipes.py +105 -0
  69. meerschaum-3.0.0/meerschaum/api/models/_tokens.py +81 -0
  70. {meerschaum-2.9.5 → meerschaum-3.0.0}/meerschaum/api/resources/static/js/terminado.js +3 -0
  71. meerschaum-3.0.0/meerschaum/api/resources/static/js/xterm-addon-unicode11.js +2 -0
  72. {meerschaum-2.9.5 → meerschaum-3.0.0}/meerschaum/api/resources/templates/termpage.html +13 -0
  73. {meerschaum-2.9.5 → meerschaum-3.0.0}/meerschaum/api/routes/__init__.py +1 -0
  74. {meerschaum-2.9.5 → meerschaum-3.0.0}/meerschaum/api/routes/_actions.py +3 -4
  75. {meerschaum-2.9.5 → meerschaum-3.0.0}/meerschaum/api/routes/_connectors.py +3 -7
  76. {meerschaum-2.9.5 → meerschaum-3.0.0}/meerschaum/api/routes/_jobs.py +26 -35
  77. meerschaum-3.0.0/meerschaum/api/routes/_login.py +183 -0
  78. {meerschaum-2.9.5 → meerschaum-3.0.0}/meerschaum/api/routes/_misc.py +5 -10
  79. {meerschaum-2.9.5 → meerschaum-3.0.0}/meerschaum/api/routes/_pipes.py +178 -143
  80. {meerschaum-2.9.5 → meerschaum-3.0.0}/meerschaum/api/routes/_plugins.py +38 -28
  81. meerschaum-3.0.0/meerschaum/api/routes/_tokens.py +236 -0
  82. {meerschaum-2.9.5 → meerschaum-3.0.0}/meerschaum/api/routes/_users.py +47 -35
  83. {meerschaum-2.9.5 → meerschaum-3.0.0}/meerschaum/api/routes/_version.py +3 -3
  84. {meerschaum-2.9.5 → meerschaum-3.0.0}/meerschaum/api/routes/_webterm.py +3 -3
  85. {meerschaum-2.9.5 → meerschaum-3.0.0}/meerschaum/config/__init__.py +100 -30
  86. {meerschaum-2.9.5 → meerschaum-3.0.0}/meerschaum/config/_default.py +132 -64
  87. {meerschaum-2.9.5 → meerschaum-3.0.0}/meerschaum/config/_edit.py +38 -32
  88. {meerschaum-2.9.5 → meerschaum-3.0.0}/meerschaum/config/_formatting.py +2 -0
  89. {meerschaum-2.9.5 → meerschaum-3.0.0}/meerschaum/config/_patch.py +10 -8
  90. {meerschaum-2.9.5 → meerschaum-3.0.0}/meerschaum/config/_paths.py +133 -13
  91. {meerschaum-2.9.5 → meerschaum-3.0.0}/meerschaum/config/_read_config.py +87 -36
  92. {meerschaum-2.9.5 → meerschaum-3.0.0}/meerschaum/config/_sync.py +6 -3
  93. {meerschaum-2.9.5 → meerschaum-3.0.0}/meerschaum/config/_version.py +1 -1
  94. meerschaum-3.0.0/meerschaum/config/environment.py +262 -0
  95. {meerschaum-2.9.5 → meerschaum-3.0.0}/meerschaum/config/stack/__init__.py +37 -15
  96. meerschaum-3.0.0/meerschaum/config/static.py +18 -0
  97. {meerschaum-2.9.5 → meerschaum-3.0.0}/meerschaum/connectors/_Connector.py +11 -6
  98. {meerschaum-2.9.5 → meerschaum-3.0.0}/meerschaum/connectors/__init__.py +41 -22
  99. {meerschaum-2.9.5 → meerschaum-3.0.0}/meerschaum/connectors/api/_APIConnector.py +34 -6
  100. {meerschaum-2.9.5 → meerschaum-3.0.0}/meerschaum/connectors/api/_actions.py +2 -2
  101. {meerschaum-2.9.5 → meerschaum-3.0.0}/meerschaum/connectors/api/_jobs.py +12 -1
  102. {meerschaum-2.9.5 → meerschaum-3.0.0}/meerschaum/connectors/api/_login.py +33 -7
  103. {meerschaum-2.9.5 → meerschaum-3.0.0}/meerschaum/connectors/api/_misc.py +2 -2
  104. {meerschaum-2.9.5 → meerschaum-3.0.0}/meerschaum/connectors/api/_pipes.py +23 -32
  105. {meerschaum-2.9.5 → meerschaum-3.0.0}/meerschaum/connectors/api/_plugins.py +2 -2
  106. {meerschaum-2.9.5 → meerschaum-3.0.0}/meerschaum/connectors/api/_request.py +1 -1
  107. meerschaum-3.0.0/meerschaum/connectors/api/_tokens.py +146 -0
  108. {meerschaum-2.9.5 → meerschaum-3.0.0}/meerschaum/connectors/api/_users.py +70 -58
  109. meerschaum-3.0.0/meerschaum/connectors/instance/_InstanceConnector.py +83 -0
  110. meerschaum-3.0.0/meerschaum/connectors/instance/__init__.py +10 -0
  111. meerschaum-3.0.0/meerschaum/connectors/instance/_pipes.py +442 -0
  112. meerschaum-3.0.0/meerschaum/connectors/instance/_plugins.py +159 -0
  113. meerschaum-3.0.0/meerschaum/connectors/instance/_tokens.py +317 -0
  114. meerschaum-3.0.0/meerschaum/connectors/instance/_users.py +188 -0
  115. {meerschaum-2.9.5 → meerschaum-3.0.0}/meerschaum/connectors/parse.py +5 -2
  116. {meerschaum-2.9.5 → meerschaum-3.0.0}/meerschaum/connectors/sql/_SQLConnector.py +22 -5
  117. {meerschaum-2.9.5 → meerschaum-3.0.0}/meerschaum/connectors/sql/_cli.py +12 -11
  118. {meerschaum-2.9.5 → meerschaum-3.0.0}/meerschaum/connectors/sql/_create_engine.py +12 -168
  119. {meerschaum-2.9.5 → meerschaum-3.0.0}/meerschaum/connectors/sql/_fetch.py +2 -18
  120. {meerschaum-2.9.5 → meerschaum-3.0.0}/meerschaum/connectors/sql/_pipes.py +295 -278
  121. {meerschaum-2.9.5 → meerschaum-3.0.0}/meerschaum/connectors/sql/_plugins.py +29 -0
  122. {meerschaum-2.9.5 → meerschaum-3.0.0}/meerschaum/connectors/sql/_sql.py +46 -21
  123. {meerschaum-2.9.5 → meerschaum-3.0.0}/meerschaum/connectors/sql/_users.py +36 -2
  124. meerschaum-3.0.0/meerschaum/connectors/sql/tables/__init__.py +391 -0
  125. {meerschaum-2.9.5 → meerschaum-3.0.0}/meerschaum/connectors/valkey/_ValkeyConnector.py +5 -7
  126. {meerschaum-2.9.5 → meerschaum-3.0.0}/meerschaum/connectors/valkey/_pipes.py +60 -31
  127. {meerschaum-2.9.5 → meerschaum-3.0.0}/meerschaum/connectors/valkey/_plugins.py +2 -26
  128. {meerschaum-2.9.5 → meerschaum-3.0.0}/meerschaum/core/Pipe/__init__.py +115 -85
  129. {meerschaum-2.9.5 → meerschaum-3.0.0}/meerschaum/core/Pipe/_attributes.py +425 -124
  130. {meerschaum-2.9.5 → meerschaum-3.0.0}/meerschaum/core/Pipe/_bootstrap.py +54 -24
  131. meerschaum-3.0.0/meerschaum/core/Pipe/_cache.py +555 -0
  132. {meerschaum-2.9.5 → meerschaum-3.0.0}/meerschaum/core/Pipe/_clear.py +0 -11
  133. {meerschaum-2.9.5 → meerschaum-3.0.0}/meerschaum/core/Pipe/_data.py +96 -68
  134. {meerschaum-2.9.5 → meerschaum-3.0.0}/meerschaum/core/Pipe/_deduplicate.py +0 -13
  135. {meerschaum-2.9.5 → meerschaum-3.0.0}/meerschaum/core/Pipe/_delete.py +12 -21
  136. {meerschaum-2.9.5 → meerschaum-3.0.0}/meerschaum/core/Pipe/_drop.py +11 -23
  137. {meerschaum-2.9.5 → meerschaum-3.0.0}/meerschaum/core/Pipe/_dtypes.py +49 -19
  138. {meerschaum-2.9.5 → meerschaum-3.0.0}/meerschaum/core/Pipe/_edit.py +14 -4
  139. {meerschaum-2.9.5 → meerschaum-3.0.0}/meerschaum/core/Pipe/_fetch.py +1 -1
  140. {meerschaum-2.9.5 → meerschaum-3.0.0}/meerschaum/core/Pipe/_index.py +8 -14
  141. {meerschaum-2.9.5 → meerschaum-3.0.0}/meerschaum/core/Pipe/_show.py +5 -5
  142. {meerschaum-2.9.5 → meerschaum-3.0.0}/meerschaum/core/Pipe/_sync.py +123 -204
  143. {meerschaum-2.9.5 → meerschaum-3.0.0}/meerschaum/core/Pipe/_verify.py +4 -4
  144. {meerschaum-2.9.5/meerschaum/plugins → meerschaum-3.0.0/meerschaum/core/Plugin}/_Plugin.py +16 -12
  145. {meerschaum-2.9.5 → meerschaum-3.0.0}/meerschaum/core/Plugin/__init__.py +1 -1
  146. meerschaum-3.0.0/meerschaum/core/Token/_Token.py +220 -0
  147. meerschaum-3.0.0/meerschaum/core/Token/__init__.py +12 -0
  148. {meerschaum-2.9.5 → meerschaum-3.0.0}/meerschaum/core/User/_User.py +35 -10
  149. {meerschaum-2.9.5 → meerschaum-3.0.0}/meerschaum/core/User/__init__.py +9 -1
  150. {meerschaum-2.9.5 → meerschaum-3.0.0}/meerschaum/core/__init__.py +1 -0
  151. meerschaum-3.0.0/meerschaum/jobs/_Executor.py +159 -0
  152. {meerschaum-2.9.5 → meerschaum-3.0.0}/meerschaum/jobs/_Job.py +149 -38
  153. {meerschaum-2.9.5 → meerschaum-3.0.0}/meerschaum/jobs/__init__.py +3 -2
  154. {meerschaum-2.9.5 → meerschaum-3.0.0}/meerschaum/jobs/systemd.py +8 -3
  155. meerschaum-3.0.0/meerschaum/models/__init__.py +35 -0
  156. meerschaum-3.0.0/meerschaum/models/pipes.py +247 -0
  157. meerschaum-3.0.0/meerschaum/models/tokens.py +38 -0
  158. meerschaum-3.0.0/meerschaum/models/users.py +26 -0
  159. {meerschaum-2.9.5 → meerschaum-3.0.0}/meerschaum/plugins/__init__.py +301 -88
  160. meerschaum-3.0.0/meerschaum/plugins/bootstrap.py +839 -0
  161. {meerschaum-2.9.5 → meerschaum-3.0.0}/meerschaum/utils/_get_pipes.py +97 -30
  162. {meerschaum-2.9.5 → meerschaum-3.0.0}/meerschaum/utils/daemon/Daemon.py +199 -43
  163. {meerschaum-2.9.5 → meerschaum-3.0.0}/meerschaum/utils/daemon/FileDescriptorInterceptor.py +0 -1
  164. {meerschaum-2.9.5 → meerschaum-3.0.0}/meerschaum/utils/daemon/RotatingFile.py +63 -36
  165. {meerschaum-2.9.5 → meerschaum-3.0.0}/meerschaum/utils/daemon/StdinFile.py +53 -13
  166. {meerschaum-2.9.5 → meerschaum-3.0.0}/meerschaum/utils/daemon/__init__.py +47 -6
  167. {meerschaum-2.9.5 → meerschaum-3.0.0}/meerschaum/utils/daemon/_names.py +6 -3
  168. {meerschaum-2.9.5 → meerschaum-3.0.0}/meerschaum/utils/dataframe.py +479 -81
  169. {meerschaum-2.9.5 → meerschaum-3.0.0}/meerschaum/utils/debug.py +49 -19
  170. {meerschaum-2.9.5 → meerschaum-3.0.0}/meerschaum/utils/dtypes/__init__.py +476 -34
  171. {meerschaum-2.9.5 → meerschaum-3.0.0}/meerschaum/utils/dtypes/sql.py +369 -29
  172. {meerschaum-2.9.5 → meerschaum-3.0.0}/meerschaum/utils/formatting/__init__.py +5 -2
  173. {meerschaum-2.9.5 → meerschaum-3.0.0}/meerschaum/utils/formatting/_jobs.py +1 -1
  174. {meerschaum-2.9.5 → meerschaum-3.0.0}/meerschaum/utils/formatting/_pipes.py +52 -50
  175. {meerschaum-2.9.5 → meerschaum-3.0.0}/meerschaum/utils/formatting/_pprint.py +1 -0
  176. {meerschaum-2.9.5 → meerschaum-3.0.0}/meerschaum/utils/formatting/_shell.py +44 -18
  177. {meerschaum-2.9.5 → meerschaum-3.0.0}/meerschaum/utils/misc.py +268 -186
  178. {meerschaum-2.9.5 → meerschaum-3.0.0}/meerschaum/utils/packages/__init__.py +25 -40
  179. {meerschaum-2.9.5 → meerschaum-3.0.0}/meerschaum/utils/packages/_packages.py +42 -34
  180. meerschaum-3.0.0/meerschaum/utils/pipes.py +213 -0
  181. {meerschaum-2.9.5 → meerschaum-3.0.0}/meerschaum/utils/process.py +2 -2
  182. {meerschaum-2.9.5 → meerschaum-3.0.0}/meerschaum/utils/prompt.py +175 -144
  183. {meerschaum-2.9.5 → meerschaum-3.0.0}/meerschaum/utils/schedule.py +2 -1
  184. {meerschaum-2.9.5 → meerschaum-3.0.0}/meerschaum/utils/sql.py +134 -47
  185. {meerschaum-2.9.5 → meerschaum-3.0.0}/meerschaum/utils/threading.py +42 -0
  186. {meerschaum-2.9.5 → meerschaum-3.0.0}/meerschaum/utils/typing.py +1 -4
  187. {meerschaum-2.9.5 → meerschaum-3.0.0}/meerschaum/utils/venv/_Venv.py +2 -2
  188. {meerschaum-2.9.5 → meerschaum-3.0.0}/meerschaum/utils/venv/__init__.py +7 -7
  189. {meerschaum-2.9.5 → meerschaum-3.0.0}/meerschaum/utils/warnings.py +19 -13
  190. {meerschaum-2.9.5 → meerschaum-3.0.0}/meerschaum.egg-info/PKG-INFO +94 -96
  191. {meerschaum-2.9.5 → meerschaum-3.0.0}/meerschaum.egg-info/SOURCES.txt +37 -18
  192. {meerschaum-2.9.5 → meerschaum-3.0.0}/meerschaum.egg-info/requires.txt +89 -79
  193. meerschaum-3.0.0/pyproject.toml +60 -0
  194. meerschaum-3.0.0/setup.cfg +21 -0
  195. meerschaum-3.0.0/setup.py +31 -0
  196. meerschaum-2.9.5/meerschaum/actions/reload.py +0 -21
  197. meerschaum-2.9.5/meerschaum/api/_oauth2.py +0 -52
  198. meerschaum-2.9.5/meerschaum/api/dash/callbacks/pipes.py +0 -55
  199. meerschaum-2.9.5/meerschaum/api/dash/pages/pipes.py +0 -22
  200. meerschaum-2.9.5/meerschaum/api/models/__init__.py +0 -11
  201. meerschaum-2.9.5/meerschaum/api/models/_interfaces.py +0 -15
  202. meerschaum-2.9.5/meerschaum/api/models/_locations.py +0 -15
  203. meerschaum-2.9.5/meerschaum/api/models/_metrics.py +0 -15
  204. meerschaum-2.9.5/meerschaum/api/models/_pipes.py +0 -21
  205. meerschaum-2.9.5/meerschaum/api/routes/_login.py +0 -78
  206. meerschaum-2.9.5/meerschaum/config/_environment.py +0 -145
  207. meerschaum-2.9.5/meerschaum/config/static/__init__.py +0 -186
  208. meerschaum-2.9.5/meerschaum/connectors/sql/tables/__init__.py +0 -259
  209. meerschaum-2.9.5/meerschaum/jobs/_Executor.py +0 -75
  210. meerschaum-2.9.5/meerschaum/plugins/bootstrap.py +0 -333
  211. meerschaum-2.9.5/setup.cfg +0 -4
  212. meerschaum-2.9.5/setup.py +0 -83
  213. meerschaum-2.9.5/tests/test_actions.py +0 -7
  214. meerschaum-2.9.5/tests/test_arguments.py +0 -112
  215. meerschaum-2.9.5/tests/test_deduplicate.py +0 -100
  216. meerschaum-2.9.5/tests/test_jobs.py +0 -34
  217. meerschaum-2.9.5/tests/test_pipe_data.py +0 -89
  218. meerschaum-2.9.5/tests/test_pipes_dtypes.py +0 -1197
  219. meerschaum-2.9.5/tests/test_sql.py +0 -114
  220. meerschaum-2.9.5/tests/test_sync.py +0 -1279
  221. meerschaum-2.9.5/tests/test_users.py +0 -20
  222. meerschaum-2.9.5/tests/test_verify.py +0 -127
  223. {meerschaum-2.9.5 → meerschaum-3.0.0}/LICENSE +0 -0
  224. {meerschaum-2.9.5 → meerschaum-3.0.0}/README.md +0 -0
  225. {meerschaum-2.9.5 → meerschaum-3.0.0}/meerschaum/__main__.py +0 -0
  226. {meerschaum-2.9.5 → meerschaum-3.0.0}/meerschaum/_internal/arguments/__init__.py +0 -0
  227. {meerschaum-2.9.5 → meerschaum-3.0.0}/meerschaum/_internal/docs/__init__.py +0 -0
  228. {meerschaum-2.9.5 → meerschaum-3.0.0}/meerschaum/_internal/shell/ShellCompleter.py +0 -0
  229. {meerschaum-2.9.5 → meerschaum-3.0.0}/meerschaum/_internal/shell/ValidAutoSuggest.py +0 -0
  230. {meerschaum-2.9.5 → meerschaum-3.0.0}/meerschaum/_internal/shell/resources/__init__.py +0 -0
  231. {meerschaum-2.9.5 → meerschaum-3.0.0}/meerschaum/_internal/shell/updates.py +0 -0
  232. {meerschaum-2.9.5 → meerschaum-3.0.0}/meerschaum/actions/clear.py +0 -0
  233. {meerschaum-2.9.5 → meerschaum-3.0.0}/meerschaum/actions/copy.py +0 -0
  234. {meerschaum-2.9.5 → meerschaum-3.0.0}/meerschaum/actions/deduplicate.py +0 -0
  235. {meerschaum-2.9.5 → meerschaum-3.0.0}/meerschaum/actions/drop.py +0 -0
  236. {meerschaum-2.9.5 → meerschaum-3.0.0}/meerschaum/actions/index.py +0 -0
  237. {meerschaum-2.9.5 → meerschaum-3.0.0}/meerschaum/actions/install.py +0 -0
  238. {meerschaum-2.9.5 → meerschaum-3.0.0}/meerschaum/actions/os.py +0 -0
  239. {meerschaum-2.9.5 → meerschaum-3.0.0}/meerschaum/actions/pause.py +0 -0
  240. {meerschaum-2.9.5 → meerschaum-3.0.0}/meerschaum/actions/python.py +0 -0
  241. {meerschaum-2.9.5 → meerschaum-3.0.0}/meerschaum/actions/setup.py +0 -0
  242. {meerschaum-2.9.5 → meerschaum-3.0.0}/meerschaum/actions/sh.py +0 -0
  243. {meerschaum-2.9.5 → meerschaum-3.0.0}/meerschaum/actions/sql.py +0 -0
  244. {meerschaum-2.9.5 → meerschaum-3.0.0}/meerschaum/actions/stack.py +0 -0
  245. {meerschaum-2.9.5 → meerschaum-3.0.0}/meerschaum/actions/uninstall.py +0 -0
  246. {meerschaum-2.9.5 → meerschaum-3.0.0}/meerschaum/actions/upgrade.py +0 -0
  247. {meerschaum-2.9.5 → meerschaum-3.0.0}/meerschaum/api/_chain.py +0 -0
  248. {meerschaum-2.9.5 → meerschaum-3.0.0}/meerschaum/api/_chunks.py +0 -0
  249. {meerschaum-2.9.5 → meerschaum-3.0.0}/meerschaum/api/_exceptions.py +0 -0
  250. {meerschaum-2.9.5 → meerschaum-3.0.0}/meerschaum/api/_websockets.py +0 -0
  251. {meerschaum-2.9.5 → meerschaum-3.0.0}/meerschaum/api/dash/assets/__init__.py +0 -0
  252. {meerschaum-2.9.5 → meerschaum-3.0.0}/meerschaum/api/dash/assets/ansi_up.js +0 -0
  253. {meerschaum-2.9.5 → meerschaum-3.0.0}/meerschaum/api/dash/assets/banner_1920x320.png +0 -0
  254. {meerschaum-2.9.5 → meerschaum-3.0.0}/meerschaum/api/dash/assets/favicon.ico +0 -0
  255. {meerschaum-2.9.5 → meerschaum-3.0.0}/meerschaum/api/dash/assets/logo_48x48.png +0 -0
  256. {meerschaum-2.9.5 → meerschaum-3.0.0}/meerschaum/api/dash/assets/logo_500x500.png +0 -0
  257. {meerschaum-2.9.5 → meerschaum-3.0.0}/meerschaum/api/dash/callbacks/settings/__init__.py +0 -0
  258. {meerschaum-2.9.5 → meerschaum-3.0.0}/meerschaum/api/dash/connectors.py +0 -0
  259. {meerschaum-2.9.5 → meerschaum-3.0.0}/meerschaum/api/dash/graphs.py +0 -0
  260. {meerschaum-2.9.5 → meerschaum-3.0.0}/meerschaum/api/dash/pages/error.py +0 -0
  261. {meerschaum-2.9.5 → meerschaum-3.0.0}/meerschaum/api/dash/pages/plugins.py +0 -0
  262. {meerschaum-2.9.5 → meerschaum-3.0.0}/meerschaum/api/dash/pages/register.py +0 -0
  263. {meerschaum-2.9.5 → meerschaum-3.0.0}/meerschaum/api/dash/pages/settings/__init__.py +0 -0
  264. {meerschaum-2.9.5 → meerschaum-3.0.0}/meerschaum/api/dash/plugins.py +0 -0
  265. {meerschaum-2.9.5 → meerschaum-3.0.0}/meerschaum/api/dash/sync.py +0 -0
  266. {meerschaum-2.9.5 → meerschaum-3.0.0}/meerschaum/api/dash/users.py +0 -0
  267. {meerschaum-2.9.5 → meerschaum-3.0.0}/meerschaum/api/resources/__init__.py +0 -0
  268. {meerschaum-2.9.5 → meerschaum-3.0.0}/meerschaum/api/resources/static/__init__.py +0 -0
  269. {meerschaum-2.9.5 → meerschaum-3.0.0}/meerschaum/api/resources/static/css/__init__.py +0 -0
  270. {meerschaum-2.9.5 → meerschaum-3.0.0}/meerschaum/api/resources/static/css/bootstrap.min.css +0 -0
  271. {meerschaum-2.9.5 → meerschaum-3.0.0}/meerschaum/api/resources/static/css/dash.css +0 -0
  272. {meerschaum-2.9.5 → meerschaum-3.0.0}/meerschaum/api/resources/static/css/dbc_dark.css +0 -0
  273. {meerschaum-2.9.5 → meerschaum-3.0.0}/meerschaum/api/resources/static/css/styles.css +0 -0
  274. {meerschaum-2.9.5 → meerschaum-3.0.0}/meerschaum/api/resources/static/css/xterm.css +0 -0
  275. {meerschaum-2.9.5 → meerschaum-3.0.0}/meerschaum/api/resources/static/ico/__init__.py +0 -0
  276. {meerschaum-2.9.5 → meerschaum-3.0.0}/meerschaum/api/resources/static/ico/logo.ico +0 -0
  277. {meerschaum-2.9.5 → meerschaum-3.0.0}/meerschaum/api/resources/static/js/__init__.py +0 -0
  278. {meerschaum-2.9.5 → meerschaum-3.0.0}/meerschaum/api/resources/static/js/action_button.js +0 -0
  279. {meerschaum-2.9.5 → meerschaum-3.0.0}/meerschaum/api/resources/static/js/main.js +0 -0
  280. {meerschaum-2.9.5 → meerschaum-3.0.0}/meerschaum/api/resources/static/js/xterm.js +0 -0
  281. {meerschaum-2.9.5 → meerschaum-3.0.0}/meerschaum/api/resources/static/png/__init__.py +0 -0
  282. {meerschaum-2.9.5 → meerschaum-3.0.0}/meerschaum/api/resources/templates/__init__.py +0 -0
  283. {meerschaum-2.9.5 → meerschaum-3.0.0}/meerschaum/api/resources/templates/index.html +0 -0
  284. {meerschaum-2.9.5 → meerschaum-3.0.0}/meerschaum/api/resources/templates/old_index.html +0 -0
  285. {meerschaum-2.9.5 → meerschaum-3.0.0}/meerschaum/api/resources/templates/secret.html +0 -0
  286. {meerschaum-2.9.5 → meerschaum-3.0.0}/meerschaum/api/routes/_index.py +0 -0
  287. {meerschaum-2.9.5 → meerschaum-3.0.0}/meerschaum/api/tables/__init__.py +0 -0
  288. {meerschaum-2.9.5 → meerschaum-3.0.0}/meerschaum/config/_dash.py +0 -0
  289. {meerschaum-2.9.5 → meerschaum-3.0.0}/meerschaum/config/_jobs.py +0 -0
  290. {meerschaum-2.9.5 → meerschaum-3.0.0}/meerschaum/config/_preprocess.py +0 -0
  291. {meerschaum-2.9.5 → meerschaum-3.0.0}/meerschaum/config/_shell.py +0 -0
  292. {meerschaum-2.9.5 → meerschaum-3.0.0}/meerschaum/config/paths.py +0 -0
  293. {meerschaum-2.9.5 → meerschaum-3.0.0}/meerschaum/config/resources/__init__.py +0 -0
  294. {meerschaum-2.9.5 → meerschaum-3.0.0}/meerschaum/config/stack/grafana/__init__.py +0 -0
  295. {meerschaum-2.9.5 → meerschaum-3.0.0}/meerschaum/config/stack/mosquitto/__init__.py +0 -0
  296. {meerschaum-2.9.5 → meerschaum-3.0.0}/meerschaum/config/stack/mosquitto/resources/__init__.py +0 -0
  297. {meerschaum-2.9.5 → meerschaum-3.0.0}/meerschaum/config/stack/resources/__init__.py +0 -0
  298. {meerschaum-2.9.5 → meerschaum-3.0.0}/meerschaum/connectors/api/__init__.py +0 -0
  299. {meerschaum-2.9.5 → meerschaum-3.0.0}/meerschaum/connectors/api/_fetch.py +0 -0
  300. {meerschaum-2.9.5 → meerschaum-3.0.0}/meerschaum/connectors/api/_uri.py +0 -0
  301. {meerschaum-2.9.5 → meerschaum-3.0.0}/meerschaum/connectors/plugin/PluginConnector.py +0 -0
  302. {meerschaum-2.9.5 → meerschaum-3.0.0}/meerschaum/connectors/plugin/__init__.py +0 -0
  303. {meerschaum-2.9.5 → meerschaum-3.0.0}/meerschaum/connectors/poll.py +0 -0
  304. {meerschaum-2.9.5 → meerschaum-3.0.0}/meerschaum/connectors/sql/__init__.py +0 -0
  305. {meerschaum-2.9.5 → meerschaum-3.0.0}/meerschaum/connectors/sql/_instance.py +0 -0
  306. {meerschaum-2.9.5 → meerschaum-3.0.0}/meerschaum/connectors/sql/_uri.py +0 -0
  307. {meerschaum-2.9.5 → meerschaum-3.0.0}/meerschaum/connectors/sql/tables/types.py +0 -0
  308. {meerschaum-2.9.5 → meerschaum-3.0.0}/meerschaum/connectors/sql/tools.py +0 -0
  309. {meerschaum-2.9.5 → meerschaum-3.0.0}/meerschaum/connectors/valkey/__init__.py +0 -0
  310. {meerschaum-2.9.5 → meerschaum-3.0.0}/meerschaum/connectors/valkey/_fetch.py +0 -0
  311. {meerschaum-2.9.5 → meerschaum-3.0.0}/meerschaum/connectors/valkey/_users.py +0 -0
  312. {meerschaum-2.9.5 → meerschaum-3.0.0}/meerschaum/core/Pipe/_copy.py +0 -0
  313. {meerschaum-2.9.5 → meerschaum-3.0.0}/meerschaum/core/Pipe/_register.py +0 -0
  314. {meerschaum-2.9.5 → meerschaum-3.0.0}/meerschaum/utils/__init__.py +0 -0
  315. {meerschaum-2.9.5 → meerschaum-3.0.0}/meerschaum/utils/interactive.py +0 -0
  316. {meerschaum-2.9.5 → meerschaum-3.0.0}/meerschaum/utils/networking.py +0 -0
  317. {meerschaum-2.9.5 → meerschaum-3.0.0}/meerschaum/utils/packages/lazy_loader.py +0 -0
  318. {meerschaum-2.9.5 → meerschaum-3.0.0}/meerschaum/utils/pool.py +0 -0
  319. {meerschaum-2.9.5 → meerschaum-3.0.0}/meerschaum/utils/yaml.py +0 -0
  320. {meerschaum-2.9.5 → meerschaum-3.0.0}/meerschaum.egg-info/dependency_links.txt +0 -0
  321. {meerschaum-2.9.5 → meerschaum-3.0.0}/meerschaum.egg-info/entry_points.txt +0 -0
  322. {meerschaum-2.9.5 → meerschaum-3.0.0}/meerschaum.egg-info/top_level.txt +0 -0
  323. {meerschaum-2.9.5 → meerschaum-3.0.0}/meerschaum.egg-info/zip-safe +0 -0
@@ -0,0 +1,2 @@
1
+ prune tests
2
+ prune docs
@@ -0,0 +1,2 @@
1
+ Consult the text file 'ACKNOWLEDGEMENTS.md' for licensing information regarding dynamically linked dependencies.
2
+
@@ -1,12 +1,10 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: meerschaum
3
- Version: 2.9.5
3
+ Version: 3.0.0
4
4
  Summary: Sync Time-Series Pipes with Meerschaum
5
- Home-page: https://meerschaum.io
6
- Author: Bennett Meares
7
- Author-email: bennett.meares@gmail.com
8
- Maintainer-email: bennett.meares@gmail.com
9
- License: Apache Software License 2.0
5
+ Author-email: Bennett Meares <bennett.meares@gmail.com>
6
+ Maintainer-email: Bennett Meares <bennett.meares@gmail.com>
7
+ License-Expression: Apache-2.0
10
8
  Project-URL: Documentation, https://docs.meerschaum.io
11
9
  Project-URL: Changelog, https://meerschaum.io/news/changelog
12
10
  Project-URL: GitHub, https://github.com/bmeares/Meerschaum
@@ -29,6 +27,7 @@ Classifier: Natural Language :: English
29
27
  Requires-Python: >=3.8
30
28
  Description-Content-Type: text/markdown
31
29
  License-File: LICENSE
30
+ License-File: NOTICE
32
31
  Provides-Extra: required
33
32
  Provides-Extra: minimal
34
33
  Provides-Extra: formatting
@@ -63,14 +62,16 @@ Requires-Dist: fasteners>=0.19.0; extra == "core"
63
62
  Requires-Dist: virtualenv>=20.1.0; extra == "core"
64
63
  Requires-Dist: attrs>=24.2.0; extra == "core"
65
64
  Requires-Dist: uv>=0.2.11; extra == "core"
65
+ Requires-Dist: pydantic>=2.11.7; extra == "core"
66
+ Requires-Dist: annotated-types>=0.7.0; extra == "core"
66
67
  Provides-Extra: jobs
67
- Requires-Dist: dill>=0.3.3; extra == "jobs"
68
- Requires-Dist: python-daemon>=0.2.3; extra == "jobs"
69
- Requires-Dist: watchfiles>=0.21.0; extra == "jobs"
70
- Requires-Dist: psutil>=5.8.0; extra == "jobs"
68
+ Requires-Dist: dill>=0.4.0; extra == "jobs"
69
+ Requires-Dist: python-daemon>=3.1.2; extra == "jobs"
70
+ Requires-Dist: watchfiles>=1.1.0; extra == "jobs"
71
+ Requires-Dist: psutil>=7.0.0; extra == "jobs"
71
72
  Provides-Extra: drivers
72
73
  Requires-Dist: cryptography>=38.0.1; extra == "drivers"
73
- Requires-Dist: psycopg[binary]>=3.2.1; extra == "drivers"
74
+ Requires-Dist: psycopg[binary]>=3.2.9; extra == "drivers"
74
75
  Requires-Dist: PyMySQL>=0.9.0; extra == "drivers"
75
76
  Requires-Dist: aiomysql>=0.0.21; extra == "drivers"
76
77
  Requires-Dist: sqlalchemy-cockroachdb>=2.0.0; extra == "drivers"
@@ -114,7 +115,7 @@ Requires-Dist: mkdocs-awesome-pages-plugin>=2.5.0; extra == "docs"
114
115
  Requires-Dist: mkdocs-section-index>=0.3.3; extra == "docs"
115
116
  Requires-Dist: mkdocs-linkcheck>=1.0.6; extra == "docs"
116
117
  Requires-Dist: mkdocs-redirects>=1.0.4; extra == "docs"
117
- Requires-Dist: jinja2==3.0.3; extra == "docs"
118
+ Requires-Dist: jinja2>=3.1.6; extra == "docs"
118
119
  Provides-Extra: gui
119
120
  Requires-Dist: pywebview>=3.6.3; extra == "gui"
120
121
  Requires-Dist: pycparser>=2.21.0; extra == "gui"
@@ -125,20 +126,20 @@ Requires-Dist: modin[ray]>=0.8.3; extra == "extras"
125
126
  Requires-Dist: nanoid>=2.0.0; extra == "extras"
126
127
  Requires-Dist: importlib-metadata>=4.12.0; extra == "extras"
127
128
  Provides-Extra: sql
128
- Requires-Dist: numpy>=1.18.5; extra == "sql"
129
- Requires-Dist: pandas[parquet]>=2.0.1; extra == "sql"
130
- Requires-Dist: pyarrow>=16.1.0; extra == "sql"
129
+ Requires-Dist: numpy>=2.3.1; extra == "sql"
130
+ Requires-Dist: pandas[parquet]>=2.3.1; extra == "sql"
131
+ Requires-Dist: pyarrow>=20.0.0; extra == "sql"
131
132
  Requires-Dist: dask[complete]>=2024.12.1; extra == "sql"
132
133
  Requires-Dist: partd>=1.4.2; extra == "sql"
133
134
  Requires-Dist: pytz; extra == "sql"
134
- Requires-Dist: joblib>=0.17.0; extra == "sql"
135
- Requires-Dist: SQLAlchemy>=2.0.5; extra == "sql"
135
+ Requires-Dist: joblib>=1.5.1; extra == "sql"
136
+ Requires-Dist: SQLAlchemy>=2.0.41; extra == "sql"
136
137
  Requires-Dist: GeoAlchemy2>=0.17.1; extra == "sql"
137
- Requires-Dist: databases>=0.4.0; extra == "sql"
138
- Requires-Dist: aiosqlite>=0.16.0; extra == "sql"
139
- Requires-Dist: asyncpg>=0.21.0; extra == "sql"
138
+ Requires-Dist: databases>=0.9.0; extra == "sql"
139
+ Requires-Dist: aiosqlite>=0.21.0; extra == "sql"
140
+ Requires-Dist: asyncpg>=0.30.0; extra == "sql"
140
141
  Requires-Dist: cryptography>=38.0.1; extra == "sql"
141
- Requires-Dist: psycopg[binary]>=3.2.1; extra == "sql"
142
+ Requires-Dist: psycopg[binary]>=3.2.9; extra == "sql"
142
143
  Requires-Dist: PyMySQL>=0.9.0; extra == "sql"
143
144
  Requires-Dist: aiomysql>=0.0.21; extra == "sql"
144
145
  Requires-Dist: sqlalchemy-cockroachdb>=2.0.0; extra == "sql"
@@ -166,43 +167,46 @@ Requires-Dist: fasteners>=0.19.0; extra == "sql"
166
167
  Requires-Dist: virtualenv>=20.1.0; extra == "sql"
167
168
  Requires-Dist: attrs>=24.2.0; extra == "sql"
168
169
  Requires-Dist: uv>=0.2.11; extra == "sql"
170
+ Requires-Dist: pydantic>=2.11.7; extra == "sql"
171
+ Requires-Dist: annotated-types>=0.7.0; extra == "sql"
169
172
  Requires-Dist: pyproj>=3.7.1; extra == "sql"
170
173
  Requires-Dist: geopandas>=1.0.1; extra == "sql"
171
174
  Requires-Dist: shapely>=2.0.7; extra == "sql"
172
175
  Provides-Extra: dash
173
- Requires-Dist: Flask-Compress>=1.10.1; extra == "dash"
174
- Requires-Dist: dash>=2.6.2; extra == "dash"
176
+ Requires-Dist: Flask-Compress>=1.17.0; extra == "dash"
177
+ Requires-Dist: dash>=3.1.1; extra == "dash"
175
178
  Requires-Dist: dash-bootstrap-components>=1.7.1; extra == "dash"
176
179
  Requires-Dist: dash-ace>=0.2.1; extra == "dash"
177
- Requires-Dist: dash-extensions>=1.0.4; extra == "dash"
178
- Requires-Dist: dash-daq>=0.5.0; extra == "dash"
179
- Requires-Dist: terminado>=0.12.1; extra == "dash"
180
- Requires-Dist: tornado>=6.1.0; extra == "dash"
180
+ Requires-Dist: dash-extensions>=2.0.4; extra == "dash"
181
+ Requires-Dist: dash-daq>=0.6.0; extra == "dash"
182
+ Requires-Dist: terminado>=0.18.1; extra == "dash"
183
+ Requires-Dist: tornado>=6.5.1; extra == "dash"
181
184
  Provides-Extra: api
182
- Requires-Dist: uvicorn[standard]>=0.29.0; extra == "api"
183
- Requires-Dist: gunicorn>=22.0.0; extra == "api"
184
- Requires-Dist: python-dotenv>=0.20.0; extra == "api"
185
- Requires-Dist: websockets>=11.0.3; extra == "api"
186
- Requires-Dist: fastapi>=0.111.0; extra == "api"
187
- Requires-Dist: fastapi-login>=1.7.2; extra == "api"
188
- Requires-Dist: python-multipart>=0.0.9; extra == "api"
189
- Requires-Dist: httpx>=0.27.2; extra == "api"
190
- Requires-Dist: httpcore>=1.0.6; extra == "api"
191
- Requires-Dist: valkey>=6.0.0; extra == "api"
192
- Requires-Dist: numpy>=1.18.5; extra == "api"
193
- Requires-Dist: pandas[parquet]>=2.0.1; extra == "api"
194
- Requires-Dist: pyarrow>=16.1.0; extra == "api"
185
+ Requires-Dist: uvicorn[standard]>=0.35.0; extra == "api"
186
+ Requires-Dist: gunicorn>=23.0.0; extra == "api"
187
+ Requires-Dist: python-dotenv>=1.1.1; extra == "api"
188
+ Requires-Dist: websockets>=15.0.1; extra == "api"
189
+ Requires-Dist: fastapi>=0.116.0; extra == "api"
190
+ Requires-Dist: fastapi-login>=1.10.3; extra == "api"
191
+ Requires-Dist: python-multipart>=0.0.20; extra == "api"
192
+ Requires-Dist: httpx>=0.28.1; extra == "api"
193
+ Requires-Dist: httpcore>=1.0.9; extra == "api"
194
+ Requires-Dist: valkey>=6.1.0; extra == "api"
195
+ Requires-Dist: python-jose>=3.5.0; extra == "api"
196
+ Requires-Dist: numpy>=2.3.1; extra == "api"
197
+ Requires-Dist: pandas[parquet]>=2.3.1; extra == "api"
198
+ Requires-Dist: pyarrow>=20.0.0; extra == "api"
195
199
  Requires-Dist: dask[complete]>=2024.12.1; extra == "api"
196
200
  Requires-Dist: partd>=1.4.2; extra == "api"
197
201
  Requires-Dist: pytz; extra == "api"
198
- Requires-Dist: joblib>=0.17.0; extra == "api"
199
- Requires-Dist: SQLAlchemy>=2.0.5; extra == "api"
202
+ Requires-Dist: joblib>=1.5.1; extra == "api"
203
+ Requires-Dist: SQLAlchemy>=2.0.41; extra == "api"
200
204
  Requires-Dist: GeoAlchemy2>=0.17.1; extra == "api"
201
- Requires-Dist: databases>=0.4.0; extra == "api"
202
- Requires-Dist: aiosqlite>=0.16.0; extra == "api"
203
- Requires-Dist: asyncpg>=0.21.0; extra == "api"
205
+ Requires-Dist: databases>=0.9.0; extra == "api"
206
+ Requires-Dist: aiosqlite>=0.21.0; extra == "api"
207
+ Requires-Dist: asyncpg>=0.30.0; extra == "api"
204
208
  Requires-Dist: cryptography>=38.0.1; extra == "api"
205
- Requires-Dist: psycopg[binary]>=3.2.1; extra == "api"
209
+ Requires-Dist: psycopg[binary]>=3.2.9; extra == "api"
206
210
  Requires-Dist: PyMySQL>=0.9.0; extra == "api"
207
211
  Requires-Dist: aiomysql>=0.0.21; extra == "api"
208
212
  Requires-Dist: sqlalchemy-cockroachdb>=2.0.0; extra == "api"
@@ -230,6 +234,8 @@ Requires-Dist: fasteners>=0.19.0; extra == "api"
230
234
  Requires-Dist: virtualenv>=20.1.0; extra == "api"
231
235
  Requires-Dist: attrs>=24.2.0; extra == "api"
232
236
  Requires-Dist: uv>=0.2.11; extra == "api"
237
+ Requires-Dist: pydantic>=2.11.7; extra == "api"
238
+ Requires-Dist: annotated-types>=0.7.0; extra == "api"
233
239
  Requires-Dist: pyproj>=3.7.1; extra == "api"
234
240
  Requires-Dist: geopandas>=1.0.1; extra == "api"
235
241
  Requires-Dist: shapely>=2.0.7; extra == "api"
@@ -241,18 +247,18 @@ Requires-Dist: colorama>=0.4.3; extra == "api"
241
247
  Requires-Dist: rich>=13.4.2; extra == "api"
242
248
  Requires-Dist: more-termcolor>=1.1.3; extra == "api"
243
249
  Requires-Dist: humanfriendly>=10.0.0; extra == "api"
244
- Requires-Dist: Flask-Compress>=1.10.1; extra == "api"
245
- Requires-Dist: dash>=2.6.2; extra == "api"
250
+ Requires-Dist: Flask-Compress>=1.17.0; extra == "api"
251
+ Requires-Dist: dash>=3.1.1; extra == "api"
246
252
  Requires-Dist: dash-bootstrap-components>=1.7.1; extra == "api"
247
253
  Requires-Dist: dash-ace>=0.2.1; extra == "api"
248
- Requires-Dist: dash-extensions>=1.0.4; extra == "api"
249
- Requires-Dist: dash-daq>=0.5.0; extra == "api"
250
- Requires-Dist: terminado>=0.12.1; extra == "api"
251
- Requires-Dist: tornado>=6.1.0; extra == "api"
252
- Requires-Dist: dill>=0.3.3; extra == "api"
253
- Requires-Dist: python-daemon>=0.2.3; extra == "api"
254
- Requires-Dist: watchfiles>=0.21.0; extra == "api"
255
- Requires-Dist: psutil>=5.8.0; extra == "api"
254
+ Requires-Dist: dash-extensions>=2.0.4; extra == "api"
255
+ Requires-Dist: dash-daq>=0.6.0; extra == "api"
256
+ Requires-Dist: terminado>=0.18.1; extra == "api"
257
+ Requires-Dist: tornado>=6.5.1; extra == "api"
258
+ Requires-Dist: dill>=0.4.0; extra == "api"
259
+ Requires-Dist: python-daemon>=3.1.2; extra == "api"
260
+ Requires-Dist: watchfiles>=1.1.0; extra == "api"
261
+ Requires-Dist: psutil>=7.0.0; extra == "api"
256
262
  Provides-Extra: full
257
263
  Requires-Dist: pprintpp>=0.4.0; extra == "full"
258
264
  Requires-Dist: asciitree>=0.3.3; extra == "full"
@@ -284,12 +290,14 @@ Requires-Dist: fasteners>=0.19.0; extra == "full"
284
290
  Requires-Dist: virtualenv>=20.1.0; extra == "full"
285
291
  Requires-Dist: attrs>=24.2.0; extra == "full"
286
292
  Requires-Dist: uv>=0.2.11; extra == "full"
287
- Requires-Dist: dill>=0.3.3; extra == "full"
288
- Requires-Dist: python-daemon>=0.2.3; extra == "full"
289
- Requires-Dist: watchfiles>=0.21.0; extra == "full"
290
- Requires-Dist: psutil>=5.8.0; extra == "full"
293
+ Requires-Dist: pydantic>=2.11.7; extra == "full"
294
+ Requires-Dist: annotated-types>=0.7.0; extra == "full"
295
+ Requires-Dist: dill>=0.4.0; extra == "full"
296
+ Requires-Dist: python-daemon>=3.1.2; extra == "full"
297
+ Requires-Dist: watchfiles>=1.1.0; extra == "full"
298
+ Requires-Dist: psutil>=7.0.0; extra == "full"
291
299
  Requires-Dist: cryptography>=38.0.1; extra == "full"
292
- Requires-Dist: psycopg[binary]>=3.2.1; extra == "full"
300
+ Requires-Dist: psycopg[binary]>=3.2.9; extra == "full"
293
301
  Requires-Dist: PyMySQL>=0.9.0; extra == "full"
294
302
  Requires-Dist: aiomysql>=0.0.21; extra == "full"
295
303
  Requires-Dist: sqlalchemy-cockroachdb>=2.0.0; extra == "full"
@@ -300,49 +308,39 @@ Requires-Dist: geopandas>=1.0.1; extra == "full"
300
308
  Requires-Dist: shapely>=2.0.7; extra == "full"
301
309
  Requires-Dist: pywebview>=3.6.3; extra == "full"
302
310
  Requires-Dist: pycparser>=2.21.0; extra == "full"
303
- Requires-Dist: numpy>=1.18.5; extra == "full"
304
- Requires-Dist: pandas[parquet]>=2.0.1; extra == "full"
305
- Requires-Dist: pyarrow>=16.1.0; extra == "full"
311
+ Requires-Dist: numpy>=2.3.1; extra == "full"
312
+ Requires-Dist: pandas[parquet]>=2.3.1; extra == "full"
313
+ Requires-Dist: pyarrow>=20.0.0; extra == "full"
306
314
  Requires-Dist: dask[complete]>=2024.12.1; extra == "full"
307
315
  Requires-Dist: partd>=1.4.2; extra == "full"
308
316
  Requires-Dist: pytz; extra == "full"
309
- Requires-Dist: joblib>=0.17.0; extra == "full"
310
- Requires-Dist: SQLAlchemy>=2.0.5; extra == "full"
317
+ Requires-Dist: joblib>=1.5.1; extra == "full"
318
+ Requires-Dist: SQLAlchemy>=2.0.41; extra == "full"
311
319
  Requires-Dist: GeoAlchemy2>=0.17.1; extra == "full"
312
- Requires-Dist: databases>=0.4.0; extra == "full"
313
- Requires-Dist: aiosqlite>=0.16.0; extra == "full"
314
- Requires-Dist: asyncpg>=0.21.0; extra == "full"
315
- Requires-Dist: Flask-Compress>=1.10.1; extra == "full"
316
- Requires-Dist: dash>=2.6.2; extra == "full"
320
+ Requires-Dist: databases>=0.9.0; extra == "full"
321
+ Requires-Dist: aiosqlite>=0.21.0; extra == "full"
322
+ Requires-Dist: asyncpg>=0.30.0; extra == "full"
323
+ Requires-Dist: Flask-Compress>=1.17.0; extra == "full"
324
+ Requires-Dist: dash>=3.1.1; extra == "full"
317
325
  Requires-Dist: dash-bootstrap-components>=1.7.1; extra == "full"
318
326
  Requires-Dist: dash-ace>=0.2.1; extra == "full"
319
- Requires-Dist: dash-extensions>=1.0.4; extra == "full"
320
- Requires-Dist: dash-daq>=0.5.0; extra == "full"
321
- Requires-Dist: terminado>=0.12.1; extra == "full"
322
- Requires-Dist: tornado>=6.1.0; extra == "full"
323
- Requires-Dist: uvicorn[standard]>=0.29.0; extra == "full"
324
- Requires-Dist: gunicorn>=22.0.0; extra == "full"
325
- Requires-Dist: python-dotenv>=0.20.0; extra == "full"
326
- Requires-Dist: websockets>=11.0.3; extra == "full"
327
- Requires-Dist: fastapi>=0.111.0; extra == "full"
328
- Requires-Dist: fastapi-login>=1.7.2; extra == "full"
329
- Requires-Dist: python-multipart>=0.0.9; extra == "full"
330
- Requires-Dist: httpx>=0.27.2; extra == "full"
331
- Requires-Dist: httpcore>=1.0.6; extra == "full"
332
- Requires-Dist: valkey>=6.0.0; extra == "full"
333
- Dynamic: author
334
- Dynamic: author-email
335
- Dynamic: classifier
336
- Dynamic: description
337
- Dynamic: description-content-type
338
- Dynamic: home-page
339
- Dynamic: license
327
+ Requires-Dist: dash-extensions>=2.0.4; extra == "full"
328
+ Requires-Dist: dash-daq>=0.6.0; extra == "full"
329
+ Requires-Dist: terminado>=0.18.1; extra == "full"
330
+ Requires-Dist: tornado>=6.5.1; extra == "full"
331
+ Requires-Dist: uvicorn[standard]>=0.35.0; extra == "full"
332
+ Requires-Dist: gunicorn>=23.0.0; extra == "full"
333
+ Requires-Dist: python-dotenv>=1.1.1; extra == "full"
334
+ Requires-Dist: websockets>=15.0.1; extra == "full"
335
+ Requires-Dist: fastapi>=0.116.0; extra == "full"
336
+ Requires-Dist: fastapi-login>=1.10.3; extra == "full"
337
+ Requires-Dist: python-multipart>=0.0.20; extra == "full"
338
+ Requires-Dist: httpx>=0.28.1; extra == "full"
339
+ Requires-Dist: httpcore>=1.0.9; extra == "full"
340
+ Requires-Dist: valkey>=6.1.0; extra == "full"
341
+ Requires-Dist: python-jose>=3.5.0; extra == "full"
340
342
  Dynamic: license-file
341
- Dynamic: maintainer-email
342
- Dynamic: project-url
343
343
  Dynamic: provides-extra
344
- Dynamic: requires-python
345
- Dynamic: summary
346
344
 
347
345
  <img src="https://meerschaum.io/assets/banner_1920x320.png" alt="Meerschaum banner" style="width: 100%"/>
348
346
 
@@ -3,7 +3,7 @@
3
3
  # vim:fenc=utf-8
4
4
 
5
5
  """
6
- Copyright 2023 Bennett Meares
6
+ Copyright 2025 Bennett Meares
7
7
 
8
8
  Licensed under the Apache License, Version 2.0 (the "License");
9
9
  you may not use this file except in compliance with the License.
@@ -19,13 +19,14 @@ limitations under the License.
19
19
  """
20
20
 
21
21
  import atexit
22
+
22
23
  from meerschaum.utils.typing import SuccessTuple
23
24
  from meerschaum.utils.packages import attempt_import
24
25
  from meerschaum.core.Pipe import Pipe
25
26
  from meerschaum.plugins import Plugin
26
27
  from meerschaum.utils.venv import Venv
27
28
  from meerschaum.jobs import Job, make_executor
28
- from meerschaum.connectors import get_connector, Connector, make_connector
29
+ from meerschaum.connectors import get_connector, Connector, InstanceConnector, make_connector
29
30
  from meerschaum.utils import get_pipes
30
31
  from meerschaum.utils.formatting import pprint
31
32
  from meerschaum._internal.docs import index as __doc__
@@ -42,6 +43,7 @@ __all__ = (
42
43
  "get_config",
43
44
  "Pipe",
44
45
  "Plugin",
46
+ "SuccessTuple",
45
47
  "Venv",
46
48
  "Plugin",
47
49
  "Job",
@@ -55,6 +57,7 @@ __all__ = (
55
57
  "utils",
56
58
  "SuccessTuple",
57
59
  "Connector",
60
+ "InstanceConnector",
58
61
  "make_connector",
59
62
  "entry",
60
63
  )
@@ -6,3 +6,4 @@
6
6
  Modules, classes, and variables declared in _internal are not intended for general public use.
7
7
  """
8
8
 
9
+ from meerschaum._internal.static import STATIC_CONFIG
@@ -23,7 +23,7 @@ def split_pipeline_sysargs(sysargs: List[str]) -> Tuple[List[str], List[str]]:
23
23
  """
24
24
  Split `sysargs` into the main pipeline and the flags following the pipeline separator (`:`).
25
25
  """
26
- from meerschaum.config.static import STATIC_CONFIG
26
+ from meerschaum._internal.static import STATIC_CONFIG
27
27
  pipeline_key = STATIC_CONFIG['system']['arguments']['pipeline_key']
28
28
  if pipeline_key not in sysargs:
29
29
  return sysargs, []
@@ -40,7 +40,7 @@ def split_chained_sysargs(sysargs: List[str]) -> List[List[str]]:
40
40
  Split a `sysargs` list containing "and" keys (`+`)
41
41
  into a list of individual `sysargs`.
42
42
  """
43
- from meerschaum.config.static import STATIC_CONFIG
43
+ from meerschaum._internal.static import STATIC_CONFIG
44
44
  and_key = STATIC_CONFIG['system']['arguments']['and_key']
45
45
 
46
46
  if not sysargs or and_key not in sysargs:
@@ -90,7 +90,7 @@ def parse_arguments(sysargs: List[str]) -> Dict[str, Any]:
90
90
 
91
91
  """
92
92
  import shlex
93
- from meerschaum.config.static import STATIC_CONFIG
93
+ from meerschaum._internal.static import STATIC_CONFIG
94
94
  from meerschaum._internal.arguments._parser import parser
95
95
 
96
96
  global _loaded_plugins_args
@@ -360,7 +360,7 @@ def remove_leading_action(
360
360
  """
361
361
  from meerschaum.actions import get_action, get_main_action_name
362
362
  from meerschaum.utils.warnings import warn
363
- from meerschaum.config.static import STATIC_CONFIG
363
+ from meerschaum._internal.static import STATIC_CONFIG
364
364
  action_function = get_action(action, _actions=_actions)
365
365
  if action_function is None:
366
366
  return action
@@ -40,7 +40,8 @@ class ArgumentParser(argparse.ArgumentParser):
40
40
 
41
41
  def parse_datetime(dt_str: str) -> Union[datetime, int, str]:
42
42
  """Parse a string into a datetime."""
43
- from meerschaum.utils.misc import is_int, round_time
43
+ from meerschaum.utils.dtypes import round_time
44
+ from meerschaum.utils.misc import is_int
44
45
  if is_int(dt_str):
45
46
  return int(dt_str)
46
47
 
@@ -139,7 +140,11 @@ def parse_help(sysargs: Union[List[str], Dict[str, Any]]) -> None:
139
140
  ### Check for subactions.
140
141
  if len(args['action']) > 1:
141
142
  try:
142
- subaction = get_subactions(args['action'][0])[args['action'][1]]
143
+ subactions = get_subactions(args['action'][0])
144
+ subaction_name = args['action'][1]
145
+ if subaction_name not in subactions:
146
+ subaction_name = subaction_name + 's'
147
+ subaction = subactions[subaction_name]
143
148
  except Exception:
144
149
  subaction = None
145
150
  if subaction is not None:
@@ -195,6 +200,7 @@ groups['pipes'] = parser.add_argument_group(title='Pipes options')
195
200
  groups['sync'] = parser.add_argument_group(title='Sync options')
196
201
  groups['api'] = parser.add_argument_group(title='API options')
197
202
  groups['plugins'] = parser.add_argument_group(title='Plugins options')
203
+ groups['tokens'] = parser.add_argument_group(title='Tokens options')
198
204
  groups['packages'] = parser.add_argument_group(title='Packages options')
199
205
  groups['debug'] = parser.add_argument_group(title='Debugging options')
200
206
  groups['misc'] = parser.add_argument_group(title='Miscellaneous options')
@@ -375,7 +381,7 @@ groups['sync'].add_argument(
375
381
  groups['sync'].add_argument(
376
382
  '--cache', action='store_true',
377
383
  help=(
378
- "When syncing or viewing a pipe's data, sync to a local database for later analysis."
384
+ "Sync pipes' metadata to disk."
379
385
  )
380
386
  )
381
387
 
@@ -387,13 +393,21 @@ groups['api'].add_argument(
387
393
  '--host', type=str,
388
394
  help="The host address to bind to for the API server. Defaults to '0.0.0.0'."
389
395
  )
396
+ groups['api'].add_argument(
397
+ '--webterm-port', type=int,
398
+ help="The port on which to run the webterm server.",
399
+ )
390
400
  groups['api'].add_argument(
391
401
  '-w', '--workers', type=int,
392
402
  help = "How many workers to run a concurrent action (e.g. running the API or syncing pipes)"
393
403
  )
394
404
  groups['api'].add_argument(
395
405
  '--no-dash', '--nodash', action='store_true',
396
- help = 'When starting the API, do not start the Web interface.',
406
+ help = 'When starting the API, do not start the Web Console dashboard.',
407
+ )
408
+ groups['api'].add_argument(
409
+ '--no-webterm', '--nowebterm', action='store_true',
410
+ help="When starting the API, do not start the Webterm.",
397
411
  )
398
412
  groups['api'].add_argument(
399
413
  '--private', '--private-mode', action='store_true',
@@ -419,12 +433,23 @@ groups['api'].add_argument(
419
433
  '--certfile', type=str,
420
434
  help = "Start the API server with this certfile (requires --keyfile).",
421
435
  )
436
+
422
437
  ### Plugins options
423
438
  groups['plugins'].add_argument(
424
439
  '-r', '--repository', '--repo', type=str,
425
440
  help="Meerschaum plugins repository to connect to. Specify an API label (default: 'mrsm')"
426
441
  )
427
442
 
443
+ ### Tokens options
444
+ groups['tokens'].add_argument(
445
+ '--ttl-days', type=int,
446
+ help="For how many days should a token be valid.",
447
+ )
448
+ groups['tokens'].add_argument(
449
+ '--scopes', '--scope', nargs='+',
450
+ help="Which scope permissions to grant to a token.",
451
+ )
452
+
428
453
  ### Packages options
429
454
  groups['packages'].add_argument(
430
455
  '--venv', type=str,
@@ -491,3 +516,7 @@ groups['misc'].add_argument(
491
516
  + "Default behavior is to only allow recognized actions."
492
517
  )
493
518
  )
519
+ groups['misc'].add_argument(
520
+ '--no-daemon', action='store_true',
521
+ help="Do not use the Meerschaum CLI daemon to execute the action.",
522
+ )
@@ -0,0 +1,6 @@
1
+ #! /usr/bin/env python3
2
+ # vim:fenc=utf-8
3
+
4
+ """
5
+ Define internal utilities for interacting with the CLI daemons.
6
+ """
@@ -0,0 +1,103 @@
1
+ #! /usr/bin/env python3
2
+ # vim:fenc=utf-8
3
+
4
+ """
5
+ Define the CLI daemons utilities.
6
+ """
7
+
8
+ import os
9
+ import threading
10
+ import pathlib
11
+ from typing import Optional, List
12
+
13
+ import meerschaum as mrsm
14
+
15
+
16
+ def get_cli_daemon(ix: Optional[int] = None):
17
+ """
18
+ Get the CLI daemon.
19
+ """
20
+ from meerschaum._internal.cli.workers import ActionWorker
21
+ ix = ix if ix is not None else get_available_cli_daemon_ix()
22
+ return ActionWorker(ix)
23
+
24
+
25
+ def get_cli_lock_path(ix: int) -> pathlib.Path:
26
+ """
27
+ Return the path to a CLI daemon's lock file.
28
+ """
29
+ from meerschaum.config.paths import CLI_RESOURCES_PATH
30
+ return CLI_RESOURCES_PATH / f"ix-{ix}.lock"
31
+
32
+
33
+ def get_cli_session_id() -> str:
34
+ """
35
+ Return the session ID to use for the current process and thread.
36
+ """
37
+ return f"{os.getpid()}.{threading.current_thread().ident}"
38
+
39
+
40
+ def get_available_cli_daemon_ix() -> int:
41
+ """
42
+ Return the index for an available CLI daemon.
43
+ """
44
+ max_ix = mrsm.get_config('system', 'cli', 'max_daemons') - 1
45
+ ix = 0
46
+ while True:
47
+ lock_path = get_cli_lock_path(ix)
48
+ if not lock_path.exists():
49
+ return ix
50
+
51
+ ix += 1
52
+ if ix > max_ix:
53
+ raise EnvironmentError("Too many CLI daemons are running.")
54
+
55
+
56
+ def get_existing_cli_daemon_indices() -> List[int]:
57
+ """
58
+ Return a list of the existing CLI daemons.
59
+ """
60
+ from meerschaum.utils.daemon import get_daemon_ids
61
+ daemon_ids = [daemon_id for daemon_id in get_daemon_ids() if daemon_id.startswith('.cli.')]
62
+ indices = []
63
+
64
+ for daemon_id in daemon_ids:
65
+ try:
66
+ ix = int(daemon_id[len('.cli.'):])
67
+ indices.append(ix)
68
+ except Exception:
69
+ pass
70
+
71
+ return indices
72
+
73
+
74
+ def get_existing_cli_daemons() -> 'List[ActionWorker]':
75
+ """
76
+ Return a list of the existing CLI daemons.
77
+ """
78
+ from meerschaum._internal.cli.workers import ActionWorker
79
+ indices = get_existing_cli_daemon_indices()
80
+ return [
81
+ ActionWorker(ix)
82
+ for ix in indices
83
+ ]
84
+
85
+
86
+ def _get_cli_session_dir_path(session_id: str) -> pathlib.Path:
87
+ """
88
+ Return the path to the file handles for the CLI session.
89
+ """
90
+ from meerschaum.config.paths import CLI_RESOURCES_PATH
91
+ return CLI_RESOURCES_PATH / session_id
92
+
93
+
94
+ def _get_cli_stream_path(
95
+ session_id: str,
96
+ action_id: str,
97
+ stream: str = 'stdout',
98
+ ) -> pathlib.Path:
99
+ """
100
+ Return the file path for the stdout / stderr file stream.
101
+ """
102
+ session_dir_path = _get_cli_session_dir_path(session_id)
103
+ return session_dir_path / f'{action_id}.{stream}'