What’s new

v1.13.0 (2022-08-17)

  • 1-dimensional quantities are handled in relabel() and as weights in sum() (PR #68).

  • load_file() will read a header comment like # Units: kg / s and apply the indicated units to the resulting quantity (PR #68).

  • div() and mul() become the canonical names, matching operator and other parts of the Python standard library (PR #68). ratio() and product() are retained as aliases, for compatibility.

  • Ensure data passed to Plot.generate() has a “value” column; use short units format by default (PR #68).

v1.12.0 (2022-07-18)

  • New computation index_to() (PR #65).

  • general: configuration items are more flexible (PR #65).

    • comp: null or omitted allows to specify a simple collection of other computations.

    • A bare string key: is left as-is; only keys with (a) dimension(s) and/or tag are parsed to Key.

  • repr() of Quantity displays its units (PR #65).

  • Bug fix: Computer.convert_pyam() handles its tag argument correctly, generating keys like foo:x-y-z:iamc or bar::iamc when applied to existing keys like foo:x-y-z or bar (PR #65). Previously the generated keys would be e.g. bar:iamc, which incorrectly treats “iamc” as a (sole) dimension rather than a tag.

  • Computer.require_compat() can handle arbitrary module names as strings, as well as module objects (PR #63).

v1.11.0 (2022-04-20)

Migration notes

The index keyword argument to Computer.add_single() / add() is deprecated (PR #60) and will be removed in or after v3.0.0. Indexing behaviour changes slightly: Computer.full_key() always returns the Key which matches its arguments and has the greatest number of dimensions. For instance:

c.add_product("foo", "bar:a-b-c", "baz:x-y-z", sums=True)

…will generate a key <foo:a-b-c-x-y-z> and all partial sums over subsets of its dimensions; c.full_key("foo") will return this key.

Care should be taken to avoid adding 2+ keys with the same name, tag, and number of dimensions:

c.add("foo:a-b-c", ...)
c.add("foo:l-m-n", ...)
c.add("foo:x-y-z", ...)

This situation is ambiguous and the behaviour of Computer.full_key() is undefined. Instead, add a tag to disambiguate.

All changes

v1.10.0 (2022-03-31)

v1.9.2 (2022-03-03)

v1.9.1 (2022-01-27)

Note that installing genno[pyam] (including via genno[compat]) currently forces the installation of an old version of pint; version 0.17 or earlier. Users wishing to use genno.compat.pyam should first install genno[pyam], then pip install --upgrade pint to restore a recent version of pint (0.18 or newer) that is usable with genno.

v1.9.0 (2021-11-23)

v1.8.1 (2021-07-27)

Bug fixes

v1.8.0 (2021-07-27)

v1.7.0 (2021-07-22)

v1.6.0 (2021-07-07)

  • Add Key.permute_dims() (PR #47).

  • Improve performance of Computer.check_keys() (PR #47).

v1.5.2 (2021-07-06)

  • Bug fix: order-insensitive Key.dims broke get() in some circumstances (PR #46).

v1.5.1 (2021-07-01)

v1.5.0 (2021-06-27)

  • Adjust test_assign_coords() for xarray 0.18.2 (PR #43).

  • Make Key.dims order-insensitive so that Key("foo", "ab") == Key("foo", "ba") (PR #42); make corresponding changes to Computer (PR #44).

  • Fix “AttributeError: ‘COO’ object has no attribute ‘item’” on SparseDataArray.item() (PR #41).

v1.4.0 (2021-04-26)

v1.3.0 (2021-03-22)

  • Bump minimum version of sparse from 0.10 to 0.12 and adjust to changes in this version (PR #39)

    • Remove SparseDataArray.equals(), obviated by improvements in sparse.

  • Improve AttrSeries (PR #39)

v1.2.1 (2021-03-08)

  • Bug fix: Provide abstract Quantity.to_series method for type checking in packages that depend on genno.

v1.2.0 (2021-03-08)

v1.1.1 (2021-02-22)

v1.1.0 (2021-02-16)

v1.0.0 (2021-02-13)

v0.4.0 and earlier

v0.4.0 (2021-02-07)

v0.3.0 (2021-02-05)

v0.2.0 (2021-01-18)

v0.1.0 (2021-01-10)