Coverage for src/somesy/git/models.py: 100%
19 statements
« prev ^ index » next coverage.py v7.16.0, created at 2026-09-08 11:27 +0000
« prev ^ index » next coverage.py v7.16.0, created at 2026-09-08 11:27 +0000
1"""Models for metadata harvested from Git."""
3from __future__ import annotations
5from datetime import date
6from typing import Annotated
8from pydantic import Field
10from somesy.core.models import SomesyBaseModel
11from somesy.core.types import ContributionTypeEnum
14class GitAuthor(SomesyBaseModel):
15 """A Git author mapped to a Somesy project contributor."""
17 name: str
18 email: str | None = None
19 commit_count: Annotated[int, Field(ge=0)] = 0
20 author: bool = True
21 contribution_types: list[ContributionTypeEnum] = Field(
22 default_factory=lambda: [ContributionTypeEnum.code], min_length=1
23 )
26class GitMetadata(SomesyBaseModel):
27 """Git values that map to Somesy project metadata."""
29 name: str | None = None
30 repository: str | None = None
31 version: str | None = None
32 date_created: date | None = None
33 date_modified: date | None = None
34 authors: list[GitAuthor] = Field(default_factory=list)