tilebox-datasets 0.38.0__tar.gz → 0.39.0__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 (74) hide show
  1. {tilebox_datasets-0.38.0 → tilebox_datasets-0.39.0}/PKG-INFO +1 -1
  2. {tilebox_datasets-0.38.0 → tilebox_datasets-0.39.0}/pyproject.toml +1 -1
  3. {tilebox_datasets-0.38.0 → tilebox_datasets-0.39.0}/tilebox/datasets/aio/client.py +4 -4
  4. {tilebox_datasets-0.38.0 → tilebox_datasets-0.39.0}/tilebox/datasets/aio/dataset.py +8 -13
  5. {tilebox_datasets-0.38.0 → tilebox_datasets-0.39.0}/tilebox/datasets/aio/pagination.py +1 -3
  6. {tilebox_datasets-0.38.0 → tilebox_datasets-0.39.0}/tilebox/datasets/client.py +1 -1
  7. tilebox_datasets-0.39.0/tilebox/datasets/data/__init__.py +28 -0
  8. {tilebox_datasets-0.38.0 → tilebox_datasets-0.39.0}/tilebox/datasets/data/collection.py +3 -3
  9. {tilebox_datasets-0.38.0 → tilebox_datasets-0.39.0}/tilebox/datasets/data/data_access.py +6 -6
  10. {tilebox_datasets-0.38.0 → tilebox_datasets-0.39.0}/tilebox/datasets/data/datapoint.py +7 -74
  11. {tilebox_datasets-0.38.0 → tilebox_datasets-0.39.0}/tilebox/datasets/data/datasets.py +2 -2
  12. tilebox_datasets-0.39.0/tilebox/datasets/data/time_interval.py +18 -0
  13. {tilebox_datasets-0.38.0 → tilebox_datasets-0.39.0}/tilebox/datasets/data/timeseries.py +6 -6
  14. tilebox_datasets-0.39.0/tilebox/datasets/datasets/v1/collections_pb2.py +49 -0
  15. {tilebox_datasets-0.38.0/tilebox/datasets/datasetsv1 → tilebox_datasets-0.39.0/tilebox/datasets/datasets/v1}/collections_pb2.pyi +11 -10
  16. {tilebox_datasets-0.38.0/tilebox/datasets/datasetsv1 → tilebox_datasets-0.39.0/tilebox/datasets/datasets/v1}/collections_pb2_grpc.py +2 -2
  17. tilebox_datasets-0.39.0/tilebox/datasets/datasets/v1/core_pb2.py +79 -0
  18. {tilebox_datasets-0.38.0/tilebox/datasets/datasetsv1 → tilebox_datasets-0.39.0/tilebox/datasets/datasets/v1}/core_pb2.pyi +13 -49
  19. tilebox_datasets-0.39.0/tilebox/datasets/datasets/v1/data_access_pb2.py +65 -0
  20. {tilebox_datasets-0.38.0/tilebox/datasets/datasetsv1 → tilebox_datasets-0.39.0/tilebox/datasets/datasets/v1}/data_access_pb2.pyi +18 -16
  21. {tilebox_datasets-0.38.0/tilebox/datasets/datasetsv1 → tilebox_datasets-0.39.0/tilebox/datasets/datasets/v1}/data_access_pb2_grpc.py +2 -2
  22. tilebox_datasets-0.39.0/tilebox/datasets/datasets/v1/data_ingestion_pb2.py +49 -0
  23. {tilebox_datasets-0.38.0/tilebox/datasets/datasetsv1 → tilebox_datasets-0.39.0/tilebox/datasets/datasets/v1}/data_ingestion_pb2.pyi +11 -10
  24. {tilebox_datasets-0.38.0/tilebox/datasets/datasetsv1 → tilebox_datasets-0.39.0/tilebox/datasets/datasets/v1}/data_ingestion_pb2_grpc.py +1 -1
  25. tilebox_datasets-0.39.0/tilebox/datasets/datasets/v1/dataset_type_pb2.py +53 -0
  26. {tilebox_datasets-0.38.0/tilebox/datasets/datasetsv1 → tilebox_datasets-0.39.0/tilebox/datasets/datasets/v1}/dataset_type_pb2.pyi +6 -5
  27. tilebox_datasets-0.39.0/tilebox/datasets/datasets/v1/datasets_pb2.py +62 -0
  28. {tilebox_datasets-0.38.0/tilebox/datasets/datasetsv1 → tilebox_datasets-0.39.0/tilebox/datasets/datasets/v1}/datasets_pb2.pyi +21 -8
  29. {tilebox_datasets-0.38.0/tilebox/datasets/datasetsv1 → tilebox_datasets-0.39.0/tilebox/datasets/datasets/v1}/datasets_pb2_grpc.py +45 -2
  30. tilebox_datasets-0.39.0/tilebox/datasets/datasets/v1/timeseries_pb2.py +42 -0
  31. {tilebox_datasets-0.38.0/tilebox/datasets/datasetsv1 → tilebox_datasets-0.39.0/tilebox/datasets/datasets/v1}/timeseries_pb2.pyi +9 -8
  32. {tilebox_datasets-0.38.0/tilebox/datasets/datasetsv1 → tilebox_datasets-0.39.0/tilebox/datasets/datasets/v1}/well_known_types_pb2.py +2 -2
  33. {tilebox_datasets-0.38.0 → tilebox_datasets-0.39.0}/tilebox/datasets/message_pool.py +1 -1
  34. {tilebox_datasets-0.38.0 → tilebox_datasets-0.39.0}/tilebox/datasets/progress.py +1 -1
  35. {tilebox_datasets-0.38.0 → tilebox_datasets-0.39.0}/tilebox/datasets/protobuf_conversion/field_types.py +2 -2
  36. tilebox_datasets-0.39.0/tilebox/datasets/query/__init__.py +8 -0
  37. tilebox_datasets-0.39.0/tilebox/datasets/query/id_interval.py +72 -0
  38. {tilebox_datasets-0.38.0/tilebox/datasets/data → tilebox_datasets-0.39.0/tilebox/datasets/query}/pagination.py +5 -5
  39. {tilebox_datasets-0.38.0/tilebox/datasets/data → tilebox_datasets-0.39.0/tilebox/datasets/query}/time_interval.py +4 -4
  40. {tilebox_datasets-0.38.0 → tilebox_datasets-0.39.0}/tilebox/datasets/service.py +13 -20
  41. {tilebox_datasets-0.38.0 → tilebox_datasets-0.39.0}/tilebox/datasets/sync/client.py +4 -4
  42. {tilebox_datasets-0.38.0 → tilebox_datasets-0.39.0}/tilebox/datasets/sync/dataset.py +7 -8
  43. {tilebox_datasets-0.38.0 → tilebox_datasets-0.39.0}/tilebox/datasets/sync/pagination.py +1 -3
  44. tilebox_datasets-0.39.0/tilebox/datasets/tilebox/v1/id_pb2.py +37 -0
  45. tilebox_datasets-0.39.0/tilebox/datasets/tilebox/v1/id_pb2.pyi +11 -0
  46. tilebox_datasets-0.39.0/tilebox/datasets/tilebox/v1/id_pb2_grpc.py +3 -0
  47. tilebox_datasets-0.39.0/tilebox/datasets/tilebox/v1/query_pb2.py +47 -0
  48. tilebox_datasets-0.39.0/tilebox/datasets/tilebox/v1/query_pb2.pyi +39 -0
  49. tilebox_datasets-0.39.0/tilebox/datasets/tilebox/v1/query_pb2_grpc.py +3 -0
  50. {tilebox_datasets-0.38.0/tilebox/datasets/data → tilebox_datasets-0.39.0/tilebox/datasets}/uuid.py +8 -7
  51. tilebox_datasets-0.38.0/tilebox/datasets/data/__init__.py +0 -16
  52. tilebox_datasets-0.38.0/tilebox/datasets/datasetsv1/collections_pb2.py +0 -48
  53. tilebox_datasets-0.38.0/tilebox/datasets/datasetsv1/core_pb2.py +0 -73
  54. tilebox_datasets-0.38.0/tilebox/datasets/datasetsv1/data_access_pb2.py +0 -57
  55. tilebox_datasets-0.38.0/tilebox/datasets/datasetsv1/data_ingestion_pb2.py +0 -48
  56. tilebox_datasets-0.38.0/tilebox/datasets/datasetsv1/dataset_type_pb2.py +0 -52
  57. tilebox_datasets-0.38.0/tilebox/datasets/datasetsv1/datasets_pb2.py +0 -55
  58. tilebox_datasets-0.38.0/tilebox/datasets/datasetsv1/timeseries_pb2.py +0 -41
  59. {tilebox_datasets-0.38.0 → tilebox_datasets-0.39.0}/.gitignore +0 -0
  60. {tilebox_datasets-0.38.0 → tilebox_datasets-0.39.0}/README.md +0 -0
  61. {tilebox_datasets-0.38.0 → tilebox_datasets-0.39.0}/tilebox/datasets/__init__.py +0 -0
  62. {tilebox_datasets-0.38.0 → tilebox_datasets-0.39.0}/tilebox/datasets/aio/__init__.py +0 -0
  63. {tilebox_datasets-0.38.0 → tilebox_datasets-0.39.0}/tilebox/datasets/aio/timeseries.py +0 -0
  64. {tilebox_datasets-0.38.0/tilebox/datasets/datasetsv1 → tilebox_datasets-0.39.0/tilebox/datasets/datasets/v1}/core_pb2_grpc.py +0 -0
  65. {tilebox_datasets-0.38.0/tilebox/datasets/datasetsv1 → tilebox_datasets-0.39.0/tilebox/datasets/datasets/v1}/dataset_type_pb2_grpc.py +0 -0
  66. {tilebox_datasets-0.38.0/tilebox/datasets/datasetsv1 → tilebox_datasets-0.39.0/tilebox/datasets/datasets/v1}/timeseries_pb2_grpc.py +0 -0
  67. {tilebox_datasets-0.38.0/tilebox/datasets/datasetsv1 → tilebox_datasets-0.39.0/tilebox/datasets/datasets/v1}/well_known_types_pb2.pyi +0 -0
  68. {tilebox_datasets-0.38.0/tilebox/datasets/datasetsv1 → tilebox_datasets-0.39.0/tilebox/datasets/datasets/v1}/well_known_types_pb2_grpc.py +0 -0
  69. {tilebox_datasets-0.38.0 → tilebox_datasets-0.39.0}/tilebox/datasets/group.py +0 -0
  70. {tilebox_datasets-0.38.0 → tilebox_datasets-0.39.0}/tilebox/datasets/protobuf_conversion/__init__.py +0 -0
  71. {tilebox_datasets-0.38.0 → tilebox_datasets-0.39.0}/tilebox/datasets/protobuf_conversion/protobuf_xarray.py +0 -0
  72. {tilebox_datasets-0.38.0 → tilebox_datasets-0.39.0}/tilebox/datasets/protobuf_conversion/to_protobuf.py +0 -0
  73. {tilebox_datasets-0.38.0 → tilebox_datasets-0.39.0}/tilebox/datasets/sync/__init__.py +0 -0
  74. {tilebox_datasets-0.38.0 → tilebox_datasets-0.39.0}/tilebox/datasets/sync/timeseries.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: tilebox-datasets
