meerschaum 2.4.0.dev0__py3-none-any.whl → 2.4.0.dev1__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.
@@ -115,11 +115,11 @@ def _copy_pipes(
115
115
  ):
116
116
  _new_pipe.sync(
117
117
  p.get_data(
118
- debug = debug,
119
- as_iterator = True,
118
+ debug=debug,
119
+ as_iterator=True,
120
120
  **kw
121
121
  ),
122
- debug = debug,
122
+ debug=debug,
123
123
  **kw
124
124
  )
125
125
 
@@ -2,4 +2,4 @@
2
2
  Specify the Meerschaum release version.
3
3
  """
4
4
 
5
- __version__ = "2.4.0.dev0"
5
+ __version__ = "2.4.0.dev1"
@@ -135,6 +135,7 @@ class Pipe:
135
135
  from ._deduplicate import deduplicate
136
136
  from ._bootstrap import bootstrap
137
137
  from ._dtypes import enforce_dtypes, infer_dtypes
138
+ from ._copy import copy_to
138
139
 
139
140
  def __init__(
140
141
  self,
@@ -7,25 +7,28 @@ Clear pipe data within a bounded or unbounded interval.
7
7
  """
8
8
 
9
9
  from __future__ import annotations
10
+
11
+ from datetime import datetime
10
12
  from meerschaum.utils.typing import SuccessTuple, Any, Optional, Dict
11
13
 
