tilebox-datasets 0.37.1__py3-none-any.whl → 0.38.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.
@@ -127,6 +127,21 @@ class DatasetClient:
127
127
 
128
128
  return CollectionClient(self, info)
129
129
 
130
+ async def delete_collection(self, collection: "str | UUID | CollectionClient") -> None:
131
+ """Delete a collection.
132
+
133
+ Args:
134
+ collection: The collection to delete or a collection name or a collection id.
135
+ """
136
+ if isinstance(collection, CollectionClient):
137
+ collection_id = collection._collection.id
138
+ elif isinstance(collection, UUID):
139
+ collection_id = collection
140
+ else: # str
141
+ collection_id = (await self.collection(collection))._collection.id
142
+
143
+ await self._service.delete_collection(self._dataset.id, collection_id)
144
+
130
145
  def __repr__(self) -> str:
131
146
  return f"{self.name} [Timeseries Dataset]: {self._dataset.summary}"
132
147
 
@@ -73,6 +73,13 @@ class TimeInterval:
73
73
  a, b = self.to_half_open(), other.to_half_open()
74
74
  return (a.start, a.end) == (b.start, b.end)
75
75
 
76
+ def __hash__(self) -> int:
77
+ """Hash the time interval"""
78
+
79
+ # if two intervals are equal, they should have the same hash, so we convert to half-open intervals first
80
+ half_open = self.to_half_open()
81
+ return hash((half_open.start, half_open.end))
82
+
76
83
  def __repr__(self) -> str:
77
84
  return self.format()
78
85
 
@@ -25,7 +25,7 @@ _sym_db = _symbol_database.Default()
25
25
  from tilebox.datasets.datasetsv1 import core_pb2 as datasets_dot_v1_dot_core__pb2
26
26
 
27
27
 
28
- 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\"]\n\x17\x43reateCollectionRequest\x12.\n\ndataset_id\x18\x01 \x01(\x0b\x32\x0f.datasets.v1.IDR\tdatasetId\x12\x12\n\x04name\x18\x02 \x01(\tR\x04name\"\xc1\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\x0f.datasets.v1.IDR\tdatasetId\"\x94\x01\n\x16ListCollectionsRequest\x12.\n\ndataset_id\x18\x01 \x01(\x0b\x32\x0f.datasets.v1.IDR\tdatasetId\x12+\n\x11with_availability\x18\x02 \x01(\x08R\x10withAvailability\x12\x1d\n\nwith_count\x18\x03 \x01(\x08R\twithCount2\xa3\x02\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\x12V\n\x0fListCollections\x12#.datasets.v1.ListCollectionsRequest\x1a\x1c.datasets.v1.CollectionInfos\"\x00\x42\xb2\x01\n\x0f\x63om.datasets.v1B\x10\x43ollectionsProtoP\x01Z@github.com/tilebox/tilebox-go/protogen/go/datasets/v1;datasetsv1\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::V1b\x06proto3')
28
+ 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\"]\n\x17\x43reateCollectionRequest\x12.\n\ndataset_id\x18\x01 \x01(\x0b\x32\x0f.datasets.v1.IDR\tdatasetId\x12\x12\n\x04name\x18\x02 \x01(\tR\x04name\"\xc1\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\x0f.datasets.v1.IDR\tdatasetId\"\x7f\n\x17\x44\x65leteCollectionRequest\x12\x34\n\rcollection_id\x18\x01 \x01(\x0b\x32\x0f.datasets.v1.IDR\x0c\x63ollectionId\x12.\n\ndataset_id\x18\x02 \x01(\x0b\x32\x0f.datasets.v1.IDR\tdatasetId\"\x1a\n\x18\x44\x65leteCollectionResponse\"\x94\x01\n\x16ListCollectionsRequest\x12.\n\ndataset_id\x18\x01 \x01(\x0b\x32\x0f.datasets.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\x42\xb2\x01\n\x0f\x63om.datasets.v1B\x10\x43ollectionsProtoP\x01Z@github.com/tilebox/tilebox-go/protogen/go/datasets/v1;datasetsv1\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::V1b\x06proto3')
29
29
 
30
30
  _globals = globals()
31
31
  _builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals)
@@ -37,8 +37,12 @@ if not _descriptor._USE_C_DESCRIPTORS:
37
37
  _globals['_CREATECOLLECTIONREQUEST']._serialized_end=163
