concrete.util.concrete_uuid module¶
Helper functions for generating Concrete UUID
objects
-
class
concrete.util.concrete_uuid.
AnalyticUUIDGeneratorFactory
(comm=None)¶ Bases:
object
Primary interface to generation of compressible UUIDs. Each compressible UUID takes the form
xxxxxxxx-xxxx-yyyy-yyyy-zzzzzzzzzzzzwhere each instance of x, y, or z is a hexadecimal digit, the group of x digits is shared across all annotations in a Communication, the group of y digits is shared across all annotations generated by a given analytic (by convention,
AnnotationMetadata
tool) in a given Communication, and the group of z digits is unique to each annotation (generated by a given analytic). Thus all UUIDs in a Communication share the same first twelve hex digits and some UUIDs in a Communication share the same middle eight hex digits. Additionally, while the x and y components are generated uniformly at random, the z component for each analytic in a Communication starts at a uniform-at-random twelve hex digits for the first annotation and increments by one for each annotation thereafter. Thus the UUIDs of a Communication likely have many substrings in common and are easily compressed. For example, we might find the following seven UUIDs in a Communication, corresponding to seven annotations split across two analytics:1bccb123-be45-7288-028a-4fdf3181ab51 1bccb123-be45-7288-028a-4fdf3181ab52 1bccb123-be45-7288-028a-4fdf3181ab53 1bccb123-be45-df12-9c04-198eaa130a4e 1bccb123-be45-df12-9c04-198eaa130a4f 1bccb123-be45-df12-9c04-198eaa130a50 1bccb123-be45-df12-9c04-198eaa130a51One generator factory should be created per Communication, and a new generator should be created from that factory for each analytic processing the communication. Often each program represents a single analytic, so common usage is:
augf = AnalyticUUIDGeneratorFactory(comm) aug = augf.create() for <each annotation object created by this analytic>: annotation = next(aug) <add annotation to communication>
or if you’re creating a new Communication:
augf = AnalyticUUIDGeneratorFactory() aug = augf.create() comm = <create communication> comm.uuid = next(aug) for <each annotation object created by this analytic>: annotation = next(aug) <add annotation to communication>
where the annotation objects might be objects of type
Parse
,DependencyParse
,TokenTagging
,CommunicationTagging
, etc.-
create
()¶ Returns: A UUID generator for a new analytic.
-
-
class
concrete.util.concrete_uuid.
UUIDClustering
(comm)¶ Bases:
object
Representation of the UUID instance clusters in a concrete communication (each cluster represents the set of nested members of the communication that reference or are identified by a given UUID).
-
hashable_clusters
()¶ Hashable version of UUIDClustering.
Two UUIDClusterings c1 and c2 are equivalent (the two underlying Communications’ UUID structures are equivalent) if and only if:
c1.hashable_clusters() == c2.hashable_clusters()Returns: The set of unlabeled UUID clusters in a unique and hashable format.
-
-
class
concrete.util.concrete_uuid.
UUIDCompressor
(single_analytic=False)¶ Bases:
object
-
compress
(comm)¶ Parameters: comm (Communication) – Returns: Deep copy of comm with compressed UUIDs Return type: Communication
-
-
concrete.util.concrete_uuid.
bin_to_hex
(b, n=None)¶
-
concrete.util.concrete_uuid.
compress_uuids
(comm, verify=False, single_analytic=False)¶ Create a copy of
Communication
comm with UUIDs converted according to the compressible UUID schemeParameters: - comm (Communication) –
- verify (bool) – If True, use a heuristic to verify the UUID link structure is preserved in the new Communication
- single_analytic (bool) – If True, use a single analytic prefix for all UUIDs in comm.
Returns: A 2-tuple containing the new
Communication
(converted using the compressible UUID scheme) and theUUIDCompressor
object used to perform the conversion.Raises: ValueError
– If verify is True and comm has references added, raise because verification would cause an infinite loop.
-
concrete.util.concrete_uuid.
generate_UUID
()¶ Helper function for generating a Concrete UUID object
Returns: Concrete UUID object Return type: UUID
-
concrete.util.concrete_uuid.
generate_hex_unif
(n)¶
-
concrete.util.concrete_uuid.
generate_uuid_unif
()¶
-
concrete.util.concrete_uuid.
hex_to_bin
(h)¶
-
concrete.util.concrete_uuid.
join_uuid
(xs, ys, zs)¶
-
concrete.util.concrete_uuid.
split_uuid
(u)¶