meerschaum 2.2.6__tar.gz → 2.3.0.dev1__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 (263) hide show
  1. {meerschaum-2.2.6/meerschaum.egg-info → meerschaum-2.3.0.dev1}/PKG-INFO +9 -9
  2. {meerschaum-2.2.6 → meerschaum-2.3.0.dev1}/meerschaum/__init__.py +4 -1
  3. {meerschaum-2.2.6 → meerschaum-2.3.0.dev1}/meerschaum/__main__.py +10 -5
  4. {meerschaum-2.2.6 → meerschaum-2.3.0.dev1}/meerschaum/_internal/arguments/_parser.py +44 -15
  5. {meerschaum-2.2.6 → meerschaum-2.3.0.dev1}/meerschaum/_internal/entry.py +35 -14
  6. {meerschaum-2.2.6 → meerschaum-2.3.0.dev1}/meerschaum/_internal/shell/Shell.py +155 -53
  7. meerschaum-2.3.0.dev1/meerschaum/_internal/shell/updates.py +175 -0
  8. {meerschaum-2.2.6 → meerschaum-2.3.0.dev1}/meerschaum/actions/api.py +12 -12
  9. meerschaum-2.3.0.dev1/meerschaum/actions/attach.py +95 -0
  10. {meerschaum-2.2.6 → meerschaum-2.3.0.dev1}/meerschaum/actions/delete.py +35 -26
  11. {meerschaum-2.2.6 → meerschaum-2.3.0.dev1}/meerschaum/actions/register.py +19 -5
  12. {meerschaum-2.2.6 → meerschaum-2.3.0.dev1}/meerschaum/actions/show.py +119 -148
  13. {meerschaum-2.2.6 → meerschaum-2.3.0.dev1}/meerschaum/actions/start.py +85 -75
  14. {meerschaum-2.2.6 → meerschaum-2.3.0.dev1}/meerschaum/actions/stop.py +68 -39
  15. {meerschaum-2.2.6 → meerschaum-2.3.0.dev1}/meerschaum/actions/sync.py +3 -3
  16. {meerschaum-2.2.6 → meerschaum-2.3.0.dev1}/meerschaum/actions/upgrade.py +28 -36
  17. {meerschaum-2.2.6 → meerschaum-2.3.0.dev1}/meerschaum/api/_events.py +18 -1
  18. {meerschaum-2.2.6 → meerschaum-2.3.0.dev1}/meerschaum/api/_oauth2.py +2 -0
  19. {meerschaum-2.2.6 → meerschaum-2.3.0.dev1}/meerschaum/api/_websockets.py +2 -2
  20. {meerschaum-2.2.6 → meerschaum-2.3.0.dev1}/meerschaum/api/dash/jobs.py +5 -2
  21. {meerschaum-2.2.6 → meerschaum-2.3.0.dev1}/meerschaum/api/routes/__init__.py +1 -0
  22. meerschaum-2.3.0.dev1/meerschaum/api/routes/_actions.py +149 -0
  23. meerschaum-2.3.0.dev1/meerschaum/api/routes/_jobs.py +340 -0
  24. {meerschaum-2.2.6 → meerschaum-2.3.0.dev1}/meerschaum/api/routes/_pipes.py +25 -25
  25. {meerschaum-2.2.6 → meerschaum-2.3.0.dev1}/meerschaum/config/_default.py +1 -0
  26. {meerschaum-2.2.6 → meerschaum-2.3.0.dev1}/meerschaum/config/_formatting.py +1 -0
  27. {meerschaum-2.2.6 → meerschaum-2.3.0.dev1}/meerschaum/config/_paths.py +5 -0
  28. meerschaum-2.3.0.dev1/meerschaum/config/_shell.py +149 -0
  29. {meerschaum-2.2.6 → meerschaum-2.3.0.dev1}/meerschaum/config/_version.py +1 -1
  30. {meerschaum-2.2.6 → meerschaum-2.3.0.dev1}/meerschaum/config/static/__init__.py +9 -0
  31. {meerschaum-2.2.6 → meerschaum-2.3.0.dev1}/meerschaum/connectors/__init__.py +9 -11
  32. {meerschaum-2.2.6 → meerschaum-2.3.0.dev1}/meerschaum/connectors/api/APIConnector.py +18 -1
  33. meerschaum-2.3.0.dev1/meerschaum/connectors/api/_actions.py +76 -0
  34. meerschaum-2.3.0.dev1/meerschaum/connectors/api/_jobs.py +260 -0
  35. {meerschaum-2.2.6 → meerschaum-2.3.0.dev1}/meerschaum/connectors/api/_misc.py +1 -1
  36. {meerschaum-2.2.6 → meerschaum-2.3.0.dev1}/meerschaum/connectors/api/_request.py +13 -9
  37. {meerschaum-2.2.6 → meerschaum-2.3.0.dev1}/meerschaum/connectors/parse.py +23 -7
  38. {meerschaum-2.2.6 → meerschaum-2.3.0.dev1}/meerschaum/core/Pipe/_sync.py +3 -0
  39. {meerschaum-2.2.6 → meerschaum-2.3.0.dev1}/meerschaum/plugins/__init__.py +89 -5
  40. {meerschaum-2.2.6 → meerschaum-2.3.0.dev1}/meerschaum/utils/daemon/Daemon.py +333 -149
  41. {meerschaum-2.2.6 → meerschaum-2.3.0.dev1}/meerschaum/utils/daemon/FileDescriptorInterceptor.py +19 -10
  42. {meerschaum-2.2.6 → meerschaum-2.3.0.dev1}/meerschaum/utils/daemon/RotatingFile.py +18 -7
  43. meerschaum-2.3.0.dev1/meerschaum/utils/daemon/StdinFile.py +110 -0
  44. {meerschaum-2.2.6 → meerschaum-2.3.0.dev1}/meerschaum/utils/daemon/__init__.py +40 -27
  45. {meerschaum-2.2.6 → meerschaum-2.3.0.dev1}/meerschaum/utils/formatting/__init__.py +83 -37
  46. meerschaum-2.3.0.dev1/meerschaum/utils/formatting/_jobs.py +176 -0
  47. {meerschaum-2.2.6 → meerschaum-2.3.0.dev1}/meerschaum/utils/formatting/_shell.py +6 -0
  48. meerschaum-2.3.0.dev1/meerschaum/utils/jobs/_Job.py +684 -0
  49. meerschaum-2.3.0.dev1/meerschaum/utils/jobs/__init__.py +245 -0
  50. {meerschaum-2.2.6 → meerschaum-2.3.0.dev1}/meerschaum/utils/misc.py +18 -17
  51. {meerschaum-2.2.6 → meerschaum-2.3.0.dev1}/meerschaum/utils/packages/__init__.py +21 -15
  52. {meerschaum-2.2.6 → meerschaum-2.3.0.dev1}/meerschaum/utils/packages/_packages.py +2 -2
  53. {meerschaum-2.2.6 → meerschaum-2.3.0.dev1}/meerschaum/utils/prompt.py +20 -7
  54. {meerschaum-2.2.6 → meerschaum-2.3.0.dev1}/meerschaum/utils/schedule.py +21 -15
  55. {meerschaum-2.2.6 → meerschaum-2.3.0.dev1/meerschaum.egg-info}/PKG-INFO +9 -9
  56. {meerschaum-2.2.6 → meerschaum-2.3.0.dev1}/meerschaum.egg-info/SOURCES.txt +7 -0
  57. {meerschaum-2.2.6 → meerschaum-2.3.0.dev1}/meerschaum.egg-info/requires.txt +8 -8
  58. meerschaum-2.2.6/meerschaum/api/routes/_actions.py +0 -71
  59. meerschaum-2.2.6/meerschaum/config/_shell.py +0 -132
  60. meerschaum-2.2.6/meerschaum/connectors/api/_actions.py +0 -87
  61. meerschaum-2.2.6/meerschaum/utils/formatting/_jobs.py +0 -109
  62. {meerschaum-2.2.6 → meerschaum-2.3.0.dev1}/LICENSE +0 -0
  63. {meerschaum-2.2.6 → meerschaum-2.3.0.dev1}/NOTICE +0 -0
  64. {meerschaum-2.2.6 → meerschaum-2.3.0.dev1}/README.md +0 -0
  65. {meerschaum-2.2.6 → meerschaum-2.3.0.dev1}/meerschaum/_internal/__init__.py +0 -0
  66. {meerschaum-2.2.6 → meerschaum-2.3.0.dev1}/meerschaum/_internal/arguments/__init__.py +0 -0
  67. {meerschaum-2.2.6 → meerschaum-2.3.0.dev1}/meerschaum/_internal/arguments/_parse_arguments.py +0 -0
  68. {meerschaum-2.2.6 → meerschaum-2.3.0.dev1}/meerschaum/_internal/docs/__init__.py +0 -0
  69. {meerschaum-2.2.6 → meerschaum-2.3.0.dev1}/meerschaum/_internal/docs/index.py +0 -0
  70. {meerschaum-2.2.6 → meerschaum-2.3.0.dev1}/meerschaum/_internal/gui/__init__.py +0 -0
  71. {meerschaum-2.2.6 → meerschaum-2.3.0.dev1}/meerschaum/_internal/gui/app/__init__.py +0 -0
  72. {meerschaum-2.2.6 → meerschaum-2.3.0.dev1}/meerschaum/_internal/gui/app/_windows.py +0 -0
  73. {meerschaum-2.2.6 → meerschaum-2.3.0.dev1}/meerschaum/_internal/gui/app/actions.py +0 -0
  74. {meerschaum-2.2.6 → meerschaum-2.3.0.dev1}/meerschaum/_internal/gui/app/pipes.py +0 -0
  75. {meerschaum-2.2.6 → meerschaum-2.3.0.dev1}/meerschaum/_internal/shell/ShellCompleter.py +0 -0
  76. {meerschaum-2.2.6 → meerschaum-2.3.0.dev1}/meerschaum/_internal/shell/ValidAutoSuggest.py +0 -0
  77. {meerschaum-2.2.6 → meerschaum-2.3.0.dev1}/meerschaum/_internal/shell/__init__.py +0 -0
  78. {meerschaum-2.2.6 → meerschaum-2.3.0.dev1}/meerschaum/_internal/shell/resources/__init__.py +0 -0
  79. {meerschaum-2.2.6 → meerschaum-2.3.0.dev1}/meerschaum/_internal/term/TermPageHandler.py +0 -0
  80. {meerschaum-2.2.6 → meerschaum-2.3.0.dev1}/meerschaum/_internal/term/__init__.py +0 -0
  81. {meerschaum-2.2.6 → meerschaum-2.3.0.dev1}/meerschaum/_internal/term/tools.py +0 -0
  82. {meerschaum-2.2.6 → meerschaum-2.3.0.dev1}/meerschaum/actions/__init__.py +0 -0
  83. {meerschaum-2.2.6 → meerschaum-2.3.0.dev1}/meerschaum/actions/bootstrap.py +0 -0
  84. {meerschaum-2.2.6 → meerschaum-2.3.0.dev1}/meerschaum/actions/clear.py +0 -0
  85. {meerschaum-2.2.6 → meerschaum-2.3.0.dev1}/meerschaum/actions/copy.py +0 -0
  86. {meerschaum-2.2.6 → meerschaum-2.3.0.dev1}/meerschaum/actions/deduplicate.py +0 -0
  87. {meerschaum-2.2.6 → meerschaum-2.3.0.dev1}/meerschaum/actions/drop.py +0 -0
  88. {meerschaum-2.2.6 → meerschaum-2.3.0.dev1}/meerschaum/actions/edit.py +0 -0
  89. {meerschaum-2.2.6 → meerschaum-2.3.0.dev1}/meerschaum/actions/install.py +0 -0
  90. {meerschaum-2.2.6 → meerschaum-2.3.0.dev1}/meerschaum/actions/login.py +0 -0
  91. {meerschaum-2.2.6 → meerschaum-2.3.0.dev1}/meerschaum/actions/os.py +0 -0
  92. {meerschaum-2.2.6 → meerschaum-2.3.0.dev1}/meerschaum/actions/pause.py +0 -0
  93. {meerschaum-2.2.6 → meerschaum-2.3.0.dev1}/meerschaum/actions/python.py +0 -0
  94. {meerschaum-2.2.6 → meerschaum-2.3.0.dev1}/meerschaum/actions/reload.py +0 -0
  95. {meerschaum-2.2.6 → meerschaum-2.3.0.dev1}/meerschaum/actions/setup.py +0 -0
  96. {meerschaum-2.2.6 → meerschaum-2.3.0.dev1}/meerschaum/actions/sh.py +0 -0
  97. {meerschaum-2.2.6 → meerschaum-2.3.0.dev1}/meerschaum/actions/sql.py +0 -0
  98. {meerschaum-2.2.6 → meerschaum-2.3.0.dev1}/meerschaum/actions/stack.py +0 -0
  99. {meerschaum-2.2.6 → meerschaum-2.3.0.dev1}/meerschaum/actions/tag.py +0 -0
  100. {meerschaum-2.2.6 → meerschaum-2.3.0.dev1}/meerschaum/actions/uninstall.py +0 -0
  101. {meerschaum-2.2.6 → meerschaum-2.3.0.dev1}/meerschaum/actions/verify.py +0 -0
  102. {meerschaum-2.2.6 → meerschaum-2.3.0.dev1}/meerschaum/api/__init__.py +0 -0
  103. {meerschaum-2.2.6 → meerschaum-2.3.0.dev1}/meerschaum/api/_chain.py +0 -0
  104. {meerschaum-2.2.6 → meerschaum-2.3.0.dev1}/meerschaum/api/dash/__init__.py +0 -0
  105. {meerschaum-2.2.6 → meerschaum-2.3.0.dev1}/meerschaum/api/dash/actions.py +0 -0
  106. {meerschaum-2.2.6 → meerschaum-2.3.0.dev1}/meerschaum/api/dash/assets/__init__.py +0 -0
  107. {meerschaum-2.2.6 → meerschaum-2.3.0.dev1}/meerschaum/api/dash/assets/ansi_up.js +0 -0
  108. {meerschaum-2.2.6 → meerschaum-2.3.0.dev1}/meerschaum/api/dash/assets/banner_1920x320.png +0 -0
  109. {meerschaum-2.2.6 → meerschaum-2.3.0.dev1}/meerschaum/api/dash/assets/favicon.ico +0 -0
  110. {meerschaum-2.2.6 → meerschaum-2.3.0.dev1}/meerschaum/api/dash/assets/logo_48x48.png +0 -0
  111. {meerschaum-2.2.6 → meerschaum-2.3.0.dev1}/meerschaum/api/dash/assets/logo_500x500.png +0 -0
  112. {meerschaum-2.2.6 → meerschaum-2.3.0.dev1}/meerschaum/api/dash/callbacks/__init__.py +0 -0
  113. {meerschaum-2.2.6 → meerschaum-2.3.0.dev1}/meerschaum/api/dash/callbacks/custom.py +0 -0
  114. {meerschaum-2.2.6 → meerschaum-2.3.0.dev1}/meerschaum/api/dash/callbacks/dashboard.py +0 -0
  115. {meerschaum-2.2.6 → meerschaum-2.3.0.dev1}/meerschaum/api/dash/callbacks/jobs.py +0 -0
  116. {meerschaum-2.2.6 → meerschaum-2.3.0.dev1}/meerschaum/api/dash/callbacks/login.py +0 -0
  117. {meerschaum-2.2.6 → meerschaum-2.3.0.dev1}/meerschaum/api/dash/callbacks/plugins.py +0 -0
  118. {meerschaum-2.2.6 → meerschaum-2.3.0.dev1}/meerschaum/api/dash/callbacks/register.py +0 -0
  119. {meerschaum-2.2.6 → meerschaum-2.3.0.dev1}/meerschaum/api/dash/components.py +0 -0
  120. {meerschaum-2.2.6 → meerschaum-2.3.0.dev1}/meerschaum/api/dash/connectors.py +0 -0
  121. {meerschaum-2.2.6 → meerschaum-2.3.0.dev1}/meerschaum/api/dash/graphs.py +0 -0
  122. {meerschaum-2.2.6 → meerschaum-2.3.0.dev1}/meerschaum/api/dash/keys.py +0 -0
  123. {meerschaum-2.2.6 → meerschaum-2.3.0.dev1}/meerschaum/api/dash/pages/__init__.py +0 -0
  124. {meerschaum-2.2.6 → meerschaum-2.3.0.dev1}/meerschaum/api/dash/pages/dashboard.py +0 -0
  125. {meerschaum-2.2.6 → meerschaum-2.3.0.dev1}/meerschaum/api/dash/pages/error.py +0 -0
  126. {meerschaum-2.2.6 → meerschaum-2.3.0.dev1}/meerschaum/api/dash/pages/login.py +0 -0
  127. {meerschaum-2.2.6 → meerschaum-2.3.0.dev1}/meerschaum/api/dash/pages/plugins.py +0 -0
  128. {meerschaum-2.2.6 → meerschaum-2.3.0.dev1}/meerschaum/api/dash/pages/register.py +0 -0
  129. {meerschaum-2.2.6 → meerschaum-2.3.0.dev1}/meerschaum/api/dash/pipes.py +0 -0
  130. {meerschaum-2.2.6 → meerschaum-2.3.0.dev1}/meerschaum/api/dash/plugins.py +0 -0
  131. {meerschaum-2.2.6 → meerschaum-2.3.0.dev1}/meerschaum/api/dash/sync.py +0 -0
  132. {meerschaum-2.2.6 → meerschaum-2.3.0.dev1}/meerschaum/api/dash/users.py +0 -0
  133. {meerschaum-2.2.6 → meerschaum-2.3.0.dev1}/meerschaum/api/dash/websockets.py +0 -0
  134. {meerschaum-2.2.6 → meerschaum-2.3.0.dev1}/meerschaum/api/dash/webterm.py +0 -0
  135. {meerschaum-2.2.6 → meerschaum-2.3.0.dev1}/meerschaum/api/models/__init__.py +0 -0
  136. {meerschaum-2.2.6 → meerschaum-2.3.0.dev1}/meerschaum/api/models/_interfaces.py +0 -0
  137. {meerschaum-2.2.6 → meerschaum-2.3.0.dev1}/meerschaum/api/models/_locations.py +0 -0
  138. {meerschaum-2.2.6 → meerschaum-2.3.0.dev1}/meerschaum/api/models/_metrics.py +0 -0
  139. {meerschaum-2.2.6 → meerschaum-2.3.0.dev1}/meerschaum/api/models/_pipes.py +0 -0
  140. {meerschaum-2.2.6 → meerschaum-2.3.0.dev1}/meerschaum/api/resources/__init__.py +0 -0
  141. {meerschaum-2.2.6 → meerschaum-2.3.0.dev1}/meerschaum/api/resources/static/__init__.py +0 -0
  142. {meerschaum-2.2.6 → meerschaum-2.3.0.dev1}/meerschaum/api/resources/static/css/__init__.py +0 -0
  143. {meerschaum-2.2.6 → meerschaum-2.3.0.dev1}/meerschaum/api/resources/static/css/bootstrap.min.css +0 -0
  144. {meerschaum-2.2.6 → meerschaum-2.3.0.dev1}/meerschaum/api/resources/static/css/dash.css +0 -0
  145. {meerschaum-2.2.6 → meerschaum-2.3.0.dev1}/meerschaum/api/resources/static/css/dbc_dark.css +0 -0
  146. {meerschaum-2.2.6 → meerschaum-2.3.0.dev1}/meerschaum/api/resources/static/css/styles.css +0 -0
  147. {meerschaum-2.2.6 → meerschaum-2.3.0.dev1}/meerschaum/api/resources/static/css/xterm.css +0 -0
  148. {meerschaum-2.2.6 → meerschaum-2.3.0.dev1}/meerschaum/api/resources/static/ico/__init__.py +0 -0
  149. {meerschaum-2.2.6 → meerschaum-2.3.0.dev1}/meerschaum/api/resources/static/ico/logo.ico +0 -0
  150. {meerschaum-2.2.6 → meerschaum-2.3.0.dev1}/meerschaum/api/resources/static/js/__init__.py +0 -0
  151. {meerschaum-2.2.6 → meerschaum-2.3.0.dev1}/meerschaum/api/resources/static/js/action_button.js +0 -0
  152. {meerschaum-2.2.6 → meerschaum-2.3.0.dev1}/meerschaum/api/resources/static/js/main.js +0 -0
  153. {meerschaum-2.2.6 → meerschaum-2.3.0.dev1}/meerschaum/api/resources/static/js/terminado.js +0 -0
  154. {meerschaum-2.2.6 → meerschaum-2.3.0.dev1}/meerschaum/api/resources/static/js/xterm.js +0 -0
  155. {meerschaum-2.2.6 → meerschaum-2.3.0.dev1}/meerschaum/api/resources/static/png/__init__.py +0 -0
  156. {meerschaum-2.2.6 → meerschaum-2.3.0.dev1}/meerschaum/api/resources/templates/__init__.py +0 -0
  157. {meerschaum-2.2.6 → meerschaum-2.3.0.dev1}/meerschaum/api/resources/templates/index.html +0 -0
  158. {meerschaum-2.2.6 → meerschaum-2.3.0.dev1}/meerschaum/api/resources/templates/old_index.html +0 -0
  159. {meerschaum-2.2.6 → meerschaum-2.3.0.dev1}/meerschaum/api/resources/templates/secret.html +0 -0
  160. {meerschaum-2.2.6 → meerschaum-2.3.0.dev1}/meerschaum/api/resources/templates/termpage.html +0 -0
  161. {meerschaum-2.2.6 → meerschaum-2.3.0.dev1}/meerschaum/api/routes/_connectors.py +0 -0
  162. {meerschaum-2.2.6 → meerschaum-2.3.0.dev1}/meerschaum/api/routes/_index.py +0 -0
  163. {meerschaum-2.2.6 → meerschaum-2.3.0.dev1}/meerschaum/api/routes/_login.py +0 -0
  164. {meerschaum-2.2.6 → meerschaum-2.3.0.dev1}/meerschaum/api/routes/_misc.py +0 -0
  165. {meerschaum-2.2.6 → meerschaum-2.3.0.dev1}/meerschaum/api/routes/_plugins.py +0 -0
  166. {meerschaum-2.2.6 → meerschaum-2.3.0.dev1}/meerschaum/api/routes/_users.py +0 -0
  167. {meerschaum-2.2.6 → meerschaum-2.3.0.dev1}/meerschaum/api/routes/_version.py +0 -0
  168. {meerschaum-2.2.6 → meerschaum-2.3.0.dev1}/meerschaum/api/routes/_webterm.py +0 -0
  169. {meerschaum-2.2.6 → meerschaum-2.3.0.dev1}/meerschaum/api/tables/__init__.py +0 -0
  170. {meerschaum-2.2.6 → meerschaum-2.3.0.dev1}/meerschaum/config/__init__.py +0 -0
  171. {meerschaum-2.2.6 → meerschaum-2.3.0.dev1}/meerschaum/config/_dash.py +0 -0
  172. {meerschaum-2.2.6 → meerschaum-2.3.0.dev1}/meerschaum/config/_edit.py +0 -0
  173. {meerschaum-2.2.6 → meerschaum-2.3.0.dev1}/meerschaum/config/_environment.py +0 -0
  174. {meerschaum-2.2.6 → meerschaum-2.3.0.dev1}/meerschaum/config/_jobs.py +0 -0
  175. {meerschaum-2.2.6 → meerschaum-2.3.0.dev1}/meerschaum/config/_patch.py +0 -0
  176. {meerschaum-2.2.6 → meerschaum-2.3.0.dev1}/meerschaum/config/_preprocess.py +0 -0
  177. {meerschaum-2.2.6 → meerschaum-2.3.0.dev1}/meerschaum/config/_read_config.py +0 -0
  178. {meerschaum-2.2.6 → meerschaum-2.3.0.dev1}/meerschaum/config/_sync.py +0 -0
  179. {meerschaum-2.2.6 → meerschaum-2.3.0.dev1}/meerschaum/config/paths.py +0 -0
  180. {meerschaum-2.2.6 → meerschaum-2.3.0.dev1}/meerschaum/config/resources/__init__.py +0 -0
  181. {meerschaum-2.2.6 → meerschaum-2.3.0.dev1}/meerschaum/config/stack/__init__.py +0 -0
  182. {meerschaum-2.2.6 → meerschaum-2.3.0.dev1}/meerschaum/config/stack/grafana/__init__.py +0 -0
  183. {meerschaum-2.2.6 → meerschaum-2.3.0.dev1}/meerschaum/config/stack/mosquitto/__init__.py +0 -0
  184. {meerschaum-2.2.6 → meerschaum-2.3.0.dev1}/meerschaum/config/stack/mosquitto/resources/__init__.py +0 -0
  185. {meerschaum-2.2.6 → meerschaum-2.3.0.dev1}/meerschaum/config/stack/resources/__init__.py +0 -0
  186. {meerschaum-2.2.6 → meerschaum-2.3.0.dev1}/meerschaum/connectors/Connector.py +0 -0
  187. {meerschaum-2.2.6 → meerschaum-2.3.0.dev1}/meerschaum/connectors/api/__init__.py +0 -0
  188. {meerschaum-2.2.6 → meerschaum-2.3.0.dev1}/meerschaum/connectors/api/_fetch.py +0 -0
  189. {meerschaum-2.2.6 → meerschaum-2.3.0.dev1}/meerschaum/connectors/api/_login.py +0 -0
  190. {meerschaum-2.2.6 → meerschaum-2.3.0.dev1}/meerschaum/connectors/api/_pipes.py +0 -0
  191. {meerschaum-2.2.6 → meerschaum-2.3.0.dev1}/meerschaum/connectors/api/_plugins.py +0 -0
  192. {meerschaum-2.2.6 → meerschaum-2.3.0.dev1}/meerschaum/connectors/api/_uri.py +0 -0
  193. {meerschaum-2.2.6 → meerschaum-2.3.0.dev1}/meerschaum/connectors/api/_users.py +0 -0
  194. {meerschaum-2.2.6 → meerschaum-2.3.0.dev1}/meerschaum/connectors/plugin/PluginConnector.py +0 -0
  195. {meerschaum-2.2.6 → meerschaum-2.3.0.dev1}/meerschaum/connectors/plugin/__init__.py +0 -0
  196. {meerschaum-2.2.6 → meerschaum-2.3.0.dev1}/meerschaum/connectors/poll.py +0 -0
  197. {meerschaum-2.2.6 → meerschaum-2.3.0.dev1}/meerschaum/connectors/sql/SQLConnector.py +0 -0
  198. {meerschaum-2.2.6 → meerschaum-2.3.0.dev1}/meerschaum/connectors/sql/__init__.py +0 -0
  199. {meerschaum-2.2.6 → meerschaum-2.3.0.dev1}/meerschaum/connectors/sql/_cli.py +0 -0
  200. {meerschaum-2.2.6 → meerschaum-2.3.0.dev1}/meerschaum/connectors/sql/_create_engine.py +0 -0
  201. {meerschaum-2.2.6 → meerschaum-2.3.0.dev1}/meerschaum/connectors/sql/_fetch.py +0 -0
  202. {meerschaum-2.2.6 → meerschaum-2.3.0.dev1}/meerschaum/connectors/sql/_instance.py +0 -0
  203. {meerschaum-2.2.6 → meerschaum-2.3.0.dev1}/meerschaum/connectors/sql/_pipes.py +0 -0
  204. {meerschaum-2.2.6 → meerschaum-2.3.0.dev1}/meerschaum/connectors/sql/_plugins.py +0 -0
  205. {meerschaum-2.2.6 → meerschaum-2.3.0.dev1}/meerschaum/connectors/sql/_sql.py +0 -0
  206. {meerschaum-2.2.6 → meerschaum-2.3.0.dev1}/meerschaum/connectors/sql/_uri.py +0 -0
  207. {meerschaum-2.2.6 → meerschaum-2.3.0.dev1}/meerschaum/connectors/sql/_users.py +0 -0
  208. {meerschaum-2.2.6 → meerschaum-2.3.0.dev1}/meerschaum/connectors/sql/tables/__init__.py +0 -0
  209. {meerschaum-2.2.6 → meerschaum-2.3.0.dev1}/meerschaum/connectors/sql/tables/types.py +0 -0
  210. {meerschaum-2.2.6 → meerschaum-2.3.0.dev1}/meerschaum/connectors/sql/tools.py +0 -0
  211. {meerschaum-2.2.6 → meerschaum-2.3.0.dev1}/meerschaum/core/Pipe/__init__.py +0 -0
  212. {meerschaum-2.2.6 → meerschaum-2.3.0.dev1}/meerschaum/core/Pipe/_attributes.py +0 -0
  213. {meerschaum-2.2.6 → meerschaum-2.3.0.dev1}/meerschaum/core/Pipe/_bootstrap.py +0 -0
  214. {meerschaum-2.2.6 → meerschaum-2.3.0.dev1}/meerschaum/core/Pipe/_clear.py +0 -0
  215. {meerschaum-2.2.6 → meerschaum-2.3.0.dev1}/meerschaum/core/Pipe/_data.py +0 -0
  216. {meerschaum-2.2.6 → meerschaum-2.3.0.dev1}/meerschaum/core/Pipe/_deduplicate.py +0 -0
  217. {meerschaum-2.2.6 → meerschaum-2.3.0.dev1}/meerschaum/core/Pipe/_delete.py +0 -0
  218. {meerschaum-2.2.6 → meerschaum-2.3.0.dev1}/meerschaum/core/Pipe/_drop.py +0 -0
  219. {meerschaum-2.2.6 → meerschaum-2.3.0.dev1}/meerschaum/core/Pipe/_dtypes.py +0 -0
  220. {meerschaum-2.2.6 → meerschaum-2.3.0.dev1}/meerschaum/core/Pipe/_edit.py +0 -0
  221. {meerschaum-2.2.6 → meerschaum-2.3.0.dev1}/meerschaum/core/Pipe/_fetch.py +0 -0
  222. {meerschaum-2.2.6 → meerschaum-2.3.0.dev1}/meerschaum/core/Pipe/_register.py +0 -0
  223. {meerschaum-2.2.6 → meerschaum-2.3.0.dev1}/meerschaum/core/Pipe/_show.py +0 -0
  224. {meerschaum-2.2.6 → meerschaum-2.3.0.dev1}/meerschaum/core/Pipe/_verify.py +0 -0
  225. {meerschaum-2.2.6 → meerschaum-2.3.0.dev1}/meerschaum/core/Plugin/__init__.py +0 -0
  226. {meerschaum-2.2.6 → meerschaum-2.3.0.dev1}/meerschaum/core/User/_User.py +0 -0
  227. {meerschaum-2.2.6 → meerschaum-2.3.0.dev1}/meerschaum/core/User/__init__.py +0 -0
  228. {meerschaum-2.2.6 → meerschaum-2.3.0.dev1}/meerschaum/core/__init__.py +0 -0
  229. {meerschaum-2.2.6 → meerschaum-2.3.0.dev1}/meerschaum/plugins/_Plugin.py +0 -0
  230. {meerschaum-2.2.6 → meerschaum-2.3.0.dev1}/meerschaum/plugins/bootstrap.py +0 -0
  231. {meerschaum-2.2.6 → meerschaum-2.3.0.dev1}/meerschaum/utils/__init__.py +0 -0
  232. {meerschaum-2.2.6 → meerschaum-2.3.0.dev1}/meerschaum/utils/_get_pipes.py +0 -0
  233. {meerschaum-2.2.6 → meerschaum-2.3.0.dev1}/meerschaum/utils/daemon/_names.py +0 -0
  234. {meerschaum-2.2.6 → meerschaum-2.3.0.dev1}/meerschaum/utils/dataframe.py +0 -0
  235. {meerschaum-2.2.6 → meerschaum-2.3.0.dev1}/meerschaum/utils/debug.py +0 -0
  236. {meerschaum-2.2.6 → meerschaum-2.3.0.dev1}/meerschaum/utils/dtypes/__init__.py +0 -0
  237. {meerschaum-2.2.6 → meerschaum-2.3.0.dev1}/meerschaum/utils/dtypes/sql.py +0 -0
  238. {meerschaum-2.2.6 → meerschaum-2.3.0.dev1}/meerschaum/utils/formatting/_pipes.py +0 -0
  239. {meerschaum-2.2.6 → meerschaum-2.3.0.dev1}/meerschaum/utils/formatting/_pprint.py +0 -0
  240. {meerschaum-2.2.6 → meerschaum-2.3.0.dev1}/meerschaum/utils/interactive.py +0 -0
  241. {meerschaum-2.2.6 → meerschaum-2.3.0.dev1}/meerschaum/utils/networking.py +0 -0
  242. {meerschaum-2.2.6 → meerschaum-2.3.0.dev1}/meerschaum/utils/packages/lazy_loader.py +0 -0
  243. {meerschaum-2.2.6 → meerschaum-2.3.0.dev1}/meerschaum/utils/pool.py +0 -0
  244. {meerschaum-2.2.6 → meerschaum-2.3.0.dev1}/meerschaum/utils/process.py +0 -0
  245. {meerschaum-2.2.6 → meerschaum-2.3.0.dev1}/meerschaum/utils/sql.py +0 -0
  246. {meerschaum-2.2.6 → meerschaum-2.3.0.dev1}/meerschaum/utils/threading.py +0 -0
  247. {meerschaum-2.2.6 → meerschaum-2.3.0.dev1}/meerschaum/utils/typing.py +0 -0
  248. {meerschaum-2.2.6 → meerschaum-2.3.0.dev1}/meerschaum/utils/venv/_Venv.py +0 -0
  249. {meerschaum-2.2.6 → meerschaum-2.3.0.dev1}/meerschaum/utils/venv/__init__.py +0 -0
  250. {meerschaum-2.2.6 → meerschaum-2.3.0.dev1}/meerschaum/utils/warnings.py +0 -0
  251. {meerschaum-2.2.6 → meerschaum-2.3.0.dev1}/meerschaum/utils/yaml.py +0 -0
  252. {meerschaum-2.2.6 → meerschaum-2.3.0.dev1}/meerschaum.egg-info/dependency_links.txt +0 -0
  253. {meerschaum-2.2.6 → meerschaum-2.3.0.dev1}/meerschaum.egg-info/entry_points.txt +0 -0
  254. {meerschaum-2.2.6 → meerschaum-2.3.0.dev1}/meerschaum.egg-info/top_level.txt +0 -0
  255. {meerschaum-2.2.6 → meerschaum-2.3.0.dev1}/meerschaum.egg-info/zip-safe +0 -0
  256. {meerschaum-2.2.6 → meerschaum-2.3.0.dev1}/setup.cfg +0 -0
  257. {meerschaum-2.2.6 → meerschaum-2.3.0.dev1}/setup.py +0 -0
  258. {meerschaum-2.2.6 → meerschaum-2.3.0.dev1}/tests/test_deduplicate.py +0 -0
  259. {meerschaum-2.2.6 → meerschaum-2.3.0.dev1}/tests/test_pipes_dtypes.py +0 -0
  260. {meerschaum-2.2.6 → meerschaum-2.3.0.dev1}/tests/test_sql.py +0 -0
  261. {meerschaum-2.2.6 → meerschaum-2.3.0.dev1}/tests/test_sync.py +0 -0
  262. {meerschaum-2.2.6 → meerschaum-2.3.0.dev1}/tests/test_users.py +0 -0
  263. {meerschaum-2.2.6 → meerschaum-2.3.0.dev1}/tests/test_verify.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: meerschaum