3
- Version: 0.38.0
3
+ Version: 0.39.0
4
4
  Summary: Access Tilebox datasets from Python
5
5
  Project-URL: Homepage, https://tilebox.com
6
6
  Project-URL: Documentation, https://docs.tilebox.com/datasets/introduction
@@ -54,7 +54,7 @@ packages = ["tilebox"]
54
54
  packages = ["tilebox"]
55
55
 
56
56
  [tool.coverage.run]
57
- omit = ["tilebox/*/datasetsv1/*"]
57
+ omit = ["tilebox/*/datasets/v1/*", "tilebox/*/tilebox/v1/*"]
58
58
 
59
59
  [tool.pytest.ini_options]
60
60
  minversion = "6.0"
@@ -5,10 +5,10 @@ from _tilebox.grpc.aio.error import with_pythonic_errors
5
5
  from tilebox.datasets.aio.dataset import DatasetClient
6
6
  from tilebox.datasets.client import Client as BaseClient
7
7
  from tilebox.datasets.client import token_from_env
8
- from tilebox.datasets.datasetsv1.collections_pb2_grpc import CollectionServiceStub
9
- from tilebox.datasets.datasetsv1.data_access_pb2_grpc import DataAccessServiceStub
10
- from tilebox.datasets.datasetsv1.data_ingestion_pb2_grpc import DataIngestionServiceStub
11
- from tilebox.datasets.datasetsv1.datasets_pb2_grpc import DatasetServiceStub
8
+ from tilebox.datasets.datasets.v1.collections_pb2_grpc import CollectionServiceStub
9
+ from tilebox.datasets.datasets.v1.data_access_pb2_grpc import DataAccessServiceStub
10
+ from tilebox.datasets.datasets.v1.data_ingestion_pb2_grpc import DataIngestionServiceStub
11
+ from tilebox.datasets.datasets.v1.datasets_pb2_grpc import DatasetServiceStub
12
12
  from tilebox.datasets.group import Group
