Ercot
==========================

.. py:module:: gridstatus.ercot


Module Contents
---------------

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

.. autoapisummary::

   gridstatus.ercot.Document
   gridstatus.ercot.Ercot
   gridstatus.ercot.ERCOTSevenDayLoadForecastReport




Functions
~~~~~~~~~

.. autoapisummary::
   :nosignatures:

   gridstatus.ercot.parse_timestamp_from_friendly_name



Attributes Summary
~~~~~~~~~~~~~~~~~~~

.. autoapisummary::

   gridstatus.ercot.ACTUAL_SYSTEM_LOAD_BY_FORECAST_ZONE
   gridstatus.ercot.ACTUAL_SYSTEM_LOAD_BY_WEATHER_ZONE
   gridstatus.ercot.DAM_ANCILLARY_SERVICE_PLAN_RTID
   gridstatus.ercot.DAM_CLEARING_PRICES_FOR_CAPACITY_RTID
   gridstatus.ercot.DAM_PRICE_CORRECTIONS_RTID
   gridstatus.ercot.DAM_SETTLEMENT_POINT_PRICES_RTID
   gridstatus.ercot.DAM_SYSTEM_LAMBDA_RTID
   gridstatus.ercot.ELECTRICAL_BUS_LOCATION_TYPE
   gridstatus.ercot.ERCOT_INDICATIVE_LMP_BY_SETTLEMENT_POINT_RTID
   gridstatus.ercot.GIS_REPORT_RTID
   gridstatus.ercot.HISTORICAL_DAM_LOAD_ZONE_AND_HUB_PRICES_RTID
   gridstatus.ercot.HISTORICAL_RTM_LOAD_ZONE_AND_HUB_PRICES_RTID
   gridstatus.ercot.HOURLY_RESOURCE_OUTAGE_CAPACITY_RTID
   gridstatus.ercot.HUB_SETTLEMENT_TYPES
   gridstatus.ercot.LMPS_BY_ELECTRICAL_BUS_RTID
   gridstatus.ercot.LMPS_BY_SETTLEMENT_POINT_RTID
   gridstatus.ercot.LOAD_ZONE_SETTLEMENT_TYPES
   gridstatus.ercot.LOCATION_TYPE_HUB
   gridstatus.ercot.LOCATION_TYPE_RESOURCE_NODE
   gridstatus.ercot.LOCATION_TYPE_ZONE
   gridstatus.ercot.LOCATION_TYPE_ZONE_DC
   gridstatus.ercot.LOCATION_TYPE_ZONE_DC_EW
   gridstatus.ercot.LOCATION_TYPE_ZONE_EW
   gridstatus.ercot.REAL_TIME_ADDERS_AND_RESERVES_RTID
   gridstatus.ercot.RESOURCE_NODE_SETTLEMENT_TYPES
   gridstatus.ercot.RTM_PRICE_CORRECTIONS_RTID
   gridstatus.ercot.SCED_SYSTEM_LAMBDA_RTID
   gridstatus.ercot.SETTLEMENT_POINT_LOCATION_TYPE
   gridstatus.ercot.SETTLEMENT_POINT_PRICES_AT_RESOURCE_NODES_HUBS_AND_LOAD_ZONES_RTID
   gridstatus.ercot.SETTLEMENT_POINTS_LIST_AND_ELECTRICAL_BUSES_MAPPING_RTID
   gridstatus.ercot.SHORT_TERM_SYSTEM_ADEQUACY_REPORT_RTID
   gridstatus.ercot.SIXTY_DAY_DAM_DISCLOSURE_REPORTS_RTID
   gridstatus.ercot.SIXTY_DAY_SCED_DISCLOSURE_REPORTS_RTID
   gridstatus.ercot.SOLAR_POWER_PRODUCTION_HOURLY_AVERAGED_ACTUAL_AND_FORECASTED_VALUES_BY_GEOGRAPHICAL_REGION_RTID
   gridstatus.ercot.SYSTEM_WIDE_ACTUALS_RTID
   gridstatus.ercot.TEMPERATURE_FORECAST_BY_WEATHER_ZONE_RTID
   gridstatus.ercot.THREE_DAY_HIGHEST_PRICE_AS_OFFER_SELECTED_RTID
   gridstatus.ercot.TWO_DAY_ANCILLARY_SERVICES_REPORTS_RTID
   gridstatus.ercot.UNPLANNED_RESOURCE_OUTAGES_REPORT_RTID
   gridstatus.ercot.WIND_POWER_PRODUCTION_HOURLY_AVERAGED_ACTUAL_AND_FORECASTED_VALUES_RTID


