def translate_markers(pipfile_entry):
    """Take a pipfile entry and normalize its markers

    Provide a pipfile entry which may have 'markers' as a key or it may have
    any valid key from `packaging.markers.marker_context.keys()` and standardize
    the format into {'markers': 'key == "some_value"'}.

    :param pipfile_entry: A dictionariy of keys and values representing a pipfile entry
    :type pipfile_entry: dict
    :returns: A normalized dictionary with cleaned marker entries
    """
    if not isinstance(pipfile_entry, Mapping):
        raise TypeError("Entry is not a pipfile formatted mapping.")
    from .vendor.distlib.markers import DEFAULT_CONTEXT as marker_context
    from .vendor.packaging.markers import Marker
    from .vendor.vistir.misc import dedup

    allowed_marker_keys = ["markers"] + [k for k in marker_context.keys()]
    provided_keys = list(pipfile_entry.keys()) if hasattr(pipfile_entry, "keys") else []
    pipfile_markers = [k for k in provided_keys if k in allowed_marker_keys]
    new_pipfile = dict(pipfile_entry).copy()
    marker_set = set()
    if "markers" in new_pipfile:
        marker = str(Marker(new_pipfile.pop("markers")))
        if 'extra' not in marker:
            marker_set.add(marker)
    for m in pipfile_markers:
        entry = "{0}".format(pipfile_entry[m])
        if m != "markers":
            marker_set.add(str(Marker("{0}{1}".format(m, entry))))
            new_pipfile.pop(m)
    if marker_set:
        new_pipfile["markers"] = str(Marker(" or ".join(
            "{0}".format(s) if " and " in s else s
            for s in sorted(dedup(marker_set))
        ))).replace('"', "'")
    return new_pipfile
def translate_markers ( pipfile_entry ) : if not isinstance ( pipfile_entry , Mapping ) : raise TypeError ( "Entry is not a pipfile formatted mapping." ) from . vendor . distlib . markers import DEFAULT_CONTEXT as marker_context from . vendor . packaging . markers import Marker from . vendor . vistir . misc import dedup allowed_marker_keys = [ "markers" ] + [ k for k in marker_context . keys ( ) ] provided_keys = list ( pipfile_entry . keys ( ) ) if hasattr ( pipfile_entry , "keys" ) else [ ] pipfile_markers = [ k for k in provided_keys if k in allowed_marker_keys ] new_pipfile = dict ( pipfile_entry ) . copy ( ) marker_set = set ( ) if "markers" in new_pipfile : marker = str ( Marker ( new_pipfile . pop ( "markers" ) ) ) if 'extra' not in marker : marker_set . add ( marker ) for m in pipfile_markers : entry = "{0}" . format ( pipfile_entry [ m ] ) if m != "markers" : marker_set . add ( str ( Marker ( "{0}{1}" . format ( m , entry ) ) ) ) new_pipfile . pop ( m ) if marker_set : new_pipfile [ "markers" ] = str ( Marker ( " or " . join ( "{0}" . format ( s ) if " and " in s else s for s in sorted ( dedup ( marker_set ) ) ) ) ) . replace ( '"' , "'" ) return new_pipfile
Take a pipfile entry and normalize its markers

    Provide a pipfile entry which may have 'markers' as a key or it may have
    any valid key from `packaging.markers.marker_context.keys()` and standardize
    the format into {'markers': 'key == "some_value"'}.

    :param pipfile_entry: A dictionariy of keys and values representing a pipfile entry
    :type pipfile_entry: dict
    :returns: A normalized dictionary with cleaned marker entries