13
13
  from tilebox.datasets.service import TileboxDatasetService
14
14
 
@@ -11,18 +11,11 @@ from _tilebox.grpc.aio.pagination import Pagination as PaginationProtocol
11
11
  from _tilebox.grpc.aio.pagination import paginated_request
12
12
  from _tilebox.grpc.aio.producer_consumer import async_producer_consumer
13
13
  from _tilebox.grpc.error import ArgumentError, NotFoundError
14
- from tilebox.datasets.aio.pagination import (
15
- with_progressbar,
16
- with_time_progress_callback,
17
- with_time_progressbar,
18
- )
14
+ from tilebox.datasets.aio.pagination import with_progressbar, with_time_progress_callback, with_time_progressbar
19
15
  from tilebox.datasets.data.collection import CollectionInfo
20
16
  from tilebox.datasets.data.data_access import QueryFilters, SpatialFilter, SpatialFilterLike
21
- from tilebox.datasets.data.datapoint import DatapointInterval, DatapointIntervalLike, QueryResultPage
17
+ from tilebox.datasets.data.datapoint import QueryResultPage
22
18
  from tilebox.datasets.data.datasets import Dataset
23
- from tilebox.datasets.data.pagination import Pagination
24
- from tilebox.datasets.data.time_interval import TimeInterval, TimeIntervalLike
25
- from tilebox.datasets.data.uuid import as_uuid
26
19
  from tilebox.datasets.message_pool import get_message_type
27
20
  from tilebox.datasets.progress import ProgressCallback
28
21
  from tilebox.datasets.protobuf_conversion.protobuf_xarray import MessageToXarrayConverter
@@ -33,7 +26,11 @@ from tilebox.datasets.protobuf_conversion.to_protobuf import (
33
26
  marshal_messages,
34
27
  to_messages,
35
28
  )
29
+ from tilebox.datasets.query.id_interval import IDInterval, IDIntervalLike
30
+ from tilebox.datasets.query.pagination import Pagination
31
+ from tilebox.datasets.query.time_interval import TimeInterval, TimeIntervalLike
36
32
  from tilebox.datasets.service import TileboxDatasetService
33
+ from tilebox.datasets.uuid import as_uuid
37
34
 
38
35
  # allow private member access: we allow it here because we want to make as much private as possible so that we can
39
36
  # minimize the publicly facing API (which allows us to change internals later, and also limits to auto-completion)
@@ -240,7 +237,7 @@ class CollectionClient:
240
237
 