38
38
  _globals['_GETCOLLECTIONBYNAMEREQUEST']._serialized_start=166
39
39
  _globals['_GETCOLLECTIONBYNAMEREQUEST']._serialized_end=359
40
- _globals['_LISTCOLLECTIONSREQUEST']._serialized_start=362
41
- _globals['_LISTCOLLECTIONSREQUEST']._serialized_end=510
42
- _globals['_COLLECTIONSERVICE']._serialized_start=513
43
- _globals['_COLLECTIONSERVICE']._serialized_end=804
40
+ _globals['_DELETECOLLECTIONREQUEST']._serialized_start=361
41
+ _globals['_DELETECOLLECTIONREQUEST']._serialized_end=488
42
+ _globals['_DELETECOLLECTIONRESPONSE']._serialized_start=490
43
+ _globals['_DELETECOLLECTIONRESPONSE']._serialized_end=516
44
+ _globals['_LISTCOLLECTIONSREQUEST']._serialized_start=519
45
+ _globals['_LISTCOLLECTIONSREQUEST']._serialized_end=667
46
+ _globals['_COLLECTIONSERVICE']._serialized_start=670
47
+ _globals['_COLLECTIONSERVICE']._serialized_end=1060
44
48
  # @@protoc_insertion_point(module_scope)
@@ -25,6 +25,18 @@ class GetCollectionByNameRequest(_message.Message):
25
25
  dataset_id: _core_pb2.ID
26
26
  def __init__(self, collection_name: _Optional[str] = ..., with_availability: bool = ..., with_count: bool = ..., dataset_id: _Optional[_Union[_core_pb2.ID, _Mapping]] = ...) -> None: ...
27
27
 
28
+ class DeleteCollectionRequest(_message.Message):
29
+ __slots__ = ("collection_id", "dataset_id")
30
+ COLLECTION_ID_FIELD_NUMBER: _ClassVar[int]
31
+ 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: ...
35
+
36
+ class DeleteCollectionResponse(_message.Message):
37
+ __slots__ = ()
38
+ def __init__(self) -> None: ...
39
+
28
40
  class ListCollectionsRequest(_message.Message):
29
41
  __slots__ = ("dataset_id", "with_availability", "with_count")
30
42
  DATASET_ID_FIELD_NUMBER: _ClassVar[int]
@@ -26,6 +26,11 @@ class CollectionServiceStub(object):
26
26
  request_serializer=datasets_dot_v1_dot_collections__pb2.GetCollectionByNameRequest.SerializeToString,
27
27
  response_deserializer=datasets_dot_v1_dot_core__pb2.CollectionInfo.FromString,
28
28
  _registered_method=True)
29
+ self.DeleteCollection = channel.unary_unary(
30
+ '/datasets.v1.CollectionService/DeleteCollection',
31
+ request_serializer=datasets_dot_v1_dot_collections__pb2.DeleteCollectionRequest.SerializeToString,
32
+ response_deserializer=datasets_dot_v1_dot_collections__pb2.DeleteCollectionResponse.FromString,
33
+ _registered_method=True)
29
34
  self.ListCollections = channel.unary_unary(
30
35
  '/datasets.v1.CollectionService/ListCollections',
31
36
  request_serializer=datasets_dot_v1_dot_collections__pb2.ListCollectionsRequest.SerializeToString,
@@ -49,6 +54,12 @@ class CollectionServiceServicer(object):
49
54
  context.set_details('Method not implemented!')
50
55
  raise NotImplementedError('Method not implemented!')
51
56
 
57
+ def DeleteCollection(self, request, context):
58
+ """Missing associated documentation comment in .proto file."""
59
+ context.set_code(grpc.StatusCode.UNIMPLEMENTED)
60
+ context.set_details('Method not implemented!')
61
+ raise NotImplementedError('Method not implemented!')
62
+
52
63
  def ListCollections(self, request, context):
53
64
  """Missing associated documentation comment in .proto file."""
54
65
  context.set_code(grpc.StatusCode.UNIMPLEMENTED)
@@ -68,6 +79,11 @@ def add_CollectionServiceServicer_to_server(servicer, server):
68
79
  request_deserializer=datasets_dot_v1_dot_collections__pb2.GetCollectionByNameRequest.FromString,
69
80
  response_serializer=datasets_dot_v1_dot_core__pb2.CollectionInfo.SerializeToString,
70
81
  ),
