Öffentliches Register
Software-GesundheitsberichtSchema 0.27.0 · Metriken 1.13.0 · 2026-07-27 06:45 UTC

dbca-wa / wastd

Western Australian Sea Turtle and Strandings Database

Python · HTMLMIT★ 6 Sterne⑂ 4 Forksseit Juli 2016Auf GitHub ansehen ↗

dbca-wa/wastd erreicht einen Gesundheitsindex von 68 von 100 und liegt damit im Bereich Mittel. Am stärksten schneidet es bei Vitality (89/100) ab, am schwächsten bei Community & Adoption (41/100). Zuletzt heute aktualisiert. 2 Mitwirkende tragen den Großteil der jüngsten Arbeit.

68
gesamt / 100
Mittel

Software-Gesundheitsindex

Metriken werden auf einer Skala von 1–100 in gewichtete Kategorien gruppiert. Der Gesamtwert beginnt als ihr Mittel; sobald öffentliche Evidenz die Richtlinie für Hochrisikojurisdiktionen auslöst, wird die Bewertung angepasst und erhält die Obergrenze 49 (Gefährdet). AI Readiness liegt außerhalb.

68
Exzellent85-100Vorbildlich; erfüllt im Wesentlichen alle geprüften Kriterien
Gut70-84Gesund; geringfügige Lücken
Mittel50-69Akzeptabel mit deutlichen Lücken; Überprüfung empfohlen
Gefährdet30-49Erhebliche Schwächen; eine Übernahme erfordert Vorsicht
Kritisch1-29Schwerwiegende Probleme (aufgegeben, nur ein Maintainer, keine Hygiene)
VitalitätCommunity &VerbreitungNachhaltigkeit &GovernanceEngineering-QualitätSicherheitAI Readiness

Bewertungsprofil

Jede Achse ist eine Kategorie. Die Form zählt mehr als der Durchschnitt — ein gesundes Projekt füllt die gesamte Fläche, während ein Profil aus Spitzen und Kratern bedeutet, dass Stärke in einer Dimension Risiken in einer anderen verdeckt.

Eigentümerschaft

28 Follower234 öffentliche Reposseit Jan. 2016

Dieses Repository wird von einer Organisation getragen — geteilte, rechenschaftspflichtige Trägerschaft, die jeden einzelnen Maintainer überdauern kann.

Metriken nach Kategorie

Vitalität

Lebt das Projekt — wird Code geschrieben und werden Releases ausgeliefert?

89Exzellent · 22 % des Gesamtindex
Wie die Bewertung erfolgt
36/36Push-Aktualität — letzter Push vor 0 Tagen
24.9/36Commit-Rhythmus — 36/52 Wochen mit Commits
18/18Commit-Volumen — 295 Commits im letzten Jahr
10/10OpenSSF Scorecard: Maintained — 30 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 10
Verwendete Eingangsdaten
commits_last_year295
human_commit_share0,9
days_since_last_push0
active_weeks_last_year36
Wie die Bewertung erfolgt
16.2/27Liefert Releases aus — 91 Versions-Tags (keine GitHub-Releases)
36/36Release-Aktualität — letztes Release vor 10 Tagen
27/27Release-Rhythmus — ein Release etwa alle 20,5 Tage
0/10OpenSSF Scorecard: Signed-Releases — keine Daten
Verwendete Eingangsdaten
releases_count91
latest_release_tagv2.3.3
releases_from_tagsja
days_since_latest_release10
mean_days_between_releases20,5
Von der Bewertung ausgeschlossen (keine Daten oder nicht anwendbar): OpenSSF Scorecard: Signed-Releases. Die verbleibenden Gewichte wurden renormalisiert.

Community & Verbreitung

Hat das Projekt Nutzer, Downloads, Aufmerksamkeit und ein einladendes Umfeld für Beitragende?

41Gefährdet · 18 % des Gesamtindex
Wie die Bewertung erfolgt
11.3/60Stars — 6 Stars
4/25Forks — 4 Forks
4.3/15Watcher — 7 Watcher
Verwendete Eingangsdaten
forks4
stars6
watchers7
growth_stateunverified
growth_factor_pct100
growth_unverified_reasonno_history
Wie die Bewertung erfolgt
22.5/22.5README
22.5/22.5Lizenz — anerkannte Lizenz (MIT)
0/18CONTRIBUTING-Leitfaden
13.5/13.5Verhaltenskodex
0/7.2Issue-Vorlage
0/6.3PR-Vorlage
Verwendete Eingangsdaten
has_readmeja
has_licenseja
has_contributingnein
has_issue_templatenein
has_code_of_conductja
has_pull_request_templatenein

Nachhaltigkeit & Governance

Überdauert das Projekt die Menschen, die es tragen — Bus-Faktor, Reaktionsfähigkeit, Trägerschaft und Paketpflege?

62Mittel · 24 % des Gesamtindex
Wie die Bewertung erfolgt
25.2/54Bus-Faktor — 2 Beitragende decken die Hälfte aller Commits ab
11.5/22.5Commit-Verteilung — wichtigste beitragende Person verfasste 49 % der Commits
6.8/13.5Breite der Beitragenden — 5 Beitragende
10/10OpenSSF Scorecard: Contributors — project has 3 contributing companies or organizations -- score normalized to 10
Verwendete Eingangsdaten
bus_factor2
contributors_sampled5
top_contributor_share0,488
Wie die Bewertung erfolgt
46.8/46.8Issue-Lösungsquote — 100 % der Issues geschlossen
17.7/38.3PR-Annahme — 191/412 entschiedene PRs gemergt
4.5/15OpenSSF Scorecard: Code-Review — Found 4/12 approved changesets -- score normalized to 3
Verwendete Eingangsdaten
merged_prs191
open_issues0
closed_issues329
issue_closed_ratio1
closed_unmerged_prs221
Wie die Bewertung erfolgt
30/30Organisatorische Trägerschaft — im Besitz einer Organisation
0/20Verifizierte Domain
10.5/25Reichweite des Inhabers — 28 Follower von dbca-wa
25/25Kontohistorie — 234 öffentliche Repos, Kontoalter ca. 10 Jahre
Verwendete Eingangsdaten
followers28
owner_typeOrganization
is_verified
owner_logindbca-wa
public_repos234
account_age_days3.851

Engineering-Qualität

Sind grundlegende Engineering- und Dokumentationspraktiken vorhanden?

85Exzellent · 20 % des Gesamtindex
Wie die Bewertung erfolgt
24/24CI-Workflows — 2 Workflow(s)
24/24Tests vorhanden
16/16Linter-Konfiguration — .flake8
9.6/9.6Pre-Commit-Hooks
0/6.4.editorconfig
8/20OpenSSF Scorecard: CI-Tests — 5 out of 12 merged PRs checked by a CI test -- score normalized to 4
Verwendete Eingangsdaten
has_cija
has_testsja
has_editorconfignein
has_linter_configja
has_precommit_configja

Dokumentation

90Exzellent
Wie die Bewertung erfolgt
30/30README
25/25Dokumentationsverzeichnis
15/15Dokumentations-/Homepage-Site — https://dbca-wa.github.io/wastd/
10/10Repository-Beschreibung
10/10Topics — 6 Topics
0/10Wiki
Verwendete Eingangsdaten
topicsbiodiversity, conservation-bio, marine-species, strandings, marine-wildlife-incidents, marine-turtles
has_wikinein
homepagehttps://dbca-wa.github.io/wastd/
has_readmeja
has_docs_dirja
has_descriptionja

Sicherheit

Sind die sichtbaren Sicherheits- und Lieferkettenpraktiken belastbar, ohne ungeklärte Exposition gegenüber Hochrisikojurisdiktionen?

57Mittel · 16 % des Gesamtindex
Wie die Bewertung erfolgt
7.5/7.5Binary-Artifacts — no binaries found in the repo
0/7.5Branch-Protection — branch protection not enabled on development/release branches
1/2.5CI-Tests — 5 out of 12 merged PRs checked by a CI test -- score normalized to 4
0/2.5CII-Best-Practices — no effort to earn an OpenSSF best practices badge detected
2.2/7.5Code-Review — Found 4/12 approved changesets -- score normalized to 3
2.5/2.5Contributors — project has 3 contributing companies or organizations -- score normalized to 10
10/10Dangerous-Workflow — no dangerous workflow patterns detected
7.5/7.5Dependency-Update-Tool — update tool detected
0/5Fuzzing — project is not fuzzed
2.5/2.5Lizenz — license file detected
7.5/7.5Maintained — 30 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 10
5/5Packaging — packaging workflow detected
3.5/5Pinned-Dependencies — dependency not pinned by hash detected -- score normalized to 7
0/5SAST — SAST tool is not run on all commits -- score normalized to 0
5/5Security-Policy — security policy file detected
0/7.5Signed-Releases — keine Daten
6.8/7.5Token-Permissions — detected GitHub workflow tokens with excessive permissions
0/7.5Vulnerabilities — 17 existing vulnerabilities detected
Verwendete Eingangsdaten
sourceopenssf_scorecard
checks_evaluated17
scorecard_versionv5.5.0
checks_inconclusive1
scorecard_aggregate6,3
Von der Bewertung ausgeschlossen (keine Daten oder nicht anwendbar): signed_releases. Die verbleibenden Gewichte wurden renormalisiert.
Wie die Bewertung erfolgt
3.6/35Direkte Abhängigkeiten ohne bekannte Advisories — 7 betroffen: django 4.2.29 (critical 9.8), pillow 12.1.1 (critical 9.1), pillow 12.2.0 (critical 9.1), +4 weitere
0/25Indirekte Abhängigkeiten ohne bekannte Advisories — transitive Menge in diesem Bereich nicht von Entwicklungs- und Test-Abhängigkeiten trennbar
22.5/40Keine offenen Advisories — 4 Paket(e) mit Advisory seit über 90 Tagen unbehandelt; ältestes vor 123 Tagen veröffentlicht
Verwendete Eingangsdaten
sourceosv
advisories104
affected_packages15
assessed_packages196
unassessed_packages0
affected_by_severitycritical 5, high 4, moderate 5, low 1
direct_affected_packages7
Von der Bewertung ausgeschlossen (keine Daten oder nicht anwendbar): Indirekte Abhängigkeiten ohne bekannte Advisories. Die verbleibenden Gewichte wurden renormalisiert. 196 aufgelöste Abhängigkeiten wurden mit OSV abgeglichen. Dieses Repository veröffentlicht kein Paket, das der Index auflöst; bewertet wurde daher der Abhängigkeitsgraph des Repositorys. Dieser Graph vermischt Entwicklungs- und Test-Pins mit ausgelieferten Abhängigkeiten, daher werden nur die deklarierten Laufzeit-Abhängigkeiten bewertet; transitive Befunde werden als Kontext ausgewiesen und fließen nicht in die Bewertung ein. Erreichbarkeit wird nicht analysiert.

AI Readiness

Wie gut ist das Repository dafür ausgestattet, mit KI-Coding-Agenten entwickelt und gepflegt zu werden? Ein unabhängiges, experimentelles Badge — Gewicht 0,0, es wird eigenständig ausgewiesen und verändert den Gesamt-Gesundheitswert nicht.

68Mittel · 0 % des Gesamtindex
Wie die Bewertung erfolgt
45/45Agentenanweisungen — .github/copilot-instructions.md
0/15Maschinenlesbare Doku (llms.txt)
17.2/40Lesbare Commit-Historie — 29 von 90 menschlichen Commits benennen ihre Absicht (strukturierter Betreff oder erläuternder Text)
Verwendete Eingangsdaten
has_llms_txtnein
legible_history_share0,322
agent_instruction_files.github/copilot-instructions.md
agent_instruction_max_bytes6.785
Wie die Bewertung erfolgt
0/18Bootstrap mit einem Befehl
22/22Automatisierte Tests
11/11Lint-/Format-Konfiguration — .flake8
11/11Statische Typprüfung — pyrightconfig.json
10/10Reproduzierbare Umgebung — Dockerfile, lockfile
0/10Belegte Agentenpraxis — keine von Agenten verfassten Commits unter den letzten 100
8/8Automatisierte Wartung — 10 der letzten 100 Commits sind automatisierte Abhängigkeits-Updates
7/10OpenSSF Scorecard: Pinned-Dependencies — dependency not pinned by hash detected -- score normalized to 7
Verwendete Eingangsdaten
has_nixnein
has_testsja
lockfilesuv.lock
has_dockerfileja
typed_languagenein
bootstrap_files
has_devcontainernein
has_linter_configja
typecheck_configspyrightconfig.json
agent_commit_share0
toolchain_manifests
dependency_bot_commit_share0,1
Wie die Bewertung erfolgt
27/45Typprüfbarer Code — Python mit Typprüfungs-Konfiguration (pyrightconfig.json)
52.8/55Handhabbare Dateigrößen — 6/148 Quelldateien über 60 KB
Verwendete Eingangsdaten
primary_languagePython
largest_source_bytes265.172
source_files_sampled148
oversized_source_files6

Eckdaten

6GitHub-Sterne
5Mitwirkende
295Commits, letzte 12 Monate
0Tage seit letztem Push
91Releases
2Bus-Faktor
0offene Issues
PyPIPaket-Ökosysteme

Warnungen zur Datenerhebung

  • Star history unavailable: GitHub GraphQL error: Resource not accessible by personal access token
  • Could not fetch pypi package 'wastd' from its registry

Weitere Details

Stern- und Fork-Verlauf 0 ★ / 4 ⇿
0Sterne
4Forks
60Releases

Wann jeder Stern und Fork hinzugefügt wurde, von GitHub erfasst und nach Tagen gruppiert. Das kumulierte Wachstum steht direkt über den täglichen Zugängen, aus denen es besteht, sodass beide gegeneinander lesbar sind: stetiger organischer Zuwachs sieht ganz anders aus als ein abrupter, kurzlebiger Ausschlag. Wo dieser Unterschied messbar ist, wird er als Wachstumsauthentizität ausgewiesen.

1223344412020-022023-042026-06
Major 2Minor 6Patch 52

Jeder Punkt umfasst 6 Tage.

OpenSSF Scorecard 6.3 / 10
6.3Gesamtwert

Unabhängige, werkzeugneutrale Sicherheitsbewertung durch das quelloffene OpenSSF Scorecard. Jede Prüfung honoriert eine Sicherheits-Praxis, nicht das Werkzeug eines bestimmten Anbieters. Prüfungen, die Scorecard nicht ermitteln konnte, sind mit k. A. markiert und vom Sicherheitswert ausgeschlossen (nie als null gezählt).Scorecard v5.5.0 · 2026-07-27 06:45 UTC

10Binary-Artifactsno binaries found in the repo
0Branch-Protectionbranch protection not enabled on development/release branches
4CI-Tests5 out of 12 merged PRs checked by a CI test -- score normalized to 4
0CII-Best-Practicesno effort to earn an OpenSSF best practices badge detected
3Code-ReviewFound 4/12 approved changesets -- score normalized to 3
10Contributorsproject has 3 contributing companies or organizations -- score normalized to 10
10Dangerous-Workflowno dangerous workflow patterns detected
10Dependency-Update-Toolupdate tool detected
0Fuzzingproject is not fuzzed
10Licenselicense file detected
10Maintained30 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 10
10Packagingpackaging workflow detected
7Pinned-Dependenciesdependency not pinned by hash detected -- score normalized to 7
0SASTSAST tool is not run on all commits -- score normalized to 0
10Security-Policysecurity policy file detected
k. A.Signed-Releasesno releases found
9Token-Permissionsdetected GitHub workflow tokens with excessive permissions
0Vulnerabilities17 existing vulnerabilities detected
Direkte Abhängigkeiten 41
RegistryPaketVersionsvorgabeManifest
PyPIdjango==5.2.15pyproject.toml
PyPIpsycopg==3.3.4pyproject.toml
PyPIdjango-extensions==4.1pyproject.toml
PyPIdj-database-url==3.1.2pyproject.toml
PyPIgunicorn==26.0.0pyproject.toml
PyPIpython-dotenv==1.2.2pyproject.toml
PyPIdbca-utils==2.2.0pyproject.toml
PyPIdjango-fsm==2.8.1pyproject.toml
PyPIdjango-fsm-log==3.1.0pyproject.toml
PyPIdjango-fsm-admin-maintained==1.2.6pyproject.toml
PyPIpython-dateutil==2.9.0.post0pyproject.toml
PyPIpython-slugify==8.0.4pyproject.toml
PyPIdjango-filter==25.2pyproject.toml
PyPIdjango-polymorphic==4.11.5pyproject.toml
PyPIdjango-reversion==6.2.0pyproject.toml
PyPIdjango-crispy-forms==2.6pyproject.toml
PyPIxmltodict==1.0.4pyproject.toml
PyPIpandas==3.0.3pyproject.toml
PyPIrequests==2.34.2pyproject.toml
PyPIpytz==2026.2pyproject.toml
PyPIdjango-select2==8.4.1pyproject.toml
PyPIdjango-geojson==4.2.0pyproject.toml
PyPIdjango-import-export==4.4.1pyproject.toml
PyPIdjango-export-download==0.2.3pyproject.toml
PyPIpillow==12.2.0pyproject.toml
PyPIwhitenoise==6.12.0pyproject.toml
PyPIphonenumbers==9.0.32pyproject.toml
PyPIdjango-phonenumber-field==8.4.0pyproject.toml
PyPImssql-django==1.7.2pyproject.toml
PyPIwebtemplate-dbca==1.8.3pyproject.toml
PyPIdjango-storages==1.14.6pyproject.toml
PyPIdjango-grappelli==4.0.4pyproject.toml
PyPIdjango-nested-admin==4.1.6pyproject.toml
PyPIdjango-bootstrap4==26.1pyproject.toml
PyPIdjango-easy-select2==1.5.8pyproject.toml
PyPIsentry-sdk==2.62.0pyproject.toml
PyPIpython-docx==1.2.0pyproject.toml
PyPIsetuptools==80.10.2pyproject.toml
PyPIopenpyxl==3.1.5pyproject.toml
PyPIxlwt==1.3.0pyproject.toml
PyPIdjango-leaflet==0.33.0pyproject.toml
Alle Abhängigkeiten 196

Vollständig aufgelöster Abhängigkeitssatz aus dem GitHub-Abhängigkeitsgraphen: 69 direkte und 127 indirekte (transitive) Pakete. Die transitive Hülle ist vollständig, wenn das Repository eine Lockfile eincheckt.

