meerschaum 2.9.5__py3-none-any.whl → 3.0.0__py3-none-any.whl

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 (200) hide show
  1. meerschaum/__init__.py +5 -2
  2. meerschaum/_internal/__init__.py +1 -0
  3. meerschaum/_internal/arguments/_parse_arguments.py +4 -4
  4. meerschaum/_internal/arguments/_parser.py +33 -4
  5. meerschaum/_internal/cli/__init__.py +6 -0
  6. meerschaum/_internal/cli/daemons.py +103 -0
  7. meerschaum/_internal/cli/entry.py +220 -0
  8. meerschaum/_internal/cli/workers.py +435 -0
  9. meerschaum/_internal/docs/index.py +48 -2
  10. meerschaum/_internal/entry.py +50 -14
  11. meerschaum/_internal/shell/Shell.py +121 -29
  12. meerschaum/_internal/shell/__init__.py +4 -1
  13. meerschaum/_internal/static.py +359 -0
  14. meerschaum/_internal/term/TermPageHandler.py +1 -2
  15. meerschaum/_internal/term/__init__.py +40 -6
  16. meerschaum/_internal/term/tools.py +33 -8
  17. meerschaum/actions/__init__.py +6 -4
  18. meerschaum/actions/api.py +53 -13
  19. meerschaum/actions/attach.py +1 -0
  20. meerschaum/actions/bootstrap.py +8 -8
  21. meerschaum/actions/delete.py +4 -2
  22. meerschaum/actions/edit.py +171 -25
  23. meerschaum/actions/login.py +8 -8
  24. meerschaum/actions/register.py +143 -6
  25. meerschaum/actions/reload.py +22 -5
  26. meerschaum/actions/restart.py +14 -0
  27. meerschaum/actions/show.py +184 -31
  28. meerschaum/actions/start.py +166 -17
  29. meerschaum/actions/stop.py +38 -2
  30. meerschaum/actions/sync.py +7 -2
  31. meerschaum/actions/tag.py +9 -8
  32. meerschaum/actions/verify.py +5 -8
  33. meerschaum/api/__init__.py +45 -15
  34. meerschaum/api/_events.py +46 -4
  35. meerschaum/api/_oauth2.py +162 -9
  36. meerschaum/api/_tokens.py +102 -0
  37. meerschaum/api/dash/__init__.py +0 -3
  38. meerschaum/api/dash/callbacks/__init__.py +1 -0
  39. meerschaum/api/dash/callbacks/custom.py +4 -3
  40. meerschaum/api/dash/callbacks/dashboard.py +198 -118
  41. meerschaum/api/dash/callbacks/jobs.py +14 -7
  42. meerschaum/api/dash/callbacks/login.py +10 -1
  43. meerschaum/api/dash/callbacks/pipes.py +194 -14
  44. meerschaum/api/dash/callbacks/plugins.py +0 -1
  45. meerschaum/api/dash/callbacks/register.py +10 -3
  46. meerschaum/api/dash/callbacks/settings/password_reset.py +2 -2
  47. meerschaum/api/dash/callbacks/tokens.py +389 -0
  48. meerschaum/api/dash/components.py +36 -15
  49. meerschaum/api/dash/jobs.py +1 -1
  50. meerschaum/api/dash/keys.py +35 -93
  51. meerschaum/api/dash/pages/__init__.py +2 -1
  52. meerschaum/api/dash/pages/dashboard.py +1 -20
  53. meerschaum/api/dash/pages/{job.py → jobs.py} +10 -7
  54. meerschaum/api/dash/pages/login.py +2 -2
  55. meerschaum/api/dash/pages/pipes.py +16 -5
  56. meerschaum/api/dash/pages/settings/password_reset.py +1 -1
  57. meerschaum/api/dash/pages/tokens.py +53 -0
  58. meerschaum/api/dash/pipes.py +382 -95
  59. meerschaum/api/dash/sessions.py +12 -0
  60. meerschaum/api/dash/tokens.py +603 -0
  61. meerschaum/api/dash/websockets.py +1 -1
  62. meerschaum/api/dash/webterm.py +18 -6
  63. meerschaum/api/models/__init__.py +23 -3
  64. meerschaum/api/models/_actions.py +22 -0
  65. meerschaum/api/models/_pipes.py +91 -7
  66. meerschaum/api/models/_tokens.py +81 -0
  67. meerschaum/api/resources/static/js/terminado.js +3 -0
  68. meerschaum/api/resources/static/js/xterm-addon-unicode11.js +2 -0
  69. meerschaum/api/resources/templates/termpage.html +13 -0
  70. meerschaum/api/routes/__init__.py +1 -0
  71. meerschaum/api/routes/_actions.py +3 -4
  72. meerschaum/api/routes/_connectors.py +3 -7
  73. meerschaum/api/routes/_jobs.py +26 -35
  74. meerschaum/api/routes/_login.py +120 -15
  75. meerschaum/api/routes/_misc.py +5 -10
  76. meerschaum/api/routes/_pipes.py +178 -143
  77. meerschaum/api/routes/_plugins.py +38 -28
  78. meerschaum/api/routes/_tokens.py +236 -0
  79. meerschaum/api/routes/_users.py +47 -35
  80. meerschaum/api/routes/_version.py +3 -3
  81. meerschaum/api/routes/_webterm.py +3 -3
  82. meerschaum/config/__init__.py +100 -30
  83. meerschaum/config/_default.py +132 -64
  84. meerschaum/config/_edit.py +38 -32
  85. meerschaum/config/_formatting.py +2 -0
  86. meerschaum/config/_patch.py +10 -8
  87. meerschaum/config/_paths.py +133 -13
  88. meerschaum/config/_read_config.py +87 -36
  89. meerschaum/config/_sync.py +6 -3
  90. meerschaum/config/_version.py +1 -1
  91. meerschaum/config/environment.py +262 -0
  92. meerschaum/config/stack/__init__.py +37 -15
  93. meerschaum/config/static.py +18 -0
  94. meerschaum/connectors/_Connector.py +11 -6
  95. meerschaum/connectors/__init__.py +41 -22
  96. meerschaum/connectors/api/_APIConnector.py +34 -6
  97. meerschaum/connectors/api/_actions.py +2 -2
  98. meerschaum/connectors/api/_jobs.py +12 -1
  99. meerschaum/connectors/api/_login.py +33 -7
  100. meerschaum/connectors/api/_misc.py +2 -2
  101. meerschaum/connectors/api/_pipes.py +23 -32
  102. meerschaum/connectors/api/_plugins.py +2 -2
  103. meerschaum/connectors/api/_request.py +1 -1
  104. meerschaum/connectors/api/_tokens.py +146 -0
  105. meerschaum/connectors/api/_users.py +70 -58
  106. meerschaum/connectors/instance/_InstanceConnector.py +83 -0
  107. meerschaum/connectors/instance/__init__.py +10 -0
  108. meerschaum/connectors/instance/_pipes.py +442 -0
  109. meerschaum/connectors/instance/_plugins.py +159 -0
  110. meerschaum/connectors/instance/_tokens.py +317 -0
  111. meerschaum/connectors/instance/_users.py +188 -0
  112. meerschaum/connectors/parse.py +5 -2
  113. meerschaum/connectors/sql/_SQLConnector.py +22 -5
  114. meerschaum/connectors/sql/_cli.py +12 -11
  115. meerschaum/connectors/sql/_create_engine.py +12 -168
  116. meerschaum/connectors/sql/_fetch.py +2 -18
  117. meerschaum/connectors/sql/_pipes.py +295 -278
  118. meerschaum/connectors/sql/_plugins.py +29 -0
  119. meerschaum/connectors/sql/_sql.py +46 -21
  120. meerschaum/connectors/sql/_users.py +36 -2
  121. meerschaum/connectors/sql/tables/__init__.py +254 -122
  122. meerschaum/connectors/valkey/_ValkeyConnector.py +5 -7
  123. meerschaum/connectors/valkey/_pipes.py +60 -31
  124. meerschaum/connectors/valkey/_plugins.py +2 -26
  125. meerschaum/core/Pipe/__init__.py +115 -85
  126. meerschaum/core/Pipe/_attributes.py +425 -124
  127. meerschaum/core/Pipe/_bootstrap.py +54 -24
  128. meerschaum/core/Pipe/_cache.py +555 -0
  129. meerschaum/core/Pipe/_clear.py +0 -11
  130. meerschaum/core/Pipe/_data.py +96 -68
  131. meerschaum/core/Pipe/_deduplicate.py +0 -13
  132. meerschaum/core/Pipe/_delete.py +12 -21
  133. meerschaum/core/Pipe/_drop.py +11 -23
  134. meerschaum/core/Pipe/_dtypes.py +49 -19
  135. meerschaum/core/Pipe/_edit.py +14 -4
  136. meerschaum/core/Pipe/_fetch.py +1 -1
  137. meerschaum/core/Pipe/_index.py +8 -14
  138. meerschaum/core/Pipe/_show.py +5 -5
  139. meerschaum/core/Pipe/_sync.py +123 -204
  140. meerschaum/core/Pipe/_verify.py +4 -4
  141. meerschaum/{plugins → core/Plugin}/_Plugin.py +16 -12
  142. meerschaum/core/Plugin/__init__.py +1 -1
  143. meerschaum/core/Token/_Token.py +220 -0
  144. meerschaum/core/Token/__init__.py +12 -0
  145. meerschaum/core/User/_User.py +35 -10
  146. meerschaum/core/User/__init__.py +9 -1
  147. meerschaum/core/__init__.py +1 -0
  148. meerschaum/jobs/_Executor.py +88 -4
  149. meerschaum/jobs/_Job.py +149 -38
  150. meerschaum/jobs/__init__.py +3 -2
  151. meerschaum/jobs/systemd.py +8 -3
  152. meerschaum/models/__init__.py +35 -0
  153. meerschaum/models/pipes.py +247 -0
  154. meerschaum/models/tokens.py +38 -0
  155. meerschaum/models/users.py +26 -0
  156. meerschaum/plugins/__init__.py +301 -88
  157. meerschaum/plugins/bootstrap.py +510 -4
  158. meerschaum/utils/_get_pipes.py +97 -30
  159. meerschaum/utils/daemon/Daemon.py +199 -43
  160. meerschaum/utils/daemon/FileDescriptorInterceptor.py +0 -1
  161. meerschaum/utils/daemon/RotatingFile.py +63 -36
  162. meerschaum/utils/daemon/StdinFile.py +53 -13
  163. meerschaum/utils/daemon/__init__.py +47 -6
  164. meerschaum/utils/daemon/_names.py +6 -3
  165. meerschaum/utils/dataframe.py +479 -81
  166. meerschaum/utils/debug.py +49 -19
  167. meerschaum/utils/dtypes/__init__.py +476 -34
  168. meerschaum/utils/dtypes/sql.py +369 -29
  169. meerschaum/utils/formatting/__init__.py +5 -2
  170. meerschaum/utils/formatting/_jobs.py +1 -1
  171. meerschaum/utils/formatting/_pipes.py +52 -50
  172. meerschaum/utils/formatting/_pprint.py +1 -0
  173. meerschaum/utils/formatting/_shell.py +44 -18
  174. meerschaum/utils/misc.py +268 -186
  175. meerschaum/utils/packages/__init__.py +25 -40
  176. meerschaum/utils/packages/_packages.py +42 -34
  177. meerschaum/utils/pipes.py +213 -0
  178. meerschaum/utils/process.py +2 -2
  179. meerschaum/utils/prompt.py +175 -144
  180. meerschaum/utils/schedule.py +2 -1
  181. meerschaum/utils/sql.py +134 -47
  182. meerschaum/utils/threading.py +42 -0
  183. meerschaum/utils/typing.py +1 -4
  184. meerschaum/utils/venv/_Venv.py +2 -2
  185. meerschaum/utils/venv/__init__.py +7 -7
  186. meerschaum/utils/warnings.py +19 -13
  187. {meerschaum-2.9.5.dist-info → meerschaum-3.0.0.dist-info}/METADATA +94 -96
  188. meerschaum-3.0.0.dist-info/RECORD +289 -0
  189. {meerschaum-2.9.5.dist-info → meerschaum-3.0.0.dist-info}/WHEEL +1 -1
  190. meerschaum-3.0.0.dist-info/licenses/NOTICE +2 -0
  191. meerschaum/api/models/_interfaces.py +0 -15
  192. meerschaum/api/models/_locations.py +0 -15
  193. meerschaum/api/models/_metrics.py +0 -15
  194. meerschaum/config/_environment.py +0 -145
  195. meerschaum/config/static/__init__.py +0 -186
  196. meerschaum-2.9.5.dist-info/RECORD +0 -263
  197. {meerschaum-2.9.5.dist-info → meerschaum-3.0.0.dist-info}/entry_points.txt +0 -0
  198. {meerschaum-2.9.5.dist-info → meerschaum-3.0.0.dist-info}/licenses/LICENSE +0 -0
  199. {meerschaum-2.9.5.dist-info → meerschaum-3.0.0.dist-info}/top_level.txt +0 -0
  200. {meerschaum-2.9.5.dist-info → meerschaum-3.0.0.dist-info}/zip-safe +0 -0
