44import shutil
55import typing
66from functools import lru_cache
7- import subprocess
87import tempfile
98import zipfile
109from pathlib import Path
1312import ecoinvent_interface
1413import requests
1514from bw2io import BW2Package , SingleOutputEcospold2Importer
16- from bw2data .subclass_mapping import DATABASE_BACKEND_MAPPING
17- from bw2io import BW2Package , SingleOutputEcospold2Importer
1815from bw2io .extractors import Ecospold2DataExtractor
1916from PySide2 import QtCore , QtWidgets
2017from PySide2 .QtCore import Signal , Slot
21- from bw2io .importers import Ecospold2BiosphereImporter
2218from py7zr import py7zr
2319
24- from activity_browser import log , project_settings
20+ from activity_browser import log
2521from activity_browser .bwutils import errors
2622from activity_browser .mod import bw2data as bd
27- from activity_browser .mod .bw2data import databases
28- from activity_browser .bwutils .ecoinvent_biosphere_versions .ecospold2biosphereimporter import (
29- ABEcospold2BiosphereImporter ,
30- )
3123
3224from ...bwutils .importers import ABExcelImporter , ABPackage
33- from ...info import __ei_versions__
3425from ...utils import sort_semantic_versions
3526from ..style import style_group_box
3627from ..threading import ABThread
3728from ..widgets import DatabaseLinkingDialog
38- from ..widgets .biosphere_update import UpdateBiosphereThread
3929
4030
4131class DatabaseImportWizard (QtWidgets .QWizard ):
@@ -68,7 +58,6 @@ def __init__(self, parent=None):
6858 self .local_page = LocalImportPage (self )
6959 self .ecoinvent_login_page = EcoinventLoginPage (self )
7060 self .ecoinvent_version_page = EcoinventVersionPage (self )
71- self .biosphere_database_setup = BiosphereDatabaseSetup (self )
7261 self .archive_page = Choose7zArchivePage (self )
7362 self .choose_dir_page = ChooseDirPage (self )
7463 self .local_import_page = LocalDatabaseImportPage (self )
@@ -81,7 +70,6 @@ def __init__(self, parent=None):
8170 self .setPage (self .LOCAL_TYPE , self .local_page )
8271 self .setPage (self .EI_LOGIN , self .ecoinvent_login_page )
8372 self .setPage (self .EI_VERSION , self .ecoinvent_version_page )
84- self .setPage (self .DB_BIOSPHERE_CREATION , self .biosphere_database_setup )
8573 self .setPage (self .ARCHIVE , self .archive_page )
8674 self .setPage (self .DIR , self .choose_dir_page )
8775 self .setPage (self .LOCAL , self .local_import_page )
@@ -530,7 +518,7 @@ def initializePage(self):
530518 "Dependent Database: <b>{}</b>" .format (
531519 self .wizard .version ,
532520 self .wizard .system_model ,
533- bd .preferences [ "biosphere_database" ] ,
521+ bd .config . biosphere ,
534522 )
535523 )
536524
@@ -940,9 +928,8 @@ def run_import(self, import_dir: Path) -> None:
940928 import_signals .import_failure .emit (
941929 (
942930 "Missing exchanges" ,
943- "The import failed as required biosphere"
944- " exchanges are missing from the biosphere3 database. Please"
945- " update the biosphere by using 'File' -> 'Update biosphere...'" ,
931+ "The import failed because the biosphere3 database of this project is incompatible with the "
932+ "version of ecoinvent that you're trying to install" ,
946933 )
947934 )
948935
@@ -1171,9 +1158,7 @@ def __init__(self, parent=None):
11711158
11721159 def initializePage (self ):
11731160 available_versions = self .wizard .downloader .list_versions ()
1174- shown_versions = set (
1175- [version for version in available_versions if version in __ei_versions__ ]
1176- )
1161+ shown_versions = {version for version in available_versions }
11771162 # Catch for incorrect 'universal' key presence
11781163 # (introduced in version 3.6 of ecoinvent)
11791164 if "universal" in shown_versions :
@@ -1197,16 +1182,16 @@ def initializePage(self):
11971182 self .wizard .back ()
11981183
11991184 def validatePage (self ):
1200- version = self .version_combobox .currentText ()
1201- bd .preferences ["biosphere_database" ] = "ecoinvent-{}-biosphere" .format (version )
1202- bd .preferences .flush ()
1203- if bd .preferences ["biosphere_database" ] not in databases :
1204- self .requires_database_creation = True
1185+ # version = self.version_combobox.currentText()
1186+ # bd.preferences["biosphere_database"] = "ecoinvent-{}-biosphere".format(version)
1187+ # bd.preferences.flush()
1188+ # if bd.preferences["biosphere_database"] not in databases:
1189+ # self.requires_database_creation = True
12051190 return True
12061191
12071192 def nextId (self ):
1208- if self .requires_database_creation :
1209- return DatabaseImportWizard .DB_BIOSPHERE_CREATION
1193+ # if self.requires_database_creation:
1194+ # return DatabaseImportWizard.DB_BIOSPHERE_CREATION
12101195 return DatabaseImportWizard .DB_NAME
12111196
12121197 @Slot (str )
@@ -1220,100 +1205,6 @@ def update_system_model_combobox(self, version: str) -> None:
12201205 self .system_model_combobox .addItems (items )
12211206
12221207
1223- class VersionedBiosphereThread (UpdateBiosphereThread ):
1224- update = Signal (int , str )
1225-
1226- def __init__ (self , version , parent = None ):
1227- # reduce biosphere update list up to the selected version
1228- sorted_versions = sort_semantic_versions (
1229- __ei_versions__ , highest_to_lowest = False
1230- )
1231- ei_versions = sorted_versions [: sorted_versions .index (version ) + 1 ]
1232- super ().__init__ (ei_versions , parent = parent )
1233- self .version = version
1234-
1235- def run_safely (self ):
1236- project = f"<b>{ bd .projects .current } </b>"
1237- if bd .preferences ["biosphere_database" ] not in bd .databases :
1238- self .update .emit (
1239- 0 ,
1240- "Creating {} database for {}" .format (
1241- bd .preferences ["biosphere_database" ], project
1242- ),
1243- )
1244- self .create_biosphere3_database ()
1245- project_settings .add_db (bd .preferences ["biosphere_database" ])
1246-
1247- self .update .emit (
1248- 1 ,
1249- "Updating biosphere database" ,
1250- )
1251- super ().run_safely ()
1252-
1253- def create_biosphere3_database (self ):
1254- if self .version == sort_semantic_versions (__ei_versions__ )[0 ][:3 ]:
1255- eb = Ecospold2BiosphereImporter (
1256- name = bd .preferences ["biosphere_database" ], version = self .version
1257- )
1258- else :
1259- eb = ABEcospold2BiosphereImporter (
1260- name = bd .preferences ["biosphere_database" ], version = self .version
1261- )
1262- eb .apply_strategies ()
1263- eb .write_database ()
1264-
1265-
1266- class BiosphereDatabaseSetup (QtWidgets .QWizardPage ):
1267- def __init__ (self , parent = None ):
1268- super ().__init__ (parent = parent )
1269- self .wizard : "DatabaseImportWizard" = self .parent ()
1270- self .update_label = QtWidgets .QLabel ()
1271- self .progressbar = QtWidgets .QProgressBar ()
1272- self .progressbar .setRange (0 , 2 )
1273- self .complete = False
1274-
1275- box = QtWidgets .QGroupBox ("Creating biosphere database" )
1276- box_layout = QtWidgets .QVBoxLayout ()
1277- box_layout .addWidget (self .progressbar )
1278- box_layout .addWidget (self .update_label )
1279- box .setLayout (box_layout )
1280- box .setStyleSheet (style_group_box .border_title )
1281- layout = QtWidgets .QVBoxLayout ()
1282- layout .addWidget (box )
1283- self .setLayout (layout )
1284-
1285- def isComplete (self ):
1286- return self .complete
1287-
1288- def initializePage (self ):
1289- self .biosphere_thread = VersionedBiosphereThread (self .wizard .version , self )
1290- self .biosphere_thread .update .connect (self .update_progress )
1291- self .biosphere_thread .finished .connect (self .thread_finished )
1292- self .biosphere_thread .start ()
1293-
1294- def validatePage (self ):
1295- return self .biosphere_thread .isFinished ()
1296-
1297- @Slot (int , str , name = "updateThread" )
1298- def update_progress (self , current : int , text : str ) -> None :
1299- self .progressbar .setValue (current )
1300- self .update_label .setText (text )
1301-
1302- @Slot (int , name = "threadFinished" )
1303- def thread_finished (self , result : int = None ) -> None :
1304- self .progressbar .setMaximum (1 )
1305- self .progressbar .setValue (1 )
1306- if result and result != 0 :
1307- self .update_label .setText ("Something went wrong..." )
1308- else :
1309- self .update_label .setText ("All Done" )
1310- self .complete = True
1311- self .completeChanged .emit ()
1312-
1313- def nextId (self ):
1314- return DatabaseImportWizard .DB_NAME
1315-
1316-
13171208class LocalDatabaseImportPage (QtWidgets .QWizardPage ):
13181209 def __init__ (self , parent = None ):
13191210 super ().__init__ (parent = parent )
@@ -1485,11 +1376,6 @@ def _efficient_write_dataset(self, *args, **kwargs):
14851376
14861377
14871378bd .config .backends ["activitybrowser" ] = ActivityBrowserBackend
1488- # config is no longer enough to provide an additional backend
1489- # database chooser, specifically looks at DATABASE_BACKEND_MAPPING
1490- # to get the class implementation
1491- DATABASE_BACKEND_MAPPING .update ({"activitybrowser" : ActivityBrowserBackend })
1492-
14931379
14941380class ImportSignals (QtCore .QObject ):
14951381 extraction_progress = Signal (int , int )
0 commit comments