meerschaum 2.8.1__tar.gz → 2.8.3__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 (279) hide show
  1. {meerschaum-2.8.1/meerschaum.egg-info → meerschaum-2.8.3}/PKG-INFO +1 -1
  2. {meerschaum-2.8.1 → meerschaum-2.8.3}/meerschaum/api/__init__.py +14 -8
  3. {meerschaum-2.8.1 → meerschaum-2.8.3}/meerschaum/api/routes/_pipes.py +14 -19
  4. {meerschaum-2.8.1 → meerschaum-2.8.3}/meerschaum/config/_default.py +3 -0
  5. {meerschaum-2.8.1 → meerschaum-2.8.3}/meerschaum/config/_version.py +1 -1
  6. {meerschaum-2.8.1 → meerschaum-2.8.3}/meerschaum/config/static/__init__.py +1 -1
  7. {meerschaum-2.8.1 → meerschaum-2.8.3}/meerschaum/connectors/sql/_cli.py +7 -1
  8. {meerschaum-2.8.1 → meerschaum-2.8.3}/meerschaum/connectors/sql/_create_engine.py +6 -3
  9. {meerschaum-2.8.1 → meerschaum-2.8.3}/meerschaum/connectors/sql/_users.py +4 -2
  10. {meerschaum-2.8.1 → meerschaum-2.8.3}/meerschaum/core/Pipe/_verify.py +19 -10
  11. {meerschaum-2.8.1 → meerschaum-2.8.3}/meerschaum/jobs/_Job.py +1 -1
  12. {meerschaum-2.8.1 → meerschaum-2.8.3}/meerschaum/utils/dataframe.py +1 -1
  13. {meerschaum-2.8.1 → meerschaum-2.8.3/meerschaum.egg-info}/PKG-INFO +1 -1
  14. {meerschaum-2.8.1 → meerschaum-2.8.3}/LICENSE +0 -0
  15. {meerschaum-2.8.1 → meerschaum-2.8.3}/NOTICE +0 -0
  16. {meerschaum-2.8.1 → meerschaum-2.8.3}/README.md +0 -0
  17. {meerschaum-2.8.1 → meerschaum-2.8.3}/meerschaum/__init__.py +0 -0
  18. {meerschaum-2.8.1 → meerschaum-2.8.3}/meerschaum/__main__.py +0 -0
  19. {meerschaum-2.8.1 → meerschaum-2.8.3}/meerschaum/_internal/__init__.py +0 -0
  20. {meerschaum-2.8.1 → meerschaum-2.8.3}/meerschaum/_internal/arguments/__init__.py +0 -0
  21. {meerschaum-2.8.1 → meerschaum-2.8.3}/meerschaum/_internal/arguments/_parse_arguments.py +0 -0
  22. {meerschaum-2.8.1 → meerschaum-2.8.3}/meerschaum/_internal/arguments/_parser.py +0 -0
  23. {meerschaum-2.8.1 → meerschaum-2.8.3}/meerschaum/_internal/docs/__init__.py +0 -0
  24. {meerschaum-2.8.1 → meerschaum-2.8.3}/meerschaum/_internal/docs/index.py +0 -0
  25. {meerschaum-2.8.1 → meerschaum-2.8.3}/meerschaum/_internal/entry.py +0 -0
  26. {meerschaum-2.8.1 → meerschaum-2.8.3}/meerschaum/_internal/gui/__init__.py +0 -0
  27. {meerschaum-2.8.1 → meerschaum-2.8.3}/meerschaum/_internal/gui/app/__init__.py +0 -0
  28. {meerschaum-2.8.1 → meerschaum-2.8.3}/meerschaum/_internal/gui/app/_windows.py +0 -0
  29. {meerschaum-2.8.1 → meerschaum-2.8.3}/meerschaum/_internal/gui/app/actions.py +0 -0
  30. {meerschaum-2.8.1 → meerschaum-2.8.3}/meerschaum/_internal/gui/app/pipes.py +0 -0
  31. {meerschaum-2.8.1 → meerschaum-2.8.3}/meerschaum/_internal/shell/Shell.py +0 -0
  32. {meerschaum-2.8.1 → meerschaum-2.8.3}/meerschaum/_internal/shell/ShellCompleter.py +0 -0
  33. {meerschaum-2.8.1 → meerschaum-2.8.3}/meerschaum/_internal/shell/ValidAutoSuggest.py +0 -0
  34. {meerschaum-2.8.1 → meerschaum-2.8.3}/meerschaum/_internal/shell/__init__.py +0 -0
  35. {meerschaum-2.8.1 → meerschaum-2.8.3}/meerschaum/_internal/shell/resources/__init__.py +0 -0
  36. {meerschaum-2.8.1 → meerschaum-2.8.3}/meerschaum/_internal/shell/updates.py +0 -0
  37. {meerschaum-2.8.1 → meerschaum-2.8.3}/meerschaum/_internal/term/TermPageHandler.py +0 -0
  38. {meerschaum-2.8.1 → meerschaum-2.8.3}/meerschaum/_internal/term/__init__.py +0 -0
  39. {meerschaum-2.8.1 → meerschaum-2.8.3}/meerschaum/_internal/term/tools.py +0 -0
  40. {meerschaum-2.8.1 → meerschaum-2.8.3}/meerschaum/actions/__init__.py +0 -0
  41. {meerschaum-2.8.1 → meerschaum-2.8.3}/meerschaum/actions/api.py +0 -0
  42. {meerschaum-2.8.1 → meerschaum-2.8.3}/meerschaum/actions/attach.py +0 -0
  43. {meerschaum-2.8.1 → meerschaum-2.8.3}/meerschaum/actions/bootstrap.py +0 -0
  44. {meerschaum-2.8.1 → meerschaum-2.8.3}/meerschaum/actions/clear.py +0 -0
  45. {meerschaum-2.8.1 → meerschaum-2.8.3}/meerschaum/actions/copy.py +0 -0
  46. {meerschaum-2.8.1 → meerschaum-2.8.3}/meerschaum/actions/deduplicate.py +0 -0
  47. {meerschaum-2.8.1 → meerschaum-2.8.3}/meerschaum/actions/delete.py +0 -0
  48. {meerschaum-2.8.1 → meerschaum-2.8.3}/meerschaum/actions/drop.py +0 -0
  49. {meerschaum-2.8.1 → meerschaum-2.8.3}/meerschaum/actions/edit.py +0 -0
  50. {meerschaum-2.8.1 → meerschaum-2.8.3}/meerschaum/actions/index.py +0 -0
  51. {meerschaum-2.8.1 → meerschaum-2.8.3}/meerschaum/actions/install.py +0 -0
  52. {meerschaum-2.8.1 → meerschaum-2.8.3}/meerschaum/actions/login.py +0 -0
  53. {meerschaum-2.8.1 → meerschaum-2.8.3}/meerschaum/actions/os.py +0 -0
  54. {meerschaum-2.8.1 → meerschaum-2.8.3}/meerschaum/actions/pause.py +0 -0
  55. {meerschaum-2.8.1 → meerschaum-2.8.3}/meerschaum/actions/python.py +0 -0
  56. {meerschaum-2.8.1 → meerschaum-2.8.3}/meerschaum/actions/register.py +0 -0
  57. {meerschaum-2.8.1 → meerschaum-2.8.3}/meerschaum/actions/reload.py +0 -0
  58. {meerschaum-2.8.1 → meerschaum-2.8.3}/meerschaum/actions/restart.py +0 -0
  59. {meerschaum-2.8.1 → meerschaum-2.8.3}/meerschaum/actions/setup.py +0 -0
  60. {meerschaum-2.8.1 → meerschaum-2.8.3}/meerschaum/actions/sh.py +0 -0
  61. {meerschaum-2.8.1 → meerschaum-2.8.3}/meerschaum/actions/show.py +0 -0
  62. {meerschaum-2.8.1 → meerschaum-2.8.3}/meerschaum/actions/sql.py +0 -0
  63. {meerschaum-2.8.1 → meerschaum-2.8.3}/meerschaum/actions/stack.py +0 -0
  64. {meerschaum-2.8.1 → meerschaum-2.8.3}/meerschaum/actions/start.py +0 -0
  65. {meerschaum-2.8.1 → meerschaum-2.8.3}/meerschaum/actions/stop.py +0 -0
  66. {meerschaum-2.8.1 → meerschaum-2.8.3}/meerschaum/actions/sync.py +0 -0
  67. {meerschaum-2.8.1 → meerschaum-2.8.3}/meerschaum/actions/tag.py +0 -0
  68. {meerschaum-2.8.1 → meerschaum-2.8.3}/meerschaum/actions/uninstall.py +0 -0
  69. {meerschaum-2.8.1 → meerschaum-2.8.3}/meerschaum/actions/upgrade.py +0 -0
  70. {meerschaum-2.8.1 → meerschaum-2.8.3}/meerschaum/actions/verify.py +0 -0
  71. {meerschaum-2.8.1 → meerschaum-2.8.3}/meerschaum/api/_chain.py +0 -0
  72. {meerschaum-2.8.1 → meerschaum-2.8.3}/meerschaum/api/_events.py +0 -0
  73. {meerschaum-2.8.1 → meerschaum-2.8.3}/meerschaum/api/_exceptions.py +0 -0
  74. {meerschaum-2.8.1 → meerschaum-2.8.3}/meerschaum/api/_oauth2.py +0 -0
  75. {meerschaum-2.8.1 → meerschaum-2.8.3}/meerschaum/api/_websockets.py +0 -0
  76. {meerschaum-2.8.1 → meerschaum-2.8.3}/meerschaum/api/dash/__init__.py +0 -0
  77. {meerschaum-2.8.1 → meerschaum-2.8.3}/meerschaum/api/dash/assets/__init__.py +0 -0
  78. {meerschaum-2.8.1 → meerschaum-2.8.3}/meerschaum/api/dash/assets/ansi_up.js +0 -0
  79. {meerschaum-2.8.1 → meerschaum-2.8.3}/meerschaum/api/dash/assets/banner_1920x320.png +0 -0
  80. {meerschaum-2.8.1 → meerschaum-2.8.3}/meerschaum/api/dash/assets/favicon.ico +0 -0
  81. {meerschaum-2.8.1 → meerschaum-2.8.3}/meerschaum/api/dash/assets/logo_48x48.png +0 -0
  82. {meerschaum-2.8.1 → meerschaum-2.8.3}/meerschaum/api/dash/assets/logo_500x500.png +0 -0
  83. {meerschaum-2.8.1 → meerschaum-2.8.3}/meerschaum/api/dash/callbacks/__init__.py +0 -0
  84. {meerschaum-2.8.1 → meerschaum-2.8.3}/meerschaum/api/dash/callbacks/custom.py +0 -0
  85. {meerschaum-2.8.1 → meerschaum-2.8.3}/meerschaum/api/dash/callbacks/dashboard.py +0 -0
  86. {meerschaum-2.8.1 → meerschaum-2.8.3}/meerschaum/api/dash/callbacks/jobs.py +0 -0
  87. {meerschaum-2.8.1 → meerschaum-2.8.3}/meerschaum/api/dash/callbacks/login.py +0 -0
  88. {meerschaum-2.8.1 → meerschaum-2.8.3}/meerschaum/api/dash/callbacks/pipes.py +0 -0
  89. {meerschaum-2.8.1 → meerschaum-2.8.3}/meerschaum/api/dash/callbacks/plugins.py +0 -0
  90. {meerschaum-2.8.1 → meerschaum-2.8.3}/meerschaum/api/dash/callbacks/register.py +0 -0
  91. {meerschaum-2.8.1 → meerschaum-2.8.3}/meerschaum/api/dash/components.py +0 -0
  92. {meerschaum-2.8.1 → meerschaum-2.8.3}/meerschaum/api/dash/connectors.py +0 -0
  93. {meerschaum-2.8.1 → meerschaum-2.8.3}/meerschaum/api/dash/graphs.py +0 -0
  94. {meerschaum-2.8.1 → meerschaum-2.8.3}/meerschaum/api/dash/jobs.py +0 -0
  95. {meerschaum-2.8.1 → meerschaum-2.8.3}/meerschaum/api/dash/keys.py +0 -0
  96. {meerschaum-2.8.1 → meerschaum-2.8.3}/meerschaum/api/dash/pages/__init__.py +0 -0
  97. {meerschaum-2.8.1 → meerschaum-2.8.3}/meerschaum/api/dash/pages/dashboard.py +0 -0
  98. {meerschaum-2.8.1 → meerschaum-2.8.3}/meerschaum/api/dash/pages/error.py +0 -0
  99. {meerschaum-2.8.1 → meerschaum-2.8.3}/meerschaum/api/dash/pages/job.py +0 -0
  100. {meerschaum-2.8.1 → meerschaum-2.8.3}/meerschaum/api/dash/pages/login.py +0 -0
  101. {meerschaum-2.8.1 → meerschaum-2.8.3}/meerschaum/api/dash/pages/pipes.py +0 -0
  102. {meerschaum-2.8.1 → meerschaum-2.8.3}/meerschaum/api/dash/pages/plugins.py +0 -0
  103. {meerschaum-2.8.1 → meerschaum-2.8.3}/meerschaum/api/dash/pages/register.py +0 -0
  104. {meerschaum-2.8.1 → meerschaum-2.8.3}/meerschaum/api/dash/pipes.py +0 -0
  105. {meerschaum-2.8.1 → meerschaum-2.8.3}/meerschaum/api/dash/plugins.py +0 -0
  106. {meerschaum-2.8.1 → meerschaum-2.8.3}/meerschaum/api/dash/sessions.py +0 -0
  107. {meerschaum-2.8.1 → meerschaum-2.8.3}/meerschaum/api/dash/sync.py +0 -0
  108. {meerschaum-2.8.1 → meerschaum-2.8.3}/meerschaum/api/dash/users.py +0 -0
  109. {meerschaum-2.8.1 → meerschaum-2.8.3}/meerschaum/api/dash/websockets.py +0 -0
  110. {meerschaum-2.8.1 → meerschaum-2.8.3}/meerschaum/api/dash/webterm.py +0 -0
  111. {meerschaum-2.8.1 → meerschaum-2.8.3}/meerschaum/api/models/__init__.py +0 -0
  112. {meerschaum-2.8.1 → meerschaum-2.8.3}/meerschaum/api/models/_interfaces.py +0 -0
  113. {meerschaum-2.8.1 → meerschaum-2.8.3}/meerschaum/api/models/_locations.py +0 -0
  114. {meerschaum-2.8.1 → meerschaum-2.8.3}/meerschaum/api/models/_metrics.py +0 -0
  115. {meerschaum-2.8.1 → meerschaum-2.8.3}/meerschaum/api/models/_pipes.py +0 -0
  116. {meerschaum-2.8.1 → meerschaum-2.8.3}/meerschaum/api/resources/__init__.py +0 -0
  117. {meerschaum-2.8.1 → meerschaum-2.8.3}/meerschaum/api/resources/static/__init__.py +0 -0
  118. {meerschaum-2.8.1 → meerschaum-2.8.3}/meerschaum/api/resources/static/css/__init__.py +0 -0
  119. {meerschaum-2.8.1 → meerschaum-2.8.3}/meerschaum/api/resources/static/css/bootstrap.min.css +0 -0
  120. {meerschaum-2.8.1 → meerschaum-2.8.3}/meerschaum/api/resources/static/css/dash.css +0 -0
  121. {meerschaum-2.8.1 → meerschaum-2.8.3}/meerschaum/api/resources/static/css/dbc_dark.css +0 -0
  122. {meerschaum-2.8.1 → meerschaum-2.8.3}/meerschaum/api/resources/static/css/styles.css +0 -0
  123. {meerschaum-2.8.1 → meerschaum-2.8.3}/meerschaum/api/resources/static/css/xterm.css +0 -0
  124. {meerschaum-2.8.1 → meerschaum-2.8.3}/meerschaum/api/resources/static/ico/__init__.py +0 -0
  125. {meerschaum-2.8.1 → meerschaum-2.8.3}/meerschaum/api/resources/static/ico/logo.ico +0 -0
  126. {meerschaum-2.8.1 → meerschaum-2.8.3}/meerschaum/api/resources/static/js/__init__.py +0 -0
  127. {meerschaum-2.8.1 → meerschaum-2.8.3}/meerschaum/api/resources/static/js/action_button.js +0 -0
  128. {meerschaum-2.8.1 → meerschaum-2.8.3}/meerschaum/api/resources/static/js/main.js +0 -0
  129. {meerschaum-2.8.1 → meerschaum-2.8.3}/meerschaum/api/resources/static/js/terminado.js +0 -0
  130. {meerschaum-2.8.1 → meerschaum-2.8.3}/meerschaum/api/resources/static/js/xterm.js +0 -0
  131. {meerschaum-2.8.1 → meerschaum-2.8.3}/meerschaum/api/resources/static/png/__init__.py +0 -0
  132. {meerschaum-2.8.1 → meerschaum-2.8.3}/meerschaum/api/resources/templates/__init__.py +0 -0
  133. {meerschaum-2.8.1 → meerschaum-2.8.3}/meerschaum/api/resources/templates/index.html +0 -0
  134. {meerschaum-2.8.1 → meerschaum-2.8.3}/meerschaum/api/resources/templates/old_index.html +0 -0
  135. {meerschaum-2.8.1 → meerschaum-2.8.3}/meerschaum/api/resources/templates/secret.html +0 -0
  136. {meerschaum-2.8.1 → meerschaum-2.8.3}/meerschaum/api/resources/templates/termpage.html +0 -0
  137. {meerschaum-2.8.1 → meerschaum-2.8.3}/meerschaum/api/routes/__init__.py +0 -0
  138. {meerschaum-2.8.1 → meerschaum-2.8.3}/meerschaum/api/routes/_actions.py +0 -0
  139. {meerschaum-2.8.1 → meerschaum-2.8.3}/meerschaum/api/routes/_connectors.py +0 -0
  140. {meerschaum-2.8.1 → meerschaum-2.8.3}/meerschaum/api/routes/_index.py +0 -0
  141. {meerschaum-2.8.1 → meerschaum-2.8.3}/meerschaum/api/routes/_jobs.py +0 -0
  142. {meerschaum-2.8.1 → meerschaum-2.8.3}/meerschaum/api/routes/_login.py +0 -0
  143. {meerschaum-2.8.1 → meerschaum-2.8.3}/meerschaum/api/routes/_misc.py +0 -0
  144. {meerschaum-2.8.1 → meerschaum-2.8.3}/meerschaum/api/routes/_plugins.py +0 -0
  145. {meerschaum-2.8.1 → meerschaum-2.8.3}/meerschaum/api/routes/_users.py +0 -0
  146. {meerschaum-2.8.1 → meerschaum-2.8.3}/meerschaum/api/routes/_version.py +0 -0
  147. {meerschaum-2.8.1 → meerschaum-2.8.3}/meerschaum/api/routes/_webterm.py +0 -0
  148. {meerschaum-2.8.1 → meerschaum-2.8.3}/meerschaum/api/tables/__init__.py +0 -0
  149. {meerschaum-2.8.1 → meerschaum-2.8.3}/meerschaum/config/__init__.py +0 -0
  150. {meerschaum-2.8.1 → meerschaum-2.8.3}/meerschaum/config/_dash.py +0 -0
  151. {meerschaum-2.8.1 → meerschaum-2.8.3}/meerschaum/config/_edit.py +0 -0
  152. {meerschaum-2.8.1 → meerschaum-2.8.3}/meerschaum/config/_environment.py +0 -0
  153. {meerschaum-2.8.1 → meerschaum-2.8.3}/meerschaum/config/_formatting.py +0 -0
  154. {meerschaum-2.8.1 → meerschaum-2.8.3}/meerschaum/config/_jobs.py +0 -0
  155. {meerschaum-2.8.1 → meerschaum-2.8.3}/meerschaum/config/_patch.py +0 -0
  156. {meerschaum-2.8.1 → meerschaum-2.8.3}/meerschaum/config/_paths.py +0 -0
  157. {meerschaum-2.8.1 → meerschaum-2.8.3}/meerschaum/config/_preprocess.py +0 -0
  158. {meerschaum-2.8.1 → meerschaum-2.8.3}/meerschaum/config/_read_config.py +0 -0
  159. {meerschaum-2.8.1 → meerschaum-2.8.3}/meerschaum/config/_shell.py +0 -0
  160. {meerschaum-2.8.1 → meerschaum-2.8.3}/meerschaum/config/_sync.py +0 -0
  161. {meerschaum-2.8.1 → meerschaum-2.8.3}/meerschaum/config/paths.py +0 -0
  162. {meerschaum-2.8.1 → meerschaum-2.8.3}/meerschaum/config/resources/__init__.py +0 -0
  163. {meerschaum-2.8.1 → meerschaum-2.8.3}/meerschaum/config/stack/__init__.py +0 -0
  164. {meerschaum-2.8.1 → meerschaum-2.8.3}/meerschaum/config/stack/grafana/__init__.py +0 -0
  165. {meerschaum-2.8.1 → meerschaum-2.8.3}/meerschaum/config/stack/mosquitto/__init__.py +0 -0
  166. {meerschaum-2.8.1 → meerschaum-2.8.3}/meerschaum/config/stack/mosquitto/resources/__init__.py +0 -0
  167. {meerschaum-2.8.1 → meerschaum-2.8.3}/meerschaum/config/stack/resources/__init__.py +0 -0
  168. {meerschaum-2.8.1 → meerschaum-2.8.3}/meerschaum/connectors/_Connector.py +0 -0
  169. {meerschaum-2.8.1 → meerschaum-2.8.3}/meerschaum/connectors/__init__.py +0 -0
  170. {meerschaum-2.8.1 → meerschaum-2.8.3}/meerschaum/connectors/api/_APIConnector.py +0 -0
  171. {meerschaum-2.8.1 → meerschaum-2.8.3}/meerschaum/connectors/api/__init__.py +0 -0
  172. {meerschaum-2.8.1 → meerschaum-2.8.3}/meerschaum/connectors/api/_actions.py +0 -0
  173. {meerschaum-2.8.1 → meerschaum-2.8.3}/meerschaum/connectors/api/_fetch.py +0 -0
  174. {meerschaum-2.8.1 → meerschaum-2.8.3}/meerschaum/connectors/api/_jobs.py +0 -0
  175. {meerschaum-2.8.1 → meerschaum-2.8.3}/meerschaum/connectors/api/_login.py +0 -0
  176. {meerschaum-2.8.1 → meerschaum-2.8.3}/meerschaum/connectors/api/_misc.py +0 -0
  177. {meerschaum-2.8.1 → meerschaum-2.8.3}/meerschaum/connectors/api/_pipes.py +0 -0
  178. {meerschaum-2.8.1 → meerschaum-2.8.3}/meerschaum/connectors/api/_plugins.py +0 -0
  179. {meerschaum-2.8.1 → meerschaum-2.8.3}/meerschaum/connectors/api/_request.py +0 -0
  180. {meerschaum-2.8.1 → meerschaum-2.8.3}/meerschaum/connectors/api/_uri.py +0 -0
  181. {meerschaum-2.8.1 → meerschaum-2.8.3}/meerschaum/connectors/api/_users.py +0 -0
  182. {meerschaum-2.8.1 → meerschaum-2.8.3}/meerschaum/connectors/parse.py +0 -0
  183. {meerschaum-2.8.1 → meerschaum-2.8.3}/meerschaum/connectors/plugin/PluginConnector.py +0 -0
  184. {meerschaum-2.8.1 → meerschaum-2.8.3}/meerschaum/connectors/plugin/__init__.py +0 -0
  185. {meerschaum-2.8.1 → meerschaum-2.8.3}/meerschaum/connectors/poll.py +0 -0
  186. {meerschaum-2.8.1 → meerschaum-2.8.3}/meerschaum/connectors/sql/_SQLConnector.py +0 -0
  187. {meerschaum-2.8.1 → meerschaum-2.8.3}/meerschaum/connectors/sql/__init__.py +0 -0
  188. {meerschaum-2.8.1 → meerschaum-2.8.3}/meerschaum/connectors/sql/_fetch.py +0 -0
  189. {meerschaum-2.8.1 → meerschaum-2.8.3}/meerschaum/connectors/sql/_instance.py +0 -0
  190. {meerschaum-2.8.1 → meerschaum-2.8.3}/meerschaum/connectors/sql/_pipes.py +0 -0
  191. {meerschaum-2.8.1 → meerschaum-2.8.3}/meerschaum/connectors/sql/_plugins.py +0 -0
  192. {meerschaum-2.8.1 → meerschaum-2.8.3}/meerschaum/connectors/sql/_sql.py +0 -0
  193. {meerschaum-2.8.1 → meerschaum-2.8.3}/meerschaum/connectors/sql/_uri.py +0 -0
  194. {meerschaum-2.8.1 → meerschaum-2.8.3}/meerschaum/connectors/sql/tables/__init__.py +0 -0
  195. {meerschaum-2.8.1 → meerschaum-2.8.3}/meerschaum/connectors/sql/tables/types.py +0 -0
  196. {meerschaum-2.8.1 → meerschaum-2.8.3}/meerschaum/connectors/sql/tools.py +0 -0
  197. {meerschaum-2.8.1 → meerschaum-2.8.3}/meerschaum/connectors/valkey/_ValkeyConnector.py +0 -0
  198. {meerschaum-2.8.1 → meerschaum-2.8.3}/meerschaum/connectors/valkey/__init__.py +0 -0
  199. {meerschaum-2.8.1 → meerschaum-2.8.3}/meerschaum/connectors/valkey/_fetch.py +0 -0
  200. {meerschaum-2.8.1 → meerschaum-2.8.3}/meerschaum/connectors/valkey/_pipes.py +0 -0
  201. {meerschaum-2.8.1 → meerschaum-2.8.3}/meerschaum/connectors/valkey/_plugins.py +0 -0
  202. {meerschaum-2.8.1 → meerschaum-2.8.3}/meerschaum/connectors/valkey/_users.py +0 -0
  203. {meerschaum-2.8.1 → meerschaum-2.8.3}/meerschaum/core/Pipe/__init__.py +0 -0
  204. {meerschaum-2.8.1 → meerschaum-2.8.3}/meerschaum/core/Pipe/_attributes.py +0 -0
  205. {meerschaum-2.8.1 → meerschaum-2.8.3}/meerschaum/core/Pipe/_bootstrap.py +0 -0
  206. {meerschaum-2.8.1 → meerschaum-2.8.3}/meerschaum/core/Pipe/_clear.py +0 -0
  207. {meerschaum-2.8.1 → meerschaum-2.8.3}/meerschaum/core/Pipe/_copy.py +0 -0
  208. {meerschaum-2.8.1 → meerschaum-2.8.3}/meerschaum/core/Pipe/_data.py +0 -0
  209. {meerschaum-2.8.1 → meerschaum-2.8.3}/meerschaum/core/Pipe/_deduplicate.py +0 -0
  210. {meerschaum-2.8.1 → meerschaum-2.8.3}/meerschaum/core/Pipe/_delete.py +0 -0
  211. {meerschaum-2.8.1 → meerschaum-2.8.3}/meerschaum/core/Pipe/_drop.py +0 -0
  212. {meerschaum-2.8.1 → meerschaum-2.8.3}/meerschaum/core/Pipe/_dtypes.py +0 -0
  213. {meerschaum-2.8.1 → meerschaum-2.8.3}/meerschaum/core/Pipe/_edit.py +0 -0
  214. {meerschaum-2.8.1 → meerschaum-2.8.3}/meerschaum/core/Pipe/_fetch.py +0 -0
  215. {meerschaum-2.8.1 → meerschaum-2.8.3}/meerschaum/core/Pipe/_index.py +0 -0
  216. {meerschaum-2.8.1 → meerschaum-2.8.3}/meerschaum/core/Pipe/_register.py +0 -0
  217. {meerschaum-2.8.1 → meerschaum-2.8.3}/meerschaum/core/Pipe/_show.py +0 -0
  218. {meerschaum-2.8.1 → meerschaum-2.8.3}/meerschaum/core/Pipe/_sync.py +0 -0
  219. {meerschaum-2.8.1 → meerschaum-2.8.3}/meerschaum/core/Plugin/__init__.py +0 -0
  220. {meerschaum-2.8.1 → meerschaum-2.8.3}/meerschaum/core/User/_User.py +0 -0
  221. {meerschaum-2.8.1 → meerschaum-2.8.3}/meerschaum/core/User/__init__.py +0 -0
  222. {meerschaum-2.8.1 → meerschaum-2.8.3}/meerschaum/core/__init__.py +0 -0
  223. {meerschaum-2.8.1 → meerschaum-2.8.3}/meerschaum/jobs/_Executor.py +0 -0
  224. {meerschaum-2.8.1 → meerschaum-2.8.3}/meerschaum/jobs/__init__.py +0 -0
  225. {meerschaum-2.8.1 → meerschaum-2.8.3}/meerschaum/jobs/systemd.py +0 -0
  226. {meerschaum-2.8.1 → meerschaum-2.8.3}/meerschaum/plugins/_Plugin.py +0 -0
  227. {meerschaum-2.8.1 → meerschaum-2.8.3}/meerschaum/plugins/__init__.py +0 -0
  228. {meerschaum-2.8.1 → meerschaum-2.8.3}/meerschaum/plugins/bootstrap.py +0 -0
  229. {meerschaum-2.8.1 → meerschaum-2.8.3}/meerschaum/utils/__init__.py +0 -0
  230. {meerschaum-2.8.1 → meerschaum-2.8.3}/meerschaum/utils/_get_pipes.py +0 -0
  231. {meerschaum-2.8.1 → meerschaum-2.8.3}/meerschaum/utils/daemon/Daemon.py +0 -0
  232. {meerschaum-2.8.1 → meerschaum-2.8.3}/meerschaum/utils/daemon/FileDescriptorInterceptor.py +0 -0
  233. {meerschaum-2.8.1 → meerschaum-2.8.3}/meerschaum/utils/daemon/RotatingFile.py +0 -0
  234. {meerschaum-2.8.1 → meerschaum-2.8.3}/meerschaum/utils/daemon/StdinFile.py +0 -0
  235. {meerschaum-2.8.1 → meerschaum-2.8.3}/meerschaum/utils/daemon/__init__.py +0 -0
  236. {meerschaum-2.8.1 → meerschaum-2.8.3}/meerschaum/utils/daemon/_names.py +0 -0
  237. {meerschaum-2.8.1 → meerschaum-2.8.3}/meerschaum/utils/debug.py +0 -0
  238. {meerschaum-2.8.1 → meerschaum-2.8.3}/meerschaum/utils/dtypes/__init__.py +0 -0
  239. {meerschaum-2.8.1 → meerschaum-2.8.3}/meerschaum/utils/dtypes/sql.py +0 -0
  240. {meerschaum-2.8.1 → meerschaum-2.8.3}/meerschaum/utils/formatting/__init__.py +0 -0
  241. {meerschaum-2.8.1 → meerschaum-2.8.3}/meerschaum/utils/formatting/_jobs.py +0 -0
  242. {meerschaum-2.8.1 → meerschaum-2.8.3}/meerschaum/utils/formatting/_pipes.py +0 -0
  243. {meerschaum-2.8.1 → meerschaum-2.8.3}/meerschaum/utils/formatting/_pprint.py +0 -0
  244. {meerschaum-2.8.1 → meerschaum-2.8.3}/meerschaum/utils/formatting/_shell.py +0 -0
  245. {meerschaum-2.8.1 → meerschaum-2.8.3}/meerschaum/utils/interactive.py +0 -0
  246. {meerschaum-2.8.1 → meerschaum-2.8.3}/meerschaum/utils/misc.py +0 -0
  247. {meerschaum-2.8.1 → meerschaum-2.8.3}/meerschaum/utils/networking.py +0 -0
  248. {meerschaum-2.8.1 → meerschaum-2.8.3}/meerschaum/utils/packages/__init__.py +0 -0
  249. {meerschaum-2.8.1 → meerschaum-2.8.3}/meerschaum/utils/packages/_packages.py +0 -0
  250. {meerschaum-2.8.1 → meerschaum-2.8.3}/meerschaum/utils/packages/lazy_loader.py +0 -0
  251. {meerschaum-2.8.1 → meerschaum-2.8.3}/meerschaum/utils/pool.py +0 -0
  252. {meerschaum-2.8.1 → meerschaum-2.8.3}/meerschaum/utils/process.py +0 -0
  253. {meerschaum-2.8.1 → meerschaum-2.8.3}/meerschaum/utils/prompt.py +0 -0
  254. {meerschaum-2.8.1 → meerschaum-2.8.3}/meerschaum/utils/schedule.py +0 -0
  255. {meerschaum-2.8.1 → meerschaum-2.8.3}/meerschaum/utils/sql.py +0 -0
  256. {meerschaum-2.8.1 → meerschaum-2.8.3}/meerschaum/utils/threading.py +0 -0
  257. {meerschaum-2.8.1 → meerschaum-2.8.3}/meerschaum/utils/typing.py +0 -0
  258. {meerschaum-2.8.1 → meerschaum-2.8.3}/meerschaum/utils/venv/_Venv.py +0 -0
  259. {meerschaum-2.8.1 → meerschaum-2.8.3}/meerschaum/utils/venv/__init__.py +0 -0
  260. {meerschaum-2.8.1 → meerschaum-2.8.3}/meerschaum/utils/warnings.py +0 -0
  261. {meerschaum-2.8.1 → meerschaum-2.8.3}/meerschaum/utils/yaml.py +0 -0
  262. {meerschaum-2.8.1 → meerschaum-2.8.3}/meerschaum.egg-info/SOURCES.txt +0 -0
  263. {meerschaum-2.8.1 → meerschaum-2.8.3}/meerschaum.egg-info/dependency_links.txt +0 -0
  264. {meerschaum-2.8.1 → meerschaum-2.8.3}/meerschaum.egg-info/entry_points.txt +0 -0
  265. {meerschaum-2.8.1 → meerschaum-2.8.3}/meerschaum.egg-info/requires.txt +0 -0
  266. {meerschaum-2.8.1 → meerschaum-2.8.3}/meerschaum.egg-info/top_level.txt +0 -0
  267. {meerschaum-2.8.1 → meerschaum-2.8.3}/meerschaum.egg-info/zip-safe +0 -0
  268. {meerschaum-2.8.1 → meerschaum-2.8.3}/setup.cfg +0 -0
  269. {meerschaum-2.8.1 → meerschaum-2.8.3}/setup.py +0 -0
  270. {meerschaum-2.8.1 → meerschaum-2.8.3}/tests/test_actions.py +0 -0
  271. {meerschaum-2.8.1 → meerschaum-2.8.3}/tests/test_arguments.py +0 -0
  272. {meerschaum-2.8.1 → meerschaum-2.8.3}/tests/test_deduplicate.py +0 -0
  273. {meerschaum-2.8.1 → meerschaum-2.8.3}/tests/test_jobs.py +0 -0
  274. {meerschaum-2.8.1 → meerschaum-2.8.3}/tests/test_pipe_data.py +0 -0
  275. {meerschaum-2.8.1 → meerschaum-2.8.3}/tests/test_pipes_dtypes.py +0 -0
  276. {meerschaum-2.8.1 → meerschaum-2.8.3}/tests/test_sql.py +0 -0
  277. {meerschaum-2.8.1 → meerschaum-2.8.3}/tests/test_sync.py +0 -0
  278. {meerschaum-2.8.1 → meerschaum-2.8.3}/tests/test_users.py +0 -0
  279. {meerschaum-2.8.1 → meerschaum-2.8.3}/tests/test_verify.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.2