Contents
~~~~~~~~~~~~~~~~~~~
.. py:data:: ACTUAL_SYSTEM_LOAD_BY_FORECAST_ZONE
   :value: 14836

   

.. py:data:: ACTUAL_SYSTEM_LOAD_BY_WEATHER_ZONE
   :value: 13101

   

.. py:data:: DAM_ANCILLARY_SERVICE_PLAN_RTID
   :value: 12316

   

.. py:data:: DAM_CLEARING_PRICES_FOR_CAPACITY_RTID
   :value: 12329

   

.. py:data:: DAM_PRICE_CORRECTIONS_RTID
   :value: 13044

   

.. py:data:: DAM_SETTLEMENT_POINT_PRICES_RTID
   :value: 12331

   

.. py:data:: DAM_SYSTEM_LAMBDA_RTID
   :value: 13113

   

.. py:class:: Document


   **Attributes**

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

      * - **constructed_name**
        - None
      * - **friendly_name**
        - None
      * - **friendly_name_timestamp**
        - None
      * - **publish_date**
        - None
      * - **url**
        - None



.. py:data:: ELECTRICAL_BUS_LOCATION_TYPE
   :value: 'Electrical Bus'

   

.. py:class:: Ercot

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

   Electric Reliability Council of Texas (ERCOT)


   **Attributes**

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

      * - **ACTUAL_LOADS_FORECAST_ZONES_URL_FORMAT**
        - https://www.ercot.com/content/cdr/html/{timestamp}_actual_loads_of_forecast_zones.html
      * - **ACTUAL_LOADS_WEATHER_ZONES_URL_FORMAT**
        - https://www.ercot.com/content/cdr/html/{timestamp}_actual_loads_of_weather_zones.html
      * - **BASE**
        - https://www.ercot.com/api/1/services/read/dashboards
      * - **default_timezone**
        - US/Central
      * - **interconnection_homepage**
        - http://mis.ercot.com/misapp/GetReports.do?reportTypeId=15933
      * - **iso_id**
        - ercot
      * - **LOAD_HISTORICAL_MAX_DAYS**
        - 14
      * - **location_types**
        - None
      * - **markets**
        - None
      * - **name**
        - Electric Reliability Council of Texas
      * - **status_homepage**
        - https://www.ercot.com/gridmktinfo/dashboards/gridconditions


   **Methods**

   .. autoapisummary::
      :nosignatures:

      gridstatus.ercot.Ercot.get_60_day_dam_disclosure
      gridstatus.ercot.Ercot.get_60_day_sced_disclosure
      gridstatus.ercot.Ercot.get_as_monitor
      gridstatus.ercot.Ercot.get_as_plan
      gridstatus.ercot.Ercot.get_as_prices
      gridstatus.ercot.Ercot.get_as_reports
      gridstatus.ercot.Ercot.get_available_seasonal_capacity_forecast
      gridstatus.ercot.Ercot.get_capacity_committed
      gridstatus.ercot.Ercot.get_capacity_forecast
      gridstatus.ercot.Ercot.get_dam_price_corrections
      gridstatus.ercot.Ercot.get_dam_spp
      gridstatus.ercot.Ercot.get_dam_system_lambda
      gridstatus.ercot.Ercot.get_energy_storage_resources
      gridstatus.ercot.Ercot.get_fuel_mix
      gridstatus.ercot.Ercot.get_highest_price_as_offer_selected
      gridstatus.ercot.Ercot.get_hourly_resource_outage_capacity
      gridstatus.ercot.Ercot.get_hourly_solar_report
      gridstatus.ercot.Ercot.get_hourly_wind_report
      gridstatus.ercot.Ercot.get_indicative_lmp_by_settlement_point
      gridstatus.ercot.Ercot.get_interconnection_queue
      gridstatus.ercot.Ercot.get_lmp
      gridstatus.ercot.Ercot.get_load
      gridstatus.ercot.Ercot.get_load_by_forecast_zone
      gridstatus.ercot.Ercot.get_load_by_weather_zone
      gridstatus.ercot.Ercot.get_load_forecast
      gridstatus.ercot.Ercot.get_raw_interconnection_queue
      gridstatus.ercot.Ercot.get_real_time_adders_and_reserves
      gridstatus.ercot.Ercot.get_real_time_system_conditions
      gridstatus.ercot.Ercot.get_reported_outages
      gridstatus.ercot.Ercot.get_rtm_price_corrections
      gridstatus.ercot.Ercot.get_rtm_spp
      gridstatus.ercot.Ercot.get_sara
      gridstatus.ercot.Ercot.get_sced_system_lambda
      gridstatus.ercot.Ercot.get_short_term_system_adequacy
      gridstatus.ercot.Ercot.get_spp
      gridstatus.ercot.Ercot.get_status
      gridstatus.ercot.Ercot.get_system_wide_actual_load
      gridstatus.ercot.Ercot.get_temperature_forecast_by_weather_zone
      gridstatus.ercot.Ercot.get_unplanned_resource_outages
      gridstatus.ercot.Ercot.parse_doc
      gridstatus.ercot.Ercot.read_doc
      gridstatus.ercot.Ercot.read_docs

   .. py:method:: get_60_day_dam_disclosure(date, end=None, process=False, verbose=False)

      Get 60 day DAM Disclosure data. Returns a dict with keys

      - "dam_gen_resource"
      - "dam_gen_resource_as_offers"
      - "dam_load_resource"
      - "dam_load_resource_as_offers"
      - "dam_energy_bids"
      - "dam_energy_bid_awards"

      and values as pandas.DataFrame objects

      The date passed in should be the report date. Since reports are delayed by 60
      days, the passed date should not be fewer than 60 days in the past.


   .. py:method:: get_60_day_sced_disclosure(date, end=None, process=False, verbose=False)

      Get 60 day SCED Disclosure data

      :param date: date to return
      :type date: datetime.date, str
      :param end: if declared, function will return
                  data as a range, from "date" to "end"
      :type end: datetime.date, str, optional
      :param process: if True, will process the data into
                      standardized format. if False, will return raw data
      :type process: bool, optional
      :param verbose: print verbose output. Defaults to False.
      :type verbose: bool, optional

      :returns:

                dictionary with keys "sced_load_resource", "sced_gen_resource", and
                    "sced_smne", mapping to pandas.DataFrame objects
      :rtype: dict


   .. py:method:: get_as_monitor(date='latest', verbose=False)

      Get Ancillary Service Capacity Monitor.

      Parses table from
      https://www.ercot.com/content/cdr/html/as_capacity_monitor.html

      :param date: only supports "latest"
      :type date: str
      :param verbose: print verbose output. Defaults to False.
      :type verbose: bool, optional

      :returns: A DataFrame with ancillary service capacity monitor data
      :rtype: pandas.DataFrame


   .. py:method:: get_as_plan(date, end=None, verbose=False)

      Ancillary Service requirements by type and quantity for each hour of the
      current day plus the next 6 days

      :param date: date of delivery for AS services
      :type date: datetime.date, str
      :param end: if declared, function will return
                  data as a range, from "date" to "end"
      :type end: datetime.date, str, optional
      :param verbose: print verbose output. Defaults to False.
      :type verbose: bool, optional

      :returns: A DataFrame with prices for ECRS, NSPIN, REGDN, REGUP, RRS
      :rtype: pandas.DataFrame


   .. py:method:: get_as_prices(date, end=None, verbose=False)

      Get ancillary service clearing prices in hourly intervals in Day Ahead Market

      :param date: date of delivery for AS services
      :type date: datetime.date, str
      :param end: if declared, function will return
                  data as a range, from "date" to "end"
      :type end: datetime.date, str, optional
      :param verbose: print verbose output. Defaults to False.
      :type verbose: bool, optional

      :returns: A DataFrame with prices for "Non-Spinning Reserves",                 "Regulation Up", "Regulation Down", "Responsive Reserves",                 "ERCOT Contingency Reserve Service"
      :rtype: pandas.DataFrame


   .. py:method:: get_as_reports(date, verbose=False)

      Get Ancillary Services Reports.

      Published with a 2 day delay around 3am central


   .. py:method:: get_available_seasonal_capacity_forecast(date='latest', verbose=False)

      Retrieves the forecasted demand (Load Forecast) and the forecasted available
      seasonal capacity (Available Capacity) for the next 6 days.

      Data is ephemeral and does not support past days.


   .. py:method:: get_capacity_committed(date='latest', verbose=False)

      Retrieves the actual committed capacity (the amount of power available from
      generating units that were on-line or providing operating reserves).

      Data is ephemeral and does not support past days.


   .. py:method:: get_capacity_forecast(date='latest', verbose=False)

      Retrieves the forecasted committed capacity (Committed Capacity) and the
      forecasted available capacity (Available Capacity) for the current day.

      Data is ephemeral and does not support past days.


   .. py:method:: get_dam_price_corrections(dam_type, verbose=False)

      Get RTM Price Corrections

      :param rtm_type: 'DAM_SPP', 'DAM_MCPC', 'DAM_EBLMP'
      :type rtm_type: str


   .. py:method:: get_dam_spp(year, verbose=False)

      Get Historical DAM Settlement Point Prices(SPPs)
      for each of the Hubs and Load Zones

      :param year: year to get data for.
                   Starting 2011, returns data for the entire year
      :type year: int

      Source:
          https://www.ercot.com/mp/data-products/data-product-details?id=NP4-180-ER


   .. py:method:: get_dam_system_lambda(date, end=None, verbose=False)

      Get Day-Ahead Market System Lambda

      File is typically published around 12:30 pm for the day ahead

      https://www.ercot.com/mp/data-products/data-product-details?id=NP4-523-CD

      :param date: date to get data for
      :type date: str, datetime
      :param end: end time to get data for. If None,
                  return 1 day of data. Defaults to None.
      :type end: str, datetime, optional
      :param verbose: print verbose output. Defaults to False.
      :type verbose: bool, optional

      :returns: A DataFrame with day-ahead market system lambda data
      :rtype: pandas.DataFrame


   .. py:method:: get_energy_storage_resources(date='latest', verbose=False)

      Get energy storage resources.
      Always returns data from previous and current day


   .. py:method:: get_fuel_mix(date, verbose=False)

      Get fuel mix 5 minute intervals

      :param date: "latest", "today",
                   and yesterday's date are supported.
      :type date: datetime.date, str
      :param verbose: print verbose output. Defaults to False.
      :type verbose: bool

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


   .. py:method:: get_highest_price_as_offer_selected(date, verbose=False)

      Get the offer price and the name of the Entity submitting
      the offer for the highest-priced Ancillary Service (AS) Offer.

      Published with 3 day delay

      :param date: date to get data for
      :type date: str, datetime
      :param verbose: print verbose output. Defaults to False.
      :type verbose: bool, optional

      :returns: A DataFrameq
      :rtype: pandas.DataFrame


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

      Hourly Resource Outage Capacity report sourced
      from the Outage Scheduler (OS).

      Returns outage data for for next 7 days.

      Total Resource MW doesn't include IRR, New Equipment outages,
      retirement of old equipment, seasonal
      mothballed (during the outage season),
      and mothballed.

      As such, it is a proxy for thermal outages.

      :param date: time to download. Returns last hourly report
                   before this time. Supports "latest"
      :type date: str, pd.Timestamp
      :param end: end time to download. Defaults to None.
      :type end: str, pd.Timestamp, optional
      :param verbose: print verbose output. Defaults to False.
      :type verbose: bool, optional

      :returns: A DataFrame with hourly resource outage capacity data
      :rtype: pandas.DataFrame


   .. py:method:: get_hourly_solar_report(date, end=None, verbose=False)

      Get Hourly Solar Report.

      Posted every hour and includes System-wide and geographic regional
      hourly averaged solar power production, STPPF, PVGRPP, and COP HSL
      for On-Line PVGRs for a rolling historical 48-hour period as well
      as the system-wide and regional STPPF, PVGRPP, and COP HSL for
      On-Line PVGRs for the rolling future 168-hour period.

      :param date: date to get report for. Supports "latest" or a date string
      :type date: str
      :param end: end date for date range. Defaults to None.
      :type end: str, optional
      :param verbose: print verbose output. Defaults to False.
      :type verbose: bool, optional

      :returns: A DataFrame with hourly solar report data
      :rtype: pandas.DataFrame


   .. py:method:: get_hourly_wind_report(date, end=None, verbose=False)

      Get Hourly Wind Report.

      This report is posted every hour and includes System-wide and Regional
      actual hourly averaged wind power production, STWPF, WGRPP and COP
      HSLs for On-Line WGRs for a rolling historical 48-hour period as
      well as the System-wide and Regional STWPF, WGRPP and
      COP HSLs for On-Line WGRs for the rolling future
      168-hour period. Our forecasts attempt to predict HSL,
      which is uncurtailed power generation potential.

      :param date: date to get report for. Supports "latest"
      :type date: str
      :param verbose: print verbose output. Defaults to False.
      :type verbose: bool, optional

      :returns: A DataFrame with hourly wind report data
      :rtype: pandas.DataFrame


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


   .. py:method:: get_interconnection_queue(verbose=False)

      Get interconnection queue for ERCOT

      Monthly historical data available here:
          http://mis.ercot.com/misapp/GetReports.do?reportTypeId=15933&reportTitle=GIS%20Report&showHTMLView=&mimicKey


   .. py:method:: get_lmp(date, end=None, location_type: str = SETTLEMENT_POINT_LOCATION_TYPE, verbose=False)

      Get LMP data for ERCOT normally produced by SCED every five minutes

      Can specify the location type to return "electrical bus"
      or "settlement point" data. Defaults to "settlement point"



   .. py:method:: get_load(date, end=None, verbose=False)

      Get load for a date

      :param date: "latest", "today", or a date string
                   are supported.
      :type date: datetime.date, str


   .. py:method:: get_load_by_forecast_zone(date, verbose=False)

      Get hourly load for ERCOT forecast zones

      :param date: "today", or a date string
                   are supported.
      :type date: datetime.date, str
      :param verbose: print verbose output. Defaults to False.
      :type verbose: bool

      :returns: pandas.DataFrame


   .. py:method:: get_load_by_weather_zone(date, verbose=False)

      Get hourly load for ERCOT weather zones

      :param date: "today", or a date string
                   are supported.
      :type date: datetime.date, str
      :param verbose: print verbose output. Defaults to False.
      :type verbose: bool

      :returns: pandas.DataFrame


   .. py:method:: get_load_forecast(date, end=None, forecast_type=ERCOTSevenDayLoadForecastReport.BY_FORECAST_ZONE, verbose=False)

      Returns load forecast of specified forecast type.

      If date range provided, returns all hourly reports published within.

      Note: only limited historical data is available


      :param date: datetime to download. If `end` not provided,
                   returns last hourly report published before. if "latest",
                   returns most recent hourly report. if `end` provided,
                   returns all hourly reports published after this date
                   and before `end`.
      :type date: str, datetime
      :param end: if provided, returns all hourly reports published
                  after `date` and before `end`
      :type end: str, datetime,
      :param forecast_type: The load forecast type.
                            Enum of possible values.
      :type forecast_type: ERCOTSevenDayLoadForecastReport
      :param verbose: print verbose output. Defaults to False.
      :type verbose: bool, optional


   .. py:method:: get_raw_interconnection_queue(verbose=False)


   .. py:method:: get_real_time_adders_and_reserves(date, end=None, verbose=False)

      Get Real-Time ORDC and Reliability Deployment Price Adders and
          Reserves by SCED Interval

      At: https://www.ercot.com/mp/data-products/data-product-details?id=NP6-323-CD

      :param date: date to get data for
      :type date: str, datetime
      :param end: end date to get data for
      :type end: str, datetime
      :param verbose: print verbose output. Defaults to False.
      :type verbose: bool, optional

      :returns: A DataFrame with ORDC data
      :rtype: pandas.DataFrame

      NOTE: data only goes back 5 days


   .. py:method:: get_real_time_system_conditions(date='latest', verbose=False)

      Get Real-Time System Conditions.

      Parses table from
      https://www.ercot.com/content/cdr/html/real_time_system_conditions.html

      :param date: only supports "latest"
      :type date: str
      :param verbose: print verbose output. Defaults to False.
      :type verbose: bool, optional

      :returns: A DataFrame with real-time system conditions
      :rtype: pandas.DataFrame


   .. py:method:: get_reported_outages(date=None, end=None, verbose=False)

      Retrieves the 5-minute data behind this dashboard:
      https://www.ercot.com/gridmktinfo/dashboards/generationoutages

      Data available at
      https://www.ercot.com/api/1/services/read/dashboards/generation-outages.json

      This data is ephemeral in that there is only one file available that is
      constantly updated. There is no historical data.


   .. py:method:: get_rtm_price_corrections(rtm_type, verbose=False)

      Get RTM Price Corrections

      :param rtm_type: 'RTM_SPP', 'RTM_SPLMP', 'RTM_EBLMP',
                       'RTM_ShadowPrice', 'RTM_SOGLMP', 'RTM_SOGPRICE'
      :type rtm_type: str


   .. py:method:: get_rtm_spp(year, verbose=False)

      Get Historical RTM Settlement Point Prices(SPPs)
          for each of the Hubs and Load Zones

      :param year: year to get data for
                   Starting 2011, returns data for the entire year
      :type year: int

      Source:
          https://www.ercot.com/mp/data-products/data-product-details?id=NP6-785-ER


   .. py:method:: get_sara(url='https://www.ercot.com/files/docs/2023/05/05/SARA_Summer2023_Revised.xlsx', verbose=False)

      Parse SARA data from url.

      Seasonal Assessment of Resource Adequacy for the ERCOT Region (SARA)

      :param url: url to download SARA data from. Defaults to
                  Summer 2023 SARA data.
      :type url: str, optional


   .. py:method:: get_sced_system_lambda(date, end=None, verbose=False)

      Get System lambda of each successful SCED

      Normally published every 5 minutes

      :param date: date or start time to get data for
      :type date: str, datetime, pd.Timestamp
      :param end: end time to get data for. If None,
                  return 1 day of data. Defaults to None.
      :type end: str, datetime, optional
      :param verbose: print verbose output. Defaults to False.
      :type verbose: bool, optional

      :returns: A DataFrame
      :rtype: pandas.DataFrame


   .. py:method:: get_short_term_system_adequacy(date, end=None, verbose=False)

      Get Short Term System Adequacy published between date and end.

      :param date: date to get data for
      :type date: str, datetime
      :param verbose: print verbose output. Defaults to False.
      :type verbose: bool, optional

      :returns: A DataFrame with system adequacy data
      :rtype: pandas.DataFrame


   .. py:method:: get_spp(date, end=None, market: str = None, locations: list = 'ALL', location_type: str = 'ALL', verbose=False)

      Get SPP data for ERCOT

      Supported Markets:
          - ``REAL_TIME_15_MIN``
          - ``DAY_AHEAD_HOURLY``

      Supported Location Types:
          - ``Load Zone``
          - ``Trading Hub``
          - ``Resource Node``


   .. py:method:: get_status(date, verbose=False)

      Returns status of grid


   .. py:method:: get_system_wide_actual_load(date, end=None, verbose=False)

      Get 15-minute system-wide actual load.

      This report is posted every hour five minutes after the hour.

      :param date: date to get data for
      :type date: str, datetime
      :param end: end time to get data for. Defaults to None.
      :type end: str, datetime, optional
      :param verbose: print verbose output. Defaults to False.
      :type verbose: bool, optional

      :returns: A DataFrame with system actuals data
      :rtype: pandas.DataFrame


   .. py:method:: get_temperature_forecast_by_weather_zone(date, end=None, verbose=False)

      Get temperature forecast by weather zone in hourly intervals. Published
      once a day at 5 am central.

      :param date: date to get data for
      :type date: str, datetime
      :param end: end time to get data for. Defaults to None.
      :type end: str, datetime, optional
      :param verbose: print verbose output. Defaults to False.
      :type verbose: bool, optional

      :returns: A DataFrame with temperature forecast data
      :rtype: pandas.DataFrame


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

      Get Unplanned Resource Outages.

      Data published at ~5am central on the 3rd day after the day of interest. Since
      the date argument is the publish date, if you want to get data for a specific
      date, pass in the date of interest - 3 days.

      :param date: publish date of the report
      :type date: str, datetime
      :param end: end date to download. Defaults to None.
      :type end: str, datetime, optional
      :param verbose: print verbose output. Defaults to False.
      :type verbose: bool, optional

      :returns: A DataFrame with unplanned resource outages
      :rtype: pandas.DataFrame


   .. py:method:: parse_doc(doc: pandas.DataFrame, dst_ambiguous_default: str = 'infer', verbose: bool = False, nonexistent: str = 'raise')


   .. py:method:: read_doc(doc: Document, parse: bool = True, verbose: bool = False, request_kwargs: dict | None = None, read_csv_kwargs: dict | None = None)


   .. py:method:: read_docs(docs: list[Document], parse: bool = True, empty_df: pandas.DataFrame | None = None, verbose: bool = False, request_kwargs: dict | None = None)



