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.