meerschaum 3.0.0rc8__tar.gz → 3.0.2__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 (296) hide show
  1. {meerschaum-3.0.0rc8/meerschaum.egg-info → meerschaum-3.0.2}/PKG-INFO +4 -4
  2. {meerschaum-3.0.0rc8 → meerschaum-3.0.2}/meerschaum/_internal/cli/entry.py +1 -0
  3. {meerschaum-3.0.0rc8 → meerschaum-3.0.2}/meerschaum/_internal/cli/workers.py +7 -2
  4. {meerschaum-3.0.0rc8 → meerschaum-3.0.2}/meerschaum/_internal/entry.py +2 -0
  5. {meerschaum-3.0.0rc8 → meerschaum-3.0.2}/meerschaum/_internal/term/__init__.py +5 -12
  6. {meerschaum-3.0.0rc8 → meerschaum-3.0.2}/meerschaum/actions/api.py +11 -5
  7. {meerschaum-3.0.0rc8 → meerschaum-3.0.2}/meerschaum/actions/install.py +17 -19
  8. {meerschaum-3.0.0rc8 → meerschaum-3.0.2}/meerschaum/actions/start.py +30 -2
  9. {meerschaum-3.0.0rc8 → meerschaum-3.0.2}/meerschaum/actions/upgrade.py +25 -11
  10. {meerschaum-3.0.0rc8 → meerschaum-3.0.2}/meerschaum/api/dash/callbacks/custom.py +2 -1
  11. {meerschaum-3.0.0rc8 → meerschaum-3.0.2}/meerschaum/api/dash/callbacks/dashboard.py +11 -22
  12. {meerschaum-3.0.0rc8 → meerschaum-3.0.2}/meerschaum/config/_default.py +5 -1
  13. {meerschaum-3.0.0rc8 → meerschaum-3.0.2}/meerschaum/config/_read_config.py +0 -1
  14. {meerschaum-3.0.0rc8 → meerschaum-3.0.2}/meerschaum/config/_version.py +1 -1
  15. {meerschaum-3.0.0rc8 → meerschaum-3.0.2}/meerschaum/config/environment.py +26 -2
  16. {meerschaum-3.0.0rc8 → meerschaum-3.0.2}/meerschaum/connectors/sql/_create_engine.py +2 -2
  17. {meerschaum-3.0.0rc8 → meerschaum-3.0.2}/meerschaum/connectors/sql/_pipes.py +3 -6
  18. {meerschaum-3.0.0rc8 → meerschaum-3.0.2}/meerschaum/plugins/__init__.py +13 -5
  19. {meerschaum-3.0.0rc8 → meerschaum-3.0.2}/meerschaum/utils/packages/__init__.py +3 -1
  20. {meerschaum-3.0.0rc8 → meerschaum-3.0.2}/meerschaum/utils/packages/_packages.py +1 -1
  21. {meerschaum-3.0.0rc8 → meerschaum-3.0.2/meerschaum.egg-info}/PKG-INFO +4 -4
  22. {meerschaum-3.0.0rc8 → meerschaum-3.0.2}/meerschaum.egg-info/requires.txt +3 -3
  23. {meerschaum-3.0.0rc8 → meerschaum-3.0.2}/LICENSE +0 -0
  24. {meerschaum-3.0.0rc8 → meerschaum-3.0.2}/MANIFEST.in +0 -0
  25. {meerschaum-3.0.0rc8 → meerschaum-3.0.2}/NOTICE +0 -0
  26. {meerschaum-3.0.0rc8 → meerschaum-3.0.2}/README.md +0 -0
  27. {meerschaum-3.0.0rc8 → meerschaum-3.0.2}/meerschaum/__init__.py +0 -0
  28. {meerschaum-3.0.0rc8 → meerschaum-3.0.2}/meerschaum/__main__.py +0 -0
  29. {meerschaum-3.0.0rc8 → meerschaum-3.0.2}/meerschaum/_internal/__init__.py +0 -0
  30. {meerschaum-3.0.0rc8 → meerschaum-3.0.2}/meerschaum/_internal/arguments/__init__.py +0 -0
  31. {meerschaum-3.0.0rc8 → meerschaum-3.0.2}/meerschaum/_internal/arguments/_parse_arguments.py +0 -0
  32. {meerschaum-3.0.0rc8 → meerschaum-3.0.2}/meerschaum/_internal/arguments/_parser.py +0 -0
  33. {meerschaum-3.0.0rc8 → meerschaum-3.0.2}/meerschaum/_internal/cli/__init__.py +0 -0
  34. {meerschaum-3.0.0rc8 → meerschaum-3.0.2}/meerschaum/_internal/cli/daemons.py +0 -0
  35. {meerschaum-3.0.0rc8 → meerschaum-3.0.2}/meerschaum/_internal/docs/__init__.py +0 -0
  36. {meerschaum-3.0.0rc8 → meerschaum-3.0.2}/meerschaum/_internal/docs/index.py +0 -0
  37. {meerschaum-3.0.0rc8 → meerschaum-3.0.2}/meerschaum/_internal/shell/Shell.py +0 -0
  38. {meerschaum-3.0.0rc8 → meerschaum-3.0.2}/meerschaum/_internal/shell/ShellCompleter.py +0 -0
  39. {meerschaum-3.0.0rc8 → meerschaum-3.0.2}/meerschaum/_internal/shell/ValidAutoSuggest.py +0 -0
  40. {meerschaum-3.0.0rc8 → meerschaum-3.0.2}/meerschaum/_internal/shell/__init__.py +0 -0
  41. {meerschaum-3.0.0rc8 → meerschaum-3.0.2}/meerschaum/_internal/shell/resources/__init__.py +0 -0
  42. {meerschaum-3.0.0rc8 → meerschaum-3.0.2}/meerschaum/_internal/shell/updates.py +0 -0
  43. {meerschaum-3.0.0rc8 → meerschaum-3.0.2}/meerschaum/_internal/static.py +0 -0
  44. {meerschaum-3.0.0rc8 → meerschaum-3.0.2}/meerschaum/_internal/term/TermPageHandler.py +0 -0
  45. {meerschaum-3.0.0rc8 → meerschaum-3.0.2}/meerschaum/_internal/term/tools.py +0 -0
  46. {meerschaum-3.0.0rc8 → meerschaum-3.0.2}/meerschaum/actions/__init__.py +0 -0
  47. {meerschaum-3.0.0rc8 → meerschaum-3.0.2}/meerschaum/actions/attach.py +0 -0
  48. {meerschaum-3.0.0rc8 → meerschaum-3.0.2}/meerschaum/actions/bootstrap.py +0 -0
  49. {meerschaum-3.0.0rc8 → meerschaum-3.0.2}/meerschaum/actions/clear.py +0 -0
  50. {meerschaum-3.0.0rc8 → meerschaum-3.0.2}/meerschaum/actions/copy.py +0 -0
  51. {meerschaum-3.0.0rc8 → meerschaum-3.0.2}/meerschaum/actions/deduplicate.py +0 -0
  52. {meerschaum-3.0.0rc8 → meerschaum-3.0.2}/meerschaum/actions/delete.py +0 -0
  53. {meerschaum-3.0.0rc8 → meerschaum-3.0.2}/meerschaum/actions/drop.py +0 -0
  54. {meerschaum-3.0.0rc8 → meerschaum-3.0.2}/meerschaum/actions/edit.py +0 -0
  55. {meerschaum-3.0.0rc8 → meerschaum-3.0.2}/meerschaum/actions/index.py +0 -0
  56. {meerschaum-3.0.0rc8 → meerschaum-3.0.2}/meerschaum/actions/login.py +0 -0
  57. {meerschaum-3.0.0rc8 → meerschaum-3.0.2}/meerschaum/actions/os.py +0 -0
  58. {meerschaum-3.0.0rc8 → meerschaum-3.0.2}/meerschaum/actions/pause.py +0 -0
  59. {meerschaum-3.0.0rc8 → meerschaum-3.0.2}/meerschaum/actions/python.py +0 -0
  60. {meerschaum-3.0.0rc8 → meerschaum-3.0.2}/meerschaum/actions/register.py +0 -0
  61. {meerschaum-3.0.0rc8 → meerschaum-3.0.2}/meerschaum/actions/reload.py +0 -0
  62. {meerschaum-3.0.0rc8 → meerschaum-3.0.2}/meerschaum/actions/restart.py +0 -0
  63. {meerschaum-3.0.0rc8 → meerschaum-3.0.2}/meerschaum/actions/setup.py +0 -0
  64. {meerschaum-3.0.0rc8 → meerschaum-3.0.2}/meerschaum/actions/sh.py +0 -0
  65. {meerschaum-3.0.0rc8 → meerschaum-3.0.2}/meerschaum/actions/show.py +0 -0
  66. {meerschaum-3.0.0rc8 → meerschaum-3.0.2}/meerschaum/actions/sql.py +0 -0
  67. {meerschaum-3.0.0rc8 → meerschaum-3.0.2}/meerschaum/actions/stack.py +0 -0
  68. {meerschaum-3.0.0rc8 → meerschaum-3.0.2}/meerschaum/actions/stop.py +0 -0
  69. {meerschaum-3.0.0rc8 → meerschaum-3.0.2}/meerschaum/actions/sync.py +0 -0
  70. {meerschaum-3.0.0rc8 → meerschaum-3.0.2}/meerschaum/actions/tag.py +0 -0
  71. {meerschaum-3.0.0rc8 → meerschaum-3.0.2}/meerschaum/actions/uninstall.py +0 -0
  72. {meerschaum-3.0.0rc8 → meerschaum-3.0.2}/meerschaum/actions/verify.py +0 -0
  73. {meerschaum-3.0.0rc8 → meerschaum-3.0.2}/meerschaum/api/__init__.py +0 -0
  74. {meerschaum-3.0.0rc8 → meerschaum-3.0.2}/meerschaum/api/_chain.py +0 -0
  75. {meerschaum-3.0.0rc8 → meerschaum-3.0.2}/meerschaum/api/_chunks.py +0 -0
  76. {meerschaum-3.0.0rc8 → meerschaum-3.0.2}/meerschaum/api/_events.py +0 -0
  77. {meerschaum-3.0.0rc8 → meerschaum-3.0.2}/meerschaum/api/_exceptions.py +0 -0
  78. {meerschaum-3.0.0rc8 → meerschaum-3.0.2}/meerschaum/api/_oauth2.py +0 -0
  79. {meerschaum-3.0.0rc8 → meerschaum-3.0.2}/meerschaum/api/_tokens.py +0 -0
  80. {meerschaum-3.0.0rc8 → meerschaum-3.0.2}/meerschaum/api/_websockets.py +0 -0
  81. {meerschaum-3.0.0rc8 → meerschaum-3.0.2}/meerschaum/api/dash/__init__.py +0 -0
  82. {meerschaum-3.0.0rc8 → meerschaum-3.0.2}/meerschaum/api/dash/assets/__init__.py +0 -0
  83. {meerschaum-3.0.0rc8 → meerschaum-3.0.2}/meerschaum/api/dash/assets/ansi_up.js +0 -0
  84. {meerschaum-3.0.0rc8 → meerschaum-3.0.2}/meerschaum/api/dash/assets/banner_1920x320.png +0 -0
  85. {meerschaum-3.0.0rc8 → meerschaum-3.0.2}/meerschaum/api/dash/assets/favicon.ico +0 -0
  86. {meerschaum-3.0.0rc8 → meerschaum-3.0.2}/meerschaum/api/dash/assets/logo_48x48.png +0 -0
  87. {meerschaum-3.0.0rc8 → meerschaum-3.0.2}/meerschaum/api/dash/assets/logo_500x500.png +0 -0
  88. {meerschaum-3.0.0rc8 → meerschaum-3.0.2}/meerschaum/api/dash/callbacks/__init__.py +0 -0
  89. {meerschaum-3.0.0rc8 → meerschaum-3.0.2}/meerschaum/api/dash/callbacks/jobs.py +0 -0
  90. {meerschaum-3.0.0rc8 → meerschaum-3.0.2}/meerschaum/api/dash/callbacks/login.py +0 -0
  91. {meerschaum-3.0.0rc8 → meerschaum-3.0.2}/meerschaum/api/dash/callbacks/pipes.py +0 -0
  92. {meerschaum-3.0.0rc8 → meerschaum-3.0.2}/meerschaum/api/dash/callbacks/plugins.py +0 -0
  93. {meerschaum-3.0.0rc8 → meerschaum-3.0.2}/meerschaum/api/dash/callbacks/register.py +0 -0
  94. {meerschaum-3.0.0rc8 → meerschaum-3.0.2}/meerschaum/api/dash/callbacks/settings/__init__.py +0 -0
  95. {meerschaum-3.0.0rc8 → meerschaum-3.0.2}/meerschaum/api/dash/callbacks/settings/password_reset.py +0 -0
  96. {meerschaum-3.0.0rc8 → meerschaum-3.0.2}/meerschaum/api/dash/callbacks/tokens.py +0 -0
  97. {meerschaum-3.0.0rc8 → meerschaum-3.0.2}/meerschaum/api/dash/components.py +0 -0
  98. {meerschaum-3.0.0rc8 → meerschaum-3.0.2}/meerschaum/api/dash/connectors.py +0 -0
  99. {meerschaum-3.0.0rc8 → meerschaum-3.0.2}/meerschaum/api/dash/graphs.py +0 -0
  100. {meerschaum-3.0.0rc8 → meerschaum-3.0.2}/meerschaum/api/dash/jobs.py +0 -0
  101. {meerschaum-3.0.0rc8 → meerschaum-3.0.2}/meerschaum/api/dash/keys.py +0 -0
  102. {meerschaum-3.0.0rc8 → meerschaum-3.0.2}/meerschaum/api/dash/pages/__init__.py +0 -0
  103. {meerschaum-3.0.0rc8 → meerschaum-3.0.2}/meerschaum/api/dash/pages/dashboard.py +0 -0
  104. {meerschaum-3.0.0rc8 → meerschaum-3.0.2}/meerschaum/api/dash/pages/error.py +0 -0
  105. {meerschaum-3.0.0rc8 → meerschaum-3.0.2}/meerschaum/api/dash/pages/jobs.py +0 -0
  106. {meerschaum-3.0.0rc8 → meerschaum-3.0.2}/meerschaum/api/dash/pages/login.py +0 -0
  107. {meerschaum-3.0.0rc8 → meerschaum-3.0.2}/meerschaum/api/dash/pages/pipes.py +0 -0
  108. {meerschaum-3.0.0rc8 → meerschaum-3.0.2}/meerschaum/api/dash/pages/plugins.py +0 -0
  109. {meerschaum-3.0.0rc8 → meerschaum-3.0.2}/meerschaum/api/dash/pages/register.py +0 -0
  110. {meerschaum-3.0.0rc8 → meerschaum-3.0.2}/meerschaum/api/dash/pages/settings/__init__.py +0 -0
  111. {meerschaum-3.0.0rc8 → meerschaum-3.0.2}/meerschaum/api/dash/pages/settings/password_reset.py +0 -0
  112. {meerschaum-3.0.0rc8 → meerschaum-3.0.2}/meerschaum/api/dash/pages/tokens.py +0 -0
  113. {meerschaum-3.0.0rc8 → meerschaum-3.0.2}/meerschaum/api/dash/pipes.py +0 -0
  114. {meerschaum-3.0.0rc8 → meerschaum-3.0.2}/meerschaum/api/dash/plugins.py +0 -0
  115. {meerschaum-3.0.0rc8 → meerschaum-3.0.2}/meerschaum/api/dash/sessions.py +0 -0
  116. {meerschaum-3.0.0rc8 → meerschaum-3.0.2}/meerschaum/api/dash/sync.py +0 -0
  117. {meerschaum-3.0.0rc8 → meerschaum-3.0.2}/meerschaum/api/dash/tokens.py +0 -0
  118. {meerschaum-3.0.0rc8 → meerschaum-3.0.2}/meerschaum/api/dash/users.py +0 -0
  119. {meerschaum-3.0.0rc8 → meerschaum-3.0.2}/meerschaum/api/dash/websockets.py +0 -0
  120. {meerschaum-3.0.0rc8 → meerschaum-3.0.2}/meerschaum/api/dash/webterm.py +0 -0
  121. {meerschaum-3.0.0rc8 → meerschaum-3.0.2}/meerschaum/api/models/__init__.py +0 -0
  122. {meerschaum-3.0.0rc8 → meerschaum-3.0.2}/meerschaum/api/models/_actions.py +0 -0
  123. {meerschaum-3.0.0rc8 → meerschaum-3.0.2}/meerschaum/api/models/_pipes.py +0 -0
  124. {meerschaum-3.0.0rc8 → meerschaum-3.0.2}/meerschaum/api/models/_tokens.py +0 -0
  125. {meerschaum-3.0.0rc8 → meerschaum-3.0.2}/meerschaum/api/resources/__init__.py +0 -0
  126. {meerschaum-3.0.0rc8 → meerschaum-3.0.2}/meerschaum/api/resources/static/__init__.py +0 -0
  127. {meerschaum-3.0.0rc8 → meerschaum-3.0.2}/meerschaum/api/resources/static/css/__init__.py +0 -0
  128. {meerschaum-3.0.0rc8 → meerschaum-3.0.2}/meerschaum/api/resources/static/css/bootstrap.min.css +0 -0
  129. {meerschaum-3.0.0rc8 → meerschaum-3.0.2}/meerschaum/api/resources/static/css/dash.css +0 -0
  130. {meerschaum-3.0.0rc8 → meerschaum-3.0.2}/meerschaum/api/resources/static/css/dbc_dark.css +0 -0
  131. {meerschaum-3.0.0rc8 → meerschaum-3.0.2}/meerschaum/api/resources/static/css/styles.css +0 -0
  132. {meerschaum-3.0.0rc8 → meerschaum-3.0.2}/meerschaum/api/resources/static/css/xterm.css +0 -0
  133. {meerschaum-3.0.0rc8 → meerschaum-3.0.2}/meerschaum/api/resources/static/ico/__init__.py +0 -0
  134. {meerschaum-3.0.0rc8 → meerschaum-3.0.2}/meerschaum/api/resources/static/ico/logo.ico +0 -0
  135. {meerschaum-3.0.0rc8 → meerschaum-3.0.2}/meerschaum/api/resources/static/js/__init__.py +0 -0
  136. {meerschaum-3.0.0rc8 → meerschaum-3.0.2}/meerschaum/api/resources/static/js/action_button.js +0 -0
  137. {meerschaum-3.0.0rc8 → meerschaum-3.0.2}/meerschaum/api/resources/static/js/main.js +0 -0
  138. {meerschaum-3.0.0rc8 → meerschaum-3.0.2}/meerschaum/api/resources/static/js/terminado.js +0 -0
  139. {meerschaum-3.0.0rc8 → meerschaum-3.0.2}/meerschaum/api/resources/static/js/xterm-addon-unicode11.js +0 -0
  140. {meerschaum-3.0.0rc8 → meerschaum-3.0.2}/meerschaum/api/resources/static/js/xterm.js +0 -0
  141. {meerschaum-3.0.0rc8 → meerschaum-3.0.2}/meerschaum/api/resources/static/png/__init__.py +0 -0
  142. {meerschaum-3.0.0rc8 → meerschaum-3.0.2}/meerschaum/api/resources/templates/__init__.py +0 -0
  143. {meerschaum-3.0.0rc8 → meerschaum-3.0.2}/meerschaum/api/resources/templates/index.html +0 -0
  144. {meerschaum-3.0.0rc8 → meerschaum-3.0.2}/meerschaum/api/resources/templates/old_index.html +0 -0
  145. {meerschaum-3.0.0rc8 → meerschaum-3.0.2}/meerschaum/api/resources/templates/secret.html +0 -0
  146. {meerschaum-3.0.0rc8 → meerschaum-3.0.2}/meerschaum/api/resources/templates/termpage.html +0 -0
  147. {meerschaum-3.0.0rc8 → meerschaum-3.0.2}/meerschaum/api/routes/__init__.py +0 -0
  148. {meerschaum-3.0.0rc8 → meerschaum-3.0.2}/meerschaum/api/routes/_actions.py +0 -0
  149. {meerschaum-3.0.0rc8 → meerschaum-3.0.2}/meerschaum/api/routes/_connectors.py +0 -0
  150. {meerschaum-3.0.0rc8 → meerschaum-3.0.2}/meerschaum/api/routes/_index.py +0 -0
  151. {meerschaum-3.0.0rc8 → meerschaum-3.0.2}/meerschaum/api/routes/_jobs.py +0 -0
  152. {meerschaum-3.0.0rc8 → meerschaum-3.0.2}/meerschaum/api/routes/_login.py +0 -0
  153. {meerschaum-3.0.0rc8 → meerschaum-3.0.2}/meerschaum/api/routes/_misc.py +0 -0
  154. {meerschaum-3.0.0rc8 → meerschaum-3.0.2}/meerschaum/api/routes/_pipes.py +0 -0
  155. {meerschaum-3.0.0rc8 → meerschaum-3.0.2}/meerschaum/api/routes/_plugins.py +0 -0
  156. {meerschaum-3.0.0rc8 → meerschaum-3.0.2}/meerschaum/api/routes/_tokens.py +0 -0
  157. {meerschaum-3.0.0rc8 → meerschaum-3.0.2}/meerschaum/api/routes/_users.py +0 -0
  158. {meerschaum-3.0.0rc8 → meerschaum-3.0.2}/meerschaum/api/routes/_version.py +0 -0
  159. {meerschaum-3.0.0rc8 → meerschaum-3.0.2}/meerschaum/api/routes/_webterm.py +0 -0
  160. {meerschaum-3.0.0rc8 → meerschaum-3.0.2}/meerschaum/api/tables/__init__.py +0 -0
  161. {meerschaum-3.0.0rc8 → meerschaum-3.0.2}/meerschaum/config/__init__.py +0 -0
  162. {meerschaum-3.0.0rc8 → meerschaum-3.0.2}/meerschaum/config/_dash.py +0 -0
  163. {meerschaum-3.0.0rc8 → meerschaum-3.0.2}/meerschaum/config/_edit.py +0 -0
  164. {meerschaum-3.0.0rc8 → meerschaum-3.0.2}/meerschaum/config/_formatting.py +0 -0
  165. {meerschaum-3.0.0rc8 → meerschaum-3.0.2}/meerschaum/config/_jobs.py +0 -0
  166. {meerschaum-3.0.0rc8 → meerschaum-3.0.2}/meerschaum/config/_patch.py +0 -0
  167. {meerschaum-3.0.0rc8 → meerschaum-3.0.2}/meerschaum/config/_paths.py +0 -0
  168. {meerschaum-3.0.0rc8 → meerschaum-3.0.2}/meerschaum/config/_preprocess.py +0 -0
  169. {meerschaum-3.0.0rc8 → meerschaum-3.0.2}/meerschaum/config/_shell.py +0 -0
  170. {meerschaum-3.0.0rc8 → meerschaum-3.0.2}/meerschaum/config/_sync.py +0 -0
  171. {meerschaum-3.0.0rc8 → meerschaum-3.0.2}/meerschaum/config/paths.py +0 -0
  172. {meerschaum-3.0.0rc8 → meerschaum-3.0.2}/meerschaum/config/resources/__init__.py +0 -0
  173. {meerschaum-3.0.0rc8 → meerschaum-3.0.2}/meerschaum/config/stack/__init__.py +0 -0
  174. {meerschaum-3.0.0rc8 → meerschaum-3.0.2}/meerschaum/config/stack/grafana/__init__.py +0 -0
  175. {meerschaum-3.0.0rc8 → meerschaum-3.0.2}/meerschaum/config/stack/mosquitto/__init__.py +0 -0
  176. {meerschaum-3.0.0rc8 → meerschaum-3.0.2}/meerschaum/config/stack/mosquitto/resources/__init__.py +0 -0
  177. {meerschaum-3.0.0rc8 → meerschaum-3.0.2}/meerschaum/config/stack/resources/__init__.py +0 -0
  178. {meerschaum-3.0.0rc8 → meerschaum-3.0.2}/meerschaum/config/static.py +0 -0
  179. {meerschaum-3.0.0rc8 → meerschaum-3.0.2}/meerschaum/connectors/_Connector.py +0 -0
  180. {meerschaum-3.0.0rc8 → meerschaum-3.0.2}/meerschaum/connectors/__init__.py +0 -0
  181. {meerschaum-3.0.0rc8 → meerschaum-3.0.2}/meerschaum/connectors/api/_APIConnector.py +0 -0
  182. {meerschaum-3.0.0rc8 → meerschaum-3.0.2}/meerschaum/connectors/api/__init__.py +0 -0
  183. {meerschaum-3.0.0rc8 → meerschaum-3.0.2}/meerschaum/connectors/api/_actions.py +0 -0
  184. {meerschaum-3.0.0rc8 → meerschaum-3.0.2}/meerschaum/connectors/api/_fetch.py +0 -0
  185. {meerschaum-3.0.0rc8 → meerschaum-3.0.2}/meerschaum/connectors/api/_jobs.py +0 -0
  186. {meerschaum-3.0.0rc8 → meerschaum-3.0.2}/meerschaum/connectors/api/_login.py +0 -0
  187. {meerschaum-3.0.0rc8 → meerschaum-3.0.2}/meerschaum/connectors/api/_misc.py +0 -0
  188. {meerschaum-3.0.0rc8 → meerschaum-3.0.2}/meerschaum/connectors/api/_pipes.py +0 -0
  189. {meerschaum-3.0.0rc8 → meerschaum-3.0.2}/meerschaum/connectors/api/_plugins.py +0 -0
  190. {meerschaum-3.0.0rc8 → meerschaum-3.0.2}/meerschaum/connectors/api/_request.py +0 -0
  191. {meerschaum-3.0.0rc8 → meerschaum-3.0.2}/meerschaum/connectors/api/_tokens.py +0 -0
  192. {meerschaum-3.0.0rc8 → meerschaum-3.0.2}/meerschaum/connectors/api/_uri.py +0 -0
  193. {meerschaum-3.0.0rc8 → meerschaum-3.0.2}/meerschaum/connectors/api/_users.py +0 -0
  194. {meerschaum-3.0.0rc8 → meerschaum-3.0.2}/meerschaum/connectors/instance/_InstanceConnector.py +0 -0
  195. {meerschaum-3.0.0rc8 → meerschaum-3.0.2}/meerschaum/connectors/instance/__init__.py +0 -0
  196. {meerschaum-3.0.0rc8 → meerschaum-3.0.2}/meerschaum/connectors/instance/_pipes.py +0 -0
  197. {meerschaum-3.0.0rc8 → meerschaum-3.0.2}/meerschaum/connectors/instance/_plugins.py +0 -0
  198. {meerschaum-3.0.0rc8 → meerschaum-3.0.2}/meerschaum/connectors/instance/_tokens.py +0 -0
  199. {meerschaum-3.0.0rc8 → meerschaum-3.0.2}/meerschaum/connectors/instance/_users.py +0 -0
  200. {meerschaum-3.0.0rc8 → meerschaum-3.0.2}/meerschaum/connectors/parse.py +0 -0
  201. {meerschaum-3.0.0rc8 → meerschaum-3.0.2}/meerschaum/connectors/plugin/PluginConnector.py +0 -0
  202. {meerschaum-3.0.0rc8 → meerschaum-3.0.2}/meerschaum/connectors/plugin/__init__.py +0 -0
  203. {meerschaum-3.0.0rc8 → meerschaum-3.0.2}/meerschaum/connectors/poll.py +0 -0
  204. {meerschaum-3.0.0rc8 → meerschaum-3.0.2}/meerschaum/connectors/sql/_SQLConnector.py +0 -0
  205. {meerschaum-3.0.0rc8 → meerschaum-3.0.2}/meerschaum/connectors/sql/__init__.py +0 -0
  206. {meerschaum-3.0.0rc8 → meerschaum-3.0.2}/meerschaum/connectors/sql/_cli.py +0 -0
  207. {meerschaum-3.0.0rc8 → meerschaum-3.0.2}/meerschaum/connectors/sql/_fetch.py +0 -0
  208. {meerschaum-3.0.0rc8 → meerschaum-3.0.2}/meerschaum/connectors/sql/_instance.py +0 -0
  209. {meerschaum-3.0.0rc8 → meerschaum-3.0.2}/meerschaum/connectors/sql/_plugins.py +0 -0
  210. {meerschaum-3.0.0rc8 → meerschaum-3.0.2}/meerschaum/connectors/sql/_sql.py +0 -0
  211. {meerschaum-3.0.0rc8 → meerschaum-3.0.2}/meerschaum/connectors/sql/_uri.py +0 -0
  212. {meerschaum-3.0.0rc8 → meerschaum-3.0.2}/meerschaum/connectors/sql/_users.py +0 -0
  213. {meerschaum-3.0.0rc8 → meerschaum-3.0.2}/meerschaum/connectors/sql/tables/__init__.py +0 -0
  214. {meerschaum-3.0.0rc8 → meerschaum-3.0.2}/meerschaum/connectors/sql/tables/types.py +0 -0
  215. {meerschaum-3.0.0rc8 → meerschaum-3.0.2}/meerschaum/connectors/sql/tools.py +0 -0
  216. {meerschaum-3.0.0rc8 → meerschaum-3.0.2}/meerschaum/connectors/valkey/_ValkeyConnector.py +0 -0
  217. {meerschaum-3.0.0rc8 → meerschaum-3.0.2}/meerschaum/connectors/valkey/__init__.py +0 -0
  218. {meerschaum-3.0.0rc8 → meerschaum-3.0.2}/meerschaum/connectors/valkey/_fetch.py +0 -0
  219. {meerschaum-3.0.0rc8 → meerschaum-3.0.2}/meerschaum/connectors/valkey/_pipes.py +0 -0
  220. {meerschaum-3.0.0rc8 → meerschaum-3.0.2}/meerschaum/connectors/valkey/_plugins.py +0 -0
  221. {meerschaum-3.0.0rc8 → meerschaum-3.0.2}/meerschaum/connectors/valkey/_users.py +0 -0
  222. {meerschaum-3.0.0rc8 → meerschaum-3.0.2}/meerschaum/core/Pipe/__init__.py +0 -0
  223. {meerschaum-3.0.0rc8 → meerschaum-3.0.2}/meerschaum/core/Pipe/_attributes.py +0 -0
  224. {meerschaum-3.0.0rc8 → meerschaum-3.0.2}/meerschaum/core/Pipe/_bootstrap.py +0 -0
  225. {meerschaum-3.0.0rc8 → meerschaum-3.0.2}/meerschaum/core/Pipe/_cache.py +0 -0
  226. {meerschaum-3.0.0rc8 → meerschaum-3.0.2}/meerschaum/core/Pipe/_clear.py +0 -0
  227. {meerschaum-3.0.0rc8 → meerschaum-3.0.2}/meerschaum/core/Pipe/_copy.py +0 -0
  228. {meerschaum-3.0.0rc8 → meerschaum-3.0.2}/meerschaum/core/Pipe/_data.py +0 -0
  229. {meerschaum-3.0.0rc8 → meerschaum-3.0.2}/meerschaum/core/Pipe/_deduplicate.py +0 -0
  230. {meerschaum-3.0.0rc8 → meerschaum-3.0.2}/meerschaum/core/Pipe/_delete.py +0 -0
  231. {meerschaum-3.0.0rc8 → meerschaum-3.0.2}/meerschaum/core/Pipe/_drop.py +0 -0
  232. {meerschaum-3.0.0rc8 → meerschaum-3.0.2}/meerschaum/core/Pipe/_dtypes.py +0 -0
  233. {meerschaum-3.0.0rc8 → meerschaum-3.0.2}/meerschaum/core/Pipe/_edit.py +0 -0
  234. {meerschaum-3.0.0rc8 → meerschaum-3.0.2}/meerschaum/core/Pipe/_fetch.py +0 -0
  235. {meerschaum-3.0.0rc8 → meerschaum-3.0.2}/meerschaum/core/Pipe/_index.py +0 -0
  236. {meerschaum-3.0.0rc8 → meerschaum-3.0.2}/meerschaum/core/Pipe/_register.py +0 -0
  237. {meerschaum-3.0.0rc8 → meerschaum-3.0.2}/meerschaum/core/Pipe/_show.py +0 -0
  238. {meerschaum-3.0.0rc8 → meerschaum-3.0.2}/meerschaum/core/Pipe/_sync.py +0 -0
  239. {meerschaum-3.0.0rc8 → meerschaum-3.0.2}/meerschaum/core/Pipe/_verify.py +0 -0
  240. {meerschaum-3.0.0rc8 → meerschaum-3.0.2}/meerschaum/core/Plugin/_Plugin.py +0 -0
  241. {meerschaum-3.0.0rc8 → meerschaum-3.0.2}/meerschaum/core/Plugin/__init__.py +0 -0
  242. {meerschaum-3.0.0rc8 → meerschaum-3.0.2}/meerschaum/core/Token/_Token.py +0 -0
  243. {meerschaum-3.0.0rc8 → meerschaum-3.0.2}/meerschaum/core/Token/__init__.py +0 -0
  244. {meerschaum-3.0.0rc8 → meerschaum-3.0.2}/meerschaum/core/User/_User.py +0 -0
  245. {meerschaum-3.0.0rc8 → meerschaum-3.0.2}/meerschaum/core/User/__init__.py +0 -0
  246. {meerschaum-3.0.0rc8 → meerschaum-3.0.2}/meerschaum/core/__init__.py +0 -0
  247. {meerschaum-3.0.0rc8 → meerschaum-3.0.2}/meerschaum/jobs/_Executor.py +0 -0
  248. {meerschaum-3.0.0rc8 → meerschaum-3.0.2}/meerschaum/jobs/_Job.py +0 -0
  249. {meerschaum-3.0.0rc8 → meerschaum-3.0.2}/meerschaum/jobs/__init__.py +0 -0
  250. {meerschaum-3.0.0rc8 → meerschaum-3.0.2}/meerschaum/jobs/systemd.py +0 -0
  251. {meerschaum-3.0.0rc8 → meerschaum-3.0.2}/meerschaum/models/__init__.py +0 -0
  252. {meerschaum-3.0.0rc8 → meerschaum-3.0.2}/meerschaum/models/pipes.py +0 -0
  253. {meerschaum-3.0.0rc8 → meerschaum-3.0.2}/meerschaum/models/tokens.py +0 -0
  254. {meerschaum-3.0.0rc8 → meerschaum-3.0.2}/meerschaum/models/users.py +0 -0
  255. {meerschaum-3.0.0rc8 → meerschaum-3.0.2}/meerschaum/plugins/bootstrap.py +0 -0
  256. {meerschaum-3.0.0rc8 → meerschaum-3.0.2}/meerschaum/utils/__init__.py +0 -0
  257. {meerschaum-3.0.0rc8 → meerschaum-3.0.2}/meerschaum/utils/_get_pipes.py +0 -0
  258. {meerschaum-3.0.0rc8 → meerschaum-3.0.2}/meerschaum/utils/daemon/Daemon.py +0 -0
  259. {meerschaum-3.0.0rc8 → meerschaum-3.0.2}/meerschaum/utils/daemon/FileDescriptorInterceptor.py +0 -0
  260. {meerschaum-3.0.0rc8 → meerschaum-3.0.2}/meerschaum/utils/daemon/RotatingFile.py +0 -0
  261. {meerschaum-3.0.0rc8 → meerschaum-3.0.2}/meerschaum/utils/daemon/StdinFile.py +0 -0
  262. {meerschaum-3.0.0rc8 → meerschaum-3.0.2}/meerschaum/utils/daemon/__init__.py +0 -0
  263. {meerschaum-3.0.0rc8 → meerschaum-3.0.2}/meerschaum/utils/daemon/_names.py +0 -0
  264. {meerschaum-3.0.0rc8 → meerschaum-3.0.2}/meerschaum/utils/dataframe.py +0 -0
  265. {meerschaum-3.0.0rc8 → meerschaum-3.0.2}/meerschaum/utils/debug.py +0 -0
  266. {meerschaum-3.0.0rc8 → meerschaum-3.0.2}/meerschaum/utils/dtypes/__init__.py +0 -0
  267. {meerschaum-3.0.0rc8 → meerschaum-3.0.2}/meerschaum/utils/dtypes/sql.py +0 -0
  268. {meerschaum-3.0.0rc8 → meerschaum-3.0.2}/meerschaum/utils/formatting/__init__.py +0 -0
  269. {meerschaum-3.0.0rc8 → meerschaum-3.0.2}/meerschaum/utils/formatting/_jobs.py +0 -0
  270. {meerschaum-3.0.0rc8 → meerschaum-3.0.2}/meerschaum/utils/formatting/_pipes.py +0 -0
  271. {meerschaum-3.0.0rc8 → meerschaum-3.0.2}/meerschaum/utils/formatting/_pprint.py +0 -0
  272. {meerschaum-3.0.0rc8 → meerschaum-3.0.2}/meerschaum/utils/formatting/_shell.py +0 -0
  273. {meerschaum-3.0.0rc8 → meerschaum-3.0.2}/meerschaum/utils/interactive.py +0 -0
  274. {meerschaum-3.0.0rc8 → meerschaum-3.0.2}/meerschaum/utils/misc.py +0 -0
  275. {meerschaum-3.0.0rc8 → meerschaum-3.0.2}/meerschaum/utils/networking.py +0 -0
  276. {meerschaum-3.0.0rc8 → meerschaum-3.0.2}/meerschaum/utils/packages/lazy_loader.py +0 -0
  277. {meerschaum-3.0.0rc8 → meerschaum-3.0.2}/meerschaum/utils/pipes.py +0 -0
  278. {meerschaum-3.0.0rc8 → meerschaum-3.0.2}/meerschaum/utils/pool.py +0 -0
  279. {meerschaum-3.0.0rc8 → meerschaum-3.0.2}/meerschaum/utils/process.py +0 -0
  280. {meerschaum-3.0.0rc8 → meerschaum-3.0.2}/meerschaum/utils/prompt.py +0 -0
  281. {meerschaum-3.0.0rc8 → meerschaum-3.0.2}/meerschaum/utils/schedule.py +0 -0
  282. {meerschaum-3.0.0rc8 → meerschaum-3.0.2}/meerschaum/utils/sql.py +0 -0
  283. {meerschaum-3.0.0rc8 → meerschaum-3.0.2}/meerschaum/utils/threading.py +0 -0
  284. {meerschaum-3.0.0rc8 → meerschaum-3.0.2}/meerschaum/utils/typing.py +0 -0
  285. {meerschaum-3.0.0rc8 → meerschaum-3.0.2}/meerschaum/utils/venv/_Venv.py +0 -0
  286. {meerschaum-3.0.0rc8 → meerschaum-3.0.2}/meerschaum/utils/venv/__init__.py +0 -0
  287. {meerschaum-3.0.0rc8 → meerschaum-3.0.2}/meerschaum/utils/warnings.py +0 -0
  288. {meerschaum-3.0.0rc8 → meerschaum-3.0.2}/meerschaum/utils/yaml.py +0 -0
  289. {meerschaum-3.0.0rc8 → meerschaum-3.0.2}/meerschaum.egg-info/SOURCES.txt +0 -0
  290. {meerschaum-3.0.0rc8 → meerschaum-3.0.2}/meerschaum.egg-info/dependency_links.txt +0 -0
  291. {meerschaum-3.0.0rc8 → meerschaum-3.0.2}/meerschaum.egg-info/entry_points.txt +0 -0
  292. {meerschaum-3.0.0rc8 → meerschaum-3.0.2}/meerschaum.egg-info/top_level.txt +0 -0
  293. {meerschaum-3.0.0rc8 → meerschaum-3.0.2}/meerschaum.egg-info/zip-safe +0 -0
  294. {meerschaum-3.0.0rc8 → meerschaum-3.0.2}/pyproject.toml +0 -0
  295. {meerschaum-3.0.0rc8 → meerschaum-3.0.2}/setup.cfg +0 -0
  296. {meerschaum-3.0.0rc8 → meerschaum-3.0.2}/setup.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: meerschaum
