meerschaum 2.6.3__tar.gz → 2.6.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 (276) hide show
  1. {meerschaum-2.6.3/meerschaum.egg-info → meerschaum-2.6.5}/PKG-INFO +1 -1
  2. {meerschaum-2.6.3 → meerschaum-2.6.5}/meerschaum/config/_version.py +1 -1
  3. {meerschaum-2.6.3 → meerschaum-2.6.5}/meerschaum/connectors/sql/_pipes.py +21 -1
  4. {meerschaum-2.6.3 → meerschaum-2.6.5}/meerschaum/connectors/sql/_sql.py +1 -1
  5. {meerschaum-2.6.3 → meerschaum-2.6.5}/meerschaum/connectors/valkey/_pipes.py +1 -1
  6. {meerschaum-2.6.3 → meerschaum-2.6.5}/meerschaum/core/Pipe/_data.py +2 -0
  7. {meerschaum-2.6.3 → meerschaum-2.6.5}/meerschaum/utils/dtypes/__init__.py +4 -1
  8. {meerschaum-2.6.3 → meerschaum-2.6.5/meerschaum.egg-info}/PKG-INFO +1 -1
  9. {meerschaum-2.6.3 → meerschaum-2.6.5}/tests/test_pipes_dtypes.py +105 -14
  10. {meerschaum-2.6.3 → meerschaum-2.6.5}/LICENSE +0 -0
  11. {meerschaum-2.6.3 → meerschaum-2.6.5}/NOTICE +0 -0
  12. {meerschaum-2.6.3 → meerschaum-2.6.5}/README.md +0 -0
  13. {meerschaum-2.6.3 → meerschaum-2.6.5}/meerschaum/__init__.py +0 -0
  14. {meerschaum-2.6.3 → meerschaum-2.6.5}/meerschaum/__main__.py +0 -0
  15. {meerschaum-2.6.3 → meerschaum-2.6.5}/meerschaum/_internal/__init__.py +0 -0
  16. {meerschaum-2.6.3 → meerschaum-2.6.5}/meerschaum/_internal/arguments/__init__.py +0 -0
  17. {meerschaum-2.6.3 → meerschaum-2.6.5}/meerschaum/_internal/arguments/_parse_arguments.py +0 -0
  18. {meerschaum-2.6.3 → meerschaum-2.6.5}/meerschaum/_internal/arguments/_parser.py +0 -0
  19. {meerschaum-2.6.3 → meerschaum-2.6.5}/meerschaum/_internal/docs/__init__.py +0 -0
  20. {meerschaum-2.6.3 → meerschaum-2.6.5}/meerschaum/_internal/docs/index.py +0 -0
  21. {meerschaum-2.6.3 → meerschaum-2.6.5}/meerschaum/_internal/entry.py +0 -0
  22. {meerschaum-2.6.3 → meerschaum-2.6.5}/meerschaum/_internal/gui/__init__.py +0 -0
  23. {meerschaum-2.6.3 → meerschaum-2.6.5}/meerschaum/_internal/gui/app/__init__.py +0 -0
  24. {meerschaum-2.6.3 → meerschaum-2.6.5}/meerschaum/_internal/gui/app/_windows.py +0 -0
  25. {meerschaum-2.6.3 → meerschaum-2.6.5}/meerschaum/_internal/gui/app/actions.py +0 -0
  26. {meerschaum-2.6.3 → meerschaum-2.6.5}/meerschaum/_internal/gui/app/pipes.py +0 -0
  27. {meerschaum-2.6.3 → meerschaum-2.6.5}/meerschaum/_internal/shell/Shell.py +0 -0
  28. {meerschaum-2.6.3 → meerschaum-2.6.5}/meerschaum/_internal/shell/ShellCompleter.py +0 -0
  29. {meerschaum-2.6.3 → meerschaum-2.6.5}/meerschaum/_internal/shell/ValidAutoSuggest.py +0 -0
  30. {meerschaum-2.6.3 → meerschaum-2.6.5}/meerschaum/_internal/shell/__init__.py +0 -0
  31. {meerschaum-2.6.3 → meerschaum-2.6.5}/meerschaum/_internal/shell/resources/__init__.py +0 -0
  32. {meerschaum-2.6.3 → meerschaum-2.6.5}/meerschaum/_internal/shell/updates.py +0 -0
  33. {meerschaum-2.6.3 → meerschaum-2.6.5}/meerschaum/_internal/term/TermPageHandler.py +0 -0
  34. {meerschaum-2.6.3 → meerschaum-2.6.5}/meerschaum/_internal/term/__init__.py +0 -0
  35. {meerschaum-2.6.3 → meerschaum-2.6.5}/meerschaum/_internal/term/tools.py +0 -0
  36. {meerschaum-2.6.3 → meerschaum-2.6.5}/meerschaum/actions/__init__.py +0 -0
  37. {meerschaum-2.6.3 → meerschaum-2.6.5}/meerschaum/actions/api.py +0 -0
  38. {meerschaum-2.6.3 → meerschaum-2.6.5}/meerschaum/actions/attach.py +0 -0
  39. {meerschaum-2.6.3 → meerschaum-2.6.5}/meerschaum/actions/bootstrap.py +0 -0
  40. {meerschaum-2.6.3 → meerschaum-2.6.5}/meerschaum/actions/clear.py +0 -0
  41. {meerschaum-2.6.3 → meerschaum-2.6.5}/meerschaum/actions/copy.py +0 -0
  42. {meerschaum-2.6.3 → meerschaum-2.6.5}/meerschaum/actions/deduplicate.py +0 -0
  43. {meerschaum-2.6.3 → meerschaum-2.6.5}/meerschaum/actions/delete.py +0 -0
  44. {meerschaum-2.6.3 → meerschaum-2.6.5}/meerschaum/actions/drop.py +0 -0
  45. {meerschaum-2.6.3 → meerschaum-2.6.5}/meerschaum/actions/edit.py +0 -0
  46. {meerschaum-2.6.3 → meerschaum-2.6.5}/meerschaum/actions/install.py +0 -0
  47. {meerschaum-2.6.3 → meerschaum-2.6.5}/meerschaum/actions/login.py +0 -0
  48. {meerschaum-2.6.3 → meerschaum-2.6.5}/meerschaum/actions/os.py +0 -0
  49. {meerschaum-2.6.3 → meerschaum-2.6.5}/meerschaum/actions/pause.py +0 -0
  50. {meerschaum-2.6.3 → meerschaum-2.6.5}/meerschaum/actions/python.py +0 -0
  51. {meerschaum-2.6.3 → meerschaum-2.6.5}/meerschaum/actions/register.py +0 -0
  52. {meerschaum-2.6.3 → meerschaum-2.6.5}/meerschaum/actions/reload.py +0 -0
  53. {meerschaum-2.6.3 → meerschaum-2.6.5}/meerschaum/actions/restart.py +0 -0
  54. {meerschaum-2.6.3 → meerschaum-2.6.5}/meerschaum/actions/setup.py +0 -0
  55. {meerschaum-2.6.3 → meerschaum-2.6.5}/meerschaum/actions/sh.py +0 -0
  56. {meerschaum-2.6.3 → meerschaum-2.6.5}/meerschaum/actions/show.py +0 -0
  57. {meerschaum-2.6.3 → meerschaum-2.6.5}/meerschaum/actions/sql.py +0 -0
  58. {meerschaum-2.6.3 → meerschaum-2.6.5}/meerschaum/actions/stack.py +0 -0
  59. {meerschaum-2.6.3 → meerschaum-2.6.5}/meerschaum/actions/start.py +0 -0
  60. {meerschaum-2.6.3 → meerschaum-2.6.5}/meerschaum/actions/stop.py +0 -0
  61. {meerschaum-2.6.3 → meerschaum-2.6.5}/meerschaum/actions/sync.py +0 -0
  62. {meerschaum-2.6.3 → meerschaum-2.6.5}/meerschaum/actions/tag.py +0 -0
  63. {meerschaum-2.6.3 → meerschaum-2.6.5}/meerschaum/actions/uninstall.py +0 -0
  64. {meerschaum-2.6.3 → meerschaum-2.6.5}/meerschaum/actions/upgrade.py +0 -0
  65. {meerschaum-2.6.3 → meerschaum-2.6.5}/meerschaum/actions/verify.py +0 -0
  66. {meerschaum-2.6.3 → meerschaum-2.6.5}/meerschaum/api/__init__.py +0 -0
  67. {meerschaum-2.6.3 → meerschaum-2.6.5}/meerschaum/api/_chain.py +0 -0
  68. {meerschaum-2.6.3 → meerschaum-2.6.5}/meerschaum/api/_events.py +0 -0
  69. {meerschaum-2.6.3 → meerschaum-2.6.5}/meerschaum/api/_oauth2.py +0 -0
  70. {meerschaum-2.6.3 → meerschaum-2.6.5}/meerschaum/api/_websockets.py +0 -0
  71. {meerschaum-2.6.3 → meerschaum-2.6.5}/meerschaum/api/dash/__init__.py +0 -0
  72. {meerschaum-2.6.3 → meerschaum-2.6.5}/meerschaum/api/dash/assets/__init__.py +0 -0
  73. {meerschaum-2.6.3 → meerschaum-2.6.5}/meerschaum/api/dash/assets/ansi_up.js +0 -0
  74. {meerschaum-2.6.3 → meerschaum-2.6.5}/meerschaum/api/dash/assets/banner_1920x320.png +0 -0
  75. {meerschaum-2.6.3 → meerschaum-2.6.5}/meerschaum/api/dash/assets/favicon.ico +0 -0
  76. {meerschaum-2.6.3 → meerschaum-2.6.5}/meerschaum/api/dash/assets/logo_48x48.png +0 -0
  77. {meerschaum-2.6.3 → meerschaum-2.6.5}/meerschaum/api/dash/assets/logo_500x500.png +0 -0
  78. {meerschaum-2.6.3 → meerschaum-2.6.5}/meerschaum/api/dash/callbacks/__init__.py +0 -0
  79. {meerschaum-2.6.3 → meerschaum-2.6.5}/meerschaum/api/dash/callbacks/custom.py +0 -0
  80. {meerschaum-2.6.3 → meerschaum-2.6.5}/meerschaum/api/dash/callbacks/dashboard.py +0 -0
  81. {meerschaum-2.6.3 → meerschaum-2.6.5}/meerschaum/api/dash/callbacks/jobs.py +0 -0
  82. {meerschaum-2.6.3 → meerschaum-2.6.5}/meerschaum/api/dash/callbacks/login.py +0 -0
  83. {meerschaum-2.6.3 → meerschaum-2.6.5}/meerschaum/api/dash/callbacks/pipes.py +0 -0
  84. {meerschaum-2.6.3 → meerschaum-2.6.5}/meerschaum/api/dash/callbacks/plugins.py +0 -0
  85. {meerschaum-2.6.3 → meerschaum-2.6.5}/meerschaum/api/dash/callbacks/register.py +0 -0
  86. {meerschaum-2.6.3 → meerschaum-2.6.5}/meerschaum/api/dash/components.py +0 -0
  87. {meerschaum-2.6.3 → meerschaum-2.6.5}/meerschaum/api/dash/connectors.py +0 -0
  88. {meerschaum-2.6.3 → meerschaum-2.6.5}/meerschaum/api/dash/graphs.py +0 -0
  89. {meerschaum-2.6.3 → meerschaum-2.6.5}/meerschaum/api/dash/jobs.py +0 -0
  90. {meerschaum-2.6.3 → meerschaum-2.6.5}/meerschaum/api/dash/keys.py +0 -0
  91. {meerschaum-2.6.3 → meerschaum-2.6.5}/meerschaum/api/dash/pages/__init__.py +0 -0
  92. {meerschaum-2.6.3 → meerschaum-2.6.5}/meerschaum/api/dash/pages/dashboard.py +0 -0
  93. {meerschaum-2.6.3 → meerschaum-2.6.5}/meerschaum/api/dash/pages/error.py +0 -0
  94. {meerschaum-2.6.3 → meerschaum-2.6.5}/meerschaum/api/dash/pages/job.py +0 -0
  95. {meerschaum-2.6.3 → meerschaum-2.6.5}/meerschaum/api/dash/pages/login.py +0 -0
  96. {meerschaum-2.6.3 → meerschaum-2.6.5}/meerschaum/api/dash/pages/pipes.py +0 -0
  97. {meerschaum-2.6.3 → meerschaum-2.6.5}/meerschaum/api/dash/pages/plugins.py +0 -0
  98. {meerschaum-2.6.3 → meerschaum-2.6.5}/meerschaum/api/dash/pages/register.py +0 -0
  99. {meerschaum-2.6.3 → meerschaum-2.6.5}/meerschaum/api/dash/pipes.py +0 -0
  100. {meerschaum-2.6.3 → meerschaum-2.6.5}/meerschaum/api/dash/plugins.py +0 -0
  101. {meerschaum-2.6.3 → meerschaum-2.6.5}/meerschaum/api/dash/sessions.py +0 -0
  102. {meerschaum-2.6.3 → meerschaum-2.6.5}/meerschaum/api/dash/sync.py +0 -0
  103. {meerschaum-2.6.3 → meerschaum-2.6.5}/meerschaum/api/dash/users.py +0 -0
  104. {meerschaum-2.6.3 → meerschaum-2.6.5}/meerschaum/api/dash/websockets.py +0 -0
  105. {meerschaum-2.6.3 → meerschaum-2.6.5}/meerschaum/api/dash/webterm.py +0 -0
  106. {meerschaum-2.6.3 → meerschaum-2.6.5}/meerschaum/api/models/__init__.py +0 -0
  107. {meerschaum-2.6.3 → meerschaum-2.6.5}/meerschaum/api/models/_interfaces.py +0 -0
  108. {meerschaum-2.6.3 → meerschaum-2.6.5}/meerschaum/api/models/_locations.py +0 -0
  109. {meerschaum-2.6.3 → meerschaum-2.6.5}/meerschaum/api/models/_metrics.py +0 -0
  110. {meerschaum-2.6.3 → meerschaum-2.6.5}/meerschaum/api/models/_pipes.py +0 -0
  111. {meerschaum-2.6.3 → meerschaum-2.6.5}/meerschaum/api/resources/__init__.py +0 -0
  112. {meerschaum-2.6.3 → meerschaum-2.6.5}/meerschaum/api/resources/static/__init__.py +0 -0
  113. {meerschaum-2.6.3 → meerschaum-2.6.5}/meerschaum/api/resources/static/css/__init__.py +0 -0
  114. {meerschaum-2.6.3 → meerschaum-2.6.5}/meerschaum/api/resources/static/css/bootstrap.min.css +0 -0
  115. {meerschaum-2.6.3 → meerschaum-2.6.5}/meerschaum/api/resources/static/css/dash.css +0 -0
  116. {meerschaum-2.6.3 → meerschaum-2.6.5}/meerschaum/api/resources/static/css/dbc_dark.css +0 -0
  117. {meerschaum-2.6.3 → meerschaum-2.6.5}/meerschaum/api/resources/static/css/styles.css +0 -0
  118. {meerschaum-2.6.3 → meerschaum-2.6.5}/meerschaum/api/resources/static/css/xterm.css +0 -0
  119. {meerschaum-2.6.3 → meerschaum-2.6.5}/meerschaum/api/resources/static/ico/__init__.py +0 -0
  120. {meerschaum-2.6.3 → meerschaum-2.6.5}/meerschaum/api/resources/static/ico/logo.ico +0 -0
  121. {meerschaum-2.6.3 → meerschaum-2.6.5}/meerschaum/api/resources/static/js/__init__.py +0 -0
  122. {meerschaum-2.6.3 → meerschaum-2.6.5}/meerschaum/api/resources/static/js/action_button.js +0 -0
  123. {meerschaum-2.6.3 → meerschaum-2.6.5}/meerschaum/api/resources/static/js/main.js +0 -0
  124. {meerschaum-2.6.3 → meerschaum-2.6.5}/meerschaum/api/resources/static/js/terminado.js +0 -0
  125. {meerschaum-2.6.3 → meerschaum-2.6.5}/meerschaum/api/resources/static/js/xterm.js +0 -0
  126. {meerschaum-2.6.3 → meerschaum-2.6.5}/meerschaum/api/resources/static/png/__init__.py +0 -0
  127. {meerschaum-2.6.3 → meerschaum-2.6.5}/meerschaum/api/resources/templates/__init__.py +0 -0
  128. {meerschaum-2.6.3 → meerschaum-2.6.5}/meerschaum/api/resources/templates/index.html +0 -0
  129. {meerschaum-2.6.3 → meerschaum-2.6.5}/meerschaum/api/resources/templates/old_index.html +0 -0
  130. {meerschaum-2.6.3 → meerschaum-2.6.5}/meerschaum/api/resources/templates/secret.html +0 -0
  131. {meerschaum-2.6.3 → meerschaum-2.6.5}/meerschaum/api/resources/templates/termpage.html +0 -0
  132. {meerschaum-2.6.3 → meerschaum-2.6.5}/meerschaum/api/routes/__init__.py +0 -0
  133. {meerschaum-2.6.3 → meerschaum-2.6.5}/meerschaum/api/routes/_actions.py +0 -0
  134. {meerschaum-2.6.3 → meerschaum-2.6.5}/meerschaum/api/routes/_connectors.py +0 -0
  135. {meerschaum-2.6.3 → meerschaum-2.6.5}/meerschaum/api/routes/_index.py +0 -0
  136. {meerschaum-2.6.3 → meerschaum-2.6.5}/meerschaum/api/routes/_jobs.py +0 -0
  137. {meerschaum-2.6.3 → meerschaum-2.6.5}/meerschaum/api/routes/_login.py +0 -0
  138. {meerschaum-2.6.3 → meerschaum-2.6.5}/meerschaum/api/routes/_misc.py +0 -0
  139. {meerschaum-2.6.3 → meerschaum-2.6.5}/meerschaum/api/routes/_pipes.py +0 -0
  140. {meerschaum-2.6.3 → meerschaum-2.6.5}/meerschaum/api/routes/_plugins.py +0 -0
  141. {meerschaum-2.6.3 → meerschaum-2.6.5}/meerschaum/api/routes/_users.py +0 -0
  142. {meerschaum-2.6.3 → meerschaum-2.6.5}/meerschaum/api/routes/_version.py +0 -0
  143. {meerschaum-2.6.3 → meerschaum-2.6.5}/meerschaum/api/routes/_webterm.py +0 -0
  144. {meerschaum-2.6.3 → meerschaum-2.6.5}/meerschaum/api/tables/__init__.py +0 -0
  145. {meerschaum-2.6.3 → meerschaum-2.6.5}/meerschaum/config/__init__.py +0 -0
  146. {meerschaum-2.6.3 → meerschaum-2.6.5}/meerschaum/config/_dash.py +0 -0
  147. {meerschaum-2.6.3 → meerschaum-2.6.5}/meerschaum/config/_default.py +0 -0
  148. {meerschaum-2.6.3 → meerschaum-2.6.5}/meerschaum/config/_edit.py +0 -0
  149. {meerschaum-2.6.3 → meerschaum-2.6.5}/meerschaum/config/_environment.py +0 -0
  150. {meerschaum-2.6.3 → meerschaum-2.6.5}/meerschaum/config/_formatting.py +0 -0
  151. {meerschaum-2.6.3 → meerschaum-2.6.5}/meerschaum/config/_jobs.py +0 -0
  152. {meerschaum-2.6.3 → meerschaum-2.6.5}/meerschaum/config/_patch.py +0 -0
  153. {meerschaum-2.6.3 → meerschaum-2.6.5}/meerschaum/config/_paths.py +0 -0
  154. {meerschaum-2.6.3 → meerschaum-2.6.5}/meerschaum/config/_preprocess.py +0 -0
  155. {meerschaum-2.6.3 → meerschaum-2.6.5}/meerschaum/config/_read_config.py +0 -0
  156. {meerschaum-2.6.3 → meerschaum-2.6.5}/meerschaum/config/_shell.py +0 -0
  157. {meerschaum-2.6.3 → meerschaum-2.6.5}/meerschaum/config/_sync.py +0 -0
  158. {meerschaum-2.6.3 → meerschaum-2.6.5}/meerschaum/config/paths.py +0 -0
  159. {meerschaum-2.6.3 → meerschaum-2.6.5}/meerschaum/config/resources/__init__.py +0 -0
  160. {meerschaum-2.6.3 → meerschaum-2.6.5}/meerschaum/config/stack/__init__.py +0 -0
  161. {meerschaum-2.6.3 → meerschaum-2.6.5}/meerschaum/config/stack/grafana/__init__.py +0 -0
  162. {meerschaum-2.6.3 → meerschaum-2.6.5}/meerschaum/config/stack/mosquitto/__init__.py +0 -0
  163. {meerschaum-2.6.3 → meerschaum-2.6.5}/meerschaum/config/stack/mosquitto/resources/__init__.py +0 -0
  164. {meerschaum-2.6.3 → meerschaum-2.6.5}/meerschaum/config/stack/resources/__init__.py +0 -0
  165. {meerschaum-2.6.3 → meerschaum-2.6.5}/meerschaum/config/static/__init__.py +0 -0
  166. {meerschaum-2.6.3 → meerschaum-2.6.5}/meerschaum/connectors/_Connector.py +0 -0
  167. {meerschaum-2.6.3 → meerschaum-2.6.5}/meerschaum/connectors/__init__.py +0 -0
  168. {meerschaum-2.6.3 → meerschaum-2.6.5}/meerschaum/connectors/api/_APIConnector.py +0 -0
  169. {meerschaum-2.6.3 → meerschaum-2.6.5}/meerschaum/connectors/api/__init__.py +0 -0
  170. {meerschaum-2.6.3 → meerschaum-2.6.5}/meerschaum/connectors/api/_actions.py +0 -0
  171. {meerschaum-2.6.3 → meerschaum-2.6.5}/meerschaum/connectors/api/_fetch.py +0 -0
  172. {meerschaum-2.6.3 → meerschaum-2.6.5}/meerschaum/connectors/api/_jobs.py +0 -0
  173. {meerschaum-2.6.3 → meerschaum-2.6.5}/meerschaum/connectors/api/_login.py +0 -0
  174. {meerschaum-2.6.3 → meerschaum-2.6.5}/meerschaum/connectors/api/_misc.py +0 -0
  175. {meerschaum-2.6.3 → meerschaum-2.6.5}/meerschaum/connectors/api/_pipes.py +0 -0
  176. {meerschaum-2.6.3 → meerschaum-2.6.5}/meerschaum/connectors/api/_plugins.py +0 -0
  177. {meerschaum-2.6.3 → meerschaum-2.6.5}/meerschaum/connectors/api/_request.py +0 -0
  178. {meerschaum-2.6.3 → meerschaum-2.6.5}/meerschaum/connectors/api/_uri.py +0 -0
  179. {meerschaum-2.6.3 → meerschaum-2.6.5}/meerschaum/connectors/api/_users.py +0 -0
  180. {meerschaum-2.6.3 → meerschaum-2.6.5}/meerschaum/connectors/parse.py +0 -0
  181. {meerschaum-2.6.3 → meerschaum-2.6.5}/meerschaum/connectors/plugin/PluginConnector.py +0 -0
  182. {meerschaum-2.6.3 → meerschaum-2.6.5}/meerschaum/connectors/plugin/__init__.py +0 -0
  183. {meerschaum-2.6.3 → meerschaum-2.6.5}/meerschaum/connectors/poll.py +0 -0
  184. {meerschaum-2.6.3 → meerschaum-2.6.5}/meerschaum/connectors/sql/_SQLConnector.py +0 -0
  185. {meerschaum-2.6.3 → meerschaum-2.6.5}/meerschaum/connectors/sql/__init__.py +0 -0
  186. {meerschaum-2.6.3 → meerschaum-2.6.5}/meerschaum/connectors/sql/_cli.py +0 -0
  187. {meerschaum-2.6.3 → meerschaum-2.6.5}/meerschaum/connectors/sql/_create_engine.py +0 -0
  188. {meerschaum-2.6.3 → meerschaum-2.6.5}/meerschaum/connectors/sql/_fetch.py +0 -0
  189. {meerschaum-2.6.3 → meerschaum-2.6.5}/meerschaum/connectors/sql/_instance.py +0 -0
  190. {meerschaum-2.6.3 → meerschaum-2.6.5}/meerschaum/connectors/sql/_plugins.py +0 -0
  191. {meerschaum-2.6.3 → meerschaum-2.6.5}/meerschaum/connectors/sql/_uri.py +0 -0
  192. {meerschaum-2.6.3 → meerschaum-2.6.5}/meerschaum/connectors/sql/_users.py +0 -0
  193. {meerschaum-2.6.3 → meerschaum-2.6.5}/meerschaum/connectors/sql/tables/__init__.py +0 -0
  194. {meerschaum-2.6.3 → meerschaum-2.6.5}/meerschaum/connectors/sql/tables/types.py +0 -0
  195. {meerschaum-2.6.3 → meerschaum-2.6.5}/meerschaum/connectors/sql/tools.py +0 -0
  196. {meerschaum-2.6.3 → meerschaum-2.6.5}/meerschaum/connectors/valkey/_ValkeyConnector.py +0 -0
  197. {meerschaum-2.6.3 → meerschaum-2.6.5}/meerschaum/connectors/valkey/__init__.py +0 -0
  198. {meerschaum-2.6.3 → meerschaum-2.6.5}/meerschaum/connectors/valkey/_fetch.py +0 -0
  199. {meerschaum-2.6.3 → meerschaum-2.6.5}/meerschaum/connectors/valkey/_plugins.py +0 -0
  200. {meerschaum-2.6.3 → meerschaum-2.6.5}/meerschaum/connectors/valkey/_users.py +0 -0
  201. {meerschaum-2.6.3 → meerschaum-2.6.5}/meerschaum/core/Pipe/__init__.py +0 -0
  202. {meerschaum-2.6.3 → meerschaum-2.6.5}/meerschaum/core/Pipe/_attributes.py +0 -0
  203. {meerschaum-2.6.3 → meerschaum-2.6.5}/meerschaum/core/Pipe/_bootstrap.py +0 -0
  204. {meerschaum-2.6.3 → meerschaum-2.6.5}/meerschaum/core/Pipe/_clear.py +0 -0
  205. {meerschaum-2.6.3 → meerschaum-2.6.5}/meerschaum/core/Pipe/_copy.py +0 -0
  206. {meerschaum-2.6.3 → meerschaum-2.6.5}/meerschaum/core/Pipe/_deduplicate.py +0 -0
  207. {meerschaum-2.6.3 → meerschaum-2.6.5}/meerschaum/core/Pipe/_delete.py +0 -0
  208. {meerschaum-2.6.3 → meerschaum-2.6.5}/meerschaum/core/Pipe/_drop.py +0 -0
  209. {meerschaum-2.6.3 → meerschaum-2.6.5}/meerschaum/core/Pipe/_dtypes.py +0 -0
  210. {meerschaum-2.6.3 → meerschaum-2.6.5}/meerschaum/core/Pipe/_edit.py +0 -0
  211. {meerschaum-2.6.3 → meerschaum-2.6.5}/meerschaum/core/Pipe/_fetch.py +0 -0
  212. {meerschaum-2.6.3 → meerschaum-2.6.5}/meerschaum/core/Pipe/_register.py +0 -0
  213. {meerschaum-2.6.3 → meerschaum-2.6.5}/meerschaum/core/Pipe/_show.py +0 -0
  214. {meerschaum-2.6.3 → meerschaum-2.6.5}/meerschaum/core/Pipe/_sync.py +0 -0
  215. {meerschaum-2.6.3 → meerschaum-2.6.5}/meerschaum/core/Pipe/_verify.py +0 -0
  216. {meerschaum-2.6.3 → meerschaum-2.6.5}/meerschaum/core/Plugin/__init__.py +0 -0
  217. {meerschaum-2.6.3 → meerschaum-2.6.5}/meerschaum/core/User/_User.py +0 -0
  218. {meerschaum-2.6.3 → meerschaum-2.6.5}/meerschaum/core/User/__init__.py +0 -0
  219. {meerschaum-2.6.3 → meerschaum-2.6.5}/meerschaum/core/__init__.py +0 -0
  220. {meerschaum-2.6.3 → meerschaum-2.6.5}/meerschaum/jobs/_Executor.py +0 -0
  221. {meerschaum-2.6.3 → meerschaum-2.6.5}/meerschaum/jobs/_Job.py +0 -0
  222. {meerschaum-2.6.3 → meerschaum-2.6.5}/meerschaum/jobs/__init__.py +0 -0
  223. {meerschaum-2.6.3 → meerschaum-2.6.5}/meerschaum/jobs/systemd.py +0 -0
  224. {meerschaum-2.6.3 → meerschaum-2.6.5}/meerschaum/plugins/_Plugin.py +0 -0
  225. {meerschaum-2.6.3 → meerschaum-2.6.5}/meerschaum/plugins/__init__.py +0 -0
  226. {meerschaum-2.6.3 → meerschaum-2.6.5}/meerschaum/plugins/bootstrap.py +0 -0
  227. {meerschaum-2.6.3 → meerschaum-2.6.5}/meerschaum/utils/__init__.py +0 -0
  228. {meerschaum-2.6.3 → meerschaum-2.6.5}/meerschaum/utils/_get_pipes.py +0 -0
  229. {meerschaum-2.6.3 → meerschaum-2.6.5}/meerschaum/utils/daemon/Daemon.py +0 -0
  230. {meerschaum-2.6.3 → meerschaum-2.6.5}/meerschaum/utils/daemon/FileDescriptorInterceptor.py +0 -0
  231. {meerschaum-2.6.3 → meerschaum-2.6.5}/meerschaum/utils/daemon/RotatingFile.py +0 -0
  232. {meerschaum-2.6.3 → meerschaum-2.6.5}/meerschaum/utils/daemon/StdinFile.py +0 -0
  233. {meerschaum-2.6.3 → meerschaum-2.6.5}/meerschaum/utils/daemon/__init__.py +0 -0
  234. {meerschaum-2.6.3 → meerschaum-2.6.5}/meerschaum/utils/daemon/_names.py +0 -0
  235. {meerschaum-2.6.3 → meerschaum-2.6.5}/meerschaum/utils/dataframe.py +0 -0
  236. {meerschaum-2.6.3 → meerschaum-2.6.5}/meerschaum/utils/debug.py +0 -0
  237. {meerschaum-2.6.3 → meerschaum-2.6.5}/meerschaum/utils/dtypes/sql.py +0 -0
  238. {meerschaum-2.6.3 → meerschaum-2.6.5}/meerschaum/utils/formatting/__init__.py +0 -0
  239. {meerschaum-2.6.3 → meerschaum-2.6.5}/meerschaum/utils/formatting/_jobs.py +0 -0
  240. {meerschaum-2.6.3 → meerschaum-2.6.5}/meerschaum/utils/formatting/_pipes.py +0 -0
  241. {meerschaum-2.6.3 → meerschaum-2.6.5}/meerschaum/utils/formatting/_pprint.py +0 -0
  242. {meerschaum-2.6.3 → meerschaum-2.6.5}/meerschaum/utils/formatting/_shell.py +0 -0
  243. {meerschaum-2.6.3 → meerschaum-2.6.5}/meerschaum/utils/interactive.py +0 -0
  244. {meerschaum-2.6.3 → meerschaum-2.6.5}/meerschaum/utils/misc.py +0 -0
  245. {meerschaum-2.6.3 → meerschaum-2.6.5}/meerschaum/utils/networking.py +0 -0
  246. {meerschaum-2.6.3 → meerschaum-2.6.5}/meerschaum/utils/packages/__init__.py +0 -0
  247. {meerschaum-2.6.3 → meerschaum-2.6.5}/meerschaum/utils/packages/_packages.py +0 -0
  248. {meerschaum-2.6.3 → meerschaum-2.6.5}/meerschaum/utils/packages/lazy_loader.py +0 -0
  249. {meerschaum-2.6.3 → meerschaum-2.6.5}/meerschaum/utils/pool.py +0 -0
  250. {meerschaum-2.6.3 → meerschaum-2.6.5}/meerschaum/utils/process.py +0 -0
  251. {meerschaum-2.6.3 → meerschaum-2.6.5}/meerschaum/utils/prompt.py +0 -0
  252. {meerschaum-2.6.3 → meerschaum-2.6.5}/meerschaum/utils/schedule.py +0 -0
  253. {meerschaum-2.6.3 → meerschaum-2.6.5}/meerschaum/utils/sql.py +0 -0
  254. {meerschaum-2.6.3 → meerschaum-2.6.5}/meerschaum/utils/threading.py +0 -0
  255. {meerschaum-2.6.3 → meerschaum-2.6.5}/meerschaum/utils/typing.py +0 -0
  256. {meerschaum-2.6.3 → meerschaum-2.6.5}/meerschaum/utils/venv/_Venv.py +0 -0
  257. {meerschaum-2.6.3 → meerschaum-2.6.5}/meerschaum/utils/venv/__init__.py +0 -0
  258. {meerschaum-2.6.3 → meerschaum-2.6.5}/meerschaum/utils/warnings.py +0 -0
  259. {meerschaum-2.6.3 → meerschaum-2.6.5}/meerschaum/utils/yaml.py +0 -0
  260. {meerschaum-2.6.3 → meerschaum-2.6.5}/meerschaum.egg-info/SOURCES.txt +0 -0
  261. {meerschaum-2.6.3 → meerschaum-2.6.5}/meerschaum.egg-info/dependency_links.txt +0 -0
  262. {meerschaum-2.6.3 → meerschaum-2.6.5}/meerschaum.egg-info/entry_points.txt +0 -0
  263. {meerschaum-2.6.3 → meerschaum-2.6.5}/meerschaum.egg-info/requires.txt +0 -0
  264. {meerschaum-2.6.3 → meerschaum-2.6.5}/meerschaum.egg-info/top_level.txt +0 -0
  265. {meerschaum-2.6.3 → meerschaum-2.6.5}/meerschaum.egg-info/zip-safe +0 -0
  266. {meerschaum-2.6.3 → meerschaum-2.6.5}/setup.cfg +0 -0
  267. {meerschaum-2.6.3 → meerschaum-2.6.5}/setup.py +0 -0
  268. {meerschaum-2.6.3 → meerschaum-2.6.5}/tests/test_actions.py +0 -0
  269. {meerschaum-2.6.3 → meerschaum-2.6.5}/tests/test_arguments.py +0 -0
  270. {meerschaum-2.6.3 → meerschaum-2.6.5}/tests/test_deduplicate.py +0 -0
  271. {meerschaum-2.6.3 → meerschaum-2.6.5}/tests/test_jobs.py +0 -0
  272. {meerschaum-2.6.3 → meerschaum-2.6.5}/tests/test_pipe_data.py +0 -0
  273. {meerschaum-2.6.3 → meerschaum-2.6.5}/tests/test_sql.py +0 -0
  274. {meerschaum-2.6.3 → meerschaum-2.6.5}/tests/test_sync.py +0 -0
  275. {meerschaum-2.6.3 → meerschaum-2.6.5}/tests/test_users.py +0 -0
  276. {meerschaum-2.6.3 → meerschaum-2.6.5}/tests/test_verify.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: meerschaum