82
+ 'DeleteCollection': grpc.unary_unary_rpc_method_handler(
83
+ servicer.DeleteCollection,
84
+ request_deserializer=datasets_dot_v1_dot_collections__pb2.DeleteCollectionRequest.FromString,
85
+ response_serializer=datasets_dot_v1_dot_collections__pb2.DeleteCollectionResponse.SerializeToString,
86
+ ),
71
87
  'ListCollections': grpc.unary_unary_rpc_method_handler(
72
88
  servicer.ListCollections,
73
89
  request_deserializer=datasets_dot_v1_dot_collections__pb2.ListCollectionsRequest.FromString,
@@ -139,6 +155,33 @@ class CollectionService(object):
139
155
  metadata,
140
156
  _registered_method=True)
141
157
 
158
+ @staticmethod
159
+ def DeleteCollection(request,
160
+ target,
161
+ options=(),
162
+ channel_credentials=None,
163
+ call_credentials=None,
164
+ insecure=False,
165
+ compression=None,
166
+ wait_for_ready=None,
167
+ timeout=None,
168
+ metadata=None):
169
+ return grpc.experimental.unary_unary(
170
+ request,
171
+ target,
172
+ '/datasets.v1.CollectionService/DeleteCollection',
173
+ datasets_dot_v1_dot_collections__pb2.DeleteCollectionRequest.SerializeToString,
174
+ datasets_dot_v1_dot_collections__pb2.DeleteCollectionResponse.FromString,
175
+ options,
176
+ channel_credentials,
177
+ insecure,
178
+ call_credentials,
179
+ compression,
180
+ wait_for_ready,
181
+ timeout,
182
+ metadata,
183
+ _registered_method=True)
184
+
142
185
  @staticmethod