3
- Version: 2.2.6
3
+ Version: 2.3.0.dev1
4
4
  Summary: Sync Time-Series Pipes with Meerschaum
5
5
  Home-page: https://meerschaum.io
6
6
  Author: Bennett Meares
@@ -60,7 +60,7 @@ Requires-Dist: packaging>=21.3.0; extra == "core"
60
60
  Requires-Dist: prompt-toolkit>=3.0.39; extra == "core"
61
61
  Requires-Dist: more-itertools>=8.7.0; extra == "core"
62
62
  Requires-Dist: python-daemon>=0.2.3; extra == "core"
63
- Requires-Dist: fasteners>=0.18.0; extra == "core"
63
+ Requires-Dist: fasteners>=0.19.0; extra == "core"
64
64
  Requires-Dist: psutil>=5.8.0; extra == "core"
65
65
  Requires-Dist: watchfiles>=0.21.0; extra == "core"
66
66
  Requires-Dist: dill>=0.3.3; extra == "core"
@@ -69,7 +69,7 @@ Requires-Dist: APScheduler>=4.0.0a5; extra == "core"
69
69
  Requires-Dist: uv>=0.2.11; extra == "core"
70
70
  Provides-Extra: drivers
71
71
  Requires-Dist: cryptography>=38.0.1; extra == "drivers"
