def parse_extras(self):
        # type: () -> None
        """
        Parse extras from *self.line* and set them on the current object
        :returns: Nothing
        :rtype: None
        """

        extras = None
        if "@" in self.line or self.is_vcs or self.is_url:
            line = "{0}".format(self.line)
            uri = URI.parse(line)
            name = uri.name
            if name:
                self._name = name
            if uri.host and uri.path and uri.scheme:
                self.line = uri.to_string(
                    escape_password=False, direct=False, strip_ssh=uri.is_implicit_ssh
                )
            else:
                self.line, extras = pip_shims.shims._strip_extras(self.line)
        else:
            self.line, extras = pip_shims.shims._strip_extras(self.line)
        extras_set = set()  # type: Set[STRING_TYPE]
        if extras is not None:
            extras_set = set(parse_extras(extras))
        if self._name:
            self._name, name_extras = pip_shims.shims._strip_extras(self._name)
            if name_extras:
                name_extras = set(parse_extras(name_extras))
                extras_set |= name_extras
        if extras_set is not None:
            self.extras = tuple(sorted(extras_set))
def parse_extras ( self ) : extras = None if "@" in self . line or self . is_vcs or self . is_url : line = "{0}" . format ( self . line ) uri = URI . parse ( line ) name = uri . name if name : self . _name = name if uri . host and uri . path and uri . scheme : self . line = uri . to_string ( escape_password = False , direct = False , strip_ssh = uri . is_implicit_ssh ) else : self . line , extras = pip_shims . shims . _strip_extras ( self . line ) else : self . line , extras = pip_shims . shims . _strip_extras ( self . line ) extras_set = set ( ) if extras is not None : extras_set = set ( parse_extras ( extras ) ) if self . _name : self . _name , name_extras = pip_shims . shims . _strip_extras ( self . _name ) if name_extras : name_extras = set ( parse_extras ( name_extras ) ) extras_set |= name_extras if extras_set is not None : self . extras = tuple ( sorted ( extras_set ) )
Parse extras from *self.line* and set them on the current object
        :returns: Nothing
        :rtype: None