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))