241
238
  async def _find_interval(
242
239
  self,
243
- datapoint_id_interval: DatapointIntervalLike,
240
+ datapoint_id_interval: IDIntervalLike,
244
241
  end_inclusive: bool = True,
245
242
  *,
246
243
  skip_data: bool = False,
@@ -259,9 +256,7 @@ class CollectionClient:
259
256
  Returns:
260
257
  The datapoints in the given interval as an xarray dataset
261
258
  """
262
- filters = QueryFilters(
263
- temporal_extent=DatapointInterval.parse(datapoint_id_interval, end_inclusive=end_inclusive)
264
- )
259
+ filters = QueryFilters(temporal_extent=IDInterval.parse(datapoint_id_interval, end_inclusive=end_inclusive))
265
260
 
266
261
  async def request(page: PaginationProtocol) -> QueryResultPage:
267
262
  query_page = Pagination(page.limit, page.starting_after)
@@ -5,11 +5,9 @@ from typing import TypeVar
5
5
 
6
6
  from tqdm.auto import tqdm
7
7
 
8
- from tilebox.datasets.data import (
9
- TimeInterval,
10
- )
11
8
  from tilebox.datasets.data.datapoint import QueryResultPage
12
9
  from tilebox.datasets.progress import ProgressCallback, TimeIntervalProgressBar
10
+ from tilebox.datasets.query.time_interval import TimeInterval
13
11
 
14
12
  ResultPage = TypeVar("ResultPage", bound=QueryResultPage)
15
13
 
@@ -8,10 +8,10 @@ from promise import Promise
8
8
 
9
9
  from _tilebox.grpc.channel import parse_channel_info
10
10
  from tilebox.datasets.data.datasets import Dataset, DatasetGroup, ListDatasetsResponse
11
- from tilebox.datasets.data.uuid import as_uuid
12
11
  from tilebox.datasets.group import Group
13
12
  from tilebox.datasets.message_pool import register_once
14
13
  from tilebox.datasets.service import TileboxDatasetService
14
+ from tilebox.datasets.uuid import as_uuid
15
15
 
16
16
 
17
17
  class TimeseriesDatasetLike(Protocol):
@@ -0,0 +1,28 @@
1
+ # for backwards compatibility, we can remove this hack in the future
2
+
3
+ from warnings import warn
4
+
5
+ from tilebox.datasets.query.time_interval import TimeInterval as _TimeInterval
6
+ from tilebox.datasets.query.time_interval import TimeIntervalLike
7
+
8
+
9
+ class TimeInterval(_TimeInterval):
10
+ def __post_init__(self) -> None:
11
+ warn(
12
+ "The TimeInterval class has been deprecated, import from tilebox.datasets.query instead.",
13
+ DeprecationWarning,
14
+ stacklevel=2,
15
+ )
16
+ super().__post_init__()
17
+
18
+ @classmethod
19
+ def parse(cls, arg: TimeIntervalLike) -> "_TimeInterval":
20
+ warn(
21
+ "The TimeInterval class has been deprecated, import from tilebox.datasets.query instead.",
22
+ DeprecationWarning,
23
+ stacklevel=2,
24
+ )
25
+ return super().parse(arg)
26
+
27
+
28
+ __all__ = ["TimeInterval"]
@@ -1,9 +1,9 @@
1
1
  from dataclasses import dataclass
2
2
  from uuid import UUID
3
3
 
4
- from tilebox.datasets.data.time_interval import TimeInterval
5
- from tilebox.datasets.data.uuid import uuid_message_to_uuid, uuid_to_uuid_message
6
- from tilebox.datasets.datasetsv1 import core_pb2
4
+ from tilebox.datasets.datasets.v1 import core_pb2
5
+ from tilebox.datasets.query.time_interval import TimeInterval
6
+ from tilebox.datasets.uuid import uuid_message_to_uuid, uuid_to_uuid_message
7
7
 
8
8
 
9
9
  @dataclass
@@ -7,9 +7,9 @@ from shapely import Geometry, from_wkb, to_wkb
7
7
  # from python 3.11 onwards this is available as typing.NotRequired:
8
8
  from typing_extensions import NotRequired
9
9
 
10
- from tilebox.datasets.data.datapoint import DatapointInterval
11
- from tilebox.datasets.data.time_interval import TimeInterval
12
- from tilebox.datasets.datasetsv1 import data_access_pb2, well_known_types_pb2
10
+ from tilebox.datasets.datasets.v1 import data_access_pb2, well_known_types_pb2
11
+ from tilebox.datasets.query.id_interval import IDInterval
12
+ from tilebox.datasets.query.time_interval import TimeInterval
13
13
 
14
14
 
15
15
  class SpatialFilterMode(Enum):
@@ -104,16 +104,16 @@ class SpatialFilter:
104
104
 
105
105
  @dataclass(frozen=True)
106
106
  class QueryFilters:
107
- temporal_extent: TimeInterval | DatapointInterval
107
+ temporal_extent: TimeInterval | IDInterval
108
108
  spatial_extent: SpatialFilter | None = None
109
109
 
110
110
  @classmethod
111
111
  def from_message(cls, filters: data_access_pb2.QueryFilters) -> "QueryFilters":
112
- temporal_extent: TimeInterval | DatapointInterval | None = None
112
+ temporal_extent: TimeInterval | IDInterval | None = None
113
113
  if filters.HasField("time_interval"):
114
114
  temporal_extent = TimeInterval.from_message(filters.time_interval)
115
115
  if filters.HasField("datapoint_interval"):
116
- temporal_extent = DatapointInterval.from_message(filters.datapoint_interval)
116
+ temporal_extent = IDInterval.from_message(filters.datapoint_interval)
117
117
 
118
118
  if temporal_extent is None:
119
119
  raise ValueError("Invalid filter: time or datapoint interval must be set")
@@ -1,81 +1,14 @@
1
1
  from dataclasses import dataclass, field
2
2
  from datetime import datetime
3
- from typing import Any, TypeAlias
3
+ from typing import Any
4
4
  from uuid import UUID
5
5
 
6
- from tilebox.datasets.data.pagination import Pagination
7
- from tilebox.datasets.data.time_interval import timestamp_to_datetime
8
- from tilebox.datasets.data.uuid import uuid_message_to_uuid, uuid_to_uuid_message
9
- from tilebox.datasets.datasetsv1 import core_pb2, data_access_pb2, data_ingestion_pb2
6
+ from tilebox.datasets.datasets.v1 import core_pb2, data_access_pb2, data_ingestion_pb2
10
7
  from tilebox.datasets.message_pool import get_message_type
11
-
12
- DatapointIntervalLike: TypeAlias = "tuple[str, str] | tuple[UUID, UUID] | DatapointInterval"
13
-
14
-
15
- @dataclass(frozen=True)
16
- class DatapointInterval:
17
- start_id: UUID
18
- end_id: UUID
19
- start_exclusive: bool
20
- end_inclusive: bool
21
-
22
- @classmethod
23
- def from_message(cls, interval: core_pb2.DatapointInterval) -> "DatapointInterval":
24
- return cls(
25
- start_id=uuid_message_to_uuid(interval.start_id),
26
- end_id=uuid_message_to_uuid(interval.end_id),
27
- start_exclusive=interval.start_exclusive,
28
- end_inclusive=interval.end_inclusive,
29
- )
30
-
31
- def to_message(self) -> core_pb2.DatapointInterval:
32
- return core_pb2.DatapointInterval(
33
- start_id=uuid_to_uuid_message(self.start_id),
34
- end_id=uuid_to_uuid_message(self.end_id),
35
- start_exclusive=self.start_exclusive,
36
- end_inclusive=self.end_inclusive,
37
- )
38
-
39
- @classmethod
40
- def parse(
41
- cls, arg: DatapointIntervalLike, start_exclusive: bool = False, end_inclusive: bool = True
42
- ) -> "DatapointInterval":
43
- """
44
- Convert a variety of input types to a DatapointInterval.
45
-
46
- Supported input types:
47
- - DatapointInterval: Return the input as is
48
- - tuple of two UUIDs: Return an DatapointInterval with start and end id set to the given values
49
- - tuple of two strings: Return an DatapointInterval with start and end id set to the UUIDs parsed from the given strings
50
-
51
- Args:
52
- arg: The input to convert
53
- start_exclusive: Whether the start id is exclusive
54
- end_inclusive: Whether the end id is inclusive
55
-
56
- Returns:
57
- DatapointInterval: The parsed ID interval
58
- """
59
-
60
- match arg:
61
- case DatapointInterval(_, _, _, _):
62
- return arg
63
- case (UUID(), UUID()):
64
- start, end = arg
65
- return DatapointInterval(
66
- start_id=start,
67
- end_id=end,
68
- start_exclusive=start_exclusive,
69
- end_inclusive=end_inclusive,
70
- )
71
- case (str(), str()):
72
- start, end = arg
73
- return DatapointInterval(
74
- start_id=UUID(start),
75
- end_id=UUID(end),
76
- start_exclusive=start_exclusive,
77
- end_inclusive=end_inclusive,
78
- )
8
+ from tilebox.datasets.query.pagination import Pagination
9
+ from tilebox.datasets.query.time_interval import timestamp_to_datetime
10
+ from tilebox.datasets.tilebox.v1 import id_pb2
11
+ from tilebox.datasets.uuid import uuid_message_to_uuid
79
12
 
80
13
 
81
14
  @dataclass(frozen=True)
@@ -173,5 +106,5 @@ class IngestResponse:
173
106
  return data_ingestion_pb2.IngestResponse(
174
107
  num_created=self.num_created,
175
108
  num_existing=self.num_existing,
176
- datapoint_ids=[core_pb2.ID(uuid=datapoint_id.bytes) for datapoint_id in self.datapoint_ids],
109
+ datapoint_ids=[id_pb2.ID(uuid=datapoint_id.bytes) for datapoint_id in self.datapoint_ids],
177
110
  )
@@ -3,8 +3,8 @@ from uuid import UUID
3
3
 
4
4
  from google.protobuf.descriptor_pb2 import FileDescriptorSet
5
5
 
6
- from tilebox.datasets.data.uuid import uuid_message_to_optional_uuid, uuid_message_to_uuid, uuid_to_uuid_message
7
- from tilebox.datasets.datasetsv1 import core_pb2, dataset_type_pb2, datasets_pb2
6
+ from tilebox.datasets.datasets.v1 import core_pb2, dataset_type_pb2, datasets_pb2
7
+ from tilebox.datasets.uuid import uuid_message_to_optional_uuid, uuid_message_to_uuid, uuid_to_uuid_message
8
8
 
9
9
 
10
10
  @dataclass(frozen=True)
@@ -0,0 +1,18 @@
1
+ # kept for backwards compatibility, we can remove this whole file in the future
2
+
3
+ from warnings import warn
4
+
5
+ from tilebox.datasets.query.time_interval import (
6
+ TimeInterval,
7
+ TimeIntervalLike,
8
+ datetime_to_timestamp,
9
+ timestamp_to_datetime,
10
+ )
11
+
12
+ warn(
13
+ "The time_interval module has been deprecated, import from tilebox.datasets.query instead.",
14
+ DeprecationWarning,
15
+ stacklevel=2,
16
+ )
17
+
18
+ __all__ = ["TimeInterval", "TimeIntervalLike", "datetime_to_timestamp", "timestamp_to_datetime"]
@@ -2,10 +2,10 @@ from dataclasses import dataclass
2
2
  from datetime import timedelta
3
3
  from uuid import UUID
4
4
 
5
- from tilebox.datasets.data.datapoint import DatapointInterval
6
- from tilebox.datasets.data.time_interval import TimeInterval, duration_to_timedelta, timedelta_to_duration
7
- from tilebox.datasets.data.uuid import uuid_message_to_uuid, uuid_to_uuid_message
8
- from tilebox.datasets.datasetsv1 import timeseries_pb2
5
+ from tilebox.datasets.datasets.v1 import timeseries_pb2
6
+ from tilebox.datasets.query.id_interval import IDInterval
7
+ from tilebox.datasets.query.time_interval import TimeInterval, duration_to_timedelta, timedelta_to_duration
8
+ from tilebox.datasets.uuid import uuid_message_to_uuid, uuid_to_uuid_message
9
9
 
10
10
 
11
11
  @dataclass
@@ -13,7 +13,7 @@ class TimeseriesDatasetChunk:
13
13
  dataset_id: UUID
14
14
  collection_id: UUID
15
15
  time_interval: TimeInterval | None
16
- datapoint_interval: DatapointInterval | None
16
+ datapoint_interval: IDInterval | None
17
17
  branch_factor: int
18
18
  chunk_size: int
19
19
  datapoints_per_365_days: int
@@ -28,7 +28,7 @@ class TimeseriesDatasetChunk:
28
28
  and chunk.datapoint_interval.start_id.uuid
29
29
  and chunk.datapoint_interval.end_id.uuid
30
30
  ):
31
- datapoint_interval = DatapointInterval.from_message(chunk.datapoint_interval)
31
+ datapoint_interval = IDInterval.from_message(chunk.datapoint_interval)
32
32
 
33
33
  time_interval = None
34
34
  if chunk.time_interval and chunk.time_interval.start_time and chunk.time_interval.end_time:
@@ -0,0 +1,49 @@
1
+ # -*- coding: utf-8 -*-
2
+ # Generated by the protocol buffer compiler. DO NOT EDIT!
3
+ # NO CHECKED-IN PROTOBUF GENCODE
4
+ # source: datasets/v1/collections.proto
5
+ # Protobuf Python Version: 5.29.3
6
+ """Generated protocol buffer code."""
7
+ from google.protobuf import descriptor as _descriptor
8
+ from google.protobuf import descriptor_pool as _descriptor_pool
9
+ from google.protobuf import runtime_version as _runtime_version
10
+ from google.protobuf import symbol_database as _symbol_database
11
+ from google.protobuf.internal import builder as _builder
12
+ _runtime_version.ValidateProtobufRuntimeVersion(
13
+ _runtime_version.Domain.PUBLIC,
14
+ 5,
15
+ 29,
16
+ 3,
17
+ '',
18
+ 'datasets/v1/collections.proto'
19
+ )
20
+ # @@protoc_insertion_point(imports)
21
+
22
+ _sym_db = _symbol_database.Default()
23
+
24
+
25
+ from tilebox.datasets.datasets.v1 import core_pb2 as datasets_dot_v1_dot_core__pb2
26
+ from tilebox.datasets.tilebox.v1 import id_pb2 as tilebox_dot_v1_dot_id__pb2
27
+
28
+
29
+ DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x1d\x64\x61tasets/v1/collections.proto\x12\x0b\x64\x61tasets.v1\x1a\x16\x64\x61tasets/v1/core.proto\x1a\x13tilebox/v1/id.proto\"\\\n\x17\x43reateCollectionRequest\x12-\n\ndataset_id\x18\x01 \x01(\x0b\x32\x0e.tilebox.v1.IDR\tdatasetId\x12\x12\n\x04name\x18\x02 \x01(\tR\x04name\"\xc0\x01\n\x1aGetCollectionByNameRequest\x12\'\n\x0f\x63ollection_name\x18\x01 \x01(\tR\x0e\x63ollectionName\x12+\n\x11with_availability\x18\x02 \x01(\x08R\x10withAvailability\x12\x1d\n\nwith_count\x18\x03 \x01(\x08R\twithCount\x12-\n\ndataset_id\x18\x04 \x01(\x0b\x32\x0e.tilebox.v1.IDR\tdatasetId\"}\n\x17\x44\x65leteCollectionRequest\x12\x33\n\rcollection_id\x18\x01 \x01(\x0b\x32\x0e.tilebox.v1.IDR\x0c\x63ollectionId\x12-\n\ndataset_id\x18\x02 \x01(\x0b\x32\x0e.tilebox.v1.IDR\tdatasetId\"\x1a\n\x18\x44\x65leteCollectionResponse\"\x93\x01\n\x16ListCollectionsRequest\x12-\n\ndataset_id\x18\x01 \x01(\x0b\x32\x0e.tilebox.v1.IDR\tdatasetId\x12+\n\x11with_availability\x18\x02 \x01(\x08R\x10withAvailability\x12\x1d\n\nwith_count\x18\x03 \x01(\x08R\twithCount2\x86\x03\n\x11\x43ollectionService\x12W\n\x10\x43reateCollection\x12$.datasets.v1.CreateCollectionRequest\x1a\x1b.datasets.v1.CollectionInfo\"\x00\x12]\n\x13GetCollectionByName\x12\'.datasets.v1.GetCollectionByNameRequest\x1a\x1b.datasets.v1.CollectionInfo\"\x00\x12\x61\n\x10\x44\x65leteCollection\x12$.datasets.v1.DeleteCollectionRequest\x1a%.datasets.v1.DeleteCollectionResponse\"\x00\x12V\n\x0fListCollections\x12#.datasets.v1.ListCollectionsRequest\x1a\x1c.datasets.v1.CollectionInfos\"\x00\x42u\n\x0f\x63om.datasets.v1B\x10\x43ollectionsProtoP\x01\xa2\x02\x03\x44XX\xaa\x02\x0b\x44\x61tasets.V1\xca\x02\x0b\x44\x61tasets\\V1\xe2\x02\x17\x44\x61tasets\\V1\\GPBMetadata\xea\x02\x0c\x44\x61tasets::V1\x92\x03\x02\x08\x02\x62\x08\x65\x64itionsp\xe8\x07')
30
+
31
+ _globals = globals()
32
+ _builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals)
33
+ _builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'datasets.v1.collections_pb2', _globals)
34
+ if not _descriptor._USE_C_DESCRIPTORS:
35
+ _globals['DESCRIPTOR']._loaded_options = None
36
+ _globals['DESCRIPTOR']._serialized_options = b'\n\017com.datasets.v1B\020CollectionsProtoP\001\242\002\003DXX\252\002\013Datasets.V1\312\002\013Datasets\\V1\342\002\027Datasets\\V1\\GPBMetadata\352\002\014Datasets::V1\222\003\002\010\002'
37
+ _globals['_CREATECOLLECTIONREQUEST']._serialized_start=91
38
+ _globals['_CREATECOLLECTIONREQUEST']._serialized_end=183
39
+ _globals['_GETCOLLECTIONBYNAMEREQUEST']._serialized_start=186
40
+ _globals['_GETCOLLECTIONBYNAMEREQUEST']._serialized_end=378
41
+ _globals['_DELETECOLLECTIONREQUEST']._serialized_start=380
42
+ _globals['_DELETECOLLECTIONREQUEST']._serialized_end=505
43
+ _globals['_DELETECOLLECTIONRESPONSE']._serialized_start=507
44
+ _globals['_DELETECOLLECTIONRESPONSE']._serialized_end=533
45
+ _globals['_LISTCOLLECTIONSREQUEST']._serialized_start=536
46
+ _globals['_LISTCOLLECTIONSREQUEST']._serialized_end=683
47
+ _globals['_COLLECTIONSERVICE']._serialized_start=686
48
+ _globals['_COLLECTIONSERVICE']._serialized_end=1076
49
+ # @@protoc_insertion_point(module_scope)
@@ -1,4 +1,5 @@
1
- from tilebox.datasets.datasetsv1 import core_pb2 as _core_pb2
1
+ from tilebox.datasets.datasets.v1 import core_pb2 as _core_pb2
2
+ from tilebox.datasets.tilebox.v1 import id_pb2 as _id_pb2
2
3
  from google.protobuf import descriptor as _descriptor
3
4
  from google.protobuf import message as _message
4
5
  from typing import ClassVar as _ClassVar, Mapping as _Mapping, Optional as _Optional, Union as _Union
@@ -9,9 +10,9 @@ class CreateCollectionRequest(_message.Message):
9
10
  __slots__ = ("dataset_id", "name")
10
11
  DATASET_ID_FIELD_NUMBER: _ClassVar[int]
11
12
  NAME_FIELD_NUMBER: _ClassVar[int]
12
- dataset_id: _core_pb2.ID
13
+ dataset_id: _id_pb2.ID
13
14
  name: str
14
- def __init__(self, dataset_id: _Optional[_Union[_core_pb2.ID, _Mapping]] = ..., name: _Optional[str] = ...) -> None: ...
15
+ def __init__(self, dataset_id: _Optional[_Union[_id_pb2.ID, _Mapping]] = ..., name: _Optional[str] = ...) -> None: ...
15
16
 
16
17
  class GetCollectionByNameRequest(_message.Message):
17
18
  __slots__ = ("collection_name", "with_availability", "with_count", "dataset_id")
@@ -22,16 +23,16 @@ class GetCollectionByNameRequest(_message.Message):
22
23
  collection_name: str
23
24
  with_availability: bool
24
25
  with_count: bool
25
- dataset_id: _core_pb2.ID
26
- def __init__(self, collection_name: _Optional[str] = ..., with_availability: bool = ..., with_count: bool = ..., dataset_id: _Optional[_Union[_core_pb2.ID, _Mapping]] = ...) -> None: ...
26
+ dataset_id: _id_pb2.ID
27
+ def __init__(self, collection_name: _Optional[str] = ..., with_availability: bool = ..., with_count: bool = ..., dataset_id: _Optional[_Union[_id_pb2.ID, _Mapping]] = ...) -> None: ...
27
28
 
28
29
  class DeleteCollectionRequest(_message.Message):
29
30
  __slots__ = ("collection_id", "dataset_id")
30
31
  COLLECTION_ID_FIELD_NUMBER: _ClassVar[int]
31
32
  DATASET_ID_FIELD_NUMBER: _ClassVar[int]
32
- collection_id: _core_pb2.ID
33
- dataset_id: _core_pb2.ID
34
- def __init__(self, collection_id: _Optional[_Union[_core_pb2.ID, _Mapping]] = ..., dataset_id: _Optional[_Union[_core_pb2.ID, _Mapping]] = ...) -> None: ...
33
+ collection_id: _id_pb2.ID
34
+ dataset_id: _id_pb2.ID
35
+ def __init__(self, collection_id: _Optional[_Union[_id_pb2.ID, _Mapping]] = ..., dataset_id: _Optional[_Union[_id_pb2.ID, _Mapping]] = ...) -> None: ...
35
36
 
36
37
  class DeleteCollectionResponse(_message.Message):
37
38
  __slots__ = ()
@@ -42,7 +43,7 @@ class ListCollectionsRequest(_message.Message):
42
43
  DATASET_ID_FIELD_NUMBER: _ClassVar[int]
43
44
  WITH_AVAILABILITY_FIELD_NUMBER: _ClassVar[int]
44
45
  WITH_COUNT_FIELD_NUMBER: _ClassVar[int]
45
- dataset_id: _core_pb2.ID
46
+ dataset_id: _id_pb2.ID
46
47
  with_availability: bool
47
48
  with_count: bool
48
- def __init__(self, dataset_id: _Optional[_Union[_core_pb2.ID, _Mapping]] = ..., with_availability: bool = ..., with_count: bool = ...) -> None: ...
49
+ def __init__(self, dataset_id: _Optional[_Union[_id_pb2.ID, _Mapping]] = ..., with_availability: bool = ..., with_count: bool = ...) -> None: ...
@@ -2,8 +2,8 @@
2
2
  """Client and server classes corresponding to protobuf-defined services."""
3
3
  import grpc
4
4
 
5
- from tilebox.datasets.datasetsv1 import collections_pb2 as datasets_dot_v1_dot_collections__pb2
6
- from tilebox.datasets.datasetsv1 import core_pb2 as datasets_dot_v1_dot_core__pb2
5
+ from tilebox.datasets.datasets.v1 import collections_pb2 as datasets_dot_v1_dot_collections__pb2
6
+ from tilebox.datasets.datasets.v1 import core_pb2 as datasets_dot_v1_dot_core__pb2
7
7
 
8
8
 
9
9
  class CollectionServiceStub(object):
@@ -0,0 +1,79 @@
1
+ # -*- coding: utf-8 -*-
2
+ # Generated by the protocol buffer compiler. DO NOT EDIT!
3
+ # NO CHECKED-IN PROTOBUF GENCODE
4
+ # source: datasets/v1/core.proto
5
+ # Protobuf Python Version: 5.29.3
6
+ """Generated protocol buffer code."""
7
+ from google.protobuf import descriptor as _descriptor
8
+ from google.protobuf import descriptor_pool as _descriptor_pool
9
+ from google.protobuf import runtime_version as _runtime_version
10
+ from google.protobuf import symbol_database as _symbol_database
11
+ from google.protobuf.internal import builder as _builder
12
+ _runtime_version.ValidateProtobufRuntimeVersion(
13
+ _runtime_version.Domain.PUBLIC,
14
+ 5,
15
+ 29,
16
+ 3,
17
+ '',
18
+ 'datasets/v1/core.proto'
19
+ )
20
+ # @@protoc_insertion_point(imports)
21
+
22
+ _sym_db = _symbol_database.Default()
23
+
24
+
25
+ from tilebox.datasets.datasets.v1 import dataset_type_pb2 as datasets_dot_v1_dot_dataset__type__pb2
26
+ from google.protobuf import timestamp_pb2 as google_dot_protobuf_dot_timestamp__pb2
27
+ from tilebox.datasets.tilebox.v1 import id_pb2 as tilebox_dot_v1_dot_id__pb2
28
+ from tilebox.datasets.tilebox.v1 import query_pb2 as tilebox_dot_v1_dot_query__pb2
29
+
30
+
31
+ DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x16\x64\x61tasets/v1/core.proto\x12\x0b\x64\x61tasets.v1\x1a\x1e\x64\x61tasets/v1/dataset_type.proto\x1a\x1fgoogle/protobuf/timestamp.proto\x1a\x13tilebox/v1/id.proto\x1a\x16tilebox/v1/query.proto\"]\n\x10LegacyPagination\x12\x1b\n\x05limit\x18\x01 \x01(\x03\x42\x05\xaa\x01\x02\x08\x01R\x05limit\x12,\n\x0estarting_after\x18\x02 \x01(\tB\x05\xaa\x01\x02\x08\x01R\rstartingAfter\"6\n\x03\x41ny\x12\x19\n\x08type_url\x18\x01 \x01(\tR\x07typeUrl\x12\x14\n\x05value\x18\x02 \x01(\x0cR\x05value\">\n\x0bRepeatedAny\x12\x19\n\x08type_url\x18\x01 \x01(\tR\x07typeUrl\x12\x14\n\x05value\x18\x02 \x03(\x0cR\x05value\"\xa8\x01\n\x11\x44\x61tapointMetadata\x12\x39\n\nevent_time\x18\x01 \x01(\x0b\x32\x1a.google.protobuf.TimestampR\teventTime\x12\x41\n\x0eingestion_time\x18\x02 \x01(\x0b\x32\x1a.google.protobuf.TimestampR\ringestionTime\x12\x15\n\x02id\x18\x03 \x01(\tB\x05\xaa\x01\x02\x08\x01R\x02id\"n\n\nDatapoints\x12\x32\n\x04meta\x18\x01 \x03(\x0b\x32\x1e.datasets.v1.DatapointMetadataR\x04meta\x12,\n\x04\x64\x61ta\x18\x02 \x01(\x0b\x32\x18.datasets.v1.RepeatedAnyR\x04\x64\x61ta\"\xb4\x01\n\rDatapointPage\x12\x32\n\x04meta\x18\x01 \x03(\x0b\x32\x1e.datasets.v1.DatapointMetadataR\x04meta\x12,\n\x04\x64\x61ta\x18\x02 \x01(\x0b\x32\x18.datasets.v1.RepeatedAnyR\x04\x64\x61ta\x12\x41\n\tnext_page\x18\x03 \x01(\x0b\x32\x1d.datasets.v1.LegacyPaginationB\x05\xaa\x01\x02\x08\x01R\x08nextPage\"e\n\tDatapoint\x12\x32\n\x04meta\x18\x01 \x01(\x0b\x32\x1e.datasets.v1.DatapointMetadataR\x04meta\x12$\n\x04\x64\x61ta\x18\x02 \x01(\x0b\x32\x10.datasets.v1.AnyR\x04\x64\x61ta\"]\n\nCollection\x12\x1b\n\tlegacy_id\x18\x01 \x01(\tR\x08legacyId\x12\x12\n\x04name\x18\x02 \x01(\tR\x04name\x12\x1e\n\x02id\x18\x03 \x01(\x0b\x32\x0e.tilebox.v1.IDR\x02id\"\xab\x01\n\x0e\x43ollectionInfo\x12\x37\n\ncollection\x18\x01 \x01(\x0b\x32\x17.datasets.v1.CollectionR\ncollection\x12\x43\n\x0c\x61vailability\x18\x02 \x01(\x0b\x32\x18.tilebox.v1.TimeIntervalB\x05\xaa\x01\x02\x08\x01R\x0c\x61vailability\x12\x1b\n\x05\x63ount\x18\x03 \x01(\x04\x42\x05\xaa\x01\x02\x08\x01R\x05\x63ount\"B\n\x0f\x43ollectionInfos\x12/\n\x04\x64\x61ta\x18\x01 \x03(\x0b\x32\x1b.datasets.v1.CollectionInfoR\x04\x64\x61ta\"\xb9\x03\n\x07\x44\x61taset\x12\x1e\n\x02id\x18\x01 \x01(\x0b\x32\x0e.tilebox.v1.IDR\x02id\x12)\n\x08group_id\x18\x02 \x01(\x0b\x32\x0e.tilebox.v1.IDR\x07groupId\x12.\n\x04type\x18\x03 \x01(\x0b\x32\x1a.datasets.v1.AnnotatedTypeR\x04type\x12\x1b\n\tcode_name\x18\x04 \x01(\tR\x08\x63odeName\x12\x12\n\x04name\x18\x05 \x01(\tR\x04name\x12\x18\n\x07summary\x18\x06 \x01(\tR\x07summary\x12\x12\n\x04icon\x18\x07 \x01(\tR\x04icon\x12 \n\x0b\x64\x65scription\x18\x08 \x01(\tR\x0b\x64\x65scription\x12@\n\x0bpermissions\x18\n \x03(\x0e\x32\x1e.datasets.v1.DatasetPermissionR\x0bpermissions\x12\x37\n\nvisibility\x18\x0b \x01(\x0e\x32\x17.datasets.v1.VisibilityR\nvisibility\x12\x12\n\x04slug\x18\x0c \x01(\tR\x04slug\x12#\n\rtype_editable\x18\r \x01(\x08R\x0ctypeEditable\"\xa0\x01\n\x0c\x44\x61tasetGroup\x12\x1e\n\x02id\x18\x01 \x01(\x0b\x32\x0e.tilebox.v1.IDR\x02id\x12+\n\tparent_id\x18\x02 \x01(\x0b\x32\x0e.tilebox.v1.IDR\x08parentId\x12\x1b\n\tcode_name\x18\x03 \x01(\tR\x08\x63odeName\x12\x12\n\x04name\x18\x04 \x01(\tR\x04name\x12\x12\n\x04icon\x18\x05 \x01(\tR\x04icon*\x9b\x01\n\x11\x44\x61tasetPermission\x12\"\n\x1e\x44\x41TASET_PERMISSION_UNSPECIFIED\x10\x00\x12\"\n\x1e\x44\x41TASET_PERMISSION_ACCESS_DATA\x10\x01\x12!\n\x1d\x44\x41TASET_PERMISSION_WRITE_DATA\x10\x02\x12\x1b\n\x17\x44\x41TASET_PERMISSION_EDIT\x10\x03*v\n\nVisibility\x12\x1a\n\x16VISIBILITY_UNSPECIFIED\x10\x00\x12\x16\n\x12VISIBILITY_PRIVATE\x10\x01\x12\x1d\n\x19VISIBILITY_SHARED_WITH_ME\x10\x02\x12\x15\n\x11VISIBILITY_PUBLIC\x10\x03\x42n\n\x0f\x63om.datasets.v1B\tCoreProtoP\x01\xa2\x02\x03\x44XX\xaa\x02\x0b\x44\x61tasets.V1\xca\x02\x0b\x44\x61tasets\\V1\xe2\x02\x17\x44\x61tasets\\V1\\GPBMetadata\xea\x02\x0c\x44\x61tasets::V1\x92\x03\x02\x08\x02\x62\x08\x65\x64itionsp\xe8\x07')
32
+
33
+ _globals = globals()
34
+ _builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals)
35
+ _builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'datasets.v1.core_pb2', _globals)
36
+ if not _descriptor._USE_C_DESCRIPTORS:
37
+ _globals['DESCRIPTOR']._loaded_options = None
38
+ _globals['DESCRIPTOR']._serialized_options = b'\n\017com.datasets.v1B\tCoreProtoP\001\242\002\003DXX\252\002\013Datasets.V1\312\002\013Datasets\\V1\342\002\027Datasets\\V1\\GPBMetadata\352\002\014Datasets::V1\222\003\002\010\002'
39
+ _globals['_LEGACYPAGINATION'].fields_by_name['limit']._loaded_options = None
40
+ _globals['_LEGACYPAGINATION'].fields_by_name['limit']._serialized_options = b'\252\001\002\010\001'
41
+ _globals['_LEGACYPAGINATION'].fields_by_name['starting_after']._loaded_options = None
42
+ _globals['_LEGACYPAGINATION'].fields_by_name['starting_after']._serialized_options = b'\252\001\002\010\001'
43
+ _globals['_DATAPOINTMETADATA'].fields_by_name['id']._loaded_options = None
44
+ _globals['_DATAPOINTMETADATA'].fields_by_name['id']._serialized_options = b'\252\001\002\010\001'
45
+ _globals['_DATAPOINTPAGE'].fields_by_name['next_page']._loaded_options = None
46
+ _globals['_DATAPOINTPAGE'].fields_by_name['next_page']._serialized_options = b'\252\001\002\010\001'
47
+ _globals['_COLLECTIONINFO'].fields_by_name['availability']._loaded_options = None
48
+ _globals['_COLLECTIONINFO'].fields_by_name['availability']._serialized_options = b'\252\001\002\010\001'
49
+ _globals['_COLLECTIONINFO'].fields_by_name['count']._loaded_options = None
50
+ _globals['_COLLECTIONINFO'].fields_by_name['count']._serialized_options = b'\252\001\002\010\001'
51
+ _globals['_DATASETPERMISSION']._serialized_start=1878
52
+ _globals['_DATASETPERMISSION']._serialized_end=2033
53
+ _globals['_VISIBILITY']._serialized_start=2035
54
+ _globals['_VISIBILITY']._serialized_end=2153
55
+ _globals['_LEGACYPAGINATION']._serialized_start=149
56
+ _globals['_LEGACYPAGINATION']._serialized_end=242
57
+ _globals['_ANY']._serialized_start=244
58
+ _globals['_ANY']._serialized_end=298
59
+ _globals['_REPEATEDANY']._serialized_start=300
60
+ _globals['_REPEATEDANY']._serialized_end=362
61
+ _globals['_DATAPOINTMETADATA']._serialized_start=365
62
+ _globals['_DATAPOINTMETADATA']._serialized_end=533
63
+ _globals['_DATAPOINTS']._serialized_start=535
64
+ _globals['_DATAPOINTS']._serialized_end=645
65
+ _globals['_DATAPOINTPAGE']._serialized_start=648
66
+ _globals['_DATAPOINTPAGE']._serialized_end=828
67
+ _globals['_DATAPOINT']._serialized_start=830
68
+ _globals['_DATAPOINT']._serialized_end=931
69
+ _globals['_COLLECTION']._serialized_start=933
70
+ _globals['_COLLECTION']._serialized_end=1026
71
+ _globals['_COLLECTIONINFO']._serialized_start=1029
72
+ _globals['_COLLECTIONINFO']._serialized_end=1200
73
+ _globals['_COLLECTIONINFOS']._serialized_start=1202
74
+ _globals['_COLLECTIONINFOS']._serialized_end=1268
75
+ _globals['_DATASET']._serialized_start=1271
76
+ _globals['_DATASET']._serialized_end=1712
77
+ _globals['_DATASETGROUP']._serialized_start=1715
78
+ _globals['_DATASETGROUP']._serialized_end=1875
79
+ # @@protoc_insertion_point(module_scope)