Skip to content

repo_stats

src.models.repo_stats

Repository statistics schemas.

Generated by generate_repo_stats.py. - Detail: repo_stats.json - Summary: repo_stats.yml

RepoStatsEntry

Bases: BaseModel

Repository metrics for a single artifact.

Source code in src/models/repo_stats.py
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
class RepoStatsEntry(BaseModel):
    """Repository metrics for a single artifact."""

    conference: str = Field(description="Conference abbreviation.")
    year: int = Field(description="Publication year.")
    title: str = Field(description="Paper title.")
    url: str = Field(description="Repository or archive URL.")
    source: Literal["github", "zenodo", "figshare"] = Field(
        description="Platform hosting the artifact.",
    )
    github_stars: int | None = Field(default=None, ge=0, description="GitHub star count.")
    github_forks: int | None = Field(default=None, ge=0, description="GitHub fork count.")
    zenodo_views: int | None = Field(default=None, ge=0, description="Zenodo view count.")
    zenodo_downloads: int | None = Field(default=None, ge=0, description="Zenodo download count.")
    description: str | None = Field(
        default=None,
        max_length=120,
        description="Repository description (truncated to 120 characters).",
    )
    language: str | None = Field(default=None, description="Primary programming language.")
    name: str | None = Field(default=None, description="Repository identifier (e.g., 'owner/repo').")
    pushed_at: str | None = Field(default=None, description="Timestamp of last push in ISO 8601 format.")

    model_config = {"extra": "forbid"}

TopRepo

Bases: BaseModel

A top repository within a conference.

Source code in src/models/repo_stats.py
46
47
48
49
50
51
52
53
54
class TopRepo(BaseModel):
    """A top repository within a conference."""

    name: str | None = Field(default=None)
    url: str | None = Field(default=None)
    stars: int | None = Field(default=None, ge=0)
    forks: int | None = Field(default=None, ge=0)
    language: str | None = Field(default=None)
    description: str | None = Field(default=None)

ConferenceYearStats

Bases: BaseModel

Repository metrics for a single conference-year.

Source code in src/models/repo_stats.py
57
58
59
60
61
62
63
64
65
class ConferenceYearStats(BaseModel):
    """Repository metrics for a single conference-year."""

    year: int
    github_repos: int = Field(ge=0)
    total_stars: int = Field(ge=0)
    total_forks: int = Field(ge=0)
    avg_stars: float = Field(ge=0)
    avg_forks: float = Field(ge=0)

ConferenceRepoStats

Bases: BaseModel

Repository metrics grouped by conference.

Source code in src/models/repo_stats.py
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
class ConferenceRepoStats(BaseModel):
    """Repository metrics grouped by conference."""

    name: str
    github_repos: int = Field(ge=0)
    total_stars: int = Field(ge=0)
    total_forks: int = Field(ge=0)
    avg_stars: float = Field(ge=0)
    avg_forks: float = Field(ge=0)
    max_stars: int = Field(ge=0)
    max_forks: int = Field(ge=0)
    years: list[ConferenceYearStats] = Field(default_factory=list)
    top_repos: list[TopRepo] = Field(default_factory=list)

    model_config = {"extra": "forbid"}

YearRepoStats

Bases: BaseModel

Repository metrics grouped by year.

Source code in src/models/repo_stats.py
85
86
87
88
89
90
91
92
93
94
95
class YearRepoStats(BaseModel):
    """Repository metrics grouped by year."""

    year: int
    github_repos: int = Field(ge=0)
    total_stars: int = Field(ge=0)
    total_forks: int | None = Field(default=None, ge=0)
    avg_stars: float | None = Field(default=None, ge=0)
    avg_forks: float | None = Field(default=None, ge=0)

    model_config = {"extra": "forbid"}

OverallStats

Bases: BaseModel

Global repository metrics.

Source code in src/models/repo_stats.py
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
class OverallStats(BaseModel):
    """Global repository metrics."""

    github_repos: int = Field(ge=0)
    total_stars: int = Field(ge=0)
    total_forks: int = Field(ge=0)
    max_stars: int = Field(ge=0)
    max_forks: int = Field(ge=0)
    zenodo_repos: int = Field(ge=0)
    total_views: int = Field(ge=0)
    total_downloads: int = Field(ge=0)
    avg_stars: float = Field(ge=0)
    avg_forks: float = Field(ge=0)
    last_updated: str = Field(description="ISO 8601 timestamp.")

    model_config = {"extra": "forbid"}

RepoStatsSummary

Bases: BaseModel

Aggregated repository metrics for the Jekyll site.

Written as repo_stats.yml in _data/.

Source code in src/models/repo_stats.py
116
117
118
119
120
121
122
123
124
125
126
class RepoStatsSummary(BaseModel):
    """Aggregated repository metrics for the Jekyll site.

    Written as ``repo_stats.yml`` in ``_data/``.
    """

    overall: OverallStats
    by_conference: list[ConferenceRepoStats]
    by_year: list[YearRepoStats]

    model_config = {"extra": "forbid"}