.. py:data:: ERCOT_INDICATIVE_LMP_BY_SETTLEMENT_POINT_RTID
   :value: 13073

   

.. py:class:: ERCOTSevenDayLoadForecastReport

   Bases: :py:obj:`enum.Enum`

   Enum class for the Medium Term (Seven Day) Load Forecasts.
   The values are the report IDs.


   **Attributes**

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

      * - **BY_FORECAST_ZONE**
        - 12311
      * - **BY_MODEL_AND_STUDY_AREA**
        - 15953
      * - **BY_MODEL_AND_WEATHER_ZONE**
        - 14837
      * - **BY_WEATHER_ZONE**
        - 12312



.. py:data:: GIS_REPORT_RTID
   :value: 15933

   

.. py:data:: HISTORICAL_DAM_LOAD_ZONE_AND_HUB_PRICES_RTID
   :value: 13060

   

.. py:data:: HISTORICAL_RTM_LOAD_ZONE_AND_HUB_PRICES_RTID
   :value: 13061

   

.. py:data:: HOURLY_RESOURCE_OUTAGE_CAPACITY_RTID
   :value: 13103

   

.. py:data:: HUB_SETTLEMENT_TYPES
   :value: ['HU', 'SH', 'AH']

   

.. py:data:: LMPS_BY_ELECTRICAL_BUS_RTID
   :value: 11485

   

