meerschaum 2.9.4__tar.gz → 2.9.5__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 (278) hide show
  1. {meerschaum-2.9.4 → meerschaum-2.9.5}/PKG-INFO +1 -1
  2. {meerschaum-2.9.4 → meerschaum-2.9.5}/meerschaum/api/dash/callbacks/dashboard.py +31 -0
  3. {meerschaum-2.9.4 → meerschaum-2.9.5}/meerschaum/api/dash/pipes.py +63 -0
  4. {meerschaum-2.9.4 → meerschaum-2.9.5}/meerschaum/api/resources/static/css/dash.css +16 -0
  5. {meerschaum-2.9.4 → meerschaum-2.9.5}/meerschaum/config/_version.py +1 -1
  6. {meerschaum-2.9.4 → meerschaum-2.9.5}/meerschaum/connectors/sql/_sql.py +1 -1
  7. {meerschaum-2.9.4 → meerschaum-2.9.5}/meerschaum/utils/dataframe.py +2 -2
  8. {meerschaum-2.9.4 → meerschaum-2.9.5}/meerschaum/utils/dtypes/__init__.py +2 -3
  9. {meerschaum-2.9.4 → meerschaum-2.9.5}/meerschaum/utils/sql.py +1 -2
  10. {meerschaum-2.9.4 → meerschaum-2.9.5}/meerschaum.egg-info/PKG-INFO +1 -1
  11. {meerschaum-2.9.4 → meerschaum-2.9.5}/tests/test_sync.py +13 -8
  12. {meerschaum-2.9.4 → meerschaum-2.9.5}/LICENSE +0 -0
  13. {meerschaum-2.9.4 → meerschaum-2.9.5}/README.md +0 -0
  14. {meerschaum-2.9.4 → meerschaum-2.9.5}/meerschaum/__init__.py +0 -0
  15. {meerschaum-2.9.4 → meerschaum-2.9.5}/meerschaum/__main__.py +0 -0
  16. {meerschaum-2.9.4 → meerschaum-2.9.5}/meerschaum/_internal/__init__.py +0 -0
  17. {meerschaum-2.9.4 → meerschaum-2.9.5}/meerschaum/_internal/arguments/__init__.py +0 -0
  18. {meerschaum-2.9.4 → meerschaum-2.9.5}/meerschaum/_internal/arguments/_parse_arguments.py +0 -0
  19. {meerschaum-2.9.4 → meerschaum-2.9.5}/meerschaum/_internal/arguments/_parser.py +0 -0
  20. {meerschaum-2.9.4 → meerschaum-2.9.5}/meerschaum/_internal/docs/__init__.py +0 -0
  21. {meerschaum-2.9.4 → meerschaum-2.9.5}/meerschaum/_internal/docs/index.py +0 -0
  22. {meerschaum-2.9.4 → meerschaum-2.9.5}/meerschaum/_internal/entry.py +0 -0
  23. {meerschaum-2.9.4 → meerschaum-2.9.5}/meerschaum/_internal/shell/Shell.py +0 -0
  24. {meerschaum-2.9.4 → meerschaum-2.9.5}/meerschaum/_internal/shell/ShellCompleter.py +0 -0
  25. {meerschaum-2.9.4 → meerschaum-2.9.5}/meerschaum/_internal/shell/ValidAutoSuggest.py +0 -0
  26. {meerschaum-2.9.4 → meerschaum-2.9.5}/meerschaum/_internal/shell/__init__.py +0 -0
  27. {meerschaum-2.9.4 → meerschaum-2.9.5}/meerschaum/_internal/shell/resources/__init__.py +0 -0
  28. {meerschaum-2.9.4 → meerschaum-2.9.5}/meerschaum/_internal/shell/updates.py +0 -0
  29. {meerschaum-2.9.4 → meerschaum-2.9.5}/meerschaum/_internal/term/TermPageHandler.py +0 -0
  30. {meerschaum-2.9.4 → meerschaum-2.9.5}/meerschaum/_internal/term/__init__.py +0 -0
  31. {meerschaum-2.9.4 → meerschaum-2.9.5}/meerschaum/_internal/term/tools.py +0 -0
  32. {meerschaum-2.9.4 → meerschaum-2.9.5}/meerschaum/actions/__init__.py +0 -0
  33. {meerschaum-2.9.4 → meerschaum-2.9.5}/meerschaum/actions/api.py +0 -0
  34. {meerschaum-2.9.4 → meerschaum-2.9.5}/meerschaum/actions/attach.py +0 -0
  35. {meerschaum-2.9.4 → meerschaum-2.9.5}/meerschaum/actions/bootstrap.py +0 -0
  36. {meerschaum-2.9.4 → meerschaum-2.9.5}/meerschaum/actions/clear.py +0 -0
  37. {meerschaum-2.9.4 → meerschaum-2.9.5}/meerschaum/actions/copy.py +0 -0
  38. {meerschaum-2.9.4 → meerschaum-2.9.5}/meerschaum/actions/deduplicate.py +0 -0
  39. {meerschaum-2.9.4 → meerschaum-2.9.5}/meerschaum/actions/delete.py +0 -0
  40. {meerschaum-2.9.4 → meerschaum-2.9.5}/meerschaum/actions/drop.py +0 -0
  41. {meerschaum-2.9.4 → meerschaum-2.9.5}/meerschaum/actions/edit.py +0 -0
  42. {meerschaum-2.9.4 → meerschaum-2.9.5}/meerschaum/actions/index.py +0 -0
  43. {meerschaum-2.9.4 → meerschaum-2.9.5}/meerschaum/actions/install.py +0 -0
  44. {meerschaum-2.9.4 → meerschaum-2.9.5}/meerschaum/actions/login.py +0 -0
  45. {meerschaum-2.9.4 → meerschaum-2.9.5}/meerschaum/actions/os.py +0 -0
  46. {meerschaum-2.9.4 → meerschaum-2.9.5}/meerschaum/actions/pause.py +0 -0
  47. {meerschaum-2.9.4 → meerschaum-2.9.5}/meerschaum/actions/python.py +0 -0
  48. {meerschaum-2.9.4 → meerschaum-2.9.5}/meerschaum/actions/register.py +0 -0
  49. {meerschaum-2.9.4 → meerschaum-2.9.5}/meerschaum/actions/reload.py +0 -0
  50. {meerschaum-2.9.4 → meerschaum-2.9.5}/meerschaum/actions/restart.py +0 -0
  51. {meerschaum-2.9.4 → meerschaum-2.9.5}/meerschaum/actions/setup.py +0 -0
  52. {meerschaum-2.9.4 → meerschaum-2.9.5}/meerschaum/actions/sh.py +0 -0
  53. {meerschaum-2.9.4 → meerschaum-2.9.5}/meerschaum/actions/show.py +0 -0
  54. {meerschaum-2.9.4 → meerschaum-2.9.5}/meerschaum/actions/sql.py +0 -0
  55. {meerschaum-2.9.4 → meerschaum-2.9.5}/meerschaum/actions/stack.py +0 -0
  56. {meerschaum-2.9.4 → meerschaum-2.9.5}/meerschaum/actions/start.py +0 -0
  57. {meerschaum-2.9.4 → meerschaum-2.9.5}/meerschaum/actions/stop.py +0 -0
  58. {meerschaum-2.9.4 → meerschaum-2.9.5}/meerschaum/actions/sync.py +0 -0
  59. {meerschaum-2.9.4 → meerschaum-2.9.5}/meerschaum/actions/tag.py +0 -0
  60. {meerschaum-2.9.4 → meerschaum-2.9.5}/meerschaum/actions/uninstall.py +0 -0
  61. {meerschaum-2.9.4 → meerschaum-2.9.5}/meerschaum/actions/upgrade.py +0 -0
  62. {meerschaum-2.9.4 → meerschaum-2.9.5}/meerschaum/actions/verify.py +0 -0
  63. {meerschaum-2.9.4 → meerschaum-2.9.5}/meerschaum/api/__init__.py +0 -0
  64. {meerschaum-2.9.4 → meerschaum-2.9.5}/meerschaum/api/_chain.py +0 -0
  65. {meerschaum-2.9.4 → meerschaum-2.9.5}/meerschaum/api/_chunks.py +0 -0
  66. {meerschaum-2.9.4 → meerschaum-2.9.5}/meerschaum/api/_events.py +0 -0
  67. {meerschaum-2.9.4 → meerschaum-2.9.5}/meerschaum/api/_exceptions.py +0 -0
  68. {meerschaum-2.9.4 → meerschaum-2.9.5}/meerschaum/api/_oauth2.py +0 -0
  69. {meerschaum-2.9.4 → meerschaum-2.9.5}/meerschaum/api/_websockets.py +0 -0
  70. {meerschaum-2.9.4 → meerschaum-2.9.5}/meerschaum/api/dash/__init__.py +0 -0
  71. {meerschaum-2.9.4 → meerschaum-2.9.5}/meerschaum/api/dash/assets/__init__.py +0 -0
  72. {meerschaum-2.9.4 → meerschaum-2.9.5}/meerschaum/api/dash/assets/ansi_up.js +0 -0
  73. {meerschaum-2.9.4 → meerschaum-2.9.5}/meerschaum/api/dash/assets/banner_1920x320.png +0 -0
  74. {meerschaum-2.9.4 → meerschaum-2.9.5}/meerschaum/api/dash/assets/favicon.ico +0 -0
  75. {meerschaum-2.9.4 → meerschaum-2.9.5}/meerschaum/api/dash/assets/logo_48x48.png +0 -0
  76. {meerschaum-2.9.4 → meerschaum-2.9.5}/meerschaum/api/dash/assets/logo_500x500.png +0 -0
  77. {meerschaum-2.9.4 → meerschaum-2.9.5}/meerschaum/api/dash/callbacks/__init__.py +0 -0
  78. {meerschaum-2.9.4 → meerschaum-2.9.5}/meerschaum/api/dash/callbacks/custom.py +0 -0
  79. {meerschaum-2.9.4 → meerschaum-2.9.5}/meerschaum/api/dash/callbacks/jobs.py +0 -0
  80. {meerschaum-2.9.4 → meerschaum-2.9.5}/meerschaum/api/dash/callbacks/login.py +0 -0
  81. {meerschaum-2.9.4 → meerschaum-2.9.5}/meerschaum/api/dash/callbacks/pipes.py +0 -0
  82. {meerschaum-2.9.4 → meerschaum-2.9.5}/meerschaum/api/dash/callbacks/plugins.py +0 -0
  83. {meerschaum-2.9.4 → meerschaum-2.9.5}/meerschaum/api/dash/callbacks/register.py +0 -0
  84. {meerschaum-2.9.4 → meerschaum-2.9.5}/meerschaum/api/dash/callbacks/settings/__init__.py +0 -0
  85. {meerschaum-2.9.4 → meerschaum-2.9.5}/meerschaum/api/dash/callbacks/settings/password_reset.py +0 -0
  86. {meerschaum-2.9.4 → meerschaum-2.9.5}/meerschaum/api/dash/components.py +0 -0
  87. {meerschaum-2.9.4 → meerschaum-2.9.5}/meerschaum/api/dash/connectors.py +0 -0
  88. {meerschaum-2.9.4 → meerschaum-2.9.5}/meerschaum/api/dash/graphs.py +0 -0
  89. {meerschaum-2.9.4 → meerschaum-2.9.5}/meerschaum/api/dash/jobs.py +0 -0
  90. {meerschaum-2.9.4 → meerschaum-2.9.5}/meerschaum/api/dash/keys.py +0 -0
  91. {meerschaum-2.9.4 → meerschaum-2.9.5}/meerschaum/api/dash/pages/__init__.py +0 -0
  92. {meerschaum-2.9.4 → meerschaum-2.9.5}/meerschaum/api/dash/pages/dashboard.py +0 -0
  93. {meerschaum-2.9.4 → meerschaum-2.9.5}/meerschaum/api/dash/pages/error.py +0 -0
  94. {meerschaum-2.9.4 → meerschaum-2.9.5}/meerschaum/api/dash/pages/job.py +0 -0
  95. {meerschaum-2.9.4 → meerschaum-2.9.5}/meerschaum/api/dash/pages/login.py +0 -0
  96. {meerschaum-2.9.4 → meerschaum-2.9.5}/meerschaum/api/dash/pages/pipes.py +0 -0
  97. {meerschaum-2.9.4 → meerschaum-2.9.5}/meerschaum/api/dash/pages/plugins.py +0 -0
  98. {meerschaum-2.9.4 → meerschaum-2.9.5}/meerschaum/api/dash/pages/register.py +0 -0
  99. {meerschaum-2.9.4 → meerschaum-2.9.5}/meerschaum/api/dash/pages/settings/__init__.py +0 -0
  100. {meerschaum-2.9.4 → meerschaum-2.9.5}/meerschaum/api/dash/pages/settings/password_reset.py +0 -0
  101. {meerschaum-2.9.4 → meerschaum-2.9.5}/meerschaum/api/dash/plugins.py +0 -0
  102. {meerschaum-2.9.4 → meerschaum-2.9.5}/meerschaum/api/dash/sessions.py +0 -0
  103. {meerschaum-2.9.4 → meerschaum-2.9.5}/meerschaum/api/dash/sync.py +0 -0
  104. {meerschaum-2.9.4 → meerschaum-2.9.5}/meerschaum/api/dash/users.py +0 -0
  105. {meerschaum-2.9.4 → meerschaum-2.9.5}/meerschaum/api/dash/websockets.py +0 -0
  106. {meerschaum-2.9.4 → meerschaum-2.9.5}/meerschaum/api/dash/webterm.py +0 -0
  107. {meerschaum-2.9.4 → meerschaum-2.9.5}/meerschaum/api/models/__init__.py +0 -0
  108. {meerschaum-2.9.4 → meerschaum-2.9.5}/meerschaum/api/models/_interfaces.py +0 -0
  109. {meerschaum-2.9.4 → meerschaum-2.9.5}/meerschaum/api/models/_locations.py +0 -0
  110. {meerschaum-2.9.4 → meerschaum-2.9.5}/meerschaum/api/models/_metrics.py +0 -0
  111. {meerschaum-2.9.4 → meerschaum-2.9.5}/meerschaum/api/models/_pipes.py +0 -0
  112. {meerschaum-2.9.4 → meerschaum-2.9.5}/meerschaum/api/resources/__init__.py +0 -0
  113. {meerschaum-2.9.4 → meerschaum-2.9.5}/meerschaum/api/resources/static/__init__.py +0 -0
  114. {meerschaum-2.9.4 → meerschaum-2.9.5}/meerschaum/api/resources/static/css/__init__.py +0 -0
  115. {meerschaum-2.9.4 → meerschaum-2.9.5}/meerschaum/api/resources/static/css/bootstrap.min.css +0 -0
  116. {meerschaum-2.9.4 → meerschaum-2.9.5}/meerschaum/api/resources/static/css/dbc_dark.css +0 -0
  117. {meerschaum-2.9.4 → meerschaum-2.9.5}/meerschaum/api/resources/static/css/styles.css +0 -0
  118. {meerschaum-2.9.4 → meerschaum-2.9.5}/meerschaum/api/resources/static/css/xterm.css +0 -0
  119. {meerschaum-2.9.4 → meerschaum-2.9.5}/meerschaum/api/resources/static/ico/__init__.py +0 -0
  120. {meerschaum-2.9.4 → meerschaum-2.9.5}/meerschaum/api/resources/static/ico/logo.ico +0 -0
  121. {meerschaum-2.9.4 → meerschaum-2.9.5}/meerschaum/api/resources/static/js/__init__.py +0 -0
  122. {meerschaum-2.9.4 → meerschaum-2.9.5}/meerschaum/api/resources/static/js/action_button.js +0 -0
  123. {meerschaum-2.9.4 → meerschaum-2.9.5}/meerschaum/api/resources/static/js/main.js +0 -0
  124. {meerschaum-2.9.4 → meerschaum-2.9.5}/meerschaum/api/resources/static/js/terminado.js +0 -0
  125. {meerschaum-2.9.4 → meerschaum-2.9.5}/meerschaum/api/resources/static/js/xterm.js +0 -0
  126. {meerschaum-2.9.4 → meerschaum-2.9.5}/meerschaum/api/resources/static/png/__init__.py +0 -0
  127. {meerschaum-2.9.4 → meerschaum-2.9.5}/meerschaum/api/resources/templates/__init__.py +0 -0
  128. {meerschaum-2.9.4 → meerschaum-2.9.5}/meerschaum/api/resources/templates/index.html +0 -0
  129. {meerschaum-2.9.4 → meerschaum-2.9.5}/meerschaum/api/resources/templates/old_index.html +0 -0
  130. {meerschaum-2.9.4 → meerschaum-2.9.5}/meerschaum/api/resources/templates/secret.html +0 -0
  131. {meerschaum-2.9.4 → meerschaum-2.9.5}/meerschaum/api/resources/templates/termpage.html +0 -0
  132. {meerschaum-2.9.4 → meerschaum-2.9.5}/meerschaum/api/routes/__init__.py +0 -0
  133. {meerschaum-2.9.4 → meerschaum-2.9.5}/meerschaum/api/routes/_actions.py +0 -0
  134. {meerschaum-2.9.4 → meerschaum-2.9.5}/meerschaum/api/routes/_connectors.py +0 -0
  135. {meerschaum-2.9.4 → meerschaum-2.9.5}/meerschaum/api/routes/_index.py +0 -0
  136. {meerschaum-2.9.4 → meerschaum-2.9.5}/meerschaum/api/routes/_jobs.py +0 -0
  137. {meerschaum-2.9.4 → meerschaum-2.9.5}/meerschaum/api/routes/_login.py +0 -0
  138. {meerschaum-2.9.4 → meerschaum-2.9.5}/meerschaum/api/routes/_misc.py +0 -0
  139. {meerschaum-2.9.4 → meerschaum-2.9.5}/meerschaum/api/routes/_pipes.py +0 -0
  140. {meerschaum-2.9.4 → meerschaum-2.9.5}/meerschaum/api/routes/_plugins.py +0 -0
  141. {meerschaum-2.9.4 → meerschaum-2.9.5}/meerschaum/api/routes/_users.py +0 -0
  142. {meerschaum-2.9.4 → meerschaum-2.9.5}/meerschaum/api/routes/_version.py +0 -0
  143. {meerschaum-2.9.4 → meerschaum-2.9.5}/meerschaum/api/routes/_webterm.py +0 -0
  144. {meerschaum-2.9.4 → meerschaum-2.9.5}/meerschaum/api/tables/__init__.py +0 -0
  145. {meerschaum-2.9.4 → meerschaum-2.9.5}/meerschaum/config/__init__.py +0 -0
  146. {meerschaum-2.9.4 → meerschaum-2.9.5}/meerschaum/config/_dash.py +0 -0
  147. {meerschaum-2.9.4 → meerschaum-2.9.5}/meerschaum/config/_default.py +0 -0
  148. {meerschaum-2.9.4 → meerschaum-2.9.5}/meerschaum/config/_edit.py +0 -0
  149. {meerschaum-2.9.4 → meerschaum-2.9.5}/meerschaum/config/_environment.py +0 -0
  150. {meerschaum-2.9.4 → meerschaum-2.9.5}/meerschaum/config/_formatting.py +0 -0
  151. {meerschaum-2.9.4 → meerschaum-2.9.5}/meerschaum/config/_jobs.py +0 -0
  152. {meerschaum-2.9.4 → meerschaum-2.9.5}/meerschaum/config/_patch.py +0 -0
  153. {meerschaum-2.9.4 → meerschaum-2.9.5}/meerschaum/config/_paths.py +0 -0
  154. {meerschaum-2.9.4 → meerschaum-2.9.5}/meerschaum/config/_preprocess.py +0 -0
  155. {meerschaum-2.9.4 → meerschaum-2.9.5}/meerschaum/config/_read_config.py +0 -0
  156. {meerschaum-2.9.4 → meerschaum-2.9.5}/meerschaum/config/_shell.py +0 -0
  157. {meerschaum-2.9.4 → meerschaum-2.9.5}/meerschaum/config/_sync.py +0 -0
  158. {meerschaum-2.9.4 → meerschaum-2.9.5}/meerschaum/config/paths.py +0 -0
  159. {meerschaum-2.9.4 → meerschaum-2.9.5}/meerschaum/config/resources/__init__.py +0 -0
  160. {meerschaum-2.9.4 → meerschaum-2.9.5}/meerschaum/config/stack/__init__.py +0 -0
  161. {meerschaum-2.9.4 → meerschaum-2.9.5}/meerschaum/config/stack/grafana/__init__.py +0 -0
  162. {meerschaum-2.9.4 → meerschaum-2.9.5}/meerschaum/config/stack/mosquitto/__init__.py +0 -0
  163. {meerschaum-2.9.4 → meerschaum-2.9.5}/meerschaum/config/stack/mosquitto/resources/__init__.py +0 -0
  164. {meerschaum-2.9.4 → meerschaum-2.9.5}/meerschaum/config/stack/resources/__init__.py +0 -0
  165. {meerschaum-2.9.4 → meerschaum-2.9.5}/meerschaum/config/static/__init__.py +0 -0
  166. {meerschaum-2.9.4 → meerschaum-2.9.5}/meerschaum/connectors/_Connector.py +0 -0
  167. {meerschaum-2.9.4 → meerschaum-2.9.5}/meerschaum/connectors/__init__.py +0 -0
  168. {meerschaum-2.9.4 → meerschaum-2.9.5}/meerschaum/connectors/api/_APIConnector.py +0 -0
  169. {meerschaum-2.9.4 → meerschaum-2.9.5}/meerschaum/connectors/api/__init__.py +0 -0
  170. {meerschaum-2.9.4 → meerschaum-2.9.5}/meerschaum/connectors/api/_actions.py +0 -0
  171. {meerschaum-2.9.4 → meerschaum-2.9.5}/meerschaum/connectors/api/_fetch.py +0 -0
  172. {meerschaum-2.9.4 → meerschaum-2.9.5}/meerschaum/connectors/api/_jobs.py +0 -0
  173. {meerschaum-2.9.4 → meerschaum-2.9.5}/meerschaum/connectors/api/_login.py +0 -0
  174. {meerschaum-2.9.4 → meerschaum-2.9.5}/meerschaum/connectors/api/_misc.py +0 -0
  175. {meerschaum-2.9.4 → meerschaum-2.9.5}/meerschaum/connectors/api/_pipes.py +0 -0
  176. {meerschaum-2.9.4 → meerschaum-2.9.5}/meerschaum/connectors/api/_plugins.py +0 -0
  177. {meerschaum-2.9.4 → meerschaum-2.9.5}/meerschaum/connectors/api/_request.py +0 -0
  178. {meerschaum-2.9.4 → meerschaum-2.9.5}/meerschaum/connectors/api/_uri.py +0 -0
  179. {meerschaum-2.9.4 → meerschaum-2.9.5}/meerschaum/connectors/api/_users.py +0 -0
  180. {meerschaum-2.9.4 → meerschaum-2.9.5}/meerschaum/connectors/parse.py +0 -0
  181. {meerschaum-2.9.4 → meerschaum-2.9.5}/meerschaum/connectors/plugin/PluginConnector.py +0 -0
  182. {meerschaum-2.9.4 → meerschaum-2.9.5}/meerschaum/connectors/plugin/__init__.py +0 -0
  183. {meerschaum-2.9.4 → meerschaum-2.9.5}/meerschaum/connectors/poll.py +0 -0
  184. {meerschaum-2.9.4 → meerschaum-2.9.5}/meerschaum/connectors/sql/_SQLConnector.py +0 -0
  185. {meerschaum-2.9.4 → meerschaum-2.9.5}/meerschaum/connectors/sql/__init__.py +0 -0
  186. {meerschaum-2.9.4 → meerschaum-2.9.5}/meerschaum/connectors/sql/_cli.py +0 -0
  187. {meerschaum-2.9.4 → meerschaum-2.9.5}/meerschaum/connectors/sql/_create_engine.py +0 -0
  188. {meerschaum-2.9.4 → meerschaum-2.9.5}/meerschaum/connectors/sql/_fetch.py +0 -0
  189. {meerschaum-2.9.4 → meerschaum-2.9.5}/meerschaum/connectors/sql/_instance.py +0 -0
  190. {meerschaum-2.9.4 → meerschaum-2.9.5}/meerschaum/connectors/sql/_pipes.py +0 -0
  191. {meerschaum-2.9.4 → meerschaum-2.9.5}/meerschaum/connectors/sql/_plugins.py +0 -0
  192. {meerschaum-2.9.4 → meerschaum-2.9.5}/meerschaum/connectors/sql/_uri.py +0 -0
  193. {meerschaum-2.9.4 → meerschaum-2.9.5}/meerschaum/connectors/sql/_users.py +0 -0
  194. {meerschaum-2.9.4 → meerschaum-2.9.5}/meerschaum/connectors/sql/tables/__init__.py +0 -0
  195. {meerschaum-2.9.4 → meerschaum-2.9.5}/meerschaum/connectors/sql/tables/types.py +0 -0
  196. {meerschaum-2.9.4 → meerschaum-2.9.5}/meerschaum/connectors/sql/tools.py +0 -0
  197. {meerschaum-2.9.4 → meerschaum-2.9.5}/meerschaum/connectors/valkey/_ValkeyConnector.py +0 -0
  198. {meerschaum-2.9.4 → meerschaum-2.9.5}/meerschaum/connectors/valkey/__init__.py +0 -0
  199. {meerschaum-2.9.4 → meerschaum-2.9.5}/meerschaum/connectors/valkey/_fetch.py +0 -0
  200. {meerschaum-2.9.4 → meerschaum-2.9.5}/meerschaum/connectors/valkey/_pipes.py +0 -0
  201. {meerschaum-2.9.4 → meerschaum-2.9.5}/meerschaum/connectors/valkey/_plugins.py +0 -0
  202. {meerschaum-2.9.4 → meerschaum-2.9.5}/meerschaum/connectors/valkey/_users.py +0 -0
  203. {meerschaum-2.9.4 → meerschaum-2.9.5}/meerschaum/core/Pipe/__init__.py +0 -0
  204. {meerschaum-2.9.4 → meerschaum-2.9.5}/meerschaum/core/Pipe/_attributes.py +0 -0
  205. {meerschaum-2.9.4 → meerschaum-2.9.5}/meerschaum/core/Pipe/_bootstrap.py +0 -0
  206. {meerschaum-2.9.4 → meerschaum-2.9.5}/meerschaum/core/Pipe/_clear.py +0 -0
  207. {meerschaum-2.9.4 → meerschaum-2.9.5}/meerschaum/core/Pipe/_copy.py +0 -0
  208. {meerschaum-2.9.4 → meerschaum-2.9.5}/meerschaum/core/Pipe/_data.py +0 -0
  209. {meerschaum-2.9.4 → meerschaum-2.9.5}/meerschaum/core/Pipe/_deduplicate.py +0 -0
  210. {meerschaum-2.9.4 → meerschaum-2.9.5}/meerschaum/core/Pipe/_delete.py +0 -0
  211. {meerschaum-2.9.4 → meerschaum-2.9.5}/meerschaum/core/Pipe/_drop.py +0 -0
  212. {meerschaum-2.9.4 → meerschaum-2.9.5}/meerschaum/core/Pipe/_dtypes.py +0 -0
  213. {meerschaum-2.9.4 → meerschaum-2.9.5}/meerschaum/core/Pipe/_edit.py +0 -0
  214. {meerschaum-2.9.4 → meerschaum-2.9.5}/meerschaum/core/Pipe/_fetch.py +0 -0
  215. {meerschaum-2.9.4 → meerschaum-2.9.5}/meerschaum/core/Pipe/_index.py +0 -0
  216. {meerschaum-2.9.4 → meerschaum-2.9.5}/meerschaum/core/Pipe/_register.py +0 -0
  217. {meerschaum-2.9.4 → meerschaum-2.9.5}/meerschaum/core/Pipe/_show.py +0 -0
  218. {meerschaum-2.9.4 → meerschaum-2.9.5}/meerschaum/core/Pipe/_sync.py +0 -0
  219. {meerschaum-2.9.4 → meerschaum-2.9.5}/meerschaum/core/Pipe/_verify.py +0 -0
  220. {meerschaum-2.9.4 → meerschaum-2.9.5}/meerschaum/core/Plugin/__init__.py +0 -0
  221. {meerschaum-2.9.4 → meerschaum-2.9.5}/meerschaum/core/User/_User.py +0 -0
  222. {meerschaum-2.9.4 → meerschaum-2.9.5}/meerschaum/core/User/__init__.py +0 -0
  223. {meerschaum-2.9.4 → meerschaum-2.9.5}/meerschaum/core/__init__.py +0 -0
  224. {meerschaum-2.9.4 → meerschaum-2.9.5}/meerschaum/jobs/_Executor.py +0 -0
  225. {meerschaum-2.9.4 → meerschaum-2.9.5}/meerschaum/jobs/_Job.py +0 -0
  226. {meerschaum-2.9.4 → meerschaum-2.9.5}/meerschaum/jobs/__init__.py +0 -0
  227. {meerschaum-2.9.4 → meerschaum-2.9.5}/meerschaum/jobs/systemd.py +0 -0
  228. {meerschaum-2.9.4 → meerschaum-2.9.5}/meerschaum/plugins/_Plugin.py +0 -0
  229. {meerschaum-2.9.4 → meerschaum-2.9.5}/meerschaum/plugins/__init__.py +0 -0
  230. {meerschaum-2.9.4 → meerschaum-2.9.5}/meerschaum/plugins/bootstrap.py +0 -0
  231. {meerschaum-2.9.4 → meerschaum-2.9.5}/meerschaum/utils/__init__.py +0 -0
  232. {meerschaum-2.9.4 → meerschaum-2.9.5}/meerschaum/utils/_get_pipes.py +0 -0
  233. {meerschaum-2.9.4 → meerschaum-2.9.5}/meerschaum/utils/daemon/Daemon.py +0 -0
  234. {meerschaum-2.9.4 → meerschaum-2.9.5}/meerschaum/utils/daemon/FileDescriptorInterceptor.py +0 -0
  235. {meerschaum-2.9.4 → meerschaum-2.9.5}/meerschaum/utils/daemon/RotatingFile.py +0 -0
  236. {meerschaum-2.9.4 → meerschaum-2.9.5}/meerschaum/utils/daemon/StdinFile.py +0 -0
  237. {meerschaum-2.9.4 → meerschaum-2.9.5}/meerschaum/utils/daemon/__init__.py +0 -0
  238. {meerschaum-2.9.4 → meerschaum-2.9.5}/meerschaum/utils/daemon/_names.py +0 -0
  239. {meerschaum-2.9.4 → meerschaum-2.9.5}/meerschaum/utils/debug.py +0 -0
  240. {meerschaum-2.9.4 → meerschaum-2.9.5}/meerschaum/utils/dtypes/sql.py +0 -0
  241. {meerschaum-2.9.4 → meerschaum-2.9.5}/meerschaum/utils/formatting/__init__.py +0 -0
  242. {meerschaum-2.9.4 → meerschaum-2.9.5}/meerschaum/utils/formatting/_jobs.py +0 -0
  243. {meerschaum-2.9.4 → meerschaum-2.9.5}/meerschaum/utils/formatting/_pipes.py +0 -0
  244. {meerschaum-2.9.4 → meerschaum-2.9.5}/meerschaum/utils/formatting/_pprint.py +0 -0
  245. {meerschaum-2.9.4 → meerschaum-2.9.5}/meerschaum/utils/formatting/_shell.py +0 -0
  246. {meerschaum-2.9.4 → meerschaum-2.9.5}/meerschaum/utils/interactive.py +0 -0
  247. {meerschaum-2.9.4 → meerschaum-2.9.5}/meerschaum/utils/misc.py +0 -0
  248. {meerschaum-2.9.4 → meerschaum-2.9.5}/meerschaum/utils/networking.py +0 -0
  249. {meerschaum-2.9.4 → meerschaum-2.9.5}/meerschaum/utils/packages/__init__.py +0 -0
  250. {meerschaum-2.9.4 → meerschaum-2.9.5}/meerschaum/utils/packages/_packages.py +0 -0
  251. {meerschaum-2.9.4 → meerschaum-2.9.5}/meerschaum/utils/packages/lazy_loader.py +0 -0
  252. {meerschaum-2.9.4 → meerschaum-2.9.5}/meerschaum/utils/pool.py +0 -0
  253. {meerschaum-2.9.4 → meerschaum-2.9.5}/meerschaum/utils/process.py +0 -0
  254. {meerschaum-2.9.4 → meerschaum-2.9.5}/meerschaum/utils/prompt.py +0 -0
  255. {meerschaum-2.9.4 → meerschaum-2.9.5}/meerschaum/utils/schedule.py +0 -0
  256. {meerschaum-2.9.4 → meerschaum-2.9.5}/meerschaum/utils/threading.py +0 -0
  257. {meerschaum-2.9.4 → meerschaum-2.9.5}/meerschaum/utils/typing.py +0 -0
  258. {meerschaum-2.9.4 → meerschaum-2.9.5}/meerschaum/utils/venv/_Venv.py +0 -0
  259. {meerschaum-2.9.4 → meerschaum-2.9.5}/meerschaum/utils/venv/__init__.py +0 -0
  260. {meerschaum-2.9.4 → meerschaum-2.9.5}/meerschaum/utils/warnings.py +0 -0
  261. {meerschaum-2.9.4 → meerschaum-2.9.5}/meerschaum/utils/yaml.py +0 -0
  262. {meerschaum-2.9.4 → meerschaum-2.9.5}/meerschaum.egg-info/SOURCES.txt +0 -0
  263. {meerschaum-2.9.4 → meerschaum-2.9.5}/meerschaum.egg-info/dependency_links.txt +0 -0
  264. {meerschaum-2.9.4 → meerschaum-2.9.5}/meerschaum.egg-info/entry_points.txt +0 -0
  265. {meerschaum-2.9.4 → meerschaum-2.9.5}/meerschaum.egg-info/requires.txt +0 -0
  266. {meerschaum-2.9.4 → meerschaum-2.9.5}/meerschaum.egg-info/top_level.txt +0 -0
  267. {meerschaum-2.9.4 → meerschaum-2.9.5}/meerschaum.egg-info/zip-safe +0 -0
  268. {meerschaum-2.9.4 → meerschaum-2.9.5}/setup.cfg +0 -0
  269. {meerschaum-2.9.4 → meerschaum-2.9.5}/setup.py +0 -0
  270. {meerschaum-2.9.4 → meerschaum-2.9.5}/tests/test_actions.py +0 -0
  271. {meerschaum-2.9.4 → meerschaum-2.9.5}/tests/test_arguments.py +0 -0
  272. {meerschaum-2.9.4 → meerschaum-2.9.5}/tests/test_deduplicate.py +0 -0
  273. {meerschaum-2.9.4 → meerschaum-2.9.5}/tests/test_jobs.py +0 -0
  274. {meerschaum-2.9.4 → meerschaum-2.9.5}/tests/test_pipe_data.py +0 -0
  275. {meerschaum-2.9.4 → meerschaum-2.9.5}/tests/test_pipes_dtypes.py +0 -0
  276. {meerschaum-2.9.4 → meerschaum-2.9.5}/tests/test_sql.py +0 -0
  277. {meerschaum-2.9.4 → meerschaum-2.9.5}/tests/test_users.py +0 -0
  278. {meerschaum-2.9.4 → meerschaum-2.9.5}/tests/test_verify.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: meerschaum
