1
+ from urllib .parse import urljoin
1
2
from pathlib import Path
2
3
from typing import Optional ,Union
3
4
11
12
PROJECTS_BW2 = {
12
13
"ecoinvent-3.8-biosphere" : "ecoinvent-3.8-biosphere.bw2.tar.gz" ,
13
14
"ecoinvent-3.9.1-biosphere" : "ecoinvent-3.9.1-biosphere.bw2.tar.gz" ,
15
+ "ecoinvent-3.10-biosphere" : "ecoinvent-3.10-biosphere.bw2.tar.gz" ,
14
16
}
15
17
16
18
PROJECTS_BW25 = {
17
19
"ecoinvent-3.8-biosphere" : "ecoinvent-3.8-biosphere.tar.gz" ,
18
20
"ecoinvent-3.9.1-biosphere" : "ecoinvent-3.9.1-biosphere.tar.gz" ,
19
21
"USEEIO-1.1" : "USEEIO-1.1.tar.gz" ,
22
+ "forwast" : "forwast.tar.gz" ,
20
23
}
21
24
22
25
cache_dir = Path (bd .projects ._base_data_dir ) / "bw2io_cache_dir"
23
26
cache_dir .mkdir (exist_ok = True )
24
27
25
28
26
- def get_projects (update_config : Optional [bool ] = True ) -> dict :
29
+ def get_projects (update_config : bool = True , base_url : Optional [str ] = None , filename : Optional [ str ] = None ) -> dict :
27
30
BW2 = bd .__version__ < (4 ,)
28
31
projects = PROJECTS_BW2 if BW2 else PROJECTS_BW25
29
- URL = "https://files.brightway.dev/"
30
- FILENAME = "projects-config.bw2.json" if BW2 else "projects-config.json"
32
+ if base_url is None :
33
+ base_url = "https://files.brightway.dev/"
34
+ if filename is None :
35
+ filename = "projects-config.bw2.json" if BW2 else "projects-config.json"
31
36
if update_config :
32
37
try :
33
- projects = requests .get (URL + FILENAME ) .json ()
38
+ projects . update ( requests .get (urljoin ( base_url , filename )) .json () )
34
39
except :
40
+ print (f"Can't connect to { base_url } " )
35
41
pass
36
42
return projects
37
43
38
44
39
45
def install_project (
40
46
project_key : str ,
41
47
project_name : Optional [str ] = None ,
42
- projects_config : Optional [dict ] = get_projects () ,
48
+ projects_config : Optional [dict ] = None ,
43
49
url : Optional [str ] = "https://files.brightway.dev/" ,
44
50
overwrite_existing : Optional [bool ] = False ,
45
51
__recursive : Union [bool ,None ] = False
@@ -69,6 +75,9 @@ def install_project(
69
75
str
70
76
The name of the created project.
71
77
"""
78
+ if projects_config is None :
79
+ projects_config = get_projects (base_url = url )
80
+
72
81
try :
73
82
filename = projects_config [project_key ]
74
83
except KeyError :
@@ -77,7 +86,7 @@ def install_project(
77
86
fp = cache_dir / filename
78
87
if not fp .exists ():
79
88
download_with_progressbar (
80
- url = url + filename , filename = filename , dirpath = cache_dir
89
+ url = urljoin ( url , filename ) , filename = filename , dirpath = cache_dir
81
90
)
82
91
83
92
try :
0 commit comments