meerschaum 2.8.4__tar.gz → 2.9.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 (281) hide show
  1. {meerschaum-2.8.4/meerschaum.egg-info → meerschaum-2.9.0.dev1}/PKG-INFO +4 -1
  2. meerschaum-2.9.0.dev1/meerschaum/api/_chunks.py +67 -0
  3. {meerschaum-2.8.4 → meerschaum-2.9.0.dev1}/meerschaum/api/dash/callbacks/custom.py +23 -2
  4. {meerschaum-2.8.4 → meerschaum-2.9.0.dev1}/meerschaum/api/dash/callbacks/dashboard.py +41 -3
  5. {meerschaum-2.8.4 → meerschaum-2.9.0.dev1}/meerschaum/api/dash/components.py +27 -19
  6. {meerschaum-2.8.4 → meerschaum-2.9.0.dev1}/meerschaum/api/dash/pages/dashboard.py +11 -9
  7. meerschaum-2.9.0.dev1/meerschaum/api/dash/pages/plugins.py +55 -0
  8. {meerschaum-2.8.4 → meerschaum-2.9.0.dev1}/meerschaum/api/dash/webterm.py +6 -3
  9. {meerschaum-2.8.4 → meerschaum-2.9.0.dev1}/meerschaum/api/resources/static/css/dash.css +1 -1
  10. {meerschaum-2.8.4 → meerschaum-2.9.0.dev1}/meerschaum/api/resources/templates/termpage.html +4 -0
  11. {meerschaum-2.8.4 → meerschaum-2.9.0.dev1}/meerschaum/api/routes/_pipes.py +191 -78
  12. {meerschaum-2.8.4 → meerschaum-2.9.0.dev1}/meerschaum/config/_default.py +3 -0
  13. {meerschaum-2.8.4 → meerschaum-2.9.0.dev1}/meerschaum/config/_version.py +1 -1
  14. {meerschaum-2.8.4 → meerschaum-2.9.0.dev1}/meerschaum/connectors/api/_APIConnector.py +12 -1
  15. {meerschaum-2.8.4 → meerschaum-2.9.0.dev1}/meerschaum/connectors/api/_pipes.py +27 -15
  16. {meerschaum-2.8.4 → meerschaum-2.9.0.dev1}/meerschaum/connectors/api/_plugins.py +51 -45
  17. {meerschaum-2.8.4 → meerschaum-2.9.0.dev1}/meerschaum/connectors/api/_request.py +1 -1
  18. {meerschaum-2.8.4 → meerschaum-2.9.0.dev1}/meerschaum/connectors/parse.py +1 -2
  19. {meerschaum-2.8.4 → meerschaum-2.9.0.dev1}/meerschaum/core/Pipe/_data.py +1 -2
  20. {meerschaum-2.8.4 → meerschaum-2.9.0.dev1}/meerschaum/plugins/_Plugin.py +21 -5
  21. {meerschaum-2.8.4 → meerschaum-2.9.0.dev1}/meerschaum/plugins/__init__.py +6 -4
  22. {meerschaum-2.8.4 → meerschaum-2.9.0.dev1}/meerschaum/utils/formatting/_shell.py +1 -4
  23. {meerschaum-2.8.4 → meerschaum-2.9.0.dev1}/meerschaum/utils/packages/_packages.py +1 -0
  24. {meerschaum-2.8.4 → meerschaum-2.9.0.dev1}/meerschaum/utils/venv/__init__.py +2 -0
  25. {meerschaum-2.8.4 → meerschaum-2.9.0.dev1/meerschaum.egg-info}/PKG-INFO +4 -1
  26. {meerschaum-2.8.4 → meerschaum-2.9.0.dev1}/meerschaum.egg-info/SOURCES.txt +1 -0
  27. {meerschaum-2.8.4 → meerschaum-2.9.0.dev1}/meerschaum.egg-info/requires.txt +3 -0
  28. meerschaum-2.8.4/meerschaum/api/dash/pages/plugins.py +0 -51
  29. {meerschaum-2.8.4 → meerschaum-2.9.0.dev1}/LICENSE +0 -0
  30. {meerschaum-2.8.4 → meerschaum-2.9.0.dev1}/NOTICE +0 -0
  31. {meerschaum-2.8.4 → meerschaum-2.9.0.dev1}/README.md +0 -0
  32. {meerschaum-2.8.4 → meerschaum-2.9.0.dev1}/meerschaum/__init__.py +0 -0
  33. {meerschaum-2.8.4 → meerschaum-2.9.0.dev1}/meerschaum/__main__.py +0 -0
  34. {meerschaum-2.8.4 → meerschaum-2.9.0.dev1}/meerschaum/_internal/__init__.py +0 -0
  35. {meerschaum-2.8.4 → meerschaum-2.9.0.dev1}/meerschaum/_internal/arguments/__init__.py +0 -0
  36. {meerschaum-2.8.4 → meerschaum-2.9.0.dev1}/meerschaum/_internal/arguments/_parse_arguments.py +0 -0
  37. {meerschaum-2.8.4 → meerschaum-2.9.0.dev1}/meerschaum/_internal/arguments/_parser.py +0 -0
  38. {meerschaum-2.8.4 → meerschaum-2.9.0.dev1}/meerschaum/_internal/docs/__init__.py +0 -0
  39. {meerschaum-2.8.4 → meerschaum-2.9.0.dev1}/meerschaum/_internal/docs/index.py +0 -0
  40. {meerschaum-2.8.4 → meerschaum-2.9.0.dev1}/meerschaum/_internal/entry.py +0 -0
  41. {meerschaum-2.8.4 → meerschaum-2.9.0.dev1}/meerschaum/_internal/gui/__init__.py +0 -0
  42. {meerschaum-2.8.4 → meerschaum-2.9.0.dev1}/meerschaum/_internal/gui/app/__init__.py +0 -0
  43. {meerschaum-2.8.4 → meerschaum-2.9.0.dev1}/meerschaum/_internal/gui/app/_windows.py +0 -0
  44. {meerschaum-2.8.4 → meerschaum-2.9.0.dev1}/meerschaum/_internal/gui/app/actions.py +0 -0
  45. {meerschaum-2.8.4 → meerschaum-2.9.0.dev1}/meerschaum/_internal/gui/app/pipes.py +0 -0
  46. {meerschaum-2.8.4 → meerschaum-2.9.0.dev1}/meerschaum/_internal/shell/Shell.py +0 -0
  47. {meerschaum-2.8.4 → meerschaum-2.9.0.dev1}/meerschaum/_internal/shell/ShellCompleter.py +0 -0
  48. {meerschaum-2.8.4 → meerschaum-2.9.0.dev1}/meerschaum/_internal/shell/ValidAutoSuggest.py +0 -0
  49. {meerschaum-2.8.4 → meerschaum-2.9.0.dev1}/meerschaum/_internal/shell/__init__.py +0 -0
  50. {meerschaum-2.8.4 → meerschaum-2.9.0.dev1}/meerschaum/_internal/shell/resources/__init__.py +0 -0
  51. {meerschaum-2.8.4 → meerschaum-2.9.0.dev1}/meerschaum/_internal/shell/updates.py +0 -0
  52. {meerschaum-2.8.4 → meerschaum-2.9.0.dev1}/meerschaum/_internal/term/TermPageHandler.py +0 -0
  53. {meerschaum-2.8.4 → meerschaum-2.9.0.dev1}/meerschaum/_internal/term/__init__.py +0 -0
  54. {meerschaum-2.8.4 → meerschaum-2.9.0.dev1}/meerschaum/_internal/term/tools.py +0 -0
  55. {meerschaum-2.8.4 → meerschaum-2.9.0.dev1}/meerschaum/actions/__init__.py +0 -0
  56. {meerschaum-2.8.4 → meerschaum-2.9.0.dev1}/meerschaum/actions/api.py +0 -0
  57. {meerschaum-2.8.4 → meerschaum-2.9.0.dev1}/meerschaum/actions/attach.py +0 -0
  58. {meerschaum-2.8.4 → meerschaum-2.9.0.dev1}/meerschaum/actions/bootstrap.py +0 -0
  59. {meerschaum-2.8.4 → meerschaum-2.9.0.dev1}/meerschaum/actions/clear.py +0 -0
  60. {meerschaum-2.8.4 → meerschaum-2.9.0.dev1}/meerschaum/actions/copy.py +0 -0
  61. {meerschaum-2.8.4 → meerschaum-2.9.0.dev1}/meerschaum/actions/deduplicate.py +0 -0
  62. {meerschaum-2.8.4 → meerschaum-2.9.0.dev1}/meerschaum/actions/delete.py +0 -0
  63. {meerschaum-2.8.4 → meerschaum-2.9.0.dev1}/meerschaum/actions/drop.py +0 -0
  64. {meerschaum-2.8.4 → meerschaum-2.9.0.dev1}/meerschaum/actions/edit.py +0 -0
  65. {meerschaum-2.8.4 → meerschaum-2.9.0.dev1}/meerschaum/actions/index.py +0 -0
  66. {meerschaum-2.8.4 → meerschaum-2.9.0.dev1}/meerschaum/actions/install.py +0 -0
  67. {meerschaum-2.8.4 → meerschaum-2.9.0.dev1}/meerschaum/actions/login.py +0 -0
  68. {meerschaum-2.8.4 → meerschaum-2.9.0.dev1}/meerschaum/actions/os.py +0 -0
  69. {meerschaum-2.8.4 → meerschaum-2.9.0.dev1}/meerschaum/actions/pause.py +0 -0
  70. {meerschaum-2.8.4 → meerschaum-2.9.0.dev1}/meerschaum/actions/python.py +0 -0
  71. {meerschaum-2.8.4 → meerschaum-2.9.0.dev1}/meerschaum/actions/register.py +0 -0
  72. {meerschaum-2.8.4 → meerschaum-2.9.0.dev1}/meerschaum/actions/reload.py +0 -0
  73. {meerschaum-2.8.4 → meerschaum-2.9.0.dev1}/meerschaum/actions/restart.py +0 -0
  74. {meerschaum-2.8.4 → meerschaum-2.9.0.dev1}/meerschaum/actions/setup.py +0 -0
  75. {meerschaum-2.8.4 → meerschaum-2.9.0.dev1}/meerschaum/actions/sh.py +0 -0
  76. {meerschaum-2.8.4 → meerschaum-2.9.0.dev1}/meerschaum/actions/show.py +0 -0
  77. {meerschaum-2.8.4 → meerschaum-2.9.0.dev1}/meerschaum/actions/sql.py +0 -0
  78. {meerschaum-2.8.4 → meerschaum-2.9.0.dev1}/meerschaum/actions/stack.py +0 -0
  79. {meerschaum-2.8.4 → meerschaum-2.9.0.dev1}/meerschaum/actions/start.py +0 -0
  80. {meerschaum-2.8.4 → meerschaum-2.9.0.dev1}/meerschaum/actions/stop.py +0 -0
  81. {meerschaum-2.8.4 → meerschaum-2.9.0.dev1}/meerschaum/actions/sync.py +0 -0
  82. {meerschaum-2.8.4 → meerschaum-2.9.0.dev1}/meerschaum/actions/tag.py +0 -0
  83. {meerschaum-2.8.4 → meerschaum-2.9.0.dev1}/meerschaum/actions/uninstall.py +0 -0
  84. {meerschaum-2.8.4 → meerschaum-2.9.0.dev1}/meerschaum/actions/upgrade.py +0 -0
  85. {meerschaum-2.8.4 → meerschaum-2.9.0.dev1}/meerschaum/actions/verify.py +0 -0
  86. {meerschaum-2.8.4 → meerschaum-2.9.0.dev1}/meerschaum/api/__init__.py +0 -0
  87. {meerschaum-2.8.4 → meerschaum-2.9.0.dev1}/meerschaum/api/_chain.py +0 -0
  88. {meerschaum-2.8.4 → meerschaum-2.9.0.dev1}/meerschaum/api/_events.py +0 -0
  89. {meerschaum-2.8.4 → meerschaum-2.9.0.dev1}/meerschaum/api/_exceptions.py +0 -0
  90. {meerschaum-2.8.4 → meerschaum-2.9.0.dev1}/meerschaum/api/_oauth2.py +0 -0
  91. {meerschaum-2.8.4 → meerschaum-2.9.0.dev1}/meerschaum/api/_websockets.py +0 -0
  92. {meerschaum-2.8.4 → meerschaum-2.9.0.dev1}/meerschaum/api/dash/__init__.py +0 -0
  93. {meerschaum-2.8.4 → meerschaum-2.9.0.dev1}/meerschaum/api/dash/assets/__init__.py +0 -0
  94. {meerschaum-2.8.4 → meerschaum-2.9.0.dev1}/meerschaum/api/dash/assets/ansi_up.js +0 -0
  95. {meerschaum-2.8.4 → meerschaum-2.9.0.dev1}/meerschaum/api/dash/assets/banner_1920x320.png +0 -0
  96. {meerschaum-2.8.4 → meerschaum-2.9.0.dev1}/meerschaum/api/dash/assets/favicon.ico +0 -0
  97. {meerschaum-2.8.4 → meerschaum-2.9.0.dev1}/meerschaum/api/dash/assets/logo_48x48.png +0 -0
  98. {meerschaum-2.8.4 → meerschaum-2.9.0.dev1}/meerschaum/api/dash/assets/logo_500x500.png +0 -0
  99. {meerschaum-2.8.4 → meerschaum-2.9.0.dev1}/meerschaum/api/dash/callbacks/__init__.py +0 -0
  100. {meerschaum-2.8.4 → meerschaum-2.9.0.dev1}/meerschaum/api/dash/callbacks/jobs.py +0 -0
  101. {meerschaum-2.8.4 → meerschaum-2.9.0.dev1}/meerschaum/api/dash/callbacks/login.py +0 -0
  102. {meerschaum-2.8.4 → meerschaum-2.9.0.dev1}/meerschaum/api/dash/callbacks/pipes.py +0 -0
  103. {meerschaum-2.8.4 → meerschaum-2.9.0.dev1}/meerschaum/api/dash/callbacks/plugins.py +0 -0
  104. {meerschaum-2.8.4 → meerschaum-2.9.0.dev1}/meerschaum/api/dash/callbacks/register.py +0 -0
  105. {meerschaum-2.8.4 → meerschaum-2.9.0.dev1}/meerschaum/api/dash/connectors.py +0 -0
  106. {meerschaum-2.8.4 → meerschaum-2.9.0.dev1}/meerschaum/api/dash/graphs.py +0 -0
  107. {meerschaum-2.8.4 → meerschaum-2.9.0.dev1}/meerschaum/api/dash/jobs.py +0 -0
  108. {meerschaum-2.8.4 → meerschaum-2.9.0.dev1}/meerschaum/api/dash/keys.py +0 -0
  109. {meerschaum-2.8.4 → meerschaum-2.9.0.dev1}/meerschaum/api/dash/pages/__init__.py +0 -0
  110. {meerschaum-2.8.4 → meerschaum-2.9.0.dev1}/meerschaum/api/dash/pages/error.py +0 -0
  111. {meerschaum-2.8.4 → meerschaum-2.9.0.dev1}/meerschaum/api/dash/pages/job.py +0 -0
  112. {meerschaum-2.8.4 → meerschaum-2.9.0.dev1}/meerschaum/api/dash/pages/login.py +0 -0
  113. {meerschaum-2.8.4 → meerschaum-2.9.0.dev1}/meerschaum/api/dash/pages/pipes.py +0 -0
  114. {meerschaum-2.8.4 → meerschaum-2.9.0.dev1}/meerschaum/api/dash/pages/register.py +0 -0
  115. {meerschaum-2.8.4 → meerschaum-2.9.0.dev1}/meerschaum/api/dash/pipes.py +0 -0
  116. {meerschaum-2.8.4 → meerschaum-2.9.0.dev1}/meerschaum/api/dash/plugins.py +0 -0
  117. {meerschaum-2.8.4 → meerschaum-2.9.0.dev1}/meerschaum/api/dash/sessions.py +0 -0
  118. {meerschaum-2.8.4 → meerschaum-2.9.0.dev1}/meerschaum/api/dash/sync.py +0 -0
  119. {meerschaum-2.8.4 → meerschaum-2.9.0.dev1}/meerschaum/api/dash/users.py +0 -0
  120. {meerschaum-2.8.4 → meerschaum-2.9.0.dev1}/meerschaum/api/dash/websockets.py +0 -0
  121. {meerschaum-2.8.4 → meerschaum-2.9.0.dev1}/meerschaum/api/models/__init__.py +0 -0
  122. {meerschaum-2.8.4 → meerschaum-2.9.0.dev1}/meerschaum/api/models/_interfaces.py +0 -0
  123. {meerschaum-2.8.4 → meerschaum-2.9.0.dev1}/meerschaum/api/models/_locations.py +0 -0
  124. {meerschaum-2.8.4 → meerschaum-2.9.0.dev1}/meerschaum/api/models/_metrics.py +0 -0
  125. {meerschaum-2.8.4 → meerschaum-2.9.0.dev1}/meerschaum/api/models/_pipes.py +0 -0
  126. {meerschaum-2.8.4 → meerschaum-2.9.0.dev1}/meerschaum/api/resources/__init__.py +0 -0
  127. {meerschaum-2.8.4 → meerschaum-2.9.0.dev1}/meerschaum/api/resources/static/__init__.py +0 -0
  128. {meerschaum-2.8.4 → meerschaum-2.9.0.dev1}/meerschaum/api/resources/static/css/__init__.py +0 -0
  129. {meerschaum-2.8.4 → meerschaum-2.9.0.dev1}/meerschaum/api/resources/static/css/bootstrap.min.css +0 -0
  130. {meerschaum-2.8.4 → meerschaum-2.9.0.dev1}/meerschaum/api/resources/static/css/dbc_dark.css +0 -0
  131. {meerschaum-2.8.4 → meerschaum-2.9.0.dev1}/meerschaum/api/resources/static/css/styles.css +0 -0
  132. {meerschaum-2.8.4 → meerschaum-2.9.0.dev1}/meerschaum/api/resources/static/css/xterm.css +0 -0
  133. {meerschaum-2.8.4 → meerschaum-2.9.0.dev1}/meerschaum/api/resources/static/ico/__init__.py +0 -0
  134. {meerschaum-2.8.4 → meerschaum-2.9.0.dev1}/meerschaum/api/resources/static/ico/logo.ico +0 -0
  135. {meerschaum-2.8.4 → meerschaum-2.9.0.dev1}/meerschaum/api/resources/static/js/__init__.py +0 -0
  136. {meerschaum-2.8.4 → meerschaum-2.9.0.dev1}/meerschaum/api/resources/static/js/action_button.js +0 -0
  137. {meerschaum-2.8.4 → meerschaum-2.9.0.dev1}/meerschaum/api/resources/static/js/main.js +0 -0
  138. {meerschaum-2.8.4 → meerschaum-2.9.0.dev1}/meerschaum/api/resources/static/js/terminado.js +0 -0
  139. {meerschaum-2.8.4 → meerschaum-2.9.0.dev1}/meerschaum/api/resources/static/js/xterm.js +0 -0
  140. {meerschaum-2.8.4 → meerschaum-2.9.0.dev1}/meerschaum/api/resources/static/png/__init__.py +0 -0
  141. {meerschaum-2.8.4 → meerschaum-2.9.0.dev1}/meerschaum/api/resources/templates/__init__.py +0 -0
  142. {meerschaum-2.8.4 → meerschaum-2.9.0.dev1}/meerschaum/api/resources/templates/index.html +0 -0
  143. {meerschaum-2.8.4 → meerschaum-2.9.0.dev1}/meerschaum/api/resources/templates/old_index.html +0 -0
  144. {meerschaum-2.8.4 → meerschaum-2.9.0.dev1}/meerschaum/api/resources/templates/secret.html +0 -0
  145. {meerschaum-2.8.4 → meerschaum-2.9.0.dev1}/meerschaum/api/routes/__init__.py +0 -0
  146. {meerschaum-2.8.4 → meerschaum-2.9.0.dev1}/meerschaum/api/routes/_actions.py +0 -0
  147. {meerschaum-2.8.4 → meerschaum-2.9.0.dev1}/meerschaum/api/routes/_connectors.py +0 -0
  148. {meerschaum-2.8.4 → meerschaum-2.9.0.dev1}/meerschaum/api/routes/_index.py +0 -0
  149. {meerschaum-2.8.4 → meerschaum-2.9.0.dev1}/meerschaum/api/routes/_jobs.py +0 -0
  150. {meerschaum-2.8.4 → meerschaum-2.9.0.dev1}/meerschaum/api/routes/_login.py +0 -0
  151. {meerschaum-2.8.4 → meerschaum-2.9.0.dev1}/meerschaum/api/routes/_misc.py +0 -0
  152. {meerschaum-2.8.4 → meerschaum-2.9.0.dev1}/meerschaum/api/routes/_plugins.py +0 -0
  153. {meerschaum-2.8.4 → meerschaum-2.9.0.dev1}/meerschaum/api/routes/_users.py +0 -0
  154. {meerschaum-2.8.4 → meerschaum-2.9.0.dev1}/meerschaum/api/routes/_version.py +0 -0
  155. {meerschaum-2.8.4 → meerschaum-2.9.0.dev1}/meerschaum/api/routes/_webterm.py +0 -0
  156. {meerschaum-2.8.4 → meerschaum-2.9.0.dev1}/meerschaum/api/tables/__init__.py +0 -0
  157. {meerschaum-2.8.4 → meerschaum-2.9.0.dev1}/meerschaum/config/__init__.py +0 -0
  158. {meerschaum-2.8.4 → meerschaum-2.9.0.dev1}/meerschaum/config/_dash.py +0 -0
  159. {meerschaum-2.8.4 → meerschaum-2.9.0.dev1}/meerschaum/config/_edit.py +0 -0
  160. {meerschaum-2.8.4 → meerschaum-2.9.0.dev1}/meerschaum/config/_environment.py +0 -0
  161. {meerschaum-2.8.4 → meerschaum-2.9.0.dev1}/meerschaum/config/_formatting.py +0 -0
  162. {meerschaum-2.8.4 → meerschaum-2.9.0.dev1}/meerschaum/config/_jobs.py +0 -0
  163. {meerschaum-2.8.4 → meerschaum-2.9.0.dev1}/meerschaum/config/_patch.py +0 -0
  164. {meerschaum-2.8.4 → meerschaum-2.9.0.dev1}/meerschaum/config/_paths.py +0 -0
  165. {meerschaum-2.8.4 → meerschaum-2.9.0.dev1}/meerschaum/config/_preprocess.py +0 -0
  166. {meerschaum-2.8.4 → meerschaum-2.9.0.dev1}/meerschaum/config/_read_config.py +0 -0
  167. {meerschaum-2.8.4 → meerschaum-2.9.0.dev1}/meerschaum/config/_shell.py +0 -0
  168. {meerschaum-2.8.4 → meerschaum-2.9.0.dev1}/meerschaum/config/_sync.py +0 -0
  169. {meerschaum-2.8.4 → meerschaum-2.9.0.dev1}/meerschaum/config/paths.py +0 -0
  170. {meerschaum-2.8.4 → meerschaum-2.9.0.dev1}/meerschaum/config/resources/__init__.py +0 -0
  171. {meerschaum-2.8.4 → meerschaum-2.9.0.dev1}/meerschaum/config/stack/__init__.py +0 -0
  172. {meerschaum-2.8.4 → meerschaum-2.9.0.dev1}/meerschaum/config/stack/grafana/__init__.py +0 -0
  173. {meerschaum-2.8.4 → meerschaum-2.9.0.dev1}/meerschaum/config/stack/mosquitto/__init__.py +0 -0
  174. {meerschaum-2.8.4 → meerschaum-2.9.0.dev1}/meerschaum/config/stack/mosquitto/resources/__init__.py +0 -0
  175. {meerschaum-2.8.4 → meerschaum-2.9.0.dev1}/meerschaum/config/stack/resources/__init__.py +0 -0
  176. {meerschaum-2.8.4 → meerschaum-2.9.0.dev1}/meerschaum/config/static/__init__.py +0 -0
  177. {meerschaum-2.8.4 → meerschaum-2.9.0.dev1}/meerschaum/connectors/_Connector.py +0 -0
  178. {meerschaum-2.8.4 → meerschaum-2.9.0.dev1}/meerschaum/connectors/__init__.py +0 -0
  179. {meerschaum-2.8.4 → meerschaum-2.9.0.dev1}/meerschaum/connectors/api/__init__.py +0 -0
  180. {meerschaum-2.8.4 → meerschaum-2.9.0.dev1}/meerschaum/connectors/api/_actions.py +0 -0
  181. {meerschaum-2.8.4 → meerschaum-2.9.0.dev1}/meerschaum/connectors/api/_fetch.py +0 -0
  182. {meerschaum-2.8.4 → meerschaum-2.9.0.dev1}/meerschaum/connectors/api/_jobs.py +0 -0
  183. {meerschaum-2.8.4 → meerschaum-2.9.0.dev1}/meerschaum/connectors/api/_login.py +0 -0
  184. {meerschaum-2.8.4 → meerschaum-2.9.0.dev1}/meerschaum/connectors/api/_misc.py +0 -0
  185. {meerschaum-2.8.4 → meerschaum-2.9.0.dev1}/meerschaum/connectors/api/_uri.py +0 -0
  186. {meerschaum-2.8.4 → meerschaum-2.9.0.dev1}/meerschaum/connectors/api/_users.py +0 -0
  187. {meerschaum-2.8.4 → meerschaum-2.9.0.dev1}/meerschaum/connectors/plugin/PluginConnector.py +0 -0
  188. {meerschaum-2.8.4 → meerschaum-2.9.0.dev1}/meerschaum/connectors/plugin/__init__.py +0 -0
  189. {meerschaum-2.8.4 → meerschaum-2.9.0.dev1}/meerschaum/connectors/poll.py +0 -0
  190. {meerschaum-2.8.4 → meerschaum-2.9.0.dev1}/meerschaum/connectors/sql/_SQLConnector.py +0 -0
  191. {meerschaum-2.8.4 → meerschaum-2.9.0.dev1}/meerschaum/connectors/sql/__init__.py +0 -0
  192. {meerschaum-2.8.4 → meerschaum-2.9.0.dev1}/meerschaum/connectors/sql/_cli.py +0 -0
  193. {meerschaum-2.8.4 → meerschaum-2.9.0.dev1}/meerschaum/connectors/sql/_create_engine.py +0 -0
  194. {meerschaum-2.8.4 → meerschaum-2.9.0.dev1}/meerschaum/connectors/sql/_fetch.py +0 -0
  195. {meerschaum-2.8.4 → meerschaum-2.9.0.dev1}/meerschaum/connectors/sql/_instance.py +0 -0
  196. {meerschaum-2.8.4 → meerschaum-2.9.0.dev1}/meerschaum/connectors/sql/_pipes.py +0 -0
  197. {meerschaum-2.8.4 → meerschaum-2.9.0.dev1}/meerschaum/connectors/sql/_plugins.py +0 -0
  198. {meerschaum-2.8.4 → meerschaum-2.9.0.dev1}/meerschaum/connectors/sql/_sql.py +0 -0
  199. {meerschaum-2.8.4 → meerschaum-2.9.0.dev1}/meerschaum/connectors/sql/_uri.py +0 -0
  200. {meerschaum-2.8.4 → meerschaum-2.9.0.dev1}/meerschaum/connectors/sql/_users.py +0 -0
  201. {meerschaum-2.8.4 → meerschaum-2.9.0.dev1}/meerschaum/connectors/sql/tables/__init__.py +0 -0
  202. {meerschaum-2.8.4 → meerschaum-2.9.0.dev1}/meerschaum/connectors/sql/tables/types.py +0 -0
  203. {meerschaum-2.8.4 → meerschaum-2.9.0.dev1}/meerschaum/connectors/sql/tools.py +0 -0
  204. {meerschaum-2.8.4 → meerschaum-2.9.0.dev1}/meerschaum/connectors/valkey/_ValkeyConnector.py +0 -0
  205. {meerschaum-2.8.4 → meerschaum-2.9.0.dev1}/meerschaum/connectors/valkey/__init__.py +0 -0
  206. {meerschaum-2.8.4 → meerschaum-2.9.0.dev1}/meerschaum/connectors/valkey/_fetch.py +0 -0
  207. {meerschaum-2.8.4 → meerschaum-2.9.0.dev1}/meerschaum/connectors/valkey/_pipes.py +0 -0
  208. {meerschaum-2.8.4 → meerschaum-2.9.0.dev1}/meerschaum/connectors/valkey/_plugins.py +0 -0
  209. {meerschaum-2.8.4 → meerschaum-2.9.0.dev1}/meerschaum/connectors/valkey/_users.py +0 -0
  210. {meerschaum-2.8.4 → meerschaum-2.9.0.dev1}/meerschaum/core/Pipe/__init__.py +0 -0
  211. {meerschaum-2.8.4 → meerschaum-2.9.0.dev1}/meerschaum/core/Pipe/_attributes.py +0 -0
  212. {meerschaum-2.8.4 → meerschaum-2.9.0.dev1}/meerschaum/core/Pipe/_bootstrap.py +0 -0
  213. {meerschaum-2.8.4 → meerschaum-2.9.0.dev1}/meerschaum/core/Pipe/_clear.py +0 -0
  214. {meerschaum-2.8.4 → meerschaum-2.9.0.dev1}/meerschaum/core/Pipe/_copy.py +0 -0
  215. {meerschaum-2.8.4 → meerschaum-2.9.0.dev1}/meerschaum/core/Pipe/_deduplicate.py +0 -0
  216. {meerschaum-2.8.4 → meerschaum-2.9.0.dev1}/meerschaum/core/Pipe/_delete.py +0 -0
  217. {meerschaum-2.8.4 → meerschaum-2.9.0.dev1}/meerschaum/core/Pipe/_drop.py +0 -0
  218. {meerschaum-2.8.4 → meerschaum-2.9.0.dev1}/meerschaum/core/Pipe/_dtypes.py +0 -0
  219. {meerschaum-2.8.4 → meerschaum-2.9.0.dev1}/meerschaum/core/Pipe/_edit.py +0 -0
  220. {meerschaum-2.8.4 → meerschaum-2.9.0.dev1}/meerschaum/core/Pipe/_fetch.py +0 -0
  221. {meerschaum-2.8.4 → meerschaum-2.9.0.dev1}/meerschaum/core/Pipe/_index.py +0 -0
  222. {meerschaum-2.8.4 → meerschaum-2.9.0.dev1}/meerschaum/core/Pipe/_register.py +0 -0
  223. {meerschaum-2.8.4 → meerschaum-2.9.0.dev1}/meerschaum/core/Pipe/_show.py +0 -0
  224. {meerschaum-2.8.4 → meerschaum-2.9.0.dev1}/meerschaum/core/Pipe/_sync.py +0 -0
  225. {meerschaum-2.8.4 → meerschaum-2.9.0.dev1}/meerschaum/core/Pipe/_verify.py +0 -0
  226. {meerschaum-2.8.4 → meerschaum-2.9.0.dev1}/meerschaum/core/Plugin/__init__.py +0 -0
  227. {meerschaum-2.8.4 → meerschaum-2.9.0.dev1}/meerschaum/core/User/_User.py +0 -0
  228. {meerschaum-2.8.4 → meerschaum-2.9.0.dev1}/meerschaum/core/User/__init__.py +0 -0
  229. {meerschaum-2.8.4 → meerschaum-2.9.0.dev1}/meerschaum/core/__init__.py +0 -0
  230. {meerschaum-2.8.4 → meerschaum-2.9.0.dev1}/meerschaum/jobs/_Executor.py +0 -0
  231. {meerschaum-2.8.4 → meerschaum-2.9.0.dev1}/meerschaum/jobs/_Job.py +0 -0
  232. {meerschaum-2.8.4 → meerschaum-2.9.0.dev1}/meerschaum/jobs/__init__.py +0 -0
  233. {meerschaum-2.8.4 → meerschaum-2.9.0.dev1}/meerschaum/jobs/systemd.py +0 -0
  234. {meerschaum-2.8.4 → meerschaum-2.9.0.dev1}/meerschaum/plugins/bootstrap.py +0 -0
  235. {meerschaum-2.8.4 → meerschaum-2.9.0.dev1}/meerschaum/utils/__init__.py +0 -0
  236. {meerschaum-2.8.4 → meerschaum-2.9.0.dev1}/meerschaum/utils/_get_pipes.py +0 -0
  237. {meerschaum-2.8.4 → meerschaum-2.9.0.dev1}/meerschaum/utils/daemon/Daemon.py +0 -0
  238. {meerschaum-2.8.4 → meerschaum-2.9.0.dev1}/meerschaum/utils/daemon/FileDescriptorInterceptor.py +0 -0
  239. {meerschaum-2.8.4 → meerschaum-2.9.0.dev1}/meerschaum/utils/daemon/RotatingFile.py +0 -0
  240. {meerschaum-2.8.4 → meerschaum-2.9.0.dev1}/meerschaum/utils/daemon/StdinFile.py +0 -0
  241. {meerschaum-2.8.4 → meerschaum-2.9.0.dev1}/meerschaum/utils/daemon/__init__.py +0 -0
  242. {meerschaum-2.8.4 → meerschaum-2.9.0.dev1}/meerschaum/utils/daemon/_names.py +0 -0
  243. {meerschaum-2.8.4 → meerschaum-2.9.0.dev1}/meerschaum/utils/dataframe.py +0 -0
  244. {meerschaum-2.8.4 → meerschaum-2.9.0.dev1}/meerschaum/utils/debug.py +0 -0
  245. {meerschaum-2.8.4 → meerschaum-2.9.0.dev1}/meerschaum/utils/dtypes/__init__.py +0 -0
  246. {meerschaum-2.8.4 → meerschaum-2.9.0.dev1}/meerschaum/utils/dtypes/sql.py +0 -0
  247. {meerschaum-2.8.4 → meerschaum-2.9.0.dev1}/meerschaum/utils/formatting/__init__.py +0 -0
  248. {meerschaum-2.8.4 → meerschaum-2.9.0.dev1}/meerschaum/utils/formatting/_jobs.py +0 -0
  249. {meerschaum-2.8.4 → meerschaum-2.9.0.dev1}/meerschaum/utils/formatting/_pipes.py +0 -0
  250. {meerschaum-2.8.4 → meerschaum-2.9.0.dev1}/meerschaum/utils/formatting/_pprint.py +0 -0
  251. {meerschaum-2.8.4 → meerschaum-2.9.0.dev1}/meerschaum/utils/interactive.py +0 -0
  252. {meerschaum-2.8.4 → meerschaum-2.9.0.dev1}/meerschaum/utils/misc.py +0 -0
  253. {meerschaum-2.8.4 → meerschaum-2.9.0.dev1}/meerschaum/utils/networking.py +0 -0
  254. {meerschaum-2.8.4 → meerschaum-2.9.0.dev1}/meerschaum/utils/packages/__init__.py +0 -0
  255. {meerschaum-2.8.4 → meerschaum-2.9.0.dev1}/meerschaum/utils/packages/lazy_loader.py +0 -0
  256. {meerschaum-2.8.4 → meerschaum-2.9.0.dev1}/meerschaum/utils/pool.py +0 -0
  257. {meerschaum-2.8.4 → meerschaum-2.9.0.dev1}/meerschaum/utils/process.py +0 -0
  258. {meerschaum-2.8.4 → meerschaum-2.9.0.dev1}/meerschaum/utils/prompt.py +0 -0
  259. {meerschaum-2.8.4 → meerschaum-2.9.0.dev1}/meerschaum/utils/schedule.py +0 -0
  260. {meerschaum-2.8.4 → meerschaum-2.9.0.dev1}/meerschaum/utils/sql.py +0 -0
  261. {meerschaum-2.8.4 → meerschaum-2.9.0.dev1}/meerschaum/utils/threading.py +0 -0
  262. {meerschaum-2.8.4 → meerschaum-2.9.0.dev1}/meerschaum/utils/typing.py +0 -0
  263. {meerschaum-2.8.4 → meerschaum-2.9.0.dev1}/meerschaum/utils/venv/_Venv.py +0 -0
  264. {meerschaum-2.8.4 → meerschaum-2.9.0.dev1}/meerschaum/utils/warnings.py +0 -0
  265. {meerschaum-2.8.4 → meerschaum-2.9.0.dev1}/meerschaum/utils/yaml.py +0 -0
  266. {meerschaum-2.8.4 → meerschaum-2.9.0.dev1}/meerschaum.egg-info/dependency_links.txt +0 -0
  267. {meerschaum-2.8.4 → meerschaum-2.9.0.dev1}/meerschaum.egg-info/entry_points.txt +0 -0
  268. {meerschaum-2.8.4 → meerschaum-2.9.0.dev1}/meerschaum.egg-info/top_level.txt +0 -0
  269. {meerschaum-2.8.4 → meerschaum-2.9.0.dev1}/meerschaum.egg-info/zip-safe +0 -0
  270. {meerschaum-2.8.4 → meerschaum-2.9.0.dev1}/setup.cfg +0 -0
  271. {meerschaum-2.8.4 → meerschaum-2.9.0.dev1}/setup.py +0 -0
  272. {meerschaum-2.8.4 → meerschaum-2.9.0.dev1}/tests/test_actions.py +0 -0
  273. {meerschaum-2.8.4 → meerschaum-2.9.0.dev1}/tests/test_arguments.py +0 -0
  274. {meerschaum-2.8.4 → meerschaum-2.9.0.dev1}/tests/test_deduplicate.py +0 -0
  275. {meerschaum-2.8.4 → meerschaum-2.9.0.dev1}/tests/test_jobs.py +0 -0
  276. {meerschaum-2.8.4 → meerschaum-2.9.0.dev1}/tests/test_pipe_data.py +0 -0
  277. {meerschaum-2.8.4 → meerschaum-2.9.0.dev1}/tests/test_pipes_dtypes.py +0 -0
  278. {meerschaum-2.8.4 → meerschaum-2.9.0.dev1}/tests/test_sql.py +0 -0
  279. {meerschaum-2.8.4 → meerschaum-2.9.0.dev1}/tests/test_sync.py +0 -0
  280. {meerschaum-2.8.4 → meerschaum-2.9.0.dev1}/tests/test_users.py +0 -0
  281. {meerschaum-2.8.4 → meerschaum-2.9.0.dev1}/tests/test_verify.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.2
