Generic

Shared exceptions, logging and pydantic models. Not a lot to report here.

Pydantic data models may contain more classes as validator for fields; for stand-alone models, use the classes marked with Model at the end of the class name.

Pydantic models

class StructuredDataModel(**data)

Biosamples’ structured data model

model_computed_fields: ClassVar[Dict[str, ComputedFieldInfo]] = {}

A dictionary of computed field names and their corresponding ComputedFieldInfo objects.

model_config: ClassVar[ConfigDict] = {}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

model_fields: ClassVar[Dict[str, FieldInfo]] = {'accession': FieldInfo(annotation=str, required=True, metadata=[_PydanticGeneralMetadata(pattern='^SAME.[0-9]+$')]), 'data': FieldInfo(annotation=list[DataEntry], required=True)}

Metadata about the fields defined on the model, mapping of field names to [FieldInfo][pydantic.fields.FieldInfo] objects.

This replaces Model.__fields__ from Pydantic V1.

class BiosampleGeneralModel(**data)

Biosamples General model

model_config: ClassVar[ConfigDict] = {'extra': 'allow'}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

model_computed_fields: ClassVar[Dict[str, ComputedFieldInfo]] = {}

A dictionary of computed field names and their corresponding ComputedFieldInfo objects.

model_fields: ClassVar[Dict[str, FieldInfo]] = {'accession': FieldInfo(annotation=Union[str, NoneType], required=False, default=None), 'characteristics': FieldInfo(annotation=Dict[str, list[CharacteristicsFields]], required=True), 'externalReferences': FieldInfo(annotation=Union[list[ExternalUrl], NoneType], required=False, default=None), 'name': FieldInfo(annotation=str, required=True, metadata=[MinLen(min_length=1)]), 'organization': FieldInfo(annotation=Union[list[Organization], NoneType], required=False, default=None), 'relationships': FieldInfo(annotation=Union[list[Relationship], NoneType], required=False, default=None), 'release': FieldInfo(annotation=str, required=True), 'structuredData': FieldInfo(annotation=Union[list[DataEntry], NoneType], required=False, default=None)}

Metadata about the fields defined on the model, mapping of field names to [FieldInfo][pydantic.fields.FieldInfo] objects.

This replaces Model.__fields__ from Pydantic V1.

Exceptions

exception MandatoryFunctionNotSet(logger)

Bases: Exception

Mandatory function has not been overriden in subclass

Logger

set_up_logger(instance_object, verbose=False)

Set up logger for any instance of a class.

Parameters:
Return type:

Logger

Returns:

logging.Logger instance initialised to the class.

Utilities

slice_list(list_to_chunk, chunk_size)

Slice an iterable (List/Tuple) returning tuples of ‘chunk_sixe’ size.

Parameters:
  • list_to_chunk (list | tuple) – iterable to slice

  • chunk_size (int) – Size of the chunk

Return type:

Generator

Returns:

Generator of ‘chunk_size’ sizes of the list.

parse_pydantic_errors(pydantic_errors)
Return type:

list