3
- Version: 2.9.4
3
+ Version: 2.9.5
4
4
  Summary: Sync Time-Series Pipes with Meerschaum
5
5
  Home-page: https://meerschaum.io
6
6
  Author: Bennett Meares
@@ -949,6 +949,37 @@ def sync_documents_click(n_clicks, sync_editor_text):
949
949
 
950
950
  return alert_from_success_tuple((success, msg))
951
951
 
952
+ @dash_app.callback(
953
+ Output({'type': 'query-result-div', 'index': MATCH}, 'children'),
954
+ Input({'type': 'query-data-button', 'index': MATCH}, 'n_clicks'),
955
+ State({'type': 'query-editor', 'index': MATCH}, 'value'),
956
+ State({'type': 'limit-input', 'index': MATCH}, 'value'),
957
+ State({'type': 'query-data-begin-input', 'index': MATCH}, 'value'),
958
+ State({'type': 'query-data-end-input', 'index': MATCH}, 'value'),
959
+ )
960
+ def query_data_click(n_clicks, query_editor_text, limit_value, begin, end):
961
+ triggered = dash.callback_context.triggered
962
+ if triggered[0]['value'] is None:
963
+ raise PreventUpdate
964
+ pipe = pipe_from_ctx(triggered, 'n_clicks')
965
+ if pipe is None:
966
+ raise PreventUpdate
967
+
968
+ try:
969
+ params_query = json.loads(query_editor_text)
970
+ except Exception as e:
971
+ return alert_from_success_tuple((False, f"Invalid query:\n{e}"))
972
+
973
+ if limit_value is None:
974
+ limit_value = 100
975
+
976
+ df = pipe.get_data(params=params_query, debug=debug, begin=begin, end=end, limit=limit_value)
977
+ if df is None:
978
+ return [html.P("No data returned.")]
979
+ df = df.astype(str)
980
+ table = dbc.Table.from_dataframe(df, bordered=False, hover=True)
981
+ return table
982
+
952
983
 
