code: def get_switchable_as_iter(network, component, attr, snapshots, inds=None):
      
  
      df = network.df(component)
      pnl = network.pnl(component)
  
      index = df.index
      varying_i = pnl[attr].columns
      fixed_i = df.index.difference(varying_i)
  
      if inds is not None:
          inds = pd.Index(inds)
          index = inds.intersection(index)
          varying_i = inds.intersection(varying_i)
          fixed_i = inds.intersection(fixed_i)
  
      # Short-circuit only fixed
      if len(varying_i) == 0:
          return repeat(df.loc[fixed_i, attr], len(snapshots))
  
      def is_same_indices(i1, i2): return len(i1) == len(i2) and (i1 == i2).all()
      if is_same_indices(fixed_i.append(varying_i), index):
          def reindex_maybe(s): return s
      else:
          def reindex_maybe(s): return s.reindex(index)
  
      return (
          reindex_maybe(df.loc[fixed_i, attr].append(pnl[attr].loc[sn, varying_i]))
          for sn in snapshots
      )
docs: Return an iterator over snapshots for a time-varying component
      attribute with values for all non-time-varying components filled
      in with the default values for the attribute.
  
      Parameters
      ----------
      network : pypsa.Network
      component : string
          Component object name, e.g. 'Generator' or 'Link'
      attr : string
          Attribute name
      snapshots : pandas.Index
          Restrict to these snapshots rather than network.snapshots.
      inds : pandas.Index
          Restrict to these items rather than all of network.{generators,..}.index
  
      Returns
      -------
      pandas.DataFrame
  
      Examples
      --------
      >>> get_switchable_as_iter(network, 'Generator', 'p_max_pu', snapshots)