@@ -643,11 +643,15 @@ def _connect_network(self):
643643 def __repr__ (self ) -> str :
644644 """Compact representation for debugging."""
645645 status = '✓' if self .connected_and_transformed else '⚠'
646- return (
647- f'FlowSystem({ len (self .timesteps )} timesteps '
648- f'[{ self .timesteps [0 ].strftime ("%Y-%m-%d" )} to { self .timesteps [- 1 ].strftime ("%Y-%m-%d" )} ], '
649- f'{ len (self .components )} Components, { len (self .buses )} Buses, { len (self .effects )} Effects, { status } )'
650- )
646+
647+ # Build dimension info
648+ dims = f'{ len (self .timesteps )} timesteps [{ self .timesteps [0 ].strftime ("%Y-%m-%d" )} to { self .timesteps [- 1 ].strftime ("%Y-%m-%d" )} ]'
649+ if self .periods is not None :
650+ dims += f', { len (self .periods )} periods'
651+ if self .scenarios is not None :
652+ dims += f', { len (self .scenarios )} scenarios'
653+
654+ return f'FlowSystem({ dims } , { len (self .components )} Components, { len (self .buses )} Buses, { len (self .effects )} Effects, { status } )'
651655
652656 def __str__ (self ) -> str :
653657 """Structured summary for users."""
@@ -665,16 +669,33 @@ def format_elements(element_names: list, label: str, alignment: int = 12):
665669 freq_str = str (self .timesteps .freq ).replace ('<' , '' ).replace ('>' , '' ) if self .timesteps .freq else 'irregular'
666670
667671 lines = [
668- 'FlowSystem Overview:' ,
669- f'{ "─" * 50 } ' ,
670- time_period ,
671- f'Timesteps: { len (self .timesteps )} ({ freq_str } )' ,
672- format_elements (list (self .components .keys ()), 'Components' ),
673- format_elements (list (self .buses .keys ()), 'Buses' ),
674- format_elements (list (self .effects .effects .keys ()), 'Effects' ),
675- f'Status: { "Connected & Transformed" if self .connected_and_transformed else "Not connected" } ' ,
672+ f'Timesteps: { len (self .timesteps )} ({ freq_str } ) [{ time_period } ]' ,
676673 ]
677674
675+ # Add periods if present
676+ if self .periods is not None :
677+ period_names = ', ' .join (str (p ) for p in self .periods [:3 ])
678+ if len (self .periods ) > 3 :
679+ period_names += f' ... (+{ len (self .periods ) - 3 } more)'
680+ lines .append (f'Periods: { len (self .periods )} ({ period_names } )' )
681+
682+ # Add scenarios if present
683+ if self .scenarios is not None :
684+ scenario_names = ', ' .join (str (s ) for s in self .scenarios [:3 ])
685+ if len (self .scenarios ) > 3 :
686+ scenario_names += f' ... (+{ len (self .scenarios ) - 3 } more)'
687+ lines .append (f'Scenarios: { len (self .scenarios )} ({ scenario_names } )' )
688+
689+ lines .extend (
690+ [
691+ format_elements (list (self .components .keys ()), 'Components' ),
692+ format_elements (list (self .buses .keys ()), 'Buses' ),
693+ format_elements (list (self .effects .effects .keys ()), 'Effects' ),
694+ f'Status: { "Connected & Transformed" if self .connected_and_transformed else "Not connected" } ' ,
695+ ]
696+ )
697+ lines = ['FlowSystem:' , f'{ "─" * max (len (line ) for line in lines )} ' ] + lines
698+
678699 return '\n ' .join (lines )
679700
680701 def __eq__ (self , other : FlowSystem ):
0 commit comments