Skip to content

Converters

version_set_from_specifier = specifier_to_version_set module-attribute

specifier_from_version_set = version_set_to_specifier module-attribute

simplify(specifier: Specifier) -> Specifier

Simplifies a Specifier.

The simplification is accomplished through converting to the version set and back.

Parameters:

Name Type Description Default
specifier Specifier

The version specifier to simplify.

required

Returns:

Type Description
Specifier

The simplified specifier.

Source code in versions/converters.py
41
42
43
44
45
46
47
48
49
50
51
52
def simplify(specifier: Specifier) -> Specifier:
    """Simplifies a [`Specifier`][versions.specifiers.Specifier].

    The simplification is accomplished through converting to the version set and back.

    Arguments:
        specifier: The version specifier to simplify.

    Returns:
        The simplified specifier.
    """
    return specifier_from_version_set(specifier_to_version_set(specifier))

specifier_to_version_set(specifier: Specifier) -> VersionSet

Converts a Specifier to VersionSet.

Parameters:

Name Type Description Default
specifier Specifier

The version specifier to convert.

required

Returns:

Type Description
VersionSet

The converted version set.

Source code in versions/converters.py
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
@cache
def specifier_to_version_set(specifier: Specifier) -> VersionSet:
    """Converts a [`Specifier`][versions.specifiers.Specifier]
    to [`VersionSet`][versions.version_sets.VersionSet].

    Arguments:
        specifier: The version specifier to convert.

    Returns:
        The converted version set.
    """
    if is_specifier_one(specifier):
        return specifier.translate(specifier.version)

    if is_specifier_never(specifier):
        return EMPTY_SET

    if is_specifier_always(specifier):
        return UNIVERSAL_SET

    if is_specifier_all(specifier):
        return reduce(version_set_intersection, map(specifier_to_version_set, specifier.specifiers))

    if is_specifier_any(specifier):
        return reduce(version_set_union, map(specifier_to_version_set, specifier.specifiers))

    raise TypeError(UNEXPECTED_SPECIFIER.format(repr(specifier)))

version_set_to_specifier(version_set: VersionSet) -> Specifier

Converts a VersionSet to Specifier.

Parameters:

Name Type Description Default
version_set VersionSet

The version set to convert.

required

Returns:

Type Description
Specifier

The converted version specifier.

Source code in versions/converters.py
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
@cache
def version_set_to_specifier(version_set: VersionSet) -> Specifier:
    """Converts a [`VersionSet`][versions.version_sets.VersionSet]
    to [`Specifier`][versions.specifiers.Specifier].

    Arguments:
        version_set: The version set to convert.

    Returns:
        The converted version specifier.
    """
    if is_version_empty(version_set):
        return NEVER

    if is_version_point(version_set):
        return pin_version(version_set.version)

    if is_version_range(version_set):
        return try_range_simple(version_set) or try_range_unwrap(
            version_set.min,
            version_set.max,
            version_set.include_min,
            version_set.include_max,
        )

    if is_version_union(version_set):
        return try_exclude_version(version_set) or SpecifierAny.of_iterable(
            map(version_set_to_specifier, version_set.items)
        )

    raise TypeError(UNEXPECTED_VERSION_SET.format(repr(version_set)))