meerschaum 2.7.0__py3-none-any.whl → 2.7.1__py3-none-any.whl

Sign up to get free protection for your applications and to get access to all the features.
@@ -60,6 +60,7 @@ dash_app = enrich.DashProxy(
60
60
  dash_app.layout = html.Div([
61
61
  location,
62
62
  dcc.Store(id='session-store', storage_type='local', data={}),
63
+ dcc.Store(id='instance-store', storage_type='session', data={}),
63
64
  html.Div([], id='page-layout-div'),
64
65
  ])
65
66
 
@@ -11,6 +11,8 @@ from __future__ import annotations
11
11
  import textwrap
12
12
  import json
13
13
  import uuid
14
+ from datetime import datetime, timezone
15
+
14
16
  from dash.dependencies import Input, Output, State, ALL, MATCH
15
17
  from dash.exceptions import PreventUpdate
16
18
  from meerschaum.utils.typing import List, Optional, Any, Tuple
@@ -191,6 +193,7 @@ def update_page_layout_div(
191
193
  Input('get-plugins-button', 'n_clicks'),
192
194
  Input('get-users-button', 'n_clicks'),
193
195
  Input('get-graphs-button', 'n_clicks'),
196
+ Input('instance-select', 'value'),
194
197
  State('mrsm-location', 'href'),
195
198
  State('session-store', 'data'),
196
199
  State('webterm-div', 'children'),
@@ -210,7 +213,7 @@ def update_content(*args):
210
213
  ### Open the webterm on the initial load.
211
214
  if not ctx.triggered:
212
215
  initial_load = True
213
- trigger = 'open-shell-button'
216
+ trigger = 'instance-select'
214
217
 
215
218
  trigger = ctx.triggered[0]['prop_id'].split('.')[0] if not trigger else trigger
216
219
 
@@ -232,7 +235,7 @@ def update_content(*args):
232
235
  'get-plugins-button': get_plugins_cards,
233
236
  'get-users-button': get_users_cards,
234
237
  'get-graphs-button': get_graphs_cards,
235
- 'open-shell-button': lambda x: ([], []),
238
+ 'instance-select': lambda x: ([], []),
236
239
  }
237
240
  ### Defaults to 3 if not in dict.
238
241
  trigger_num_cols = {
@@ -248,7 +251,7 @@ def update_content(*args):
248
251
  webterm_style = {
249
252
  'display': (
250
253
  'none'
251
- if trigger not in ('open-shell-button', 'cancel-button', 'go-button')
254
+ if trigger not in ('instance-select', 'cancel-button', 'go-button')
252
255
  else 'block'
253
256
  )
254
257
  }
@@ -284,9 +287,9 @@ dash_app.clientside_callback(
284
287
  input_flags_texts,
285
288
  instance,
286
289
  ){
287
- if (!n_clicks){ return url; }
290
+ if (!n_clicks){ return dash_clientside.no_update; }
288
291
  iframe = document.getElementById('webterm-iframe');
289
- if (!iframe){ return url; }
292
+ if (!iframe){ return dash_clientside.no_update; }
290
293
 
291
294
  // Actions must be obtained from the DOM because of dynamic subactions.
292
295
  action = document.getElementById('action-dropdown').value;
@@ -308,7 +311,7 @@ dash_app.clientside_callback(
308
311
  },
309
312
  url
310
313
  );
311
- return url;
314
+ return dash_clientside.no_update;
312
315
  }
313
316
  """,
314
317
  Output('mrsm-location', 'href'),
@@ -472,29 +475,30 @@ def update_flags(input_flags_dropdown_values, n_clicks, input_flags_texts):
472
475
 
473
476
 
474
477
  @dash_app.callback(
475
- Output(component_id='connector-keys-dropdown', component_property='options'),
476
- Output(component_id='connector-keys-list', component_property='children'),
477
- Output(component_id='connector-keys-dropdown', component_property='value'),
478
- Output(component_id='metric-keys-dropdown', component_property='options'),
479
- Output(component_id='metric-keys-list', component_property='children'),
480
- Output(component_id='metric-keys-dropdown', component_property='value'),
481
- Output(component_id='location-keys-dropdown', component_property='options'),
482
- Output(component_id='location-keys-list', component_property='children'),
483
- Output(component_id='location-keys-dropdown', component_property='value'),
484
- Output(component_id='instance-select', component_property='value'),
485
- Output(component_id='instance-alert-div', component_property='children'),
486
- Input(component_id='connector-keys-dropdown', component_property='value'),
487
- Input(component_id='metric-keys-dropdown', component_property='value'),
488
- Input(component_id='location-keys-dropdown', component_property='value'),
489
- Input(component_id='instance-select', component_property='value'),
490
- *keys_state
478
+ Output('connector-keys-dropdown', 'options'),
479
+ Output('connector-keys-list', 'children'),
480
+ Output('connector-keys-dropdown', 'value'),
481
+ Output('metric-keys-dropdown', 'options'),
482
+ Output('metric-keys-list', 'children'),
483
+ Output('metric-keys-dropdown', 'value'),
484
+ Output('location-keys-dropdown', 'options'),
485
+ Output('location-keys-list', 'children'),
486
+ Output('location-keys-dropdown', 'value'),
487
+ Output('instance-select', 'value'),
488
+ Output('instance-alert-div', 'children'),
489
+ Output('instance-store', 'data'),
490
+ Input('connector-keys-dropdown', 'value'),
491
+ Input('metric-keys-dropdown', 'value'),
492
+ Input('location-keys-dropdown', 'value'),
493
+ Input('instance-select', 'value'),
494
+ State('instance-store', 'data'),
491
495
  )
492
496
  def update_keys_options(
493
497
  connector_keys: Optional[List[str]],
494
498
  metric_keys: Optional[List[str]],
495
499
  location_keys: Optional[List[str]],
496
500
  instance_keys: Optional[str],
497
- *keys
501
+ instance_store_data: Optional[Dict[str, Any]],
498
502
  ):
499
503
  """
500
504
  Update the keys dropdown menus' options.
@@ -503,11 +507,24 @@ def update_keys_options(
503
507
  trigger = ctx.triggered[0]['prop_id'].split('.')[0]
504
508
  instance_click = trigger == 'instance-select'
505
509
 
510
+ session_instance = instance_store_data.get('session_instance', None)
511
+
506
512
  ### Update the instance first.
507
513
  update_instance_keys = False
508
514
  if not instance_keys:
515
+ ### NOTE: Set to `session_instance` to restore the last used session.
516
+ ### Choosing not to do this in order to keep the dashboard and webterm in sync.
509
517
  instance_keys = str(get_api_connector())
510
518
  update_instance_keys = True
519
+
520
+ instance_store_data_to_return = (
521
+ {**(instance_store_data or {}), **{'session_instance': instance_keys}}
522
+ if update_instance_keys or session_instance != instance_keys
523
+ else dash.no_update
524
+ )
525
+ if not trigger and not update_instance_keys:
526
+ raise PreventUpdate
527
+
511
528
  instance_alerts = []
512
529
  try:
513
530
  parse_instance_keys(instance_keys)
@@ -609,6 +626,7 @@ def update_keys_options(
609
626
  location_keys,
610
627
  (instance_keys if update_instance_keys else dash.no_update),
611
628
  instance_alerts,
629
+ instance_store_data_to_return,
612
630
  )
613
631
 
614
632
  dash_app.clientside_callback(
@@ -617,14 +635,13 @@ dash_app.clientside_callback(
617
635
  instance,
618
636
  url,
619
637
  ){
620
- window.instance = instance;
621
- if (!instance){ return url; }
622
- iframe = document.getElementById('webterm-iframe');
623
- if (!iframe){ return url; }
624
638
  if (!window.instance){
625
639
  window.instance = instance;
626
640
  return url;
627
641
  }
642
+ if (!instance){ return url; }
643
+ iframe = document.getElementById('webterm-iframe');
644
+ if (!iframe){ return url; }
628
645
  window.instance = instance;
629
646
 
630
647
  iframe.contentWindow.postMessage(
@@ -639,6 +656,7 @@ dash_app.clientside_callback(
639
656
  """,
640
657
  Output('mrsm-location', 'href'),
641
658
  Input('instance-select', 'value'),
659
+ State('mrsm-location', 'href'),
642
660
  )
643
661
 
644
662
 
@@ -698,7 +716,7 @@ dash_app.clientside_callback(
698
716
  """
699
717
  function(console_children, url){
700
718
  if (!console_children){
701
- return console_children;
719
+ return dash_clientside.no_update;
702
720
  }
703
721
  var ansi_up = new AnsiUp;
704
722
  var html = ansi_up.ansi_to_html(console_children);
@@ -707,7 +725,7 @@ dash_app.clientside_callback(
707
725
  "<pre id=\\"console-pre\\">" + html + "</pre>"
708
726
  );
709
727
  console_div.scrollTop = console_div.scrollHeight;
710
- return url;
728
+ return dash_clientside.no_update;;
711
729
  }
712
730
  """,
713
731
  Output('mrsm-location', 'href'),
@@ -885,8 +903,8 @@ dash_app.clientside_callback(
885
903
 
886
904
  iframe = document.getElementById('webterm-iframe');
887
905
  if (!iframe){ return dash_clientside.no_update; }
888
- var location = pipe_meta.location;
889
- if (!pipe_meta.location){
906
+ var location = pipe_meta.location_key;
907
+ if (!pipe_meta.location_key){
890
908
  location = "None";
891
909
  }
892
910
 
@@ -894,25 +912,25 @@ dash_app.clientside_callback(
894
912
  if (action == "python"){
895
913
  subaction = (
896
914
  '"' + "pipe = mrsm.Pipe('"
897
- + pipe_meta.connector
915
+ + pipe_meta.connector_keys
898
916
  + "', '"
899
- + pipe_meta.metric
917
+ + pipe_meta.metric_key
900
918
  + "'"
901
919
  );
902
920
  if (location != "None"){
903
921
  subaction += ", '" + location + "'";
904
922
  }
905
- subaction += ", instance='" + pipe_meta.instance + "')" + '"';
923
+ subaction += ", instance='" + pipe_meta.instance_keys + "')" + '"';
906
924
  }
907
925
 
908
926
  iframe.contentWindow.postMessage(
909
927
  {
910
928
  action: action,
911
929
  subaction: subaction,
912
- connector_keys: [pipe_meta.connector],
913
- metric_keys: [pipe_meta.metric],
914
- location_keys: [location],
915
- instance: pipe_meta.instance,
930
+ connector_keys: [pipe_meta.connector_keys],
931
+ metric_keys: [pipe_meta.metric_key],
932
+ location_keys: [pipe_meta.location_key],
933
+ instance: pipe_meta.instance_keys,
916
934
  },
917
935
  url
918
936
  );
@@ -17,9 +17,9 @@ window.addEventListener(
17
17
  (event) => {
18
18
  if (!event.isTrusted){ return; }
19
19
 
20
- action_str = event.data.action;
21
- subaction_str = event.data['subaction'] ? event.data['subaction'] : '';
22
- subaction_text = event.data['subaction_text'] ? event.data['subaction_text'] : '';
20
+ let action_str = event.data.action;
21
+ let subaction_str = event.data['subaction'] ? event.data['subaction'] : '';
22
+ let subaction_text = event.data['subaction_text'] ? event.data['subaction_text'] : '';
23
23
  if (subaction_str.length > 0){
24
24
  action_str += ' ' + subaction_str;
25
25
  }
@@ -27,45 +27,53 @@ window.addEventListener(
27
27
  action_str += ' ' + subaction_text;
28
28
  }
29
29
 
30
- connector_keys = event.data['connector_keys'] ? event.data['connector_keys'] : [];
31
- metric_keys = event.data['metric_keys'] ? event.data['metric_keys'] : [];
32
- location_keys = event.data['location_keys'] ? event.data['location_keys'] : [];
33
- connector_keys_str = " -c";
34
- for (ck of connector_keys){
35
- quote_str = ck.includes(" ") ? "'" : "";
36
- connector_keys_str += " " + quote_str + ck + quote_str;
30
+ let connector_keys = event.data['connector_keys'] ? event.data['connector_keys'] : [];
31
+ let metric_keys = event.data['metric_keys'] ? event.data['metric_keys'] : [];
32
+ let location_keys = event.data['location_keys'] ? event.data['location_keys'] : [];
33
+ let connector_keys_str = " -c";
34
+ for (let ck of connector_keys){
35
+ if (typeof ck === "string"){
36
+ let quote_str = ck.includes(" ") ? "'" : "";
37
+ connector_keys_str += " " + quote_str + ck + quote_str;
38
+ }
37
39
  }
38
40
  if (connector_keys.length === 0){
39
41
  connector_keys_str = "";
40
42
  }
41
- metric_keys_str = " -m";
43
+ let metric_keys_str = " -m";
42
44
  for (mk of metric_keys){
43
- quote_str = mk.includes(" ") ? "'" : "";
44
- metric_keys_str += " " + quote_str + mk + quote_str;
45
+ if (typeof mk === "string"){
46
+ let quote_str = mk.includes(" ") ? "'" : "";
47
+ metric_keys_str += " " + quote_str + mk + quote_str;
48
+ }
45
49
  }
46
50
  if (metric_keys.length === 0){
47
51
  metric_keys_str = "";
48
52
  }
49
- location_keys_str = " -l";
53
+ let location_keys_str = " -l";
50
54
  for (lk of location_keys){
51
- quote_str = lk.includes(" ") ? "'" : "";
52
- location_keys_str += " " + quote_str + lk + quote_str;
55
+ if (typeof lk === "string"){
56
+ quote_str = lk.includes(" ") ? "'" : "";
57
+ location_keys_str += " " + quote_str + lk + quote_str;
58
+ }
53
59
  }
54
60
  if (location_keys.length === 0){
55
61
  location_keys_str = "";
56
62
  }
57
63
 
58
- instance = event.data['instance'] ? event.data['instance'] : '';
59
- flags_str = "";
64
+ let instance = event.data['instance'] ? event.data['instance'] : '';
65
+ let flags_str = "";
60
66
  if (instance.length > 0){
61
67
  flags_str += " -i " + instance;
62
68
  }
63
- flags = event.data['flags'] ? event.data['flags'] : [];
69
+ let flags = event.data['flags'] ? event.data['flags'] : [];
64
70
  for (fl of flags){
65
- flags_str += " " + fl;
71
+ if (typeof fl === "string"){
72
+ flags_str += " " + fl;
73
+ }
66
74
  }
67
75
  // NOTE: Input flags are not quoted to allow for multiple arguments.
68
- input_flags = event.data['input_flags'] ? event.data['input_flags'] : [];
76
+ let input_flags = event.data['input_flags'] ? event.data['input_flags'] : [];
69
77
  for (const [index, fl] of input_flags.entries()){
70
78
  if (!fl){ continue; }
71
79
  fl_val = event.data['input_flags_texts'][index];
@@ -13,9 +13,10 @@ from meerschaum.utils.packages import attempt_import
13
13
  from meerschaum.api.dash.sessions import is_session_authenticated
14
14
  fastapi, fastapi_responses = attempt_import('fastapi', 'fastapi.responses')
15
15
  import starlette
16
- httpcore = attempt_import('httpcore')
17
- httpx = attempt_import('httpx')
18
- websockets = attempt_import('websockets')
16
+
17
+ httpcore = attempt_import('httpcore', lazy=False)
18
+ httpx = attempt_import('httpx', lazy=False)
19
+ websockets = attempt_import('websockets', lazy=False)
19
20
  Request = fastapi.Request
20
21
  WebSocket = fastapi.WebSocket
21
22
  HTMLResponse = fastapi_responses.HTMLResponse
@@ -2,4 +2,4 @@
2
2
  Specify the Meerschaum release version.
3
3
  """
4
4
 
5
- __version__ = "2.7.0"
5
+ __version__ = "2.7.1"
@@ -190,7 +190,12 @@ def create_engine(
190
190
  import copy
191
191
  ### Install and patch required drivers.
192
192
  if self.flavor in install_flavor_drivers:
193
- attempt_import(*install_flavor_drivers[self.flavor], debug=debug, lazy=False, warn=False)
193
+ _ = attempt_import(
194
+ *install_flavor_drivers[self.flavor],
195
+ debug=debug,
196
+ lazy=False,
197
+ warn=False,
198
+ )
194
199
  if self.flavor == 'mssql':
195
200
  pyodbc = attempt_import('pyodbc', debug=debug, lazy=False, warn=False)
196
201
  pyodbc.pooling = False
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: meerschaum
3
- Version: 2.7.0
3
+ Version: 2.7.1
4
4
  Summary: Sync Time-Series Pipes with Meerschaum
5
5
  Home-page: https://meerschaum.io
6
6
  Author: Bennett Meares
@@ -56,7 +56,7 @@ meerschaum/api/_chain.py,sha256=h8-WXUGXX6AqzdALfsBC5uv0FkAcLdHJXCGzqzuq89k,875
56
56
  meerschaum/api/_events.py,sha256=f-98AXHU10IL9zRGX1FrZFANxxiMz5ryeJnfFWaU8R8,2232
57
57
  meerschaum/api/_oauth2.py,sha256=dJTIVlPpX3sAVW-PcN6pXRNy2RR5QAalu2RHp3l14YU,1683
58
58
  meerschaum/api/_websockets.py,sha256=EMT9wB3yELu_WyCMqn9ZpgMDh23spUUchouRLCCLVuw,1509
59
- meerschaum/api/dash/__init__.py,sha256=29vMm_m5gSDYG0lahh-8yVfhqg9kUFnUrYyw_9jC2Y0,2078
59
+ meerschaum/api/dash/__init__.py,sha256=jL08XtzNAzsrXJthDRqq-DlJjg6OpoyqeLeNjkp_bnA,2147
60
60
  meerschaum/api/dash/components.py,sha256=t2goHW7oioao5Ew6Dro9U4LZDnHF-YWb4flLPx46GP8,6293
61
61
  meerschaum/api/dash/connectors.py,sha256=nJxBOFldtCMJLYjUSVYZwX5BO-LNjTNHgoEaXe-0XMo,843
62
62
  meerschaum/api/dash/graphs.py,sha256=wJUDWzcLN8-C3xko6rj0F2v7Rt8YDkSXoVkkXJjYGIk,2046
@@ -77,7 +77,7 @@ meerschaum/api/dash/assets/logo_48x48.png,sha256=hTR5BHUHEN4yP2xiqAcDciuigoII9T3
77
77
  meerschaum/api/dash/assets/logo_500x500.png,sha256=9EUtf6wQcEZTXHKfQ2kjNXod6Rn_4DTB_BkTgxggq00,67702
78
78
  meerschaum/api/dash/callbacks/__init__.py,sha256=5nLDkziaWWWt5ivmuMNG3kVBMOfqB6KQNIAS8f16bmA,493
79
79
  meerschaum/api/dash/callbacks/custom.py,sha256=N9pVolAF8sIuJD3V6xBSgS7k8THJo_f8d1qAoh1Kg60,1161
80
- meerschaum/api/dash/callbacks/dashboard.py,sha256=CWIHQAIBm5zORQXevpaeoA-AvHi0XJLkyj2tNMdI3EY,32745
80
+ meerschaum/api/dash/callbacks/dashboard.py,sha256=-qTzDG7Gnc597A-I5KBaPu6myXhW9ow0fm5gxErtUMM,33171
81
81
  meerschaum/api/dash/callbacks/jobs.py,sha256=JYTrDcUEte_MIT3EegLDmQDsmU_Mxqw8L60dvF71ho4,8418
82
82
  meerschaum/api/dash/callbacks/login.py,sha256=mEvMgV-f85H6DvqNdTvJPoiwHqTnhWY2nf_zLB26ipE,2876
83
83
  meerschaum/api/dash/callbacks/pipes.py,sha256=byphQn-wJOe8ft-fGU9wac0n5xsMjVHJzNvYYb9NsKU,1693
@@ -116,7 +116,7 @@ meerschaum/api/resources/templates/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQe
116
116
  meerschaum/api/resources/templates/index.html,sha256=Ck-S0U5abJgB-wTOKIGg0ispGzKlXXqvFUoNAAByzLA,1019
117
117
  meerschaum/api/resources/templates/old_index.html,sha256=BDeOlcXhSsBH3-NaRtuX4Z1sDuhOoCMa_Dq-6g5RMpc,1711
118
118
  meerschaum/api/resources/templates/secret.html,sha256=0QWkm4ZoN81Aw1pd2-62rGCvx3nXPHfFUoegj3Iy8Ls,141
119
- meerschaum/api/resources/templates/termpage.html,sha256=qspXRuOkzqOn2mXw9mmUldzsvOHq_LyaywQ29CUevp0,4527
119
+ meerschaum/api/resources/templates/termpage.html,sha256=4npmhCrZtPqxDE9hK7tzKjbLUZyUzu-X73vKg3_C6lc,4807
120
120
  meerschaum/api/routes/__init__.py,sha256=jbkeFNl51Tg8aT5gWe560ZLZLojFJsLMe5IENRjRkb0,606
121
121
  meerschaum/api/routes/_actions.py,sha256=VUasS1dpr4d3TXHcR1CXlRZPAqvGKKuHv_f9PsOkQ5c,1732
122
122
  meerschaum/api/routes/_connectors.py,sha256=NNbcn5xWhKqw2PqueSEaqRaZ95hFGDKazG5lE7gsssc,1849
@@ -128,7 +128,7 @@ meerschaum/api/routes/_pipes.py,sha256=Ix4N46qZ2YIEv7bd8SA9fy1k67n8zFlmPznSeK8mi
128
128
  meerschaum/api/routes/_plugins.py,sha256=vR6-uTJraY1YEJMuRvds1-xFLB2mexxnp2dJwN_0rVo,6216
129
129
  meerschaum/api/routes/_users.py,sha256=SfAkZFKrKnGjpzj8SFIKzPemzQJOH3oB72h19EaUvcQ,7204
130
130
  meerschaum/api/routes/_version.py,sha256=2t-nw_9IxCVZCNEar0LOwmut2zsClRVHjiOOUx16cu0,825
131
- meerschaum/api/routes/_webterm.py,sha256=gow_xCsojGI37ZZDVfv2gdM18r_H2b2MR0ovFuG0uJ8,3872
131
+ meerschaum/api/routes/_webterm.py,sha256=MenDvWXnZ8CWEmryB46pKohMf0PN6o1xJGZ3LFjxTOc,3909
132
132
  meerschaum/api/tables/__init__.py,sha256=e2aNC0CdlWICTUMx1i9RauF8Pm426J0RZJbsJWv4SWo,482
133
133
  meerschaum/config/__init__.py,sha256=5ZBq71P9t3nb74r5CGvMfNuauPscfegBX-nkaAUi5C4,11541
134
134
  meerschaum/config/_dash.py,sha256=BJHl4xMrQB-YHUEU7ldEW8q_nOPoIRSOqLrfGElc6Dw,187
@@ -143,7 +143,7 @@ meerschaum/config/_preprocess.py,sha256=-AEA8m_--KivZwTQ1sWN6LTn5sio_fUr2XZ51BO6
143
143
  meerschaum/config/_read_config.py,sha256=RLC3HHi_1ndj7ITVDKLD9_uULY3caGRwSz3ATYE-ixA,15014
144
144
  meerschaum/config/_shell.py,sha256=46_m49Txc5q1rGfCgO49ca48BODx45DQJi8D0zz1R18,4245
145
145
  meerschaum/config/_sync.py,sha256=jHcWRkxd82_BgX8Xo8agsWvf7BSbv3qHLWmYl6ehp_0,4242
146
- meerschaum/config/_version.py,sha256=CFxscxn1WACWK8oZJVGnMF0MCBbufjW-Wo5hmfzfRMo,71
146
+ meerschaum/config/_version.py,sha256=KZzrNL20ForXO9e1OCdiNBZ0WcwZ4I9Z_8Rz0oMe8d8,71
147
147
  meerschaum/config/paths.py,sha256=JjibeGN3YAdSNceRwsd42aNmeUrIgM6ndzC8qZAmNI0,621
148
148
  meerschaum/config/resources/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
149
149
  meerschaum/config/stack/__init__.py,sha256=2UukC0Lmk-aVL1o1qXzumqmuIrw3vu9fD7iCuz4XD4I,10544
@@ -173,7 +173,7 @@ meerschaum/connectors/plugin/__init__.py,sha256=pwF7TGY4WNz2_HaVdmK4rPQ9ZwTOEuPH
173
173
  meerschaum/connectors/sql/_SQLConnector.py,sha256=g9SFK30CZp7CTJI-SdpOanL1NQUBFQeUng7FSGacJA4,11985
174
174
  meerschaum/connectors/sql/__init__.py,sha256=3cqYiDkVasn7zWdtOTAZbT4bo95AuvGOmDD2TkaAxtw,205
175
175
  meerschaum/connectors/sql/_cli.py,sha256=1SgnWeMIAihoxp4FzbNrcq1npXf0dSOQnCntpU9hUXA,4405
176
- meerschaum/connectors/sql/_create_engine.py,sha256=uFpDeTu9v1Duw6EZ8opeOIU5Z9aPgWAbaequV7vbLW0,10449
176
+ meerschaum/connectors/sql/_create_engine.py,sha256=MqgFhtWUMSgkx6Qu6Q6Ny3jIz-GWix_Eawko59RLm1o,10512
177
177
  meerschaum/connectors/sql/_fetch.py,sha256=UIBAvMxassP-ofNxk_FoG-ukHzEac4jyu4lA0SXHcBg,13140
178
178
  meerschaum/connectors/sql/_instance.py,sha256=_FHcAia3vhnWlQuB46YELGgsM9OYIJSHxL3FWNU0GWg,6287
179
179
  meerschaum/connectors/sql/_pipes.py,sha256=QSlEBmkXoLRevpEmocMce45sI8Qhe1n7RWShVx5W1pg,118932
@@ -251,11 +251,11 @@ meerschaum/utils/packages/_packages.py,sha256=ykannoLv2Fm4iwZwiIlNAGZvt654cMJhjX
251
251
  meerschaum/utils/packages/lazy_loader.py,sha256=VHnph3VozH29R4JnSSBfwtA5WKZYZQFT_GeQSShCnuc,2540
252
252
  meerschaum/utils/venv/_Venv.py,sha256=QsnDGEE_YBqXIq53NTWi2TANA1FbkqJBl_xQi9jQP_U,3537
253
253
  meerschaum/utils/venv/__init__.py,sha256=eup-zUBdHBdNbu_G1qgA8iRzJvlAXyGhY7pG-SEvbHs,25347
254
- meerschaum-2.7.0.dist-info/LICENSE,sha256=jG2zQEdRNt88EgHUWPpXVWmOrOduUQRx7MnYV9YIPaw,11359
255
- meerschaum-2.7.0.dist-info/METADATA,sha256=8n_3quGPrZgML31CjNvJu8qdMAKiKxoFY0sgF4A1a0I,24224
256
- meerschaum-2.7.0.dist-info/NOTICE,sha256=OTA9Fcthjf5BRvWDDIcBC_xfLpeDV-RPZh3M-HQBRtQ,114
257
- meerschaum-2.7.0.dist-info/WHEEL,sha256=PZUExdf71Ui_so67QXpySuHtCi3-J3wvF4ORK6k_S8U,91
258
- meerschaum-2.7.0.dist-info/entry_points.txt,sha256=5YBVzibw-0rNA_1VjB16z5GABsOGf-CDhW4yqH8C7Gc,88
259
- meerschaum-2.7.0.dist-info/top_level.txt,sha256=bNoSiDj0El6buocix-FRoAtJOeq1qOF5rRm2u9i7Q6A,11
260
- meerschaum-2.7.0.dist-info/zip-safe,sha256=AbpHGcgLb-kRsJGnwFEktk7uzpZOCcBY74-YBdrKVGs,1
261
- meerschaum-2.7.0.dist-info/RECORD,,
254
+ meerschaum-2.7.1.dist-info/LICENSE,sha256=jG2zQEdRNt88EgHUWPpXVWmOrOduUQRx7MnYV9YIPaw,11359
255
+ meerschaum-2.7.1.dist-info/METADATA,sha256=rIEPTlucCyhBXjRB_ohMKVry1H7qOveF7ojFnrr1TcM,24224
256
+ meerschaum-2.7.1.dist-info/NOTICE,sha256=OTA9Fcthjf5BRvWDDIcBC_xfLpeDV-RPZh3M-HQBRtQ,114
257
+ meerschaum-2.7.1.dist-info/WHEEL,sha256=PZUExdf71Ui_so67QXpySuHtCi3-J3wvF4ORK6k_S8U,91
258
+ meerschaum-2.7.1.dist-info/entry_points.txt,sha256=5YBVzibw-0rNA_1VjB16z5GABsOGf-CDhW4yqH8C7Gc,88
259
+ meerschaum-2.7.1.dist-info/top_level.txt,sha256=bNoSiDj0El6buocix-FRoAtJOeq1qOF5rRm2u9i7Q6A,11
260
+ meerschaum-2.7.1.dist-info/zip-safe,sha256=AbpHGcgLb-kRsJGnwFEktk7uzpZOCcBY74-YBdrKVGs,1
261
+ meerschaum-2.7.1.dist-info/RECORD,,