14
+
12
15
  def clear(
13
- self,
14
- begin: Optional[datetime.datetime] = None,
15
- end: Optional[datetime.datetime] = None,
16
- params: Optional[Dict[str, Any]] = None,
17
- debug: bool = False,
18
- **kwargs: Any
19
- ) -> SuccessTuple:
16
+ self,
17
+ begin: Optional[datetime] = None,
18
+ end: Optional[datetime] = None,
19
+ params: Optional[Dict[str, Any]] = None,
20
+ debug: bool = False,
21
+ **kwargs: Any
22
+ ) -> SuccessTuple:
20
23
  """
21
24
  Call the Pipe's instance connector's `clear_pipe` method.
22
25
 
23
26
  Parameters
24
27
  ----------
25
- begin: Optional[datetime.datetime], default None:
28
+ begin: Optional[datetime], default None:
26
29
  If provided, only remove rows newer than this datetime value.
27
30
 
28
- end: Optional[datetime.datetime], default None:
31
+ end: Optional[datetime], default None:
29
32
  If provided, only remove rows older than this datetime column (not including end).
30
33
 
31
34
  params: Optional[Dict[str, Any]], default None
@@ -41,11 +44,11 @@ def clear(
41
44
  Examples
42
45
  --------
43
46
  >>> pipe = mrsm.Pipe('test', 'test', columns={'datetime': 'dt'}, instance='sql:local')
44
- >>> pipe.sync({'dt': [datetime.datetime(2020, 1, 1, 0, 0)]})
45
- >>> pipe.sync({'dt': [datetime.datetime(2021, 1, 1, 0, 0)]})
46
- >>> pipe.sync({'dt': [datetime.datetime(2022, 1, 1, 0, 0)]})
47
+ >>> pipe.sync({'dt': [datetime(2020, 1, 1, 0, 0)]})
48
+ >>> pipe.sync({'dt': [datetime(2021, 1, 1, 0, 0)]})
49
+ >>> pipe.sync({'dt': [datetime(2022, 1, 1, 0, 0)]})
47
50
  >>>
48
- >>> pipe.clear(begin=datetime.datetime(2021, 1, 1, 0, 0))
51
+ >>> pipe.clear(begin=datetime(2021, 1, 1, 0, 0))
49
52
  >>> pipe.get_data()
50
53
  dt
51
54
  0 2020-01-01
@@ -0,0 +1,106 @@
1
+ #! /usr/bin/env python3
2
+ # vim:fenc=utf-8
3
+
4
+ """
5
+ Define methods for copying pipes.
6
+ """
7
+
8
+ from datetime import datetime, timedelta
9
+
10
+ import meerschaum as mrsm
11
+ from meerschaum.utils.typing import SuccessTuple, Any, Optional, Dict, Union
12
+
13
+
14
+ def copy_to(
15
+ self,
16
+ instance_keys: str,
17
+ sync: bool = True,
18
+ begin: Union[datetime, int, None] = None,
19
+ end: Union[datetime, int, None] = None,
20
+ params: Optional[Dict[str, Any]] = None,
21
+ chunk_interval: Union[timedelta, int, None] = None,
22
+ debug: bool = False,
23
+ **kwargs: Any
24
+ ) -> SuccessTuple:
25
+ """
26
+ Copy a pipe to another instance.
27
+
28
+ Parameters
29
+ ----------
30
+ instance_keys: str
31
+ The instance to which to copy this pipe.
32
+
33
+ sync: bool, default True
34
+ If `True`, sync the source pipe's documents
35
+
36
+ begin: Union[datetime, int, None], default None
37
+ Beginning datetime value to pass to `Pipe.get_data()`.
38
+
39
+ end: Union[datetime, int, None], default None
40
+ End datetime value to pass to `Pipe.get_data()`.
41
+
42
+ params: Optional[Dict[str, Any]], default None
43
+ Parameters filter to pass to `Pipe.get_data()`.
44
+
45
+ chunk_interval: Union[timedelta, int, None], default None
46
+ The size of chunks to retrieve from `Pipe.get_data()` for syncing.
47
+
48
+ kwargs: Any
49
+ Additional flags to pass to `Pipe.get_data()` and `Pipe.sync()`, e.g. `workers`.
50
+
51
+ Returns
52
+ -------
53
+ A SuccessTuple indicating success.
54
+ """
55
+ if str(instance_keys) == self.instance_keys:
56
+ return False, f"Cannot copy {self} to instance '{instance_keys}'."
57
+
58
+ new_pipe = mrsm.Pipe(
59
+ self.connector_keys,
60
+ self.metric_key,
61
+ self.location_key,
62
+ parameters=self.parameters.copy(),
63
+ instance=instance_keys,
64
+ )
65
+
66
+ new_pipe_is_registered = new_pipe.get_id() is not None
67
+
68
+ metadata_method = new_pipe.edit if new_pipe_is_registered else new_pipe.register
69
+ metadata_success, metadata_msg = metadata_method(debug=debug)
70
+ if not metadata_success:
71
+ return metadata_success, metadata_msg
72
+
73
+ if not self.exists(debug=debug):
74
+ return True, f"{self} does not exist; nothing to sync."
75
+
76
+ original_as_iterator = kwargs.get('as_iterator', None)
77
+ kwargs['as_iterator'] = True
78
+
79
+ chunk_generator = self.get_data(
80
+ begin=begin,
81
+ end=end,
82
+ params=params,
83
+ chunk_interval=chunk_interval,
84
+ debug=debug,
85
+ **kwargs
86
+ )
87
+
88
+ if original_as_iterator is None:
89
+ _ = kwargs.pop('as_iterator', None)
90
+ else:
91
+ kwargs['as_iterator'] = original_as_iterator
92
+
93
+ sync_success, sync_msg = new_pipe.sync(
94
+ chunk_generator,
95
+ begin=begin,
96
+ end=end,
97
+ params=params,
98
+ debug=debug,
99
+ **kwargs
100
+ )
101
+ msg = (
102
+ f"Successfully synced {new_pipe}:\n{sync_msg}"
103
+ if sync_success
104
+ else f"Failed to sync {new_pipe}:\n{sync_msg}"
105
+ )
106
+ return sync_success, msg
@@ -12,17 +12,17 @@ from meerschaum.utils.warnings import warn, info
12
12
  from meerschaum.utils.debug import dprint
13
13
 
14
14
  def verify(
15
- self,
16
- begin: Union[datetime, int, None] = None,
17
- end: Union[datetime, int, None] = None,
18
- params: Optional[Dict[str, Any]] = None,
19
- chunk_interval: Union[timedelta, int, None] = None,
20
- bounded: Optional[bool] = None,
21
- deduplicate: bool = False,
22
- workers: Optional[int] = None,
23
- debug: bool = False,
24
- **kwargs: Any
25
- ) -> SuccessTuple:
15
+ self,
16
+ begin: Union[datetime, int, None] = None,
17
+ end: Union[datetime, int, None] = None,
18
+ params: Optional[Dict[str, Any]] = None,
19
+ chunk_interval: Union[timedelta, int, None] = None,
20
+ bounded: Optional[bool] = None,
21
+ deduplicate: bool = False,
22
+ workers: Optional[int] = None,
23
+ debug: bool = False,
24
+ **kwargs: Any
25
+ ) -> SuccessTuple:
26
26
  """