3
- Version: 3.0.0rc8
3
+ Version: 3.0.2
4
4
  Summary: Sync Time-Series Pipes with Meerschaum
5
5
  Author-email: Bennett Meares <bennett.meares@gmail.com>
6
6
  Maintainer-email: Bennett Meares <bennett.meares@gmail.com>
@@ -134,7 +134,7 @@ Requires-Dist: partd>=1.4.2; extra == "sql"
134
134
  Requires-Dist: pytz; extra == "sql"
135
135
  Requires-Dist: joblib>=1.5.1; extra == "sql"
136
136
  Requires-Dist: SQLAlchemy>=2.0.41; extra == "sql"
137
- Requires-Dist: GeoAlchemy2>=0.17.1; extra == "sql"
137
+ Requires-Dist: GeoAlchemy2>=0.18.0; extra == "sql"
138
138
  Requires-Dist: databases>=0.9.0; extra == "sql"
139
139
  Requires-Dist: aiosqlite>=0.21.0; extra == "sql"
140
140
  Requires-Dist: asyncpg>=0.30.0; extra == "sql"
@@ -201,7 +201,7 @@ Requires-Dist: partd>=1.4.2; extra == "api"
201
201
  Requires-Dist: pytz; extra == "api"
202
202
  Requires-Dist: joblib>=1.5.1; extra == "api"