@@ -8,6 +8,8 @@ Utility functions for working with SQL data types.
8
8
 
9
9
  from __future__ import annotations
10
10
  from meerschaum.utils.typing import Dict, Union, Tuple, Optional
11
+ from meerschaum._internal.static import STATIC_CONFIG as _STATIC_CONFIG
12
+ from meerschaum.utils.dtypes import MRSM_PRECISION_UNITS_ABBREVIATIONS as _MRSM_PRECISION_UNITS_ABBREVIATIONS
11
13
 
12
14
  NUMERIC_PRECISION_FLAVORS: Dict[str, Tuple[int, int]] = {
13
15
  'mariadb': (38, 20),
@@ -67,6 +69,9 @@ for _flavor, (_precision, _scale) in NUMERIC_PRECISION_FLAVORS.items():
67
69
  'DECIMAL': f"DECIMAL({_precision}, {_scale})",
68
70
  })
69
71
 
72
+ _default_precision_unit = _STATIC_CONFIG['dtypes']['datetime']['default_precision_unit']
73
+ _default_precision_abbreviation = _MRSM_PRECISION_UNITS_ABBREVIATIONS[_default_precision_unit]
74
+
70
75
  DB_TO_PD_DTYPES: Dict[str, Union[str, Dict[str, str]]] = {
71
76
  'FLOAT': 'float64[pyarrow]',
72
77
  'REAL': 'float64[pyarrow]',
@@ -80,15 +85,21 @@ DB_TO_PD_DTYPES: Dict[str, Union[str, Dict[str, str]]] = {
80
85
  'NUMERIC': 'numeric',
81
86
  'GEOMETRY': 'geometry',
82
87
  'GEOMETRY(GEOMETRY)': 'geometry',
83
- 'TIMESTAMP': 'datetime64[ns]',
84
- 'TIMESTAMP WITHOUT TIMEZONE': 'datetime64[ns]',
85
- 'TIMESTAMP WITH TIMEZONE': 'datetime64[ns, UTC]',
86
- 'TIMESTAMP WITH TIME ZONE': 'datetime64[ns, UTC]',
87
- 'TIMESTAMPTZ': 'datetime64[ns, UTC]',
88
- 'DATE': 'datetime64[ns]',
89
- 'DATETIME': 'datetime64[ns]',
90
- 'DATETIME2': 'datetime64[ns]',
91
- 'DATETIMEOFFSET': 'datetime64[ns, UTC]',
88
+ 'TIMESTAMP': f'datetime64[{_default_precision_abbreviation}]',
89
+ 'TIMESTAMP WITHOUT TIMEZONE': f'datetime64[{_default_precision_abbreviation}]',
90
+ 'TIMESTAMP WITH TIMEZONE': f'datetime64[{_default_precision_abbreviation}, UTC]',
91
+ 'TIMESTAMP WITH TIME ZONE': f'datetime64[{_default_precision_abbreviation}, UTC]',
92
+ 'TIMESTAMPTZ': f'datetime64[{_default_precision_abbreviation}, UTC]',
93
+ 'DATE': 'date',
94
+ 'DATETIME': f'datetime64[{_default_precision_abbreviation}]',
95
+ 'DATETIME2': 'datetime64[us]',
96
+ 'DATETIME2(6)': 'datetime64[us]',
97
+ 'DATETIME2(3)': 'datetime64[ms]',
98
+ 'DATETIME2(0)': 'datetime64[s]',
99
+ 'DATETIMEOFFSET': 'datetime64[us, UTC]',
100
+ 'DATETIMEOFFSET(6)': 'datetime64[us, UTC]',
101
+ 'DATETIMEOFFSET(3)': 'datetime64[ms, UTC]',
102
+ 'DATETIMEOFFSET(0)': 'datetime64[s, UTC]',
92
103
  'TEXT': 'string[pyarrow]',
93
104
  'VARCHAR': 'string[pyarrow]',
94
105
  'CLOB': 'string[pyarrow]',
@@ -109,9 +120,9 @@ DB_TO_PD_DTYPES: Dict[str, Union[str, Dict[str, str]]] = {
109
120
  'VARBINARY(MAX)': 'bytes',
110
121
  'substrings': {
111
122
  'CHAR': 'string[pyarrow]',
112
- 'TIMESTAMP': 'datetime64[ns]',
113
- 'TIME': 'datetime64[ns]',
114
- 'DATE': 'datetime64[ns]',
123
+ 'TIMESTAMP': f'datetime64[{_default_precision_abbreviation}]',
124
+ 'TIME': f'datetime64[{_default_precision_abbreviation}]',
125
+ 'DATE': 'date',
115
126
  'DOUBLE': 'double[pyarrow]',
116
127
  'DECIMAL': 'numeric',
117
128
  'NUMERIC': 'numeric',
@@ -131,6 +142,7 @@ DB_TO_PD_DTYPES: Dict[str, Union[str, Dict[str, str]]] = {
131
142
  PD_TO_DB_DTYPES_FLAVORS: Dict[str, Dict[str, str]] = {
132
143
  'int': {
133
144
  'timescaledb': 'BIGINT',
145
+ 'timescaledb-ha': 'BIGINT',
134
146
  'postgresql': 'BIGINT',
135
147
  'postgis': 'BIGINT',
136
148
  'mariadb': 'BIGINT',
@@ -145,6 +157,7 @@ PD_TO_DB_DTYPES_FLAVORS: Dict[str, Dict[str, str]] = {
145
157
  },
146
158
  'uint': {
147
159
  'timescaledb': 'BIGINT',
160
+ 'timescaledb-ha': 'BIGINT',
148
161
  'postgresql': 'BIGINT',
149
162
  'postgis': 'BIGINT',
150
163
  'mariadb': 'BIGINT',
@@ -159,6 +172,7 @@ PD_TO_DB_DTYPES_FLAVORS: Dict[str, Dict[str, str]] = {
159
172
  },
160
173
  'int8': {
161
174
  'timescaledb': 'SMALLINT',
175
+ 'timescaledb-ha': 'SMALLINT',
162
176
  'postgresql': 'SMALLINT',
163
177
  'postgis': 'SMALLINT',
164
178
  'mariadb': 'SMALLINT',
@@ -173,6 +187,7 @@ PD_TO_DB_DTYPES_FLAVORS: Dict[str, Dict[str, str]] = {
173
187
  },
174
188
  'uint8': {
175
189
  'timescaledb': 'SMALLINT',
190
+ 'timescaledb-ha': 'SMALLINT',
176
191
  'postgresql': 'SMALLINT',
177
192
  'postgis': 'SMALLINT',
178
193
  'mariadb': 'SMALLINT',
@@ -187,6 +202,7 @@ PD_TO_DB_DTYPES_FLAVORS: Dict[str, Dict[str, str]] = {
187
202
  },
188
203
  'int16': {
189
204
  'timescaledb': 'SMALLINT',
205
+ 'timescaledb-ha': 'SMALLINT',
190
206
  'postgresql': 'SMALLINT',
191
207
  'postgis': 'SMALLINT',
192
208
  'mariadb': 'SMALLINT',
@@ -201,6 +217,7 @@ PD_TO_DB_DTYPES_FLAVORS: Dict[str, Dict[str, str]] = {
201
217
  },
202
218
  'int32': {
203
219
  'timescaledb': 'INT',
220
+ 'timescaledb-ha': 'INT',
204
221
  'postgresql': 'INT',
205
222
  'postgis': 'INT',
206
223
  'mariadb': 'INT',
@@ -215,6 +232,7 @@ PD_TO_DB_DTYPES_FLAVORS: Dict[str, Dict[str, str]] = {
215
232
  },
216
233
  'int64': {
217
234
  'timescaledb': 'BIGINT',
235
+ 'timescaledb-ha': 'BIGINT',
218
236
  'postgresql': 'BIGINT',
219
237
  'postgis': 'BIGINT',
220
238
  'mariadb': 'BIGINT',
@@ -229,6 +247,7 @@ PD_TO_DB_DTYPES_FLAVORS: Dict[str, Dict[str, str]] = {
229
247
  },
230
248
  'float': {
231
249
  'timescaledb': 'DOUBLE PRECISION',
250
+ 'timescaledb-ha': 'DOUBLE PRECISION',
232
251
  'postgresql': 'DOUBLE PRECISION',
233
252
  'postgis': 'DOUBLE PRECISION',
234
253
  'mariadb': 'DOUBLE PRECISION',
@@ -243,6 +262,7 @@ PD_TO_DB_DTYPES_FLAVORS: Dict[str, Dict[str, str]] = {
243
262
  },
244
263
  'double': {
245
264
  'timescaledb': 'DOUBLE PRECISION',
265
+ 'timescaledb-ha': 'DOUBLE PRECISION',
246
266
  'postgresql': 'DOUBLE PRECISION',
247
267
  'postgis': 'DOUBLE PRECISION',
248
268
  'mariadb': 'DOUBLE PRECISION',
@@ -256,41 +276,134 @@ PD_TO_DB_DTYPES_FLAVORS: Dict[str, Dict[str, str]] = {
256
276
  'default': 'DOUBLE',
257
277
  },
258
278
  'datetime64[ns]': {
259
- 'timescaledb': 'TIMESTAMP',
260
- 'postgresql': 'TIMESTAMP',
261
- 'postgis': 'TIMESTAMP',
279
+ 'timescaledb': 'TIMESTAMP(6)',
280
+ 'timescaledb-ha': 'TIMESTAMP(6)',
281
+ 'postgresql': 'TIMESTAMP(6)',
282
+ 'postgis': 'TIMESTAMP(6)',
262
283
  'mariadb': 'DATETIME',
263
284
  'mysql': 'DATETIME',
264
- 'mssql': 'DATETIME2',
285
+ 'mssql': 'DATETIME2(7)',
265
286
  'oracle': 'TIMESTAMP(9)',
266
287
  'sqlite': 'DATETIME',
267
- 'duckdb': 'TIMESTAMP',
268
- 'citus': 'TIMESTAMP',
269
- 'cockroachdb': 'TIMESTAMP',
288
+ 'duckdb': 'TIMESTAMP(6)',
289
+ 'citus': 'TIMESTAMP(6)',
290
+ 'cockroachdb': 'TIMESTAMP(6)',
270
291
  'default': 'DATETIME',
271
292
  },
272
293
  'datetime64[ns, UTC]': {
273
- 'timescaledb': 'TIMESTAMPTZ',
274
- 'postgresql': 'TIMESTAMPTZ',
275
- 'postgis': 'TIMESTAMPTZ',
294
+ 'timescaledb': 'TIMESTAMPTZ(6)',
295
+ 'timescaledb-ha': 'TIMESTAMPTZ(6)',
296
+ 'postgresql': 'TIMESTAMPTZ(9)',
297
+ 'postgis': 'TIMESTAMPTZ(6)',
276
298
  'mariadb': 'DATETIME',
277
299
  'mysql': 'DATETIME',
278
- 'mssql': 'DATETIMEOFFSET',
300
+ 'mssql': 'DATETIMEOFFSET(7)',
279
301
  'oracle': 'TIMESTAMP(9)',
280
302
  'sqlite': 'TIMESTAMP',
281
303
  'duckdb': 'TIMESTAMPTZ',
282
- 'citus': 'TIMESTAMPTZ',
283
- 'cockroachdb': 'TIMESTAMPTZ',
304
+ 'citus': 'TIMESTAMPTZ(6)',
305
+ 'cockroachdb': 'TIMESTAMPTZ(6)',
306
+ 'default': 'TIMESTAMPTZ',
307
+ },
308
+ 'datetime64[us]': {
309
+ 'timescaledb': 'TIMESTAMP(6)',
310
+ 'timescaledb-ha': 'TIMESTAMP(6)',
311
+ 'postgresql': 'TIMESTAMP(6)',
312
+ 'postgis': 'TIMESTAMP(6)',
313
+ 'mariadb': 'DATETIME',
314
+ 'mysql': 'DATETIME',
315
+ 'mssql': 'DATETIME2(6)',
316
+ 'oracle': 'TIMESTAMP(6)',
317
+ 'sqlite': 'DATETIME',
318
+ 'duckdb': 'TIMESTAMP(6)',
319
+ 'citus': 'TIMESTAMP(6)',
320
+ 'cockroachdb': 'TIMESTAMP',
321
+ 'default': 'DATETIME',
322
+ },
323
+ 'datetime64[us, UTC]': {
324
+ 'timescaledb': 'TIMESTAMPTZ(6)',
325
+ 'timescaledb-ha': 'TIMESTAMPTZ(6)',
326
+ 'postgresql': 'TIMESTAMPTZ(6)',
327
+ 'postgis': 'TIMESTAMPTZ(6)',
328
+ 'mariadb': 'DATETIME',
329
+ 'mysql': 'DATETIME',
330
+ 'mssql': 'DATETIMEOFFSET(6)',
331
+ 'oracle': 'TIMESTAMP(6)',
332
+ 'sqlite': 'TIMESTAMP',
333
+ 'duckdb': 'TIMESTAMPTZ',
334
+ 'citus': 'TIMESTAMPTZ(6)',
335
+ 'cockroachdb': 'TIMESTAMPTZ(6)',
284
336
  'default': 'TIMESTAMPTZ',
285
337
  },
338
+ 'datetime64[ms]': {
339
+ 'timescaledb': 'TIMESTAMP(3)',
340
+ 'timescaledb-ha': 'TIMESTAMP(3)',
341
+ 'postgresql': 'TIMESTAMP(3)',
342
+ 'postgis': 'TIMESTAMP(3)',
343
+ 'mariadb': 'DATETIME',
344
+ 'mysql': 'DATETIME',
345
+ 'mssql': 'DATETIME2(3)',
346
+ 'oracle': 'TIMESTAMP(3)',
347
+ 'sqlite': 'DATETIME',
348
+ 'duckdb': 'TIMESTAMP(3)',
349
+ 'citus': 'TIMESTAMP(3)',
350
+ 'cockroachdb': 'TIMESTAMP(3)',
351
+ 'default': 'DATETIME',
352
+ },
353
+ 'datetime64[ms, UTC]': {
354
+ 'timescaledb': 'TIMESTAMPTZ(3)',
355
+ 'timescaledb-ha': 'TIMESTAMPTZ(3)',
356
+ 'postgresql': 'TIMESTAMPTZ(3)',
357
+ 'postgis': 'TIMESTAMPTZ(3)',
358
+ 'mariadb': 'DATETIME',
359
+ 'mysql': 'DATETIME',
360
+ 'mssql': 'DATETIMEOFFSET(3)',
361
+ 'oracle': 'TIMESTAMP(3)',
362
+ 'sqlite': 'TIMESTAMP',
363
+ 'duckdb': 'TIMESTAMPTZ',
364
+ 'citus': 'TIMESTAMPTZ(3)',
365
+ 'cockroachdb': 'TIMESTAMPTZ(3)',
366
+ 'default': 'TIMESTAMPTZ',
367
+ },
368
+ 'datetime64[s]': {
369
+ 'timescaledb': 'TIMESTAMP(0)',
370
+ 'timescaledb-ha': 'TIMESTAMP(0)',
371
+ 'postgresql': 'TIMESTAMP(0)',
372
+ 'postgis': 'TIMESTAMP(0)',
373
+ 'mariadb': 'DATETIME',
374
+ 'mysql': 'DATETIME',
375
+ 'mssql': 'DATETIME2(0)',
376
+ 'oracle': 'TIMESTAMP(0)',
377
+ 'sqlite': 'DATETIME',
378
+ 'duckdb': 'TIMESTAMP(0)',
379
+ 'citus': 'TIMESTAMP(0)',
380
+ 'cockroachdb': 'TIMESTAMP(0)',
381
+ 'default': 'DATETIME',
382
+ },
383
+ 'datetime64[s, UTC]': {
384
+ 'timescaledb': 'TIMESTAMPTZ(0)',
385
+ 'timescaledb-ha': 'TIMESTAMPTZ(0)',
386
+ 'postgresql': 'TIMESTAMPTZ(0)',
387
+ 'postgis': 'TIMESTAMPTZ(0)',
388
+ 'mariadb': 'DATETIME',
389
+ 'mysql': 'DATETIME',
390
+ 'mssql': 'DATETIMEOFFSET(0)',
391
+ 'oracle': 'TIMESTAMP(0)',
392
+ 'sqlite': 'TIMESTAMP',
393
+ 'duckdb': 'TIMESTAMPTZ',
394
+ 'citus': 'TIMESTAMPTZ(0)',
395
+ 'cockroachdb': 'TIMESTAMPTZ(0)',
396
+ 'default': 'TIMESTAMPTZ(0)',
397
+ },
286
398
  'datetime': {
287
399
  'timescaledb': 'TIMESTAMPTZ',
400
+ 'timescaledb-ha': 'TIMESTAMPTZ',
288
401
  'postgresql': 'TIMESTAMPTZ',
289
402
  'postgis': 'TIMESTAMPTZ',
290
403
  'mariadb': 'DATETIME',
291
404
  'mysql': 'DATETIME',
292
405
  'mssql': 'DATETIMEOFFSET',
293
- 'oracle': 'TIMESTAMP(9)',
406
+ 'oracle': 'TIMESTAMP',
294
407
  'sqlite': 'TIMESTAMP',
295
408
  'duckdb': 'TIMESTAMPTZ',
296
409
  'citus': 'TIMESTAMPTZ',
@@ -299,20 +412,67 @@ PD_TO_DB_DTYPES_FLAVORS: Dict[str, Dict[str, str]] = {
299
412
  },
300
413
  'datetimetz': {
301
414
  'timescaledb': 'TIMESTAMPTZ',
415
+ 'timescaledb-ha': 'TIMESTAMPTZ',
302
416
  'postgresql': 'TIMESTAMPTZ',
303
417
  'postgis': 'TIMESTAMPTZ',
304
418
  'mariadb': 'DATETIME',
305
419
  'mysql': 'DATETIME',
306
420
  'mssql': 'DATETIMEOFFSET',
307
- 'oracle': 'TIMESTAMP(9)',
421
+ 'oracle': 'TIMESTAMP',
308
422
  'sqlite': 'TIMESTAMP',
309
423
  'duckdb': 'TIMESTAMPTZ',
310
424
  'citus': 'TIMESTAMPTZ',
311
425
  'cockroachdb': 'TIMESTAMPTZ',
312
426
  'default': 'TIMESTAMPTZ',
313
427
  },
428
+ 'date': {
429
+ 'timescaledb': 'DATE',
430
+ 'timescaledb-ha': 'DATE',
431
+ 'postgresql': 'DATE',
432
+ 'postgis': 'DATE',
433
+ 'mariadb': 'DATE',
434
+ 'mysql': 'DATE',
435
+ 'mssql': 'DATE',
436
+ 'oracle': 'DATE',
437
+ 'sqlite': 'DATE',
438
+ 'duckdb': 'DATE',
439
+ 'citus': 'DATE',
440
+ 'cockroachdb': 'DATE',
441
+ 'default': 'DATE',
442
+ },
314
443
  'bool': {
315
444
  'timescaledb': 'BOOLEAN',
445
+ 'timescaledb-ha': 'BOOLEAN',
446
+ 'postgresql': 'BOOLEAN',
447
+ 'postgis': 'BOOLEAN',
448
+ 'mariadb': 'BOOLEAN',
449
+ 'mysql': 'BOOLEAN',
450
+ 'mssql': 'BIT',
451
+ 'oracle': 'INTEGER',
452
+ 'sqlite': 'FLOAT',
453
+ 'duckdb': 'BOOLEAN',
454
+ 'citus': 'BOOLEAN',
455
+ 'cockroachdb': 'BOOLEAN',
456
+ 'default': 'BOOLEAN',
457
+ },
458
+ 'bool[pyarrow]': {
459
+ 'timescaledb': 'BOOLEAN',
460
+ 'timescaledb-ha': 'BOOLEAN',
461
+ 'postgresql': 'BOOLEAN',
462
+ 'postgis': 'BOOLEAN',
463
+ 'mariadb': 'BOOLEAN',
464
+ 'mysql': 'BOOLEAN',
465
+ 'mssql': 'BIT',
466
+ 'oracle': 'INTEGER',
467
+ 'sqlite': 'FLOAT',
468
+ 'duckdb': 'BOOLEAN',
469
+ 'citus': 'BOOLEAN',
470
+ 'cockroachdb': 'BOOLEAN',
471
+ 'default': 'BOOLEAN',
472
+ },
473
+ 'boolean': {
474
+ 'timescaledb': 'BOOLEAN',
475
+ 'timescaledb-ha': 'BOOLEAN',
316
476
  'postgresql': 'BOOLEAN',
317
477
  'postgis': 'BOOLEAN',
318
478
  'mariadb': 'BOOLEAN',
@@ -327,6 +487,7 @@ PD_TO_DB_DTYPES_FLAVORS: Dict[str, Dict[str, str]] = {
327
487
  },
328
488
  'object': {
329
489
  'timescaledb': 'TEXT',
490
+ 'timescaledb-ha': 'TEXT',
330
491
  'postgresql': 'TEXT',
331
492
  'postgis': 'TEXT',
332
493
  'mariadb': 'TEXT',
@@ -341,6 +502,7 @@ PD_TO_DB_DTYPES_FLAVORS: Dict[str, Dict[str, str]] = {
341
502
  },
342
503
  'string': {
343
504
  'timescaledb': 'TEXT',
505
+ 'timescaledb-ha': 'TEXT',
344
506
  'postgresql': 'TEXT',
345
507
  'postgis': 'TEXT',
346
508
  'mariadb': 'TEXT',
@@ -355,6 +517,7 @@ PD_TO_DB_DTYPES_FLAVORS: Dict[str, Dict[str, str]] = {
355
517
  },
356
518
  'unicode': {
357
519
  'timescaledb': 'TEXT',
520
+ 'timescaledb-ha': 'TEXT',
358
521
  'postgresql': 'TEXT',
359
522
  'postgis': 'TEXT',
360
523
  'mariadb': 'TEXT',
@@ -369,6 +532,7 @@ PD_TO_DB_DTYPES_FLAVORS: Dict[str, Dict[str, str]] = {
369
532
  },
370
533
  'json': {
371
534
  'timescaledb': 'JSONB',
535
+ 'timescaledb-ha': 'JSONB',
372
536
  'postgresql': 'JSONB',
373
537
  'postgis': 'JSONB',
374
538
  'mariadb': 'TEXT',
@@ -383,6 +547,7 @@ PD_TO_DB_DTYPES_FLAVORS: Dict[str, Dict[str, str]] = {
383
547
  },
384
548
  'numeric': {
385
549
  'timescaledb': 'NUMERIC',
550
+ 'timescaledb-ha': 'NUMERIC',
386
551
  'postgresql': 'NUMERIC',
387
552
  'postgis': 'NUMERIC',
388
553
  'mariadb': f'DECIMAL{NUMERIC_PRECISION_FLAVORS["mariadb"]}',
@@ -397,6 +562,7 @@ PD_TO_DB_DTYPES_FLAVORS: Dict[str, Dict[str, str]] = {
397
562
  },
398
563
  'uuid': {
399
564
  'timescaledb': 'UUID',
565
+ 'timescaledb-ha': 'UUID',
400
566
  'postgresql': 'UUID',
401
567
  'postgis': 'UUID',
402
568
  'mariadb': 'CHAR(36)',
@@ -412,6 +578,7 @@ PD_TO_DB_DTYPES_FLAVORS: Dict[str, Dict[str, str]] = {
412
578
  },
413
579
  'bytes': {
414
580
  'timescaledb': 'BYTEA',
581
+ 'timescaledb-ha': 'BYTEA',
415
582
  'postgresql': 'BYTEA',
416
583
  'postgis': 'BYTEA',
417
584
  'mariadb': 'BLOB',
@@ -426,6 +593,7 @@ PD_TO_DB_DTYPES_FLAVORS: Dict[str, Dict[str, str]] = {
426
593
  },
427
594
  'geometry': {
428
595
  'timescaledb': 'TEXT',
596
+ 'timescaledb-ha': 'GEOMETRY',
429
597
  'postgresql': 'TEXT',
430
598
  'postgis': 'GEOMETRY',
431
599
  'mariadb': 'TEXT',
@@ -440,6 +608,7 @@ PD_TO_DB_DTYPES_FLAVORS: Dict[str, Dict[str, str]] = {
440
608
  },
441
609
  'geography': {
442
610
  'timescaledb': 'TEXT',
611
+ 'timescaledb-ha': 'GEOGRAPHY',
443
612
  'postgresql': 'TEXT',
444
613
  'postgis': 'GEOGRAPHY',
445
614
  'mariadb': 'TEXT',
@@ -456,6 +625,7 @@ PD_TO_DB_DTYPES_FLAVORS: Dict[str, Dict[str, str]] = {
456
625
  PD_TO_SQLALCHEMY_DTYPES_FLAVORS: Dict[str, Dict[str, str]] = {
457
626
  'int': {
458
627
  'timescaledb': 'BigInteger',
628
+ 'timescaledb-ha': 'BigInteger',
459
629
  'postgresql': 'BigInteger',
460
630
  'postgis': 'BigInteger',
461
631
  'mariadb': 'BigInteger',
@@ -470,6 +640,7 @@ PD_TO_SQLALCHEMY_DTYPES_FLAVORS: Dict[str, Dict[str, str]] = {
470
640
  },
471
641
  'uint': {
472
642
  'timescaledb': 'BigInteger',
643
+ 'timescaledb-ha': 'BigInteger',
473
644
  'postgresql': 'BigInteger',
474
645
  'postgis': 'BigInteger',
475
646
  'mariadb': 'BigInteger',
@@ -484,6 +655,7 @@ PD_TO_SQLALCHEMY_DTYPES_FLAVORS: Dict[str, Dict[str, str]] = {
484
655
  },
485
656
  'int8': {
486
657
  'timescaledb': 'SmallInteger',
658
+ 'timescaledb-ha': 'SmallInteger',
487
659
  'postgresql': 'SmallInteger',
488
660
  'postgis': 'SmallInteger',
489
661
  'mariadb': 'SmallInteger',
@@ -498,6 +670,7 @@ PD_TO_SQLALCHEMY_DTYPES_FLAVORS: Dict[str, Dict[str, str]] = {
498
670
  },
499
671
  'uint8': {
500
672
  'timescaledb': 'SmallInteger',
673
+ 'timescaledb-ha': 'SmallInteger',
501
674
  'postgresql': 'SmallInteger',
502
675
  'postgis': 'SmallInteger',
503
676
  'mariadb': 'SmallInteger',
@@ -512,6 +685,7 @@ PD_TO_SQLALCHEMY_DTYPES_FLAVORS: Dict[str, Dict[str, str]] = {
512
685
  },
513
686
  'int16': {
514
687
  'timescaledb': 'SmallInteger',
688
+ 'timescaledb-ha': 'SmallInteger',
515
689
  'postgresql': 'SmallInteger',
516
690
  'postgis': 'SmallInteger',
517
691
  'mariadb': 'SmallInteger',
@@ -526,6 +700,7 @@ PD_TO_SQLALCHEMY_DTYPES_FLAVORS: Dict[str, Dict[str, str]] = {
526
700
  },
527
701
  'int32': {
528
702
  'timescaledb': 'Integer',
703
+ 'timescaledb-ha': 'Integer',
529
704
  'postgresql': 'Integer',
530
705
  'postgis': 'Integer',
531
706
  'mariadb': 'Integer',
@@ -540,6 +715,7 @@ PD_TO_SQLALCHEMY_DTYPES_FLAVORS: Dict[str, Dict[str, str]] = {
540
715
  },
541
716
  'int64': {
542
717
  'timescaledb': 'BigInteger',
718
+ 'timescaledb-ha': 'BigInteger',
543
719
  'postgresql': 'BigInteger',
544
720
  'postgis': 'BigInteger',
545
721
  'mariadb': 'BigInteger',
@@ -554,6 +730,7 @@ PD_TO_SQLALCHEMY_DTYPES_FLAVORS: Dict[str, Dict[str, str]] = {
554
730
  },
555
731
  'float': {
556
732
  'timescaledb': 'Float',
733
+ 'timescaledb-ha': 'Float',
557
734
  'postgresql': 'Float',
558
735
  'postgis': 'Float',
559
736
  'mariadb': 'Float',
@@ -568,12 +745,13 @@ PD_TO_SQLALCHEMY_DTYPES_FLAVORS: Dict[str, Dict[str, str]] = {
568
745
  },
569
746
  'datetime': {
570
747
  'timescaledb': 'DateTime(timezone=True)',
748
+ 'timescaledb-ha': 'DateTime(timezone=True)',
571
749
  'postgresql': 'DateTime(timezone=True)',
572
750
  'postgis': 'DateTime(timezone=True)',
573
751
  'mariadb': 'DateTime(timezone=True)',
574
752
  'mysql': 'DateTime(timezone=True)',
575
753
  'mssql': 'sqlalchemy.dialects.mssql.DATETIMEOFFSET',
576
- 'oracle': 'sqlalchemy.dialects.oracle.TIMESTAMP(timezone=True)',
754
+ 'oracle': 'sqlalchemy.dialects.oracle.TIMESTAMP',
577
755
  'sqlite': 'DateTime(timezone=True)',
578
756
  'duckdb': 'DateTime(timezone=True)',
579
757
  'citus': 'DateTime(timezone=True)',
@@ -582,6 +760,7 @@ PD_TO_SQLALCHEMY_DTYPES_FLAVORS: Dict[str, Dict[str, str]] = {
582
760
  },
583
761
  'datetime64[ns]': {
584
762
  'timescaledb': 'DateTime',
763
+ 'timescaledb-ha': 'DateTime',
585
764
  'postgresql': 'DateTime',
586
765
  'postgis': 'DateTime',
587
766
  'mariadb': 'DateTime',
@@ -596,20 +775,157 @@ PD_TO_SQLALCHEMY_DTYPES_FLAVORS: Dict[str, Dict[str, str]] = {
596
775
  },
597
776
  'datetime64[ns, UTC]': {
598
777
  'timescaledb': 'DateTime(timezone=True)',
778
+ 'timescaledb-ha': 'DateTime(timezone=True)',
599
779
  'postgresql': 'DateTime(timezone=True)',
600
780
  'postgis': 'DateTime(timezone=True)',
601
781
  'mariadb': 'DateTime(timezone=True)',
602
782
  'mysql': 'DateTime(timezone=True)',
603
783
  'mssql': 'sqlalchemy.dialects.mssql.DATETIMEOFFSET',
604
- 'oracle': 'sqlalchemy.dialects.oracle.TIMESTAMP(timezone=True)',
784
+ 'oracle': 'sqlalchemy.dialects.oracle.TIMESTAMP',
605
785
  'sqlite': 'DateTime(timezone=True)',
606
786
  'duckdb': 'DateTime(timezone=True)',
607
787
  'citus': 'DateTime(timezone=True)',
608
788
  'cockroachdb': 'DateTime(timezone=True)',
609
789
  'default': 'DateTime(timezone=True)',
610
790
  },
791
+ 'datetime64[us]': {
792
+ 'timescaledb': 'DateTime',
793
+ 'timescaledb-ha': 'DateTime',
794
+ 'postgresql': 'DateTime',
795
+ 'postgis': 'DateTime',
796
+ 'mariadb': 'DateTime',
797
+ 'mysql': 'DateTime',
798
+ 'mssql': 'sqlalchemy.dialects.mssql.DATETIME2',
799
+ 'oracle': 'DateTime',
800
+ 'sqlite': 'DateTime',
801
+ 'duckdb': 'DateTime',
802
+ 'citus': 'DateTime',
803
+ 'cockroachdb': 'DateTime',
804
+ 'default': 'DateTime',
805
+ },
806
+ 'datetime64[us, UTC]': {
807
+ 'timescaledb': 'DateTime(timezone=True)',
808
+ 'timescaledb-ha': 'DateTime(timezone=True)',
809
+ 'postgresql': 'DateTime(timezone=True)',
810
+ 'postgis': 'DateTime(timezone=True)',
811
+ 'mariadb': 'DateTime(timezone=True)',
812
+ 'mysql': 'DateTime(timezone=True)',
813
+ 'mssql': 'sqlalchemy.dialects.mssql.DATETIMEOFFSET',
814
+ 'oracle': 'sqlalchemy.dialects.oracle.TIMESTAMP',
815
+ 'sqlite': 'DateTime(timezone=True)',
816
+ 'duckdb': 'DateTime(timezone=True)',
817
+ 'citus': 'DateTime(timezone=True)',
818
+ 'cockroachdb': 'DateTime(timezone=True)',
819
+ 'default': 'DateTime(timezone=True)',
820
+ },
821
+ 'datetime64[ms]': {
822
+ 'timescaledb': 'DateTime',
823
+ 'timescaledb-ha': 'DateTime',
824
+ 'postgresql': 'DateTime',
825
+ 'postgis': 'DateTime',
826
+ 'mariadb': 'DateTime',
827
+ 'mysql': 'DateTime',
828
+ 'mssql': 'sqlalchemy.dialects.mssql.DATETIME2',
829
+ 'oracle': 'DateTime',
830
+ 'sqlite': 'DateTime',
831
+ 'duckdb': 'DateTime',
832
+ 'citus': 'DateTime',
833
+ 'cockroachdb': 'DateTime',
834
+ 'default': 'DateTime',
835
+ },
836
+ 'datetime64[ms, UTC]': {
837
+ 'timescaledb': 'DateTime(timezone=True)',
838
+ 'timescaledb-ha': 'DateTime(timezone=True)',
839
+ 'postgresql': 'DateTime(timezone=True)',
840
+ 'postgis': 'DateTime(timezone=True)',
841
+ 'mariadb': 'DateTime(timezone=True)',
842
+ 'mysql': 'DateTime(timezone=True)',
843
+ 'mssql': 'sqlalchemy.dialects.mssql.DATETIMEOFFSET',
844
+ 'oracle': 'sqlalchemy.dialects.oracle.TIMESTAMP',
845
+ 'sqlite': 'DateTime(timezone=True)',
846
+ 'duckdb': 'DateTime(timezone=True)',
847
+ 'citus': 'DateTime(timezone=True)',
848
+ 'cockroachdb': 'DateTime(timezone=True)',
849
+ 'default': 'DateTime(timezone=True)',
850
+ },
851
+ 'datetime64[s]': {
852
+ 'timescaledb': 'DateTime',
853
+ 'timescaledb-ha': 'DateTime',
854
+ 'postgresql': 'DateTime',
855
+ 'postgis': 'DateTime',
856
+ 'mariadb': 'DateTime',
857
+ 'mysql': 'DateTime',
858
+ 'mssql': 'sqlalchemy.dialects.mssql.DATETIME2',
859
+ 'oracle': 'DateTime',
860
+ 'sqlite': 'DateTime',
861
+ 'duckdb': 'DateTime',
862
+ 'citus': 'DateTime',
863
+ 'cockroachdb': 'DateTime',
864
+ 'default': 'DateTime',
865
+ },
866
+ 'datetime64[s, UTC]': {
867
+ 'timescaledb': 'DateTime(timezone=True)',
868
+ 'timescaledb-ha': 'DateTime(timezone=True)',
869
+ 'postgresql': 'DateTime(timezone=True)',
870
+ 'postgis': 'DateTime(timezone=True)',
871
+ 'mariadb': 'DateTime(timezone=True)',
872
+ 'mysql': 'DateTime(timezone=True)',
873
+ 'mssql': 'sqlalchemy.dialects.mssql.DATETIMEOFFSET',
874
+ 'oracle': 'sqlalchemy.dialects.oracle.TIMESTAMP',
875
+ 'sqlite': 'DateTime(timezone=True)',
876
+ 'duckdb': 'DateTime(timezone=True)',
877
+ 'citus': 'DateTime(timezone=True)',
878
+ 'cockroachdb': 'DateTime(timezone=True)',
879
+ 'default': 'DateTime(timezone=True)',
880
+ },
881
+ 'date': {
882
+ 'timescaledb': 'Date',
883
+ 'timescaledb-ha': 'Date',
884
+ 'postgresql': 'Date',
885
+ 'postgis': 'Date',
886
+ 'mariadb': 'Date',
887
+ 'mysql': 'Date',
888
+ 'mssql': 'Date',
889
+ 'oracle': 'Date',
890
+ 'sqlite': 'Date',
891
+ 'duckdb': 'Date',
892
+ 'citus': 'Date',
893
+ 'cockroachdb': 'Date',
894
+ 'default': 'Date',
895
+ },
611
896
  'bool': {
612
897
  'timescaledb': 'Boolean',
898
+ 'timescaledb-ha': 'Boolean',
899
+ 'postgresql': 'Boolean',
900
+ 'postgis': 'Boolean',
901
+ 'mariadb': 'Integer',
902
+ 'mysql': 'Integer',
903
+ 'mssql': 'sqlalchemy.dialects.mssql.BIT',
904
+ 'oracle': 'Integer',
905
+ 'sqlite': 'Float',
906
+ 'duckdb': 'Boolean',
907
+ 'citus': 'Boolean',
908
+ 'cockroachdb': 'Boolean',
909
+ 'default': 'Boolean',
910
+ },
911
+ 'bool[pyarrow]': {
912
+ 'timescaledb': 'Boolean',
913
+ 'timescaledb-ha': 'Boolean',
914
+ 'postgresql': 'Boolean',
915
+ 'postgis': 'Boolean',
916
+ 'mariadb': 'Integer',
917
+ 'mysql': 'Integer',
918
+ 'mssql': 'sqlalchemy.dialects.mssql.BIT',
919
+ 'oracle': 'Integer',
920
+ 'sqlite': 'Float',
921
+ 'duckdb': 'Boolean',
922
+ 'citus': 'Boolean',
923
+ 'cockroachdb': 'Boolean',
924
+ 'default': 'Boolean',
925
+ },
926
+ 'boolean': {
927
+ 'timescaledb': 'Boolean',
928
+ 'timescaledb-ha': 'Boolean',
613
929
  'postgresql': 'Boolean',
614
930
  'postgis': 'Boolean',
615
931
  'mariadb': 'Integer',
@@ -624,6 +940,7 @@ PD_TO_SQLALCHEMY_DTYPES_FLAVORS: Dict[str, Dict[str, str]] = {
624
940
  },
625
941
  'object': {
626
942
  'timescaledb': 'UnicodeText',
943
+ 'timescaledb-ha': 'UnicodeText',
627
944
  'postgresql': 'UnicodeText',
628
945
  'postgis': 'UnicodeText',
629
946
  'mariadb': 'UnicodeText',
@@ -638,6 +955,7 @@ PD_TO_SQLALCHEMY_DTYPES_FLAVORS: Dict[str, Dict[str, str]] = {
638
955
  },
639
956
  'string': {
640
957
  'timescaledb': 'UnicodeText',
958
+ 'timescaledb-ha': 'UnicodeText',
641
959
  'postgresql': 'UnicodeText',
642
960
  'postgis': 'UnicodeText',
643
961
  'mariadb': 'UnicodeText',
@@ -652,6 +970,7 @@ PD_TO_SQLALCHEMY_DTYPES_FLAVORS: Dict[str, Dict[str, str]] = {
652
970
  },
653
971
  'json': {
654
972
  'timescaledb': 'sqlalchemy.dialects.postgresql.JSONB',
973
+ 'timescaledb-ha': 'sqlalchemy.dialects.postgresql.JSONB',
655
974
  'postgresql': 'sqlalchemy.dialects.postgresql.JSONB',
656
975
  'postgis': 'sqlalchemy.dialects.postgresql.JSONB',
657
976
  'mariadb': 'UnicodeText',
@@ -666,6 +985,7 @@ PD_TO_SQLALCHEMY_DTYPES_FLAVORS: Dict[str, Dict[str, str]] = {
666
985
  },
667
986
  'numeric': {
668
987
  'timescaledb': 'Numeric',
988
+ 'timescaledb-ha': 'Numeric',
669
989
  'postgresql': 'Numeric',
670
990
  'postgis': 'Numeric',
671
991
  'mariadb': 'Numeric',
@@ -680,6 +1000,7 @@ PD_TO_SQLALCHEMY_DTYPES_FLAVORS: Dict[str, Dict[str, str]] = {
680
1000
  },
681
1001
  'uuid': {
682
1002
  'timescaledb': 'Uuid',
1003
+ 'timescaledb-ha': 'Uuid',
683
1004
  'postgresql': 'Uuid',
684
1005
  'postgis': 'Uuid',
685
1006
  'mariadb': 'sqlalchemy.dialects.mysql.CHAR(36)',
@@ -692,8 +1013,24 @@ PD_TO_SQLALCHEMY_DTYPES_FLAVORS: Dict[str, Dict[str, str]] = {
692
1013
  'cockroachdb': 'Uuid',
693
1014
  'default': 'Uuid',
694
1015
  },
1016
+ 'binary[pyarrow]': {
1017
+ 'timescaledb': 'LargeBinary',
1018
+ 'timescaledb-ha': 'LargeBinary',
1019
+ 'postgresql': 'LargeBinary',
1020
+ 'postgis': 'LargeBinary',
1021
+ 'mariadb': 'LargeBinary',
1022
+ 'mysql': 'LargeBinary',
1023
+ 'mssql': 'LargeBinary',
1024
+ 'oracle': 'LargeBinary',
1025
+ 'sqlite': 'LargeBinary',
1026
+ 'duckdb': 'LargeBinary',
1027
+ 'citus': 'LargeBinary',
1028
+ 'cockroachdb': 'LargeBinary',
1029
+ 'default': 'LargeBinary',
1030
+ },
695
1031
  'bytes': {
696
1032
  'timescaledb': 'LargeBinary',
1033
+ 'timescaledb-ha': 'LargeBinary',
697
1034
  'postgresql': 'LargeBinary',
698
1035
  'postgis': 'LargeBinary',
699
1036
  'mariadb': 'LargeBinary',
@@ -708,6 +1045,7 @@ PD_TO_SQLALCHEMY_DTYPES_FLAVORS: Dict[str, Dict[str, str]] = {
708
1045
  },
709
1046
  'geometry': {
710
1047
  'timescaledb': 'UnicodeText',
1048
+ 'timescaledb-ha': 'geoalchemy2.Geometry',
711
1049
  'postgresql': 'UnicodeText',
712
1050
  'postgis': 'geoalchemy2.Geometry',
713
1051
  'mariadb': 'UnicodeText',
@@ -722,6 +1060,7 @@ PD_TO_SQLALCHEMY_DTYPES_FLAVORS: Dict[str, Dict[str, str]] = {
722
1060
  },
723
1061
  'geography': {
724
1062
  'timescaledb': 'UnicodeText',
1063
+ 'timescaledb-ha': 'geoalchemy2.Geography',
725
1064
  'postgresql': 'UnicodeText',
726
1065
  'postgis': 'geoalchemy2.Geography',
727
1066
  'mariadb': 'UnicodeText',
@@ -738,6 +1077,7 @@ PD_TO_SQLALCHEMY_DTYPES_FLAVORS: Dict[str, Dict[str, str]] = {
738
1077
 
739
1078
  AUTO_INCREMENT_COLUMN_FLAVORS: Dict[str, str] = {
740
1079
  'timescaledb': 'GENERATED BY DEFAULT AS IDENTITY',
1080
+ 'timescaledb-ha': 'GENERATED BY DEFAULT AS IDENTITY',
741
1081
  'postgresql': 'GENERATED BY DEFAULT AS IDENTITY',
742
1082
  'postgis': 'GENERATED BY DEFAULT AS IDENTITY',
743
1083
  'mariadb': 'AUTO_INCREMENT',