27
27
  Verify the contents of the pipe by resyncing its interval.
28
28
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: meerschaum
3
- Version: 2.4.0.dev0
3
+ Version: 2.4.0.dev1
4
4
  Summary: Sync Time-Series Pipes with Meerschaum
5
5
  Home-page: https://meerschaum.io
6
6
  Author: Bennett Meares
@@ -26,7 +26,7 @@ meerschaum/actions/api.py,sha256=nRHGeMTy0njI9Qec_606GwSS0AnoxiGJodOS8uWpjfU,125
26
26
  meerschaum/actions/attach.py,sha256=UV19d9W_2WYcrf7BRz7k3mriDoX1V4rA4AKvbLdor0o,3106
27
27
  meerschaum/actions/bootstrap.py,sha256=c6US_SklR_ipr1Ax_2S6zP5pVZivr7v9OLTPxsMCiI4,14828
28
28
  meerschaum/actions/clear.py,sha256=OoFZE0bK5m8s3GLNZcixuVT0DMj1izXVxGCATcmUGbI,4851
29
- meerschaum/actions/copy.py,sha256=hLRc81oVBjnV22lpeSDb-HsDX2on9K2u6C1H8qJITNQ,6844
29
+ meerschaum/actions/copy.py,sha256=NwTwj3IMdK1TFRuJXCxsbIEFNVeoNGoMkvE6H1ZQZzo,6838
30
30
  meerschaum/actions/deduplicate.py,sha256=puYyxeFYEUy1Sd2IOcZB2e6MrNxAZl2bTLmNzFDkCiw,1167
31
31
  meerschaum/actions/delete.py,sha256=OidLnYT4E3OEHGHOeHOHbL3FFJonE7iR_3sPCj0azK0,18974
32
32
  meerschaum/actions/drop.py,sha256=Hd5h4rrWd7qL2rTqglsTonUsEoH7qQlsfqNFSHGeqr0,2453
@@ -142,7 +142,7 @@ meerschaum/config/_preprocess.py,sha256=-AEA8m_--KivZwTQ1sWN6LTn5sio_fUr2XZ51BO6
142
142
  meerschaum/config/_read_config.py,sha256=WFZKIXZMDe_ca0ES7ivgM_mnwShvFxLdoeisT_X5-h0,14720
143
143
  meerschaum/config/_shell.py,sha256=46_m49Txc5q1rGfCgO49ca48BODx45DQJi8D0zz1R18,4245
144
144
  meerschaum/config/_sync.py,sha256=oK2ZujO2T1he08BXCFyiniBUevNGWSQKXLcS_jRv_7Y,4155
145
- meerschaum/config/_version.py,sha256=ko0j1wwF4ngSOgFGF9dJ_nxwMUj8EwEgLFGA5rFwpgM,76
145
+ meerschaum/config/_version.py,sha256=iWXhzo8W_BkmGIL_HSHnU4ESCCaOIuBZGwu1MFLKjfQ,76
146
146
  meerschaum/config/paths.py,sha256=JjibeGN3YAdSNceRwsd42aNmeUrIgM6ndzC8qZAmNI0,621
147
147
  meerschaum/config/resources/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
