Skip to content

Commit

Permalink
Enable renaming of an empty IamDataFrame (#668)
Browse files Browse the repository at this point in the history
  • Loading branch information
danielhuppmann committed Jun 2, 2022
1 parent de6b47b commit 8303c38
Show file tree
Hide file tree
Showing 6 changed files with 19 additions and 8 deletions.
4 changes: 2 additions & 2 deletions .github/workflows/build-docs.yml
Expand Up @@ -25,10 +25,10 @@ jobs:
name: ${{ matrix.os }} py${{ matrix.python-version }}

steps:
- uses: actions/checkout@v2
- uses: actions/checkout@v3

- name: Set up Python ${{ matrix.python-version }}
uses: actions/setup-python@v2
uses: actions/setup-python@v3
with:
python-version: ${{ matrix.python-version }}

Expand Down
4 changes: 2 additions & 2 deletions .github/workflows/nightly.yml
Expand Up @@ -27,10 +27,10 @@ jobs:
name: ${{ matrix.os }} py${{ matrix.python-version }}

steps:
- uses: actions/checkout@v2
- uses: actions/checkout@v3

- name: Set up Python ${{ matrix.python-version }}
uses: actions/setup-python@v2
uses: actions/setup-python@v3
with:
python-version: ${{ matrix.python-version }}

Expand Down
4 changes: 2 additions & 2 deletions .github/workflows/pytest-dependency.yml
Expand Up @@ -15,10 +15,10 @@ jobs:
runs-on: ubuntu-latest

steps:
- uses: actions/checkout@v2
- uses: actions/checkout@v3

- name: Set up Python
uses: actions/setup-python@v2
uses: actions/setup-python@v3
with:
python-version: '3.7'

Expand Down
4 changes: 2 additions & 2 deletions .github/workflows/pytest.yml
Expand Up @@ -30,10 +30,10 @@ jobs:
name: ${{ matrix.os }} py${{ matrix.python-version }}

steps:
- uses: actions/checkout@v2
- uses: actions/checkout@v3

- name: Set up Python ${{ matrix.python-version }}
uses: actions/setup-python@v2
uses: actions/setup-python@v3
with:
python-version: ${{ matrix.python-version }}

Expand Down
4 changes: 4 additions & 0 deletions pyam/core.py
Expand Up @@ -1107,6 +1107,10 @@ def rename(
raise ValueError(f"Conflicting rename args for columns {duplicate}")
mapping.update(kwargs)

# return without any changes if self is empty
if self.empty:
return self if inplace else self.copy()

# determine columns that are not in the meta index
meta_idx = self.meta.index.names
data_cols = set(self.dimensions) - set(meta_idx)
Expand Down
7 changes: 7 additions & 0 deletions tests/test_feature_rename.py
Expand Up @@ -6,6 +6,7 @@
from numpy import testing as npt

from pyam import IamDataFrame, META_IDX, IAMC_IDX, compare
from pyam.testing import assert_iamframe_equal

from .conftest import META_COLS

Expand Down Expand Up @@ -191,6 +192,12 @@ def test_rename_conflict(test_df):
pytest.raises(ValueError, test_df.rename, mapping, **mapping)


def test_rename_empty(test_df_year):
"""Check that renaming an empty IamDataFrame does not raise an error"""
empty_df = test_df_year.filter(model="foo")
assert_iamframe_equal(empty_df, empty_df.rename(model={"model_a": "model_b"}))


def test_rename_index_data_fail(test_df):
mapping = {
"scenario": {"scen_a": "scen_c"},
Expand Down

0 comments on commit 8303c38

Please sign in to comment.