Test Pjm
==================

.. py:module:: test_pjm


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

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

.. autoapisummary::

   test_pjm.TestPJM





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

.. autoapisummary::

   test_pjm.api_vcr


Contents
~~~~~~~~~~~~~~~~~~~
.. py:data:: api_vcr

   

.. py:class:: TestPJM

   Bases: :py:obj:`gridstatus.tests.base_test_iso.BaseTestISO`


   **Attributes**

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

      * - **expected_dam_as_market_results_cols**
        - ['Interval Start', 'Interval End', 'Ancillary Service', 'Locale', 'Service Type', 'Market Clearing Price', 'Market Clearing Price Capped', 'Ancillary Service Required', 'Total MW', 'Assigned MW', 'Self-Scheduled MW', 'Interface Reserve Capability MW', 'Demand Response MW Assigned', 'Non-Synchronized Reserve MW Assigned']
      * - **expected_five_min_solar_gen_cols**
        - ['Interval Start', 'Interval End', 'Solar Generation']
      * - **expected_operational_reserves_cols**
        - ['Interval Start', 'Interval End', 'Reserve Name', 'Reserve']
      * - **expected_real_time_as_market_results_cols**
        - ['Interval Start', 'Interval End', 'Ancillary Service', 'Locale', 'Service Type', 'Market Clearing Price', 'Market Clearing Price Capped', 'Regulation Capability Clearing Price', 'Regulation Performance Clearing Price', 'Ancillary Service Required', 'Total MW', 'Assigned MW', 'Self-Scheduled MW', 'Tier 1 MW', 'Interface Reserve Capability MW', 'Demand Response MW Assigned', 'Non-Synchronized Reserve MW Assigned', 'REGD MW']
      * - **expected_solar_wind_gen_by_area_cols**
        - ['Interval Start', 'Interval End', 'MIDATL', 'OTHER', 'RFC', 'RTO', 'SOUTH', 'WEST']
      * - **expected_transfer_interface_info_cols**
        - ['Interval Start', 'Interval End', 'Interface Name', 'Actual Flow', 'Warning Level', 'Transfer Limit']
      * - **expected_transmission_limits_cols**
        - ['Interval Start', 'Interval End', 'Constraint Name', 'Constraint Type', 'Contingency', 'Shadow Price']
      * - **expected_wind_gen_cols**
        - ['Interval Start', 'Interval End', 'Wind Generation']
      * - **iso**
        - None
      * - **lmp_cols**
        - ['Time', 'Interval Start', 'Interval End', 'Market', 'Location Id', 'Location Name', 'Location Short Name', 'Location Type', 'LMP', 'Energy', 'Congestion', 'Loss']
      * - **load_forecast_columns**
        - ['Interval Start', 'Interval End', 'Publish Time', 'Load Forecast', 'AE_MIDATL', 'AEP', 'AP', 'ATSI', 'BGE_MIDATL', 'COMED', 'DAYTON', 'DEOK', 'DOMINION', 'DPL_MIDATL', 'DUQUESNE', 'EKPC', 'JCPL_MIDATL', 'METED_MIDATL', 'MID_ATLANTIC_REGION', 'PECO_MIDATL', 'PENELEC_MIDATL', 'PEPCO_MIDATL', 'PPL_MIDATL', 'PSEG_MIDATL', 'RECO_MIDATL', 'RTO_COMBINED', 'SOUTHERN_REGION', 'UGI_MIDATL', 'WESTERN_REGION']
      * - **load_forecast_columns_historical**
        - ['Interval Start', 'Interval End', 'Publish Time', 'Load Forecast', 'AEP', 'APS', 'ATSI', 'COMED', 'DAY', 'DEOK', 'DOM', 'DUQ', 'EKPC', 'MIDATL', 'RTO']
      * - **test_dates**
        - [('2023-11-05', '2023-11-07'), ('2024-09-02', '2024-09-04')]


   **Methods**

   .. autoapisummary::
      :nosignatures:

      test_pjm.TestPJM.sample_forecast_data
      test_pjm.TestPJM.test_api_key_from_arg
      test_pjm.TestPJM.test_api_key_from_env
      test_pjm.TestPJM.test_api_key_raises_if_missing
      test_pjm.TestPJM.test_get_dam_as_market_results_historical_date
      test_pjm.TestPJM.test_get_dam_as_market_results_historical_range
      test_pjm.TestPJM.test_get_dam_as_market_results_parsing
      test_pjm.TestPJM.test_get_dam_as_market_results_today_or_latest
      test_pjm.TestPJM.test_get_day_ahead_demand_bids_date_range
      test_pjm.TestPJM.test_get_forecasted_generation_outages_historical_date
      test_pjm.TestPJM.test_get_forecasted_generation_outages_historical_range
      test_pjm.TestPJM.test_get_forecasted_generation_outages_today_or_latest
      test_pjm.TestPJM.test_get_fuel_mix_dst_shift_back
      test_pjm.TestPJM.test_get_fuel_mix_dst_shift_forward
      test_pjm.TestPJM.test_get_fuel_mix_no_data
      test_pjm.TestPJM.test_get_gen_outages_by_type_with_latest
      test_pjm.TestPJM.test_get_gen_outages_by_type_with_multi_day_range
      test_pjm.TestPJM.test_get_gen_outages_by_type_with_past_date
      test_pjm.TestPJM.test_get_interconnection_queue
      test_pjm.TestPJM.test_get_it_sced_lmp_5_min_historical_date_range
      test_pjm.TestPJM.test_get_it_sced_lmp_5_min_today
      test_pjm.TestPJM.test_get_lmp_5_min
      test_pjm.TestPJM.test_get_lmp_all_pnodes
      test_pjm.TestPJM.test_get_lmp_historical
      test_pjm.TestPJM.test_get_lmp_hourly
      test_pjm.TestPJM.test_get_lmp_latest
      test_pjm.TestPJM.test_get_lmp_no_data
      test_pjm.TestPJM.test_get_lmp_query_by_location_type
      test_pjm.TestPJM.test_get_lmp_returns_latest
      test_pjm.TestPJM.test_get_lmp_today
      test_pjm.TestPJM.test_get_load_forecast_historical
      test_pjm.TestPJM.test_get_load_forecast_historical_with_date_range
      test_pjm.TestPJM.test_get_load_forecast_in_past_raises_error
      test_pjm.TestPJM.test_get_load_forecast_today
      test_pjm.TestPJM.test_get_load_metered_hourly_historical_date
      test_pjm.TestPJM.test_get_load_metered_hourly_historical_date_range
      test_pjm.TestPJM.test_get_load_today
      test_pjm.TestPJM.test_get_marginal_value_day_ahead_hourly
      test_pjm.TestPJM.test_get_marginal_value_real_time_5_min
      test_pjm.TestPJM.test_get_operational_reserves_historical_date
      test_pjm.TestPJM.test_get_operational_reserves_historical_range
      test_pjm.TestPJM.test_get_operational_reserves_today_or_latest
      test_pjm.TestPJM.test_get_pjm_json
      test_pjm.TestPJM.test_get_pnode_ids
      test_pjm.TestPJM.test_get_real_time_as_market_results_historical_date
      test_pjm.TestPJM.test_get_real_time_as_market_results_historical_range
      test_pjm.TestPJM.test_get_real_time_as_market_results_parsing
      test_pjm.TestPJM.test_get_real_time_as_market_results_valid_dates
      test_pjm.TestPJM.test_get_settlements_verified_lmp_5_min_date_range
      test_pjm.TestPJM.test_get_settlements_verified_lmp_hourly_date_range
      test_pjm.TestPJM.test_get_solar_forecast_5_min_historical_date
      test_pjm.TestPJM.test_get_solar_forecast_hourly_historical_date
      test_pjm.TestPJM.test_get_solar_forecast_hourly_historical_date_integration
      test_pjm.TestPJM.test_get_solar_forecast_hourly_historical_range
      test_pjm.TestPJM.test_get_solar_forecast_hourly_historical_range_integration
      test_pjm.TestPJM.test_get_solar_forecast_hourly_today_or_latest
      test_pjm.TestPJM.test_get_solar_generation_5_min_historical_date
      test_pjm.TestPJM.test_get_solar_generation_5_min_historical_range
      test_pjm.TestPJM.test_get_solar_generation_5_min_today_or_latest
      test_pjm.TestPJM.test_get_solar_generation_by_area_historical_date
      test_pjm.TestPJM.test_get_solar_generation_by_area_historical_range
      test_pjm.TestPJM.test_get_solar_generation_by_area_today_or_latest
      test_pjm.TestPJM.test_get_status_latest
      test_pjm.TestPJM.test_get_storage_historical
      test_pjm.TestPJM.test_get_storage_today
      test_pjm.TestPJM.test_get_transfer_interface_information_5_min_historical_date
      test_pjm.TestPJM.test_get_transfer_interface_information_5_min_historical_range
      test_pjm.TestPJM.test_get_transfer_interface_information_5_min_today_or_latest
      test_pjm.TestPJM.test_get_transmission_constraints_day_ahead_hourly
      test_pjm.TestPJM.test_get_transmission_limits_historical_date
      test_pjm.TestPJM.test_get_transmission_limits_historical_range
      test_pjm.TestPJM.test_get_transmission_limits_today_or_latest
      test_pjm.TestPJM.test_get_wind_forecast_5_min_historical_date
      test_pjm.TestPJM.test_get_wind_forecast_5_min_historical_range
      test_pjm.TestPJM.test_get_wind_forecast_5_min_today_or_latest
      test_pjm.TestPJM.test_get_wind_forecast_hourly_historical_range
      test_pjm.TestPJM.test_get_wind_forecast_hourly_today_or_latest
      test_pjm.TestPJM.test_get_wind_generation_by_area_historical_date
      test_pjm.TestPJM.test_get_wind_generation_by_area_historical_range
      test_pjm.TestPJM.test_get_wind_generation_by_area_today_or_latest
      test_pjm.TestPJM.test_get_wind_generation_instantaneous_historical_date
      test_pjm.TestPJM.test_get_wind_generation_instantaneous_historical_range
      test_pjm.TestPJM.test_get_wind_generation_instantaneous_today_or_latest
      test_pjm.TestPJM.test_lmp_date_range
      test_pjm.TestPJM.test_pjm_update_dates
      test_pjm.TestPJM.test_projected_area_statistics_at_peak_historical_date
      test_pjm.TestPJM.test_projected_area_statistics_at_peak_historical_date_range
      test_pjm.TestPJM.test_projected_area_statistics_at_peak_today_or_latest
      test_pjm.TestPJM.test_projected_rto_statistics_at_peak_historical_date
      test_pjm.TestPJM.test_projected_rto_statistics_at_peak_historical_date_range
      test_pjm.TestPJM.test_projected_rto_statistics_at_peak_today_or_latest
      test_pjm.TestPJM.to_local_datetime

   .. py:method:: sample_forecast_data(request)


   .. py:method:: test_api_key_from_arg()


   .. py:method:: test_api_key_from_env()


   .. py:method:: test_api_key_raises_if_missing()


   .. py:method:: test_get_dam_as_market_results_historical_date()


   .. py:method:: test_get_dam_as_market_results_historical_range()


   .. py:method:: test_get_dam_as_market_results_parsing()


   .. py:method:: test_get_dam_as_market_results_today_or_latest()


   .. py:method:: test_get_day_ahead_demand_bids_date_range()


   .. py:method:: test_get_forecasted_generation_outages_historical_date()


   .. py:method:: test_get_forecasted_generation_outages_historical_range()


   .. py:method:: test_get_forecasted_generation_outages_today_or_latest()


   .. py:method:: test_get_fuel_mix_dst_shift_back()


   .. py:method:: test_get_fuel_mix_dst_shift_forward()


   .. py:method:: test_get_fuel_mix_no_data()


   .. py:method:: test_get_gen_outages_by_type_with_latest()


   .. py:method:: test_get_gen_outages_by_type_with_multi_day_range()


   .. py:method:: test_get_gen_outages_by_type_with_past_date()


   .. py:method:: test_get_interconnection_queue()


   .. py:method:: test_get_it_sced_lmp_5_min_historical_date_range()


   .. py:method:: test_get_it_sced_lmp_5_min_today()


   .. py:method:: test_get_lmp_5_min()


   .. py:method:: test_get_lmp_all_pnodes()


   .. py:method:: test_get_lmp_historical(market: gridstatus.base.Markets)


   .. py:method:: test_get_lmp_hourly()


   .. py:method:: test_get_lmp_latest(market: gridstatus.base.Markets)


   .. py:method:: test_get_lmp_no_data()


   .. py:method:: test_get_lmp_query_by_location_type()


   .. py:method:: test_get_lmp_returns_latest()


   .. py:method:: test_get_lmp_today(market: gridstatus.base.Markets)


   .. py:method:: test_get_load_forecast_historical()


   .. py:method:: test_get_load_forecast_historical_with_date_range()


   .. py:method:: test_get_load_forecast_in_past_raises_error()


   .. py:method:: test_get_load_forecast_today()


   .. py:method:: test_get_load_metered_hourly_historical_date()


   .. py:method:: test_get_load_metered_hourly_historical_date_range()


   .. py:method:: test_get_load_today()


   .. py:method:: test_get_marginal_value_day_ahead_hourly(date, end)


   .. py:method:: test_get_marginal_value_real_time_5_min(date, end)


   .. py:method:: test_get_operational_reserves_historical_date()


   .. py:method:: test_get_operational_reserves_historical_range()


   .. py:method:: test_get_operational_reserves_today_or_latest()


   .. py:method:: test_get_pjm_json(mock_get_json, sample_forecast_data)


   .. py:method:: test_get_pnode_ids()


   .. py:method:: test_get_real_time_as_market_results_historical_date()


   .. py:method:: test_get_real_time_as_market_results_historical_range()


   .. py:method:: test_get_real_time_as_market_results_parsing()


   .. py:method:: test_get_real_time_as_market_results_valid_dates()


   .. py:method:: test_get_settlements_verified_lmp_5_min_date_range()


   .. py:method:: test_get_settlements_verified_lmp_hourly_date_range()


   .. py:method:: test_get_solar_forecast_5_min_historical_date()


   .. py:method:: test_get_solar_forecast_hourly_historical_date()


   .. py:method:: test_get_solar_forecast_hourly_historical_date_integration()


   .. py:method:: test_get_solar_forecast_hourly_historical_range()


   .. py:method:: test_get_solar_forecast_hourly_historical_range_integration()


   .. py:method:: test_get_solar_forecast_hourly_today_or_latest()


   .. py:method:: test_get_solar_generation_5_min_historical_date()


   .. py:method:: test_get_solar_generation_5_min_historical_range()


   .. py:method:: test_get_solar_generation_5_min_today_or_latest()


   .. py:method:: test_get_solar_generation_by_area_historical_date()


   .. py:method:: test_get_solar_generation_by_area_historical_range()


   .. py:method:: test_get_solar_generation_by_area_today_or_latest()


   .. py:method:: test_get_status_latest()


   .. py:method:: test_get_storage_historical()


   .. py:method:: test_get_storage_today()


   .. py:method:: test_get_transfer_interface_information_5_min_historical_date()


   .. py:method:: test_get_transfer_interface_information_5_min_historical_range()


   .. py:method:: test_get_transfer_interface_information_5_min_today_or_latest()


   .. py:method:: test_get_transmission_constraints_day_ahead_hourly(date, end)


   .. py:method:: test_get_transmission_limits_historical_date()


   .. py:method:: test_get_transmission_limits_historical_range()


   .. py:method:: test_get_transmission_limits_today_or_latest()


   .. py:method:: test_get_wind_forecast_5_min_historical_date()


   .. py:method:: test_get_wind_forecast_5_min_historical_range()


   .. py:method:: test_get_wind_forecast_5_min_today_or_latest()


   .. py:method:: test_get_wind_forecast_hourly_historical_range()


   .. py:method:: test_get_wind_forecast_hourly_today_or_latest()


   .. py:method:: test_get_wind_generation_by_area_historical_date()


   .. py:method:: test_get_wind_generation_by_area_historical_range()


   .. py:method:: test_get_wind_generation_by_area_today_or_latest()


   .. py:method:: test_get_wind_generation_instantaneous_historical_date()


   .. py:method:: test_get_wind_generation_instantaneous_historical_range()


   .. py:method:: test_get_wind_generation_instantaneous_today_or_latest()


   .. py:method:: test_lmp_date_range(market: gridstatus.base.Markets)


   .. py:method:: test_pjm_update_dates()


   .. py:method:: test_projected_area_statistics_at_peak_historical_date()


   .. py:method:: test_projected_area_statistics_at_peak_historical_date_range()


   .. py:method:: test_projected_area_statistics_at_peak_today_or_latest()


   .. py:method:: test_projected_rto_statistics_at_peak_historical_date()


   .. py:method:: test_projected_rto_statistics_at_peak_historical_date_range()


   .. py:method:: test_projected_rto_statistics_at_peak_today_or_latest()


   .. py:method:: to_local_datetime(date_local)