72
- Requires-Dist: psycopg[binary]>=3.1.18; extra == "drivers"
72
+ Requires-Dist: psycopg[binary]>=3.2.1; extra == "drivers"
73
73
  Requires-Dist: PyMySQL>=0.9.0; extra == "drivers"
74
74
  Requires-Dist: aiomysql>=0.0.21; extra == "drivers"
75
75
  Requires-Dist: sqlalchemy-cockroachdb>=2.0.0; extra == "drivers"
@@ -131,7 +131,7 @@ Requires-Dist: databases>=0.4.0; extra == "sql"
131
131
  Requires-Dist: aiosqlite>=0.16.0; extra == "sql"
132
132
  Requires-Dist: asyncpg>=0.21.0; extra == "sql"
133
133
  Requires-Dist: cryptography>=38.0.1; extra == "sql"
134
- Requires-Dist: psycopg[binary]>=3.1.18; extra == "sql"
134
+ Requires-Dist: psycopg[binary]>=3.2.1; extra == "sql"
135
135
  Requires-Dist: PyMySQL>=0.9.0; extra == "sql"
136
136
  Requires-Dist: aiomysql>=0.0.21; extra == "sql"
137
137
  Requires-Dist: sqlalchemy-cockroachdb>=2.0.0; extra == "sql"
