Skip to content

Commit 7413b7b

Browse files
khaeruglatterf42
authored andcommitted
Remove .report.util.as_quantity()
- Adjust imports per genno 1.25.0. - Provide old implementation via .util.genno for genno < 1.25 (with message_ix/ixmp 3.7.0).
1 parent 8c75ab0 commit 7413b7b

File tree

6 files changed

+39
-26
lines changed

6 files changed

+39
-26
lines changed

doc/api/report/index.rst

-1
Original file line numberDiff line numberDiff line change
@@ -172,7 +172,6 @@ Utilities
172172
.. autosummary::
173173

174174
add_replacements
175-
as_quantity
176175
collapse
177176
collapse_gwp_info
178177
copy_ts

message_ix_models/model/transport/config.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -9,9 +9,9 @@
99
from message_ix_models.project.navigate import T35_POLICY as NAVIGATE_SCENARIO
1010
from message_ix_models.project.ssp import SSP_2024, ssp_field
1111
from message_ix_models.project.transport_futures import SCENARIO as FUTURES_SCENARIO
12-
from message_ix_models.report.util import as_quantity
1312
from message_ix_models.util import identify_nodes, package_data_path
1413
from message_ix_models.util.config import ConfigHelper
14+
from message_ix_models.util.genno import as_quantity
1515
from message_ix_models.util.sdmx import AnnotationsMixIn
1616

1717
if TYPE_CHECKING:

message_ix_models/model/transport/operator.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -22,14 +22,14 @@
2222
from message_ix_models.model.structure import get_codelist
2323
from message_ix_models.project.navigate import T35_POLICY
2424
from message_ix_models.report.operator import compound_growth
25-
from message_ix_models.report.util import as_quantity
2625
from message_ix_models.util import (
2726
MappingAdapter,
2827
datetime_now_with_tz,
2928
minimum_version,
3029
nodes_ex_world,
3130
show_versions,
3231
)
32+
from message_ix_models.util.genno import as_quantity
3333

3434
from .config import Config
3535

message_ix_models/report/util.py

+2-22
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,12 @@
11
import logging
22
from collections.abc import Iterable
3-
from typing import Optional, Union
3+
from typing import Optional
44

55
import pandas as pd
66
from dask.core import quote
7-
from genno import Key, Quantity
7+
from genno import Key
88
from genno.compat.pyam.util import collapse as genno_collapse
99
from genno.core.key import single_key
10-
from iam_units import registry
1110
from message_ix import Reporter
1211
from sdmx.model.v21 import Code
1312

@@ -70,25 +69,6 @@
7069
}
7170

7271

73-
def as_quantity(info: Union[dict, float, str]) -> Quantity:
74-
"""Convert values from a :class:`dict` to Quantity.
75-
76-
.. todo:: move upstream, to :mod:`genno`.
77-
"""
78-
if isinstance(info, str):
79-
q = registry.Quantity(info)
80-
return Quantity(q.magnitude, units=q.units)
81-
elif isinstance(info, float):
82-
return Quantity(info)
83-
elif isinstance(info, dict):
84-
data = info.copy()
85-
dim = data.pop("_dim")
86-
unit = data.pop("_unit")
87-
return Quantity(pd.Series(data).rename_axis(dim), units=unit)
88-
else:
89-
raise TypeError(type(info))
90-
91-
9272
def collapse(df: pd.DataFrame, var=[]) -> pd.DataFrame:
9373
"""Callback for the `collapse` argument to :meth:`~.Reporter.convert_pyam`.
9474

message_ix_models/tests/model/transport/test_util.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
from iam_units import registry
77

88
from message_ix_models.model.transport.config import Config, DataSourceConfig
9-
from message_ix_models.report.util import as_quantity
9+
from message_ix_models.util.genno import as_quantity
1010

1111

1212
@pytest.mark.xfail(reason="Refactoring")

message_ix_models/util/genno.py

+34
Original file line numberDiff line numberDiff line change
@@ -2,3 +2,37 @@
22
33
Most code appearing here **should** be migrated upstream, to genno itself.
44
"""
5+
6+
from typing import TYPE_CHECKING, Union
7+
8+
if TYPE_CHECKING:
9+
from genno.types import AnyQuantity
10+
11+
try:
12+
from genno.operator import as_quantity
13+
except ImportError:
14+
# genno < 1.25, e.g. with message_ix/ixmp 3.7.0
15+
# TODO Remove when support for these upstream versions is dropped
16+
17+
def as_quantity(info: Union[dict, float, str]) -> "AnyQuantity":
18+
import genno
19+
import pandas as pd
20+
from iam_units import registry
21+
22+
if isinstance(info, str):
23+
q = registry.Quantity(info)
24+
return genno.Quantity(q.magnitude, units=q.units)
25+
elif isinstance(info, float):
26+
return genno.Quantity(info)
27+
elif isinstance(info, dict):
28+
data = info.copy()
29+
dim = data.pop("_dim")
30+
unit = data.pop("_unit")
31+
return genno.Quantity(pd.Series(data).rename_axis(dim), units=unit)
32+
else:
33+
raise TypeError(type(info))
34+
35+
36+
__all__ = [
37+
"as_quantity",
38+
]

0 commit comments

Comments
 (0)