Skip to content

Commit 2fcf58e

Browse files
authored
Merge pull request #195 from poissoncorp/RDBC-698
RDBC-698 Python client - timeseries round 2
2 parents 4b57c05 + 9fa19e6 commit 2fcf58e

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

55 files changed

+2855
-427
lines changed

ravendb/documents/bulk_insert_operation.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@
1010
from typing import Optional, TYPE_CHECKING
1111

1212
import requests
13-
from ravendb import constants
13+
from ravendb.primitives import constants
1414
from ravendb.exceptions.raven_exceptions import RavenException
1515
from ravendb.http.server_node import ServerNode
1616
from ravendb.http.raven_command import RavenCommand

ravendb/documents/commands/batches.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -563,7 +563,7 @@ def __init__(
563563
source_name: str,
564564
destination_document_id: str,
565565
destination_name: str,
566-
change_vector: str,
566+
change_vector: Optional[str],
567567
):
568568
if source_document_id.isspace():
569569
raise ValueError("source_document_id is required")
@@ -595,7 +595,7 @@ def __init__(
595595
name: str,
596596
destination_id: str,
597597
destination_name: str,
598-
change_vector: str,
598+
change_vector: Optional[str],
599599
):
600600
if key.isspace():
601601
raise ValueError("source_document_id is required")
@@ -621,7 +621,7 @@ def serialize(self, conventions: DocumentConventions) -> dict:
621621

622622

623623
class DeleteAttachmentCommandData(CommandData):
624-
def __init__(self, document_id: str, name: str, change_vector: str):
624+
def __init__(self, document_id: str, name: str, change_vector: Optional[str]):
625625
if not document_id:
626626
raise ValueError(document_id)
627627
if not name:

ravendb/documents/commands/crud.py

Lines changed: 35 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -3,10 +3,15 @@
33
import http
44
import json
55
from typing import Optional, List
6-
from typing import TYPE_CHECKING
76
import requests
87

9-
from ravendb import constants
8+
from ravendb.documents.session.time_series import (
9+
TimeSeriesRange,
10+
TimeSeriesTimeRange,
11+
TimeSeriesCountRange,
12+
AbstractTimeSeriesRange,
13+
)
14+
from ravendb.primitives import constants
1015
from ravendb.documents.commands.results import GetDocumentsResult
1116
from ravendb.documents.queries.utils import HashCalculator
1217
from ravendb.http.misc import ResponseDisposeHandling
@@ -18,9 +23,6 @@
1823
from ravendb.http.server_node import ServerNode
1924
from ravendb.tools.utils import Utils
2025

21-
if TYPE_CHECKING:
22-
from ravendb.documents.conventions import DocumentConventions
23-
2426

2527
class PutResult:
2628
def __init__(self, key: Optional[str] = None, change_vector: Optional[str] = None):
@@ -76,7 +78,7 @@ def create_request(self, node: ServerNode) -> requests.Request:
7678

7779

7880
class HeadDocumentCommand(RavenCommand[str]):
79-
def __init__(self, key: str, change_vector: str):
81+
def __init__(self, key: str, change_vector: Optional[str]):
8082
super(HeadDocumentCommand, self).__init__(str)
8183
if key is None:
8284
raise ValueError("Key cannot be None")
@@ -124,7 +126,7 @@ def __init__(self):
124126
self._key: Optional[str] = None
125127
self._counters: Optional[List[str]] = None
126128
self._include_all_counters: Optional[bool] = None
127-
self._time_series_includes: Optional[List] = None # todo: AbstractTimeSeriesRange
129+
self._time_series_includes: Optional[List[AbstractTimeSeriesRange]] = None
128130

129131
self._compare_exchange_value_includes: Optional[List[str]] = None
130132

@@ -248,19 +250,38 @@ def create_request(self, node: ServerNode) -> requests.Request:
248250
for include in self._includes:
249251
path_builder.append(f"&include={include}")
250252

251-
# todo: counters
252253
if self._include_all_counters:
253254
path_builder.append(f"&counter={constants.Counters.ALL}")
254255
elif self._counters:
255256
for counter in self._counters:
256257
path_builder.append(f"&counter={counter}")
257258