953
984
  dash_app.clientside_callback(
954
985
  """
@@ -343,6 +343,7 @@ def accordion_items_from_pipe(
343
343
  items_titles['sql'] = '📃 SQL Query'
344
344
  items_titles.update({
345
345
  'recent-data': '🗃️ Recent Data',
346
+ 'query-data': '🔍 Query Data',
346
347
  'sync-data': '📝 Sync Documents',
347
348
  })
348
349
 
@@ -669,6 +670,68 @@ def accordion_items_from_pipe(
669
670
  table = html.P("Could not retrieve recent data.")
670
671
  items_bodies['recent-data'] = table
671
672
 
673
+ if 'query-data' in active_items:
674
+ query_editor = dash_ace.DashAceEditor(
675
+ value='{\n \n}',
676
+ mode='norm',
677
+ tabSize=4,
678
+ theme='twilight',
679
+ id={'type': 'query-editor', 'index': json.dumps(pipe.meta)},
680
+ width='100%',
681
+ height='200px',
682
+ readOnly=False,
683
+ showGutter=True,
684
+ showPrintMargin=False,
685
+ highlightActiveLine=True,
686
+ wrapEnabled=True,
687
+ style={'min-height': '120px'},
688
+ )
689
+ query_data_button = dbc.Button(
690
+ "Query",
691
+ id={'type': 'query-data-button', 'index': json.dumps(pipe.meta)},
692
+ )
693
+
694
+ begin_end_input_group = dbc.InputGroup(
695
+ [
696
+ dbc.Input(
697
+ id={'type': 'query-data-begin-input', 'index': json.dumps(pipe.meta)},
698
+ placeholder="Begin",
699
+ ),
700
+ dbc.Input(
701
+ id={'type': 'query-data-end-input', 'index': json.dumps(pipe.meta)},
702
+ placeholder="End",
703
+ ),
704
+ ],
705
+ size="sm",
706
+ )
707
+
708
+ limit_input = dbc.Input(
709
+ type="number",
710
+ min=0,
711
+ max=100,
712
+ value=10,
713
+ step=1,
714
+ placeholder="Limit",
715
+ id={'type': 'limit-input', 'index': json.dumps(pipe.meta)},
716
+ )
717
+ query_result_div = html.Div(id={'type': 'query-result-div', 'index': json.dumps(pipe.meta)})
718
+
719
+ items_bodies['query-data'] = html.Div([
720
+ query_editor,
721
+ html.Br(),
722
+ dbc.Row(
723
+ [
724
+ dbc.Col([query_data_button], lg=2, md=3, sm=4, xs=6, width=2),
725
+ dbc.Col([begin_end_input_group], lg=3, md=3, sm=4, width=4),
726
+ dbc.Col(html.Div([limit_input, dbc.FormText("Row Limit")]), lg=2, md=3, sm=4, xs=6, width=2),
727
+ ],
728
+ justify="between",
729
+ ),
730
+ dbc.Row([
731
+ dbc.Col([query_result_div], width=True),
732
+ ]),
733
+ ])
734
+
672
735
  if 'sync-data' in active_items:
673
736
  backtrack_df = pipe.get_backtrack_data(debug=debug, limit=1)
674
737
  try:
@@ -80,3 +80,19 @@ a {
80
80
  .pages-offcanvas-accordion div {
81
81
  padding: 0 !important;
82
82
  }
83
+
84
+ /* restyle radio items */
85
+ .radio-group .form-check {
86
+ padding-left: 0;
87
+ }
88
+
89
+ .radio-group .btn-group > .form-check:not(:last-child) > .btn {
90
+ border-top-right-radius: 0;
91
+ border-bottom-right-radius: 0;
92
+ }
93
+
94
+ .radio-group .btn-group > .form-check:not(:first-child) > .btn {
95
+ border-top-left-radius: 0;
96
+ border-bottom-left-radius: 0;
97
+ margin-left: -1px;
98
+ }
@@ -2,4 +2,4 @@
2
2
  Specify the Meerschaum release version.
3
3
  """
4
4
 
5
- __version__ = "2.9.4"
5
+ __version__ = "2.9.5"
@@ -928,7 +928,7 @@ def to_sql(
928
928
  df[col] = df[col].apply(
929
929
  functools.partial(
930
930
  serialize_geometry,
931
- as_wkt=(self.flavor == 'mssql')
931
+ geometry_format=('wkt' if self.flavor == 'mssql' else 'wkb_hex'),
932
932
  )
933
933
  )
934
934
 
@@ -1138,10 +1138,10 @@ def enforce_dtypes(
1138
1138
  if parsed_geom_cols:
1139
1139
  if debug:
1140
1140
  dprint(f"Converting to GeoDataFrame (geometry column: '{parsed_geom_cols[0]}')...")
1141
- df = geopandas.GeoDataFrame(df, geometry=parsed_geom_cols[0])
1142
1141
  try:
1142
+ df = geopandas.GeoDataFrame(df, geometry=parsed_geom_cols[0])
1143
1143
  df.rename_geometry(parsed_geom_cols[0], inplace=True)
1144
- except ValueError:
1144
+ except (ValueError, TypeError):
1145
1145
  pass
1146
1146
 
1147
1147
  df_dtypes = {c: str(t) for c, t in df.dtypes.items()}
@@ -541,7 +541,6 @@ def serialize_bytes(data: bytes) -> str:
541
541
  def serialize_geometry(
542
542
  geom: Any,
543
543
  geometry_format: str = 'wkb_hex',
544
- as_wkt: bool = False,
545
544
  ) -> Union[str, Dict[str, Any], None]:
546
545
  """
547
546
  Serialize geometry data as a hex-encoded well-known-binary string.
@@ -588,7 +587,7 @@ def deserialize_bytes_string(data: Optional[str], force_hex: bool = False) -> Un
588
587
 
589
588
  Parameters
590
589
  ----------
591
- data: str | None
590
+ data: Optional[str]
592
591
  The string to be deserialized into bytes.
593
592
  May be base64- or hex-encoded (prefixed with `'\\x'`).
594
593
 
@@ -625,7 +624,7 @@ def deserialize_base64(data: str) -> bytes:
625
624
  return base64.b64decode(data)
626
625
 
627
626
 
628
- def encode_bytes_for_bytea(data: bytes, with_prefix: bool = True) -> str | None:
627
+ def encode_bytes_for_bytea(data: bytes, with_prefix: bool = True) -> Union[str, None]:
629
628
  """
630
629
  Return the given bytes as a hex string for PostgreSQL's `BYTEA` type.
631
630
  """
@@ -1838,10 +1838,9 @@ def get_null_replacement(typ: str, flavor: str) -> str:
1838
1838
  A value which may stand in place of NULL for this type.
1839
1839
  `'None'` is returned if a value cannot be determined.
1840
1840
  """
1841
- from meerschaum.utils.dtypes import are_dtypes_equal
1842
1841
  from meerschaum.utils.dtypes.sql import DB_FLAVORS_CAST_DTYPES
1843
1842
  if 'geometry' in typ.lower():
1844
- return '010100000000008058346FCDC100008058346FCDC1'
1843
+ return "'010100000000008058346FCDC100008058346FCDC1'"
1845
1844
  if 'int' in typ.lower() or typ.lower() in ('numeric', 'number'):
1846
1845
  return '-987654321'
1847
1846
  if 'bool' in typ.lower() or typ.lower() == 'bit':
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: meerschaum
3
- Version: 2.9.4
3
+ Version: 2.9.5
4
4
  Summary: Sync Time-Series Pipes with Meerschaum
5
5
  Home-page: https://meerschaum.io
6
6
  Author: Bennett Meares
@@ -620,7 +620,7 @@ def test_sync_inplace_no_datetime(flavor: str):
620
620
  str(conn), 'inplace', 'no-datetime',
621
621
  instance=conn,
622
622
  columns={'id': 'id'},
623
- dtypes={'a': 'int', 'id': 'uuid'},
623
+ dtypes={'a': 'int', 'id': 'uuid', 'geom': 'geometry'},
624
624
  upsert=False,
625
625
  static=False,
626
626
  parameters={
@@ -630,12 +630,16 @@ def test_sync_inplace_no_datetime(flavor: str):
630
630
  },
631
631
  )
632
632
 
633
+ shapely = mrsm.attempt_import('shapely')
634
+ geom = shapely.MultiLineString([[[0, 0], [1, 2]], [[4, 4], [5, 6]]])
635
+ geom2 = shapely.MultiLineString([[[1, 1], [2, 3]], [[5, 5], [6, 7]]])
636
+
633
637
  docs = [
634
- {'id': UUID('9f680a72-b5f7-4336-8f7c-30927ec21cb1')},
635
- {'id': UUID('335b0322-4b54-40aa-8019-07666cbefa52')},
636
- {'id': UUID('d7d42913-2dfe-47d6-b0e0-7f71e13e814e'), 'd': 7},
637
- {'id': UUID('7e194a2c-26b4-4632-af02-e0a8b2c6ce1e')},
638
- {'id': UUID('31e5fd08-fb81-47f4-8a1c-0c9dcf08ac5e')},
638
+ {'id': UUID('9f680a72-b5f7-4336-8f7c-30927ec21cb1'), 'geom': geom},
639
+ {'id': UUID('335b0322-4b54-40aa-8019-07666cbefa52'), 'geom': geom},
640
+ {'id': UUID('d7d42913-2dfe-47d6-b0e0-7f71e13e814e'), 'd': 7, 'geom': geom},
641
+ {'id': UUID('7e194a2c-26b4-4632-af02-e0a8b2c6ce1e'), 'geom': geom},
642
+ {'id': UUID('31e5fd08-fb81-47f4-8a1c-0c9dcf08ac5e'), 'geom': geom},
639
643
  ]
640
644
  success, msg = source_pipe.sync(docs)
641
645
  assert success, msg
@@ -653,7 +657,7 @@ def test_sync_inplace_no_datetime(flavor: str):
653
657
  {'id': UUID('8b7bf428-d0ed-40fa-951b-bb115a03eac5'), 'c': 8},
654
658
  {'id': UUID('36aed9b4-4c7a-4566-a321-d1774ef1015a'), 'c': 7},
655
659
  {'id': UUID('7a4ef6cc-37d8-4899-9ddb-07b4998d0b53'), 'c': 6},
656
- {'id': UUID('59244211-fdb8-46f1-b14b-8631146758c0'), 'c': 5},
660
+ {'id': UUID('59244211-fdb8-46f1-b14b-8631146758c0'), 'c': 5,},
657
661
  ]
658
662
  success, msg = source_pipe.sync(new_docs)
659
663
  assert success, msg
@@ -665,7 +669,7 @@ def test_sync_inplace_no_datetime(flavor: str):
665
669
  update_docs = [
666
670
  {'id': UUID('9f680a72-b5f7-4336-8f7c-30927ec21cb1'), 'a': 1},
667
671
  {'id': UUID('335b0322-4b54-40aa-8019-07666cbefa52'), 'a': 2},
668
- {'id': UUID('d7d42913-2dfe-47d6-b0e0-7f71e13e814e'), 'a': 3},
672
+ {'id': UUID('d7d42913-2dfe-47d6-b0e0-7f71e13e814e'), 'a': 3, 'geom': geom2},
669
673
  {'id': UUID('7e194a2c-26b4-4632-af02-e0a8b2c6ce1e'), 'a': 4},
670
674
  {'id': UUID('31e5fd08-fb81-47f4-8a1c-0c9dcf08ac5e'), 'a': 5},
671
675
  ]
@@ -681,6 +685,7 @@ def test_sync_inplace_no_datetime(flavor: str):
681
685
  assert len(df) == 1
682
686
  assert df['a'][0] == 3
683
687
  assert df['d'][0] == 7
688
+ assert df['geom'][0] == geom2
684
689
 
685
690
 
686
691
  @pytest.mark.parametrize("flavor", get_flavors())
File without changes
File without changes