148
148
  meerschaum/config/stack/__init__.py,sha256=bUXiccj-dvpuPCGs-hclR8E5lrgrpg5Tmjte3BJVX4s,10488
@@ -190,10 +190,11 @@ meerschaum/connectors/valkey/_pipes.py,sha256=-QnjGs6Xb7U9ZyjRyJ1PRUPfxoCOSAS7Zd
190
190
  meerschaum/connectors/valkey/_plugins.py,sha256=ZqiEW4XZCOpw4G8DUK2IKY6Qrph4mYfTjgXWimgakYY,6267
191
191
  meerschaum/connectors/valkey/_users.py,sha256=AS1vLarrkDA9yPK644GWwRiQiTZVa9x3nlLpyntq40g,7730
192
192
  meerschaum/core/__init__.py,sha256=tjASW10n9uLV6bYhcwP4rggh-ESXSJzgxpSBbVsuISs,251
193
- meerschaum/core/Pipe/__init__.py,sha256=mU8FHqHPTdSRBwEoJyNs-qNRb5PYVyXRVNTEQaEYexU,16671
193
+ meerschaum/core/Pipe/__init__.py,sha256=g1Geblo4NwNYumM9sSPBMAxiGZnhuh-nQ5OSwQ06Dvg,16702
194
194
  meerschaum/core/Pipe/_attributes.py,sha256=8nHMCZnQexAcG1ONXNqTldEowD7gstd34lDUcBktPeA,13144
195
195
  meerschaum/core/Pipe/_bootstrap.py,sha256=evyi07kkzAVMj66HfZkbYdcWk_oHUDsl6f13EnSPMYs,7723
196
- meerschaum/core/Pipe/_clear.py,sha256=hQVPztHiadzLB0c4_yFg6EETnf9MtFdJDCpO41Giuco,2261
196
+ meerschaum/core/Pipe/_clear.py,sha256=yFAYQnDmL3m6DzyAutgnBDXSOL9gjIrLvlQXd86YFV0,2193
197
+ meerschaum/core/Pipe/_copy.py,sha256=PcOeNUb0B4-HehTAAnBpjyT4uLLTR6VQOarY0SFA9wk,2912
197
198
  meerschaum/core/Pipe/_data.py,sha256=Ese54Qointav0M-bmIx5NrJIbIrFCb2hQvPEAfxRBAk,20922
198
199
  meerschaum/core/Pipe/_deduplicate.py,sha256=E3oXu6-0vZhzacv0GHri9yHd7XrSlIStZ--KE2EqeVM,10274
199
200
  meerschaum/core/Pipe/_delete.py,sha256=1geNp9BgrocXP1gt76dMbnlJWKYFMuSNqPFA4K4-hXE,2118
@@ -204,7 +205,7 @@ meerschaum/core/Pipe/_fetch.py,sha256=LtYqZSN2kwc5Tl2gQ5kSmGN7Ombv86k1zDNTP3SUF1
204
205
  meerschaum/core/Pipe/_register.py,sha256=Sd5xaAW8H7uLTIoommcKb-6kHPRuHJLWNSbPnt2UbvA,2240
205
206
  meerschaum/core/Pipe/_show.py,sha256=nG50y8eBT9TVuKkRgAKtNDNIxysJvMNxfu__lkL1F9k,1352
206
207
  meerschaum/core/Pipe/_sync.py,sha256=ha0bk3FEw3foaWIpzYYxzAeFjXoOubVL-avfowKJImE,32132
207
- meerschaum/core/Pipe/_verify.py,sha256=KSnthUzImRLjt9fxyBaLvArqDuOLRpKBfk0tnseJClc,14262
208
+ meerschaum/core/Pipe/_verify.py,sha256=GDCFRWWoaqXXfLQaTlS9_J7OqjuqA_JqXvUWZUOEclk,14218
208
209
  meerschaum/core/Plugin/__init__.py,sha256=UXg64EvJPgI1PCxkY_KM02-ZmBm4FZpLPIQR_uSJJDc,137
