HomeSoftware Heritage

Tag model entities with their "object_type"

Description

Tag model entities with their "object_type"

this aims at preventing constant usage of isinstance() based dispatch
code when writing generic code handling model entities.

For example, the "object_type" argument of JournalWriter.write_addition() has
become superflous now we only pass model entities, etc.

This idea comes olasd's reading of mypy doc:

https://mypy.readthedocs.io/en/latest/literal_types.html#tagged-unions

This comes with a refactoring of from_dict.DiskBackedContent to make
it *not* inherit from model.Content: object_type being Final, it cannot
be overloaded.

Details

Provenance
douarddaAuthored on May 13 2020, 5:03 PM
douarddaPushed on Jun 25 2020, 10:29 AM
Differential Revision
D3152: Tag model entities with their "type"
Parents
rDMOD661b7c2c76bb: OriginVisitStatus: Allow "created" status
Branches
Unknown
Tags
Unknown
References
tag: v0.3.5
Tasks
T2422: Add an `object_type` attribute to model classes
Build Status
Buildable 13094
Build 19972: test-and-buildJenkins console · Jenkins