Skip to content

Commit 6a2dd94

Browse files
committed
Made feat/ecoinvent_interface branch compatible
1 parent f46d587 commit 6a2dd94

1 file changed

Lines changed: 12 additions & 126 deletions

File tree

activity_browser/ui/wizards/db_import_wizard.py

Lines changed: 12 additions & 126 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,6 @@
44
import shutil
55
import typing
66
from functools import lru_cache
7-
import subprocess
87
import tempfile
98
import zipfile
109
from pathlib import Path
@@ -13,29 +12,20 @@
1312
import ecoinvent_interface
1413
import requests
1514
from bw2io import BW2Package, SingleOutputEcospold2Importer
16-
from bw2data.subclass_mapping import DATABASE_BACKEND_MAPPING
17-
from bw2io import BW2Package, SingleOutputEcospold2Importer
1815
from bw2io.extractors import Ecospold2DataExtractor
1916
from PySide2 import QtCore, QtWidgets
2017
from PySide2.QtCore import Signal, Slot
21-
from bw2io.importers import Ecospold2BiosphereImporter
2218
from py7zr import py7zr
2319

24-
from activity_browser import log, project_settings
20+
from activity_browser import log
2521
from activity_browser.bwutils import errors
2622
from 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

3224
from ...bwutils.importers import ABExcelImporter, ABPackage
33-
from ...info import __ei_versions__
3425
from ...utils import sort_semantic_versions
3526
from ..style import style_group_box
3627
from ..threading import ABThread
3728
from ..widgets import DatabaseLinkingDialog
38-
from ..widgets.biosphere_update import UpdateBiosphereThread
3929

4030

4131
class 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-
13171208
class 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

14871378
bd.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

14941380
class ImportSignals(QtCore.QObject):
14951381
extraction_progress = Signal(int, int)

0 commit comments

Comments
 (0)