betty.model package¶
Submodules¶
- betty.model.ancestry module
Ancestry
Citation
Dated
Described
Enclosure
Event
File
FileReference
HasCitations
HasFileReferences
HasLinks
HasLinksEntity
HasMediaType
HasNotes
HasPrivacy
Link
Note
Person
PersonName
Place
PlaceName
Presence
Privacy
Source
is_private()
is_public()
merge_privacies()
ref_link()
ref_link_collection()
ref_media_type()
resolve_privacy()
- betty.model.event_type module
Adoption
Baptism
Birth
Burial
Conference
Confirmation
Correspondence
CreatableDerivableEventType
Cremation
Death
DerivableEventType
Divorce
DivorceAnnouncement
DuringLifeEventType
EVENT_TYPE_REPOSITORY
Emigration
EndOfLifeEventType
Engagement
EventType
FinalDispositionEventType
Funeral
Immigration
Marriage
MarriageAnnouncement
Missing
Occupation
PostDeathEventType
PreBirthEventType
Residence
Retirement
StartOfLifeEventType
UnknownEventType
Will
- betty.model.presence_role module
Module contents¶
Provide Betty’s data model API.
- class betty.model.AliasedEntity[source]¶
Bases:
Generic
[_EntityT
]An aliased entity wraps an entity and gives aliases its ID.
Aliases are used when deserializing ancestries from sources where intermediate IDs are used to declare associations between entities. By wrapping an entity in an alias, the alias can use the intermediate ID, allowing it to be inserted into APIs such as
betty.model.EntityGraphBuilder
who will use the alias ID to finalize associations before the original entities are returned.
- class betty.model.BidirectionalEntityTypeAssociation[source]¶
Bases:
Generic
[_OwnerT
,_AssociateT
],_EntityTypeAssociation
[_OwnerT
,_AssociateT
]A bidirectional entity type association.
- __init__(owner_type: type[_OwnerT], owner_attr_name: str, associate_type_name: str, associate_attr_name: str)[source]¶
- inverse() BidirectionalEntityTypeAssociation[_AssociateT, _OwnerT] [source]¶
Get the inverse association.
- class betty.model.BidirectionalToManyEntityTypeAssociation[source]¶
Bases:
Generic
[_OwnerT
,_AssociateT
],ToManyEntityTypeAssociation
[_OwnerT
,_AssociateT
],BidirectionalEntityTypeAssociation
[_OwnerT
,_AssociateT
]A bidirectional *-to-many entity type association.
- class betty.model.BidirectionalToOneEntityTypeAssociation[source]¶
Bases:
Generic
[_OwnerT
,_AssociateT
],ToOneEntityTypeAssociation
[_OwnerT
,_AssociateT
],BidirectionalEntityTypeAssociation
[_OwnerT
,_AssociateT
]A bidirectional *-to-one entity type association.
- betty.model.ENTITY_TYPE_REPOSITORY: PluginRepository[Entity] = <betty.plugin.entry_point.EntryPointPluginRepository object>¶
The entity type plugin repository.
- class betty.model.Entity[source]¶
Bases:
LinkedDataDumpable
,Plugin
An entity is a uniquely identifiable data container.
- property ancestry_id: tuple[builtins.type[Self], str]¶
The ancestry ID.
This MUST be unique per ancestry.
- property label: Localizable¶
The entity’s human-readable label.
- async classmethod linked_data_schema(project: Project) DumpMapping[Dump] [source]¶
Define the JSON Schema for
betty.json.linked_data.LinkedDataDumpable.dump_linked_data()
.
- abstract classmethod plugin_label_plural() Localizable [source]¶
The human-readable entity type label, plural.
- property type: builtins.type[Self]¶
The entity type.
- class betty.model.EntityCollection[source]¶
-
Provide a collection of entities.
- property view: list[_TargetT & Entity]¶
A view of the entities at the time of calling.
- class betty.model.EntityGraphBuilder[source]¶
Bases:
_EntityGraphBuilder
Assemble entities and their associations.
(De)serializing data often means that special care must be taken with the associations, relationships, or links between data points, as those form a graph, a network, a tangled web of data. When deserializing entity A with an association to entity B, that association cannot be finalized until entity B is parsed as well. But, if entity B subsequently has an association with entity A (the association is bidirectional), this results in an endless cycle.
This class prevents the problem by letting you add entities and associations separately. Associations are finalized when you are done adding, avoiding cycle errors.
- class betty.model.EntityTypeAssociationRegistry[source]¶
Bases:
object
Inspect any known entity type associations.
- classmethod finalize(*owners: Entity) None [source]¶
Finalize all associations from the given owners.
- classmethod get_all_associations(owner: type | object) set[ToOneEntityTypeAssociation[Any, Any] | ToManyEntityTypeAssociation[Any, Any]] [source]¶
Get all associations for an owner.
- classmethod get_associates(owner: _EntityT, association: ToOneEntityTypeAssociation[_EntityT, _AssociateT] | ToManyEntityTypeAssociation[_EntityT, _AssociateT]) Iterable[_AssociateT] [source]¶
Get the associates for a given owner and association.
- class betty.model.GeneratedEntityId[source]¶
Bases:
str
Generate a unique entity ID.
Entities must have IDs for identification. However, not all entities can be provided with an ID that exists in the original data set (such as a third-party family tree loaded into Betty), so IDs can be generated.
- class betty.model.ManyToMany[source]¶
Bases:
Generic
[_OwnerT
,_AssociateT
],BidirectionalToManyEntityTypeAssociation
[_OwnerT
,_AssociateT
]A bidirectional many-to-many entity type association.
- class betty.model.ManyToOne[source]¶
Bases:
Generic
[_OwnerT
,_AssociateT
],BidirectionalToOneEntityTypeAssociation
[_OwnerT
,_AssociateT
]A bidirectional many-to-one entity type association.
- class betty.model.MultipleTypesEntityCollection[source]¶
Bases:
Generic
[_TargetT
],EntityCollection
[_TargetT
]Collect entities of multiple types.
- class betty.model.OneToMany[source]¶
Bases:
Generic
[_OwnerT
,_AssociateT
],BidirectionalToManyEntityTypeAssociation
[_OwnerT
,_AssociateT
]A bidirectional one-to-many entity type association.
- class betty.model.OneToOne[source]¶
Bases:
Generic
[_OwnerT
,_AssociateT
],BidirectionalToOneEntityTypeAssociation
[_OwnerT
,_AssociateT
]A bidirectional one-to-one entity type association.
- class betty.model.SingleTypeEntityCollection[source]¶
Bases:
Generic
[_TargetT
],EntityCollection
[_TargetT
]Collect entities of a single type.
- class betty.model.ToMany[source]¶
Bases:
Generic
[_OwnerT
,_AssociateT
],ToManyEntityTypeAssociation
[_OwnerT
,_AssociateT
]A unidirectional to-many entity type association.
- class betty.model.ToManyEntityTypeAssociation[source]¶
Bases:
Generic
[_OwnerT
,_AssociateT
],_EntityTypeAssociation
[_OwnerT
,_AssociateT
]A to-many entity type association.
- get(owner: _OwnerT & Entity) EntityCollection[_AssociateT & Entity] [source]¶
Get the associates from the given owner.
- class betty.model.ToOne[source]¶
Bases:
Generic
[_OwnerT
,_AssociateT
],ToOneEntityTypeAssociation
[_OwnerT
,_AssociateT
]A unidirectional to-one entity type association.
- class betty.model.ToOneEntityTypeAssociation[source]¶
Bases:
Generic
[_OwnerT
,_AssociateT
],_EntityTypeAssociation
[_OwnerT
,_AssociateT
]A unidirectional to-one entity type association.
- get(owner: _OwnerT & Entity) _AssociateT & Entity | None [source]¶
Get the associate from the given owner.
- class betty.model.UserFacingEntity[source]¶
Bases:
object
A sentinel to mark an entity type as being visible to users (e.g. not internal).
- betty.model.many_to_many(owner_attr_name: str, associate_type_name: str, associate_attr_name: str) Callable[[type[_OwnerT]], type[_OwnerT]] [source]¶
Add a bidirectional many-to-many association to an entity or entity mixin.
- betty.model.many_to_one(owner_attr_name: str, associate_type_name: str, associate_attr_name: str) Callable[[type[_OwnerT]], type[_OwnerT]] [source]¶
Add a bidirectional many-to-one association to an entity or entity mixin.
- betty.model.many_to_one_to_many(left_associate_type_name: str, left_associate_attr_name: str, left_owner_attr_name: str, right_owner_attr_name: str, right_associate_type_name: str, right_associate_attr_name: str) Callable[[type[_OwnerT]], type[_OwnerT]] [source]¶
Add a bidirectional many-to-one-to-many association to an entity or entity mixin.
- betty.model.one_to_many(owner_attr_name: str, associate_type_name: str, associate_attr_name: str) Callable[[type[_OwnerT]], type[_OwnerT]] [source]¶
Add a bidirectional one-to-many association to an entity or entity mixin.
- betty.model.one_to_one(owner_attr_name: str, associate_type_name: str, associate_attr_name: str) Callable[[type[_OwnerT]], type[_OwnerT]] [source]¶
Add a bidirectional one-to-one association to an entity or entity mixin.
- betty.model.record_added(entities: EntityCollection[_EntityT]) Iterator[MultipleTypesEntityCollection[_EntityT]] [source]¶
Record all entities that are added to a collection.
- betty.model.to_many(owner_attr_name: str, associate_type_name: str) Callable[[type[_OwnerT]], type[_OwnerT]] [source]¶
Add a unidirectional to-many association to an entity or entity mixin.
- betty.model.to_one(owner_attr_name: str, associate_type_name: str) Callable[[type[_OwnerT]], type[_OwnerT]] [source]¶
Add a unidirectional to-one association to an entity or entity mixin.
- betty.model.unalias(entity: _EntityT | AliasedEntity[_EntityT]) _EntityT [source]¶
Unalias a potentially aliased entity.