.. py:data:: LMPS_BY_SETTLEMENT_POINT_RTID
   :value: 12300

   

.. py:data:: LOAD_ZONE_SETTLEMENT_TYPES
   :value: ['LZ', 'LZ_DC']

   

.. py:data:: LOCATION_TYPE_HUB
   :value: 'Trading Hub'

   

.. py:data:: LOCATION_TYPE_RESOURCE_NODE
   :value: 'Resource Node'

   

.. py:data:: LOCATION_TYPE_ZONE
   :value: 'Load Zone'

   

.. py:data:: LOCATION_TYPE_ZONE_DC
   :value: 'Load Zone DC Tie'

   

.. py:data:: LOCATION_TYPE_ZONE_DC_EW
   :value: 'Load Zone DC Tie Energy Weighted'

   

.. py:data:: LOCATION_TYPE_ZONE_EW
   :value: 'Load Zone Energy Weighted'

   

.. py:function:: parse_timestamp_from_friendly_name(friendly_name)


.. py:data:: REAL_TIME_ADDERS_AND_RESERVES_RTID
   :value: 13221

   

.. py:data:: RESOURCE_NODE_SETTLEMENT_TYPES
   :value: ['RN', 'PCCRN', 'LCCRN', 'PUN']

   

.. py:data:: RTM_PRICE_CORRECTIONS_RTID
   :value: 13045

   