143
186
  def ListCollections(request,
144
187
  target,
@@ -26,7 +26,7 @@ from tilebox.datasets.datasetsv1 import dataset_type_pb2 as datasets_dot_v1_dot_
26
26
  from google.protobuf import timestamp_pb2 as google_dot_protobuf_dot_timestamp__pb2
27
27
 
28
28
 
29
- 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\"\x18\n\x02ID\x12\x12\n\x04uuid\x18\x01 \x01(\x0cR\x04uuid\"\xce\x01\n\x0cTimeInterval\x12\x39\n\nstart_time\x18\x01 \x01(\x0b\x32\x1a.google.protobuf.TimestampR\tstartTime\x12\x35\n\x08\x65nd_time\x18\x02 \x01(\x0b\x32\x1a.google.protobuf.TimestampR\x07\x65ndTime\x12\'\n\x0fstart_exclusive\x18\x03 \x01(\x08R\x0estartExclusive\x12#\n\rend_inclusive\x18\x04 \x01(\x08R\x0c\x65ndInclusive\"\xb5\x01\n\x11\x44\x61tapointInterval\x12*\n\x08start_id\x18\x01 \x01(\x0b\x32\x0f.datasets.v1.IDR\x07startId\x12&\n\x06\x65nd_id\x18\x02 \x01(\x0b\x32\x0f.datasets.v1.IDR\x05\x65ndId\x12\'\n\x0fstart_exclusive\x18\x03 \x01(\x08R\x0estartExclusive\x12#\n\rend_inclusive\x18\x04 \x01(\x08R\x0c\x65ndInclusive\"v\n\x10LegacyPagination\x12\x19\n\x05limit\x18\x01 \x01(\x03H\x00R\x05limit\x88\x01\x01\x12*\n\x0estarting_after\x18\x02 \x01(\tH\x01R\rstartingAfter\x88\x01\x01\x42\x08\n\x06_limitB\x11\n\x0f_starting_after\"\x81\x01\n\nPagination\x12\x19\n\x05limit\x18\x01 \x01(\x03H\x00R\x05limit\x88\x01\x01\x12;\n\x0estarting_after\x18\x02 \x01(\x0b\x32\x0f.datasets.v1.IDH\x01R\rstartingAfter\x88\x01\x01\x42\x08\n\x06_limitB\x11\n\x0f_starting_after\"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\"\xad\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\x13\n\x02id\x18\x03 \x01(\tH\x00R\x02id\x88\x01\x01\x42\x05\n\x03_id\"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\"\xc0\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?\n\tnext_page\x18\x03 \x01(\x0b\x32\x1d.datasets.v1.LegacyPaginationH\x00R\x08nextPage\x88\x01\x01\x42\x0c\n\n_next_page\"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\x1f\n\x02id\x18\x03 \x01(\x0b\x32\x0f.datasets.v1.IDR\x02id\"\xc3\x01\n\x0e\x43ollectionInfo\x12\x37\n\ncollection\x18\x01 \x01(\x0b\x32\x17.datasets.v1.CollectionR\ncollection\x12\x42\n\x0c\x61vailability\x18\x02 \x01(\x0b\x32\x19.datasets.v1.TimeIntervalH\x00R\x0c\x61vailability\x88\x01\x01\x12\x19\n\x05\x63ount\x18\x03 \x01(\x04H\x01R\x05\x63ount\x88\x01\x01\x42\x0f\n\r_availabilityB\x08\n\x06_count\"B\n\x0f\x43ollectionInfos\x12/\n\x04\x64\x61ta\x18\x01 \x03(\x0b\x32\x1b.datasets.v1.CollectionInfoR\x04\x64\x61ta\"\x96\x03\n\x07\x44\x61taset\x12\x1f\n\x02id\x18\x01 \x01(\x0b\x32\x0f.datasets.v1.IDR\x02id\x12*\n\x08group_id\x18\x02 \x01(\x0b\x32\x0f.datasets.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\"\xa2\x01\n\x0c\x44\x61tasetGroup\x12\x1f\n\x02id\x18\x01 \x01(\x0b\x32\x0f.datasets.v1.IDR\x02id\x12,\n\tparent_id\x18\x02 \x01(\x0b\x32\x0f.datasets.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\x42\xab\x01\n\x0f\x63om.datasets.v1B\tCoreProtoP\x01Z@github.com/tilebox/tilebox-go/protogen/go/datasets/v1;datasetsv1\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::V1b\x06proto3')
29
+ 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\"\x18\n\x02ID\x12\x12\n\x04uuid\x18\x01 \x01(\x0cR\x04uuid\"\xce\x01\n\x0cTimeInterval\x12\x39\n\nstart_time\x18\x01 \x01(\x0b\x32\x1a.google.protobuf.TimestampR\tstartTime\x12\x35\n\x08\x65nd_time\x18\x02 \x01(\x0b\x32\x1a.google.protobuf.TimestampR\x07\x65ndTime\x12\'\n\x0fstart_exclusive\x18\x03 \x01(\x08R\x0estartExclusive\x12#\n\rend_inclusive\x18\x04 \x01(\x08R\x0c\x65ndInclusive\"\xb5\x01\n\x11\x44\x61tapointInterval\x12*\n\x08start_id\x18\x01 \x01(\x0b\x32\x0f.datasets.v1.IDR\x07startId\x12&\n\x06\x65nd_id\x18\x02 \x01(\x0b\x32\x0f.datasets.v1.IDR\x05\x65ndId\x12\'\n\x0fstart_exclusive\x18\x03 \x01(\x08R\x0estartExclusive\x12#\n\rend_inclusive\x18\x04 \x01(\x08R\x0c\x65ndInclusive\"v\n\x10LegacyPagination\x12\x19\n\x05limit\x18\x01 \x01(\x03H\x00R\x05limit\x88\x01\x01\x12*\n\x0estarting_after\x18\x02 \x01(\tH\x01R\rstartingAfter\x88\x01\x01\x42\x08\n\x06_limitB\x11\n\x0f_starting_after\"\x81\x01\n\nPagination\x12\x19\n\x05limit\x18\x01 \x01(\x03H\x00R\x05limit\x88\x01\x01\x12;\n\x0estarting_after\x18\x02 \x01(\x0b\x32\x0f.datasets.v1.IDH\x01R\rstartingAfter\x88\x01\x01\x42\x08\n\x06_limitB\x11\n\x0f_starting_after\"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\"\xad\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\x13\n\x02id\x18\x03 \x01(\tH\x00R\x02id\x88\x01\x01\x42\x05\n\x03_id\"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\"\xc0\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?\n\tnext_page\x18\x03 \x01(\x0b\x32\x1d.datasets.v1.LegacyPaginationH\x00R\x08nextPage\x88\x01\x01\x42\x0c\n\n_next_page\"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\x1f\n\x02id\x18\x03 \x01(\x0b\x32\x0f.datasets.v1.IDR\x02id\"\xc3\x01\n\x0e\x43ollectionInfo\x12\x37\n\ncollection\x18\x01 \x01(\x0b\x32\x17.datasets.v1.CollectionR\ncollection\x12\x42\n\x0c\x61vailability\x18\x02 \x01(\x0b\x32\x19.datasets.v1.TimeIntervalH\x00R\x0c\x61vailability\x88\x01\x01\x12\x19\n\x05\x63ount\x18\x03 \x01(\x04H\x01R\x05\x63ount\x88\x01\x01\x42\x0f\n\r_availabilityB\x08\n\x06_count\"B\n\x0f\x43ollectionInfos\x12/\n\x04\x64\x61ta\x18\x01 \x03(\x0b\x32\x1b.datasets.v1.CollectionInfoR\x04\x64\x61ta\"\xbb\x03\n\x07\x44\x61taset\x12\x1f\n\x02id\x18\x01 \x01(\x0b\x32\x0f.datasets.v1.IDR\x02id\x12*\n\x08group_id\x18\x02 \x01(\x0b\x32\x0f.datasets.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\"\xa2\x01\n\x0c\x44\x61tasetGroup\x12\x1f\n\x02id\x18\x01 \x01(\x0b\x32\x0f.datasets.v1.IDR\x02id\x12,\n\tparent_id\x18\x02 \x01(\x0b\x32\x0f.datasets.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\x42\xab\x01\n\x0f\x63om.datasets.v1B\tCoreProtoP\x01Z@github.com/tilebox/tilebox-go/protogen/go/datasets/v1;datasetsv1\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::V1b\x06proto3')
30
30
 
31
31
  _globals = globals()
32
32
  _builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals)
