Merger
merger ¶
merge set of SecurityProviderRecords.
JoinType ¶
SecurityMerger(matcher: SecurityMatcher | None = None) ¶
Merge SecurityProviderRecords into Security objects.
Source code in src/equities_classifier/matching/merger.py
create_securities(provider_records: Sequence[SecurityProviderRecord]) -> list[Security] ¶
Create Security objects from provider records.
Source code in src/equities_classifier/matching/merger.py
merge_enrich_multiple(left: Sequence[Security], right: Sequence[SecurityProviderRecord], *, join_type: JoinType = JoinType.LEFT) -> list[Security] ¶
Merge provider records into existing Security objects.
Source code in src/equities_classifier/matching/merger.py
def merge_enrich_multiple(
self,
left: Sequence[Security],
right: Sequence[SecurityProviderRecord],
*,
join_type: JoinType = JoinType.LEFT,
) -> list[Security]:
"""Merge provider records into existing Security objects."""
for security in left:
security = self.merge_enrich_single(security, right)
return list(left)
merge_enrich_single(security: Security, right: Sequence[SecurityProviderRecord], *, join_type: JoinType = JoinType.LEFT) -> Security ¶
Merge provider records into existing Security record.
Source code in src/equities_classifier/matching/merger.py
def merge_enrich_single(
self,
security: Security,
right: Sequence[SecurityProviderRecord],
*,
join_type: JoinType = JoinType.LEFT,
) -> Security:
"""Merge provider records into existing Security record."""
matches = [
provider_record
for provider_record in right
if self._matcher.match(security, provider_record,)
]
if len(matches) > 1:
MatchingHelper.other_error_with_message(
f"Multiple matching provider records for "
f"{security.name!r} / {security.ticker!r}."
)
provider_record = matches[0]
self._merge_identifiers(security, provider_record,)
self._merge_provider_attributes(security, provider_record,)
return security