-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathutils.py
More file actions
81 lines (58 loc) · 2.39 KB
/
utils.py
File metadata and controls
81 lines (58 loc) · 2.39 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
from functools import cache
from ssb_konjunk.dash.calculations.calc_data import get_data_manager
_config = None
def setup(config) -> None:
global _config
_config = config
@cache
def get_data(file: str | None = None):
"""Henter en DataManager-instans basert på valgt datasett.
Returnerer enten det nyeste datasettet eller et eldre alternativ, avhengig av
parameterverdien. Resultatet caches for å unngå gjentatte lasting av samme fil.
Args:
file (Optional[str]): Hvis satt til "old", hentes eldre datasett. Standard er None,
som gir det nyeste datasettet.
Returns:
DataManager: En instans med forhåndslastet data klar for videre analyse.
"""
if _config is None:
raise RuntimeError(
"Package not configured. Call setup(config) in start_dash first."
)
if file == "old":
return get_data_manager(_config.select_file(1))
else:
return get_data_manager(_config.data_path())
@cache
def dropdown_getter(file: str | None = None) -> list[dict[str, str]]:
"""Oppretter en liste over perioder for nedtrekksmeny basert på tilgjengelige data.
Henter perioder fra en `DataManager` og returnerer dem som en liste av ordbøker
med 'id' og 'title'-felter, sortert i synkende rekkefølge. Brukes typisk som
datakilde til grensesnitt-komponenter som dropdowns.
Args:
file (Optional[str]): Hvis "old", hentes eldre datasett. Hvis None, brukes standarddatasett.
Returns:
list[dict[str, str]]: Liste med perioder, hver som et ordbokelement med 'id' og 'title'.
"""
datas = get_data(file)
dropdown_data = [
{"id": item, "title": item}
for item in sorted(datas.get_all_periods(), reverse=True)
]
return dropdown_data
@cache
def get_assets_folder() -> str:
"""
Lager en temp mappe som har assets fra pakken og assets lokalt.
lokale assets overskriver pakke assets.
Returns:
str: path til temp mappe med assets.
"""
package_assets = Path(ssb_konjunk.__file__).parent / "dash" / "assets"
local_assets = Path("dash/assets")
combined = Path(tempfile.mkdtemp(prefix="dash_assets_"))
if package_assets.exists():
shutil.copytree(package_assets, combined, dirs_exist_ok=True)
if local_assets.exists():
shutil.copytree(local_assets, combined, dirs_exist_ok=True)
return str(combined)