'DO NOT CALL THIS UNDOCUMENTED METHOD; use Requirement.parse()!'

def __init__(self, project_name, specs, extras):

    (self.unsafe_name, project_name) = (project_name, safe_name(project_name))
    (self.project_name, self.key) = (project_name, project_name.lower())
    index = [(parse_version(v), state_machine[op], op, v) for (op, v) in specs]
    index.sort()
    self.specs = [(op, ver) for (parsed, trans, op, ver) in index]
    (self.index, self.extras) = (index, tuple(map(safe_extra, extras)))
    self.hashCmp = (self.key, tuple([(op, parsed) for (parsed, trans, op, ver) in index]), frozenset(self.extras))
    self.__hash = hash(self.hashCmp)
