# fiftyone.core.odm.mixins¶

Mixins and helpers for dataset backing documents.

Classes:

 DatasetMixin Mixin interface for fiftyone.core.odm.document.Document subclasses that are backed by a dataset. NoDatasetMixin Mixin for fiftyone.core.odm.document.SerializableDocument subtypes that are not backed by a dataset.

Functions:

 get_default_fields(cls[, include_private, …]) Gets the default fields present on all instances of the given DatasetMixin class. validate_fields_match(field_name, …) Validates that a given field or field description matches the type of the existing field.
fiftyone.core.odm.mixins.get_default_fields(cls, include_private=False, use_db_fields=False)

Gets the default fields present on all instances of the given DatasetMixin class.

Parameters
• cls – the DatasetMixin class

• include_private (False) – whether to include fields starting with _

• use_db_fields (False) – whether to return database fields rather than user-facing fields, when applicable

Returns

a tuple of field names

fiftyone.core.odm.mixins.validate_fields_match(field_name, field_or_kwargs, existing_field_or_kwargs)

Validates that a given field or field description matches the type of the existing field.

Parameters
Raises

ValueError – if the proposed field does not match the reference field

class fiftyone.core.odm.mixins.DatasetMixin

Bases: object

Mixin interface for fiftyone.core.odm.document.Document subclasses that are backed by a dataset.

Methods:

 add_field(field_name, ftype[, …]) Adds a new field to the document. add_implied_field(field_name, value) Adds the field to the document, if necessary, inferring the field type from the provided value. clear_field(field_name) get_field(field_name) get_field_schema([ftype, embedded_doc_type, …]) Returns a schema dictionary describing the fields of this document. has_field(field_name) merge_field_schema(schema[, expand_schema]) Merges the field schema into this document. set_field(field_name, value[, create])

Attributes:

property collection_name
property field_names
has_field(field_name)
get_field(field_name)
set_field(field_name, value, create=False)
clear_field(field_name)
classmethod get_field_schema(ftype=None, embedded_doc_type=None, include_private=False)

Returns a schema dictionary describing the fields of this document.

If the document belongs to a dataset, the schema will apply to all documents in the collection.

Parameters
• ftype (None) – an optional field type to which to restrict the returned schema. Must be a subclass of fiftyone.core.fields.Field

• embedded_doc_type (None) – an optional embedded document type to which to restrict the returned schema. Must be a subclass of fiftyone.core.odm.BaseEmbeddedDocument

• include_private (False) – whether to include fields that start with _ in the returned schema

Returns

a dictionary mapping field names to field types

classmethod merge_field_schema(schema, expand_schema=True)

Merges the field schema into this document.

Parameters
Raises

ValueError – if a field in the schema is not compliant with an existing field of the same name or a new field is found but expand_schema == False

classmethod add_field(field_name, ftype, embedded_doc_type=None, subfield=None, fields=None, **kwargs)

Adds a new field to the document.

Parameters
classmethod add_implied_field(field_name, value)

Adds the field to the document, if necessary, inferring the field type from the provided value.

Parameters
• field_name – the field name

• value – the field value

class fiftyone.core.odm.mixins.NoDatasetMixin

Bases: object

Mixin for fiftyone.core.odm.document.SerializableDocument subtypes that are not backed by a dataset.

Methods:

 clear_field(field_name) from_dict(d[, extended]) get_field(field_name) has_field(field_name) set_field(field_name, value[, create]) to_dict([extended])

Attributes:

property field_names
property collection_name
property in_db
has_field(field_name)
get_field(field_name)
set_field(field_name, value, create=False)
clear_field(field_name)
to_dict(extended=False)
classmethod from_dict(d, extended=False)
save()
reload()
delete()