code: def subset(self, ns_uris):
          
          sub_ns = NamespaceSet()
  
          for ns_uri in ns_uris:
              ni = self.__lookup_uri(ns_uri)
              new_ni = copy.deepcopy(ni)
  
              # We should be able to reach into details of our own
              # implementation on another obj, right??  This makes the subset
              # operation faster.  We can set up the innards directly from a
              # cloned _NamespaceInfo.
              sub_ns._NamespaceSet__add_namespaceinfo(new_ni)
  
          return sub_ns
docs: Return a subset of this NamespaceSet containing only data for the
          given namespaces.
  
          Args:
              ns_uris (iterable): An iterable of namespace URIs which select the
                  namespaces for the subset.
  
          Returns:
              The subset
  
          Raises:
              NamespaceNotFoundError: If any namespace URIs in `ns_uris` don't
                  match any namespaces in this set.