.. py:data:: SCED_SYSTEM_LAMBDA_RTID
   :value: 13114

   

.. py:data:: SETTLEMENT_POINT_LOCATION_TYPE
   :value: 'Settlement Point'

   Report Type IDs

.. py:data:: SETTLEMENT_POINT_PRICES_AT_RESOURCE_NODES_HUBS_AND_LOAD_ZONES_RTID
   :value: 12301

   

.. py:data:: SETTLEMENT_POINTS_LIST_AND_ELECTRICAL_BUSES_MAPPING_RTID
   :value: 10008

   

.. py:data:: SHORT_TERM_SYSTEM_ADEQUACY_REPORT_RTID
   :value: 12315

   

.. py:data:: SIXTY_DAY_DAM_DISCLOSURE_REPORTS_RTID
   :value: 13051

   

.. py:data:: SIXTY_DAY_SCED_DISCLOSURE_REPORTS_RTID
   :value: 13052

   

.. py:data:: SOLAR_POWER_PRODUCTION_HOURLY_AVERAGED_ACTUAL_AND_FORECASTED_VALUES_BY_GEOGRAPHICAL_REGION_RTID
   :value: 21809

   Settlement      Point Type      Description
   ==========      ==========      ===========
   Resource Node   RN      Resource Node for normal resource
   Resource Node   PCCRN   Physical Resource Node for combined cycle units
   Resource Node   LCCRN   Logical Resource Node for combined cycle plant
   Resource Node   PUN     Private Area Network Resource Node
   Load Zone       LZ      Congestion Load Zone
   Load Zone       LZ_DC   DCTIE Load Zone
   Hub     HU      Hub
   Hub     SH      ERCOT_345KV_HUBBUSES_AVG
   Hub     AH      ERCOT_HUB_AVG
   ============================================================
   Source: https://www.ercot.com/files/docs/2009/10/26/07_tests_for_rsnable_lmps_overview_of_price_valid_tool_09102.ppt

.. py:data:: SYSTEM_WIDE_ACTUALS_RTID
   :value: 12340

   

.. py:data:: TEMPERATURE_FORECAST_BY_WEATHER_ZONE_RTID
   :value: 12325

   

.. py:data:: THREE_DAY_HIGHEST_PRICE_AS_OFFER_SELECTED_RTID
   :value: 13018

   

.. py:data:: TWO_DAY_ANCILLARY_SERVICES_REPORTS_RTID
   :value: 13057

   

.. py:data:: UNPLANNED_RESOURCE_OUTAGES_REPORT_RTID
   :value: 22912

   

.. py:data:: WIND_POWER_PRODUCTION_HOURLY_AVERAGED_ACTUAL_AND_FORECASTED_VALUES_RTID
   :value: 13028

   