RegistryPaketVersionBeziehung
PyPIdbca-utils2.1.5direkt
PyPIdbca-utils2.2.0direkt
PyPIdj-database-url3.0.1direkt
PyPIdj-database-url3.1.2direkt
PyPIdjango4.2.29direkt
PyPIdjango5.2.15direkt
PyPIdjango-bootstrap424.1direkt
PyPIdjango-bootstrap426.1direkt
PyPIdjango-crispy-forms1.14.0direkt
PyPIdjango-crispy-forms2.6direkt
PyPIdjango-easy-select21.5.8direkt
PyPIdjango-export-download0.2.3direkt
PyPIdjango-extensions3.2.3direkt
PyPIdjango-extensions4.1direkt
PyPIdjango-filter24.1direkt
PyPIdjango-filter25.2direkt
PyPIdjango-fsm2.8.1direkt
PyPIdjango-fsm-admin-maintained1.2.6direkt
PyPIdjango-fsm-log3.1.0direkt
PyPIdjango-geojson4.0.0direkt
PyPIdjango-geojson4.2.0direkt
PyPIdjango-grappelli3.0.8direkt
PyPIdjango-grappelli4.0.4direkt
PyPIdjango-import-export3.3.7direkt
PyPIdjango-import-export4.4.1direkt
PyPIdjango-leaflet0.33.0direkt
PyPIdjango-nested-admin4.1.6direkt
PyPIdjango-phonenumber-field7.3.0direkt
PyPIdjango-phonenumber-field8.4.0direkt
PyPIdjango-polymorphic3.1.0direkt
PyPIdjango-polymorphic4.11.5direkt
PyPIdjango-reversion5.0.12direkt
PyPIdjango-reversion6.2.0direkt
PyPIdjango-select28.4.1direkt
PyPIdjango-storages1.14.2direkt
PyPIdjango-storages1.14.6direkt
PyPIgunicorn23.0.0direkt
PyPIgunicorn26.0.0direkt
PyPImssql-django1.6direkt
PyPImssql-django1.7.2direkt
PyPIopenpyxl3.1.5direkt
PyPIpandas2.2.0direkt
PyPIpandas3.0.3direkt
PyPIphonenumbers9.0.14direkt
PyPIphonenumbers9.0.32direkt
PyPIpillow12.1.1direkt
PyPIpillow12.2.0direkt
PyPIpsycopg3.2.12direkt
PyPIpsycopg3.3.4direkt
PyPIpython-dateutil2.9.0direkt
PyPIpython-dateutil2.9.0.post0direkt
PyPIpython-docx1.2.0direkt
PyPIpython-dotenv1.2.1direkt
PyPIpython-dotenv1.2.2direkt
PyPIpython-slugify8.0.4direkt
PyPIpytz2025.2direkt
PyPIpytz2026.2direkt
PyPIrequests2.32.5direkt
PyPIrequests2.34.2direkt
PyPIsentry-sdk2.44.0direkt
PyPIsentry-sdk2.62.0direkt
PyPIsetuptools80.10.2direkt
PyPIwebtemplate-dbca1.5.1direkt
PyPIwebtemplate-dbca1.8.3direkt
PyPIwhitenoise6.12.0direkt
PyPIwhitenoise6.8.2direkt
PyPIxlwt1.3.0direkt
PyPIxmltodict0.13.0direkt
PyPIxmltodict1.0.4direkt
PyPIalabaster0.7.16indirekt
PyPIasgiref3.11.1indirekt
PyPIasttokens3.0.1indirekt
PyPIazure-core1.38.1indirekt
PyPIazure-core1.41.0indirekt
PyPIazure-storage-blob12.28.0indirekt
PyPIazure-storage-blob12.30.0indirekt
PyPIbabel2.18.0indirekt
PyPIbeautifulsoup44.14.3indirekt
PyPIbeautifulsoup44.15.0indirekt
PyPIblack24.10.0indirekt
PyPIbrotli1.2.0indirekt
PyPIcertifi2026.1.4indirekt
PyPIcertifi2026.6.17indirekt
PyPIcffi2.0.0indirekt
PyPIcfgv3.5.0indirekt
PyPIcharset-normalizer3.4.4indirekt
PyPIcharset-normalizer3.4.7indirekt
PyPIclick8.3.1indirekt
PyPIclick8.4.1indirekt
PyPIcolorama0.4.6indirekt
PyPIcoverage7.13.4indirekt
PyPIcoverage7.14.1indirekt
PyPIcryptography46.0.5indirekt
PyPIcryptography49.0.0indirekt
PyPIdecorator5.2.1indirekt
PyPIdecorator5.3.1indirekt
PyPIdefusedxml0.7.1indirekt
PyPIdeptry0.25.1indirekt
PyPIdiff-match-patch20241021indirekt
PyPIdistlib0.4.0indirekt
PyPIdistlib0.4.3indirekt
PyPIdjango-appconf1.2.0indirekt
PyPIdjango-debug-toolbar4.4.6indirekt
PyPIdjango-debug-toolbar6.3.0indirekt
PyPIdjango-map-widgets0.4.2indirekt
PyPIdjango-stubs6.0.5indirekt
PyPIdjango-stubs-ext6.0.5indirekt
PyPIdjango-tables22.7.0indirekt
PyPIdocutils0.21.2indirekt
PyPIet-xmlfile2.0.0indirekt
PyPIexecuting2.2.1indirekt
PyPIfilelock3.24.2indirekt
PyPIfilelock3.29.4indirekt
PyPIidentify2.6.16indirekt
PyPIidentify2.6.19indirekt
PyPIidna3.11indirekt
PyPIidna3.18indirekt
PyPIimagesize1.4.1indirekt
PyPIipdb0.13.13indirekt
PyPIipython9.10.0indirekt
PyPIipython9.14.1indirekt
PyPIipython-pygments-lexers1.1.1indirekt
PyPIisodate0.7.2indirekt
PyPIjedi0.19.2indirekt
PyPIjedi0.20.0indirekt
PyPIjinja23.1.6indirekt
PyPIlxml6.0.2indirekt
PyPIlxml6.1.1indirekt
PyPImarkuppy1.18indirekt
PyPImarkupsafe3.0.3indirekt
PyPImatplotlib-inline0.2.1indirekt
PyPImatplotlib-inline0.2.2indirekt
PyPImypy-extensions1.1.0indirekt
PyPInodeenv1.10.0indirekt
PyPInumpy1.26.4indirekt
PyPInumpy2.4.6indirekt
PyPIodfpy1.4.1indirekt
PyPIpackaging26.0indirekt
PyPIpackaging26.2indirekt
PyPIparso0.8.6indirekt
PyPIparso0.8.7indirekt
PyPIpathspec1.0.4indirekt
PyPIpexpect4.9.0indirekt
PyPIplatformdirs4.10.0indirekt
PyPIplatformdirs4.9.2indirekt
PyPIpre-commit3.8.0indirekt
PyPIpre-commit4.6.0indirekt
PyPIprompt-toolkit3.0.52indirekt
PyPIpsutil7.2.2indirekt
PyPIpsycopg-binary3.2.12indirekt
PyPIpsycopg-binary3.3.4indirekt
PyPIpsycopg-pool3.3.0indirekt
PyPIpsycopg-pool3.3.1indirekt
PyPIptyprocess0.7.0indirekt
PyPIpure-eval0.2.3indirekt
PyPIpycparser3.0indirekt
PyPIpygments2.19.2indirekt
PyPIpygments2.20.0indirekt
PyPIpyodbc5.3.0indirekt
PyPIpython-discovery1.4.2indirekt
PyPIpython-monkey-business1.1.0indirekt
PyPIpyyaml6.0.3indirekt
PyPIrequirements-parser0.13.1indirekt
PyPIruff0.14.14indirekt
PyPIsix1.17.0indirekt
PyPIsnowballstemmer3.0.1indirekt
PyPIsoupsieve2.8.3indirekt
PyPIsoupsieve2.8.4indirekt
PyPIsphinx7.4.7indirekt
PyPIsphinxcontrib-applehelp2.0.0indirekt
PyPIsphinxcontrib-devhelp2.0.0indirekt
PyPIsphinxcontrib-htmlhelp2.1.0indirekt
PyPIsphinxcontrib-jsmath1.0.1indirekt
PyPIsphinxcontrib-qthelp2.0.0indirekt
PyPIsphinxcontrib-serializinghtml2.0.0indirekt
PyPIsqlparse0.5.5indirekt
PyPIstack-data0.6.3indirekt
PyPItablib3.5.0indirekt
PyPItablib3.9.0indirekt
PyPItext-unidecode1.3indirekt
PyPItomli2.4.1indirekt
PyPItraitlets5.14.3indirekt
PyPItraitlets5.15.1indirekt
PyPItypes-pyyaml6.0.12.20260518indirekt
PyPItyping-extensions4.15.0indirekt
PyPItzdata2025.3indirekt
PyPItzdata2026.2indirekt
PyPIurllib32.6.3indirekt
PyPIurllib32.7.0indirekt
PyPIvirtualenv20.38.0indirekt
PyPIvirtualenv21.5.1indirekt
PyPIvulture2.14indirekt
PyPIwastd2.3.0indirekt
PyPIwcwidth0.6.0indirekt
PyPIwcwidth0.8.1indirekt
PyPIxlrd2.0.2indirekt
Abhängigkeits-Advisories 15

Dieses Repository veröffentlicht kein vom Index auflösbares Paket, daher wurde sein eigener Abhängigkeitsgraph bewertet – 196 Pakete, darunter auch Entwicklungs- und Test-Pins, die nie ausgeliefert werden: 15 tragen bekannte Advisories, davon 7 direkte.

PaketVersionBeziehungSchweregradAdvisoriesBehoben in
django4.2.29direktkritisch106.0.4
pillow12.1.1direktkritisch3612.3.0
pillow12.2.0direktkritisch2612.3.0
black24.10.0indirektkritisch326.3.1
cryptography46.0.5indirektkritisch548.0.1
click8.3.1indirekthoch18.3.3
lxml6.0.2indirekthoch26.1.0
soupsieve2.8.3indirekthoch42.8.4
urllib32.6.3indirekthoch42.7.0
django5.2.15direktmittel36.0.7
python-dotenv1.2.1direktmittel21.2.2
requests2.32.5direktmittel22.33.0
setuptools80.10.2direktmittel283.0.0
idna3.11indirektmittel23.15
pygments2.19.2indirektniedrig22.20.0

Ein Advisory bedeutet, dass die im Abhängigkeitsgraphen erfasste Version in den betroffenen Bereich eines Advisories fällt. Erreichbarkeit wird nicht analysiert, und der Graph enthält Entwicklungs- und Test-Pins — ein Fund kann das Werkzeug betreffen und nicht die ausgelieferte Software.