203
203
  Requires-Dist: SQLAlchemy>=2.0.41; extra == "api"
204
- Requires-Dist: GeoAlchemy2>=0.17.1; extra == "api"
204
+ Requires-Dist: GeoAlchemy2>=0.18.0; extra == "api"
205
205
  Requires-Dist: databases>=0.9.0; extra == "api"
206
206
  Requires-Dist: aiosqlite>=0.21.0; extra == "api"
207
207
  Requires-Dist: asyncpg>=0.30.0; extra == "api"
@@ -316,7 +316,7 @@ Requires-Dist: partd>=1.4.2; extra == "full"
316
316
  Requires-Dist: pytz; extra == "full"
317
317
  Requires-Dist: joblib>=1.5.1; extra == "full"
318
318
  Requires-Dist: SQLAlchemy>=2.0.41; extra == "full"
319
- Requires-Dist: GeoAlchemy2>=0.17.1; extra == "full"
319
+ Requires-Dist: GeoAlchemy2>=0.18.0; extra == "full"
320
320
  Requires-Dist: databases>=0.9.0; extra == "full"
321
321
  Requires-Dist: aiosqlite>=0.21.0; extra == "full"
322
322
  Requires-Dist: asyncpg>=0.30.0; extra == "full"
@@ -140,6 +140,7 @@ def entry_with_daemon(
140
140
  'patch_args': _patch_args,
141
141
  'env': env,
142
142
  'config': config,
143
+ 'cwd': os.getcwd(),
143
144
  })
