swh.model.swhids module#
Classes to represent SWH persistend IDentifiers.
CoreSWHID represents a SWHID with no qualifier, and QualifiedSWHID
represents a SWHID that may have qualifiers.
ExtendedSWHID extends the definition of SWHID to other object types,
and is used internally in Software Heritage; it does not support qualifiers.
- class swh.model.swhids.ObjectType(value, names=None, *, module=None, qualname=None, type=None, start=1, boundary=None)[source]#
- Bases: - Enum- Possible object types of a QualifiedSWHID or CoreSWHID. - The values of each variant is what is used in the SWHID’s string representation. - SNAPSHOT = 'snp'#
 - REVISION = 'rev'#
 - RELEASE = 'rel'#
 - DIRECTORY = 'dir'#
 - CONTENT = 'cnt'#
 
- class swh.model.swhids.ExtendedObjectType(value, names=None, *, module=None, qualname=None, type=None, start=1, boundary=None)[source]#
- Bases: - Enum- Possible object types of an ExtendedSWHID. - The variants are a superset of - ObjectType’s- SNAPSHOT = 'snp'#
 - REVISION = 'rev'#
 - RELEASE = 'rel'#
 - DIRECTORY = 'dir'#
 - CONTENT = 'cnt'#
 - ORIGIN = 'ori'#
 - RAW_EXTRINSIC_METADATA = 'emd'#
 
- class swh.model.swhids.CoreSWHID(*, namespace: str = 'swh', scheme_version: int = 1, object_id: bytes, object_type)[source]#
- Bases: - _BaseSWHID[- ObjectType]- Dataclass holding the relevant info associated to a SoftWare Heritage persistent IDentifier (SWHID). - Unlike QualifiedSWHID, it is restricted to core SWHIDs, ie. SWHIDs with no qualifiers. - Raises:
- swh.model.exceptions.ValidationError – In case of invalid object type or id 
 - To get the raw SWHID string from an instance of this class, use the - str()function:- >>> swhid = CoreSWHID( ... object_type=ObjectType.CONTENT, ... object_id=bytes.fromhex('8ff44f081d43176474b267de5451f2c2e88089d0'), ... ) >>> str(swhid) 'swh:1:cnt:8ff44f081d43176474b267de5451f2c2e88089d0' - And vice-versa with - CoreSWHID.from_string():- >>> swhid == CoreSWHID.from_string( ... "swh:1:cnt:8ff44f081d43176474b267de5451f2c2e88089d0" ... ) True - Method generated by attrs for class CoreSWHID. - object_type: _TObjectType#
- the type of object the identifier points to 
 - to_extended() ExtendedSWHID[source]#
- Converts this CoreSWHID into an ExtendedSWHID. - As ExtendedSWHID is a superset of CoreSWHID, this is lossless. 
 - to_qualified() QualifiedSWHID[source]#
- Converts this CoreSWHID into a QualifiedSWHID. - As QualifiedSWHID is a superset of CoreSWHID, this is lossless. 
 
- class swh.model.swhids.QualifiedSWHID(*, namespace: str = 'swh', scheme_version: int = 1, object_id: bytes, object_type, origin: str | None = None, visit: str | CoreSWHID | None = None, anchor: str | CoreSWHID | None = None, path: str | bytes | None = None, lines: str | Tuple[int, int | None] | None = None)[source]#
- Bases: - _BaseSWHID[- ObjectType]- Dataclass holding the relevant info associated to a SoftWare Heritage persistent IDentifier (SWHID) - Raises:
- swh.model.exceptions.ValidationError – In case of invalid object type or id 
 - To get the raw SWHID string from an instance of this class, use the - str()function:- >>> swhid = QualifiedSWHID( ... object_type=ObjectType.CONTENT, ... object_id=bytes.fromhex('8ff44f081d43176474b267de5451f2c2e88089d0'), ... lines=(5, 10), ... ) >>> str(swhid) 'swh:1:cnt:8ff44f081d43176474b267de5451f2c2e88089d0;lines=5-10' - And vice-versa with - QualifiedSWHID.from_string():- >>> swhid == QualifiedSWHID.from_string( ... "swh:1:cnt:8ff44f081d43176474b267de5451f2c2e88089d0;lines=5-10" ... ) True - Method generated by attrs for class QualifiedSWHID. - object_type: _TObjectType#
- the type of object the identifier points to 
 - origin#
- the software origin where an object has been found or observed in the wild, as an URI 
 - visit#
- the core identifier of a snapshot corresponding to a specific visit of a repository containing the designated object 
 - anchor#
- a designated node in the Merkle DAG relative to which a path to the object is specified, as the core identifier of a directory, a revision, a release, or a snapshot 
 - path#
- the absolute file path, from the root directory associated to the anchor node, to the object; when the anchor denotes a directory or a revision, and almost always when it’s a release, the root directory is uniquely determined; when the anchor denotes a snapshot, the root directory is the one pointed to by HEAD (possibly indirectly), and undefined if such a reference is missing 
 - lines#
- line number(s) of interest, usually within a content object - Type:
- lines 
 
 - to_dict() Dict[str, str | bytes | CoreSWHID | Lines | None][source]#
- Returns a dictionary version of this QSWHID for json serialization 
 - qualifiers() Dict[str, str][source]#
- Returns URL-escaped qualifiers of this SWHID, for use in serialization 
 - classmethod from_string(s: str) QualifiedSWHID[source]#
 
- class swh.model.swhids.ExtendedSWHID(*, namespace: str = 'swh', scheme_version: int = 1, object_id: bytes, object_type)[source]#
- Bases: - _BaseSWHID[- ExtendedObjectType]- Dataclass holding the relevant info associated to a SoftWare Heritage persistent IDentifier (SWHID). - It extends CoreSWHID, by allowing non-standard object types; and should only be used internally to Software Heritage. - Raises:
- swh.model.exceptions.ValidationError – In case of invalid object type or id 
 - To get the raw SWHID string from an instance of this class, use the - str()function:- >>> swhid = ExtendedSWHID( ... object_type=ExtendedObjectType.CONTENT, ... object_id=bytes.fromhex('8ff44f081d43176474b267de5451f2c2e88089d0'), ... ) >>> str(swhid) 'swh:1:cnt:8ff44f081d43176474b267de5451f2c2e88089d0' - And vice-versa with - CoreSWHID.from_string():- >>> swhid == ExtendedSWHID.from_string( ... "swh:1:cnt:8ff44f081d43176474b267de5451f2c2e88089d0" ... ) True - Method generated by attrs for class ExtendedSWHID. - object_type: _TObjectType#
- the type of object the identifier points to