|
8 | 8 | from os import PathLike, makedirs |
9 | 9 | from os.path import basename, join, normpath |
10 | 10 | from pathlib import Path |
11 | | -from shutil import rmtree |
12 | 11 | from typing import ( |
13 | 12 | TYPE_CHECKING, |
14 | 13 | Any, |
15 | 14 | ContextManager, |
16 | 15 | Dict, |
| 16 | + Iterable, |
17 | 17 | List, |
18 | 18 | Optional, |
19 | 19 | Tuple, |
@@ -559,12 +559,17 @@ def delete_layer(self, layer_name: str) -> None: |
559 | 559 | raise IndexError( |
560 | 560 | f"Removing layer {layer_name} failed. There is no layer with this name" |
561 | 561 | ) |
| 562 | + layer_path = self._layers[layer_name].path |
562 | 563 | del self._layers[layer_name] |
563 | 564 | self._properties.data_layers = [ |
564 | 565 | layer for layer in self._properties.data_layers if layer.name != layer_name |
565 | 566 | ] |
566 | 567 | # delete files on disk |
567 | | - rmtree(join(self.path, layer_name)) |
| 568 | + if layer_path.is_symlink(): |
| 569 | + layer_path.unlink() |
| 570 | + else: |
| 571 | + # rmtree does not recurse into linked dirs, but removes the link |
| 572 | + shutil.rmtree(layer_path) |
568 | 573 | self._export_as_json() |
569 | 574 |
|
570 | 575 | def add_symlink_layer( |
@@ -714,10 +719,10 @@ def copy_dataset( |
714 | 719 |
|
715 | 720 | def shallow_copy_dataset( |
716 | 721 | self, |
717 | | - new_dataset_path: Path, |
| 722 | + new_dataset_path: Union[str, PathLike], |
718 | 723 | name: Optional[str] = None, |
719 | 724 | make_relative: bool = False, |
720 | | - layers_to_ignore: Optional[List[str]] = None, |
| 725 | + layers_to_ignore: Optional[Iterable[str]] = None, |
721 | 726 | ) -> "Dataset": |
722 | 727 | """ |
723 | 728 | Create a new dataset at the given path. Link all mags of all existing layers. |
|
0 commit comments