Source code for swh.model.identifiers

# Copyright (C) 2015-2021  The Software Heritage developers
# See the AUTHORS file at the top-level directory of this distribution
# License: GNU General Public License version 3, or any later version
# See top-level LICENSE file for more information

from typing import Any, Dict
import warnings

from . import model

# Reexport for backward compatibility
from .git_objects import *  # noqa
from .hashutil import MultiHash, hash_to_hex

# Reexport for backward compatibility
from .swhids import *  # noqa

warnings.warn(
    "The swh.model.identifiers module is deprecated. "
    "SWHID-related classes were moved to swh.model.swhids, and identifier "
    "computation is now done directly with swh.model.model classes.",
    DeprecationWarning,
    stacklevel=2,
)

# The following are deprecated aliases of the variants defined in ObjectType
# while transitioning from SWHID to QualifiedSWHID
ORIGIN = "origin"
SNAPSHOT = "snapshot"
REVISION = "revision"
RELEASE = "release"
DIRECTORY = "directory"
CONTENT = "content"
RAW_EXTRINSIC_METADATA = "raw_extrinsic_metadata"


[docs]def content_identifier(content: Dict[str, Any]) -> Dict[str, bytes]: """Deprecated, use :class:`swh.model.Content` instead: ``content_identifier(d)`` is equivalent to: ``{k: hash_to_hex(v) for (k, v) in Content.from_data(d["data"]).hashes().items()}`` """ return MultiHash.from_data(content["data"]).digest()
[docs]def directory_identifier(directory: Dict[str, Any]) -> str: """Deprecated, use :class:`swh.model.Directory` instead: ``directory_identifier(d)`` is equivalent to: ``hash_to_hex(Directory.from_dict(d).id)``. See :func:`swh.model.git_objects.directory_git_object` for details of the format used to generate this identifier.""" return hash_to_hex(model.Directory.from_dict(directory).id)
[docs]def revision_identifier(revision: Dict[str, Any]) -> str: """Deprecated, use :class:`swh.model.Revision` instead: ``revision_identifier(d)`` is equivalent to: ``hash_to_hex(Revision.from_dict(d).id)``. See :func:`swh.model.git_objects.revision_git_object` for details of the format used to generate this identifier.""" return hash_to_hex(model.Revision.from_dict(revision).id)
[docs]def release_identifier(release: Dict[str, Any]) -> str: """Deprecated, use :class:`swh.model.Release` instead: ``release_identifier(d)`` is equivalent to: ``hash_to_hex(Release.from_dict(d).id)``. See :func:`swh.model.git_objects.release_git_object` for details of the format used to generate this identifier.""" return hash_to_hex(model.Release.from_dict(release).id)
[docs]def snapshot_identifier(snapshot: Dict[str, Any]) -> str: """Deprecated, use :class:`swh.model.Snapshot` instead: ``snapshot_identifier(d)`` is equivalent to: ``hash_to_hex(Snapshot.from_dict(d).id)``. See :func:`swh.model.git_objects.snapshot_git_object` for details of the format used to generate this identifier.""" return hash_to_hex(model.Snapshot.from_dict(snapshot).id)
[docs]def origin_identifier(origin): """Deprecated, use :class:`swh.model.Origin` instead: ``origin_identifier(url)`` is equivalent to: ``hash_to_hex(Origin(url=url).id)``. """ return hash_to_hex(model.Origin.from_dict(origin).id)