144
145
 
145
146
  accepted = False
@@ -90,7 +90,7 @@ class ActionWorker:
90
90
  """
91
91
  Return the job associated with this worker.
92
92
  """
93
- from meerschaum.config.paths import CLI_LOGS_RESOURCES_PATH, CLI_RESOURCES_PATH
93
+ from meerschaum.config.paths import CLI_LOGS_RESOURCES_PATH, PACKAGE_ROOT_PATH
94
94
  log_path = CLI_LOGS_RESOURCES_PATH / f'cli.{self.ix}.worker.log'
95
95
 
96
96
  return Job(
@@ -108,7 +108,7 @@ class ActionWorker:
108
108
  'redirect_streams': True,
109
109
  'lines_to_show': 0,
110
110
  },
111
- 'cwd': CLI_RESOURCES_PATH.as_posix(),
111
+ 'cwd': PACKAGE_ROOT_PATH.parent.as_posix(),
112
112
  },
113
113
  )
114
114
 
@@ -319,6 +319,9 @@ class ActionWorker:
319
319
  action_id = input_data.get('action_id', None)
320
320
  patch_args = input_data.get('patch_args', None)
321
321
  env = input_data.get('env', {})
322
+ old_cwd = os.getcwd()
323
+ cwd = input_data.get('cwd', os.getcwd())
324
+ os.chdir(cwd)
322
325
  config = input_data.get('config', {})