@@ -154,7 +154,7 @@ Requires-Dist: packaging>=21.3.0; extra == "sql"
154
154
  Requires-Dist: prompt-toolkit>=3.0.39; extra == "sql"
155
155
  Requires-Dist: more-itertools>=8.7.0; extra == "sql"
156
156
  Requires-Dist: python-daemon>=0.2.3; extra == "sql"
157
- Requires-Dist: fasteners>=0.18.0; extra == "sql"
157
+ Requires-Dist: fasteners>=0.19.0; extra == "sql"
158
158
  Requires-Dist: psutil>=5.8.0; extra == "sql"
159
159
  Requires-Dist: watchfiles>=0.21.0; extra == "sql"
160
160
  Requires-Dist: dill>=0.3.3; extra == "sql"
@@ -190,7 +190,7 @@ Requires-Dist: databases>=0.4.0; extra == "api"
190
190
  Requires-Dist: aiosqlite>=0.16.0; extra == "api"
191
191
  Requires-Dist: asyncpg>=0.21.0; extra == "api"
192
192
  Requires-Dist: cryptography>=38.0.1; extra == "api"
193
- Requires-Dist: psycopg[binary]>=3.1.18; extra == "api"
193
+ Requires-Dist: psycopg[binary]>=3.2.1; extra == "api"
194
194
  Requires-Dist: PyMySQL>=0.9.0; extra == "api"
