Skip to content

Generator

generator

Generate security classifications from provider data.

ClassificationGenerator(sources: tuple[ClassificationSource, ...] = ())

Generate classifications from Security provider attributes.

Source code in src/equities_classifier/classification/generator.py
def __init__(
    self,
    sources: tuple[ClassificationSource, ...] = (),
) -> None:
    """Initialize classification generator class."""

    if len(sources) == 0:
        self._sources: tuple[ClassificationSource, ...] = (
            _SOURCE_GECS_MORNINGSTAR,
            _SOURCE_GICS_MOTLEYFOOL,
            _SOURCE_GICS_SEEKINGALPHA
        )
    else:
        self._sources = sources

generate(security: Security) -> list[SecurityClassification]

Generate classifications for a security.

Source code in src/equities_classifier/classification/generator.py
def generate(
    self,
    security: Security,
) -> list[SecurityClassification]:
    """Generate classifications for a security."""

    classifications: list[SecurityClassification] = []

    for source in self._sources:
        if source.datasource in security.provider_attributes:

            new_classification = self._generate_classification(security, source)
            if new_classification:

                # check for duplicates
                classification_exists = False
                for existing_classification in classifications:
                    if existing_classification.system == new_classification.system:
                        classification_exists = True
                        break

                if classification_exists:
                    if source.priority:
                        classifications.remove(existing_classification)
                        classifications.append(new_classification)
                else:
                    classifications.append(new_classification)

    return classifications

ClassificationSource(datasource: DataSourceID, system: ClassificationSystem, level_attributes: Mapping[ClassificationLevel, tuple[str, str | None]], resolver: Callable | None = None, priority: bool = False) dataclass

Definition of a provider classification source.

datasource: DataSourceID instance-attribute

level_attributes: Mapping[ClassificationLevel, tuple[str, str | None]] instance-attribute

priority: bool = False class-attribute instance-attribute

resolver: Callable | None = None class-attribute instance-attribute

system: ClassificationSystem instance-attribute