2
2
  Name: meerschaum
3
- Version: 2.8.1
3
+ Version: 2.8.3
4
4
  Summary: Sync Time-Series Pipes with Meerschaum
5
5
  Home-page: https://meerschaum.io
6
6
  Author: Bennett Meares
@@ -21,6 +21,7 @@ from meerschaum.plugins import _api_plugins
21
21
  from meerschaum.utils.warnings import warn, dprint
22
22
  from meerschaum.utils.threading import RLock
23
23
  from meerschaum.utils.misc import is_pipe_registered
24
+ from meerschaum.connectors.parse import parse_instance_keys
24
25
 
25
26
  from meerschaum import __version__ as version
26
27
  __version__ = version
@@ -99,7 +100,6 @@ production = get_uvicorn_config().get('production', False)
99
100
  _include_dash = (not no_dash)
100
101
  docs_enabled = not production or sys_config.get('endpoints', {}).get('docs_in_production', True)
101
102
 
102
- connector = None
103
103
  default_instance_keys = None
104
104
  _instance_connectors = defaultdict(lambda: None)
105
105
  def get_api_connector(instance_keys: Optional[str] = None):
@@ -130,12 +130,19 @@ def get_api_connector(instance_keys: Optional[str] = None):
130
130
  )
131
131
 