195
195
  Requires-Dist: aiomysql>=0.0.21; extra == "api"
196
196
  Requires-Dist: sqlalchemy-cockroachdb>=2.0.0; extra == "api"
@@ -213,7 +213,7 @@ Requires-Dist: packaging>=21.3.0; extra == "api"
213
213
  Requires-Dist: prompt-toolkit>=3.0.39; extra == "api"
214
214
  Requires-Dist: more-itertools>=8.7.0; extra == "api"
215
215
  Requires-Dist: python-daemon>=0.2.3; extra == "api"
216
- Requires-Dist: fasteners>=0.18.0; extra == "api"
216
+ Requires-Dist: fasteners>=0.19.0; extra == "api"
217
217
  Requires-Dist: psutil>=5.8.0; extra == "api"
218
218
  Requires-Dist: watchfiles>=0.21.0; extra == "api"
219
219
  Requires-Dist: dill>=0.3.3; extra == "api"
@@ -262,7 +262,7 @@ Requires-Dist: packaging>=21.3.0; extra == "full"
262
262
  Requires-Dist: prompt-toolkit>=3.0.39; extra == "full"
263
263
  Requires-Dist: more-itertools>=8.7.0; extra == "full"
264
264
  Requires-Dist: python-daemon>=0.2.3; extra == "full"
