def set_root(self, root, link_type=None): """Sets the root :class:`~pystac.Catalog` or :class:`~pystac.Collection` for this object. Args: root (Catalog, Collection or None): The root object to set. Passing in None will clear the root. link_type (str): The link type (see :class:`~pystac.LinkType`) """ # Remove from old root resolution cache root_link = self.get_root_link() if root_link is not None: if root_link.is_resolved(): root_link.target._resolved_objects.remove(self) if not link_type: prev = self.get_single_link('root') if prev is not None: link_type = prev.link_type else: link_type = LinkType.ABSOLUTE self.remove_links('root') if root is not None: self.add_link(Link.root(root, link_type=link_type)) root._resolved_objects.cache(self) return self
def __init__( self, id: str, description: str, title: Optional[str] = None, stac_extensions: Optional[List[str]] = None, extra_fields: Optional[Dict[str, Any]] = None, href: Optional[str] = None, catalog_type: CatalogType = CatalogType.ABSOLUTE_PUBLISHED, ): super().__init__(stac_extensions or []) self.id = id self.description = description self.title = title if extra_fields is None: self.extra_fields = {} else: self.extra_fields = extra_fields self._resolved_objects = ResolvedObjectCache() self.add_link(Link.root(self)) if href is not None: self.set_self_href(href) self.catalog_type: CatalogType = catalog_type self._resolved_objects.cache(self)
def __init__(self, id, description, title=None, stac_extensions=None, extra_fields=None, href=None, catalog_type=None): super().__init__(stac_extensions) self.id = id self.description = description self.title = title if extra_fields is None: self.extra_fields = {} else: self.extra_fields = extra_fields self._resolved_objects = ResolvedObjectCache() self.add_link(Link.root(self)) if href is not None: self.set_self_href(href) self.catalog_type = catalog_type self._resolved_objects.cache(self)
def set_root(self, root: Optional["Catalog_Type"]) -> None: """Sets the root :class:`~pystac.Catalog` or :class:`~pystac.Collection` for this object. Args: root : The root object to set. Passing in None will clear the root. """ root_link_index = next( iter([ i for i, link in enumerate(self.links) if link.rel == pystac.RelType.ROOT ]), None, ) # Remove from old root resolution cache if root_link_index is not None: root_link = self.links[root_link_index] if root_link.is_resolved(): cast(pystac.Catalog, root_link.target)._resolved_objects.remove(self) if root is None: self.remove_links(pystac.RelType.ROOT) else: new_root_link = Link.root(root) if root_link_index is not None: self.links[root_link_index] = new_root_link new_root_link.set_owner(self) else: self.add_link(new_root_link) root._resolved_objects.cache(self)
def __init__(self, id, description, title=None, href=None): self.id = id self.description = description self.title = title self.links = [Link.root(self)] if href is not None: self.set_self_href(href) self._resolved_objects = ResolvedObjectCache()
def __init__(self, id, description, title=None, stac_extensions=None, href=None): self.id = id self.description = description self.title = title self.stac_extensions = stac_extensions self.links = [] self.add_link(Link.root(self)) if href is not None: self.set_self_href(href) self._resolved_objects = ResolvedObjectCache() self._resolved_objects.cache(self)
def set_root(self, root, link_type=None): """Sets the root :class:`~pystac.Catalog` or :class:`~pystac.Collection` for this object. Args: root (Catalog or Collection): The root object to set. link_type (str): The link type (see :class:`~pystac.LinkType`) """ if not link_type: prev = self.get_single_link('root') if prev is not None: link_type = prev.link_type else: link_type = LinkType.ABSOLUTE self.remove_links('root') self.add_link(Link.root(root, link_type=link_type)) return self
def set_root(self, root, link_type=None): """Sets the root :class:`~pystac.Catalog` or :class:`~pystac.Collection` for this object. Args: root (Catalog, Collection or None): The root object to set. Passing in None will clear the root. link_type (str): The link type (see :class:`~pystac.LinkType`) """ root_link_index = next( iter([ i for i, link in enumerate(self.links) if link.rel == 'root' ]), None) # Remove from old root resolution cache if root_link_index is not None: root_link = self.links[root_link_index] if root_link.is_resolved(): root_link.target._resolved_objects.remove(self) if link_type is None: link_type = root_link.link_type if link_type is None: link_type = LinkType.ABSOLUTE if root is None: self.remove_links('root') else: new_root_link = Link.root(root, link_type=link_type) if root_link_index is not None: self.links[root_link_index] = new_root_link new_root_link.set_owner(self) else: self.add_link(new_root_link) root._resolved_objects.cache(self) return self
def set_root(self, root): self.links = [l for l in self.links if l.rel != 'root'] self.links.append(Link.root(root))