Skip to content
Snippets Groups Projects
Commit 0baa2f16 authored by Ladislav Lhotka's avatar Ladislav Lhotka
Browse files

Add remove_member and remove_entry methods.

parent a0d239f6
No related branches found
No related tags found
No related merge requests found
......@@ -10,7 +10,7 @@ def contents(*filenames):
setup(
name = "yangson",
packages = ["yangson"],
version = "0.1.17",
version = "0.1.18",
description = "Library for working with YANG schemas and data",
author = "Ladislav Lhotka",
author_email = "lhotka@nic.cz",
......
......@@ -211,10 +211,10 @@ class Instance:
return inst
def member(self, name: QName) -> "Instance":
obj = self.value.copy()
try:
obj = self.value.copy()
return Instance(obj.pop(name), MemberCrumb(name, obj, self.crumb))
except TypeError:
except (TypeError, AttributeError):
raise InstanceTypeError(self, "member of non-object") from None
except KeyError:
raise NonexistentInstance(self, "member " + name) from None
......@@ -225,6 +225,16 @@ class Instance:
return Instance(value, MemberCrumb(name, self.value, self.crumb,
datetime.now()))
def remove_member(self, name: QName) -> "Instance":
try:
val = self.value.copy()
del val[name]
return Instance(val, self.crumb)
except (TypeError, AttributeError):
raise InstanceTypeError(self, "member of non-object") from None
except KeyError:
raise NonexistentInstance(self, "member " + name) from None
def sibling(self, name: QName) -> "Instance":
try:
obj = self.crumb.object.copy()
......@@ -246,6 +256,15 @@ class Instance:
except IndexError:
raise NonexistentInstance(self, "entry " + str(index)) from None
def remove_entry(self, index: int) -> "Instance":
val = self.value
if not isinstance(val, list):
raise InstanceTypeError(self, "entry of non-array") from None
try:
return Instance(val[:index] + val[index+1:], self.crumb)
except IndexError:
raise NonexistentInstance(self, "entry " + str(index)) from None
@property
def first_entry(self):
val = self.value
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment