class ftrack_api.entity.base.DynamicEntityTypeMetaclass(name, bases, namespace, **kwargs)[source]

Custom metaclass to customise representation of dynamic classes.


Derive from same metaclass as derived bases to avoid conflicts.

__init__(*args, **kwargs)

Return a type’s method resolution order.


Register a virtual subclass of an ABC.

Returns the subclass, to allow usage as a class decorator.

class ftrack_api.entity.base.Entity(session, data=None, reconstructing=False)[source]

Base class for all entities.

entity_type = 'Entity'
attributes = None
primary_key_attributes = None
default_projections = None
__init__(session, data=None, reconstructing=False)[source]

Initialise entity.

session is an instance of ftrack_api.session.Session that this entity instance is bound to.

data is a mapping of key, value pairs to apply as initial attribute values.

reconstructing indicates whether this entity is being reconstructed, such as from a query, and therefore should not have any special creation logic applied, such as initialising defaults for missing data.


Return list of values.


Return list of tuples of (key, value) pairs.


Will fetch all values from the server if not already fetched or set locally.


Reset all locally modified attribute values.

merge(entity, merged=None)[source]

Merge entity attribute values and other data into this entity.

Only merge values from entity that are not ftrack_api.symbol.NOT_SET.

Return a list of changes made with each change being a mapping with the keys:

  • type - Either ‘remote_attribute’, ‘local_attribute’ or ‘property’.

  • name - The name of the attribute / property modified.

  • old_value - The previous value.

  • new_value - The new merged value.

get(k[, d]) D[k] if k in D, else d.  d defaults to None.
keys() a set-like object providing a view on D's keys
pop(k[, d]) v, remove specified key and return the corresponding value.

If key is not found, d is returned if given, otherwise KeyError is raised.

popitem() (k, v), remove and return some (key, value) pair

as a 2-tuple; but raise KeyError if D is empty.

setdefault(k[, d]) D.get(k,d), also set D[k]=d if k not in D
update([E, ]**F) None.  Update D from mapping/iterable E and F.

If E present and has a .keys() method, does: for k in E: D[k] = E[k] If E present and lacks .keys() method, does: for (k, v) in E: D[k] = v In either case, this is followed by: for k, v in F.items(): D[k] = v