Skip to content

Commit 4f7b073

Browse files
authored
Merge pull request #1499 from mrvisscher/parameter-robustness
Parameter robustness
2 parents 0bbfa0d + 423da91 commit 4f7b073

4 files changed

Lines changed: 26 additions & 2 deletions

File tree

.github/conda-envs/test.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,6 @@ channels:
33
- conda-forge
44
dependencies:
55
- pytest
6-
- pytest-qt
6+
- pytest-qt =4.4.0
77
- pytest-mock
88
- pytest-env

activity_browser/actions/exchange/exchange_formula_remove.py

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
from typing import Any, List
22

3+
from bw2data.parameters import ParameterizedExchange
4+
35
from activity_browser.actions.base import ABAction, exception_dialogs
46
from activity_browser.ui.icons import qicons
57

@@ -16,5 +18,10 @@ class ExchangeFormulaRemove(ABAction):
1618
@exception_dialogs
1719
def run(exchanges: List[Any]):
1820
for exchange in exchanges:
21+
if "formula" not in exchange:
22+
return
23+
1924
del exchange["formula"]
2025
exchange.save()
26+
27+
ParameterizedExchange.delete().where(ParameterizedExchange.exchange == exchange._document.id).execute()

activity_browser/actions/exchange/exchange_modify.py

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
from activity_browser.ui.icons import qicons
77

88
from ..parameter.parameter_new_automatic import ParameterNewAutomatic
9+
from .exchange_formula_remove import ExchangeFormulaRemove
910

1011

1112
class ExchangeModify(ABAction):
@@ -19,6 +20,11 @@ class ExchangeModify(ABAction):
1920
@classmethod
2021
@exception_dialogs
2122
def run(cls, exchange: Any, data: dict):
23+
# remove the formula if it is an empty string
24+
if "formula" in exchange and data.get("formula") == "":
25+
del data["formula"]
26+
ExchangeFormulaRemove.run([exchange])
27+
2228
for key, value in data.items():
2329
exchange[key] = value
2430

activity_browser/ui/tables/models/activity.py

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
from logging import getLogger
55

66
import pandas as pd
7+
import numpy as np
78
from asteval import Interpreter
89
from bw2data.parameters import (ActivityParameter, DatabaseParameter, Group,
910
ProjectParameter)
@@ -61,8 +62,18 @@ def columns(self) -> list:
6162
def create_row(self, exchange) -> dict:
6263
"""Take the given Exchange object and extract a number of attributes."""
6364
try:
65+
# fixing a broken exchange
66+
if not isinstance(exchange.get("amount"), float) or pd.isna(exchange.get("amount")):
67+
log.warning(f"Fixing broken exchange amount for {exchange.get('type', '')} exchange from: {exchange.input}")
68+
try:
69+
amount = float(exchange.get("amount")) if exchange.get("amount") is not np.nan else 1.0
70+
except TypeError:
71+
amount = 1.0
72+
exchange["amount"] = amount
73+
exchange.save()
74+
6475
row = {
65-
"Amount": float(exchange.get("amount", 1)),
76+
"Amount": exchange.get("amount"),
6677
"Unit": exchange.input.get("unit", "Unknown"),
6778
"exchange": exchange,
6879
}

0 commit comments

Comments
 (0)