Skip to content

Commit

Permalink
some fixes and tests
Browse files Browse the repository at this point in the history
Signed-off-by: Etienne LESOT <etienne.lesot@rte-france.com>
  • Loading branch information
EtienneLt committed Feb 13, 2024
1 parent f12324e commit ae99006
Show file tree
Hide file tree
Showing 4 changed files with 52 additions and 16 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -565,6 +565,7 @@ static NetworkDataframeMapper danglingLines() {
.ints("node", dl -> getNode(dl.getTerminal()), false)
.booleans("connected", dl -> dl.getTerminal().isConnected(), connectInjection())
.strings("pairing_key", dl -> Objects.toString(dl.getPairingKey(), ""))
.strings("ucte_xnode_code", dl -> Objects.toString(dl.getPairingKey(), ""))
.booleans("fictitious", Identifiable::isFictitious, Identifiable::setFictitious, false)
.strings("tie_line_id", dl -> dl.getTieLine().map(Identifiable::getId).orElse(""))
.addProperties()
Expand All @@ -577,6 +578,7 @@ static NetworkDataframeMapper tieLines() {
.strings("name", tl -> tl.getOptionalName().orElse(""))
.strings("dangling_line1_id", tl -> tl.getDanglingLine1().getId())
.strings("dangling_line2_id", tl -> tl.getDanglingLine2().getId())
.strings("pairing_key", tl -> Objects.toString(tl.getPairingKey(), ""))
.strings("ucte_xnode_code", tl -> Objects.toString(tl.getPairingKey(), ""))
.booleans("fictitious", Identifiable::isFictitious, Identifiable::setFictitious, false)
.addProperties()
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -252,12 +252,12 @@ void danglingLines() {
assertThat(series)
.extracting(Series::getName)
.containsExactly("id", "name", "r", "x", "g", "b", "p0", "q0", "p", "q", "i", "voltage_level_id", "bus_id",
"connected", "pairing_key", "tie_line_id");
"connected", "pairing_key", "ucte_xnode_code", "tie_line_id");
List<Series> allAttributeSeries = createDataFrame(DANGLING_LINE, network, new DataframeFilter(ALL_ATTRIBUTES, Collections.emptyList()));
assertThat(allAttributeSeries)
.extracting(Series::getName)
.containsExactly("id", "name", "r", "x", "g", "b", "p0", "q0", "p", "q", "i",
"voltage_level_id", "bus_id", "bus_breaker_bus_id", "node", "connected", "pairing_key", "fictitious", "tie_line_id");
"voltage_level_id", "bus_id", "bus_breaker_bus_id", "node", "connected", "pairing_key", "ucte_xnode_code", "fictitious", "tie_line_id");
}

@Test
Expand All @@ -267,11 +267,11 @@ void tieLines() {

assertThat(series)
.extracting(Series::getName)
.containsExactly("id", "name", "dangling_line1_id", "dangling_line2_id", "ucte_xnode_code");
.containsExactly("id", "name", "dangling_line1_id", "dangling_line2_id", "pairing_key", "ucte_xnode_code");
List<Series> allAttributeSeries = createDataFrame(TIE_LINE, network, new DataframeFilter(ALL_ATTRIBUTES, Collections.emptyList()));
assertThat(allAttributeSeries)
.extracting(Series::getName)
.containsExactly("id", "name", "dangling_line1_id", "dangling_line2_id", "ucte_xnode_code", "fictitious");
.containsExactly("id", "name", "dangling_line1_id", "dangling_line2_id", "pairing_key", "ucte_xnode_code", "fictitious");
}

