Skip to content

Commit 9ddfd26

Browse files
committed
Preserve class in Item.clone
1 parent 696e3d5 commit 9ddfd26

File tree

2 files changed

+8
-1
lines changed

2 files changed

+8
-1
lines changed

pystac/item.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -885,7 +885,8 @@ def to_dict(self, include_self_link: bool = True) -> Dict[str, Any]:
885885
return d
886886

887887
def clone(self) -> "Item":
888-
clone = Item(
888+
cls = self.__class__
889+
clone = cls(
889890
id=self.id,
890891
geometry=deepcopy(self.geometry),
891892
bbox=copy(self.bbox),

tests/test_item.py

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -743,6 +743,12 @@ def test_from_file_returns_subclass(self) -> None:
743743

744744
self.assertIsInstance(custom_item, self.BasicCustomItem)
745745

746+
def test_clone(self) -> None:
747+
custom_item = self.BasicCustomItem.from_file(self.SAMPLE_ITEM)
748+
cloned_item = custom_item.clone()
749+
750+
self.assertIsInstance(cloned_item, self.BasicCustomItem)
751+
746752

747753
class AssetSubClassTest(unittest.TestCase):
748754
class CustomAsset(Asset):

0 commit comments

Comments
 (0)