@@ -34,10 +34,10 @@ _builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'datasets.v1.core_pb2', _glo
34
34
  if not _descriptor._USE_C_DESCRIPTORS:
35
35
  _globals['DESCRIPTOR']._loaded_options = None
36
36
  _globals['DESCRIPTOR']._serialized_options = b'\n\017com.datasets.v1B\tCoreProtoP\001Z@github.com/tilebox/tilebox-go/protogen/go/datasets/v1;datasetsv1\242\002\003DXX\252\002\013Datasets.V1\312\002\013Datasets\\V1\342\002\027Datasets\\V1\\GPBMetadata\352\002\014Datasets::V1'
37
- _globals['_DATASETPERMISSION']._serialized_start=2418
38
- _globals['_DATASETPERMISSION']._serialized_end=2573
39
- _globals['_VISIBILITY']._serialized_start=2575
40
- _globals['_VISIBILITY']._serialized_end=2693
37
+ _globals['_DATASETPERMISSION']._serialized_start=2455
38
+ _globals['_DATASETPERMISSION']._serialized_end=2610
39
+ _globals['_VISIBILITY']._serialized_start=2612
40
+ _globals['_VISIBILITY']._serialized_end=2730
41
41
  _globals['_ID']._serialized_start=104
42
42
  _globals['_ID']._serialized_end=128
43
43
  _globals['_TIMEINTERVAL']._serialized_start=131
@@ -67,7 +67,7 @@ if not _descriptor._USE_C_DESCRIPTORS:
67
67
  _globals['_COLLECTIONINFOS']._serialized_start=1775
68
68
  _globals['_COLLECTIONINFOS']._serialized_end=1841
69
69
  _globals['_DATASET']._serialized_start=1844
70
- _globals['_DATASET']._serialized_end=2250
71
- _globals['_DATASETGROUP']._serialized_start=2253
72
- _globals['_DATASETGROUP']._serialized_end=2415
70
+ _globals['_DATASET']._serialized_end=2287
71
+ _globals['_DATASETGROUP']._serialized_start=2290
72
+ _globals['_DATASETGROUP']._serialized_end=2452
73
73
  # @@protoc_insertion_point(module_scope)
@@ -155,7 +155,7 @@ class CollectionInfos(_message.Message):
155
155
  def __init__(self, data: _Optional[_Iterable[_Union[CollectionInfo, _Mapping]]] = ...) -> None: ...
156
156
 
157
157
  class Dataset(_message.Message):
158
- __slots__ = ("id", "group_id", "type", "code_name", "name", "summary", "icon", "description", "permissions", "visibility", "slug")
158
+ __slots__ = ("id", "group_id", "type", "code_name", "name", "summary", "icon", "description", "permissions", "visibility", "slug", "type_editable")
159
159
  ID_FIELD_NUMBER: _ClassVar[int]
