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"}
|