209
210
  meerschaum/core/User/_User.py,sha256=JZ9Y1tsjZe-cgD24m9YfZ6ZwSOKn_sHc4rbQ7KblBz8,6592
210
211
  meerschaum/core/User/__init__.py,sha256=lJ7beIZTG9sO4dAi3367fFBl17dXYEWHKi7HoaPlDyk,193
@@ -249,11 +250,11 @@ meerschaum/utils/packages/_packages.py,sha256=I1tXtYbMlITIVmoJhYQhWtCcmOwvK7iHdb
249
250
  meerschaum/utils/packages/lazy_loader.py,sha256=VHnph3VozH29R4JnSSBfwtA5WKZYZQFT_GeQSShCnuc,2540
250
251
  meerschaum/utils/venv/_Venv.py,sha256=sBnlmxHdAh2bx8btfVoD79-H9-cYsv5lP02IIXkyECs,3553
251
252
  meerschaum/utils/venv/__init__.py,sha256=bLAWnllKDuE_z6bLk7gLh4mI3Sp1j5hsboTqPKOQq84,24361
252
- meerschaum-2.4.0.dev0.dist-info/LICENSE,sha256=jG2zQEdRNt88EgHUWPpXVWmOrOduUQRx7MnYV9YIPaw,11359
253
- meerschaum-2.4.0.dev0.dist-info/METADATA,sha256=CTCFiuL1p4KHbzwgA7EGgqlE2taefHVcoxbwlb1fMSc,24106
254
- meerschaum-2.4.0.dev0.dist-info/NOTICE,sha256=OTA9Fcthjf5BRvWDDIcBC_xfLpeDV-RPZh3M-HQBRtQ,114
255
- meerschaum-2.4.0.dev0.dist-info/WHEEL,sha256=UvcQYKBHoFqaQd6LKyqHw9fxEolWLQnlzP0h_LgJAfI,91
256
- meerschaum-2.4.0.dev0.dist-info/entry_points.txt,sha256=5YBVzibw-0rNA_1VjB16z5GABsOGf-CDhW4yqH8C7Gc,88
257
- meerschaum-2.4.0.dev0.dist-info/top_level.txt,sha256=bNoSiDj0El6buocix-FRoAtJOeq1qOF5rRm2u9i7Q6A,11
258
- meerschaum-2.4.0.dev0.dist-info/zip-safe,sha256=AbpHGcgLb-kRsJGnwFEktk7uzpZOCcBY74-YBdrKVGs,1
259
- meerschaum-2.4.0.dev0.dist-info/RECORD,,
253
+ meerschaum-2.4.0.dev1.dist-info/LICENSE,sha256=jG2zQEdRNt88EgHUWPpXVWmOrOduUQRx7MnYV9YIPaw,11359
254
+ meerschaum-2.4.0.dev1.dist-info/METADATA,sha256=7D3rckc0osdt2IQDj2ChMSJDuQeihJMwF3qgROoETSI,24106
255
+ meerschaum-2.4.0.dev1.dist-info/NOTICE,sha256=OTA9Fcthjf5BRvWDDIcBC_xfLpeDV-RPZh3M-HQBRtQ,114
256
+ meerschaum-2.4.0.dev1.dist-info/WHEEL,sha256=UvcQYKBHoFqaQd6LKyqHw9fxEolWLQnlzP0h_LgJAfI,91
257
+ meerschaum-2.4.0.dev1.dist-info/entry_points.txt,sha256=5YBVzibw-0rNA_1VjB16z5GABsOGf-CDhW4yqH8C7Gc,88
258
+ meerschaum-2.4.0.dev1.dist-info/top_level.txt,sha256=bNoSiDj0El6buocix-FRoAtJOeq1qOF5rRm2u9i7Q6A,11
259
+ meerschaum-2.4.0.dev1.dist-info/zip-safe,sha256=AbpHGcgLb-kRsJGnwFEktk7uzpZOCcBY74-YBdrKVGs,1
260
+ meerschaum-2.4.0.dev1.dist-info/RECORD,,