2
2
  Name: meerschaum
3
- Version: 2.8.4
3
+ Version: 2.9.0.dev1
4
4
  Summary: Sync Time-Series Pipes with Meerschaum
5
5
  Home-page: https://meerschaum.io
6
6
  Author: Bennett Meares
@@ -126,6 +126,7 @@ Requires-Dist: importlib-metadata>=4.12.0; extra == "extras"
126
126
  Provides-Extra: sql
127
127
  Requires-Dist: numpy>=1.18.5; extra == "sql"
128
128
  Requires-Dist: pandas[parquet]>=2.0.1; extra == "sql"
129
+ Requires-Dist: geopandas>=1.0.1; extra == "sql"
129
130
  Requires-Dist: pyarrow>=16.1.0; extra == "sql"
130
131
  Requires-Dist: dask[complete]>=2024.12.1; extra == "sql"
131
132
  Requires-Dist: partd>=1.4.2; extra == "sql"
@@ -186,6 +187,7 @@ Requires-Dist: httpcore>=1.0.6; extra == "api"
186
187
  Requires-Dist: valkey>=6.0.0; extra == "api"
187
188
  Requires-Dist: numpy>=1.18.5; extra == "api"
188
189
  Requires-Dist: pandas[parquet]>=2.0.1; extra == "api"