160
160
  GROUP_ID_FIELD_NUMBER: _ClassVar[int]
161
161
  TYPE_FIELD_NUMBER: _ClassVar[int]
@@ -167,6 +167,7 @@ class Dataset(_message.Message):
167
167
  PERMISSIONS_FIELD_NUMBER: _ClassVar[int]
168
168
  VISIBILITY_FIELD_NUMBER: _ClassVar[int]
169
169
  SLUG_FIELD_NUMBER: _ClassVar[int]
170
+ TYPE_EDITABLE_FIELD_NUMBER: _ClassVar[int]
170
171
  id: ID
171
172
  group_id: ID
172
173
  type: _dataset_type_pb2.AnnotatedType
@@ -178,7 +179,8 @@ class Dataset(_message.Message):
178
179
  permissions: _containers.RepeatedScalarFieldContainer[DatasetPermission]
179
180
  visibility: Visibility
180
181
  slug: str
181
- def __init__(self, id: _Optional[_Union[ID, _Mapping]] = ..., group_id: _Optional[_Union[ID, _Mapping]] = ..., type: _Optional[_Union[_dataset_type_pb2.AnnotatedType, _Mapping]] = ..., code_name: _Optional[str] = ..., name: _Optional[str] = ..., summary: _Optional[str] = ..., icon: _Optional[str] = ..., description: _Optional[str] = ..., permissions: _Optional[_Iterable[_Union[DatasetPermission, str]]] = ..., visibility: _Optional[_Union[Visibility, str]] = ..., slug: _Optional[str] = ...) -> None: ...
182
+ type_editable: bool
183
+ def __init__(self, id: _Optional[_Union[ID, _Mapping]] = ..., group_id: _Optional[_Union[ID, _Mapping]] = ..., type: _Optional[_Union[_dataset_type_pb2.AnnotatedType, _Mapping]] = ..., code_name: _Optional[str] = ..., name: _Optional[str] = ..., summary: _Optional[str] = ..., icon: _Optional[str] = ..., description: _Optional[str] = ..., permissions: _Optional[_Iterable[_Union[DatasetPermission, str]]] = ..., visibility: _Optional[_Union[Visibility, str]] = ..., slug: _Optional[str] = ..., type_editable: bool = ...) -> None: ...
182
184
 
183
185
  class DatasetGroup(_message.Message):
184
186
  __slots__ = ("id", "parent_id", "code_name", "name", "icon")
@@ -18,6 +18,7 @@ from tilebox.datasets.data.uuid import must_uuid_to_uuid_message, uuid_to_uuid_m
18
18
  from tilebox.datasets.datasetsv1 import core_pb2
19
19
  from tilebox.datasets.datasetsv1.collections_pb2 import (
20
20
  CreateCollectionRequest,
21
+ DeleteCollectionRequest,
21
22
  GetCollectionByNameRequest,
22
23
  ListCollectionsRequest,
23
24
  )
@@ -83,6 +84,18 @@ class TileboxDatasetService:
83
84
  req = CreateCollectionRequest(dataset_id=uuid_to_uuid_message(dataset_id), name=name)
84
85
  return Promise.resolve(self._collection_service.CreateCollection(req)).then(CollectionInfo.from_message)
85
86
 
87
+ def delete_collection(self, dataset_id: UUID, collection_id: UUID) -> Promise[None]:
88
+ """Delete a collection in a dataset by id.
89
+
90
+ Args:
91
+ dataset_id: The id of the dataset to delete the collection from.
92
+ collection_id: The id of the collection to delete.
93
+ """
94
+ req = DeleteCollectionRequest(
95
+ dataset_id=uuid_to_uuid_message(dataset_id), collection_id=uuid_to_uuid_message(collection_id)
96
+ )
97
+ return Promise.resolve(self._collection_service.DeleteCollection(req))
98
+
86
99
  def get_collections(
87
100
  self, dataset_id: UUID, with_availability: bool = True, with_count: bool = False
88
101
  ) -> Promise[list[CollectionInfo]]:
@@ -124,6 +124,21 @@ class DatasetClient:
124
124
 
125
125
  return CollectionClient(self, info)
126
126
 