JSON-Rohbericht maschinenlesbar
{
  "data": {
    "repo": {
      "topics": [
        "biodiversity",
        "conservation-bio",
        "marine-species",
        "strandings",
        "marine-wildlife-incidents",
        "marine-turtles"
      ],
      "is_fork": false,
      "size_kb": 99412,
      "has_wiki": false,
      "homepage": "https://dbca-wa.github.io/wastd/",
      "languages": {
        "CSS": 16573,
        "HTML": 704588,
        "Python": 1298165,
        "Dockerfile": 3364,
        "JavaScript": 185204
      },
      "pushed_at": "2026-07-27T00:43:24Z",
      "created_at": "2016-07-19T11:08:19Z",
      "owner_type": "Organization",
      "updated_at": "2026-07-17T02:39:03Z",
      "description": "Western Australian Sea Turtle and Strandings Database",
      "is_archived": false,
      "is_disabled": false,
      "license_spdx": "MIT",
      "default_branch": "main",
      "license_spdx_raw": "MIT",
      "primary_language": "Python",
      "significant_languages": [
        "Python",
        "HTML"
      ]
    },
    "owner": {
      "blog": "https://www.dbca.wa.gov.au/",
      "name": "Department of Biodiversity, Conservation and Attractions",
      "type": "Organization",
      "login": "dbca-wa",
      "company": null,
      "location": "Perth, Western Australia",
      "followers": 28,
      "avatar_url": "https://avatars.githubusercontent.com/u/16628708?v=4",
      "created_at": "2016-01-10T00:01:27Z",
      "is_verified": null,
      "public_repos": 234,
      "account_age_days": 3851
    },
    "license": {
      "state": "standard",
      "spdx_id": "MIT",
      "raw_spdx": "MIT",
      "file_present": true,
      "scorecard_found": true,
      "profile_has_license": true
    },
    "activity": {
      "releases": [
        {
          "tag": "v2.3.3",
          "kind": "patch",
          "published_at": "2026-07-17T02:38:58Z"
        },
        {
          "tag": "2.3.2",
          "kind": "patch",
          "published_at": "2026-07-13T01:47:42Z"
        },
        {
          "tag": "2.3.1",
          "kind": "patch",
          "published_at": "2026-06-30T05:45:39Z"
        },
        {
          "tag": "2.2.17",
          "kind": "patch",
          "published_at": "2026-06-09T06:18:49Z"
        },
        {
          "tag": "2.2.16",
          "kind": "patch",
          "published_at": "2026-05-10T13:19:43Z"
        },
        {
          "tag": "2.2.15",
          "kind": "patch",
          "published_at": "2026-03-15T07:43:45Z"
        },
        {
          "tag": "2.2.14",
          "kind": "patch",
          "published_at": "2026-03-02T12:42:28Z"
        },
        {
          "tag": "2.2.13",
          "kind": "patch",
          "published_at": "2026-02-22T06:21:17Z"
        },
        {
          "tag": "2.2.12",
          "kind": "patch",
          "published_at": "2026-02-17T03:26:32Z"
        },
        {
          "tag": "2.2.11",
          "kind": "patch",
          "published_at": "2026-01-13T13:21:40Z"
        },
        {
          "tag": "2.2.10",
          "kind": "patch",
          "published_at": "2026-01-07T06:32:29Z"
        },
        {
          "tag": "2.2.9",
          "kind": "patch",
          "published_at": "2025-12-11T04:48:38Z"
        },
        {
          "tag": "2.2.8",
          "kind": "patch",
          "published_at": "2025-12-04T12:59:46Z"
        },
        {
          "tag": "2.2.7",
          "kind": "patch",
          "published_at": "2025-11-30T12:32:37Z"
        },
        {
          "tag": "2.2.6",
          "kind": "patch",
          "published_at": "2025-11-17T09:43:45Z"
        },
        {
          "tag": "2.2.5",
          "kind": "patch",
          "published_at": "2025-09-26T05:39:47Z"
        },
        {
          "tag": "2.2.4",
          "kind": "patch",
          "published_at": "2025-09-07T23:57:05Z"
        },
        {
          "tag": "2.2.3",
          "kind": "patch",
          "published_at": "2025-08-12T06:12:14Z"
        },
        {
          "tag": "2.2.2",
          "kind": "patch",
          "published_at": "2025-07-01T13:56:38Z"
        },
        {
          "tag": "2.2.1",
          "kind": "patch",
          "published_at": "2025-06-13T01:10:12Z"
        },
        {
          "tag": "2.2.0",
          "kind": "minor",
          "published_at": "2025-06-11T06:46:52Z"
        },
        {
          "tag": "2.1.8",
          "kind": "patch",
          "published_at": "2025-01-31T03:55:56Z"
        },
        {
          "tag": "2.1.7",
          "kind": "patch",
          "published_at": "2025-01-31T01:20:23Z"
        },
        {
          "tag": "2.1.6",
          "kind": "patch",
          "published_at": "2024-12-19T03:27:35Z"
        },
        {
          "tag": "2.1.5",
          "kind": "patch",
          "published_at": "2024-12-06T06:54:41Z"
        },
        {
          "tag": "2.1.4",
          "kind": "patch",
          "published_at": "2024-12-05T04:20:06Z"
        },
        {
          "tag": "2.1.3",
          "kind": "patch",
          "published_at": "2024-11-28T08:01:41Z"
        },
        {
          "tag": "2.1.2",
          "kind": "patch",
          "published_at": "2024-11-13T06:24:41Z"
        },
        {
          "tag": "2.1.1",
          "kind": "patch",
          "published_at": "2024-10-29T04:48:18Z"
        },
        {
          "tag": "2.1.0",
          "kind": "minor",
          "published_at": "2024-10-24T02:15:19Z"
        },
        {
          "tag": "2.0.8",
          "kind": "patch",
          "published_at": "2024-10-18T02:34:13Z"
        },
        {
          "tag": "2.0.7",
          "kind": "patch",
          "published_at": "2024-10-14T04:13:28Z"
        },
        {
          "tag": "2.0.6",
          "kind": "patch",
          "published_at": "2024-10-07T06:25:03Z"
        },
        {
          "tag": "2.0.5",
          "kind": "patch",
          "published_at": "2024-09-27T04:32:22Z"
        },
        {
          "tag": "2.0.4",
          "kind": "patch",
          "published_at": "2024-08-15T03:05:34Z"
        },
        {
          "tag": "2.0.3",
          "kind": "patch",
          "published_at": "2024-05-08T05:55:23Z"
        },
        {
          "tag": "2.0.2",
          "kind": "patch",
          "published_at": "2024-05-03T07:25:27Z"
        },
        {
          "tag": "2.0.1",
          "kind": "patch",
          "published_at": "2024-03-25T05:21:47Z"
        },
        {
          "tag": "2.0.0",
          "kind": "major",
          "published_at": "2024-01-25T04:21:54Z"
        },
        {
          "tag": "1.0.8",
          "kind": "patch",
          "published_at": "2023-12-17T23:41:09Z"
        },
        {
          "tag": "1.0.7",
          "kind": "patch",
          "published_at": "2023-10-19T23:36:07Z"
        },
        {
          "tag": "1.0.5",
          "kind": "patch",
          "published_at": "2023-09-18T05:50:36Z"
        },
        {
          "tag": "1.0.4",
          "kind": "patch",
          "published_at": "2023-09-14T02:29:33Z"
        },
        {
          "tag": "1.0.3",
          "kind": "patch",
          "published_at": "2023-08-22T05:31:25Z"
        },
        {
          "tag": "1.0.2",
          "kind": "patch",
          "published_at": "2023-08-21T03:49:19Z"
        },
        {
          "tag": "1.0.1",
          "kind": "patch",
          "published_at": "2023-08-11T07:44:27Z"
        },
        {
          "tag": "1.0.0",
          "kind": "major",
          "published_at": "2023-07-28T07:59:52Z"
        },
        {
          "tag": "0.56.1",
          "kind": "patch",
          "published_at": "2022-02-10T06:01:33Z"
        },
        {
          "tag": "0.56.0",
          "kind": "minor",
          "published_at": "2022-02-10T04:55:39Z"
        },
        {
          "tag": "0.54.6",
          "kind": "patch",
          "published_at": "2021-10-25T03:30:26Z"
        },
        {
          "tag": "0.54.3",
          "kind": "patch",
          "published_at": "2021-10-22T08:47:21Z"
        },
        {
          "tag": "0.54.1",
          "kind": "patch",
          "published_at": "2021-10-22T07:52:30Z"
        },
        {
          "tag": "0.54.0",
          "kind": "minor",
          "published_at": "2021-10-22T07:52:30Z"
        },
        {
          "tag": "0.53.3",
          "kind": "patch",
          "published_at": "2021-10-18T05:18:00Z"
        },
        {
          "tag": "0.53.0",
          "kind": "minor",
          "published_at": "2021-08-10T08:19:30Z"
        },
        {
          "tag": "0.50.8",
          "kind": "patch",
          "published_at": "2021-03-03T06:42:09Z"
        },
        {
          "tag": "0.50.7",
          "kind": "patch",
          "published_at": "2021-03-02T09:26:07Z"
        },
        {
          "tag": "0.50.6",
          "kind": "patch",
          "published_at": "2021-03-02T09:12:10Z"
        },
        {
          "tag": "0.50.5",
          "kind": "patch",
          "published_at": "2021-03-02T08:42:36Z"
        },
        {
          "tag": "0.50.4",
          "kind": "patch",
          "published_at": "2021-03-02T08:09:58Z"
        },
        {
          "tag": "0.50.2",
          "kind": "patch",
          "published_at": "2021-03-02T07:26:32Z"
        },
        {
          "tag": "0.50.1",
          "kind": "patch",
          "published_at": "2021-03-02T06:13:42Z"
        },
        {
          "tag": "0.50.0",
          "kind": "minor",
          "published_at": "2021-03-02T05:57:23Z"
        },
        {
          "tag": "0.32.1",
          "kind": "patch",
          "published_at": "2019-07-17T09:23:55Z"
        },
        {
          "tag": "0.32.0",
          "kind": "minor",
          "published_at": "2019-07-17T09:23:55Z"
        },
        {
          "tag": "0.31.5",
          "kind": "patch",
          "published_at": "2019-07-17T09:23:55Z"
        },
        {
          "tag": "0.31.4",
          "kind": "patch",
          "published_at": "2019-07-17T09:14:50Z"
        },
        {
          "tag": "0.31.3",
          "kind": "patch",
          "published_at": "2019-07-17T08:46:58Z"
        },
        {
          "tag": "0.31.2",
          "kind": "patch",
          "published_at": "2019-07-17T08:34:09Z"
        },
        {
          "tag": "0.31.1",
          "kind": "patch",
          "published_at": "2019-07-17T04:26:55Z"
        },
        {
          "tag": "0.31.0",
          "kind": "minor",
          "published_at": "2019-07-16T09:51:08Z"
        },
        {
          "tag": "0.30.1",
          "kind": "patch",
          "published_at": "2019-07-15T08:16:17Z"
        },
        {
          "tag": "0.30.0",
          "kind": "minor",
          "published_at": "2019-07-12T03:00:05Z"
        },
        {
          "tag": "0.29.10",
          "kind": "patch",
          "published_at": "2019-07-11T10:08:26Z"
        },
        {
          "tag": "0.29.9",
          "kind": "patch",
          "published_at": "2019-07-11T02:43:59Z"
        },
        {
          "tag": "0.29.8",
          "kind": "patch",
          "published_at": "2019-07-11T01:32:34Z"
        },
        {
          "tag": "0.29.7",
          "kind": "patch",
          "published_at": "2019-07-09T06:21:57Z"
        },
        {
          "tag": "0.29.6",
          "kind": "patch",
          "published_at": "2019-07-09T05:43:07Z"
        },
        {
          "tag": "0.29.5",
          "kind": "patch",
          "published_at": "2019-07-09T05:22:14Z"
        },
        {
          "tag": "0.29.4",
          "kind": "patch",
          "published_at": "2019-07-09T03:47:53Z"
        },
        {
          "tag": "0.29.3",
          "kind": "patch",
          "published_at": "2019-07-09T03:42:22Z"
        },
        {
          "tag": "0.29.2",
          "kind": "patch",
          "published_at": "2019-07-02T09:37:50Z"
        },
        {
          "tag": "0.29.1",
          "kind": "patch",
          "published_at": "2019-07-02T09:16:01Z"
        },
        {
          "tag": "0.28.1",
          "kind": "patch",
          "published_at": "2019-06-24T04:16:13Z"
        },
        {
          "tag": "0.28.0",
          "kind": "minor",
          "published_at": "2019-06-21T14:12:25Z"
        },
        {
          "tag": "0.27.4",
          "kind": "patch",
          "published_at": "2019-06-21T09:04:10Z"
        },
        {
          "tag": "0.27.3",
          "kind": "patch",
          "published_at": "2019-06-21T06:06:21Z"
        },
        {
          "tag": "0.27.1",
          "kind": "patch",
          "published_at": "2019-06-21T05:11:13Z"
        },
        {
          "tag": "0.27.0",
          "kind": "minor",
          "published_at": "2019-06-21T04:40:07Z"
        },
        {
          "tag": "0.26.6",
          "kind": "patch",
          "published_at": "2019-06-21T04:02:24Z"
        },
        {
          "tag": "0.26.4",
          "kind": "patch",
          "published_at": "2019-06-18T08:22:01Z"
        }
      ],
      "recent_commits": [
        {
          "oid": "68af0e72ca8129a701311eeee09ea6d68d107d44",
          "body": "Sync develop with main (2.3.3)",
          "is_bot": false,
          "headline": "Merge pull request #810 from dbca-wa/develop",
          "author_name": "LizzzzHF",
          "author_login": "LizzzzHFFF",
          "committed_at": "2026-07-17T02:38:58Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "9e74ab6059e7ce846b9dfe46ae4a37375accf758",
          "body": "Fix/version bump",
          "is_bot": false,
          "headline": "Merge pull request #807 from LizzzzHFFF/fix/version-bump",
          "author_name": "LizzzzHF",
          "author_login": "LizzzzHFFF",
          "committed_at": "2026-07-16T01:29:55Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "62dfa3dc84b0f1e09a6c49583ff5bbdb71c61e84",
          "body": null,
          "is_bot": false,
          "headline": "Bump version to 2.3.3",
          "author_name": "Liz Huangfu",
          "author_login": null,
          "committed_at": "2026-07-16T01:26:32Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "f9629824126d8d9cd73e980cf7102da410d2e557",
          "body": null,
          "is_bot": false,
          "headline": "Remove obsolete PIT tag search note",
          "author_name": "Liz Huangfu",
          "author_login": null,
          "committed_at": "2026-07-16T01:26:32Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "ee9de22ac2f799c0d970bbdf31a8734536209bfe",
          "body": "Fix/t038 Implement Module-Based Access Control",
          "is_bot": false,
          "headline": "Merge pull request #806 from LizzzzHFFF/fix/T038",
          "author_name": "LizzzzHF",
          "author_login": "LizzzzHFFF",
          "committed_at": "2026-07-16T00:59:18Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "97ed391733ac80eca1981c8d0977a62911850444",
          "body": null,
          "is_bot": false,
          "headline": "Add module access middleware and navigation controls",
          "author_name": "Liz Huangfu",
          "author_login": null,
          "committed_at": "2026-07-15T03:20:54Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "5c900dadfb48e7d114604afd2c87fc873a7d21d1",
          "body": null,
          "is_bot": false,
          "headline": "Add module access controls for operational modules",
          "author_name": "Liz Huangfu",
          "author_login": null,
          "committed_at": "2026-07-14T08:11:20Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "00ae685d24569528b16df8a66285b23981ab7b2a",
          "body": "Promote develop to main",
          "is_bot": false,
          "headline": "Merge pull request #805 from dbca-wa/develop",
          "author_name": "LizzzzHF",
          "author_login": "LizzzzHFFF",
          "committed_at": "2026-07-13T01:47:42Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "9a6e5c6504204de914fbf53e578bb4737e782d23",
          "body": "Restore third admin dashboard column",
          "is_bot": false,
          "headline": "Merge pull request #803 from LizzzzHFFF/fix/T059",
          "author_name": "LizzzzHF",
          "author_login": "LizzzzHFFF",
          "committed_at": "2026-07-10T06:30:50Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "f7bbeb9e429f02945cf0398cfcdeb7679adda08a",
          "body": "Fix/t004 clean",
          "is_bot": false,
          "headline": "Merge pull request #802 from LizzzzHFFF/fix/T004-clean",
          "author_name": "LizzzzHF",
          "author_login": "LizzzzHFFF",
          "committed_at": "2026-07-10T06:30:29Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "e06d4de3157f53c9ca8e494f69e09072e00c917e",
          "body": "Fix/t003",
          "is_bot": false,
          "headline": "Merge pull request #801 from LizzzzHFFF/fix/T003",
          "author_name": "LizzzzHF",
          "author_login": "LizzzzHFFF",
          "committed_at": "2026-07-10T06:30:10Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "0f141945bb013b00974429a0a9f5346087717305",
          "body": null,
          "is_bot": false,
          "headline": "Restore third admin dashboard column",
          "author_name": "Liz Huangfu",
          "author_login": null,
          "committed_at": "2026-07-10T05:57:51Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "8557b2225419df10e5941e0ac76e526b2b4f40db",
          "body": null,
          "is_bot": false,
          "headline": "Simplify DUD tag status dropdown labels",
          "author_name": "Liz Huangfu",
          "author_login": null,
          "committed_at": "2026-07-09T05:29:43Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "1709bda361280ef4126a43ff607a1ff2122d02d9",
          "body": null,
          "is_bot": false,
          "headline": "Add filters to DUD tag management",
          "author_name": "Liz Huangfu",
          "author_login": null,
          "committed_at": "2026-07-09T04:04:32Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "93937881d01255d5ecbbfd6e4217ab4715eb21d2",
          "body": null,
          "is_bot": false,
          "headline": "Refine issue location autocomplete implementation",
          "author_name": "Liz Huangfu",
          "author_login": null,
          "committed_at": "2026-07-08T03:05:45Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "db4c7ac2955313ec73359bec8f4032a5ae75fc5f",
          "body": null,
          "is_bot": false,
          "headline": "Add issue location filtering to tag curation pages",
          "author_name": "Liz Huangfu",
          "author_login": null,
          "committed_at": "2026-07-08T02:59:17Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "3a69b9344e3c898e96b9f8fb6247db17182294e7",
          "body": null,
          "is_bot": false,
          "headline": "Add issue location autocomplete to tag register",
          "author_name": "Liz Huangfu",
          "author_login": null,
          "committed_at": "2026-07-08T02:53:08Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "47c16c49c5061c72fbf3ac0be318ce13361e952a",
          "body": "Fix/t008 Added year validation for Volunteer users",
          "is_bot": false,
          "headline": "Merge pull request #790 from LizzzzHFFF/fix/t008",
          "author_name": "LizzzzHF",
          "author_login": "LizzzzHFFF",
          "committed_at": "2026-07-07T01:02:09Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "0a1c30c36602bc75847ae648db5f99e1eb4b5e7a",
          "body": "Fix/T058 Resolved an issue preventing the Flipper tag management tool from loading",
          "is_bot": false,
          "headline": "Merge pull request #800 from LizzzzHFFF/fix/T058",
          "author_name": "LizzzzHF",
          "author_login": "LizzzzHFFF",
          "committed_at": "2026-07-07T01:01:44Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "fa9496067524bb4f5319ef4306cf7104eb3c851e",
          "body": null,
          "is_bot": false,
          "headline": "Handle empty tag IDs in dud tag management view",
          "author_name": "Liz Huangfu",
          "author_login": null,
          "committed_at": "2026-07-06T07:59:31Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "efa4f2de3595ba9701183dd7a0e314c53d2dcbe9",
          "body": null,
          "is_bot": false,
          "headline": "Handle empty flipper tag IDs in flipper tag list",
          "author_name": "Liz Huangfu",
          "author_login": null,
          "committed_at": "2026-07-06T06:47:49Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "5978d962c3c2e9a593127b4244a89dcfd57a3729",
          "body": "Add LoginRequiredMixin to API resource classes to require auth, remove django_table2 (unused)",
          "is_bot": false,
          "headline": "Merge pull request #792 from ropable/main",
          "author_name": "LizzzzHF",
          "author_login": "LizzzzHFFF",
          "committed_at": "2026-07-06T00:54:01Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "c0d9a984ba46509b579abe9c9fd82395179d3c09",
          "body": "…1.23-and-lt-0.12.0'",
          "is_bot": false,
          "headline": "Merge remote-tracking branch 'upstream/dependabot/uv/uv-build-gte-0.1…",
          "author_name": "Ashley Felton",
          "author_login": "ropable",
          "committed_at": "2026-07-03T03:39:18Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "048a44ae4019972f99b3506e48d810a2c5c64c35",
          "body": null,
          "is_bot": false,
          "headline": "Add LoginRequiredMixin to API resource classes",
          "author_name": "Ashley Felton",
          "author_login": "ropable",
          "committed_at": "2026-07-03T03:02:15Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "635989804ef788847689ee087c9cf5c5fa8138a0",
          "body": null,
          "is_bot": false,
          "headline": "Simplify test settings",
          "author_name": "Ashley Felton",
          "author_login": "ropable",
          "committed_at": "2026-07-03T02:54:50Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "d8adfc1f428a17220657cfd79aed3f542d8030c2",
          "body": null,
          "is_bot": false,
          "headline": "Amend comment re access control for Resource classes.",
          "author_name": "Ashley Felton",
          "author_login": "ropable",
          "committed_at": "2026-07-03T01:18:07Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "e7ac4c1a1171d56f79ed823e769e6ce283fae69d",
          "body": "Add PX to old flipper tag state option",
          "is_bot": false,
          "headline": "Merge pull request #791 from LizzzzHFFF/fix/t006",
          "author_name": "LizzzzHF",
          "author_login": "LizzzzHFFF",
          "committed_at": "2026-07-02T07:01:11Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "f78ba3440459da2099005bc631d11b14a11792a0",
          "body": null,
          "is_bot": false,
          "headline": "deptry configuration",
          "author_name": "Ashley Felton",
          "author_login": "ropable",
          "committed_at": "2026-07-02T06:17:12Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "ac1f65384f17ab63c74c3ed39fbe7bb89cbd40e7",
          "body": null,
          "is_bot": false,
          "headline": "Add PX to old flipper tag state option",
          "author_name": "Liz Huangfu",
          "author_login": null,
          "committed_at": "2026-07-02T05:12:13Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "8c19c77323b62d600ab824a93243d65bd93a45e1",
          "body": "Replace manual form save with auto-save.\nRemoved the \"Save filled data\" button from the TRT Data Entry form.",
          "is_bot": false,
          "headline": "Merge pull request #788 from LizzzzHFFF/fix/t020",
          "author_name": "LizzzzHF",
          "author_login": "LizzzzHFFF",
          "committed_at": "2026-07-02T02:26:34Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "43fbfe7c21c9ce7de7d2b15757f647e799c2eefb",
          "body": "…ons/checkout-7.0.0'",
          "is_bot": false,
          "headline": "Merge remote-tracking branch 'upstream/dependabot/github_actions/acti…",
          "author_name": "Ashley Felton",
          "author_login": "ropable",
          "committed_at": "2026-07-02T01:45:33Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "481157e2bbd4c2fc5f43e5ccda93bbcbf49282ac",
          "body": null,
          "is_bot": false,
          "headline": "Merge remote-tracking branch 'upstream/main'",
          "author_name": "Ashley Felton",
          "author_login": "ropable",
          "committed_at": "2026-07-02T01:45:13Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "acc43f01c38f724306e4588781fce3a177f3db80",
          "body": null,
          "is_bot": false,
          "headline": "Fix copypasta config",
          "author_name": "Ashley Felton",
          "author_login": "ropable",
          "committed_at": "2026-07-02T01:44:21Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "bf500783e0d3328ef242f84660f72ff708051f67",
          "body": "Sync develop with main (2.3.1)",
          "is_bot": false,
          "headline": "Merge pull request #789 from LizzzzHFFF/develop",
          "author_name": "LizzzzHF",
          "author_login": "LizzzzHFFF",
          "committed_at": "2026-07-02T01:32:23Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "4a9b5b0ff9747a33a0d8772e2a5f5e680a143ac4",
          "body": "Auto populate old flipper tag check after tag search",
          "is_bot": false,
          "headline": "Merge pull request #787 from LizzzzHFFF/fix/t024-old-flipper-tag-check",
          "author_name": "LizzzzHF",
          "author_login": "LizzzzHFFF",
          "committed_at": "2026-07-02T01:18:17Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "c1bb463e59f60a38a67483dd29102d48703b855d",
          "body": null,
          "is_bot": false,
          "headline": "Restrict volunteer observation entry to current year",
          "author_name": "Liz Huangfu",
          "author_login": null,
          "committed_at": "2026-07-01T08:15:10Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "6670f2c3e71c98d3588f05af4baa678edcce147b",
          "body": null,
          "is_bot": false,
          "headline": "Fix repeated restore prompt issue by adding prompt flag",
          "author_name": "Liz Huangfu",
          "author_login": null,
          "committed_at": "2026-07-01T08:10:41Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "f7b88c35002b825418814eb37a51a1235ae35d1a",
          "body": null,
          "is_bot": false,
          "headline": "Replace manual form save with auto-save",
          "author_name": "Liz Huangfu",
          "author_login": null,
          "committed_at": "2026-07-01T05:15:55Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "64224cb27d3e97ef524bdc2bf9fc75a70c5158f5",
          "body": null,
          "is_bot": false,
          "headline": "Auto populate old flipper tag check after tag search",
          "author_name": "Liz Huangfu",
          "author_login": null,
          "committed_at": "2026-06-30T07:38:19Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "ef093e6fb3ed47882556a6273997ba22b595bb5c",
          "body": "Fix PIT tag side autofill and validation",
          "is_bot": false,
          "headline": "Merge pull request #786 from LizzzzHFFF/fix/t035-pit-tag-side",
          "author_name": "Rick Wang",
          "author_login": "RickWangPerth",
          "committed_at": "2026-06-30T05:45:39Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "0cc9da8b5fb066962a435f9dafe5ac01ba96f3b8",
          "body": null,
          "is_bot": false,
          "headline": "Update production kustomize configuration",
          "author_name": "Liz Huangfu",
          "author_login": null,
          "committed_at": "2026-06-30T05:41:05Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "32fc7751cbf5d7b5ad490a23c4457fc6dacc2408",
          "body": "-                If you have to use the  RIGHT one, please change the auto filled PIT tag to right in the form manually.",
          "is_bot": false,
          "headline": "delete the Note:For PIT tag search, please use the LEFT one.",
          "author_name": "Liz Huangfu",
          "author_login": null,
          "committed_at": "2026-06-30T02:11:06Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "f58912e8b02e5ffe4fd635211fb18e9238ad0a19",
          "body": null,
          "is_bot": false,
          "headline": "change the Note",
          "author_name": "Liz Huangfu",
          "author_login": null,
          "committed_at": "2026-06-30T01:48:57Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "62701ce20a7d2d4aa71693797115402f9ce76e69",
          "body": null,
          "is_bot": false,
          "headline": "fix PIT tag side validation and autofill",
          "author_name": "Liz Huangfu",
          "author_login": null,
          "committed_at": "2026-06-30T01:37:35Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "c0fa9e748addbaee13d311e69c66e3a916a3801a",
          "body": null,
          "is_bot": false,
          "headline": "Fix PIT tag side population for turtle recapture search",
          "author_name": "Liz Huangfu",
          "author_login": null,
          "committed_at": "2026-06-29T07:45:09Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "acbd49f42cf0852910cbc7eead48ab5745f5d934",
          "body": null,
          "is_bot": false,
          "headline": "Update application version to 2.3.1",
          "author_name": "Liz Huangfu",
          "author_login": null,
          "committed_at": "2026-06-26T05:52:54Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "8213b00ee1c02405b9172ff0259200fc54d5cd34",
          "body": "…ables2 (unused)",
          "is_bot": false,
          "headline": "Add transitive dependencies as explicit requirements, remove django-t…",
          "author_name": "Ashley Felton",
          "author_login": "ropable",
          "committed_at": "2026-06-22T02:54:00Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "4f287f160970b5f46d99f76b2621ed7794ae5072",
          "body": "Updates the requirements on [uv-build](https://github.com/astral-sh/uv) to permit the latest version.\n- [Release notes](https://github.com/astral-sh/uv/releases)\n- [Changelog](https://github.com/astral-sh/uv/blob/main/CHANGELOG.md)\n- [Commits](https://github.com/astral-sh/uv/compare/0.11.16...0.11.23)\n\n---\nupdated-dependencies:\n- dependency-name: uv-build\n  dependency-version: 0.11.23\n  dependency-type: direct:development\n...\n\nSigned-off-by: dependabot[bot] <support@github.com>",
          "is_bot": true,
          "headline": "[python] Update uv-build requirement",
          "author_name": "dependabot[bot]",
          "author_login": "dependabot[bot]",
          "committed_at": "2026-06-20T13:33:18Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "ac53dbbb6b8b00a2c73d20001617c91ef4b7af21",
          "body": "Bumps [actions/checkout](https://github.com/actions/checkout) from 6.0.3 to 7.0.0.\n- [Release notes](https://github.com/actions/checkout/releases)\n- [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md)\n- [Commits](https://github.com/actions/checkout/compare/df4cb1c069e1874edd31b43\n[…]\n- dependency-name: actions/checkout\n  dependency-version: 7.0.0\n  dependency-type: direct:production\n  update-type: version-update:semver-major\n...\n\nSigned-off-by: dependabot[bot] <support@github.com>",
          "is_bot": true,
          "headline": "[actions] Bump actions/checkout from 6.0.3 to 7.0.0",
          "author_name": "dependabot[bot]",
          "author_login": "dependabot[bot]",
          "committed_at": "2026-06-20T13:32:07Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "c65063faa380a61495f2626b85fbd5f5806174c9",
          "body": null,
          "is_bot": false,
          "headline": "Merge remote-tracking branch 'upstream/main'",
          "author_name": "Ashley Felton",
          "author_login": "ropable",
          "committed_at": "2026-06-18T04:16:50Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "50ab6e31e1b315877e394b3b47c66fe7abeed34d",
          "body": null,
          "is_bot": false,
          "headline": "Add django-stubs to project (group=dev)",
          "author_name": "Ashley Felton",
          "author_login": "ropable",
          "committed_at": "2026-06-18T04:00:37Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "7852b72c3f7c7772a96d217664e477cc6d8afeeb",
          "body": "Fix django-leaflet marker issue",
          "is_bot": false,
          "headline": "Merge pull request #778 from ropable/main",
          "author_name": "Ashley Felton",
          "author_login": "ropable",
          "committed_at": "2026-06-16T06:00:39Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "354f58621842c581bb85e85ddf5f4ce77a85c875",
          "body": null,
          "is_bot": false,
          "headline": "Extend django-leaflet marker fix to admin",
          "author_name": "Ashley Felton",
          "author_login": "ropable",
          "committed_at": "2026-06-16T05:43:50Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "cab8b8b1c27adf47f8eebf05be691035e580ee21",
          "body": null,
          "is_bot": false,
          "headline": "Merge remote-tracking branch 'upstream/main'",
          "author_name": "Ashley Felton",
          "author_login": "ropable",
          "committed_at": "2026-06-16T04:11:48Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "3fe0468942aa83440e14f8ccbad0da19f0111878",
          "body": null,
          "is_bot": false,
          "headline": "Fix for django-leaflet marker image path",
          "author_name": "Ashley Felton",
          "author_login": "ropable",
          "committed_at": "2026-06-16T04:04:58Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "f99d79e230569072ab5f1ff072f90c5139ed11b8",
          "body": null,
          "is_bot": false,
          "headline": "django-leaflet: force image path True",
          "author_name": "Ashley Felton",
          "author_login": "ropable",
          "committed_at": "2026-06-16T02:47:15Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "2fe68c2de758682fad4ad701c3003bebbcecc47a",
          "body": null,
          "is_bot": false,
          "headline": "Add LeafletGeoAdmin class to EncounterAdmin",
          "author_name": "Ashley Felton",
          "author_login": "ropable",
          "committed_at": "2026-06-16T01:50:44Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "bfd2c594903d6b5a7b239f95a4cd014828e603fb",
          "body": "Switch django-map-widgets for django-leaflet, update dependencies",
          "is_bot": false,
          "headline": "Merge pull request #777 from ropable/main",
          "author_name": "Ashley Felton",
          "author_login": "ropable",
          "committed_at": "2026-06-16T01:17:07Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "30bed1c04f28add34365e5ca04fa8fa19d55cac3",
          "body": null,
          "is_bot": false,
          "headline": "Update dependencies",
          "author_name": "Ashley Felton",
          "author_login": "ropable",
          "committed_at": "2026-06-16T00:54:55Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "b6384e687a7b2dd7d5ab4c26cab0cd6513e8fbab",
          "body": null,
          "is_bot": false,
          "headline": "Merge branch 'main' of github.com:ropable/wastd",
          "author_name": "Ashley Felton",
          "author_login": "ropable",
          "committed_at": "2026-06-16T00:54:10Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "cf7b81c20848ad5dd987482dcd765cfebab28138",
          "body": null,
          "is_bot": false,
          "headline": "Switch out django-map-widgets for django-leaflet",
          "author_name": "Ashley Felton",
          "author_login": "ropable",
          "committed_at": "2026-06-16T00:53:03Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "7e144eb8df95243e1f661def882a772944a659d9",
          "body": "Fixes required for dependency updates",
          "is_bot": false,
          "headline": "Merge pull request #776 from ropable/main",
          "author_name": "Ashley Felton",
          "author_login": "ropable",
          "committed_at": "2026-06-15T07:17:51Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "c91eb5a79dbd9a6859894bd3841bb11a1e1547c3",
          "body": null,
          "is_bot": false,
          "headline": "Fixes for dependency updates",
          "author_name": "Ashley Felton",
          "author_login": "ropable",
          "committed_at": "2026-06-15T07:10:53Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "c99da9018520b0d59df8cf55d049cd6294940757",
          "body": "…ar-6.3.0\n\n[python] Bump django-debug-toolbar from 4.4.6 to 6.3.0",
          "is_bot": false,
          "headline": "Merge pull request #772 from dbca-wa/dependabot/uv/django-debug-toolb…",
          "author_name": "Ashley Felton",
          "author_login": "ropable",
          "committed_at": "2026-06-15T05:33:33Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "390a1e2aaa90eff1c7f9bdc38ffdee0069cb58c8",
          "body": "…-field-8.4.0\n\n[python] Bump django-phonenumber-field from 7.3.0 to 8.4.0",
          "is_bot": false,
          "headline": "Merge pull request #771 from dbca-wa/dependabot/uv/django-phonenumber…",
          "author_name": "Ashley Felton",
          "author_login": "ropable",
          "committed_at": "2026-06-15T04:15:25Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "eaa25f799997ea62b70668f0746079b902ac7531",
          "body": "…9.0.post0\n\n[python] Bump python-dateutil from 2.9.0 to 2.9.0.post0",
          "is_bot": false,
          "headline": "Merge pull request #773 from dbca-wa/dependabot/uv/python-dateutil-2.…",
          "author_name": "Ashley Felton",
          "author_login": "ropable",
          "committed_at": "2026-06-15T04:10:31Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "b5fdd3486a22f1f72cfaafd071fcc434df1708b5",
          "body": "…/setup-buildx-action-4.1.0\n\n[actions] Bump docker/setup-buildx-action from 4.0.0 to 4.1.0",
          "is_bot": false,
          "headline": "Merge pull request #770 from dbca-wa/dependabot/github_actions/docker…",
          "author_name": "Ashley Felton",
          "author_login": "ropable",
          "committed_at": "2026-06-15T04:08:44Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "6967610c0e0266bf4893fb474889f39c06aced2d",
          "body": "…/build-push-action-7.2.0\n\n[actions] Bump docker/build-push-action from 7.1.0 to 7.2.0",
          "is_bot": false,
          "headline": "Merge pull request #769 from dbca-wa/dependabot/github_actions/docker…",
          "author_name": "Ashley Felton",
          "author_login": "ropable",
          "committed_at": "2026-06-15T04:05:24Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "99a8ce80949bf0b7f1296554577c3c3807f82dd3",
          "body": "…/metadata-action-6.1.0\n\n[actions] Bump docker/metadata-action from 6.0.0 to 6.1.0",
          "is_bot": false,
          "headline": "Merge pull request #768 from dbca-wa/dependabot/github_actions/docker…",
          "author_name": "Ashley Felton",
          "author_login": "ropable",
          "committed_at": "2026-06-15T04:01:08Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "2ce5bd2a71693988f8c357aa4db4cfdd886c7e7c",
          "body": "…-2.62.0\n\n[python] Bump sentry-sdk[django] from 2.61.1 to 2.62.0",
          "is_bot": false,
          "headline": "Merge pull request #774 from dbca-wa/dependabot/uv/sentry-sdk-django-…",
          "author_name": "Ashley Felton",
          "author_login": "ropable",
          "committed_at": "2026-06-15T03:58:20Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "ee3a4a23e51095b3566fb50591d07458793c6eb0",
          "body": "Bumps [django-phonenumber-field](https://github.com/stefanfoulis/django-phonenumber-field) from 7.3.0 to 8.4.0.\n- [Release notes](https://github.com/stefanfoulis/django-phonenumber-field/releases)\n- [Changelog](https://github.com/django-phonenumber-field/django-phonenumber-field/blob/main/CHANGELOG.\n[…]\nency-name: django-phonenumber-field\n  dependency-version: 8.4.0\n  dependency-type: direct:production\n  update-type: version-update:semver-major\n...\n\nSigned-off-by: dependabot[bot] <support@github.com>",
          "is_bot": true,
          "headline": "[python] Bump django-phonenumber-field from 7.3.0 to 8.4.0",
          "author_name": "dependabot[bot]",
          "author_login": "dependabot[bot]",
          "committed_at": "2026-06-15T03:57:16Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "0ab46cf71e71f2fe2506b199bd15bdf610a6900c",
          "body": "Bumps [python-dateutil](https://github.com/dateutil/dateutil) from 2.9.0 to 2.9.0.post0.\n- [Release notes](https://github.com/dateutil/dateutil/releases)\n- [Changelog](https://github.com/dateutil/dateutil/blob/master/NEWS)\n- [Commits](https://github.com/dateutil/dateutil/compare/2.9.0...2.9.0.post0)\n[…]\nendency-name: python-dateutil\n  dependency-version: 2.9.0.post0\n  dependency-type: direct:production\n  update-type: version-update:semver-patch\n...\n\nSigned-off-by: dependabot[bot] <support@github.com>",
          "is_bot": true,
          "headline": "[python] Bump python-dateutil from 2.9.0 to 2.9.0.post0",
          "author_name": "dependabot[bot]",
          "author_login": "dependabot[bot]",
          "committed_at": "2026-06-15T03:57:15Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "23e7cb9985ea7d5f080c636b2bc48adef7b8770c",
          "body": "[python] Bump phonenumbers from 9.0.14 to 9.0.32",
          "is_bot": false,
          "headline": "Merge pull request #775 from dbca-wa/dependabot/uv/phonenumbers-9.0.32",
          "author_name": "Ashley Felton",
          "author_login": "ropable",
          "committed_at": "2026-06-15T03:54:56Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "f4df7f3114069a93de857f85e72e7446d379d3b1",
          "body": "Bumps [phonenumbers](https://github.com/daviddrysdale/python-phonenumbers) from 9.0.14 to 9.0.32.\n- [Commits](https://github.com/daviddrysdale/python-phonenumbers/compare/v9.0.14...v9.0.32)\n\n---\nupdated-dependencies:\n- dependency-name: phonenumbers\n  dependency-version: 9.0.32\n  dependency-type: direct:production\n  update-type: version-update:semver-patch\n...\n\nSigned-off-by: dependabot[bot] <support@github.com>",
          "is_bot": true,
          "headline": "[python] Bump phonenumbers from 9.0.14 to 9.0.32",
          "author_name": "dependabot[bot]",
          "author_login": "dependabot[bot]",
          "committed_at": "2026-06-15T03:38:10Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "d52fcc4ff22f4bce36412d6170aced11be4da284",
          "body": "Bumps [sentry-sdk[django]](https://github.com/getsentry/sentry-python) from 2.61.1 to 2.62.0.\n- [Release notes](https://github.com/getsentry/sentry-python/releases)\n- [Changelog](https://github.com/getsentry/sentry-python/blob/master/CHANGELOG.md)\n- [Commits](https://github.com/getsentry/sentry-pyth\n[…]\nependency-name: sentry-sdk[django]\n  dependency-version: 2.62.0\n  dependency-type: direct:production\n  update-type: version-update:semver-minor\n...\n\nSigned-off-by: dependabot[bot] <support@github.com>",
          "is_bot": true,
          "headline": "[python] Bump sentry-sdk[django] from 2.61.1 to 2.62.0",
          "author_name": "dependabot[bot]",
          "author_login": "dependabot[bot]",
          "committed_at": "2026-06-15T03:38:03Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "93fbd33306e6a2b4c20f0deec5105d315434d82c",
          "body": "Bumps [django-debug-toolbar](https://github.com/django-commons/django-debug-toolbar) from 4.4.6 to 6.3.0.\n- [Release notes](https://github.com/django-commons/django-debug-toolbar/releases)\n- [Changelog](https://github.com/django-commons/django-debug-toolbar/blob/main/docs/changes.rst)\n- [Commits](ht\n[…]\nendency-name: django-debug-toolbar\n  dependency-version: 6.3.0\n  dependency-type: direct:development\n  update-type: version-update:semver-major\n...\n\nSigned-off-by: dependabot[bot] <support@github.com>",
          "is_bot": true,
          "headline": "[python] Bump django-debug-toolbar from 4.4.6 to 6.3.0",
          "author_name": "dependabot[bot]",
          "author_login": "dependabot[bot]",
          "committed_at": "2026-06-15T03:37:42Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "88a67d35433f6fd57ce6c50c8ec7eff37beef29d",
          "body": "Bumps [docker/setup-buildx-action](https://github.com/docker/setup-buildx-action) from 4.0.0 to 4.1.0.\n- [Release notes](https://github.com/docker/setup-buildx-action/releases)\n- [Commits](https://github.com/docker/setup-buildx-action/compare/4d04d5d9486b7bd6fa91e7baf45bbb4f8b9deedd...d7f5e7f509e45c\n[…]\ncy-name: docker/setup-buildx-action\n  dependency-version: 4.1.0\n  dependency-type: direct:production\n  update-type: version-update:semver-minor\n...\n\nSigned-off-by: dependabot[bot] <support@github.com>",
          "is_bot": true,
          "headline": "[actions] Bump docker/setup-buildx-action from 4.0.0 to 4.1.0",
          "author_name": "dependabot[bot]",
          "author_login": "dependabot[bot]",
          "committed_at": "2026-06-15T03:37:19Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "86d694ce28614a46ce7a5bd311ae17c50e112632",
          "body": "Bumps [docker/build-push-action](https://github.com/docker/build-push-action) from 7.1.0 to 7.2.0.\n- [Release notes](https://github.com/docker/build-push-action/releases)\n- [Commits](https://github.com/docker/build-push-action/compare/bcafcacb16a39f128d818304e6c9c0c18556b85f...f9f3042f7e2789586610d6\n[…]\nency-name: docker/build-push-action\n  dependency-version: 7.2.0\n  dependency-type: direct:production\n  update-type: version-update:semver-minor\n...\n\nSigned-off-by: dependabot[bot] <support@github.com>",
          "is_bot": true,
          "headline": "[actions] Bump docker/build-push-action from 7.1.0 to 7.2.0",
          "author_name": "dependabot[bot]",
          "author_login": "dependabot[bot]",
          "committed_at": "2026-06-15T03:37:17Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "335192d7ad774e31cd82bda3506e351f56f0aa3f",
          "body": "Bumps [docker/metadata-action](https://github.com/docker/metadata-action) from 6.0.0 to 6.1.0.\n- [Release notes](https://github.com/docker/metadata-action/releases)\n- [Commits](https://github.com/docker/metadata-action/compare/030e881283bb7a6894de51c315a6bfe6a94e05cf...80c7e94dd9b9319bd5eb7a0e0fe929\n[…]\nndency-name: docker/metadata-action\n  dependency-version: 6.1.0\n  dependency-type: direct:production\n  update-type: version-update:semver-minor\n...\n\nSigned-off-by: dependabot[bot] <support@github.com>",
          "is_bot": true,
          "headline": "[actions] Bump docker/metadata-action from 6.0.0 to 6.1.0",
          "author_name": "dependabot[bot]",
          "author_login": "dependabot[bot]",
          "committed_at": "2026-06-15T03:37:13Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "beb393aa6931a6ccd37eed2fc748d86a43c025a4",
          "body": "Stable release (2.3.0): switch Poetry to uv, update Python to 3.13, update Django to 5.2, update project dependencies, documentation",
          "is_bot": false,
          "headline": "Merge pull request #767 from ropable/main",
          "author_name": "Ashley Felton",
          "author_login": "ropable",
          "committed_at": "2026-06-15T03:36:40Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "d4d73ffa04b880cdc0e4e03bb3ec181ca8401abc",
          "body": null,
          "is_bot": false,
          "headline": "Update Dependabot package-ecosystem",
          "author_name": "Ashley Felton",
          "author_login": "ropable",
          "committed_at": "2026-06-15T02:19:21Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "906b2a9e83a9b7a1cb25dee1f8325ed4be5638f7",
          "body": null,
          "is_bot": false,
          "headline": "Add ODK Cloud import function summary",
          "author_name": "Ashley Felton",
          "author_login": "ropable",
          "committed_at": "2026-06-15T01:59:18Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "062449d60497262730addc7db34a5df4e7b932d9",
          "body": null,
          "is_bot": false,
          "headline": "Amend generated data schema description",
          "author_name": "Ashley Felton",
          "author_login": "ropable",
          "committed_at": "2026-06-15T00:32:28Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "e38325488e61aef08216ccb3698a790c6c5f8d0e",
          "body": null,
          "is_bot": false,
          "headline": "Added generated schema summaries to applications",
          "author_name": "Ashley Felton",
          "author_login": "ropable",
          "committed_at": "2026-06-12T06:44:32Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "6e6a1344c9d575064baaaba53385e9c7a663a0ee",
          "body": null,
          "is_bot": false,
          "headline": "Update GitHub actions to use hashed tags",
          "author_name": "Ashley Felton",
          "author_login": "ropable",
          "committed_at": "2026-06-12T00:40:17Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "160b12364501cd787fca59d41794051a581023c9",
          "body": null,
          "is_bot": false,
          "headline": "Remove prints, isort, fix test",
          "author_name": "Ashley Felton",
          "author_login": "ropable",
          "committed_at": "2026-06-12T00:17:42Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "9ab8a40d333892afb79f0ee3e7384047c9d6235a",
          "body": null,
          "is_bot": false,
          "headline": "Update project stable version",
          "author_name": "Ashley Felton",
          "author_login": "ropable",
          "committed_at": "2026-06-11T23:46:10Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "038cff6f363020432f226fbaf7c95c9aa11d5066",
          "body": null,
          "is_bot": false,
          "headline": "Update navbar and index (marine mammal incidents links)",
          "author_name": "Ashley Felton",
          "author_login": "ropable",
          "committed_at": "2026-06-11T01:48:19Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "a1a91aacf8440e9c2995ac5a30cc0f8717d36a02",
          "body": null,
          "is_bot": false,
          "headline": "Amend workflow (tag scheduled rules)",
          "author_name": "Ashley Felton",
          "author_login": "ropable",
          "committed_at": "2026-06-11T01:13:42Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "49b5a382459b5e8b0b7d5451adce7c29887479a9",
          "body": null,
          "is_bot": false,
          "headline": "Update dbca-utils and webtemplate-dbca",
          "author_name": "Ashley Felton",
          "author_login": "ropable",
          "committed_at": "2026-06-10T06:21:20Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "a672c9e1787343953ba79e90a6b33b033fe7510e",
          "body": null,
          "is_bot": false,
          "headline": "Added copilot-instructions.md",
          "author_name": "Ashley Felton",
          "author_login": "ropable",
          "committed_at": "2026-06-10T05:42:44Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "b56ac2c36e6361a3f62e71082108424eeabb7477",
          "body": null,
          "is_bot": false,
          "headline": "Fix unit tests (Django 5+ changes)",
          "author_name": "Ashley Felton",
          "author_login": "ropable",
          "committed_at": "2026-06-10T05:33:10Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "f3238489279daeee14376a8d19c0417b8a179cd6",
          "body": null,
          "is_bot": false,
          "headline": "Update to Django 5.2, update dependencies, lint/format everything",
          "author_name": "Ashley Felton",
          "author_login": "ropable",
          "committed_at": "2026-06-10T04:49:43Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "33ec54e12334ee8d0b89e13bd4e8f515ffae29ed",
          "body": null,
          "is_bot": false,
          "headline": "Update workflow (Docker image tags)",
          "author_name": "Ashley Felton",
          "author_login": "ropable",
          "committed_at": "2026-06-10T03:52:45Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "2f572464c3a95f10beac114328f855002a0b3fa3",
          "body": null,
          "is_bot": false,
          "headline": "Workflows: rename master -> main",
          "author_name": "Ashley Felton",
          "author_login": "ropable",
          "committed_at": "2026-06-09T06:46:36Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "09fa4326c32659880b6c9d751fff4621321c6d86",
          "body": null,
          "is_bot": false,
          "headline": "Merge branch 'uv'",
          "author_name": "Ashley Felton",
          "author_login": "ropable",
          "committed_at": "2026-06-09T06:43:38Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "0946df58b01987ba8db3ee50842e52be405edf38",
          "body": null,
          "is_bot": false,
          "headline": "Update project patch version",
          "author_name": "Ashley Felton",
          "author_login": "ropable",
          "committed_at": "2026-06-09T06:41:33Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "12acaf6a01a58419f1794a99cda217d2d958574b",
          "body": "Privacy notice static view",
          "is_bot": false,
          "headline": "Merge pull request #766 from ropable/master",
          "author_name": "Ashley Felton",
          "author_login": "ropable",
          "committed_at": "2026-06-09T06:18:49Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "eab3fe909c193085af1cb6225a5a1f892b9cf3f3",
          "body": null,
          "is_bot": false,
          "headline": "Update project patch version",
          "author_name": "Ashley Felton",
          "author_login": "ropable",
          "committed_at": "2026-06-09T06:13:43Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "c95af526e83ce10623281d14af6cc6c5c34ce85b",
          "body": null,
          "is_bot": false,
          "headline": "Further changes for uv",
          "author_name": "Ashley Felton",
          "author_login": "ropable",
          "committed_at": "2026-06-09T05:53:00Z",
          "body_truncated": false,
          "is_coding_agent": false
        }
      ],
      "releases_count": 91,
      "commits_last_year": 295,
      "latest_release_at": "2026-07-17T02:38:58Z",
      "latest_release_tag": "v2.3.3",
      "releases_from_tags": true,
      "days_since_last_push": 0,
      "active_weeks_last_year": 36,
      "days_since_latest_release": 10,
      "mean_days_between_releases": 20.5
    },
    "community": {
      "has_readme": true,
      "has_license": true,
      "has_description": true,
      "has_contributing": false,
      "health_percentage": 87,
      "has_issue_template": false,
      "has_code_of_conduct": true,
      "has_pull_request_template": false
    },
    "ecosystem": {
      "packages": []
    },
    "popularity": {
      "forks": 4,
      "stars": 6,
      "watchers": 7,
      "fork_history": {
        "days": [
          {
            "date": "2020-02-24",
            "count": 1
          },
          {
            "date": "2023-09-28",
            "count": 1
          },
          {
            "date": "2024-06-12",
            "count": 1
          },
          {
            "date": "2026-06-18",
            "count": 1
          }
        ],
        "complete": true,
        "collected": 4,
        "total_forks": 4
      },
      "star_history": null,
      "open_issues_and_prs": 14
    },
    "ai_readiness": {
      "has_nix": false,
      "example_dirs": [],
      "has_llms_txt": false,
      "has_dockerfile": true,
      "has_mcp_signal": false,
      "bootstrap_files": [],
      "api_schema_files": [],
      "has_devcontainer": false,
      "typecheck_configs": [
        "pyrightconfig.json"
      ],
      "toolchain_manifests": [],
      "largest_source_bytes": 265172,
      "source_files_sampled": 148,
      "oversized_source_files": 6,
      "agent_instruction_files": [
        ".github/copilot-instructions.md"
      ],
      "agent_instruction_max_bytes": 6785
    },
    "dependencies": {
      "manifests": [
        "pyproject.toml"
      ],
      "advisories": {
        "error": null,
        "scope": "repository_graph",
        "source": "osv",
        "findings": [
          {
            "name": "django",
            "direct": true,
            "version": "4.2.29",
            "severity": "critical",
            "ecosystem": "pypi",
            "cvss_score": 9.8,
            "advisory_ids": [
              "GHSA-5mf9-h53q-7mhq",
              "GHSA-933h-hp56-hf7m",
              "GHSA-mmwr-2jhp-mc7j",
              "GHSA-mvfq-ggxm-9mc5",
              "GHSA-pwjp-ccjc-ghwg",
              "PYSEC-2026-48",
              "PYSEC-2026-49",
              "PYSEC-2026-51",
              "PYSEC-2026-52",
              "PYSEC-2026-53"
            ],
            "fixed_version": "6.0.4",
            "advisory_count": 10,
            "oldest_advisory_days": 110
          },
          {
            "name": "pillow",
            "direct": true,
            "version": "12.1.1",
            "severity": "critical",
            "ecosystem": "pypi",
            "cvss_score": 9.1,
            "advisory_ids": [
              "GHSA-45hq-cxwh-f6vc",
              "GHSA-4x4j-2g7c-83w6",
              "GHSA-5x94-69rx-g8h2",
              "GHSA-5xmw-vc9v-4wf2",
              "GHSA-62p4-gmf7-7g93",
              "GHSA-6r8x-57c9-28j4",
              "GHSA-8v84-f9pq-wr9x",
              "GHSA-9hw9-ch79-4vh6",
              "GHSA-fj7v-r99m-22gq",
              "GHSA-jjj6-mw9f-p565"
            ],
            "fixed_version": "12.3.0",
            "advisory_count": 36,
            "oldest_advisory_days": 104
          },
          {
            "name": "pillow",
            "direct": true,
            "version": "12.2.0",
            "severity": "critical",
            "ecosystem": "pypi",
            "cvss_score": 9.1,
            "advisory_ids": [
              "GHSA-45hq-cxwh-f6vc",
              "GHSA-4x4j-2g7c-83w6",
              "GHSA-5x94-69rx-g8h2",
              "GHSA-62p4-gmf7-7g93",
              "GHSA-6r8x-57c9-28j4",
              "GHSA-8v84-f9pq-wr9x",
              "GHSA-9hw9-ch79-4vh6",
              "GHSA-fj7v-r99m-22gq",
              "GHSA-jjj6-mw9f-p565",
              "GHSA-pg7v-jwj7-p798"
            ],
            "fixed_version": "12.3.0",
            "advisory_count": 26,
            "oldest_advisory_days": 20
          },
          {
            "name": "black",
            "direct": false,
            "version": "24.10.0",
            "severity": "critical",
            "ecosystem": "pypi",
            "cvss_score": 9.8,
            "advisory_ids": [
              "GHSA-3936-cmfr-pm3m",
              "PYSEC-2026-2120",
              "PYSEC-2026-2121"
            ],
            "fixed_version": "26.3.1",
            "advisory_count": 3,
            "oldest_advisory_days": 137
          },
          {
            "name": "cryptography",
            "direct": false,
            "version": "46.0.5",
            "severity": "critical",
            "ecosystem": "pypi",
            "cvss_score": 9.8,
            "advisory_ids": [
              "GHSA-537c-gmf6-5ccf",
              "GHSA-m959-cc7f-wv43",
              "GHSA-p423-j2cm-9vmq",
              "PYSEC-2026-35",
              "PYSEC-2026-36"
            ],
            "fixed_version": "48.0.1",
            "advisory_count": 5,
            "oldest_advisory_days": 121
          },
          {
            "name": "click",
            "direct": false,
            "version": "8.3.1",
            "severity": "high",
            "ecosystem": "pypi",
            "cvss_score": 7.2,
            "advisory_ids": [
              "PYSEC-2026-2132"
            ],
            "fixed_version": "8.3.3",
            "advisory_count": 1,
            "oldest_advisory_days": 87
          },
          {
            "name": "lxml",
            "direct": false,
            "version": "6.0.2",
            "severity": "high",
            "ecosystem": "pypi",
            "cvss_score": 7.5,
            "advisory_ids": [
              "GHSA-vfmq-68hx-4jfw",
              "PYSEC-2026-87"
            ],
            "fixed_version": "6.1.0",
            "advisory_count": 2,
            "oldest_advisory_days": 96
          },
          {
            "name": "soupsieve",
            "direct": false,
            "version": "2.8.3",
            "severity": "high",
            "ecosystem": "pypi",
            "cvss_score": 7.5,
            "advisory_ids": [
              "GHSA-2wc2-fm75-p42x",
              "GHSA-836r-79rf-4m37",
              "PYSEC-2026-3071",
              "PYSEC-2026-3072"
            ],
            "fixed_version": "2.8.4",
            "advisory_count": 4,
            "oldest_advisory_days": 17
          },
          {
            "name": "urllib3",
            "direct": false,
            "version": "2.6.3",
            "severity": "high",
            "ecosystem": "pypi",
            "cvss_score": 7.5,
            "advisory_ids": [
              "GHSA-mf9v-mfxr-j63j",
              "GHSA-qccp-gfcp-xxvc",
              "PYSEC-2026-141",
              "PYSEC-2026-142"
            ],
            "fixed_version": "2.7.0",
            "advisory_count": 4,
            "oldest_advisory_days": 76
          },
          {
            "name": "django",
            "direct": true,
            "version": "5.2.15",
            "severity": "moderate",
            "ecosystem": "pypi",
            "cvss_score": 6.5,
            "advisory_ids": [
              "PYSEC-2026-2090",
              "PYSEC-2026-2091",
              "PYSEC-2026-2092"
            ],
            "fixed_version": "6.0.7",
            "advisory_count": 3,
            "oldest_advisory_days": 19
          },
          {
            "name": "python-dotenv",
            "direct": true,
            "version": "1.2.1",
            "severity": "moderate",
            "ecosystem": "pypi",
            "cvss_score": 6.6,
            "advisory_ids": [
              "GHSA-mf9w-mj56-hr94",
              "PYSEC-2026-2270"
            ],
            "fixed_version": "1.2.2",
            "advisory_count": 2,
            "oldest_advisory_days": 97
          },
          {
            "name": "requests",
            "direct": true,
            "version": "2.32.5",
            "severity": "moderate",
            "ecosystem": "pypi",
            "cvss_score": 5.5,
            "advisory_ids": [
              "GHSA-gc5v-m9x4-r6x2",
              "PYSEC-2026-2275"
            ],
            "fixed_version": "2.33.0",
            "advisory_count": 2,
            "oldest_advisory_days": 123
          },
          {
            "name": "setuptools",
            "direct": true,
            "version": "80.10.2",
            "severity": "moderate",
            "ecosystem": "pypi",
            "cvss_score": 6.1,
            "advisory_ids": [
              "GHSA-h35f-9h28-mq5c",
              "PYSEC-2026-3447"
            ],
            "fixed_version": "83.0.0",
            "advisory_count": 2,
            "oldest_advisory_days": 18
          },
          {
            "name": "idna",
            "direct": false,
            "version": "3.11",
            "severity": "moderate",
            "ecosystem": "pypi",
            "cvss_score": 5.3,
            "advisory_ids": [
              "GHSA-65pc-fj4g-8rjx",
              "PYSEC-2026-215"
            ],
            "fixed_version": "3.15",
            "advisory_count": 2,
            "oldest_advisory_days": 68
          },
          {
            "name": "pygments",
            "direct": false,
            "version": "2.19.2",
            "severity": "low",
            "ecosystem": "pypi",
            "cvss_score": 3.3,
            "advisory_ids": [
              "GHSA-5239-wwwm-4pmq",
              "PYSEC-2026-2987"
            ],
            "fixed_version": "2.20.0",
            "advisory_count": 2,
            "oldest_advisory_days": 127
          }
        ],
        "collected": true,
        "malicious": [],
        "truncated": false,
        "by_severity": {
          "low": 1,
          "high": 4,
          "critical": 5,
          "moderate": 5
        },
        "advisory_count": 104,
        "affected_count": 15,
        "assessed_count": 196,
        "malicious_count": 0,
        "assessed_package": null,
        "unassessed_count": 0,
        "direct_affected_count": 7
      },
      "ecosystems": [
        "pypi"
      ],
      "dependencies": [
        {
          "name": "django",
          "manifest": "pyproject.toml",
          "ecosystem": "pypi",
          "version_constraint": "==5.2.15"
        },
        {
          "name": "psycopg",
          "manifest": "pyproject.toml",
          "ecosystem": "pypi",
          "version_constraint": "==3.3.4"
        },
        {
          "name": "django-extensions",
          "manifest": "pyproject.toml",
          "ecosystem": "pypi",
          "version_constraint": "==4.1"
        },
        {
          "name": "dj-database-url",
          "manifest": "pyproject.toml",
          "ecosystem": "pypi",
          "version_constraint": "==3.1.2"
        },
        {
          "name": "gunicorn",
          "manifest": "pyproject.toml",
          "ecosystem": "pypi",
          "version_constraint": "==26.0.0"
        },
        {
          "name": "python-dotenv",
          "manifest": "pyproject.toml",
          "ecosystem": "pypi",
          "version_constraint": "==1.2.2"
        },
        {
          "name": "dbca-utils",
          "manifest": "pyproject.toml",
          "ecosystem": "pypi",
          "version_constraint": "==2.2.0"
        },
        {
          "name": "django-fsm",
          "manifest": "pyproject.toml",
          "ecosystem": "pypi",
          "version_constraint": "==2.8.1"
        },
        {
          "name": "django-fsm-log",
          "manifest": "pyproject.toml",
          "ecosystem": "pypi",
          "version_constraint": "==3.1.0"
        },
        {
          "name": "django-fsm-admin-maintained",
          "manifest": "pyproject.toml",
          "ecosystem": "pypi",
          "version_constraint": "==1.2.6"
        },
        {
          "name": "python-dateutil",
          "manifest": "pyproject.toml",
          "ecosystem": "pypi",
          "version_constraint": "==2.9.0.post0"
        },
        {
          "name": "python-slugify",
          "manifest": "pyproject.toml",
          "ecosystem": "pypi",
          "version_constraint": "==8.0.4"
        },
        {
          "name": "django-filter",
          "manifest": "pyproject.toml",
          "ecosystem": "pypi",
          "version_constraint": "==25.2"
        },
        {
          "name": "django-polymorphic",
          "manifest": "pyproject.toml",
          "ecosystem": "pypi",
          "version_constraint": "==4.11.5"
        },
        {
          "name": "django-reversion",
          "manifest": "pyproject.toml",
          "ecosystem": "pypi",
          "version_constraint": "==6.2.0"
        },
        {
          "name": "django-crispy-forms",
          "manifest": "pyproject.toml",
          "ecosystem": "pypi",
          "version_constraint": "==2.6"
        },
        {
          "name": "xmltodict",
          "manifest": "pyproject.toml",
          "ecosystem": "pypi",
          "version_constraint": "==1.0.4"
        },
        {
          "name": "pandas",
          "manifest": "pyproject.toml",
          "ecosystem": "pypi",
          "version_constraint": "==3.0.3"
        },
        {
          "name": "requests",
          "manifest": "pyproject.toml",
          "ecosystem": "pypi",
          "version_constraint": "==2.34.2"
        },
        {
          "name": "pytz",
          "manifest": "pyproject.toml",
          "ecosystem": "pypi",
          "version_constraint": "==2026.2"
        },
        {
          "name": "django-select2",
          "manifest": "pyproject.toml",
          "ecosystem": "pypi",
          "version_constraint": "==8.4.1"
        },
        {
          "name": "django-geojson",
          "manifest": "pyproject.toml",
          "ecosystem": "pypi",
          "version_constraint": "==4.2.0"
        },
        {
          "name": "django-import-export",
          "manifest": "pyproject.toml",
          "ecosystem": "pypi",
          "version_constraint": "==4.4.1"
        },
        {
          "name": "django-export-download",
          "manifest": "pyproject.toml",
          "ecosystem": "pypi",
          "version_constraint": "==0.2.3"
        },
        {
          "name": "pillow",
          "manifest": "pyproject.toml",
          "ecosystem": "pypi",
          "version_constraint": "==12.2.0"
        },
        {
          "name": "whitenoise",
          "manifest": "pyproject.toml",
          "ecosystem": "pypi",
          "version_constraint": "==6.12.0"
        },
        {
          "name": "phonenumbers",
          "manifest": "pyproject.toml",
          "ecosystem": "pypi",
          "version_constraint": "==9.0.32"
        },
        {
          "name": "django-phonenumber-field",
          "manifest": "pyproject.toml",
          "ecosystem": "pypi",
          "version_constraint": "==8.4.0"
        },
        {
          "name": "mssql-django",
          "manifest": "pyproject.toml",
          "ecosystem": "pypi",
          "version_constraint": "==1.7.2"
        },
        {
          "name": "webtemplate-dbca",
          "manifest": "pyproject.toml",
          "ecosystem": "pypi",
          "version_constraint": "==1.8.3"
        },
        {
          "name": "django-storages",
          "manifest": "pyproject.toml",
          "ecosystem": "pypi",
          "version_constraint": "==1.14.6"
        },
        {
          "name": "django-grappelli",
          "manifest": "pyproject.toml",
          "ecosystem": "pypi",
          "version_constraint": "==4.0.4"
        },
        {
          "name": "django-nested-admin",
          "manifest": "pyproject.toml",
          "ecosystem": "pypi",
          "version_constraint": "==4.1.6"
        },
        {
          "name": "django-bootstrap4",
          "manifest": "pyproject.toml",
          "ecosystem": "pypi",
          "version_constraint": "==26.1"
        },
        {
          "name": "django-easy-select2",
          "manifest": "pyproject.toml",
          "ecosystem": "pypi",
          "version_constraint": "==1.5.8"
        },
        {
          "name": "sentry-sdk",
          "manifest": "pyproject.toml",
          "ecosystem": "pypi",
          "version_constraint": "==2.62.0"
        },
        {
          "name": "python-docx",
          "manifest": "pyproject.toml",
          "ecosystem": "pypi",
          "version_constraint": "==1.2.0"
        },
        {
          "name": "setuptools",
          "manifest": "pyproject.toml",
          "ecosystem": "pypi",
          "version_constraint": "==80.10.2"
        },
        {
          "name": "openpyxl",
          "manifest": "pyproject.toml",
          "ecosystem": "pypi",
          "version_constraint": "==3.1.5"
        },
        {
          "name": "xlwt",
          "manifest": "pyproject.toml",
          "ecosystem": "pypi",
          "version_constraint": "==1.3.0"
        },
        {
          "name": "django-leaflet",
          "manifest": "pyproject.toml",
          "ecosystem": "pypi",
          "version_constraint": "==0.33.0"
        }
      ],
      "all_dependencies": {
        "error": null,
        "source": "github-sbom",
        "packages": [
          {
            "name": "dbca-utils",
            "direct": true,
            "version": "2.1.5",
            "ecosystem": "pypi"
          },
          {
            "name": "dbca-utils",
            "direct": true,
            "version": "2.2.0",
            "ecosystem": "pypi"
          },
          {
            "name": "dj-database-url",
            "direct": true,
            "version": "3.0.1",
            "ecosystem": "pypi"
          },
          {
            "name": "dj-database-url",
            "direct": true,
            "version": "3.1.2",
            "ecosystem": "pypi"
          },
          {
            "name": "django",
            "direct": true,
            "version": "4.2.29",
            "ecosystem": "pypi"
          },
          {
            "name": "django",
            "direct": true,
            "version": "5.2.15",
            "ecosystem": "pypi"
          },
          {
            "name": "django-bootstrap4",
            "direct": true,
            "version": "24.1",
            "ecosystem": "pypi"
          },
          {
            "name": "django-bootstrap4",
            "direct": true,
            "version": "26.1",
            "ecosystem": "pypi"
          },
          {
            "name": "django-crispy-forms",
            "direct": true,
            "version": "1.14.0",
            "ecosystem": "pypi"
          },
          {
            "name": "django-crispy-forms",
            "direct": true,
            "version": "2.6",
            "ecosystem": "pypi"
          },
          {
            "name": "django-easy-select2",
            "direct": true,
            "version": "1.5.8",
            "ecosystem": "pypi"
          },
          {
            "name": "django-export-download",
            "direct": true,
            "version": "0.2.3",
            "ecosystem": "pypi"
          },
          {
            "name": "django-extensions",
            "direct": true,
            "version": "3.2.3",
            "ecosystem": "pypi"
          },
          {
            "name": "django-extensions",
            "direct": true,
            "version": "4.1",
            "ecosystem": "pypi"
          },
          {
            "name": "django-filter",
            "direct": true,
            "version": "24.1",
            "ecosystem": "pypi"
          },
          {
            "name": "django-filter",
            "direct": true,
            "version": "25.2",
            "ecosystem": "pypi"
          },
          {
            "name": "django-fsm",
            "direct": true,
            "version": "2.8.1",
            "ecosystem": "pypi"
          },
          {
            "name": "django-fsm-admin-maintained",
            "direct": true,
            "version": "1.2.6",
            "ecosystem": "pypi"
          },
          {
            "name": "django-fsm-log",
            "direct": true,
            "version": "3.1.0",
            "ecosystem": "pypi"
          },
          {
            "name": "django-geojson",
            "direct": true,
            "version": "4.0.0",
            "ecosystem": "pypi"
          },
          {
            "name": "django-geojson",
            "direct": true,
            "version": "4.2.0",
            "ecosystem": "pypi"
          },
          {
            "name": "django-grappelli",
            "direct": true,
            "version": "3.0.8",
            "ecosystem": "pypi"
          },
          {
            "name": "django-grappelli",
            "direct": true,
            "version": "4.0.4",
            "ecosystem": "pypi"
          },
          {
            "name": "django-import-export",
            "direct": true,
            "version": "3.3.7",
            "ecosystem": "pypi"
          },
          {
            "name": "django-import-export",
            "direct": true,
            "version": "4.4.1",
            "ecosystem": "pypi"
          },
          {
            "name": "django-leaflet",
            "direct": true,
            "version": "0.33.0",
            "ecosystem": "pypi"
          },
          {
            "name": "django-nested-admin",
            "direct": true,
            "version": "4.1.6",
            "ecosystem": "pypi"
          },
          {
            "name": "django-phonenumber-field",
            "direct": true,
            "version": "7.3.0",
            "ecosystem": "pypi"
          },
          {
            "name": "django-phonenumber-field",
            "direct": true,
            "version": "8.4.0",
            "ecosystem": "pypi"
          },
          {
            "name": "django-polymorphic",
            "direct": true,
            "version": "3.1.0",
            "ecosystem": "pypi"
          },
          {
            "name": "django-polymorphic",
            "direct": true,
            "version": "4.11.5",
            "ecosystem": "pypi"
          },
          {
            "name": "django-reversion",
            "direct": true,
            "version": "5.0.12",
            "ecosystem": "pypi"
          },
          {
            "name": "django-reversion",
            "direct": true,
            "version": "6.2.0",
            "ecosystem": "pypi"
          },
          {
            "name": "django-select2",
            "direct": true,
            "version": "8.4.1",
            "ecosystem": "pypi"
          },
          {
            "name": "django-storages",
            "direct": true,
            "version": "1.14.2",
            "ecosystem": "pypi"
          },
          {
            "name": "django-storages",
            "direct": true,
            "version": "1.14.6",
            "ecosystem": "pypi"
          },
          {
            "name": "gunicorn",
            "direct": true,
            "version": "23.0.0",
            "ecosystem": "pypi"
          },
          {
            "name": "gunicorn",
            "direct": true,
            "version": "26.0.0",
            "ecosystem": "pypi"
          },
          {
            "name": "mssql-django",
            "direct": true,
            "version": "1.6",
            "ecosystem": "pypi"
          },
          {
            "name": "mssql-django",
            "direct": true,
            "version": "1.7.2",
            "ecosystem": "pypi"
          },
          {
            "name": "openpyxl",
            "direct": true,
            "version": "3.1.5",
            "ecosystem": "pypi"
          },
          {
            "name": "pandas",
            "direct": true,
            "version": "2.2.0",
            "ecosystem": "pypi"
          },
          {
            "name": "pandas",
            "direct": true,
            "version": "3.0.3",
            "ecosystem": "pypi"
          },
          {
            "name": "phonenumbers",
            "direct": true,
            "version": "9.0.14",
            "ecosystem": "pypi"
          },
          {
            "name": "phonenumbers",
            "direct": true,
            "version": "9.0.32",
            "ecosystem": "pypi"
          },
          {
            "name": "pillow",
            "direct": true,
            "version": "12.1.1",
            "ecosystem": "pypi"
          },
          {
            "name": "pillow",
            "direct": true,
            "version": "12.2.0",
            "ecosystem": "pypi"
          },
          {
            "name": "psycopg",
            "direct": true,
            "version": "3.2.12",
            "ecosystem": "pypi"
          },
          {
            "name": "psycopg",
            "direct": true,
            "version": "3.3.4",
            "ecosystem": "pypi"
          },
          {
            "name": "python-dateutil",
            "direct": true,
            "version": "2.9.0",
            "ecosystem": "pypi"
          },
          {
            "name": "python-dateutil",
            "direct": true,
            "version": "2.9.0.post0",
            "ecosystem": "pypi"
          },
          {
            "name": "python-docx",
            "direct": true,
            "version": "1.2.0",
            "ecosystem": "pypi"
          },
          {
            "name": "python-dotenv",
            "direct": true,
            "version": "1.2.1",
            "ecosystem": "pypi"
          },
          {
            "name": "python-dotenv",
            "direct": true,
            "version": "1.2.2",
            "ecosystem": "pypi"
          },
          {
            "name": "python-slugify",
            "direct": true,
            "version": "8.0.4",
            "ecosystem": "pypi"
          },
          {
            "name": "pytz",
            "direct": true,
            "version": "2025.2",
            "ecosystem": "pypi"
          },
          {
            "name": "pytz",
            "direct": true,
            "version": "2026.2",
            "ecosystem": "pypi"
          },
          {
            "name": "requests",
            "direct": true,
            "version": "2.32.5",
            "ecosystem": "pypi"
          },
          {
            "name": "requests",
            "direct": true,
            "version": "2.34.2",
            "ecosystem": "pypi"
          },
          {
            "name": "sentry-sdk",
            "direct": true,
            "version": "2.44.0",
            "ecosystem": "pypi"
          },
          {
            "name": "sentry-sdk",
            "direct": true,
            "version": "2.62.0",
            "ecosystem": "pypi"
          },
          {
            "name": "setuptools",
            "direct": true,
            "version": "80.10.2",
            "ecosystem": "pypi"
          },
          {
            "name": "webtemplate-dbca",
            "direct": true,
            "version": "1.5.1",
            "ecosystem": "pypi"
          },
          {
            "name": "webtemplate-dbca",
            "direct": true,
            "version": "1.8.3",
            "ecosystem": "pypi"
          },
          {
            "name": "whitenoise",
            "direct": true,
            "version": "6.12.0",
            "ecosystem": "pypi"
          },
          {
            "name": "whitenoise",
            "direct": true,
            "version": "6.8.2",
            "ecosystem": "pypi"
          },
          {
            "name": "xlwt",
            "direct": true,
            "version": "1.3.0",
            "ecosystem": "pypi"
          },
          {
            "name": "xmltodict",
            "direct": true,
            "version": "0.13.0",
            "ecosystem": "pypi"
          },
          {
            "name": "xmltodict",
            "direct": true,
            "version": "1.0.4",
            "ecosystem": "pypi"
          },
          {
            "name": "alabaster",
            "direct": false,
            "version": "0.7.16",
            "ecosystem": "pypi"
          },
          {
            "name": "asgiref",
            "direct": false,
            "version": "3.11.1",
            "ecosystem": "pypi"
          },
          {
            "name": "asttokens",
            "direct": false,
            "version": "3.0.1",
            "ecosystem": "pypi"
          },
          {
            "name": "azure-core",
            "direct": false,
            "version": "1.38.1",
            "ecosystem": "pypi"
          },
          {
            "name": "azure-core",
            "direct": false,
            "version": "1.41.0",
            "ecosystem": "pypi"
          },
          {
            "name": "azure-storage-blob",
            "direct": false,
            "version": "12.28.0",
            "ecosystem": "pypi"
          },
          {
            "name": "azure-storage-blob",
            "direct": false,
            "version": "12.30.0",
            "ecosystem": "pypi"
          },
          {
            "name": "babel",
            "direct": false,
            "version": "2.18.0",
            "ecosystem": "pypi"
          },
          {
            "name": "beautifulsoup4",
            "direct": false,
            "version": "4.14.3",
            "ecosystem": "pypi"
          },
          {
            "name": "beautifulsoup4",
            "direct": false,
            "version": "4.15.0",
            "ecosystem": "pypi"
          },
          {
            "name": "black",
            "direct": false,
            "version": "24.10.0",
            "ecosystem": "pypi"
          },
          {
            "name": "brotli",
            "direct": false,
            "version": "1.2.0",
            "ecosystem": "pypi"
          },
          {
            "name": "certifi",
            "direct": false,
            "version": "2026.1.4",
            "ecosystem": "pypi"
          },
          {
            "name": "certifi",
            "direct": false,
            "version": "2026.6.17",
            "ecosystem": "pypi"
          },
          {
            "name": "cffi",
            "direct": false,
            "version": "2.0.0",
            "ecosystem": "pypi"
          },
          {
            "name": "cfgv",
            "direct": false,
            "version": "3.5.0",
            "ecosystem": "pypi"
          },
          {
            "name": "charset-normalizer",
            "direct": false,
            "version": "3.4.4",
            "ecosystem": "pypi"
          },
          {
            "name": "charset-normalizer",
            "direct": false,
            "version": "3.4.7",
            "ecosystem": "pypi"
          },
          {
            "name": "click",
            "direct": false,
            "version": "8.3.1",
            "ecosystem": "pypi"
          },
          {
            "name": "click",
            "direct": false,
            "version": "8.4.1",
            "ecosystem": "pypi"
          },
          {
            "name": "colorama",
            "direct": false,
            "version": "0.4.6",
            "ecosystem": "pypi"
          },
          {
            "name": "coverage",
            "direct": false,
            "version": "7.13.4",
            "ecosystem": "pypi"
          },
          {
            "name": "coverage",
            "direct": false,
            "version": "7.14.1",
            "ecosystem": "pypi"
          },
          {
            "name": "cryptography",
            "direct": false,
            "version": "46.0.5",
            "ecosystem": "pypi"
          },
          {
            "name": "cryptography",
            "direct": false,
            "version": "49.0.0",
            "ecosystem": "pypi"
          },
          {
            "name": "decorator",
            "direct": false,
            "version": "5.2.1",
            "ecosystem": "pypi"
          },
          {
            "name": "decorator",
            "direct": false,
            "version": "5.3.1",
            "ecosystem": "pypi"
          },
          {
            "name": "defusedxml",
            "direct": false,
            "version": "0.7.1",
            "ecosystem": "pypi"
          },
          {
            "name": "deptry",
            "direct": false,
            "version": "0.25.1",
            "ecosystem": "pypi"
          },
          {
            "name": "diff-match-patch",
            "direct": false,
            "version": "20241021",
            "ecosystem": "pypi"
          },
          {
            "name": "distlib",
            "direct": false,
            "version": "0.4.0",
            "ecosystem": "pypi"
          },
          {
            "name": "distlib",
            "direct": false,
            "version": "0.4.3",
            "ecosystem": "pypi"
          },
          {
            "name": "django-appconf",
            "direct": false,
            "version": "1.2.0",
            "ecosystem": "pypi"
          },
          {
            "name": "django-debug-toolbar",
            "direct": false,
            "version": "4.4.6",
            "ecosystem": "pypi"
          },
          {
            "name": "django-debug-toolbar",
            "direct": false,
            "version": "6.3.0",
            "ecosystem": "pypi"
          },
          {
            "name": "django-map-widgets",
            "direct": false,
            "version": "0.4.2",
            "ecosystem": "pypi"
          },
          {
            "name": "django-stubs",
            "direct": false,
            "version": "6.0.5",
            "ecosystem": "pypi"
          },
          {
            "name": "django-stubs-ext",
            "direct": false,
            "version": "6.0.5",
            "ecosystem": "pypi"
          },
          {
            "name": "django-tables2",
            "direct": false,
            "version": "2.7.0",
            "ecosystem": "pypi"
          },
          {
            "name": "docutils",
            "direct": false,
            "version": "0.21.2",
            "ecosystem": "pypi"
          },
          {
            "name": "et-xmlfile",
            "direct": false,
            "version": "2.0.0",
            "ecosystem": "pypi"
          },
          {
            "name": "executing",
            "direct": false,
            "version": "2.2.1",
            "ecosystem": "pypi"
          },
          {
            "name": "filelock",
            "direct": false,
            "version": "3.24.2",
            "ecosystem": "pypi"
          },
          {
            "name": "filelock",
            "direct": false,
            "version": "3.29.4",
            "ecosystem": "pypi"
          },
          {
            "name": "identify",
            "direct": false,
            "version": "2.6.16",
            "ecosystem": "pypi"
          },
          {
            "name": "identify",
            "direct": false,
            "version": "2.6.19",
            "ecosystem": "pypi"
          },
          {
            "name": "idna",
            "direct": false,
            "version": "3.11",
            "ecosystem": "pypi"
          },
          {
            "name": "idna",
            "direct": false,
            "version": "3.18",
            "ecosystem": "pypi"
          },
          {
            "name": "imagesize",
            "direct": false,
            "version": "1.4.1",
            "ecosystem": "pypi"
          },
          {
            "name": "ipdb",
            "direct": false,
            "version": "0.13.13",
            "ecosystem": "pypi"
          },
          {
            "name": "ipython",
            "direct": false,
            "version": "9.10.0",
            "ecosystem": "pypi"
          },
          {
            "name": "ipython",
            "direct": false,
            "version": "9.14.1",
            "ecosystem": "pypi"
          },
          {
            "name": "ipython-pygments-lexers",
            "direct": false,
            "version": "1.1.1",
            "ecosystem": "pypi"
          },
          {
            "name": "isodate",
            "direct": false,
            "version": "0.7.2",
            "ecosystem": "pypi"
          },
          {
            "name": "jedi",
            "direct": false,
            "version": "0.19.2",
            "ecosystem": "pypi"
          },
          {
            "name": "jedi",
            "direct": false,
            "version": "0.20.0",
            "ecosystem": "pypi"
          },
          {
            "name": "jinja2",
            "direct": false,
            "version": "3.1.6",
            "ecosystem": "pypi"
          },
          {
            "name": "lxml",
            "direct": false,
            "version": "6.0.2",
            "ecosystem": "pypi"
          },
          {
            "name": "lxml",
            "direct": false,
            "version": "6.1.1",
            "ecosystem": "pypi"
          },
          {
            "name": "markuppy",
            "direct": false,
            "version": "1.18",
            "ecosystem": "pypi"
          },
          {
            "name": "markupsafe",
            "direct": false,
            "version": "3.0.3",
            "ecosystem": "pypi"
          },
          {
            "name": "matplotlib-inline",
            "direct": false,
            "version": "0.2.1",
            "ecosystem": "pypi"
          },
          {
            "name": "matplotlib-inline",
            "direct": false,
            "version": "0.2.2",
            "ecosystem": "pypi"
          },
          {
            "name": "mypy-extensions",
            "direct": false,
            "version": "1.1.0",
            "ecosystem": "pypi"
          },
          {
            "name": "nodeenv",
            "direct": false,
            "version": "1.10.0",
            "ecosystem": "pypi"
          },
          {
            "name": "numpy",
            "direct": false,
            "version": "1.26.4",
            "ecosystem": "pypi"
          },
          {
            "name": "numpy",
            "direct": false,
            "version": "2.4.6",
            "ecosystem": "pypi"
          },
          {
            "name": "odfpy",
            "direct": false,
            "version": "1.4.1",
            "ecosystem": "pypi"
          },
          {
            "name": "packaging",
            "direct": false,
            "version": "26.0",
            "ecosystem": "pypi"
          },
          {
            "name": "packaging",
            "direct": false,
            "version": "26.2",
            "ecosystem": "pypi"
          },
          {
            "name": "parso",
            "direct": false,
            "version": "0.8.6",
            "ecosystem": "pypi"
          },
          {
            "name": "parso",
            "direct": false,
            "version": "0.8.7",
            "ecosystem": "pypi"
          },
          {
            "name": "pathspec",
            "direct": false,
            "version": "1.0.4",
            "ecosystem": "pypi"
          },
          {
            "name": "pexpect",
            "direct": false,
            "version": "4.9.0",
            "ecosystem": "pypi"
          },
          {
            "name": "platformdirs",
            "direct": false,
            "version": "4.10.0",
            "ecosystem": "pypi"
          },
          {
            "name": "platformdirs",
            "direct": false,
            "version": "4.9.2",
            "ecosystem": "pypi"
          },
          {
            "name": "pre-commit",
            "direct": false,
            "version": "3.8.0",
            "ecosystem": "pypi"
          },
          {
            "name": "pre-commit",
            "direct": false,
            "version": "4.6.0",
            "ecosystem": "pypi"
          },
          {
            "name": "prompt-toolkit",
            "direct": false,
            "version": "3.0.52",
            "ecosystem": "pypi"
          },
          {
            "name": "psutil",
            "direct": false,
            "version": "7.2.2",
            "ecosystem": "pypi"
          },
          {
            "name": "psycopg-binary",
            "direct": false,
            "version": "3.2.12",
            "ecosystem": "pypi"
          },
          {
            "name": "psycopg-binary",
            "direct": false,
            "version": "3.3.4",
            "ecosystem": "pypi"
          },
          {
            "name": "psycopg-pool",
            "direct": false,
            "version": "3.3.0",
            "ecosystem": "pypi"
          },
          {
            "name": "psycopg-pool",
            "direct": false,
            "version": "3.3.1",
            "ecosystem": "pypi"
          },
          {
            "name": "ptyprocess",
            "direct": false,
            "version": "0.7.0",
            "ecosystem": "pypi"
          },
          {
            "name": "pure-eval",
            "direct": false,
            "version": "0.2.3",
            "ecosystem": "pypi"
          },
          {
            "name": "pycparser",
            "direct": false,
            "version": "3.0",
            "ecosystem": "pypi"
          },
          {
            "name": "pygments",
            "direct": false,
            "version": "2.19.2",
            "ecosystem": "pypi"
          },
          {
            "name": "pygments",
            "direct": false,
            "version": "2.20.0",
            "ecosystem": "pypi"
          },
          {
            "name": "pyodbc",
            "direct": false,
            "version": "5.3.0",
            "ecosystem": "pypi"
          },
          {
            "name": "python-discovery",
            "direct": false,
            "version": "1.4.2",
            "ecosystem": "pypi"
          },
          {
            "name": "python-monkey-business",
            "direct": false,
            "version": "1.1.0",
            "ecosystem": "pypi"
          },
          {
            "name": "pyyaml",
            "direct": false,
            "version": "6.0.3",
            "ecosystem": "pypi"
          },
          {
            "name": "requirements-parser",
            "direct": false,
            "version": "0.13.1",
            "ecosystem": "pypi"
          },
          {
            "name": "ruff",
            "direct": false,
            "version": "0.14.14",
            "ecosystem": "pypi"
          },
          {
            "name": "six",
            "direct": false,
            "version": "1.17.0",
            "ecosystem": "pypi"
          },
          {
            "name": "snowballstemmer",
            "direct": false,
            "version": "3.0.1",
            "ecosystem": "pypi"
          },
          {
            "name": "soupsieve",
            "direct": false,
            "version": "2.8.3",
            "ecosystem": "pypi"
          },
          {
            "name": "soupsieve",
            "direct": false,
            "version": "2.8.4",
            "ecosystem": "pypi"
          },
          {
            "name": "sphinx",
            "direct": false,
            "version": "7.4.7",
            "ecosystem": "pypi"
          },
          {
            "name": "sphinxcontrib-applehelp",
            "direct": false,
            "version": "2.0.0",
            "ecosystem": "pypi"
          },
          {
            "name": "sphinxcontrib-devhelp",
            "direct": false,
            "version": "2.0.0",
            "ecosystem": "pypi"
          },
          {
            "name": "sphinxcontrib-htmlhelp",
            "direct": false,
            "version": "2.1.0",
            "ecosystem": "pypi"
          },
          {
            "name": "sphinxcontrib-jsmath",
            "direct": false,
            "version": "1.0.1",
            "ecosystem": "pypi"
          },
          {
            "name": "sphinxcontrib-qthelp",
            "direct": false,
            "version": "2.0.0",
            "ecosystem": "pypi"
          },
          {
            "name": "sphinxcontrib-serializinghtml",
            "direct": false,
            "version": "2.0.0",
            "ecosystem": "pypi"
          },
          {
            "name": "sqlparse",
            "direct": false,
            "version": "0.5.5",
            "ecosystem": "pypi"
          },
          {
            "name": "stack-data",
            "direct": false,
            "version": "0.6.3",
            "ecosystem": "pypi"
          },
          {
            "name": "tablib",
            "direct": false,
            "version": "3.5.0",
            "ecosystem": "pypi"
          },
          {
            "name": "tablib",
            "direct": false,
            "version": "3.9.0",
            "ecosystem": "pypi"
          },
          {
            "name": "text-unidecode",
            "direct": false,
            "version": "1.3",
            "ecosystem": "pypi"
          },
          {
            "name": "tomli",
            "direct": false,
            "version": "2.4.1",
            "ecosystem": "pypi"
          },
          {
            "name": "traitlets",
            "direct": false,
            "version": "5.14.3",
            "ecosystem": "pypi"
          },
          {
            "name": "traitlets",
            "direct": false,
            "version": "5.15.1",
            "ecosystem": "pypi"
          },
          {
            "name": "types-pyyaml",
            "direct": false,
            "version": "6.0.12.20260518",
            "ecosystem": "pypi"
          },
          {
            "name": "typing-extensions",
            "direct": false,
            "version": "4.15.0",
            "ecosystem": "pypi"
          },
          {
            "name": "tzdata",
            "direct": false,
            "version": "2025.3",
            "ecosystem": "pypi"
          },
          {
            "name": "tzdata",
            "direct": false,
            "version": "2026.2",
            "ecosystem": "pypi"
          },
          {
            "name": "urllib3",
            "direct": false,
            "version": "2.6.3",
            "ecosystem": "pypi"
          },
          {
            "name": "urllib3",
            "direct": false,
            "version": "2.7.0",
            "ecosystem": "pypi"
          },
          {
            "name": "virtualenv",
            "direct": false,
            "version": "20.38.0",
            "ecosystem": "pypi"
          },
          {
            "name": "virtualenv",
            "direct": false,
            "version": "21.5.1",
            "ecosystem": "pypi"
          },
          {
            "name": "vulture",
            "direct": false,
            "version": "2.14",
            "ecosystem": "pypi"
          },
          {
            "name": "wastd",
            "direct": false,
            "version": "2.3.0",
            "ecosystem": "pypi"
          },
          {
            "name": "wcwidth",
            "direct": false,
            "version": "0.6.0",
            "ecosystem": "pypi"
          },
          {
            "name": "wcwidth",
            "direct": false,
            "version": "0.8.1",
            "ecosystem": "pypi"
          },
          {
            "name": "xlrd",
            "direct": false,
            "version": "2.0.2",
            "ecosystem": "pypi"
          }
        ],
        "collected": true,
        "truncated": false,
        "total_count": 196,
        "direct_count": 69,
        "indirect_count": 127
      }
    },
    "maintainership": {
      "issues": {
        "open_prs": 14,
        "merged_prs": 191,
        "open_issues": 0,
        "closed_ratio": 1,
        "closed_issues": 329,
        "closed_unmerged_prs": 221
      },
      "bus_factor": 2,
      "bot_contributors": 1,
      "top_contributors": [
        {
          "type": "User",
          "login": "RickWangPerth",
          "commits": 1508,
          "avatar_url": "https://avatars.githubusercontent.com/u/99630657?v=4"
        },
        {
          "type": "User",
          "login": "ropable",
          "commits": 1350,
          "avatar_url": "https://avatars.githubusercontent.com/u/2167641?v=4"
        },
        {
          "type": "User",
          "login": "ehallein",
          "commits": 214,
          "avatar_url": "https://avatars.githubusercontent.com/u/32348557?v=4"
        },
        {
          "type": "User",
          "login": "LizzzzHFFF",
          "commits": 14,
          "avatar_url": "https://avatars.githubusercontent.com/u/133474843?v=4"
        },
        {
          "type": "User",
          "login": "florianm",
          "commits": 5,
          "avatar_url": "https://avatars.githubusercontent.com/u/762815?v=4"
        }
      ],
      "contributors_sampled": 5,
      "top_contributor_share": 0.488
    },
    "quality_signals": {
      "has_ci": true,
      "has_tests": true,
      "ci_workflows": [
        "multi-build.yml",
        "run-tests.yml"
      ],
      "has_docs_dir": true,
      "linter_configs": [
        ".flake8"
      ],
      "has_editorconfig": false,
      "has_linter_config": true,
      "has_precommit_config": true
    },
    "security_signals": {
      "lockfiles": [
        "uv.lock"
      ],
      "scorecard": {
        "checks": [
          {
            "name": "Binary-Artifacts",
            "score": 10,
            "reason": "no binaries found in the repo",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#binary-artifacts"
          },
          {
            "name": "Branch-Protection",
            "score": 0,
            "reason": "branch protection not enabled on development/release branches",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#branch-protection"
          },
          {
            "name": "CI-Tests",
            "score": 4,
            "reason": "5 out of 12 merged PRs checked by a CI test -- score normalized to 4",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#ci-tests"
          },
          {
            "name": "CII-Best-Practices",
            "score": 0,
            "reason": "no effort to earn an OpenSSF best practices badge detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#cii-best-practices"
          },
          {
            "name": "Code-Review",
            "score": 3,
            "reason": "Found 4/12 approved changesets -- score normalized to 3",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#code-review"
          },
          {
            "name": "Contributors",
            "score": 10,
            "reason": "project has 3 contributing companies or organizations -- score normalized to 10",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#contributors"
          },
          {
            "name": "Dangerous-Workflow",
            "score": 10,
            "reason": "no dangerous workflow patterns detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#dangerous-workflow"
          },
          {
            "name": "Dependency-Update-Tool",
            "score": 10,
            "reason": "update tool detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#dependency-update-tool"
          },
          {
            "name": "Fuzzing",
            "score": 0,
            "reason": "project is not fuzzed",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#fuzzing"
          },
          {
            "name": "License",
            "score": 10,
            "reason": "license file detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#license"
          },
          {
            "name": "Maintained",
            "score": 10,
            "reason": "30 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 10",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#maintained"
          },
          {
            "name": "Packaging",
            "score": 10,
            "reason": "packaging workflow detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#packaging"
          },
          {
            "name": "Pinned-Dependencies",
            "score": 7,
            "reason": "dependency not pinned by hash detected -- score normalized to 7",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#pinned-dependencies"
          },
          {
            "name": "SAST",
            "score": 0,
            "reason": "SAST tool is not run on all commits -- score normalized to 0",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#sast"
          },
          {
            "name": "Security-Policy",
            "score": 10,
            "reason": "security policy file detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#security-policy"
          },
          {
            "name": "Signed-Releases",
            "score": null,
            "reason": "no releases found",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#signed-releases"
          },
          {
            "name": "Token-Permissions",
            "score": 9,
            "reason": "detected GitHub workflow tokens with excessive permissions",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#token-permissions"
          },
          {
            "name": "Vulnerabilities",
            "score": 0,
            "reason": "17 existing vulnerabilities detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#vulnerabilities"
          }
        ],
        "commit": "68af0e72ca8129a701311eeee09ea6d68d107d44",
        "ran_at": "2026-07-27T06:45:14Z",
        "aggregate_score": 6.3,
        "scorecard_version": "v5.5.0"
      },
      "has_codeql_workflow": false,
      "has_security_policy": true,
      "has_dependabot_config": true
    },
    "contribution_flow": {
      "collected": true,
      "ci_last_run_at": "2026-07-26T06:12:46Z",
      "oldest_open_prs": [
        {
          "number": 780,
          "created_at": "2026-06-20T13:32:42Z",
          "last_comment_at": "2026-06-20T13:33:20Z",
          "last_comment_author": "socket-security"
        },
        {
          "number": 783,
          "created_at": "2026-06-20T13:33:07Z",
          "last_comment_at": "2026-06-20T13:33:38Z",
          "last_comment_author": "socket-security"
        },
        {
          "number": 793,
          "created_at": "2026-07-04T13:32:19Z",
          "last_comment_at": null,
          "last_comment_author": null
        },
        {
          "number": 794,
          "created_at": "2026-07-04T13:32:21Z",
          "last_comment_at": null,
          "last_comment_author": null
        },
        {
          "number": 795,
          "created_at": "2026-07-04T13:32:25Z",
          "last_comment_at": null,
          "last_comment_author": null
        },
        {
          "number": 796,
          "created_at": "2026-07-04T13:32:29Z",
          "last_comment_at": null,
          "last_comment_author": null
        },
        {
          "number": 797,
          "created_at": "2026-07-04T13:32:53Z",
          "last_comment_at": "2026-07-04T13:33:10Z",
          "last_comment_author": "socket-security"
        },
        {
          "number": 798,
          "created_at": "2026-07-04T13:33:47Z",
          "last_comment_at": null,
          "last_comment_author": null
        },
        {
          "number": 799,
          "created_at": "2026-07-04T13:34:27Z",
          "last_comment_at": "2026-07-04T13:34:47Z",
          "last_comment_author": "socket-security"
        },
        {
          "number": 804,
          "created_at": "2026-07-11T13:32:22Z",
          "last_comment_at": null,
          "last_comment_author": null
        },
        {
          "number": 809,
          "created_at": "2026-07-16T07:52:08Z",
          "last_comment_at": null,
          "last_comment_author": null
        },
        {
          "number": 813,
          "created_at": "2026-07-21T13:34:40Z",
          "last_comment_at": "2026-07-21T13:35:08Z",
          "last_comment_author": "socket-security"
        },
        {
          "number": 814,
          "created_at": "2026-07-22T14:07:43Z",
          "last_comment_at": "2026-07-22T14:08:07Z",
          "last_comment_author": "socket-security"
        },
        {
          "number": 817,
          "created_at": "2026-07-24T07:51:48Z",
          "last_comment_at": null,
          "last_comment_author": null
        }
      ],
      "last_merged_pr_at": "2026-07-27T00:43:25Z",
      "ci_last_conclusion": "SUCCESS",
      "oldest_open_issues": []
    }
  },
  "config": {
    "disabled_metrics": [],
    "disabled_categories": [],
    "disabled_components": {}
  },
  "source": {
    "url": "https://github.com/dbca-wa/wastd",
    "host": "github.com",
    "name": "wastd",
    "owner": "dbca-wa"
  },
  "metrics": {
    "overall": {
      "key": "overall",
      "band": "moderate",
      "name": "Overall health",
      "note": null,
      "notes": [],
      "value": 68,
      "inputs": {
        "security": 57,
        "vitality": 89,
        "community": 41,
        "governance": 62,
        "engineering": 85
      },
      "components": []
    },
    "categories": [
      {
        "key": "vitality",
        "band": "excellent",
        "name": "Vitality",
        "value": 89,
        "weight": 0.22,
        "metrics": [
          {
            "key": "development_activity",
            "band": "excellent",
            "name": "Development activity",
            "note": null,
            "notes": [],
            "value": 89,
            "inputs": {
              "commits_last_year": 295,
              "human_commit_share": 0.9,
              "days_since_last_push": 0,
              "active_weeks_last_year": 36
            },
            "components": [
              {
                "key": "push_recency",
                "name": "Push recency",
                "detail": "last push 0 days ago",
                "points": 36,
                "status": "met",
                "details": [
                  {
                    "code": "push_recency",
                    "params": {
                      "days": 0
                    }
                  }
                ],
                "max_points": 36
              },
              {
                "key": "commit_cadence",
                "name": "Commit cadence",
                "detail": "36/52 weeks with commits",
                "points": 24.9,
                "status": "partial",
                "details": [
                  {
                    "code": "commit_cadence_weeks",
                    "params": {
                      "weeks": 36
                    }
                  }
                ],
                "max_points": 36
              },
              {
                "key": "commit_volume",
                "name": "Commit volume",
                "detail": "295 commits in the last year",
                "points": 18,
                "status": "met",
                "details": [
                  {
                    "code": "commits_last_year",
                    "params": {
                      "count": 295
                    }
                  }
                ],
                "max_points": 18
              },
              {
                "key": "openssf_scorecard_maintained",
                "name": "OpenSSF Scorecard: Maintained",
                "detail": "30 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 10",
                "points": 10,
                "status": "met",
                "details": [],
                "max_points": 10
              }
            ]
          },
          {
            "key": "release_discipline",
            "band": "excellent",
            "name": "Release discipline",
            "note": "Excluded from scoring (no data or not applicable): OpenSSF Scorecard: Signed-Releases. Remaining weights renormalized.",
            "notes": [
              {
                "code": "excluded_no_data",
                "params": {
                  "components": [
                    "openssf_scorecard_signed_releases"
                  ]
                }
              },
              {
                "code": "weights_renormalized",
                "params": {}
              }
            ],
            "value": 88,
            "inputs": {
              "releases_count": 91,
              "latest_release_tag": "v2.3.3",
              "releases_from_tags": true,
              "days_since_latest_release": 10,
              "mean_days_between_releases": 20.5
            },
            "components": [
              {
                "key": "ships_releases",
                "name": "Ships releases",
                "detail": "91 version tags (no GitHub releases)",
                "points": 16.2,
                "status": "partial",
                "details": [
                  {
                    "code": "version_tags_no_releases",
                    "params": {
                      "count": 91
                    }
                  }
                ],
                "max_points": 27
              },
              {
                "key": "release_recency",
                "name": "Release recency",
                "detail": "latest release 10 days ago",
                "points": 36,
                "status": "met",
                "details": [
                  {
                    "code": "release_recency",
                    "params": {
                      "days": 10
                    }
                  }
                ],
                "max_points": 36
              },
              {
                "key": "release_cadence",
                "name": "Release cadence",
                "detail": "a release every ~20.5 days",
                "points": 27,
                "status": "met",
                "details": [
                  {
                    "code": "release_cadence",
                    "params": {
                      "gap": 20.5
                    }
                  }
                ],
                "max_points": 27
              },
              {
                "key": "openssf_scorecard_signed_releases",
                "name": "OpenSSF Scorecard: Signed-Releases",
                "detail": "no releases found",
                "points": 0,
                "status": "excluded",
                "details": [
                  {
                    "code": "no_data",
                    "params": {}
                  }
                ],
                "max_points": 10
              }
            ]
          },
          {
            "key": "abandonment",
            "band": "excellent",
            "name": "Abandonment",
            "note": null,
            "notes": [],
            "value": 100,
            "inputs": {
              "cap": null,
              "state": "maintained",
              "guards": [],
              "signals": [],
              "red_flag": false,
              "multiplier_pct": 100,
              "declared_reason": null,
              "unverified_reason": null,
              "unanswered_open_prs": null,
              "unanswered_open_issues": null,
              "days_since_last_merged_pr": null,
              "days_since_last_human_commit": 10,
              "days_since_last_human_commit_is_floor": false
            },
            "components": [
              {
                "key": "project_is_still_maintained",
                "name": "Project is still maintained",
                "detail": "last human commit 10 days ago",
                "points": 100,
                "status": "met",
                "details": [
                  {
                    "code": "abandonment_maintained",
                    "params": {
                      "days": 10
                    }
                  }
                ],
                "max_points": 100
              }
            ]
          }
        ],
        "description": "Is the project alive — is code being written and are releases shipping?"
      },
      {
        "key": "community",
        "band": "at_risk",
        "name": "Community & Adoption",
        "value": 41,
        "weight": 0.18,
        "metrics": [
          {
            "key": "popularity",
            "band": "critical",
            "name": "Popularity & adoption",
            "note": null,
            "notes": [],
            "value": 20,
            "inputs": {
              "forks": 4,
              "stars": 6,
              "watchers": 7,
              "growth_state": "unverified",
              "growth_factor_pct": 100,
              "growth_unverified_reason": "no_history"
            },
            "components": [
              {
                "key": "stars",
                "name": "Stars",
                "detail": "6 stars",
                "points": 11.3,
                "status": "partial",
                "details": [
                  {
                    "code": "stars",
                    "params": {
                      "count": 6
                    }
                  }
                ],
                "max_points": 60
              },
              {
                "key": "forks",
                "name": "Forks",
                "detail": "4 forks",
                "points": 4,
                "status": "partial",
                "details": [
                  {
                    "code": "forks",
                    "params": {
                      "count": 4
                    }
                  }
                ],
                "max_points": 25
              },
              {
                "key": "watchers",
                "name": "Watchers",
                "detail": "7 watchers",
                "points": 4.3,
                "status": "partial",
                "details": [
                  {
                    "code": "watchers",
                    "params": {
                      "count": 7
                    }
                  }
                ],
                "max_points": 15
              }
            ]
          },
          {
            "key": "community_health",
            "band": "moderate",
            "name": "Community health",
            "note": null,
            "notes": [],
            "value": 65,
            "inputs": {
              "has_readme": true,
              "has_license": true,
              "has_contributing": false,
              "has_issue_template": false,
              "has_code_of_conduct": true,
              "has_pull_request_template": false
            },
            "components": [
              {
                "key": "readme",
                "name": "README",
                "detail": null,
                "points": 22.5,
                "status": "met",
                "details": [],
                "max_points": 22.5
              },
              {
                "key": "license",
                "name": "License",
                "detail": "recognized license (MIT)",
                "points": 22.5,
                "status": "met",
                "details": [
                  {
                    "code": "license_standard",
                    "params": {}
                  },
                  {
                    "code": "license_spdx",
                    "params": {
                      "spdx": "MIT"
                    }
                  }
                ],
                "max_points": 22.5
              },
              {
                "key": "contributing_guide",
                "name": "CONTRIBUTING guide",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 18
              },
              {
                "key": "code_of_conduct",
                "name": "Code of conduct",
                "detail": null,
                "points": 13.5,
                "status": "met",
                "details": [],
                "max_points": 13.5
              },
              {
                "key": "issue_template",
                "name": "Issue template",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 7.2
              },
              {
                "key": "pr_template",
                "name": "PR template",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 6.3
              }
            ]
          }
        ],
        "description": "Does the project have users, downloads, attention, and a welcoming setup for contributors?"
      },
      {
        "key": "governance",
        "band": "moderate",
        "name": "Sustainability & Governance",
        "value": 62,
        "weight": 0.24,
        "metrics": [
          {
            "key": "maintainer_resilience",
            "band": "moderate",
            "name": "Maintainer resilience (bus factor)",
            "note": null,
            "notes": [],
            "value": 54,
            "inputs": {
              "bus_factor": 2,
              "contributors_sampled": 5,
              "top_contributor_share": 0.488
            },
            "components": [
              {
                "key": "bus_factor",
                "name": "Bus factor",
                "detail": "2 contributor(s) cover half of all commits",
                "points": 25.2,
                "status": "partial",
                "details": [
                  {
                    "code": "bus_factor",
                    "params": {
                      "count": 2
                    }
                  }
                ],
                "max_points": 54
              },
              {
                "key": "commit_distribution",
                "name": "Commit distribution",
                "detail": "top contributor authored 49% of commits",
                "points": 11.5,
                "status": "partial",
                "details": [
                  {
                    "code": "top_contributor_share",
                    "params": {
                      "share": 49
                    }
                  }
                ],
                "max_points": 22.5
              },
              {
                "key": "contributor_breadth",
                "name": "Contributor breadth",
                "detail": "5 contributors",
                "points": 6.8,
                "status": "partial",
                "details": [
                  {
                    "code": "contributors_sampled",
                    "params": {
                      "count": 5
                    }
                  }
                ],
                "max_points": 13.5
              },
              {
                "key": "openssf_scorecard_contributors",
                "name": "OpenSSF Scorecard: Contributors",
                "detail": "project has 3 contributing companies or organizations -- score normalized to 10",
                "points": 10,
                "status": "met",
                "details": [],
                "max_points": 10
              }
            ]
          },
          {
            "key": "responsiveness",
            "band": "moderate",
            "name": "Issue & PR responsiveness",
            "note": null,
            "notes": [],
            "value": 69,
            "inputs": {
              "merged_prs": 191,
              "open_issues": 0,
              "closed_issues": 329,
              "issue_closed_ratio": 1,
              "closed_unmerged_prs": 221
            },
            "components": [
              {
                "key": "issue_resolution",
                "name": "Issue resolution",
                "detail": "100% of issues closed",
                "points": 46.8,
                "status": "met",
                "details": [
                  {
                    "code": "issues_closed_share",
                    "params": {
                      "share": 100
                    }
                  }
                ],
                "max_points": 46.75
              },
              {
                "key": "pr_acceptance",
                "name": "PR acceptance",
                "detail": "191/412 decided PRs merged",
                "points": 17.7,
                "status": "partial",
                "details": [
                  {
                    "code": "decided_prs_merged",
                    "params": {
                      "merged": 191,
                      "decided": 412
                    }
                  }
                ],
                "max_points": 38.25
              },
              {
                "key": "openssf_scorecard_code_review",
                "name": "OpenSSF Scorecard: Code-Review",
                "detail": "Found 4/12 approved changesets -- score normalized to 3",
                "points": 4.5,
                "status": "partial",
                "details": [],
                "max_points": 15
              }
            ]
          },
          {
            "key": "stewardship",
            "band": "moderate",
            "name": "Ownership & stewardship",
            "note": null,
            "notes": [],
            "value": 66,
            "inputs": {
              "followers": 28,
              "owner_type": "Organization",
              "is_verified": null,
              "owner_login": "dbca-wa",
              "public_repos": 234,
              "account_age_days": 3851
            },
            "components": [
              {
                "key": "ownership_backing",
                "name": "Ownership backing",
                "detail": "organization-owned",
                "points": 30,
                "status": "met",
                "details": [
                  {
                    "code": "owner_organization",
                    "params": {}
                  }
                ],
                "max_points": 30
              },
              {
                "key": "verified_domain",
                "name": "Verified domain",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 20
              },
              {
                "key": "owner_reach",
                "name": "Owner reach",
                "detail": "28 followers of dbca-wa",
                "points": 10.5,
                "status": "partial",
                "details": [
                  {
                    "code": "owner_followers",
                    "params": {
                      "count": 28,
                      "login": "dbca-wa"
                    }
                  }
                ],
                "max_points": 25
              },
              {
                "key": "track_record",
                "name": "Track record",
                "detail": "234 public repos, account ~10 yr old",
                "points": 25,
                "status": "met",
                "details": [
                  {
                    "code": "public_repos",
                    "params": {
                      "count": 234
                    }
                  },
                  {
                    "code": "account_age_years",
                    "params": {
                      "years": 10
                    }
                  }
                ],
                "max_points": 25
              }
            ]
          }
        ],
        "description": "Will the project survive its people — bus factor, responsiveness, who backs it, and package upkeep?"
      },
      {
        "key": "engineering",
        "band": "excellent",
        "name": "Engineering Quality",
        "value": 85,
        "weight": 0.2,
        "metrics": [
          {
            "key": "engineering_practices",
            "band": "good",
            "name": "Engineering practices",
            "note": null,
            "notes": [],
            "value": 82,
            "inputs": {
              "has_ci": true,
              "has_tests": true,
              "has_editorconfig": false,
              "has_linter_config": true,
              "has_precommit_config": true
            },
            "components": [
              {
                "key": "ci_workflows",
                "name": "CI workflows",
                "detail": "2 workflow(s)",
                "points": 24,
                "status": "met",
                "details": [
                  {
                    "code": "ci_workflows",
                    "params": {
                      "count": 2
                    }
                  }
                ],
                "max_points": 24
              },
              {
                "key": "tests_present",
                "name": "Tests present",
                "detail": null,
                "points": 24,
                "status": "met",
                "details": [],
                "max_points": 24
              },
              {
                "key": "linter_config",
                "name": "Linter config",
                "detail": ".flake8",
                "points": 16,
                "status": "met",
                "details": [
                  {
                    "code": "file_list",
                    "params": {
                      "files": ".flake8"
                    }
                  }
                ],
                "max_points": 16
              },
              {
                "key": "pre_commit_hooks",
                "name": "Pre-commit hooks",
                "detail": null,
                "points": 9.6,
                "status": "met",
                "details": [],
                "max_points": 9.6
              },
              {
                "key": "editorconfig",
                "name": ".editorconfig",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 6.4
              },
              {
                "key": "openssf_scorecard_ci_tests",
                "name": "OpenSSF Scorecard: CI-Tests",
                "detail": "5 out of 12 merged PRs checked by a CI test -- score normalized to 4",
                "points": 8,
                "status": "partial",
                "details": [],
                "max_points": 20
              }
            ]
          },
          {
            "key": "documentation",
            "band": "excellent",
            "name": "Documentation",
            "note": null,
            "notes": [],
            "value": 90,
            "inputs": {
              "topics": [
                "biodiversity",
                "conservation-bio",
                "marine-species",
                "strandings",
                "marine-wildlife-incidents",
                "marine-turtles"
              ],
              "has_wiki": false,
              "homepage": "https://dbca-wa.github.io/wastd/",
              "has_readme": true,
              "has_docs_dir": true,
              "has_description": true
            },
            "components": [
              {
                "key": "readme",
                "name": "README",
                "detail": null,
                "points": 30,
                "status": "met",
                "details": [],
                "max_points": 30
              },
              {
                "key": "documentation_directory",
                "name": "Documentation directory",
                "detail": null,
                "points": 25,
                "status": "met",
                "details": [],
                "max_points": 25
              },
              {
                "key": "documentation_homepage_site",
                "name": "Documentation / homepage site",
                "detail": "https://dbca-wa.github.io/wastd/",
                "points": 15,
                "status": "met",
                "details": [],
                "max_points": 15
              },
              {
                "key": "repository_description",
                "name": "Repository description",
                "detail": null,
                "points": 10,
                "status": "met",
                "details": [],
                "max_points": 10
              },
              {
                "key": "topics",
                "name": "Topics",
                "detail": "6 topics",
                "points": 10,
                "status": "met",
                "details": [
                  {
                    "code": "topics_count",
                    "params": {
                      "count": 6
                    }
                  }
                ],
                "max_points": 10
              },
              {
                "key": "wiki",
                "name": "Wiki",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 10
              }
            ]
          }
        ],
        "description": "Are baseline engineering and documentation practices in place?"
      },
      {
        "key": "security",
        "band": "moderate",
        "name": "Security",
        "value": 57,
        "weight": 0.16,
        "metrics": [
          {
            "key": "security_posture",
            "band": "moderate",
            "name": "Security posture",
            "note": "Excluded from scoring (no data or not applicable): Signed-Releases. Remaining weights renormalized.",
            "notes": [
              {
                "code": "excluded_no_data",
                "params": {
                  "components": [
                    "signed_releases"
                  ]
                }
              },
              {
                "code": "weights_renormalized",
                "params": {}
              }
            ],
            "value": 63,
            "inputs": {
              "source": "openssf_scorecard",
              "checks_evaluated": 17,
              "scorecard_version": "v5.5.0",
              "checks_inconclusive": 1,
              "scorecard_aggregate": 6.3
            },
            "components": [
              {
                "key": "binary_artifacts",
                "name": "Binary-Artifacts",
                "detail": "no binaries found in the repo",
                "points": 7.5,
                "status": "met",
                "details": [],
                "max_points": 7.5
              },
              {
                "key": "branch_protection",
                "name": "Branch-Protection",
                "detail": "branch protection not enabled on development/release branches",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 7.5
              },
              {
                "key": "ci_tests",
                "name": "CI-Tests",
                "detail": "5 out of 12 merged PRs checked by a CI test -- score normalized to 4",
                "points": 1,
                "status": "partial",
                "details": [],
                "max_points": 2.5
              },
              {
                "key": "cii_best_practices",
                "name": "CII-Best-Practices",
                "detail": "no effort to earn an OpenSSF best practices badge detected",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 2.5
              },
              {
                "key": "code_review",
                "name": "Code-Review",
                "detail": "Found 4/12 approved changesets -- score normalized to 3",
                "points": 2.2,
                "status": "partial",
                "details": [],
                "max_points": 7.5
              },
              {
                "key": "contributors",
                "name": "Contributors",
                "detail": "project has 3 contributing companies or organizations -- score normalized to 10",
                "points": 2.5,
                "status": "met",
                "details": [],
                "max_points": 2.5
              },
              {
                "key": "dangerous_workflow",
                "name": "Dangerous-Workflow",
                "detail": "no dangerous workflow patterns detected",
                "points": 10,
                "status": "met",
                "details": [],
                "max_points": 10
              },
              {
                "key": "dependency_update_tool",
                "name": "Dependency-Update-Tool",
                "detail": "update tool detected",
                "points": 7.5,
                "status": "met",
                "details": [],
                "max_points": 7.5
              },
              {
                "key": "fuzzing",
                "name": "Fuzzing",
                "detail": "project is not fuzzed",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 5
              },
              {
                "key": "license",
                "name": "License",
                "detail": "license file detected",
                "points": 2.5,
                "status": "met",
                "details": [],
                "max_points": 2.5
              },
              {
                "key": "maintained",
                "name": "Maintained",
                "detail": "30 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 10",
                "points": 7.5,
                "status": "met",
                "details": [],
                "max_points": 7.5
              },
              {
                "key": "packaging",
                "name": "Packaging",
                "detail": "packaging workflow detected",
                "points": 5,
                "status": "met",
                "details": [],
                "max_points": 5
              },
              {
                "key": "pinned_dependencies",
                "name": "Pinned-Dependencies",
                "detail": "dependency not pinned by hash detected -- score normalized to 7",
                "points": 3.5,
                "status": "partial",
                "details": [],
                "max_points": 5
              },
              {
                "key": "sast",
                "name": "SAST",
                "detail": "SAST tool is not run on all commits -- score normalized to 0",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 5
              },
              {
                "key": "security_policy",
                "name": "Security-Policy",
                "detail": "security policy file detected",
                "points": 5,
                "status": "met",
                "details": [],
                "max_points": 5
              },
              {
                "key": "signed_releases",
                "name": "Signed-Releases",
                "detail": "no releases found",
                "points": 0,
                "status": "excluded",
                "details": [
                  {
                    "code": "no_data",
                    "params": {}
                  }
                ],
                "max_points": 7.5
              },
              {
                "key": "token_permissions",
                "name": "Token-Permissions",
                "detail": "detected GitHub workflow tokens with excessive permissions",
                "points": 6.8,
                "status": "partial",
                "details": [],
                "max_points": 7.5
              },
              {
                "key": "vulnerabilities",
                "name": "Vulnerabilities",
                "detail": "17 existing vulnerabilities detected",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 7.5
              }
            ]
          },
          {
            "key": "dependency_advisories",
            "band": "at_risk",
            "name": "Dependency advisories",
            "note": "Excluded from scoring (no data or not applicable): Indirect dependencies free of known advisories. Remaining weights renormalized. Matched 196 resolved dependencies against OSV. This repository publishes no package the index resolves, so the repository dependency graph was assessed instead. That graph mixes development and test pins with shipped dependencies, so only the declared runtime dependencies are scored; transitive findings are reported as context and excluded from the score. Reachability is not analyzed.",
            "notes": [
              {
                "code": "excluded_no_data",
                "params": {
                  "components": [
                    "indirect_dependencies_free_of_known_advisories"
                  ]
                }
              },
              {
                "code": "weights_renormalized",
                "params": {}
              },
              {
                "code": "advisories_scope_repository",
                "params": {
                  "assessed": 196
                }
              },
              {
                "code": "advisories_repo_graph_caveat",
                "params": {}
              },
              {
                "code": "advisories_reachability",
                "params": {}
              }
            ],
            "value": 35,
            "inputs": {
              "source": "osv",
              "advisories": 104,
              "affected_packages": 15,
              "assessed_packages": 196,
              "unassessed_packages": 0,
              "affected_by_severity": "critical 5, high 4, moderate 5, low 1",
              "direct_affected_packages": 7
            },
            "components": [
              {
                "key": "direct_dependencies_free_of_known_advisories",
                "name": "Direct dependencies free of known advisories",
                "detail": "7 affected: django 4.2.29 (critical 9.8), pillow 12.1.1 (critical 9.1), pillow 12.2.0 (critical 9.1), +4 more",
                "points": 3.6,
                "status": "partial",
                "details": [
                  {
                    "code": "advisories_affected",
                    "params": {
                      "count": 7,
                      "packages": "django 4.2.29 (critical 9.8), pillow 12.1.1 (critical 9.1), pillow 12.2.0 (critical 9.1)"
                    }
                  },
                  {
                    "code": "advisories_affected_more",
                    "params": {
                      "count": 4
                    }
                  }
                ],
                "max_points": 35
              },
              {
                "key": "indirect_dependencies_free_of_known_advisories",
                "name": "Indirect dependencies free of known advisories",
                "detail": "transitive set not separable from development and test dependencies in this scope",
                "points": 0,
                "status": "excluded",
                "details": [
                  {
                    "code": "advisories_scope_not_separable",
                    "params": {}
                  }
                ],
                "max_points": 25
              },
              {
                "key": "no_advisories_left_outstanding",
                "name": "No advisories left outstanding",
                "detail": "4 advisory-carrying package(s) unaddressed past 90 days; oldest published 123 days ago",
                "points": 22.5,
                "status": "partial",
                "details": [
                  {
                    "code": "advisories_stale",
                    "params": {
                      "days": 90,
                      "count": 4,
                      "oldest": 123
                    }
                  }
                ],
                "max_points": 40
              }
            ]
          },
          {
            "key": "malicious_dependencies",
            "band": "excellent",
            "name": "Malicious dependencies",
            "note": null,
            "notes": [],
            "value": 100,
            "inputs": {
              "source": "osv",
              "meaning": "reported as a malicious package by the OpenSSF corpus; the remedy is removal or moving off the compromised name, never an upgrade of the same artifact. Versions the registry has since pulled are listed but not scored",
              "packages": [],
              "red_flag": false,
              "assessed_packages": 196,
              "malicious_packages": 0,
              "direct_malicious_packages": 0,
              "withdrawn_malicious_packages": 0,
              "installable_malicious_packages": 0
            },
            "components": [
              {
                "key": "no_dependency_reported_as_a_malicious_package",
                "name": "No dependency reported as a malicious package",
                "detail": "no dependency is reported as a malicious package",
                "points": 100,
                "status": "met",
                "details": [
                  {
                    "code": "no_malicious_dependencies",
                    "params": {}
                  }
                ],
                "max_points": 100
              }
            ]
          },
          {
            "key": "high_risk_jurisdiction_exposure",
            "band": "excellent",
            "name": "High-Risk Jurisdiction Exposure",
            "note": "Only high-confidence self-published location evidence affects this multiplier. Ambiguous matches are review-only; country evidence is not proof of nationality, citizenship, legal registration, malicious intent, or sanctions status.",
            "notes": [
              {
                "code": "jurisdiction_evidence_limits",
                "params": {}
              }
            ],
            "value": 100,
            "inputs": {
              "meaning": "self-published location evidence; not nationality or citizenship",
              "red_flag": false,
              "exposures": [],
              "policy_countries": [
                "Russia",
                "Iran",
                "North Korea"
              ],
              "review_only_matches": 0,
              "assessed_self_published_locations": 6
            },
            "components": [
              {
                "key": "policy_exposure_multiplier",
                "name": "Policy exposure multiplier",
                "detail": "no confirmed policy-scope location match",
                "points": 100,
                "status": "met",
                "details": [
                  {
                    "code": "jurisdiction_no_match",
                    "params": {}
                  }
                ],
                "max_points": 100
              }
            ]
          }
        ],
        "description": "Are visible security and supply-chain practices strong, with no malicious dependency and no unresolved high-risk jurisdiction exposure?"
      },
      {
        "key": "ai_readiness",
        "band": "moderate",
        "name": "AI Readiness",
        "value": 68,
        "weight": 0,
        "metrics": [
          {
            "key": "ai_agent_context",
            "band": "moderate",
            "name": "Agent context & guidance",
            "note": null,
            "notes": [],
            "value": 62,
            "inputs": {
              "has_llms_txt": false,
              "legible_history_share": 0.322,
              "agent_instruction_files": [
                ".github/copilot-instructions.md"
              ],
              "agent_instruction_max_bytes": 6785
            },
            "components": [
              {
                "key": "agent_instructions",
                "name": "Agent instructions",
                "detail": ".github/copilot-instructions.md",
                "points": 45,
                "status": "met",
                "details": [
                  {
                    "code": "file_list",
                    "params": {
                      "files": ".github/copilot-instructions.md"
                    }
                  }
                ],
                "max_points": 45
              },
              {
                "key": "machine_readable_docs_llms_txt",
                "name": "Machine-readable docs (llms.txt)",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 15
              },
              {
                "key": "legible_commit_history",
                "name": "Legible commit history",
                "detail": "29 of 90 human commits state their intent (structured subject or explanatory body)",
                "points": 17.2,
                "status": "partial",
                "details": [
                  {
                    "code": "legible_history",
                    "params": {
                      "legible": 29,
                      "sampled": 90
                    }
                  }
                ],
                "max_points": 40
              }
            ]
          },
          {
            "key": "ai_verify_loop",
            "band": "moderate",
            "name": "Verify loop (build / test / typecheck)",
            "note": null,
            "notes": [],
            "value": 69,
            "inputs": {
              "has_nix": false,
              "has_tests": true,
              "lockfiles": [
                "uv.lock"
              ],
              "has_dockerfile": true,
              "typed_language": false,
              "bootstrap_files": [],
              "has_devcontainer": false,
              "has_linter_config": true,
              "typecheck_configs": [
                "pyrightconfig.json"
              ],
              "agent_commit_share": 0,
              "toolchain_manifests": [],
              "dependency_bot_commit_share": 0.1
            },
            "components": [
              {
                "key": "one_command_bootstrap",
                "name": "One-command bootstrap",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 18
              },
              {
                "key": "automated_tests",
                "name": "Automated tests",
                "detail": null,
                "points": 22,
                "status": "met",
                "details": [],
                "max_points": 22
              },
              {
                "key": "lint_format_config",
                "name": "Lint / format config",
                "detail": ".flake8",
                "points": 11,
                "status": "met",
                "details": [
                  {
                    "code": "file_list",
                    "params": {
                      "files": ".flake8"
                    }
                  }
                ],
                "max_points": 11
              },
              {
                "key": "static_type_checking",
                "name": "Static type checking",
                "detail": "pyrightconfig.json",
                "points": 11,
                "status": "met",
                "details": [
                  {
                    "code": "file_list",
                    "params": {
                      "files": "pyrightconfig.json"
                    }
                  }
                ],
                "max_points": 11
              },
              {
                "key": "reproducible_environment",
                "name": "Reproducible environment",
                "detail": "Dockerfile, lockfile",
                "points": 10,
                "status": "met",
                "details": [
                  {
                    "code": "file_list",
                    "params": {
                      "files": "Dockerfile, lockfile"
                    }
                  }
                ],
                "max_points": 10
              },
              {
                "key": "demonstrated_agent_practice",
                "name": "Demonstrated agent practice",
                "detail": "no agent-authored commits among the last 100",
                "points": 0,
                "status": "missed",
                "details": [
                  {
                    "code": "no_agent_authored_commits",
                    "params": {
                      "sampled": 100
                    }
                  }
                ],
                "max_points": 10
              },
              {
                "key": "automated_maintenance",
                "name": "Automated maintenance",
                "detail": "10 of the last 100 commits are automated dependency updates",
                "points": 8,
                "status": "met",
                "details": [
                  {
                    "code": "dependency_bot_commits",
                    "params": {
                      "count": 10,
                      "sampled": 100
                    }
                  }
                ],
                "max_points": 8
              },
              {
                "key": "openssf_scorecard_pinned_dependencies",
                "name": "OpenSSF Scorecard: Pinned-Dependencies",
                "detail": "dependency not pinned by hash detected -- score normalized to 7",
                "points": 7,
                "status": "partial",
                "details": [],
                "max_points": 10
              }
            ]
          },
          {
            "key": "ai_code_legibility",
            "band": "good",
            "name": "Code legibility for models",
            "note": null,
            "notes": [],
            "value": 80,
            "inputs": {
              "primary_language": "Python",
              "largest_source_bytes": 265172,
              "source_files_sampled": 148,
              "oversized_source_files": 6
            },
            "components": [
              {
                "key": "type_checkable_code",
                "name": "Type-checkable code",
                "detail": "Python with type-check config (pyrightconfig.json)",
                "points": 27,
                "status": "partial",
                "details": [
                  {
                    "code": "typecheck_config_language",
                    "params": {
                      "files": "pyrightconfig.json",
                      "language": "Python"
                    }
                  }
                ],
                "max_points": 45
              },
              {
                "key": "manageable_file_sizes",
                "name": "Manageable file sizes",
                "detail": "6/148 source files over 60KB",
                "points": 52.8,
                "status": "partial",
                "details": [
                  {
                    "code": "oversized_source_files",
                    "params": {
                      "kb": 60,
                      "sampled": 148,
                      "oversized": 6
                    }
                  }
                ],
                "max_points": 55
              }
            ]
          }
        ],
        "description": "How well is the repo equipped to be developed and maintained with AI coding agents? An independent, experimental badge — weight 0.0, so it is surfaced on its own and does not affect the overall health score."
      }
    ],
    "metrics_version": "1.13.0"
  },
  "warnings": [
    "Star history unavailable: GitHub GraphQL error: Resource not accessible by personal access token",
    "Could not fetch pypi package 'wastd' from its registry"
  ],
  "report_type": "repository",
  "generated_at": "2026-07-27T06:45:31.333876Z",
  "schema_version": "0.27.0",
  "badge_url": "https://raw.githubusercontent.com/inspect-software/badges/main/v1/d/dbca-wa/wastd.svg",
  "full_name": "dbca-wa/wastd",
  "license_state": "standard",
  "license_spdx": "MIT"
}

Bewertungen sind Signale, keine Garantien. Sie spiegeln öffentlich sichtbare Praxis auf GitHub wider — kein Code-Audit und keine Sicherheitsgarantie.

Fehlende Daten werden ausgeschlossen und die Gewichte neu normiert, nie als null bewertet. Die Methodik ist versioniert und offen: Metriken v1.13.0, Schema v0.27.0 — vollständige Methodik · Metriken-Wiki.

Wie ein einzelnes Ergebnis im Gesamtregister steht: aggregierte Statistiken.