265
- Requires-Dist: fasteners>=0.18.0; extra == "full"
265
+ Requires-Dist: fasteners>=0.19.0; extra == "full"
266
266
  Requires-Dist: psutil>=5.8.0; extra == "full"
267
267
  Requires-Dist: watchfiles>=0.21.0; extra == "full"
268
268
  Requires-Dist: dill>=0.3.3; extra == "full"
@@ -270,7 +270,7 @@ Requires-Dist: virtualenv>=20.1.0; extra == "full"
270
270
  Requires-Dist: APScheduler>=4.0.0a5; extra == "full"
271
271
  Requires-Dist: uv>=0.2.11; extra == "full"
272
272
  Requires-Dist: cryptography>=38.0.1; extra == "full"
273
- Requires-Dist: psycopg[binary]>=3.1.18; extra == "full"
273
+ Requires-Dist: psycopg[binary]>=3.2.1; extra == "full"
274
274
  Requires-Dist: PyMySQL>=0.9.0; extra == "full"
275
275
  Requires-Dist: aiomysql>=0.0.21; extra == "full"
276
276
  Requires-Dist: sqlalchemy-cockroachdb>=2.0.0; extra == "full"
@@ -20,15 +20,16 @@ limitations under the License.
20
20
 
21
21
  import atexit
