|
43 | 43 | DATASET_IS_SCENE_KEY, |
44 | 44 | DATASET_ITEM_IDS_KEY, |
45 | 45 | DATASET_ITEMS_KEY, |
| 46 | + DATASET_PRIVACY_MODE_KEY, |
46 | 47 | DEFAULT_ANNOTATION_UPDATE_MODE, |
47 | 48 | EMBEDDING_DIMENSION_KEY, |
48 | 49 | EMBEDDINGS_URL_KEY, |
|
75 | 76 | DatasetItem, |
76 | 77 | check_all_paths_remote, |
77 | 78 | check_for_duplicate_reference_ids, |
| 79 | + check_items_have_dimensions, |
78 | 80 | ) |
79 | 81 | from .dataset_item_uploader import DatasetItemUploader |
80 | 82 | from .deprecation_warning import deprecated |
@@ -145,12 +147,20 @@ class Dataset: |
145 | 147 | existing_dataset = client.get_dataset("YOUR_DATASET_ID") |
146 | 148 | """ |
147 | 149 |
|
148 | | - def __init__(self, dataset_id, client: "NucleusClient", name=None): |
| 150 | + def __init__( |
| 151 | + self, |
| 152 | + dataset_id, |
| 153 | + client: "NucleusClient", |
| 154 | + name=None, |
| 155 | + is_scene=None, |
| 156 | + use_privacy_mode=None, |
| 157 | + ): |
149 | 158 | self.id = dataset_id |
150 | 159 | self._client = client |
151 | 160 | # NOTE: Optionally set name on creation such that the property access doesn't need to hit the server |
152 | 161 | self._name = name |
153 | | - self._is_scene = None |
| 162 | + self._is_scene = is_scene |
| 163 | + self._use_privacy_mode = use_privacy_mode |
154 | 164 |
|
155 | 165 | def __repr__(self): |
156 | 166 | if os.environ.get("NUCLEUS_DEBUG", None): |
@@ -184,6 +194,17 @@ def is_scene(self) -> bool: |
184 | 194 | self._is_scene = response |
185 | 195 | return self._is_scene # type: ignore |
186 | 196 |
|
| 197 | + @property |
| 198 | + def use_privacy_mode(self) -> bool: |
| 199 | + """Whether or not the dataset was created for privacy mode.""" |
| 200 | + if self._use_privacy_mode is not None: |
| 201 | + return self._use_privacy_mode |
| 202 | + response = self._client.make_request( |
| 203 | + {}, f"dataset/{self.id}/use_privacy_mode", requests.get |
| 204 | + )[DATASET_PRIVACY_MODE_KEY] |
| 205 | + self._use_privacy_mode = response |
| 206 | + return self._use_privacy_mode # type: ignore |
| 207 | + |
187 | 208 | @property |
188 | 209 | def model_runs(self) -> List[str]: |
189 | 210 | """List of all model runs associated with the Dataset.""" |
@@ -656,6 +677,9 @@ def append( |
656 | 677 |
|
657 | 678 | check_for_duplicate_reference_ids(dataset_items) |
658 | 679 |
|
| 680 | + if self.use_privacy_mode: |
| 681 | + check_items_have_dimensions(dataset_items) |
| 682 | + |
659 | 683 | if dataset_items and (lidar_scenes or video_scenes): |
660 | 684 | raise Exception( |
661 | 685 | "You must append either DatasetItems or Scenes to the dataset." |
|
0 commit comments