127
+ def delete_collection(self, collection: "str | UUID | CollectionClient") -> None:
128
+ """Delete a collection.
129
+
130
+ Args:
131
+ collection: The collection to delete or a collection name or a collection id.
132
+ """
133
+ if isinstance(collection, CollectionClient):
134
+ collection_id = collection._collection.id
135
+ elif isinstance(collection, UUID):
136
+ collection_id = collection
137
+ else: # str
138
+ collection_id = self.collection(collection)._collection.id
139
+
140
+ self._service.delete_collection(self._dataset.id, collection_id).get()
141
+
127
142
  def __repr__(self) -> str:
128
143
  return f"{self.name} [Timeseries Dataset]: {self._dataset.summary}"
129
144
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: tilebox-datasets
3
- Version: 0.37.1
3
+ Version: 0.38.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
@@ -3,10 +3,10 @@ tilebox/datasets/client.py,sha256=Uv_Pa3nTRKktbPTvxYDh1t_JwcjQMAoZjlqVJe4sZ6o,40
3
3
  tilebox/datasets/group.py,sha256=DoGl4w7Viy-l4kE9580dJOymP_B2pj3LRqvMNxvrYmU,1884
4
4
  tilebox/datasets/message_pool.py,sha256=vndyPAR_X_rgGVvOTTBarkONTFpRSATB-3toO0oFUrw,1271
5
5
  tilebox/datasets/progress.py,sha256=NC3YFnK4EqspCH0QPKsAHmkzoAl5KHedPWYvdS37Tp8,3516
6
- tilebox/datasets/service.py,sha256=O1rzK96WWtH-4b5TvwK7MFgWLffAeTZ8IRo5lsQZ-c8,8323
6
+ tilebox/datasets/service.py,sha256=oEIznMBN75RNtFJFHtQ8I3hX5nnPRgD9oAlkwKT0MDQ,8895
7
7
  tilebox/datasets/aio/__init__.py,sha256=0x_gddLgDsUCdl8MMZj4MPH1lp4HuOrExMHTjIFmM6s,405
8
8
  tilebox/datasets/aio/client.py,sha256=NLA59PvFVRJtAhfYbRNYOvzJ9KnL6Uptji7pBYDNRcc,2126
9
- tilebox/datasets/aio/dataset.py,sha256=4bwGilykmcNlt-tf-nq-fqTEtJgHBqkYOkUxh22Boc4,21924
9
+ tilebox/datasets/aio/dataset.py,sha256=9zwEdS9QHRcv1VDaDTvz2ARQUEEP0dxuQHj7XcOtyOg,22535
10
10
  tilebox/datasets/aio/pagination.py,sha256=ziLecwntNWqWqko61UK8fHxhf-enTcSHn0S3gDLcw9o,6105
11
11
  tilebox/datasets/aio/timeseries.py,sha256=iQqIyh9TPL_gJz18GCxmtFJEwObR9S2rPsUohFYM8wQ,301
12
12
  tilebox/datasets/data/__init__.py,sha256=vgHSaWXMuC5NLlMwC_VhwKd4nvpOn1NIL4YzaD58goQ,401
@@ -15,14 +15,14 @@ tilebox/datasets/data/data_access.py,sha256=Z0PuUem9I2TOdAiHiaLrZ-pC1UiNhr9dES0P
15
15
  tilebox/datasets/data/datapoint.py,sha256=eM1fS8s5LjH6ENFxJckdl_-1v9KJAEGLFx5XWx8C1nk,6127
16
16
  tilebox/datasets/data/datasets.py,sha256=mOp5MHE4oktUcUB9Q3n1emA_zv3LjXT6gc7m0rLzYNQ,4238
17
17
  tilebox/datasets/data/pagination.py,sha256=X3mNNm3EF6m5dH3zwRkGvqqcnyFvEG5OrMVGX2Wm3wM,775
18
- tilebox/datasets/data/time_interval.py,sha256=CADKc0xxf5PYwF2VsQ2GVi4JapwBQ6-JXrVV8VHv-so,9737
18
+ tilebox/datasets/data/time_interval.py,sha256=oTvaIXyXV9z0QTpBeOdFTdPxBMPaDpWqlT09Ovdpsrg,10014
19
19
  tilebox/datasets/data/timeseries.py,sha256=qAhIOczp74E18sXQ2j5Mc3_NJd5zgosgSRm3lWQ3zlk,3632
20
20
  tilebox/datasets/data/uuid.py,sha256=cmsGCBEj7AOTsCNN6JELaoI2CGQBVzxfL7JPs-x_JTw,1081