3
- Version: 2.6.3
3
+ Version: 2.6.5
4
4
  Summary: Sync Time-Series Pipes with Meerschaum
5
5
  Home-page: https://meerschaum.io
6
6
  Author: Bennett Meares
@@ -2,4 +2,4 @@
2
2
  Specify the Meerschaum release version.
3
3
  """
4
4
 
5
- __version__ = "2.6.3"
5
+ __version__ = "2.6.5"
@@ -877,10 +877,21 @@ def get_pipe_data(
877
877
  attempt_cast_to_uuid,
878
878
  are_dtypes_equal,
879
879
  )
880
+ from meerschaum.utils.dtypes.sql import get_pd_type_from_db_type
880
881
  pd = import_pandas()
881
882
  is_dask = 'dask' in pd.__name__
882
883
 
883
- dtypes = pipe.dtypes
884
+ cols_types = pipe.get_columns_types(debug=debug)
885
+ dtypes = {
886
+ **{
887
+ p_col: to_pandas_dtype(p_typ)
888
+ for p_col, p_typ in pipe.dtypes.items()
889
+ },
890
+ **{
891
+ col: get_pd_type_from_db_type(typ)
892
+ for col, typ in cols_types.items()
893
+ }
894
+ }
884
895
  if dtypes:
885
896
  if self.flavor == 'sqlite':
886
897
  if not pipe.columns.get('datetime', None):
@@ -1078,7 +1089,12 @@ def get_pipe_data_query(
1078
1089
  """