22
22
  from meerschaum.utils.typing import SuccessTuple
23
+ from meerschaum.utils.packages import attempt_import
23
24
  from meerschaum.core.Pipe import Pipe
24
25
  from meerschaum.plugins import Plugin
25
26
  from meerschaum.utils.venv import Venv
27
+ from meerschaum.utils.jobs import Job
26
28
  from meerschaum.connectors import get_connector, Connector, make_connector
27
29
  from meerschaum.utils import get_pipes
28
30
  from meerschaum.utils.formatting import pprint
29
31
  from meerschaum._internal.docs import index as __doc__
30
32
  from meerschaum.config import __version__, get_config
31
- from meerschaum.utils.packages import attempt_import
32
33
  from meerschaum.__main__ import _close_pools
33
34
 
34
35
  atexit.register(_close_pools)
@@ -42,6 +43,8 @@ __all__ = (
42
43
  "Plugin",
43
44
  "Venv",
44
45
  "Plugin",
46
+ "Job",
47
+ "Daemon",
45
48
  "pprint",
46
49
  "attempt_import",
47
50
  "actions",
@@ -19,9 +19,15 @@ See the License for the specific language governing permissions and
19
19
  limitations under the License.
20
20
  """
21
21
 
22
- import sys, os, copy
22
+ import sys
23
+ import os
24
+ import copy
23
25
 
24
- def main(sysargs: list = None) -> None:
26
+ from meerschaum.utils.typing import List, Optional
27
+ from meerschaum.utils.formatting import print_tuple as _print_tuple
28
+
29
+
30
+ def main(sysargs: Optional[List[str]] = None) -> None:
25
31
  """Main CLI entry point."""
26
32
  if sysargs is None:
27
33
  sysargs = copy.deepcopy(sys.argv[1:])
@@ -41,7 +47,7 @@ def main(sysargs: list = None) -> None:
41
47
 
42
48
  if ('-d' in sysargs or '--daemon' in sysargs) and ('stack' not in sysargs):
43
49
  from meerschaum.utils.daemon import daemon_entry
44
- daemon_entry(sysargs)
50
+ _print_tuple(daemon_entry(sysargs), upper_padding=1)
45
51
  return _exit(old_cwd=old_cwd)
46
52
 
47
53
  from meerschaum._internal.entry import entry, get_shell
@@ -57,8 +63,7 @@ def main(sysargs: list = None) -> None:
57
63
  return_tuple = entry(sysargs)
58
64
  rc = 0
59
65
  if isinstance(return_tuple, tuple) and '--nopretty' not in sysargs:
60
- from meerschaum.utils.formatting import print_tuple
61
- print_tuple(return_tuple, upper_padding=1)
66
+ _print_tuple(return_tuple, upper_padding=1)
62
67
  rc = 0 if (return_tuple[0] is True) else 1
63
68
 
64
69
  return _exit(rc, old_cwd=old_cwd)
@@ -62,7 +62,24 @@ def parse_datetime(dt_str: str) -> Union[datetime, int, str]:
62
62
  return dt
63
63
 
64
64
 
65
- def parse_help(sysargs : Union[List[str], Dict[str, Any]]) -> None:
65
+ def parse_executor_keys(executor_keys_str: str) -> Union[str, None]:
66
+ """
67
+ Ensure that only API keys are provided for executor_keys.
68
+ """
69
+ if executor_keys_str == 'local':
70
+ return executor_keys_str
71
+
72
+ if executor_keys_str.lower() == 'none':
73
+ return 'local'
74
+
75
+ if not executor_keys_str.startswith('api:'):
76
+ from meerschaum.utils.warnings import error
77
+ error(f"Invalid exectutor keys '{executor_keys_str}'.", stack=False)
78
+
79
+ return executor_keys_str
80
+
81
+
82
+ def parse_help(sysargs: Union[List[str], Dict[str, Any]]) -> None:
66
83
  """Parse the `--help` flag to determine which help message to print."""
67
84
  from meerschaum._internal.arguments._parse_arguments import parse_arguments, parse_line
68
85
  from meerschaum.actions import actions, get_subactions
@@ -135,6 +152,7 @@ _seen_plugin_args = {}
135
152
 
136
153
  groups = {}
137
154
  groups['actions'] = parser.add_argument_group(title='Actions options')
155
+ groups['jobs'] = parser.add_argument_group(title='Jobs options')
138
156
  groups['pipes'] = parser.add_argument_group(title='Pipes options')
139
157
  groups['sync'] = parser.add_argument_group(title='Sync options')
140
158
  groups['api'] = parser.add_argument_group(title='API options')
@@ -166,18 +184,25 @@ groups['actions'].add_argument(
166
184
  help="Automatically choose the defaults answers to questions. Does not result in data loss.",
167
185
  )
168
186
  groups['actions'].add_argument(
169
- '-d', '--daemon', action='store_true',
170
- help = "Run an action as a background daemon."
187
+ '-A', '--sub-args', nargs=argparse.REMAINDER,
188
+ help = (
189
+ "Provide a list of arguments for subprocesses. " +
190
+ "You can also type sub-arguments in [] instead." +
191
+ " E.g. `stack -A='--version'`, `ls [-lh]`, `echo -A these are sub-arguments`"
192
+ )
171
193
  )
172
- groups['actions'].add_argument(
173
- '--rm', action='store_true', help="Delete a job once it has finished executing."
194
+
195
+ ### Jobs options
196
+ groups['jobs'].add_argument(
197
+ '-d', '--daemon', action='store_true',
198
+ help = "Run an action as a background daemon to create a job."
174
199
  )
175
- groups['actions'].add_argument(
200
+ groups['jobs'].add_argument(
176
201
  '--name', '--job-name', type=parse_name, help=(
177
202
  "Assign a name to a job. If no name is provided, a random name will be assigned."
178
203
  ),
179
204
  )
180
- groups['actions'].add_argument(
205
+ groups['jobs'].add_argument(
181
206
  '-s', '--schedule', '--cron', type=str,
182
207
  help = (
183
208
  "Continue executing the action according to a schedule (e.g. 'every 1 seconds'). \n"
@@ -185,15 +210,19 @@ groups['actions'].add_argument(
185
210
  + "https://red-engine.readthedocs.io/en/stable/condition_syntax/index.html"
186
211
  )
187
212
  )
188
- groups['actions'].add_argument(
189
- '-A', '--sub-args', nargs=argparse.REMAINDER,
190
- help = (
191
- "Provide a list of arguments for subprocesses. " +
192
- "You can also type sub-arguments in [] instead." +
193
- " E.g. `stack -A='--version'`, `ls [-lh]`, `echo -A these are sub-arguments`"
194
- )
213
+ groups['jobs'].add_argument(
214
+ '--restart', action='store_true',
215
+ help=("Restart a job if not stopped manually."),
216
+ )
217
+ groups['jobs'].add_argument(
218
+ '--executor-keys', '--executor', '-e', type=parse_executor_keys,
219
+ help=(
220
+ "Remotely execute jobs on an API instance."
221
+ ),
222
+ )
223
+ groups['jobs'].add_argument(
224
+ '--rm', action='store_true', help="Delete a job once it has finished executing."
195
225
  )
196
-
197
226
  ### Pipes options
198
227
  groups['pipes'].add_argument(
199
228
  '-c', '-C', '--connector-keys', nargs='+',
@@ -8,20 +8,15 @@ The entry point for launching Meerschaum actions.
8
8
  """
9
9
 
10
10
  from __future__ import annotations
11
- from meerschaum.utils.typing import SuccessTuple, List, Optional, Dict
11
+ from meerschaum.utils.typing import SuccessTuple, List, Optional, Dict, Callable, Any
12
12
 
13
13
  def entry(sysargs: Optional[List[str]] = None) -> SuccessTuple:
14
- """Parse arguments and launch a Meerschaum action.
15
- The `action` list removes the first element.
16
-
17
- Examples of action:
18
- 'show actions' -> ['actions']
19
- 'show' -> []
14
+ """
15
+ Parse arguments and launch a Meerschaum action.
20
16
 
21
17
  Returns
22
18
  -------
23
- A `SuccessTuple` indicating success. If `schedule` is provided, this will never return.
24
-
19
+ A `SuccessTuple` indicating success.
25
20
  """
26
21
  from meerschaum._internal.arguments import parse_arguments
27
22
  from meerschaum.config.static import STATIC_CONFIG
@@ -51,14 +46,15 @@ def entry(sysargs: Optional[List[str]] = None) -> SuccessTuple:
51
46
 
52
47
 
53
48
  def entry_with_args(
54
- _actions: Optional[Dict[str, Callable[[Any], SuccessTuple]]] = None,
55
- **kw
56
- ) -> SuccessTuple:
49
+ _actions: Optional[Dict[str, Callable[[Any], SuccessTuple]]] = None,
50
+ **kw
51
+ ) -> SuccessTuple:
57
52
  """Execute a Meerschaum action with keyword arguments.
58
53
  Use `_entry()` for parsing sysargs before executing.
59
54
  """
60
55
  import sys
61
56
  import functools
57
+ import inspect
62
58
  from meerschaum.actions import get_action, get_main_action_name
63
59
  from meerschaum._internal.arguments import remove_leading_action
64
60
  from meerschaum.utils.venv import Venv, active_venvs, deactivate_venv
@@ -72,6 +68,25 @@ def entry_with_args(
72
68
  ):
73
69
  return get_shell().cmdloop()
74
70
 
71
+ skip_schedule = False
72
+
73
+ executor_keys = kw.get('executor_keys', None)
74
+ if executor_keys is None:
75
+ executor_keys = 'local'
76
+
77
+ if executor_keys.startswith('api:'):
78
+ intended_action_function = get_action(kw['action'], _actions=_actions)
79
+ function_accepts_executor_keys = (
80
+ 'executor_keys' in inspect.signature(intended_action_function).parameters
81
+ if intended_action_function is not None
82
+ else False
83
+ )
84
+ if not function_accepts_executor_keys:
85
+ api_label = executor_keys.split(':')[-1]
86
+ kw['action'].insert(0, 'api')
87
+ kw['action'].insert(1, api_label)
88
+ skip_schedule = True
89
+
75
90
  action_function = get_action(kw['action'], _actions=_actions)
76
91
 
77
92
  ### If action does not exist, execute in a subshell.
@@ -86,7 +101,6 @@ def entry_with_args(
86
101
  ) else None
87
102
  )
88
103
 
89
- skip_schedule = False
90
104
  if (
91
105
  kw['action']
92
106
  and kw['action'][0] == 'start'
@@ -96,7 +110,14 @@ def entry_with_args(
96
110
 
97
111
  kw['action'] = remove_leading_action(kw['action'], _actions=_actions)
98
112
 
99
- do_action = functools.partial(_do_action_wrapper, action_function, plugin_name, **kw)
113
+ do_action = functools.partial(
114
+ _do_action_wrapper,
115
+ action_function,
116
+ plugin_name,
117
+ **kw
118
+ )
119
+
120
+
100
121
  if kw.get('schedule', None) and not skip_schedule:
101
122
  from meerschaum.utils.schedule import schedule_function
102
123
  from meerschaum.utils.misc import interval_str