190
+ Requires-Dist: geopandas>=1.0.1; extra == "api"
189
191
  Requires-Dist: pyarrow>=16.1.0; extra == "api"
190
192
  Requires-Dist: dask[complete]>=2024.12.1; extra == "api"
191
193
  Requires-Dist: partd>=1.4.2; extra == "api"
@@ -291,6 +293,7 @@ Requires-Dist: pywebview>=3.6.3; extra == "full"
291
293
  Requires-Dist: pycparser>=2.21.0; extra == "full"
292
294
  Requires-Dist: numpy>=1.18.5; extra == "full"
293
295
  Requires-Dist: pandas[parquet]>=2.0.1; extra == "full"
296
+ Requires-Dist: geopandas>=1.0.1; extra == "full"
294
297
  Requires-Dist: pyarrow>=16.1.0; extra == "full"
295
298
  Requires-Dist: dask[complete]>=2024.12.1; extra == "full"
296
299
  Requires-Dist: partd>=1.4.2; extra == "full"
@@ -0,0 +1,67 @@
1
+ #! /usr/bin/env python3
2
+ # vim:fenc=utf-8
3
+
4
+ """
5
+ Utility functions for the retrieval, caching, and response of chunk data.
6
+ """
7
+
8
+ import random
9
+ from datetime import datetime, timedelta, timezone
10
+ from typing import Dict, Generator, Any, Union, Optional, List
11
+
12
+ import meerschaum as mrsm
13
+ from meerschaum.api import get_cache_connector
14
+ from meerschaum.utils.misc import generate_password
15
+
16
+ CHUNKS_TOKENS_GENERATORS: Dict[str, Dict[str, Union[Generator[Any, None, None], datetime, int]]]
17
+ DEFAULT_TTL_SECONDS = mrsm.get_config('system', 'api', 'data', 'chunks', 'ttl_seconds')
18
+
19
+
20
+ def generate_chunks_cursor_token(
21
+ pipe: mrsm.Pipe,
22
+ select_columns: Optional[List[str]] = None,
23
+ omit_columns: Optional[List[str]] = None,
24
+ begin: Union[datetime, int, None] = None,
25
+ end: Union[datetime, int, None] = None,
26
+ params: Optional[Dict[str, Any]] = None,
27
+ limit: Optional[int] = None,
28
+ order: Optional[str] = 'asc',
29
+ ttl_seconds: Optional[int] = None,
30
+ debug: bool = False,
31
+ ) -> str:
32
+ """
33
+ Store a generator in the `CHUNKS_TOKENS_GENERATORS`
34
+ """
35
+ now = datetime.now(timezone.utc)
36
+ cache_connector = get_cache_connector()
37
+ if cache_connector is None:
38
+ pass
39
+
40
+ ttl_seconds = ttl_seconds or DEFAULT_TTL_SECONDS
41
+ chunk_bounds = pipe.get_chunk_bounds(
42
+ begin=begin,
43
+ end=end,
44
+ bounded=True,
45
+ )
46
+
47
+ while True:
48
+ chunk_token = prefix + generate_password(random.randint(6, 12))
49
+ if chunk_token in CHUNKS_TOKENS_GENERATORS:
50
+ continue
51
+ break
52
+
53
+ CHUNKS_TOKENS_GENERATORS[chunk_token] = {
54
+ 'generator': chunk_generator,
55
+ 'created': now,
56
+ 'ttl': ttl_seconds,
57
+ 'last_accessed': now,
58
+ }
59
+
60
+ return chunk_token
61
+
62
+
63
+ def deallocate_expired_generators():
64
+ """
65
+ Periodically delete chunk tokens with an expired ttl timestamp.
66
+ """
67
+ chunk_tokens = list(CHUNKS_TOKENS_GENERATORS)
@@ -7,10 +7,13 @@ Import custom callbacks created by plugins.
7
7
  """
8
8
 
9
9
  import traceback
10
+ from typing import Any, Dict
11
+
10
12
  from meerschaum.api.dash import dash_app
11
13
  from meerschaum.plugins import _dash_plugins, _plugin_endpoints_to_pages
12
14
  from meerschaum.utils.warnings import warn
13
- from meerschaum.api.dash.callbacks.dashboard import _paths, _required_login
15
+ from meerschaum.api.dash.callbacks.dashboard import _paths, _required_login, _pages
16
+ from meerschaum.api.dash.components import pages_navbar
14
17
 
15
18
 
16
19
  def init_dash_plugins():
@@ -34,6 +37,24 @@ def add_plugin_pages():
34
37
  Allow users to add pages via the `@web_page` decorator.
35
38
  """
