Files
2125_GCE/codex_lineage/lineage_resolver.py
T

45 lines
1.4 KiB
Python
Raw Normal View History

from typing import Dict, Any
from .lineage_model import CodexEntry, SegmentLineage, EpochInfo, ContributorInfo
from .epoch_mapper import parse_epoch
from .contributor_index import register_contributor
def resolve_lineage(manifest: Dict[str, Any]) -> CodexEntry:
source_file = manifest.get("source_file", "unknown")
source_type = manifest.get("source_type", ".py")
version = manifest.get("version", "1.0.0")
origin = manifest.get("origin", "unknown")
timestamp = manifest.get("timestamp")
epoch_str = manifest.get("epoch", "v1")
epoch = parse_epoch(str(epoch_str))
contributor_name = manifest.get("contributor", "unknown")
contributor = register_contributor(contributor_name)
segments = []
codex_lineage = manifest.get("codex_lineage", {})
segment_list = codex_lineage.get("segments", [])
for seg in segment_list:
segment = SegmentLineage(
segment_id=seg.get("id", "unknown"),
start_line=seg.get("start", 0),
end_line=seg.get("end", 0),
start_byte=seg.get("start_byte", 0),
end_byte=seg.get("end_byte", 0)
)
segments.append(segment)
return CodexEntry(
source_file=source_file,
source_type=source_type,
version=version,
origin=origin,
epoch=epoch,
contributor=contributor,
segments=segments,
timestamp=timestamp
)