Issue: `Port.copy()` function does not copy `DataFrame` from source to target `Port`
Description:
When a Port
object contains a variable of type DataFrame
, using the Port.copy()
function fails to copy the DataFrame
from the source Port
to the target Port
.
Am I using Port.copy() correctly ?
Not working example
from cosapp.base import Port, System
import pandas as pd
class Measures(Port):
def setup(self):
self.add_variable('data', pd.DataFrame())
self.add_variable('properties', {'active': True, 'sensors': 40})
class Child(System):
def setup(self):
self.add_input(Measures, 'measures_in')
self.add_output(Measures, 'measures_out')
def compute(self):
self.measures_out = self.measures_in.copy() # <------------- ISSUE
class Parent(System):
def setup(self):
a = self.add_child(Child('a'))
b = self.add_child(Child('b'))
self.connect(a.measures_out, b.measures_in)
system = Parent('system')
system.a.measures_in.data = pd.DataFrame(
{
'pressure': [1e5, 2e5],
'temperature': [300, 300],
'massflow': [1, 2]
}
)
system.run_once()
system.b.measures_out
Result
measures_in: Measures
data: Empty DataFrame
Columns: []
Index: []
properties: {'active': True, 'sensors': 40}
Expectation
system.b.measures_out: Measures
data: pressure temperature massflow
0 100000.0 300 1
1 200000.0 300 2
properties: {'active': True, 'sensors': 40}