Skip to content

artifact_availability

src.models.artifacts.artifact_availability

Artifact availability schema.

Generated by generate_artifact_availability.pyartifact_availability.json.

PlatformStats

Bases: BaseModel

Accessibility stats for a single platform.

Source code in src/models/artifacts/artifact_availability.py
11
12
13
14
15
16
17
18
19
20
class PlatformStats(BaseModel):
    """Accessibility stats for a single platform."""

    total: int = Field(ge=0, description="Total number of artifact URLs checked on this platform.", examples=[45])
    accessible: int = Field(ge=0, description="Number of URLs that returned HTTP 200 (accessible).", examples=[True])
    pct: float = Field(
        ge=0, le=100, description="Accessibility percentage: (accessible / total) * 100.", examples=[87.5]
    )

    model_config = {"extra": "forbid"}

AvailabilitySummary

Bases: BaseModel

Aggregate summary of artifact URL accessibility.

Source code in src/models/artifacts/artifact_availability.py
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
class AvailabilitySummary(BaseModel):
    """Aggregate summary of artifact URL accessibility."""

    checked_at: str = Field(
        description="UTC timestamp when the availability check was run, e.g. '2026-04-27 21:27:11 UTC'.",
        examples=["2026-04-01T12:00:00Z"],
    )
    total_urls: int = Field(
        ge=0, description="Total number of artifact URLs checked across all platforms.", examples=[2831]
    )
    accessible_urls: int = Field(ge=0, description="Number of URLs that were accessible (HTTP 200).", examples=[2450])
    accessibility_pct: float = Field(
        ge=0,
        le=100,
        description="Overall accessibility percentage: (accessible_urls / total_urls) * 100.",
        examples=[86.7],
    )
    by_platform: dict[str, PlatformStats] = Field(
        description="Breakdown by hosting platform. Keys are platform names: 'GitHub', 'GitLab', 'Zenodo', 'Figshare', 'Bitbucket', 'DOI-other'."
    )
    by_area: dict[str, PlatformStats] = Field(description="Breakdown by research area. Keys: 'systems', 'security'.")
    by_year: dict[str, PlatformStats] = Field(
        description="Breakdown by publication year. Keys are year strings, e.g. '2020', '2023'."
    )
    by_year_area: dict[str, dict[str, PlatformStats]] = Field(
        description="Nested breakdown: year string → area ('systems'/'security') → PlatformStats."
    )
    by_year_platform: dict[str, dict[str, PlatformStats]] = Field(
        description="Nested breakdown: year string → platform name → PlatformStats."
    )
    by_conference: dict[str, PlatformStats] = Field(
        description="Breakdown by conference. Keys are abbreviations, e.g. 'OSDI', 'USENIXSEC', 'NDSS'."
    )

    model_config = {"extra": "forbid"}

AvailabilityRecord

Bases: BaseModel

Accessibility check result for a single artifact URL.

Source code in src/models/artifacts/artifact_availability.py
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
class AvailabilityRecord(BaseModel):
    """Accessibility check result for a single artifact URL."""

    conference: str = Field(description="Conference abbreviation, e.g. 'ATC', 'USENIXSEC'.", examples=["OSDI"])
    year: int = Field(description="Publication year, e.g. 2023.", examples=[2023])
    area: str = Field(description="Research area: 'systems' or 'security'.", examples=["systems"])
    title: str = Field(
        description="Title of the paper whose artifact URL was checked.",
        examples=["Understanding and Detecting Software Upgrade Failures in Distributed Systems"],
    )
    url_key: str = Field(
        description="URL field name from the source data, e.g. 'repository_url', 'artifact_url'.",
        examples=["repository_url"],
    )
    url: str = Field(
        description="The artifact URL that was checked, e.g. 'https://github.com/org/repo'.",
        examples=["https://github.com/org/repo"],
    )
    platform: str = Field(
        description="Detected hosting platform: 'GitHub', 'GitLab', 'Zenodo', 'Figshare', 'Bitbucket', or 'DOI-other'.",
        examples=["github.com"],
    )
    accessible: bool = Field(
        description="True if the URL returned HTTP 200 at check time, false otherwise.", examples=[True]
    )

    model_config = {"extra": "forbid"}

ArtifactAvailability

Bases: BaseModel

Artifact URL accessibility report: aggregate summary and per-URL check results.

Source code in src/models/artifacts/artifact_availability.py
89
90
91
92
93
94
95
96
97
98
99
class ArtifactAvailability(BaseModel):
    """Artifact URL accessibility report: aggregate summary and per-URL check results."""

    summary: AvailabilitySummary = Field(
        description="Aggregate accessibility summary with breakdowns by platform, area, year, and conference."
    )
    records: list[AvailabilityRecord] = Field(
        description="Individual check results, one record per artifact URL tested."
    )

    model_config = {"extra": "forbid"}