Skip to content

repo_stats_yearly

src.models.aggregates.repo_stats_yearly

Yearly repository statistics schema.

Generated by generate_repo_stats.pyrepo_stats_yearly.json.

YearlyRepoMetrics

Bases: BaseModel

Aggregate GitHub metrics for a group of repositories in a given year.

Source code in src/models/aggregates/repo_stats_yearly.py
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
class YearlyRepoMetrics(BaseModel):
    """Aggregate GitHub metrics for a group of repositories in a given year."""

    github_repos: int = Field(
        ge=0,
        description="Number of GitHub repositories with stats for this year/area combination.",
        examples=[180],
    )
    avg_stars: float = Field(
        ge=0, description="Mean GitHub star count across repositories in this group.", examples=[250.5]
    )
    avg_forks: float = Field(
        ge=0, description="Mean GitHub fork count across repositories in this group.", examples=[65.3]
    )
    min_stars: float = Field(ge=0, description="Minimum GitHub star count in this group.", examples=[0.0])
    max_stars: float = Field(ge=0, description="Maximum GitHub star count in this group.", examples=[5200])
    min_forks: float = Field(ge=0, description="Minimum GitHub fork count in this group.", examples=[0.0])
    max_forks: float = Field(ge=0, description="Maximum GitHub fork count in this group.", examples=[1300])

    model_config = {"extra": "forbid"}

RepoStatsYearly

Bases: BaseModel

Yearly repository statistics split by area (all, systems, security) with aggregate GitHub metrics.

Source code in src/models/aggregates/repo_stats_yearly.py
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
class RepoStatsYearly(BaseModel):
    """Yearly repository statistics split by area (all, systems, security) with aggregate GitHub metrics."""

    year: int = Field(description="Publication year, e.g. 2023.", examples=[2023])
    all: YearlyRepoMetrics = Field(description="Combined GitHub metrics across all research areas for this year.")
    systems: YearlyRepoMetrics | None = Field(
        default=None,
        description="Systems-only GitHub metrics. Null if no systems repositories exist for this year.",
        examples=[75],
    )
    security: YearlyRepoMetrics | None = Field(
        default=None,
        description="Security-only GitHub metrics. Null if no security repositories exist for this year.",
        examples=[52],
    )

    model_config = {"extra": "forbid"}