323
326
  self.write_output_data({
324
327
  'state': 'accepted',
@@ -335,6 +338,8 @@ class ActionWorker:
335
338
  )
336
339
  print(STOP_TOKEN, flush=True, end='\n')
337
340
 
341
+ os.chdir(old_cwd)
342
+
338
343
  self.write_output_data({
339
344
  'state': 'completed',
340
345
  'session_id': session_id,
@@ -62,6 +62,7 @@ def entry(
62
62
  A `SuccessTuple` indicating success.
63
63
  """
64
64
  start = time.perf_counter()
65
+ from meerschaum.config.environment import get_daemon_env_vars
65
66
  sysargs_list = shlex.split(sysargs) if isinstance(sysargs, str) else sysargs
66
67
  if (
67
68
  not _use_cli_daemon
@@ -69,6 +70,7 @@ def entry(
69
70
  or '--no-daemon' in sysargs_list
70
71
  or '--daemon' in sysargs_list
71
72
  or '-d' in sysargs_list
73
+ or get_daemon_env_vars()
72
74
  or not mrsm.get_config('system', 'experimental', 'cli_daemon')
73
75
  ):
74
76
  success, msg = entry_without_daemon(sysargs, _patch_args=_patch_args)
@@ -40,23 +40,16 @@ def get_webterm_app_and_manager(
40
40
  -------
41
41
  A tuple of the Tornado web application and term manager.
42
42
  """
43
- from meerschaum.config.environment import get_env_vars
44
- from meerschaum._internal.static import STATIC_CONFIG
43
+ from meerschaum.config.environment import get_env_vars, get_daemon_env_vars
45
44
  if env_path is None:
46
45
  from meerschaum.config.paths import WEBTERM_INTERNAL_RESOURCES_PATH
47
46
  env_path = WEBTERM_INTERNAL_RESOURCES_PATH / (str(port) + '.json')
48
47
 
49
- env_vars = get_env_vars()
48
+ daemon_env_vars = get_daemon_env_vars()
50
49
  env_dict = {
51
- env_var: os.environ[env_var]
52
- for env_var in env_vars
53
- if env_var not in (
54
- STATIC_CONFIG['environment']['systemd_log_path'],
55
- STATIC_CONFIG['environment']['systemd_result_path'],
56
- STATIC_CONFIG['environment']['systemd_delete_job'],
57
- STATIC_CONFIG['environment']['systemd_stdin_path'],
58
- STATIC_CONFIG['environment']['daemon_id'],
59
- )
50
+ env_var: env_val
51
+ for env_var, env_val in get_env_vars().items()
52
+ if env_var not in daemon_env_vars
60
53
  }
61
54
  with open(env_path, 'w+', encoding='utf-8') as f:
62
55
  json.dump(env_dict, f)
@@ -173,7 +173,7 @@ def _api_start(
173
173
  ROOT_DIR_PATH,
174
174
  )
175
175
  from meerschaum.config._patch import apply_patch_to_config
176
- from meerschaum.config.environment import get_env_vars
176
+ from meerschaum.config.environment import get_env_vars, get_daemon_env_vars
177
177
  from meerschaum._internal.static import STATIC_CONFIG, SERVER_ID
178
178
  from meerschaum.connectors.parse import parse_instance_keys
179
179
  from meerschaum.utils.pool import get_pool
@@ -335,11 +335,17 @@ def _api_start(
335
335
  )
336
336
  ),
337
337
  'HOSTNAME': os.environ.get('HOSTNAME', 'api'),
338
+ 'XDG_RUNTIME_DIR': os.environ.get('XDG_RUNTIME_DIR', ''),
339
+ 'DBUS_SESSION_BUS_ADDRESS': os.environ.get('DBUS_SESSION_BUS_ADDRESS', ''),
338
340
  })
339
- for env_var in get_env_vars():
340
- if env_var in env_dict:
341
- continue
342
- env_dict[env_var] = os.environ[env_var]
341
+
342
+ daemon_env_vars = get_daemon_env_vars()
343
+ env_vars = {
344
+ env_var: env_val
345
+ for env_var, env_val in get_env_vars().items()
346
+ if env_var not in daemon_env_vars and env_var not in env_dict
347
+ }
348
+ env_dict.update(env_vars)
343
349
 
344
350
  env_dict[MRSM_CONFIG] = apply_patch_to_config(
345
351
  env_dict.get(MRSM_CONFIG, {}),
@@ -74,14 +74,10 @@ def _install_plugins(
74
74
  - install plugins noaa --repo mrsm (mrsm is the default instance)
75
75
  - install plugins noaa --repo mycustominstance
76
76
  """
77
- from meerschaum.utils.debug import dprint
78
77
  from meerschaum.utils.warnings import info
79
- from meerschaum.plugins import reload_plugins
80
78
  from meerschaum.connectors.parse import parse_repo_keys
81
- import meerschaum.actions
79
+ from meerschaum.actions import actions
82
80
  from meerschaum.utils.formatting import print_tuple
83
- from meerschaum.core import Plugin
84
- from meerschaum.connectors.api import APIConnector
85
81
 
86
82
  if not action:
87
83
  return False, "No plugins to install."
@@ -98,8 +94,7 @@ def _install_plugins(
98
94
  )
99
95
  print_tuple((success, msg))
100
96
 
101
- reload_plugins(debug=debug)
102
- return True, "Success"
97
+ return actions['reload'](debug=debug)
103
98
 
104
99
 
105
100
  def _complete_install_plugins(
@@ -132,8 +127,9 @@ def _complete_install_plugins(
132
127
  from meerschaum.connectors.parse import parse_repo_keys
133
128
  try:
134
129
  repo_connector = parse_repo_keys(repository)
135
- except Exception as e:
130
+ except Exception:
136
131
  return []
132
+
137
133
  results = repo_connector.get_plugins(search_term=search_term)
138
134
  if len(results) == 1 and results[0] == search_term:
139
135
  return []
@@ -156,10 +152,11 @@ def _install_packages(
156
152
  `install packages pandas numpy`
157
153
  """
158
154
  if not action:
159
- return False, f"No packages to install."
160
- from meerschaum.utils.warnings import info
155
+ return False, "No packages to install."
156
+
161
157
  from meerschaum.utils.packages import pip_install
162
158
  from meerschaum.utils.misc import items_str
159
+ from meerschaum.actions import actions
163
160
  if venv is NoVenv:
164
161
  venv = 'mrsm'
165
162
 
@@ -169,11 +166,16 @@ def _install_packages(
169
166
  venv = venv,
170
167
  debug = debug,
171
168
  ):
169
+ reload_success, reload_msg = actions['reload'](debug=debug)
170
+ if not reload_success:
171
+ return reload_success, reload_msg
172
+
172
173
  return True, (
173
174
  "Successfully installed package" + ("s" if len(action) != 1 else '')
174
175
  + f" {items_str(action)}"
175
176
  + f" into the virtual environment '{venv}'."
176
177
  )
178
+
177
179
  return False, (
178
180
  "Failed to install package" + ("s" if len(action) != 1 else '') + f" {items_str(action)}."
179
181
  )
@@ -201,6 +203,7 @@ def _install_required(
201
203
  from meerschaum.utils.warnings import warn, info
202
204
  from meerschaum.connectors.parse import parse_repo_keys
203
205
  from meerschaum.plugins import get_plugins_names
206
+ from meerschaum.actions import actions
204
207
  repo_connector = parse_repo_keys(repository)
205
208
 
206
209
  plugins_names = action or get_plugins_names()
@@ -221,6 +224,10 @@ def _install_required(
221
224
  else:
222
225
  success_count += 1
223
226
 
227
+ reload_success, reload_msg = actions['reload'](debug=debug)
228
+ if not reload_success:
229
+ return reload_success, reload_msg
230
+
224
231
  success = fail_count == 0
225
232
  msg = (
226
233
  f"Installed packages for {success_count + fail_count} plugins\n "
@@ -234,15 +241,6 @@ def _complete_install_required(*args, **kw) -> List[str]:
234
241
  return _complete_uninstall_plugins(*args, **kw)
235
242
 
236
243
 
237
- def _install_systemd(
238
- action: Optional[List[str]] = None,
239
- **kwargs: Any
240
- ) -> SuccessTuple:
241
- """
242
- Install the Meerschaum job monitor as a systemd service.
243
- """
244
- import sys
245
-
246
244
 
247
245
  ### NOTE: This must be the final statement of the module.
248
246
  ### Any subactions added below these lines will not
@@ -94,6 +94,7 @@ def _start_jobs(
94
94
  sysargs: Optional[List[str]] = None,
95
95
  executor_keys: Optional[str] = None,
96
96
  rm: bool = False,
97
+ line: Optional[str] = None,
97
98
  debug: bool = False,
98
99
  **kw
99
100
  ) -> SuccessTuple:
@@ -125,6 +126,7 @@ def _start_jobs(
125
126
  - `start job --name happy_seal`
126
127
  Start the job 'happy_seal' but via the `--name` flag.
127
128
  """
129
+ import shlex
128
130
  from meerschaum.utils.warnings import warn, info
129
131
  from meerschaum.utils.daemon._names import get_new_daemon_name
130
132
  from meerschaum.jobs import (
@@ -215,7 +217,29 @@ def _start_jobs(
215
217
 
216
218
  def _run_new_job(name: Optional[str] = None):
217
219
  name = name or get_new_daemon_name()
218
- job = Job(name, sysargs, executor_keys=executor_keys, delete_after_completion=rm)
220
+ if len(sysargs or []) >= 2 and sysargs[0] == 'start' and sysargs[1].startswith('job'):
221
+ return (False, "Create a new job with `-d` / `--daemon`."), name
222
+
223
+ job_sysargs = (
224
+ shlex.join([a for a in sysargs if a not in ('-d', '--daemon')])
225
+ if not line
226
+ else line
227
+ )
228
+ job = Job(name, job_sysargs, executor_keys=executor_keys, delete_after_completion=rm)
229
+
230
+ if not job.exists():
231
+ try:
232
+ confirm = yes_no(
233
+ f"Create new job '{name}'?\n {job_sysargs}\n",
234
+ default='y',
235
+ yes=kw.get('yes', False),
236
+ noask=kw.get('noask', False),
237
+ )
238
+ except Exception:
239
+ confirm = True
240
+ if not confirm:
241
+ return (False, "Nothing changed."), name
242
+
219
243
  return job.start(debug=debug), name
220
244
 
221
245
  def _run_existing_job(name: str):
@@ -288,6 +312,7 @@ def _start_jobs(
288
312
  if new_job
289
313
  else _run_existing_job(_name)
290
314
  )
315
+
291
316
  if not kw.get('nopretty', False):
292
317
  print_tuple(success_tuple)
293
318
 
@@ -303,7 +328,10 @@ def _start_jobs(
303
328
  + ("Failed to start job" + ("s" if len(_failures) != 1 else '')
304
329
  + f" {items_str(_failures)}." if _failures else '')
305
330
  )
306
- _install_healthcheck_job()
331
+ if not msg:
332
+ msg = "Nothing changed."
333
+ else:
334
+ _install_healthcheck_job()
307
335
  return len(_failures) == 0, msg
308
336
 
309
337
 
@@ -51,19 +51,16 @@ def _upgrade_meerschaum(
51
51
  - `upgrade meerschaum full`
52
52
 
53
53
  """
54
- import subprocess
55
- import json
56
54
  from meerschaum.utils.debug import dprint
57
55
  from meerschaum.utils.warnings import info
58
56
  from meerschaum.actions import actions
59
57
  from meerschaum.utils.prompt import yes_no
60
- from meerschaum.utils.packages import pip_install, attempt_import
58
+ from meerschaum.utils.packages import pip_install
61
59
  from meerschaum.utils.misc import is_docker_available
62
60
 
63
61
  if action is None:
64
62
  action = []
65
63
 
66
- is_stack_running = False
67
64
  try:
68
65
  success, msg = actions['stack'](
69
66
  ['ps', '-q'], _capture_output=True, debug=debug
@@ -71,7 +68,7 @@ def _upgrade_meerschaum(
71
68
  if msg.endswith('\n'):
72
69
  msg = msg[:-1]
73
70
  containers = msg.split('\n')
74
- except Exception as e:
71
+ except Exception:
75
72
  containers = []
76
73
 
77
74
  if containers:
@@ -103,7 +100,7 @@ def _upgrade_meerschaum(
103
100
  if is_docker_available():
104
101
  actions['stack'](['pull'], debug=debug)
105
102
 
106
- return True, "Success"
103
+ return actions['reload'](debug=debug)
107
104
 
108
105
 
109
106
  class NoVenv:
@@ -128,10 +125,10 @@ def _upgrade_packages(
128
125
  upgrade packages full
129
126
  """
130
127
  from meerschaum.utils.packages import packages, pip_install, get_prerelease_dependencies
131
- from meerschaum.utils.warnings import info, warn
128
+ from meerschaum.utils.warnings import warn
132
129
  from meerschaum.utils.prompt import yes_no
133
130
  from meerschaum.utils.formatting import make_header, pprint
134
- from meerschaum.utils.misc import print_options
131
+ from meerschaum.actions import actions
135
132
  if action is None:
136
133
  action = []
137
134
  if venv is NoVenv:
@@ -164,7 +161,7 @@ def _upgrade_packages(
164
161
  if (install_name not in prereleases_to_install) or group == '_internal'
165
162
  ]
166
163
 
167
- success, msg = False, f"Nothing installed."
164
+ success, msg = False, "Nothing installed."
168
165
  if force or yes_no(question, noask=noask, yes=yes):
169
166
  success = pip_install(*to_install, debug=debug)
170
167
  if success and prereleases_to_install:
@@ -173,6 +170,14 @@ def _upgrade_packages(
173
170
  f"Successfully installed {len(packages[group])} packages." if success
174
171
  else f"Failed to install packages in dependency group '{group}'."
175
172
  )
173
+
174
+ if not success:
175
+ return success, msg
176
+
177
+ reload_success, reload_msg = actions['reload'](debug=debug)
178
+ if not reload_success:
179
+ return reload_success, reload_msg
180
+
176
181
  return success, msg
177
182
 
178
183
 
@@ -205,11 +210,20 @@ def _upgrade_plugins(
205
210
  to_install = get_plugins_names() if len(action) == 0 else action
206
211
  if len(to_install) == 0:
207
212
  return False, "No plugins to upgrade."
213
+
208
214
  print_options(to_install, header="Plugins to Upgrade:")
209
215
  if force or yes_no(f"Upgrade {len(to_install)} plugins?", yes=yes, noask=noask):
210
- return actions['install'](
211
- action=['plugins'] + to_install, debug=debug, force=force, noask=noask, yes=yes, **kw
216
+ install_success, install_msg = actions['install'](
217
+ action=['plugins'] + to_install,
218
+ debug=debug,
219
+ force=force,
220
+ noask=noask,
221
+ yes=yes,
222
+ **kw
212
223
  )
224
+
225
+ return install_success, install_msg
226
+
213
227
  return False, "No plugins upgraded."
214
228
 
215
229
  ### NOTE: This must be the final statement of the module.
@@ -7,7 +7,6 @@ Import custom callbacks created by plugins.
7
7
  """
8
8
 
9
9
  import traceback
10
- from typing import Any, Dict
11
10
 
12
11
  from meerschaum.api.dash import dash_app
13
12
  from meerschaum.plugins import _dash_plugins, _plugin_endpoints_to_pages
@@ -47,6 +46,8 @@ def add_plugin_pages(debug: bool = False):
47
46
  else:
48
47
  page_layout = [pages_navbar, page_layout]
49
48
  _pages[_page_dict['page_key']] = _endpoint
49
+ if not _endpoint.lstrip('/').startswith('dash'):
50
+ _endpoint = '/dash/' + _endpoint.lstrip('/')
50
51
  _paths[_endpoint] = page_layout
51
52
  if _page_dict['login_required']:
52
53
  _required_login.add(_endpoint)
@@ -99,16 +99,15 @@ omit_actions = {
99
99
 
100
100
  ### Map endpoints to page layouts.
101
101
  _paths = {
102
- 'login' : pages.login.layout,
103
- '' : pages.dashboard.layout,
104
- 'pipes' : pages.pipes.layout,
105
- 'plugins' : pages.plugins.layout,
106
- 'tokens' : pages.tokens.layout,
107
- 'register': pages.register.layout,
108
- 'pipes' : pages.pipes.layout,
109
- 'jobs' : pages.jobs.layout,
102
+ '/dash/login' : pages.login.layout,
103
+ '/dash' : pages.dashboard.layout,
104
+ '/dash/plugins' : pages.plugins.layout,
105
+ '/dash/tokens' : pages.tokens.layout,
106
+ '/dash/register': pages.register.layout,
107
+ '/dash/pipes' : pages.pipes.layout,
108
+ '/dash/jobs' : pages.jobs.layout,
110
109
  }
111
- _required_login = {'', 'tokens', 'jobs', 'pipes'}
110
+ _required_login = {'', '/dash', '/dash/', '/dash/tokens', '/dash/jobs', '/dash/pipes'}
112
111
  _pages = {
113
112
  'Web Console': '/dash/',
114
113
  'Pipes': '/dash/pipes',
@@ -145,7 +144,6 @@ def update_page_layout_div(
145
144
  -------
146
145
  A tuple of the page layout and new session store data.
147
146
  """
148
- dash_endpoint = endpoints['dash']
149
147
  try:
150
148
  session_id = session_store_data.get('session-id', None)
151
149
  except AttributeError:
@@ -162,18 +160,9 @@ def update_page_layout_div(
162
160
  else:
163
161
  session_store_to_return = dash.no_update
164
162
 
165
- base_path = (
166
- pathname.rstrip('/') + '/'
167
- ).replace(
168
- (dash_endpoint + '/'),
169
- ''
170
- ).rstrip('/').split('/')[0]
171
-
163
+ base_path = '/'.join(pathname.split('/')[:2])
172
164
  complete_path = (
173
165
  pathname.rstrip('/') + '/'
174
- ).replace(
175
- dash_endpoint + '/',
176
- ''
177
166
  ).rstrip('/')
178
167
 
179
168
  if complete_path in _paths:
@@ -181,14 +170,14 @@ def update_page_layout_div(
181
170
  elif base_path in _paths:
182
171
  path_str = base_path
183
172
  else:
184
- path_str = ''
173
+ path_str = '/dash'
185
174
 
186
175
  path = (
187
176
  path_str
188
177
  if no_auth or path_str not in _required_login else (
189
178
  path_str
190
179
  if is_session_active(session_id)
191
- else 'login'
180
+ else '/dash/login'
192
181
  )
193
182
  )
194
183
  layout = _paths.get(path, pages.error.layout)
@@ -129,12 +129,16 @@ default_system_config = {
129
129
  'edit',
130
130
  'start daemon',
131
131
  'start job',
132
+ 'stop job',
133
+ 'delete job',
132
134
  'stop daemon',
133
135
  'show daemon',
134
136
  'restart daemon',
137
+ 'install',
138
+ 'upgrade',
135
139
  'reload',
136
140
  'start worker',
137
- 'start job',
141
+ 'show log',
138
142
  'python',
139
143
  'login',
140
144
  'executor',
@@ -185,7 +185,6 @@ def read_config(
185
185
  import traceback
186
186
  traceback.print_exc()
187
187
  _config_key = {}
188
- substitute = False
189
188
  _single_key_config = (
190
189
  search_and_substitute_config({key: _config_key}) if substitute
191
190
  else {key: _config_key}
@@ -2,4 +2,4 @@
2
2
  Specify the Meerschaum release version.
3
3
  """
4
4
 
5
- __version__ = "3.0.0rc8"
5
+ __version__ = "3.0.2"
@@ -162,13 +162,37 @@ def apply_connector_uri(env_var: str, env: Optional[Dict[str, Any]] = None) -> N
162
162
  )
163
163
 
164
164
 
165
- def get_env_vars(env: Optional[Dict[str, Any]] = None) -> List[str]:
165
+ def get_env_vars(env: Optional[Dict[str, Any]] = None) -> Dict[str, Any]:
166
166
  """
167
167
  Return all environment variables which begin with `'MRSM_'`.
168
168
  """
169
169
  prefix = STATIC_CONFIG['environment']['prefix']
170
170
  env = env if env is not None else os.environ
171
- return sorted([env_var for env_var in env if env_var.startswith(prefix)])
171
+ return {
172
+ env_var: env_val
173
+ for env_var, env_val in env.items()
174
+ if env_var.startswith(prefix)
175
+ }
176
+
177
+
178
+ def get_daemon_env_vars(env: Optional[Dict[str, Any]] = None) -> Dict[str, str]:
179
+ """
180
+ Return the daemon-specific environment vars in the current environment.
181
+ """
182
+ env = env if env is not None else os.environ
183
+
184
+ daemon_env_var_names = (
185
+ STATIC_CONFIG['environment']['systemd_log_path'],
186
+ STATIC_CONFIG['environment']['systemd_result_path'],
187
+ STATIC_CONFIG['environment']['systemd_delete_job'],
188
+ STATIC_CONFIG['environment']['systemd_stdin_path'],
189
+ STATIC_CONFIG['environment']['daemon_id'],
190
+ )
191
+ return {
192
+ env_var: env.get(env_var, '')
193
+ for env_var in daemon_env_var_names
194
+ if env_var in env
195
+ }
172
196
 
173
197
 
174
198
  @contextlib.contextmanager
@@ -23,9 +23,9 @@ install_flavor_drivers = {
23
23
  'mysql': ['pymysql'],
24
24
  'mariadb': ['pymysql'],
25
25
  'timescaledb': ['psycopg'],
26
- 'timescaledb-ha': ['psycopg', 'geoalchemy'],
26
+ 'timescaledb-ha': ['psycopg', 'geoalchemy2'],
27
27
  'postgresql': ['psycopg'],
28
- 'postgis': ['psycopg', 'geoalchemy'],
28
+ 'postgis': ['psycopg', 'geoalchemy2'],
29
29
  'citus': ['psycopg'],
30
30
  'cockroachdb': ['psycopg', 'sqlalchemy_cockroachdb', 'sqlalchemy_cockroachdb.psycopg'],
31
31
  'mssql': ['pyodbc'],
@@ -280,22 +280,19 @@ def fetch_pipes_keys(
280
280
 
281
281
  ors, nands = [], []
282
282
  if self.flavor in json_flavors:
283
+ tags_jsonb = pipes_tbl.c['parameters'].cast(JSONB).op('->')('tags').cast(JSONB)
283
284
  for _in_tags, _ex_tags in in_ex_tag_groups:
284
285
  if _in_tags:
285
286
  ors.append(
286
287
  sqlalchemy.and_(
287
- pipes_tbl.c['parameters']['tags'].cast(
288
- JSONB
289
- ).contains(_in_tags)
288
+ tags_jsonb.contains(_in_tags)
290
289
  )
291
290
  )
292
291
  for xt in _ex_tags:
293
292
  nands.append(
294
293
  sqlalchemy.not_(
295
294
  sqlalchemy.and_(
296
- pipes_tbl.c['parameters']['tags'].cast(
297
- JSONB
298
- ).contains([xt])
295
+ tags_jsonb.contains([xt])
299
296
  )
300
297
  )
301
298
  )