Datafortelling basert på data fra fagsystemet Fia. Prosjektet bygges med github workflow og deployes til NAIS som en NAIS job.
Dette prosjektet bruker Quarto for å generere html filer for datafortellingene.
Som prosjekt- og avhengighetsmanager bruker vi uv.
Prosjektet krever at riktig versjon av Python er installert, som definert i pyproject.toml og .python-version.
Installer Quarto ved å følge guiden på quarto sine nettsider.
uv kan installeres med:
curl -LsSf https://astral.sh/uv/install.sh | sh
evt med andre måter som forklart på uv sine nettsider.
Om ønskelig kan uv også installere og håndtere forskjellige Python versjoner for deg.
Installer git pre-commit hooks med
uv run pre-commit install
Avhengigheter og oppsettet av prosjektet er definert i pyproject.toml, denne og uv.lock brukes av uv for å lage det i virtuelle miljøet.
For å opprette det virtuelle miljøet og installere avhengighetene, kjør:
uv sync
output fra disse sier også hvor det virtuelle miljøet legges (default i en .venv mappe i roten av prosjektet), hvilken Python interpreter som ble brukt og versjonen av Python.
Datafortellingene renderes og lastes opp til NADA med main.py. Ferdig rendret filer blir lagt i mappen pages
og lastes opp til NADA av scriptet.
- Logg på Google Cloud CLI
nais login
- Kjør
uv run main.py
for å rendere alle datafortellingene. Kjører du scriptet lokalt på maskinen vil det feile ved opplastning, men det er uproblematisk. - Åpne output filen i index.html i en nettleser.
For å teste at datafortellingen kjører i docker lokalt må man supplere docker-imaget med en Application Default Credentials (ADC) fil. Denne genererer man på forhånd og limer inn i variabelen ADC
i scriptet.
-
Sett
ENV CPU=arm64
i Dockerfile om du kjører lokalt på Apple Silicon Mac -
Sett riktig prosjekt for gcloud
gcloud config set project <PROSJEKT>
- Oppdater ADC
gcloud auth application-default login
- eksporter path til
ADC
(output fra kommando over)
export ADC=path/til/adc.json
- Kjør docker imaget, med ADC filen som et volume. -e
LOCAL=1
Gjør så python scriptet main.py ikke laster opp til NADA.
docker run -e GOOGLE_APPLICATION_CREDENTIALS=/tmp/keys/adc.json -v $ADC:/tmp/keys/adc.json:ro datafortelling
For å rendere en individuell quarto fil kan man kjøre f.eks:
source .venv/bin/activate
quarto render datafortelling/sak/norge.qmd
Eller ved å bruke uv for å aktivere miljøet:
uv run quarto render datafortelling/sak/norge.qmd
Prosjektet bygges med github workflow og deployes til NAIS som en NAIS job.
Jobben kjører daglige, i intervaller som er definert i cron-utrykket spec.schedule
i nais.yaml. Når jobben spinner opp kjører den main.py.
Velg "Trigger run" fra NAIS console og gi gjenkjennelig navn, feks: "ad-hoc".
- Se etter utdaterte avhengigheter med:
uv tree --outdated --depth 1
- Oppdater disse avhengighetene i pyproject.toml til nyeste versjon.
- Kjør
uv sync --upgrade
for å oppdatere lock-filen og installere de nye avhengighetene, dette oppdaterer også indirekte avhengigheter. Man kan se alle meduv tree --outdated
- Kjør datafortellingene for å sjekke at de fortsatt fungerer som forventet.
Ved oppdatering av Python må versjonstallet oppdateres flere steder. Python sin siste versjon finner du her.
Om du vil oppdatere versjonen av python bør den oppdateres i:
- .python-version (Hvilken python versjon som vil bli brukt av uv og må oppdateres ved versjonsendring)
- Versjonen som brukes i Dockerfile bør være det samme som i .python-version
- Om versjonsnummeret endres til noe som er utenfor kravet i pyproject.toml må det også oppdateres.
- Kjør
uv lock --check
for å sjekke om lock-filen er oppdatert, om ikke viluv sync
oppdatere den.
Dette prosjektet bruker ruff som linter og formaterer koden. For å kjøre ruff kan du bruke:
ruff check
for linting, og
ruff format
for å formatere koden.
Spørsmål knyttet til koden eller prosjektet kan stilles som et issue her på GitHub.
Interne henvendelser kan sendes via Slack i kanalen #team-pia.
Dette repoet bruker GitHub Copilot til å generere kode.