def set_xlist(self, appid: str, name: str, tags: Iterable) -> None: """ Create new list `name` of XDATA `appid` with `xdata_tags` and replaces list `name` if already exists. Args: appid: APPID name: list name tags: list content as DXFTags or (code, value) tuples, list name and curly braces '{' '}' tags will be added """ if appid not in self.data: data = [(XDATA_MARKER, appid)] data.extend(xdata_list(name, tags)) self.add(appid, data) else: self.replace_xlist(appid, name, tags)
def replace_xlist(self, appid: str, name: str, tags: Iterable) -> None: """ Replaces list `name` of existing XDATA `appid` by `tags`. Appends new list if list `name` do not exist, but raises `DXFValueError` if XDATA `appid` do not exist. Low level interface, if not sure use `set_xdata_list()` instead. Args: appid: APPID name: list name tags: list content as DXFTags or (code, value) tuples, list name and curly braces '{' '}' tags will be added Raises: DXFValueError: XDATA `appid` do not exist """ xdata = self.get(appid) try: data = remove_named_list_from_xdata(name, xdata) except NotFoundException: data = xdata xlist = xdata_list(name, tags) data.extend(xlist) self.add(appid, data)