132
132
  with _locks[f'instance-{instance_keys}']:
133
- connector = _instance_connectors[instance_keys]
134
- if connector is None:
135
- from meerschaum.connectors.parse import parse_instance_keys
136
- connector = parse_instance_keys(instance_keys, debug=debug)
137
- _instance_connectors[instance_keys] = connector
138
- return connector
133
+ if _instance_connectors[instance_keys] is None:
134
+ try:
135
+ is_valid_connector = True
136
+ _instance_connectors[instance_keys] = parse_instance_keys(instance_keys, debug=debug)
137
+ except Exception:
138
+ is_valid_connector = False
139
+
140
+ if not is_valid_connector:
141
+ raise fastapi.HTTPException(
142
+ status_code=422,
143
+ detail="Invalid instance keys.",
144
+ )
145
+ return _instance_connectors[instance_keys]
139
146
 
140
147
 
141
148
  cache_connector = None
@@ -164,7 +171,6 @@ def get_cache_connector(connector_keys: Optional[str] = None):
164
171
  return None
165
172
 
166
173
  if cache_connector is None:
167
- from meerschaum.connectors.parse import parse_instance_keys
168
174
  cache_connector = parse_instance_keys(connector_keys)
169
175
 
170
176
  if debug:
@@ -311,7 +311,7 @@ def get_sync_time(
311
311
  newest: bool = True,
312
312
  remote: bool = False,
313
313
  round_down: bool = True,
314
- debug: bool = False,
314
+ instance_keys: Optional[str] = None,
315
315
  curr_user = (
316
316
  fastapi.Depends(manager) if not no_auth else None
317
317
  ),
@@ -322,12 +322,11 @@ def get_sync_time(
322
322
  """
323
323
  if location_key == '[None]':
324
324
  location_key = None
325
- pipe = get_pipe(connector_keys, metric_key, location_key)
325
+ pipe = get_pipe(connector_keys, metric_key, location_key, instance_keys)
326
326
  sync_time = pipe.get_sync_time(
327
- params = params,
328
- newest = newest,
329
- debug = debug,
330
- round_down = round_down,
327
+ params=params,
328
+ newest=newest,
329
+ round_down=round_down,
331
330
  )
332
331
  if isinstance(sync_time, datetime):
333
332
  sync_time = sync_time.isoformat()
@@ -339,7 +338,8 @@ def sync_pipe(
339
338
  connector_keys: str,
340
339
  metric_key: str,
341
340
  location_key: str,
342
- data: dict = None,
341
+ data: Union[List[Dict[Any, Any]], Dict[Any, Any]],
342
+ instance_keys: Optional[str] = None,
343
343
  check_existing: bool = True,
344
344
  blocking: bool = True,
345
345
  force: bool = False,
@@ -354,9 +354,9 @@ def sync_pipe(
354
354
  Add data to an existing Pipe.
355
355
  See [`meerschaum.Pipe.sync`](https://docs.meerschaum.io/meerschaum.html#Pipe.sync).
356
356
  """
357
- if data is None:
358
- data = {}
359
- pipe = get_pipe(connector_keys, metric_key, location_key)
357
+ if not data:
358
+ return [True, "No data to sync."]
359
+ pipe = get_pipe(connector_keys, metric_key, location_key, instance_keys)
360
360
  if pipe.target in ('mrsm_users', 'mrsm_plugins', 'mrsm_pipes'):
361
361
  raise fastapi.HTTPException(
362
362
  status_code=409,
@@ -365,21 +365,16 @@ def sync_pipe(
365
365
 
366
366
  if not pipe.columns and columns is not None:
367
367
  pipe.columns = json.loads(columns)
368
- if not pipe.columns and not is_pipe_registered(pipe, pipes(refresh=True)):
369
- raise fastapi.HTTPException(
370
- status_code=409,
371
- detail="Pipe must be registered with index columns specified."
372
- )
373
368
 
374
- result = list(pipe.sync(
369
+ success, msg = pipe.sync(
375
370
  data,
376
371
  debug=debug,
377
372
  check_existing=check_existing,
378
373
  blocking=blocking,
379
374
  force=force,
380
375
  workers=workers,
381
- ))
382
- return result
376
+ )
377
+ return list((success, msg))
383
378
 
384
379
 
385
380
  @app.get(pipes_endpoint + '/{connector_keys}/{metric_key}/{location_key}/data', tags=['Pipes'])
@@ -543,7 +538,7 @@ def get_pipe_csv(
543
538
  if not is_pipe_registered(pipe, pipes(instance_keys, refresh=True)):
544
539
  raise fastapi.HTTPException(
545
540
  status_code=409,
546
- detail="Pipe must be registered with the datetime column specified."
541
+ detail="Pipe must be registered."
547
542
  )
548
543
 
549
544
  dt_col = pipe.columns.get('datetime', None)
@@ -173,6 +173,9 @@ default_pipes_config = {
173
173
  'sync': {
174
174
  'filter_params_index_limit': 250,
175
175
  },
176
+ 'verify': {
177
+ 'max_chunks_syncs': 3,
178
+ },
176
179
  }
177
180
  default_plugins_config = {}
178
181
  default_experimental_config = {
@@ -2,4 +2,4 @@
2
2
  Specify the Meerschaum release version.
3
3
  """
4
4
 
5
- __version__ = "2.8.1"
5
+ __version__ = "2.8.3"
@@ -137,7 +137,7 @@ STATIC_CONFIG: Dict[str, Any] = {
137
137
  'pbkdf2_sha256__default_rounds': 1_000_000,
138
138
  },
139
139
  'min_username_length': 1,
140
- 'max_username_length': 26,
140
+ 'max_username_length': 60,
141
141
  'min_password_length': 5,
142
142
  },
143
143
  'plugins': {
@@ -100,7 +100,13 @@ def _cli_exit(
100
100
  ### yet defined (e.g. 'sql:local').
101
101
  cli_arg_str = self.DATABASE_URL
102
102
  if self.flavor in ('sqlite', 'duckdb'):
103
- cli_arg_str = str(self.database)
103
+ cli_arg_str = (
104
+ str(self.database)
105
+ if 'database' in self.__dict__
106
+ else self.parse_uri(self.URI).get('database', None)
107
+ )
108
+ if not cli_arg_str:
109
+ raise ValueError(f"Cannot determine database from connector '{self}'.")
104
110
  if cli_arg_str.startswith('postgresql+psycopg://'):
105
111
  cli_arg_str = cli_arg_str.replace('postgresql+psycopg://', 'postgresql://')
106
112
 
@@ -256,8 +256,11 @@ def create_engine(
256
256
  ) if not _uri else _uri
257
257
 
258
258
  ### Sometimes the timescaledb:// flavor can slip in.
259
- if _uri and self.flavor in ('timescaledb',) and self.flavor in _uri:
260
- engine_str = engine_str.replace(f'{self.flavor}', 'postgresql', 1)
259
+ if _uri and self.flavor in _uri:
260
+ if self.flavor == 'timescaledb':
261
+ engine_str = engine_str.replace(f'{self.flavor}', 'postgresql', 1)
262
+ elif _uri.startswith('postgresql://'):
263
+ engine_str = engine_str.replace('postgresql://', 'postgresql+psycopg2://')
261
264
 
262
265
  if debug:
263
266
  dprint(
@@ -303,7 +306,7 @@ def create_engine(
303
306
  echo = debug,
304
307
  **_create_engine_args
305
308
  )
306
- except Exception as e:
309
+ except Exception:
307
310
  warn(f"Failed to create connector '{self}':\n{traceback.format_exc()}", stack=False)
308
311
  engine = None
309
312
 
@@ -43,7 +43,9 @@ def register_user(
43
43
  'password_hash': user.password_hash,
44
44
  'user_type': user.type,
45
45
  'attributes': (
46
- json.dumps(user.attributes) if self.flavor not in json_flavors else user.attributes
46
+ json.dumps(user.attributes)
47
+ if self.flavor not in json_flavors
48
+ else user.attributes
47
49
  ),
48
50
  }
49
51
  if old_id is not None:
@@ -109,7 +111,7 @@ def edit_user(
109
111
  user_id = user.user_id if user.user_id is not None else self.get_user_id(user, debug=debug)
110
112
  if user_id is None:
111
113
  return False, (
112
- f"User '{user.username}' does not exist. " +
114
+ f"User '{user.username}' does not exist. "
113
115
  f"Register user '{user.username}' before editing."
114
116
  )
115
117
  user.user_id = user_id
@@ -7,6 +7,7 @@ Verify the contents of a pipe by resyncing its interval.
7
7
  """
8
8
 
9
9
  from datetime import datetime, timedelta
10
+ import time
10
11
 
11
12
  import meerschaum as mrsm
12
13
  from meerschaum.utils.typing import SuccessTuple, Any, Optional, Union, Tuple, Dict
@@ -183,6 +184,7 @@ def verify(
183
184
  )
184
185
  )
185
186
  message_header = f"{begin_to_print} - {end_to_print}"
187
+ max_chunks_syncs = mrsm.get_config('pipes', 'verify', 'max_chunks_syncs')
186
188
 
187
189
  info(
188
190
  f"Verifying {self}:\n Syncing {len(chunk_bounds)} chunk"
@@ -219,9 +221,9 @@ def verify(
219
221
  debug=debug,
220
222
  )
221
223
  checked_rows_str = (
222
- f"checked {existing_rowcount} row"
224
+ f"checked {existing_rowcount:,} row"
223
225
  + ("s" if existing_rowcount != 1 else '')
224
- + f" vs {remote_rowcount} remote"
226
+ + f" vs {remote_rowcount:,} remote"
225
227
  )
226
228
  if (
227
229
  existing_rowcount is not None
@@ -239,19 +241,26 @@ def verify(
239
241
  f"Row-counts are out-of-sync ({checked_rows_str})."
240
242
  )
241
243
 
242
- chunk_success, chunk_msg = self.sync(
243
- begin=chunk_begin,
244
- end=chunk_end,
245
- params=params,
246
- workers=_workers,
247
- debug=debug,
248
- **kwargs
249
- ) if do_sync else (chunk_success, chunk_msg)
244
+ num_syncs = 0
245
+ while num_syncs < max_chunks_syncs:
246
+ chunk_success, chunk_msg = self.sync(
247
+ begin=chunk_begin,
248
+ end=chunk_end,
249
+ params=params,
250
+ workers=_workers,
251
+ debug=debug,
252
+ **kwargs
253
+ ) if do_sync else (chunk_success, chunk_msg)
254
+ if chunk_success:
255
+ break
256
+ num_syncs += 1
257
+ time.sleep(num_syncs**2)
250
258
  chunk_msg = chunk_msg.strip()
251
259
  if ' - ' not in chunk_msg:
252
260
  chunk_label = f"{chunk_begin} - {chunk_end}"
253
261
  chunk_msg = f'Verified chunk for {self}:\n{chunk_label}\n{chunk_msg}'
254
262
  mrsm.pprint((chunk_success, chunk_msg))
263
+
255
264
  return chunk_begin_and_end, (chunk_success, chunk_msg)
256
265
 
257
266
  ### If we have more than one chunk, attempt to sync the first one and return if its fails.
@@ -30,7 +30,7 @@ if TYPE_CHECKING:
30
30
  from meerschaum.jobs._Executor import Executor
31
31
 
32
32
  BANNED_CHARS: List[str] = [
33
- ',', ';', "'", '"', '.', '$', '#', '=', '*', '&', '!', '`', '~',
33
+ ',', ';', "'", '"', '$', '#', '=', '*', '&', '!', '`', '~',
34
34
  ]
35
35
  RESTART_FLAGS: List[str] = [
36
36
  '-s',
@@ -222,7 +222,7 @@ def filter_unseen_df(
222
222
  numeric_cols_precisions_scales = {
223
223
  col: get_numeric_precision_scale(None, typ)
224
224
  for col, typ in dtypes.items()
225
- if col and typ and typ.startswith('numeric')
225
+ if col and str(typ).lower().startswith('numeric')
226
226
  }
227
227
 
228
228
  dt_dtypes = {
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.2
2
2
  Name: meerschaum
3
- Version: 2.8.1
3
+ Version: 2.8.3
4
4
  Summary: Sync Time-Series Pipes with Meerschaum
5
5
  Home-page: https://meerschaum.io
6
6
  Author: Bennett Meares
File without changes
File without changes
File without changes