21
- tilebox/datasets/datasetsv1/collections_pb2.py,sha256=8Ax9D85AnfchVjmuTlvE6WATy0DNr_37uDAwh8i3ZB0,3415
22
- tilebox/datasets/datasetsv1/collections_pb2.pyi,sha256=CcjNu9HSi2zyKcC3GWYPRBFeDTjfkd36SEO-WYIiBQQ,1749
23
- tilebox/datasets/datasetsv1/collections_pb2_grpc.py,sha256=oFR5lUwWEdxVA33cQIsjve92NUAU7VS9QmsbT5flMoo,7040
24
- tilebox/datasets/datasetsv1/core_pb2.py,sha256=T7BvWOVhKdk1Zl7no958CuPAdL-1p3O2LlcLBcev3Dw,8202
25
- tilebox/datasets/datasetsv1/core_pb2.pyi,sha256=I0rM96J0NbTWEKUwivNDOD2bKuf1OXNI9U__epWXjrY,9150
21
+ tilebox/datasets/datasetsv1/collections_pb2.py,sha256=InCBLsIDfkyP0OFr7e6Me-HfAGLiy6IdFFbXQ92rKZg,4024
22
+ tilebox/datasets/datasetsv1/collections_pb2.pyi,sha256=5EfzYW_7EmZzQncMO8OSdS3g62oSp-10hRhnWWSw4as,2266
23
+ tilebox/datasets/datasetsv1/collections_pb2_grpc.py,sha256=hOd8NlcFE6094e9F8FFbwitTpIqFETnsM23SDenv1bc,8970
24
+ tilebox/datasets/datasetsv1/core_pb2.py,sha256=o33EXCT38Gd_pEcMhDQEqtt8FnJI-E9BJPY7QdxBYqw,8257
25
+ tilebox/datasets/datasetsv1/core_pb2.pyi,sha256=znHcYvUL1zY4n1n7GJpMgwpB5YUz8ZAsN8R6E17EViU,9265
26
26
  tilebox/datasets/datasetsv1/core_pb2_grpc.py,sha256=xYOs94SXiNYAlFodACnsXW5QovLsHY5tCk3p76RH5Zc,158
27
27
  tilebox/datasets/datasetsv1/data_access_pb2.py,sha256=fOgy5ZQb9ojGUbFr6_NFDowYQfegXUidi9ljdJeIyKY,6182
28
28
  tilebox/datasets/datasetsv1/data_access_pb2.pyi,sha256=maP2FKtta1nmQRyNLKvTPOlqA-LDEV-x8N6ZgMJQTak,5743
@@ -48,9 +48,9 @@ tilebox/datasets/protobuf_conversion/protobuf_xarray.py,sha256=HENZuGxrG8yi031Vw
48
48
  tilebox/datasets/protobuf_conversion/to_protobuf.py,sha256=ekGusGHUzbYdSg01pij4JSQHq1vbOGfl0EX_bt1jOb0,7475
49
49
  tilebox/datasets/sync/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
50
50
  tilebox/datasets/sync/client.py,sha256=d6d2ABi9Lo9oIgpnq_1O0v4JqJrppaP4hCT5TWWXHyE,2101
51
- tilebox/datasets/sync/dataset.py,sha256=B_02i30p_lNVtDSftWNSSyRygfOzFStjUIe5U-LWGr4,21584
51
+ tilebox/datasets/sync/dataset.py,sha256=TbsmeUSRletHpY9BGXKkJHwChFBKSASswfTy4lsfJLA,22181
52
52
  tilebox/datasets/sync/pagination.py,sha256=Wn_rHwKr4fW31y0fCQFLvcn6jumqkerT3UeWeVpOVzk,6019
53
53
  tilebox/datasets/sync/timeseries.py,sha256=4nTP8_tmv6V7PXTUNzzlbzlxv0OXo_IqVLtSdJpUOW0,303
54
- tilebox_datasets-0.37.1.dist-info/METADATA,sha256=BP9LrYPruoZy3F3oTDz-93eGm72RPbNYA9k5uPb6EL0,4234
55
- tilebox_datasets-0.37.1.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
56
- tilebox_datasets-0.37.1.dist-info/RECORD,,
54
+ tilebox_datasets-0.38.0.dist-info/METADATA,sha256=59l6yzt55SQvoFZ0INUv7JgAd3r_S9z9NlNI2vGuhoo,4234
55
+ tilebox_datasets-0.38.0.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
56
+ tilebox_datasets-0.38.0.dist-info/RECORD,,