code: def port_tag_details(cls, tags):
          # type: (Sequence[str]) -> Union[Tuple[bool, Port, str], None]
          
          for tag in tags:
              match = port_tag_re.match(tag)
              if match:
                  source_sink, port, extra = match.groups()
                  return source_sink == "source", cls(port), extra
docs: Search tags for port info, returning it
  
          Args:
              tags: A list of tags to check
  
          Returns:
              None or (is_source, port, connected_value|disconnected_value)
              where port is one of the Enum entries of Port