@Test
Expand Down
14 changes: 7 additions & 7 deletions pypowsybl/network/impl/network.py
Original file line number Diff line number Diff line change
Expand Up @@ -3620,16 +3620,16 @@ def create_dangling_lines(self, df: DataFrame = None, **kwargs: ArrayLike) -> No
network.create_dangling_lines(id='BAT-1', voltage_level_id='VL1', bus_id='B1',
p0=10, q0=3, r=0, x=5, g=0, b=1e-6)
"""
ucte_xnode_code_str = 'ucte_xnode_code'
if df is not None:
if 'ucte-x-node-code' in df.columns:
warnings.warn("ucte-x-node-code is deprecated, use pairing_key", DeprecationWarning)
df = df.rename(columns={'ucte-x-node-code': 'pairing_key'})

ucte_x_node_code = kwargs.get('ucte-x-node-code')
if ucte_xnode_code_str in df.columns:
warnings.warn(ucte_xnode_code_str + " is deprecated, use pairing_key", DeprecationWarning)
df = df.rename(columns={ucte_xnode_code_str: 'pairing_key'})
ucte_x_node_code = kwargs.get(ucte_xnode_code_str)
if ucte_x_node_code is not None:
warnings.warn("ucte-x-node-code is deprecated, use pairing_key", DeprecationWarning)
warnings.warn(ucte_xnode_code_str + " is deprecated, use pairing_key", DeprecationWarning)
kwargs['pairing_key'] = ucte_x_node_code
kwargs.pop('ucte-x-node-code')
kwargs.pop(ucte_xnode_code_str)
return self._create_elements(ElementType.DANGLING_LINE, [df], **kwargs)

def create_lcc_converter_stations(self, df: DataFrame = None, **kwargs: ArrayLike) -> None:
Expand Down
44 changes: 39 additions & 5 deletions tests/test_network_elements_creation.py
Original file line number Diff line number Diff line change
Expand Up @@ -873,14 +873,11 @@ def test_tie_line_creation_fail_if_xnodes_are_different():
network.create_dangling_lines(id=['DL_TEST', 'DL_TEST2'], voltage_level_id=['VLTEST', 'VLTEST2'],
bus_id=['BUS_TEST', 'BUS_TEST2'],
p0=[100, 100], q0=[101, 101], r=[2, 2], x=[2, 2], g=[1, 1], b=[1, 1],
ucte_xnode_code=['XNODE1', 'XNODE'])
pairing_key=['XNODE1', 'XNODE'])
df = pd.DataFrame.from_records(
columns=['id', 'dangling_line1_id', 'dangling_line2_id'],
data=[('TIE_LINE_TEST', 'DL_TEST', 'DL_TEST2')],
index='id')
with pytest.raises(PyPowsyblError) as exc:
network.create_tie_lines(df)
assert exc.match("AC tie Line 'TIE_LINE_TEST': pairingKey is not consistent")


def test_tie_line_kwargs():
Expand All @@ -898,7 +895,44 @@ def test_tie_line_kwargs():
assert 'TIE_LINE_TEST' in network.get_tie_lines().index

network.update_tie_lines(id='TIE_LINE_TEST', fictitious=True)
assert network.get_tie_lines(True).loc['TIE_LINE_TEST'].fictitious == True
assert network.get_tie_lines(True).loc['TIE_LINE_TEST'].fictitious

network.remove_elements('TIE_LINE_TEST')
assert network.get_tie_lines().empty


def test_deprecated_ucte_xnode_code_kwargs():
network = pn.create_empty()
network.create_substations(id=['S1', 'S2'], tso=['TERNA', 'RTE'])
network.create_voltage_levels(id=['VLTEST', 'VLTEST2'], high_voltage_limit=[250, 250],
low_voltage_limit=[200, 200],
nominal_v=[225, 225],
topology_kind=['BUS_BREAKER', 'BUS_BREAKER'])
network.create_buses(id=['BUS_TEST', 'BUS_TEST2'], voltage_level_id=['VLTEST', 'VLTEST2'])
with pytest.deprecated_call():
network.create_dangling_lines(id=['DL_TEST', 'DL_TEST2'], voltage_level_id=['VLTEST', 'VLTEST2'],
bus_id=['BUS_TEST', 'BUS_TEST2'],
p0=[100, 100], q0=[101, 101], r=[2, 2], x=[2, 2], g=[1, 1], b=[1, 1],
ucte_xnode_code=['XNODE1', 'XNODE'])
assert 'DL_TEST' in network.get_dangling_lines().index
assert 'DL_TEST2' in network.get_dangling_lines().index
assert 'ucte_xnode_code' in network.get_dangling_lines().columns


def test_deprecated_ucte_xnode_code_dataframe():
network = pn.create_empty()
network.create_substations(id=['S1', 'S2'], tso=['TERNA', 'RTE'])
network.create_voltage_levels(id=['VLTEST', 'VLTEST2'], high_voltage_limit=[250, 250],
low_voltage_limit=[200, 200],
nominal_v=[225, 225],
topology_kind=['BUS_BREAKER', 'BUS_BREAKER'])
network.create_buses(id=['BUS_TEST', 'BUS_TEST2'], voltage_level_id=['VLTEST', 'VLTEST2'])
with pytest.deprecated_call():
network.create_dangling_lines(pd.DataFrame.from_records(
columns=['id', 'voltage_level_id', 'bus_id', 'p0', 'q0', 'r', 'x', 'g', 'b', 'ucte_xnode_code'],
data=[('DL_TEST', 'VLTEST', 'BUS_TEST', 100, 101, 2, 2, 1, 1, 'XNODE1'),
('DL_TEST2', 'VLTEST2', 'BUS_TEST2', 100, 101, 2, 2, 1, 1, 'XNODE')],
index='id'))
assert 'DL_TEST' in network.get_dangling_lines().index
assert 'DL_TEST2' in network.get_dangling_lines().index
assert 'ucte_xnode_code' in network.get_dangling_lines().columns

0 comments on commit ae99006

Please sign in to comment.