36
39
  for _endpoint, _page_dict in _plugin_endpoints_to_pages.items():
37
- _paths[_endpoint] = _page_dict['function']()
40
+ page_layout = _page_dict['function']()
41
+ if not _page_dict['skip_navbar']:
42
+ if isinstance(page_layout, list):
43
+ page_layout = [pages_navbar] + page_layout
44
+ else:
45
+ page_layout = [pages_navbar, page_layout]
46
+ page_key = (
47
+ ' '.join(
48
+ [
49
+ word.capitalize()
50
+ for word in (
51
+ _endpoint.replace('/dash', '').lstrip('/').rstrip('/').strip()
52
+ .replace('-', ' ').replace('_', ' ').split(' ')
53
+ )
54
+ ]
55
+ )
56
+ )
57
+ _pages[page_key] = _endpoint
58
+ _paths[_endpoint] = page_layout
38
59
  if _page_dict['login_required']:
39
60
  _required_login.add(_endpoint)
@@ -103,6 +103,10 @@ _paths = {
103
103
  'job' : pages.job.layout,
104
104
  }
105
105
  _required_login = {''}
106
+ _pages = {
107
+ 'Web Console': '/dash/',
108
+ 'Plugins': '/dash/plugins',
109
+ }
106
110
 
107
111
 