258-
# todo: time series
259259
if self._time_series_includes is not None:
260-
for time_series in self._time_series_includes:
261-
path_builder.append(
262-
f"&timeseries={time_series.name}&from={time_series.from_date}&to={time_series.to_date}"
263-
)
260+
for ts_include in self._time_series_includes:
261+
if isinstance(ts_include, TimeSeriesRange):
262+
range_: TimeSeriesRange = ts_include
263+
path_builder.append(
264+
f"&timeseries={range_.name}"
265+
f"&from={Utils.datetime_to_string(range_.from_date) if range_.from_date else ''}"
266+
f"&to={Utils.datetime_to_string(range_.to_date) if range_.to_date else ''}"
267+
)
268+
elif isinstance(ts_include, TimeSeriesTimeRange):
269+
time_range: TimeSeriesTimeRange = ts_include
270+
path_builder.append(
271+
f"&timeseriestime={time_range.name}"
272+
f"&timeType={time_range.type.value}"
273+
f"&timeValue={time_range.time.value}"
274+
f"&timeUnit={time_range.time.unit.value}"
275+
)
276+
elif isinstance(ts_include, TimeSeriesCountRange):
277+
count_range: TimeSeriesCountRange = ts_include
278+
path_builder.append(
279+
f"&timeseriescount={count_range.name}"
280+
f"&countType={count_range.type.value}"
281+
f"&countValue={count_range.count}"
282+
)
283+
else:
284+
raise TypeError(f"Unexpected TimeSeries range {ts_include.__class__.__name__}")
264285

265286
if self._compare_exchange_value_includes is not None:
266287
for compare_exchange_value in self._compare_exchange_value_includes:
@@ -368,7 +389,7 @@ def create_request(self, node: ServerNode) -> requests.Request:
368389

369390

370391
class HeadAttachmentCommand(RavenCommand[str]):
371-
def __init__(self, document_id: str, name: str, change_vector: str):
392+
def __init__(self, document_id: str, name: str, change_vector: Optional[str]):
372393
super().__init__(str)
373394

374395
if document_id.isspace():

ravendb/documents/commands/multi_get.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66

77
import requests
88

9-
from ravendb import constants
9+
from ravendb.primitives import constants
1010
from ravendb.http.misc import AggressiveCacheOptions, AggressiveCacheMode
1111
from ravendb.http.request_executor import RequestExecutor
1212
from ravendb.extensions.http_extensions import HttpExtensions

ravendb/documents/conventions.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@
1111

1212
from typing import TypeVar
1313
from ravendb.json.metadata_as_dictionary import MetadataAsDictionary
14-
from ravendb import constants
14+
from ravendb.primitives import constants
1515
from ravendb.documents.operations.configuration import ClientConfiguration, LoadBalanceBehavior, ReadBalanceBehavior
1616
from ravendb.documents.indexes.definitions import SortOptions
1717
from ravendb.tools.utils import Utils

ravendb/documents/indexes/counters.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
1-
from typing import Dict, Set, Optional, Callable, Union
1+
from typing import Dict, Set, Optional, Callable
22

3-
from ravendb import constants
3+
from ravendb.primitives import constants
44
from ravendb.documents.conventions import DocumentConventions
55
from ravendb.documents.indexes.definitions import (
66
FieldStorage,

ravendb/documents/indexes/index_creation.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
from abc import abstractmethod, ABC
33
from typing import Generic, TypeVar, Union, Dict, Set, Callable, Optional, List, Collection
44

5-
from ravendb import constants
5+
from ravendb.primitives import constants
66
from ravendb.documents.conventions import DocumentConventions
77
from ravendb.documents.indexes.spatial.configuration import SpatialOptionsFactory
88
from ravendb.documents.store.definition import DocumentStore, DocumentStoreBase

ravendb/documents/operations/attachments/__init__.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66

77
import requests
88

9-
from ravendb import constants
9+
from ravendb.primitives import constants
1010
from ravendb.data.operation import AttachmentType
1111
from ravendb.documents.operations.definitions import IOperation, VoidOperation
1212
from ravendb.http.http_cache import HttpCache
@@ -152,7 +152,7 @@ def is_read_request(self) -> bool:
152152

153153

154154
class GetAttachmentOperation(IOperation):
155-
def __init__(self, document_id: str, name: str, attachment_type: AttachmentType, change_vector: str):
155+
def __init__(self, document_id: str, name: str, attachment_type: AttachmentType, change_vector: Optional[str]):
156156
if document_id is None:
157157
raise ValueError("Invalid document_id")
158158
if name is None:

ravendb/documents/operations/batch.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
from copy import deepcopy
22
from typing import Union, List, Dict, TYPE_CHECKING, Optional
33

4-
from ravendb import constants
4+
from ravendb.primitives import constants
55
from ravendb.documents.commands.batches import SingleNodeBatchCommand, ClusterWideBatchCommand, CommandType
66
from ravendb.documents.operations.patch import PatchStatus
77
from ravendb.documents.session.event_args import AfterSaveChangesEventArgs

ravendb/documents/operations/compare_exchange/compare_exchange.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
from enum import Enum
44
from typing import Union, Optional, Generic, TypeVar, Type
55

6-
from ravendb import constants
6+
from ravendb.primitives import constants
77
from ravendb.documents.conventions import DocumentConventions
88
from ravendb.documents.commands.batches import PutCompareExchangeCommandData, DeleteCompareExchangeCommandData
99
from ravendb.documents.session.document_session_operations.misc import _update_metadata_modifications

0 commit comments

Comments
 (0)