code: def lookup(self, plain_src_ns):
          
          # Ignore the namespace if it is excluded.
          if plain_src_ns in self._ex_namespace_set:
              return None
          # Include all namespaces if there are no included namespaces.
          if not self._regex_map and not self._plain:
              return Namespace(
                  dest_name=plain_src_ns,
                  source_name=plain_src_ns,
                  include_fields=self._include_fields,
                  exclude_fields=self._exclude_fields,
              )
          # First, search for the namespace in the plain namespaces.
          try:
              return self._plain[plain_src_ns]
          except KeyError:
              # Search for the namespace in the wildcard namespaces.
              for regex, namespace in self._regex_map:
                  new_name = match_replace_regex(regex, plain_src_ns, namespace.dest_name)
                  if not new_name:
                      continue
                  # Save the new target Namespace in the plain namespaces so
                  # future lookups are fast.
                  new_namespace = namespace.with_options(
                      dest_name=new_name, source_name=plain_src_ns
                  )
                  self._add_plain_namespace(new_namespace)
                  return new_namespace
  
          # Save the not included namespace to the excluded namespaces so
          # that future lookups of the same namespace are fast.
          self._ex_namespace_set.add(plain_src_ns)
          return None
docs: Given a plain source namespace, return the corresponding Namespace
          object, or None if it is not included.