108
112
  @dash_app.callback(
@@ -696,7 +700,6 @@ dash_app.clientside_callback(
696
700
  dash_app.clientside_callback(
697
701
  """
698
702
  function(n_clicks){
699
- console.log('fullscreen');
700
703
  if (!n_clicks) { return dash_clientside.no_update; }
701
704
  iframe = document.getElementById('webterm-iframe');
702
705
  if (!iframe){ return dash_clientside.no_update; }
@@ -707,11 +710,11 @@ dash_app.clientside_callback(
707
710
  if (leftCol.style.display === 'none') {
708
711
  leftCol.style.display = '';
709
712
  rightCol.className = 'col-6';
710
- button.innerHTML = "Full View";
713
+ button.innerHTML = "";
711
714
  } else {
712
715
  leftCol.style.display = 'none';
713
716
  rightCol.className = 'col-12';
714
- button.innerHTML = "Side-by-side View";
717
+ button.innerHTML = "🀲";
715
718
  }
716
719
 
717
720
  return dash_clientside.no_update;
@@ -1078,3 +1081,38 @@ def parameters_as_yaml_or_json_click(
1078
1081
  if as_yaml:
1079
1082
  return yaml.dump(pipe.parameters)
1080
1083
  return json.dumps(pipe.parameters, indent=4, separators=(',', ': '), sort_keys=True)
1084
+
1085
+
1086
+ @dash_app.callback(
1087
+ Output('pages-offcanvas', 'is_open'),
1088
+ Output('pages-offcanvas', 'children'),
1089
+ Input('logo-img', 'n_clicks'),
1090
+ State('pages-offcanvas', 'is_open'),
1091
+ )
1092
+ def toggle_pages_offcanvas(n_clicks: Optional[int], is_open: bool):
1093
+ """
1094
+ Toggle the pages sidebar.
1095
+ """
1096
+ pages_children = dbc.Card(
1097
+ dbc.ListGroup(
1098
+ [
1099
+ dbc.ListGroupItem(
1100
+ dbc.Button(
1101
+ html.P(
1102
+ ' '.join([word.capitalize() for word in page_key.split(' ')]),
1103
+ style={'text-decoration': 'none', 'fontSize': '18px'},
1104
+ ),
1105
+ style={'width': '100%', 'text-align': 'left'},
1106
+ href=page_href,
1107
+ color='dark',
1108
+ )
1109
+ )
1110
+ for page_key, page_href in _pages.items()
1111
+ ],
1112
+ flush=True,
1113
+ ),
1114
+ outline=True,
1115
+ )
1116
+ if n_clicks:
1117
+ return not is_open, pages_children
1118
+ return is_open, pages_children
@@ -92,9 +92,9 @@ search_parameters_editor = dash_ace.DashAceEditor(
92
92
  style={'height': 100},
93
93
  )
94
94
 
95
- sidebar = dbc.Offcanvas(
96
- children=[],
97
- title='Pages',
95
+ pages_offcanvas = dbc.Offcanvas(
96
+ title='',
97
+ id='pages-offcanvas',
98
98
  )
99
99
 
100
100
  download_dataframe = dcc.Download(id='download-dataframe-csv')
@@ -110,26 +110,33 @@ instance_select = dbc.Select(
110
110
  class_name='dbc_dark custom-select custom-select-sm',
111
111
  )
112
112
 
113
+ logo_row = dbc.Row(
114
+ [
115
+ dbc.Col(
116
+ html.Img(
117
+ src=endpoints['dash'] + "/assets/logo_48x48.png",
118
+ title=doc,
119
+ id="logo-img",
120
+ style={'cursor': 'pointer'},
121
+ ),
122
+ ),
123
+ ],
124
+ align='center',
125
+ className='g-0 navbar-logo-row',
126
+ )
127
+
128
+ pages_navbar = html.Div(
129
+ [
130
+ pages_offcanvas,
131
+ dbc.Navbar(dbc.Container(logo_row), dark=True, color='dark'),
132
+ ],
133
+ id='pages-navbar-div',
134
+ )
113
135
 
114
136
  navbar = dbc.Navbar(
115
137
  dbc.Container(
116
138
  [
117
- html.A(
118
- dbc.Row(
119
- [
120
- dbc.Col(
121
- html.Img(
122
- src=endpoints['dash'] + "/assets/logo_48x48.png",
123
- title=doc,
124
- ),
125
- ),
126
- ],
127
- align='center',
128
- className='g-0 navbar-logo-row',
129
- ),
130
- href=('/docs' if docs_enabled else '#'),
131
- style={"textDecoration": "none"},
132
- ),
139
+ logo_row,
133
140
  dbc.NavbarToggler(id="navbar-toggler", n_clicks=0),
134
141
  dbc.Collapse(
135
142
  dbc.Row(
@@ -142,6 +149,7 @@ navbar = dbc.Navbar(
142
149
  style={'margin-left': '30px'},
143
150
  id='sign-out-button',
144
151
  ),
152
+ className="ms-auto",
145
153
  ),
146
154
  ],
147
155
  className="g-0 ms-auto flex-nowrap mt-3 mt-md-0",
@@ -37,6 +37,7 @@ from meerschaum.api.dash.components import (
37
37
  console_div,
38
38
  download_dataframe,
39
39
  navbar,
40
+ pages_offcanvas,
40
41
  download_logs,
41
42
  refresh_jobs_interval,
42
43
  )
@@ -47,22 +48,23 @@ from meerschaum.api.dash.keys import (
47
48
  )
48
49
 
49
50
  layout = html.Div(
50
- id = 'main-div',
51
- children = [
51
+ id='main-div',
52
+ children=[
52
53
  keys_lists_content,
53
54
  download_dataframe,
54
55
  download_logs,
55
56
  refresh_jobs_interval,
56
57
  navbar,
58
+ pages_offcanvas,
57
59
  html.Div(
58
60
  dbc.Row(
59
- id = 'content-row',
60
- children = [
61
+ id='content-row',
62
+ children=[
61
63
  dbc.Col(
62
- children = [
64
+ children=[
63
65
  dbc.Tabs(
64
- id = 'pipes-filter-tabs',
65
- children = [
66
+ id='pipes-filter-tabs',
67
+ children=[
66
68
  dbc.Tab(
67
69
  dropdown_tab_content,
68
70
  label='Filters',
@@ -107,9 +109,9 @@ layout = html.Div(
107
109
  id='content-col-right',
108
110
  ),
109
111
  ],
110
- style = {'max-width': '100%', 'padding': '15px'},
112
+ style={'max-width': '100%', 'padding': '15px'},
111
113
  ), ### end of Row
112
- className = 'container-fluid',
114
+ className='container-fluid',
113
115
  ), ### end of Div
114
116
  html.P('', id='line-buffer', style={'display': 'none'}),
115
117
  ],
@@ -0,0 +1,55 @@
1
+ #! /usr/bin/env python3
2
+ # -*- coding: utf-8 -*-
3
+ # vim:fenc=utf-8
4
+
5
+ """
6
+ View the available plugins hosted by this API instance.
7
+ """
8
+
9
+ from __future__ import annotations
10
+ from meerschaum.api import get_api_connector, endpoints, CHECK_UPDATE
11
+ from meerschaum.utils.packages import import_html, import_dcc
12
+ html, dcc = import_html(check_update=CHECK_UPDATE), import_dcc(check_update=CHECK_UPDATE)
13
+ import dash_bootstrap_components as dbc
14
+ from meerschaum.core import Plugin
15
+ from meerschaum.utils.typing import Optional
16
+ from meerschaum.api.dash.components import pages_navbar
17
+
18
+ search_box = dbc.Input(
19
+ id = "search-plugins-input",
20
+ placeholder = "Search for plugins...",
21
+ type = "text",
22
+ )
23
+
24
+ layout = [
25
+ pages_navbar,
26
+ dbc.Container([
27
+ html.Div([
28
+ html.Br(),
29
+ html.Div(
30
+ dbc.Container([
31
+ html.H3('Plugins'),
32
+ html.P([
33
+ (
34
+ 'Plugins extend the functionality of Meerschaum.'
35
+ ' To find out more, check out the '
36
+ ),
37
+ html.A(
38
+ 'plugins documentation',
39
+ href='https://meerschaum.io/reference/plugins/',
40
+ rel="noreferrer noopener",
41
+ target="_blank",
42
+ ),
43
+ '.',
44
+ ]),
45
+ ]),
46
+ className='page-header',
47
+ style={'background-color': 'var(--dark)', 'padding': '1em'},
48
+ ),
49
+ html.Br(),
50
+ search_box,
51
+ html.Br(),
52
+ html.Div([], id='plugins-cards-div'),
53
+ ])
54
+ ])
55
+ ]
@@ -53,19 +53,22 @@ def get_webterm(state: WebState) -> Tuple[Any, Any]:
53
53
  html.Div(
54
54
  [
55
55
  dbc.Button(
56
- 'Refresh',
56
+ "⟳",
57
57
  color='black',
58
+ size='sm',
58
59
  id='webterm-refresh-button',
59
60
  ),
60
61
  dbc.Button(
61
- 'Full View',
62
+ '',
62
63
  color='black',
64
+ size='sm',
63
65
  id='webterm-fullscreen-button',
64
66
  ),
65
67
  ] + [
66
68
  dbc.Button(
67
- 'New Tab',
69
+ html.B('+'),
68
70
  color='black',
71
+ size='sm',
69
72
  id='webterm-new-tab-button',
70
73
  ),
71
74
  ] if TMUX_IS_ENABLED else [],
@@ -23,7 +23,7 @@ a {
23
23
  padding: 0.5em;
24
24
  }
25
25
  #webterm-iframe {
26
- width: 102%;
26
+ width: 100%;
27
27
  height: 83vh !important;
28
28
  max-height: 83vh;
29
29
  }
@@ -111,6 +111,10 @@ window.addEventListener(
111
111
  false,
112
112
  );
113
113
 
114
+ document.addEventListener('contextmenu', function(e) {
115
+ e.preventDefault();
116
+ });
117
+
114
118
  let reconnectTimeout;
115
119
 
116
120
  function cleanUpWebSocket(socket) {