1079
1090
  from meerschaum.utils.misc import items_str
1080
1091
  from meerschaum.utils.sql import sql_item_name, dateadd_str
1092
+ from meerschaum.utils.dtypes import coerce_timezone
1093
+ from meerschaum.utils.dtypes.sql import get_pd_type_from_db_type
1094
+
1095
+ dt_col = pipe.columns.get('datetime', None)
1081
1096
  existing_cols = pipe.get_columns_types(debug=debug)
1097
+ dt_typ = get_pd_type_from_db_type(existing_cols[dt_col]) if dt_col in existing_cols else None
1082
1098
  select_columns = (
1083
1099
  [col for col in existing_cols]
1084
1100
  if not select_columns
@@ -1097,6 +1113,10 @@ def get_pipe_data_query(
1097
1113
  begin -= backtrack_interval
1098
1114
 
1099
1115
  begin, end = pipe.parse_date_bounds(begin, end)
1116
+ if isinstance(begin, datetime) and dt_typ:
1117
+ begin = coerce_timezone(begin, strip_utc=('utc' not in dt_typ.lower()))
1118
+ if isinstance(end, datetime) and dt_typ:
1119
+ end = coerce_timezone(end, strip_utc=('utc' not in dt_typ.lower()))
1100
1120
 
1101
1121
  cols_names = [
1102
1122
  sql_item_name(col, self.flavor, None)
@@ -641,7 +641,7 @@ def exec_queries(
641
641
  will be considered a callable hook that returns a list of queries to be executed
642
642
  before the next item in the list.
643
643
 
644
- break_on_error: bool, default True
644
+ break_on_error: bool, default False
645
645
  If `True`, stop executing when a query fails.
646
646
 
647
647
  rollback: bool, default True
@@ -416,7 +416,7 @@ def get_pipe_data(
416
416
  table_name = self.quote_table(pipe.target)
417
417
  indices = [col for col in pipe.columns.values() if col]
418
418
  ix_docs = [
419
- string_to_dict(doc['ix'].replace(COLON, ':'))
419
+ string_to_dict(doc.get('ix', '').replace(COLON, ':'))
420
420
  for doc in self.read_docs(
421
421
  pipe.target,
422
422
  begin=begin,
@@ -737,6 +737,8 @@ def parse_date_bounds(self, *dt_vals: Union[datetime, int, None]) -> Union[
737
737
 
738
738
  dt_col = self.columns.get('datetime', None)
739
739
  dt_typ = str(self.dtypes.get(dt_col, 'datetime64[ns, UTC]'))
740
+ if dt_typ == 'datetime':
741
+ dt_typ = 'datetime64[ns, UTC]'
740
742
  return coerce_timezone(dt_val, strip_utc=('utc' not in dt_typ.lower()))
741
743
 
742
744
  bounds = tuple(_parse_date_bound(dt_val) for dt_val in dt_vals)
@@ -284,4 +284,7 @@ def coerce_timezone(
284
284
  return dt
285
285
  return dt.replace(tzinfo=timezone.utc)
286
286
 
287
- return dt.astimezone(timezone.utc)
287
+ utc_dt = dt.astimezone(timezone.utc)
288
+ if strip_utc:
289
+ return utc_dt.replace(tzinfo=None)
290
+ return utc_dt
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: meerschaum
3
- Version: 2.6.3
3
+ Version: 2.6.5
4
4
  Summary: Sync Time-Series Pipes with Meerschaum
5
5
  Home-page: https://meerschaum.io
6
6
  Author: Bennett Meares
@@ -136,10 +136,10 @@ def test_force_json_dtype(flavor: str):
136
136
  conn = conns[flavor]
137
137
  pipe = Pipe('foo', 'bar', session_id, instance=conn, dtypes={'a': 'json'})
138
138
  _ = pipe.delete(debug=debug)
139
- pipe = Pipe('foo', 'bar', session_id, instance=conn, dtypes={'a': 'json'})
139
+ pipe = Pipe('foo', 'bar', session_id, instance=conn, dtypes={'a': 'json'}, columns=['id'])
140
140
  success, msg = pipe.sync([
141
- {'a': json.dumps(['b', 'c'])},
142
- {'a': json.dumps({'b': 1})},
141
+ {'id': 1, 'a': json.dumps(['b', 'c'])},
142
+ {'id': 2, 'a': json.dumps({'b': 1})},
143
143
  ])
144
144
  assert success, msg
145
145
  pprint(pipe.get_columns_types())
@@ -171,10 +171,10 @@ def test_infer_numeric_dtype(flavor: str):
171
171
  conn = conns[flavor]
172
172
  pipe = Pipe('infer', 'numeric', instance=conn)
173
173
  _ = pipe.delete(debug=debug)
174
- pipe = Pipe('infer', 'numeric', instance=conn)
174
+ pipe = Pipe('infer', 'numeric', instance=conn, columns=['id'])
175
175
  success, msg = pipe.sync([
176
- {'a': Decimal('1')},
177
- {'a': Decimal(numeric_str)},
176
+ {'id': 1, 'a': Decimal('1')},
177
+ {'id': 2, 'a': Decimal(numeric_str)},
178
178
  ])
179
179
  assert success, msg
180
180
  pprint(pipe.get_columns_types())
@@ -195,11 +195,11 @@ def test_infer_uuid_dtype(flavor: str):
195
195
  conn = conns[flavor]
196
196
  pipe = Pipe('infer', 'uuid', instance=conn)
197
197
  _ = pipe.delete(debug=debug)
198
- pipe = Pipe('infer', 'uuid', instance=conn)
198
+ pipe = Pipe('infer', 'uuid', instance=conn, columns=['id'])
199
199
  uuid_str = "e6f3a4ea-f1af-4e93-8da9-716b57672206"
200
200
  success, msg = pipe.sync(
201
201
  [
202
- {'a': UUID(uuid_str)},
202
+ {'id': 1, 'a': UUID(uuid_str)},
203
203
  ],
204
204
  debug=debug,
205
205
  )
@@ -222,10 +222,10 @@ def test_infer_numeric_from_mixed_types(flavor: str):
222
222
  conn = conns[flavor]
223
223
  pipe = Pipe('foo', 'bar', session_id, instance=conn)
224
224
  _ = pipe.delete(debug=debug)
225
- pipe = Pipe('foo', 'bar', session_id, instance=conn)
226
- success, msg = pipe.sync([{'a': 1}])
225
+ pipe = Pipe('foo', 'bar', session_id, instance=conn, columns=['id'])
226
+ success, msg = pipe.sync([{'id': 1, 'a': 1}])
227
227
  assert success, msg
228
- success, msg = pipe.sync([{'a': 2.1}])
228
+ success, msg = pipe.sync([{'id': 2, 'a': 2.1}])
229
229
  assert success, msg
230
230
  pprint(pipe.get_columns_types())
231
231
  df = pipe.get_data(debug=debug)
@@ -247,10 +247,10 @@ def test_force_numeric_dtype(flavor: str):
247
247
  conn = conns[flavor]
248
248
  pipe = Pipe('foo', 'bar', session_id, instance=conn, dtypes={'a': 'numeric'})
249
249
  _ = pipe.delete(debug=debug)
250
- pipe = Pipe('foo', 'bar', session_id, instance=conn, dtypes={'a': 'numeric'})
250
+ pipe = Pipe('foo', 'bar', session_id, instance=conn, dtypes={'a': 'numeric'}, columns=['id'])
251
251
  success, msg = pipe.sync([
252
- {'a': '1'},
253
- {'a': '2.1'},
252
+ {'id': 1, 'a': '1'},
253
+ {'id': 2, 'a': '2.1'},
254
254
  ])
255
255
  assert success, msg
256
256
  pprint(pipe.get_columns_types())
@@ -706,3 +706,94 @@ def test_sync_uuids_simple_upsert(flavor: str):
706
706
  assert len(df) == 1
707
707
  assert isinstance(df['val'][0], UUID)
708
708
  assert df['val'][0] == UUID('d1cc1516-16e5-4471-8ab9-e969a1def655')
709
+
710
+
711
+ @pytest.mark.parametrize("flavor", get_flavors())
712
+ def test_mixed_timezone_aware_and_naive(flavor: str):
713
+ conn = conns[flavor]
714
+ if conn.type != 'sql':
715
+ return
716
+
717
+ pd = mrsm.attempt_import('pandas')
718
+ target = 'test_timezone_mix'
719
+ pipe = mrsm.Pipe('test', 'timezone', 'aware_naive', instance=conn)
720
+ pipe.delete()
721
+ pipe = mrsm.Pipe(
722
+ 'test', 'timezone', 'aware_naive',
723
+ instance=conn,
724
+ columns={'datetime': 'ts'},
725
+ target=target,
726
+ )
727
+
728
+ src_df = pd.DataFrame([{'ts': datetime(2024, 1, 1), 'val': 2}])
729
+ conn.to_sql(src_df, target, debug=debug)
730
+
731
+ df = pipe.get_data(debug=debug)
732
+ unseen, update, delta = pipe.filter_existing(src_df, debug=debug)
733
+ assert len(unseen) == 0
734
+ assert len(update) == 0
735
+ assert len(delta) == 0
736
+
737
+ success, msg = pipe.sync([{'ts': '2024-01-01 05:00:00', 'val': 3}])
738
+ assert success, msg
739
+
740
+ df = pipe.get_data(begin='2024-01-01 05:00:00', debug=debug)
741
+ assert len(df) == 1
742
+ assert df['val'][0] == 3
743
+
744
+ success, msg = pipe.sync([{'ts': '2024-01-01 05:00:00+00:00', 'val': 4}])
745
+ assert success, msg
746
+
747
+ df = pipe.get_data(begin='2024-01-01 05:00:00+00:00', debug=debug)
748
+ assert len(df) == 1
749
+ assert df['val'][0] == 4
750
+
751
+
752
+ @pytest.mark.parametrize("flavor", get_flavors())
753
+ def test_parse_date_bounds(flavor: str):
754
+ """
755
+ Test that datetime bounds are parsed correctly.
756
+ """
757
+ conn = conns[flavor]
758
+ pipe = mrsm.Pipe('test', 'parse_date_bounds', 'tz', instance=conn)
759
+ pipe.delete()
760
+ pipe = mrsm.Pipe('test', 'parse_date_bounds', 'tz', instance=conn, columns={'datetime': 'ts'})
761
+ success, msg = pipe.sync([{'ts': '2024-01-01'}], debug=debug)
762
+ assert success, msg
763
+
764
+ naive_begin = datetime(2024, 1, 1)
765
+ naive_end = datetime(2024, 1, 2)
766
+ aware_begin = datetime(2024, 1, 1, tzinfo=timezone.utc)
767
+ aware_end = datetime(2024, 2, 1, tzinfo=timezone.utc)
768
+
769
+ begin, end = pipe.parse_date_bounds(naive_begin, naive_end)
770
+ assert begin.tzinfo is not None
771
+ assert end.tzinfo is not None
772
+ begin, end = pipe.parse_date_bounds(aware_begin, aware_end)
773
+ assert begin.tzinfo is not None
774
+ assert end.tzinfo is not None
775
+ begin, end = pipe.parse_date_bounds(naive_begin, aware_end)
776
+ assert begin.tzinfo is not None
777
+ assert end.tzinfo is not None
778
+
779
+ pipe = mrsm.Pipe('test', 'parse_date_bounds', 'naive', instance=conn)
780
+ pipe.delete()
781
+ pipe = mrsm.Pipe(
782
+ 'test', 'parse_date_bounds', 'naive',
783
+ instance=conn,
784
+ columns={'datetime': 'ts'},
785
+ dtypes={'ts': 'datetime64[ns]'},
786
+ )
787
+
788
+ success, msg = pipe.sync([{'ts': '2024-01-01'}], debug=debug)
789
+ assert success, msg
790
+
791
+ begin, end = pipe.parse_date_bounds(naive_begin, naive_end)
792
+ assert begin.tzinfo is None
793
+ assert end.tzinfo is None
794
+ begin, end = pipe.parse_date_bounds(aware_begin, aware_end)
795
+ assert begin.tzinfo is None
796
+ assert end.tzinfo is None
797
+ begin, end = pipe.parse_date_bounds(naive_begin, aware_end)
798
+ assert begin.tzinfo is None
799
+ assert end.tzinfo is None
File without changes
File without changes
File without changes