Caiso
==========================

.. py:module:: gridstatus.caiso


Submodules
----------
.. toctree::
   :titlesonly:
   :maxdepth: 1

   caiso/index.rst
   caiso_constants/index.rst
   caiso_utils/index.rst


Package Contents
----------------

Classes Summary
~~~~~~~~~~~~~~~

.. autoapisummary::

   gridstatus.caiso.CAISO





Contents
~~~~~~~~~~~~~~~~~~~
.. py:class:: CAISO

   Bases: :py:obj:`gridstatus.base.ISOBase`

   California Independent System Operator (CAISO)


   **Attributes**

   .. list-table::
      :widths: 15 85
      :header-rows: 0

      * - **default_timezone**
        - 'US/Pacific'
      * - **interconnection_homepage**
        - 'https://rimspub.caiso.com/rimsui/logon.do'
      * - **iso_id**
        - 'caiso'
      * - **markets**
        - None
      * - **name**
        - 'California ISO'
      * - **status_homepage**
        - 'https://www.caiso.com/TodaysOutlook/Pages/default.aspx'
      * - **trading_hub_locations**
        - ['TH_NP15_GEN-APND', 'TH_SP15_GEN-APND', 'TH_ZP26_GEN-APND']


   **Methods**

   .. autoapisummary::
      :nosignatures:

      gridstatus.caiso.CAISO.get_as_prices
      gridstatus.caiso.CAISO.get_as_procurement
      gridstatus.caiso.CAISO.get_caiso_renewables_report
      gridstatus.caiso.CAISO.get_curtailed_non_operational_generator_report
      gridstatus.caiso.CAISO.get_curtailment
      gridstatus.caiso.CAISO.get_curtailment_legacy
      gridstatus.caiso.CAISO.get_fuel_mix
      gridstatus.caiso.CAISO.get_fuel_regions
      gridstatus.caiso.CAISO.get_gas_prices
      gridstatus.caiso.CAISO.get_ghg_allowance
      gridstatus.caiso.CAISO.get_interconnection_queue
      gridstatus.caiso.CAISO.get_intertie_constraint_shadow_prices_real_time_5_min
      gridstatus.caiso.CAISO.get_interval_nomogram_branch_shadow_prices_real_time_5_min
      gridstatus.caiso.CAISO.get_lmp
      gridstatus.caiso.CAISO.get_lmp_hasp_15_min
      gridstatus.caiso.CAISO.get_lmp_scheduling_point_tie_day_ahead_hourly
      gridstatus.caiso.CAISO.get_lmp_scheduling_point_tie_real_time_15_min
      gridstatus.caiso.CAISO.get_lmp_scheduling_point_tie_real_time_5_min
      gridstatus.caiso.CAISO.get_load
      gridstatus.caiso.CAISO.get_load_forecast
      gridstatus.caiso.CAISO.get_load_forecast_15_min
      gridstatus.caiso.CAISO.get_load_forecast_5_min
      gridstatus.caiso.CAISO.get_load_forecast_day_ahead
      gridstatus.caiso.CAISO.get_load_forecast_seven_day_ahead
      gridstatus.caiso.CAISO.get_load_forecast_two_day_ahead
      gridstatus.caiso.CAISO.get_load_hourly
      gridstatus.caiso.CAISO.get_nomogram_branch_shadow_price_forecast_15_min
      gridstatus.caiso.CAISO.get_nomogram_branch_shadow_prices_day_ahead_hourly
      gridstatus.caiso.CAISO.get_nomogram_branch_shadow_prices_hasp_hourly
      gridstatus.caiso.CAISO.get_oasis_dataset
      gridstatus.caiso.CAISO.get_pnodes
      gridstatus.caiso.CAISO.get_raw_interconnection_queue
      gridstatus.caiso.CAISO.get_renewables_forecast_dam
      gridstatus.caiso.CAISO.get_renewables_forecast_hasp
      gridstatus.caiso.CAISO.get_renewables_forecast_rtd
      gridstatus.caiso.CAISO.get_renewables_forecast_rtpd
      gridstatus.caiso.CAISO.get_renewables_hourly
      gridstatus.caiso.CAISO.get_stats
      gridstatus.caiso.CAISO.get_status
      gridstatus.caiso.CAISO.get_storage
      gridstatus.caiso.CAISO.get_system_load_and_resource_schedules_day_ahead
      gridstatus.caiso.CAISO.get_system_load_and_resource_schedules_hasp
      gridstatus.caiso.CAISO.get_system_load_and_resource_schedules_real_time_5_min
      gridstatus.caiso.CAISO.get_system_load_and_resource_schedules_ruc
      gridstatus.caiso.CAISO.get_tie_flows_real_time
      gridstatus.caiso.CAISO.get_tie_flows_real_time_15_min
      gridstatus.caiso.CAISO.list_oasis_datasets

   .. py:method:: get_as_prices(date: str | pandas.Timestamp, end: str | pandas.Timestamp | None = None, market: str = 'DAM', sleep: int = 4, verbose: bool = False) -> pandas.DataFrame

      Return AS prices for a given date for each region

      :param date: date to return data
      :type date: datetime.date, str
      :param end: last date of range to return data.
                  If None, returns only date. Defaults to None.
      :type end: datetime.date, str
      :param market: DAM or HASP. Defaults to DAM.
      :type market: str
      :param verbose: print out url being fetched. Defaults to False.
      :type verbose: bool, optional

      :returns: A DataFrame of AS prices
      :rtype: pandas.DataFrame


   .. py:method:: get_as_procurement(date: str | pandas.Timestamp, end: str | pandas.Timestamp | None = None, market: str = 'DAM', sleep: int = 4, verbose: bool = False) -> pandas.DataFrame

      Get ancillary services procurement data from CAISO.

      :param date: date to return data
      :type date: str | pd.Timestamp
      :param end: last date of range to return data.
                  If None, returns only date. Defaults to None.
      :type end: str | pd.Timestamp | None, optional
      :param market: DAM or RTM. Defaults to "DAM".
      :type market: str, optional
      :param sleep: number of seconds to sleep between requests. Defaults to 4.
      :type sleep: int, optional
      :param verbose: print out url being fetched. Defaults to False.
      :type verbose: bool, optional

      :returns: A DataFrame of ancillary services data
      :rtype: pandas.DataFrame


   .. py:method:: get_caiso_renewables_report(date: pandas.Timestamp) -> dict[str, pandas.DataFrame]

      Fetches the CAISO daily renewable report for a given date and extracts data from
      all the charts into wide dataframes.


   .. py:method:: get_curtailed_non_operational_generator_report(date: str | pandas.Timestamp, end: str | pandas.Timestamp | None = None, verbose: bool = False) -> pandas.DataFrame

      Return curtailed non-operational generator report for a given date.
         Earliest available date is June 17, 2021.

      :param date: date to return data
      :type date: str, pd.Timestamp
      :param end: last date of range to return data.
                  If None, returns only date. Defaults to None.
      :type end: str, pd.Timestamp, optional
      :param verbose: print out url being fetched. Defaults to False.
      :type verbose: bool, optional

      :returns: A DataFrame of curtailed non-operational generator report
      :rtype: pandas.DataFrame

      .. rubric:: Notes

      Column glossary:
      http://www.caiso.com/market/Pages/OutageManagement/Curtailed-OperationalGeneratorReportGlossary.aspx

      If requesting multiple days, you may want to run the following
      to remove outages that get reported across multiple days::

          df.drop_duplicates(
              subset=["OUTAGE MRID", "CURTAILMENT START DATE TIME"],
              keep="last",
          )


   .. py:method:: get_curtailment(date: str | pandas.Timestamp, end: str | pandas.Timestamp | None = None, verbose: bool = False) -> pandas.DataFrame

      Return curtailment data for a given date

      :param date: date to return data
      :type date: datetime.date, str
      :param end: last date of range to return data.
                  If None, returns only date. Defaults to None.
      :type end: datetime.date, str
      :param verbose: print out url being fetched. Defaults to False.

      :returns: A DataFrame of curtailment data
      :rtype: pandas.DataFrame


   .. py:method:: get_curtailment_legacy(date: str | pandas.Timestamp, verbose: bool = False) -> pandas.DataFrame

      Return curtailment data for a given date.

      .. note::

         Data available from June 30, 2016 to May 31, 2025. For current data,
         please use ``get_curtailment``.

      :param date: Date to return data.
      :param verbose: Print out url being fetched. Defaults to False.

      :returns: A DataFrame of curtailment data.


   .. py:method:: get_fuel_mix(date: str | pandas.Timestamp, start: str | pandas.Timestamp | None = None, end: str | pandas.Timestamp | None = None, verbose: bool = False) -> pandas.DataFrame

      Get fuel mix in 5 minute intervals for a provided day.

      :param date: "latest", "today", or an object that can be parsed as a
                   datetime for the day to return data.
      :param start: Start of date range to return. Alias for ``date`` parameter.
                    Only specify one of ``date`` or ``start``.
      :param end: "today" or an object that can be parsed as a datetime for the
                  day to return data. Only used if requesting a range of dates.
      :param verbose: Print verbose output. Defaults to False.

      :returns: A DataFrame with columns for Time and each fuel type.


   .. py:method:: get_fuel_regions(verbose: bool = False) -> pandas.DataFrame

      Retrieves the (mostly static) list of fuel regions with associated data.
      This file can be joined to the gas prices on Fuel Region Id


   .. py:method:: get_gas_prices(date: str | pandas.Timestamp, end: str | pandas.Timestamp | None = None, fuel_region_id: str | list = 'ALL', sleep: int = 4, verbose: bool = False)

      Return gas prices at a previous date

      :param date: date to return data
      :type date: datetime.date, str
      :param end: last date of range to return data.
                  If None, returns only date. Defaults to None.
      :type end: datetime.date, str
      :param fuel_region_id: single fuel region id or list of fuel
                             region ids to return data for. Defaults to ALL, which returns
                             all fuel regions.
      :type fuel_region_id: str, or list

      :returns: A DataFrame of gas prices
      :rtype: pandas.DataFrame


   .. py:method:: get_ghg_allowance(date: str | pandas.Timestamp, end: str | pandas.Timestamp | None = None, sleep: int = 4, verbose: bool = False)

      Return ghg allowance at a previous date

      :param date: date to return data
      :type date: datetime.date, str
      :param end: last date of range to return data.
                  If None, returns only date. Defaults to None.
      :type end: datetime.date, str


   .. py:method:: get_interconnection_queue(verbose: bool = False) -> pandas.DataFrame

   .. py:method:: get_intertie_constraint_shadow_prices_real_time_5_min(date: str | pandas.Timestamp, end: str | pandas.Timestamp | None = None, verbose: bool = False) -> pandas.DataFrame

      Get 5-min intertie constraint shadow prices from CAISO.

      :param date: date to return data
      :type date: str | pd.Timestamp
      :param end: last date of range to return data.
                  If None, returns only date. Defaults to None.
      :type end: str | pd.Timestamp | None, optional
      :param verbose: print out url being fetched.
      :type verbose: bool, optional

      :returns: A DataFrame with the intertie constraint shadow prices
      :rtype: pandas.DataFrame


   .. py:method:: get_interval_nomogram_branch_shadow_prices_real_time_5_min(date: str | pandas.Timestamp, end: str | pandas.Timestamp | None = None, verbose: bool = False) -> pandas.DataFrame

      Get 5-min nomogram/branch shadow prices from CAISO.

      :param date: date to return data
      :type date: str | pd.Timestamp
      :param end: last date of range to return data.
                  If None, returns only date. Defaults to None.
      :type end: str | pd.Timestamp | None, optional
      :param verbose: print out url being fetched.
      :type verbose: bool, optional

      :returns: A DataFrame with the shadow prices
      :rtype: pandas.DataFrame


   .. py:method:: get_lmp(date: str | pandas.Timestamp, market: str, locations: list = None, sleep: int = 5, end: str | pandas.Timestamp = None, verbose: bool = False)

      Get LMP pricing starting at supplied date for a list of locations.

      :param date: date to return data
      :type date: datetime.date, str
      :param market: market to return from. supports:
      :param locations: list of locations to get data from.
                        If no locations are provided, defaults to NP15,
                        SP15, and ZP26, which are the trading hub locations.
                        USE "ALL_AP_NODES" for all Aggregate Pricing Node.
                        Use "ALL" to get all nodes. For a list of locations,
                        call ``CAISO.get_pnodes()``
      :type locations: list
      :param sleep: number of seconds to sleep before returning to
                    avoid hitting rate limit in regular usage. Defaults to 5 seconds.
      :type sleep: int

      :returns: A DataFrame of pricing data
      :rtype: pandas.DataFrame


   .. py:method:: get_lmp_hasp_15_min(date: str | pandas.Timestamp, end: str | pandas.Timestamp | None = None, verbose: bool = False) -> pandas.DataFrame

      Get LMP HASP 15-min data from CAISO.

      :param date: date to return data
      :type date: str | pd.Timestamp
      :param end: last date of range to return data.
                  If None, returns only date. Defaults to None.
      :type end: str | pd.Timestamp | None, optional
      :param verbose: print out url being fetched. Defaults to False.
      :type verbose: bool, optional

      :returns: A DataFrame of LMP HASP 15-min data
      :rtype: pandas.DataFrame


   .. py:method:: get_lmp_scheduling_point_tie_day_ahead_hourly(date: str | pandas.Timestamp, end: str | pandas.Timestamp | None = None, verbose: bool = False) -> pandas.DataFrame

   .. py:method:: get_lmp_scheduling_point_tie_real_time_15_min(date: str | pandas.Timestamp, end: str | pandas.Timestamp | None = None, verbose: bool = False) -> pandas.DataFrame

   .. py:method:: get_lmp_scheduling_point_tie_real_time_5_min(date: str | pandas.Timestamp, end: str | pandas.Timestamp | None = None, verbose: bool = False) -> pandas.DataFrame

      Get LMP scheduling point tie combination 5-min data from CAISO.

      :param date: date to return data
      :type date: str | pd.Timestamp
      :param end: last date of range to return data.
                  If None, returns only date. Defaults to None.
      :type end: str | pd.Timestamp | None, optional
      :param verbose: print out url being fetched. Defaults to False.
      :type verbose: bool, optional

      :returns: A DataFrame of LMP scheduling point tie combination 5-min data
      :rtype: pandas.DataFrame


   .. py:method:: get_load(date: str | pandas.Timestamp, end: str | pandas.Timestamp | None = None, verbose: bool = False) -> pandas.DataFrame

      Return load at a previous date in 5 minute intervals


   .. py:method:: get_load_forecast(date: str | pandas.Timestamp, end: str | pandas.Timestamp | None = None, verbose: bool = False) -> pandas.DataFrame

   .. py:method:: get_load_forecast_15_min(date: str | pandas.Timestamp, end: str | pandas.Timestamp | None = None, sleep: int = 4, verbose: bool = False) -> pandas.DataFrame

      Returns 15-minute load forecast from the Real-Time Pre-Dispatch Market

      :param date: day to return
      :type date: str | pd.Timestamp
      :param end: end of date range to return.
                  If None, returns only date. Defaults to None.
      :type end: str | pd.Timestamp, optional
      :param sleep: seconds to sleep before returning to avoid rate limit. Defaults to 4.
      :type sleep: int
      :param verbose: print verbose output. Defaults to False.
      :type verbose: bool

      :returns: DataFrame with load forecast data
      :rtype: pd.DataFrame


   .. py:method:: get_load_forecast_5_min(date: str | pandas.Timestamp, end: str | pandas.Timestamp | None = None, sleep: int = 4, verbose: bool = False) -> pandas.DataFrame

      Returns 5-minute load forecast from the Real-Time Market

      :param date: day to return
      :type date: str | pd.Timestamp
      :param end: end of date range to return.
                  If None, returns only date. Defaults to None.
      :type end: str | pd.Timestamp, optional
      :param sleep: seconds to sleep before returning to avoid rate limit. Defaults to 4.
      :type sleep: int
      :param verbose: print verbose output. Defaults to False.
      :type verbose: bool

      :returns: DataFrame with load forecast data
      :rtype: pd.DataFrame


   .. py:method:: get_load_forecast_day_ahead(date: str | pandas.Timestamp, end: str | pandas.Timestamp | None = None, sleep: int = 4, verbose: bool = False) -> pandas.DataFrame

      Returns hourly day-ahead load forecast

      :param date: day to return
      :type date: str | pd.Timestamp
      :param end: end of date range to return data.
                  If None, returns only date. Defaults to None.
      :type end: str | pd.Timestamp, optional
      :param sleep: seconds to sleep before returning to avoid rate limit. Defaults to 4.
      :type sleep: int
      :param verbose: print verbose output. Defaults to False.
      :type verbose: bool

      :returns: DataFrame with load forecast data
      :rtype: pd.DataFrame


   .. py:method:: get_load_forecast_seven_day_ahead(date: str | pandas.Timestamp, end: str | pandas.Timestamp | None = None, sleep: int = 4, verbose: bool = False) -> pandas.DataFrame

      Returns hourly seven-day-ahead load forecast

      :param date: day to return
      :type date: str | pd.Timestamp
      :param end: end of date range to return data.
                  If None, returns only date. Defaults to None.
      :type end: str | pd.Timestamp, optional
      :param sleep: seconds to sleep before returning to avoid rate limit. Defaults to 4.
      :type sleep: int
      :param verbose: print verbose output. Defaults to False.
      :type verbose: bool

      :returns: DataFrame with load forecast data
      :rtype: pd.DataFrame


   .. py:method:: get_load_forecast_two_day_ahead(date: str | pandas.Timestamp, end: str | pandas.Timestamp | None = None, sleep: int = 4, verbose: bool = False) -> pandas.DataFrame

      Returns hourly two-day-ahead load forecast

      :param date: day to return
      :type date: str | pd.Timestamp
      :param end: end of date range to return data.
                  If None, returns only date. Defaults to None.
      :type end: str | pd.Timestamp, optional
      :param sleep: seconds to sleep before returning to avoid rate limit. Defaults to 4.
      :type sleep: int
      :param verbose: print verbose output. Defaults to False.
      :type verbose: bool

      :returns: DataFrame with load forecast data
      :rtype: pd.DataFrame


   .. py:method:: get_load_hourly(date: str | pandas.Timestamp, end: str | pandas.Timestamp | None = None, sleep: int = 4, verbose: bool = False) -> pandas.DataFrame

      Returns actual load values

      :param date: day to return
      :type date: str | pd.Timestamp
      :param end: end of date range to return.
                  If None, returns only date. Defaults to None.
      :type end: str | pd.Timestamp, optional
      :param sleep: seconds to sleep before returning to avoid rate limit. Defaults to 4.
      :type sleep: int
      :param verbose: print verbose output. Defaults to False.
      :type verbose: bool

      :returns: DataFrame with actual load data
      :rtype: pd.DataFrame


   .. py:method:: get_nomogram_branch_shadow_price_forecast_15_min(date: str | pandas.Timestamp, end: str | pandas.Timestamp | None = None, verbose: bool = False) -> pandas.DataFrame

      Returns 15-minute nomogram/branch shadow price forecast from the Real-Time Pre-Dispatch Market.

      :param date: date to return data
      :type date: str | pd.Timestamp
      :param end: last date of range to return data.
                  If None, returns only date. Defaults to None.
      :type end: str | pd.Timestamp | None, optional
      :param verbose: print out url being fetched.
      :type verbose: bool, optional

      :returns: A DataFrame with the shadow price forecast
      :rtype: pandas.DataFrame


   .. py:method:: get_nomogram_branch_shadow_prices_day_ahead_hourly(date: str | pandas.Timestamp, end: str | pandas.Timestamp | None = None, verbose: bool = False) -> pandas.DataFrame

      Returns hourly day-ahead nomogram/branch shadow price forecast.

      :param date: date to return data
      :type date: str | pd.Timestamp
      :param end: last date of range to return data.
                  If None, returns only date. Defaults to None.
      :type end: str | pd.Timestamp | None, optional
      :param verbose: print out url being fetched.
      :type verbose: bool, optional

      :returns: A DataFrame with the shadow price forecast
      :rtype: pandas.DataFrame


   .. py:method:: get_nomogram_branch_shadow_prices_hasp_hourly(date: str | pandas.Timestamp, end: str | pandas.Timestamp | None = None, verbose: bool = False) -> pandas.DataFrame

      Returns nomogram/branch shadow price HASP hourly data from CAISO.

      :param date: date to return data
      :type date: str | pd.Timestamp
      :param end: last date of range to return data.
                  If None, returns only date. Defaults to None.
      :type end: str | pd.Timestamp | None, optional
      :param verbose: print out url being fetched.
      :type verbose: bool, optional

      :returns: A DataFrame with the shadow price HASP data
      :rtype: pandas.DataFrame


   .. py:method:: get_oasis_dataset(dataset: str, date: str | pandas.Timestamp, end: str | pandas.Timestamp | None = None, params: dict | None = None, raw_data: bool = True, sleep: int = 5, verbose: bool = False) -> pandas.DataFrame

      Return data from OASIS for a given dataset

      :param dataset: dataset to return data for. See CAISO.list_oasis_datasets
                      for supported datasets
      :type dataset: str
      :param date: date to return data
      :type date: str, pd.Timestamp
      :param end: last date of range to return data.
                  If None, returns only date. Defaults to None.
      :type end: str, pd.Timestamp, optional
      :param params: dictionary of parameters to pass to dataset.
                     See CAISO.list_oasis_datasets for supported parameters
      :type params: dict
      :param raw_data: return raw data from OASIS. Defaults to True.
      :type raw_data: bool, optional
      :param sleep: number of seconds to sleep between
                    requests. Defaults to 5.
      :type sleep: int, optional
      :param verbose: print out url being fetched. Defaults to False.
      :type verbose: bool, optional

      :raises ValueError: if parameter is not supported for dataset
      :raises ValueError: if parameter value is not supported for dataset

      :returns: A DataFrame of data from OASIS
      :rtype: pd.DataFrame


   .. py:method:: get_pnodes(verbose: bool = False) -> pandas.DataFrame

   .. py:method:: get_raw_interconnection_queue(verbose: bool = False) -> pandas.DataFrame

   .. py:method:: get_renewables_forecast_dam(date: str | pandas.Timestamp, end: str | pandas.Timestamp | None = None, verbose: bool = False) -> pandas.DataFrame

      Return DAM renewable forecast in hourly intervals

      Data at: http://oasis.caiso.com/mrioasis/logon.do  at System Demand >
      DAM Renewable Forecast


   .. py:method:: get_renewables_forecast_hasp(date: str | pandas.Timestamp, end: str | pandas.Timestamp | None = None, verbose: bool = False) -> pandas.DataFrame

      Get solar and wind generation HASP hourly data from CAISO.

      :param date: date to return data
      :type date: str | pd.Timestamp
      :param end: last date of range to return data.
                  If None, returns only date. Defaults to None.
      :type end: str | pd.Timestamp | None, optional
      :param verbose: print out url being fetched. Defaults to False.
      :type verbose: bool, optional

      :returns: A DataFrame of solar and wind generation HASP hourly data
      :rtype: pandas.DataFrame


   .. py:method:: get_renewables_forecast_rtd(date: str | pandas.Timestamp, end: str | pandas.Timestamp | None = None, verbose: bool = False) -> pandas.DataFrame

      Get RTD renewable forecast from CAISO.

      :param date: date to return data
      :type date: str | pd.Timestamp
      :param end: last date of range to return data.
      :type end: str | pd.Timestamp | None, optional
      :param verbose: print out url being fetched. Defaults to False.
      :type verbose: bool, optional

      :returns: A DataFrame of RTD renewable forecast
      :rtype: pandas.DataFrame


   .. py:method:: get_renewables_forecast_rtpd(date: str | pandas.Timestamp, end: str | pandas.Timestamp | None = None, verbose: bool = False) -> pandas.DataFrame

      Get RTPD renewable forecast from CAISO.

      :param date: date to return data
      :type date: str | pd.Timestamp
      :param end: last date of range to return data.
      :type end: str | pd.Timestamp | None, optional
      :param verbose: print out url being fetched. Defaults to False.
      :type verbose: bool, optional

      :returns: A DataFrame of RTPD renewable forecast
      :rtype: pandas.DataFrame


   .. py:method:: get_renewables_hourly(date: str | pandas.Timestamp, end: str | pandas.Timestamp | None = None, verbose: bool = False) -> pandas.DataFrame

      Get wind and solar hourly actuals from CAISO.

      :param date: date to return data
      :type date: str | pd.Timestamp
      :param end: last date of range to return data.
      :type end: str | pd.Timestamp | None, optional
      :param verbose: print out url being fetched. Defaults to False.
      :type verbose: bool, optional

      :returns: A DataFrame of wind and solar hourly actuals
      :rtype: pandas.DataFrame


   .. py:method:: get_stats(verbose: bool = False) -> dict

   .. py:method:: get_status(date: str = 'latest', verbose: bool = False) -> str

      Get Current Status of the Grid. Only date="latest" is supported

      Known possible values: Normal, Restricted Maintenance Operations, Flex Alert


   .. py:method:: get_storage(date: str | pandas.Timestamp, verbose: bool = False) -> pandas.DataFrame

      Return storage charging or discharging for today in 5 minute intervals

      Negative means charging, positive means discharging

      :param date: date to return data
      :type date: datetime.date, str


   .. py:method:: get_system_load_and_resource_schedules_day_ahead(date: str | pandas.Timestamp, end: str | pandas.Timestamp | None = None, verbose: bool = False) -> pandas.DataFrame

      Get CAISO System Load and Resource Schedules Day-Ahead data from CAISO.


   .. py:method:: get_system_load_and_resource_schedules_hasp(date: str | pandas.Timestamp, end: str | pandas.Timestamp | None = None, verbose: bool = False) -> pandas.DataFrame

      Get CAISO System Load and Resource Schedules HASP data from CAISO.


   .. py:method:: get_system_load_and_resource_schedules_real_time_5_min(date: str | pandas.Timestamp, end: str | pandas.Timestamp | None = None, verbose: bool = False) -> pandas.DataFrame

      Get CAISO System Load and Resource Schedules Real Time data from CAISO.


   .. py:method:: get_system_load_and_resource_schedules_ruc(date: str | pandas.Timestamp, end: str | pandas.Timestamp | None = None, verbose: bool = False) -> pandas.DataFrame

      Get CAISO System Load and Resource Schedules RUC data from CAISO.


   .. py:method:: get_tie_flows_real_time(date: str | pandas.Timestamp, end: str | pandas.Timestamp | None = None, verbose: bool = False) -> pandas.DataFrame

      Return real time tie flow data.

      :param date: date to return data
      :type date: str | pd.Timestamp
      :param end: last date of range to return data.
                  If None, returns only date. Defaults to None.
      :type end: str | pd.Timestamp | None, optional
      :param verbose: print out url being fetched. Defaults to False.
      :type verbose: bool, optional

      :returns: A DataFrame of real time tie flow data
      :rtype: pd.DataFrame


   .. py:method:: get_tie_flows_real_time_15_min(date: str | pandas.Timestamp, end: str | pandas.Timestamp | None = None, verbose: bool = False) -> pandas.DataFrame

   .. py:method:: list_oasis_datasets(dataset: str | None = None)

      List all available OASIS datasets and their parameters.

      :param dataset: dataset to return data for. If None, returns all datasets.
      :type dataset: str, optional



