EPA-PM-API-Wrapper 0.3.0__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- epa_pm_api_wrapper/__init__.py +30 -0
- epa_pm_api_wrapper/__main__.py +4 -0
- epa_pm_api_wrapper/cli.py +413 -0
- epa_pm_api_wrapper/client.py +507 -0
- epa_pm_api_wrapper/exceptions.py +67 -0
- epa_pm_api_wrapper/models/__init__.py +1451 -0
- epa_pm_api_wrapper/models/accept_reject_type.py +12 -0
- epa_pm_api_wrapper/models/account.py +15 -0
- epa_pm_api_wrapper/models/account_info.py +58 -0
- epa_pm_api_wrapper/models/account_type.py +122 -0
- epa_pm_api_wrapper/models/account_type_language_preference.py +9 -0
- epa_pm_api_wrapper/models/additional_identifier.py +58 -0
- epa_pm_api_wrapper/models/additional_identifier_type.py +60 -0
- epa_pm_api_wrapper/models/additional_identifier_type_group.py +10 -0
- epa_pm_api_wrapper/models/additional_identifier_types.py +19 -0
- epa_pm_api_wrapper/models/additional_identifiers.py +19 -0
- epa_pm_api_wrapper/models/address_type.py +84 -0
- epa_pm_api_wrapper/models/address_type_state.py +159 -0
- epa_pm_api_wrapper/models/adult_education.py +17 -0
- epa_pm_api_wrapper/models/agency_type.py +41 -0
- epa_pm_api_wrapper/models/agency_type_country.py +242 -0
- epa_pm_api_wrapper/models/alerts.py +16 -0
- epa_pm_api_wrapper/models/alerts_type.py +47 -0
- epa_pm_api_wrapper/models/alerts_type_alert.py +29 -0
- epa_pm_api_wrapper/models/all_energy_meters_type.py +32 -0
- epa_pm_api_wrapper/models/all_meter_types.py +130 -0
- epa_pm_api_wrapper/models/ambulatory_surgical_center.py +16 -0
- epa_pm_api_wrapper/models/amount_of_laundry_processed_annually.py +17 -0
- epa_pm_api_wrapper/models/amount_of_laundry_processed_annually_type.py +28 -0
- epa_pm_api_wrapper/models/amount_of_laundry_processed_annually_units_type.py +9 -0
- epa_pm_api_wrapper/models/annual_research_expenditure.py +16 -0
- epa_pm_api_wrapper/models/annual_research_expenditure_type.py +22 -0
- epa_pm_api_wrapper/models/annual_research_expenditure_type_value.py +10 -0
- epa_pm_api_wrapper/models/aquarium.py +17 -0
- epa_pm_api_wrapper/models/area_of_all_walk_in_refrigeration_units.py +19 -0
- epa_pm_api_wrapper/models/average_effluent_biological_oxygen_demand.py +16 -0
- epa_pm_api_wrapper/models/average_influent_biological_oxygen_demand.py +16 -0
- epa_pm_api_wrapper/models/average_number_of_residents.py +15 -0
- epa_pm_api_wrapper/models/average_number_of_vehicles_in_inventory.py +16 -0
- epa_pm_api_wrapper/models/bank_branch.py +16 -0
- epa_pm_api_wrapper/models/bank_branch_type.py +35 -0
- epa_pm_api_wrapper/models/bank_branch_type_use_details.py +58 -0
- epa_pm_api_wrapper/models/bar_nightclub.py +17 -0
- epa_pm_api_wrapper/models/barracks.py +17 -0
- epa_pm_api_wrapper/models/barracks_type.py +35 -0
- epa_pm_api_wrapper/models/barracks_type_use_details.py +58 -0
- epa_pm_api_wrapper/models/baseline_and_target.py +16 -0
- epa_pm_api_wrapper/models/baseline_and_target_type.py +27 -0
- epa_pm_api_wrapper/models/baseline_type.py +41 -0
- epa_pm_api_wrapper/models/billboard_metric_setting.py +21 -0
- epa_pm_api_wrapper/models/billboard_metric_type.py +33 -0
- epa_pm_api_wrapper/models/billboard_metrics.py +11 -0
- epa_pm_api_wrapper/models/billboard_metrics_type.py +26 -0
- epa_pm_api_wrapper/models/bowling_alley.py +40 -0
- epa_pm_api_wrapper/models/bowling_alley_use_details.py +58 -0
- epa_pm_api_wrapper/models/building.py +11 -0
- epa_pm_api_wrapper/models/casino.py +16 -0
- epa_pm_api_wrapper/models/category_type.py +17 -0
- epa_pm_api_wrapper/models/cegep.py +15 -0
- epa_pm_api_wrapper/models/cegep_type.py +35 -0
- epa_pm_api_wrapper/models/cegep_type_use_details.py +131 -0
- epa_pm_api_wrapper/models/ceiling_height.py +15 -0
- epa_pm_api_wrapper/models/ceiling_height_units_type.py +27 -0
- epa_pm_api_wrapper/models/clear_height.py +16 -0
- epa_pm_api_wrapper/models/clear_height_units_type.py +26 -0
- epa_pm_api_wrapper/models/college_university.py +15 -0
- epa_pm_api_wrapper/models/college_university_type.py +37 -0
- epa_pm_api_wrapper/models/college_university_type_use_details.py +131 -0
- epa_pm_api_wrapper/models/common_entrance.py +16 -0
- epa_pm_api_wrapper/models/community_center_and_social_meeting_hall.py +46 -0
- epa_pm_api_wrapper/models/community_center_and_social_meeting_hall_use_details.py +58 -0
- epa_pm_api_wrapper/models/completely_enclosed_footage.py +15 -0
- epa_pm_api_wrapper/models/construction_status_type.py +9 -0
- epa_pm_api_wrapper/models/contact_type.py +70 -0
- epa_pm_api_wrapper/models/convenience_store_with_gas_station.py +19 -0
- epa_pm_api_wrapper/models/convenience_store_with_gas_station_type.py +37 -0
- epa_pm_api_wrapper/models/convenience_store_with_gas_station_type_use_details.py +140 -0
- epa_pm_api_wrapper/models/convenience_store_without_gas_station.py +19 -0
- epa_pm_api_wrapper/models/convenience_store_without_gas_station_type.py +37 -0
- epa_pm_api_wrapper/models/convenience_store_without_gas_station_type_use_details.py +140 -0
- epa_pm_api_wrapper/models/convention_center.py +16 -0
- epa_pm_api_wrapper/models/cooking_facilities.py +15 -0
- epa_pm_api_wrapper/models/cooking_located_onsite.py +16 -0
- epa_pm_api_wrapper/models/cooling_equipment_redundancy.py +15 -0
- epa_pm_api_wrapper/models/cooling_equipment_redundancy_type.py +22 -0
- epa_pm_api_wrapper/models/cooling_equipment_redundancy_type_value.py +12 -0
- epa_pm_api_wrapper/models/country_code.py +16 -0
- epa_pm_api_wrapper/models/country_list.py +493 -0
- epa_pm_api_wrapper/models/courthouse.py +16 -0
- epa_pm_api_wrapper/models/courthouse_type.py +35 -0
- epa_pm_api_wrapper/models/courthouse_type_use_details.py +58 -0
- epa_pm_api_wrapper/models/custom_field.py +109 -0
- epa_pm_api_wrapper/models/custom_field_list.py +20 -0
- epa_pm_api_wrapper/models/custom_field_list_custom_field.py +17 -0
- epa_pm_api_wrapper/models/custom_field_valid_characters.py +15 -0
- epa_pm_api_wrapper/models/custom_field_when_to_prompt.py +15 -0
- epa_pm_api_wrapper/models/custom_metric.py +49 -0
- epa_pm_api_wrapper/models/custom_units_type.py +19 -0
- epa_pm_api_wrapper/models/custom_use.py +15 -0
- epa_pm_api_wrapper/models/custom_use_detail1.py +15 -0
- epa_pm_api_wrapper/models/custom_use_detail2.py +15 -0
- epa_pm_api_wrapper/models/custom_use_details_type.py +50 -0
- epa_pm_api_wrapper/models/custom_use_details_type_data_type.py +8 -0
- epa_pm_api_wrapper/models/custom_use_type.py +35 -0
- epa_pm_api_wrapper/models/custom_use_type_use_details.py +27 -0
- epa_pm_api_wrapper/models/customer.py +77 -0
- epa_pm_api_wrapper/models/customer_language_preference.py +9 -0
- epa_pm_api_wrapper/models/data_center.py +17 -0
- epa_pm_api_wrapper/models/data_center_type.py +35 -0
- epa_pm_api_wrapper/models/data_center_type_use_details.py +50 -0
- epa_pm_api_wrapper/models/data_exchange_settings.py +37 -0
- epa_pm_api_wrapper/models/data_exchange_settings_supported_meter_types.py +20 -0
- epa_pm_api_wrapper/models/data_exchange_settings_terms_of_use.py +40 -0
- epa_pm_api_wrapper/models/data_request.py +88 -0
- epa_pm_api_wrapper/models/data_request_locations.py +19 -0
- epa_pm_api_wrapper/models/data_request_locations_location.py +22 -0
- epa_pm_api_wrapper/models/data_request_requester_details.py +32 -0
- epa_pm_api_wrapper/models/data_request_status_type.py +13 -0
- epa_pm_api_wrapper/models/data_response.py +47 -0
- epa_pm_api_wrapper/models/data_response_properties.py +20 -0
- epa_pm_api_wrapper/models/data_type.py +9 -0
- epa_pm_api_wrapper/models/delivery_facility.py +16 -0
- epa_pm_api_wrapper/models/demand_tracking_type.py +35 -0
- epa_pm_api_wrapper/models/design.py +15 -0
- epa_pm_api_wrapper/models/design_base_type.py +83 -0
- epa_pm_api_wrapper/models/design_base_type_estimated_energy_list.py +17 -0
- epa_pm_api_wrapper/models/design_base_type_property_uses.py +709 -0
- epa_pm_api_wrapper/models/design_base_type_target.py +34 -0
- epa_pm_api_wrapper/models/design_unit_of_measure.py +37 -0
- epa_pm_api_wrapper/models/detail_type.py +22 -0
- epa_pm_api_wrapper/models/details_types.py +20 -0
- epa_pm_api_wrapper/models/disposal_destination_type.py +60 -0
- epa_pm_api_wrapper/models/distribution_center.py +17 -0
- epa_pm_api_wrapper/models/distribution_center_type.py +37 -0
- epa_pm_api_wrapper/models/distribution_center_type_use_details.py +76 -0
- epa_pm_api_wrapper/models/drinking_water_treatment_and_distribution.py +18 -0
- epa_pm_api_wrapper/models/drinking_water_treatment_and_distribution_type.py +37 -0
- epa_pm_api_wrapper/models/drinking_water_treatment_and_distribution_type_use_details.py +18 -0
- epa_pm_api_wrapper/models/e_grid_subregion.py +38 -0
- epa_pm_api_wrapper/models/e_grid_subregion_country.py +242 -0
- epa_pm_api_wrapper/models/e_grid_subregion_list.py +19 -0
- epa_pm_api_wrapper/models/edu.py +64 -0
- epa_pm_api_wrapper/models/edu_list.py +18 -0
- epa_pm_api_wrapper/models/electric_vehicle_charging_station.py +15 -0
- epa_pm_api_wrapper/models/empty_string.py +7 -0
- epa_pm_api_wrapper/models/empty_type.py +7 -0
- epa_pm_api_wrapper/models/enclosed_floor_area.py +15 -0
- epa_pm_api_wrapper/models/enclosed_mall.py +16 -0
- epa_pm_api_wrapper/models/energy_meter_assoc_and_config_type.py +25 -0
- epa_pm_api_wrapper/models/energy_performance_project.py +11 -0
- epa_pm_api_wrapper/models/energy_performance_project_type.py +136 -0
- epa_pm_api_wrapper/models/energy_power_station.py +20 -0
- epa_pm_api_wrapper/models/energy_uom_type.py +11 -0
- epa_pm_api_wrapper/models/enrollment.py +11 -0
- epa_pm_api_wrapper/models/error_type.py +29 -0
- epa_pm_api_wrapper/models/errors_type.py +25 -0
- epa_pm_api_wrapper/models/estimated_energy_list_type.py +19 -0
- epa_pm_api_wrapper/models/estimated_energy_type.py +58 -0
- epa_pm_api_wrapper/models/estimates_applied.py +15 -0
- epa_pm_api_wrapper/models/ev_charging_station_type.py +37 -0
- epa_pm_api_wrapper/models/ev_charging_station_type_use_details.py +41 -0
- epa_pm_api_wrapper/models/evaluation_period_type.py +35 -0
- epa_pm_api_wrapper/models/exterior_entrance_to_the_public.py +15 -0
- epa_pm_api_wrapper/models/fast_food_restaurant.py +17 -0
- epa_pm_api_wrapper/models/fast_food_restaurant_type.py +37 -0
- epa_pm_api_wrapper/models/fast_food_restaurant_type_use_details.py +84 -0
- epa_pm_api_wrapper/models/federal_agencies.py +19 -0
- epa_pm_api_wrapper/models/financial_office.py +16 -0
- epa_pm_api_wrapper/models/financial_office_type.py +35 -0
- epa_pm_api_wrapper/models/financial_office_type_use_details.py +58 -0
- epa_pm_api_wrapper/models/fire_station.py +16 -0
- epa_pm_api_wrapper/models/fire_station_type.py +35 -0
- epa_pm_api_wrapper/models/fire_station_type_use_details.py +92 -0
- epa_pm_api_wrapper/models/fitness_center_health_club_gym.py +42 -0
- epa_pm_api_wrapper/models/fitness_center_health_club_gym_use_details.py +58 -0
- epa_pm_api_wrapper/models/fixed_film_trickle_filtration_process.py +15 -0
- epa_pm_api_wrapper/models/floor_area_type_base.py +23 -0
- epa_pm_api_wrapper/models/food_sales.py +17 -0
- epa_pm_api_wrapper/models/food_sales_type.py +35 -0
- epa_pm_api_wrapper/models/food_sales_type_use_details.py +114 -0
- epa_pm_api_wrapper/models/food_service.py +17 -0
- epa_pm_api_wrapper/models/full_service_spa_floor_area.py +15 -0
- epa_pm_api_wrapper/models/generation_location_type.py +41 -0
- epa_pm_api_wrapper/models/government_subsidized_housing.py +16 -0
- epa_pm_api_wrapper/models/grant_dollars.py +11 -0
- epa_pm_api_wrapper/models/green_power_fuel_source_enum.py +13 -0
- epa_pm_api_wrapper/models/green_power_type_enum.py +15 -0
- epa_pm_api_wrapper/models/gross_floor_area_hotel_conference_space.py +18 -0
- epa_pm_api_wrapper/models/gross_floor_area_that_is_exhibit_space.py +19 -0
- epa_pm_api_wrapper/models/gross_floor_area_type.py +24 -0
- epa_pm_api_wrapper/models/gross_floor_area_units_type.py +8 -0
- epa_pm_api_wrapper/models/gross_floor_area_used_for_food_preparation.py +19 -0
- epa_pm_api_wrapper/models/gym_center_floor_area.py +15 -0
- epa_pm_api_wrapper/models/gymnasium_floor_area.py +15 -0
- epa_pm_api_wrapper/models/has_computer_lab.py +15 -0
- epa_pm_api_wrapper/models/has_dining_hall.py +15 -0
- epa_pm_api_wrapper/models/has_laboratory.py +15 -0
- epa_pm_api_wrapper/models/hey.py +11 -0
- epa_pm_api_wrapper/models/hey_type.py +29 -0
- epa_pm_api_wrapper/models/hey_type_meter.py +35 -0
- epa_pm_api_wrapper/models/hey_type_meter_meter_data.py +22 -0
- epa_pm_api_wrapper/models/hey_type_property_info.py +35 -0
- epa_pm_api_wrapper/models/hierarchy.py +16 -0
- epa_pm_api_wrapper/models/hierarchy_type.py +84 -0
- epa_pm_api_wrapper/models/highest_award_level.py +17 -0
- epa_pm_api_wrapper/models/highest_award_level_type.py +20 -0
- epa_pm_api_wrapper/models/highest_award_level_type_value.py +11 -0
- epa_pm_api_wrapper/models/hospital.py +22 -0
- epa_pm_api_wrapper/models/hospital_type.py +35 -0
- epa_pm_api_wrapper/models/hospital_type_use_details.py +132 -0
- epa_pm_api_wrapper/models/hotel.py +17 -0
- epa_pm_api_wrapper/models/hotel_type.py +41 -0
- epa_pm_api_wrapper/models/hotel_type_use_details.py +140 -0
- epa_pm_api_wrapper/models/hours_per_day_guests_onsite.py +16 -0
- epa_pm_api_wrapper/models/hours_per_day_guests_onsite_type.py +22 -0
- epa_pm_api_wrapper/models/hours_per_day_guests_onsite_type_value.py +9 -0
- epa_pm_api_wrapper/models/ice_curling_rink.py +27 -0
- epa_pm_api_wrapper/models/ice_curling_rink_type.py +35 -0
- epa_pm_api_wrapper/models/ice_curling_rink_type_use_details.py +78 -0
- epa_pm_api_wrapper/models/ice_events.py +15 -0
- epa_pm_api_wrapper/models/individual_meter.py +86 -0
- epa_pm_api_wrapper/models/indoor_arena.py +17 -0
- epa_pm_api_wrapper/models/indoor_arena_type.py +35 -0
- epa_pm_api_wrapper/models/indoor_arena_type_use_details.py +104 -0
- epa_pm_api_wrapper/models/international_weather_station_list.py +26 -0
- epa_pm_api_wrapper/models/irrigation_area_type.py +28 -0
- epa_pm_api_wrapper/models/irrigation_area_type_base.py +30 -0
- epa_pm_api_wrapper/models/irrigation_area_units_type.py +10 -0
- epa_pm_api_wrapper/models/is_high_school.py +16 -0
- epa_pm_api_wrapper/models/is_tertiary_care.py +17 -0
- epa_pm_api_wrapper/models/it_energy_configuration_type.py +20 -0
- epa_pm_api_wrapper/models/it_energy_configuration_type_value.py +14 -0
- epa_pm_api_wrapper/models/it_energy_meter_configuration.py +16 -0
- epa_pm_api_wrapper/models/k12_school.py +16 -0
- epa_pm_api_wrapper/models/k12_school_type.py +35 -0
- epa_pm_api_wrapper/models/k12_school_type_use_details.py +126 -0
- epa_pm_api_wrapper/models/laboratory.py +17 -0
- epa_pm_api_wrapper/models/laundry_facility.py +16 -0
- epa_pm_api_wrapper/models/length_of_all_commercial_kitchen_hoods.py +19 -0
- epa_pm_api_wrapper/models/length_of_all_open_closed_refrigeration_units.py +21 -0
- epa_pm_api_wrapper/models/length_of_use_detail_type.py +26 -0
- epa_pm_api_wrapper/models/length_units_type.py +8 -0
- epa_pm_api_wrapper/models/library.py +17 -0
- epa_pm_api_wrapper/models/library_type.py +35 -0
- epa_pm_api_wrapper/models/library_type_use_details.py +58 -0
- epa_pm_api_wrapper/models/license.py +60 -0
- epa_pm_api_wrapper/models/license_list.py +19 -0
- epa_pm_api_wrapper/models/licensed_bed_capacity.py +19 -0
- epa_pm_api_wrapper/models/lifestyle_center.py +18 -0
- epa_pm_api_wrapper/models/link_type.py +52 -0
- epa_pm_api_wrapper/models/links_type.py +19 -0
- epa_pm_api_wrapper/models/log.py +11 -0
- epa_pm_api_wrapper/models/log_type.py +79 -0
- epa_pm_api_wrapper/models/mailing_center_post_office.py +16 -0
- epa_pm_api_wrapper/models/mailing_center_post_office_type.py +37 -0
- epa_pm_api_wrapper/models/mailing_center_post_office_type_use_details.py +74 -0
- epa_pm_api_wrapper/models/manufacturing_industrial_plant.py +17 -0
- epa_pm_api_wrapper/models/manufacturing_industrial_plant_type.py +37 -0
- epa_pm_api_wrapper/models/manufacturing_industrial_plant_type_use_details.py +49 -0
- epa_pm_api_wrapper/models/mapping.py +11 -0
- epa_pm_api_wrapper/models/mapping_type.py +23 -0
- epa_pm_api_wrapper/models/maximum_number_of_floors.py +15 -0
- epa_pm_api_wrapper/models/maximum_resident_capacity.py +15 -0
- epa_pm_api_wrapper/models/medical_office.py +16 -0
- epa_pm_api_wrapper/models/medical_office_type.py +35 -0
- epa_pm_api_wrapper/models/medical_office_type_use_details.py +82 -0
- epa_pm_api_wrapper/models/meter.py +11 -0
- epa_pm_api_wrapper/models/meter_category_type.py +9 -0
- epa_pm_api_wrapper/models/meter_consumption.py +15 -0
- epa_pm_api_wrapper/models/meter_consumption_type.py +110 -0
- epa_pm_api_wrapper/models/meter_data.py +11 -0
- epa_pm_api_wrapper/models/meter_data_type.py +41 -0
- epa_pm_api_wrapper/models/meter_delivery.py +11 -0
- epa_pm_api_wrapper/models/meter_delivery_type.py +68 -0
- epa_pm_api_wrapper/models/meter_list_type.py +23 -0
- epa_pm_api_wrapper/models/meter_property_association_list.py +18 -0
- epa_pm_api_wrapper/models/meter_property_association_list_type.py +38 -0
- epa_pm_api_wrapper/models/meter_property_use_association_list.py +16 -0
- epa_pm_api_wrapper/models/meter_type.py +131 -0
- epa_pm_api_wrapper/models/meter_type_unit_of_measure.py +40 -0
- epa_pm_api_wrapper/models/metric.py +71 -0
- epa_pm_api_wrapper/models/months_in_use.py +15 -0
- epa_pm_api_wrapper/models/months_in_use_type.py +21 -0
- epa_pm_api_wrapper/models/months_main_indoor_ice_rink_in_use.py +15 -0
- epa_pm_api_wrapper/models/months_school_in_use_type.py +21 -0
- epa_pm_api_wrapper/models/movie_theater.py +15 -0
- epa_pm_api_wrapper/models/multifamily_housing.py +16 -0
- epa_pm_api_wrapper/models/multifamily_housing_type.py +37 -0
- epa_pm_api_wrapper/models/multifamily_housing_type_use_details.py +124 -0
- epa_pm_api_wrapper/models/museum.py +26 -0
- epa_pm_api_wrapper/models/museum_type.py +35 -0
- epa_pm_api_wrapper/models/museum_type_use_details.py +78 -0
- epa_pm_api_wrapper/models/non_refrigerated_warehouse.py +16 -0
- epa_pm_api_wrapper/models/non_refrigerated_warehouse_type.py +37 -0
- epa_pm_api_wrapper/models/non_refrigerated_warehouse_type_use_details.py +76 -0
- epa_pm_api_wrapper/models/notification_list.py +16 -0
- epa_pm_api_wrapper/models/notification_list_type.py +19 -0
- epa_pm_api_wrapper/models/notification_type.py +106 -0
- epa_pm_api_wrapper/models/number_of_annual_emergency_incidents.py +17 -0
- epa_pm_api_wrapper/models/number_of_bedrooms.py +15 -0
- epa_pm_api_wrapper/models/number_of_cash_registers.py +15 -0
- epa_pm_api_wrapper/models/number_of_commercial_refrigeration_units.py +16 -0
- epa_pm_api_wrapper/models/number_of_commercial_washing_machines.py +16 -0
- epa_pm_api_wrapper/models/number_of_computers.py +15 -0
- epa_pm_api_wrapper/models/number_of_concert_show_events_per_year.py +15 -0
- epa_pm_api_wrapper/models/number_of_cooking_equipment_units.py +15 -0
- epa_pm_api_wrapper/models/number_of_curling_sheets.py +16 -0
- epa_pm_api_wrapper/models/number_of_dc_fast_ev_charging_stations.py +15 -0
- epa_pm_api_wrapper/models/number_of_emergency_vehicles.py +16 -0
- epa_pm_api_wrapper/models/number_of_fteworkers.py +16 -0
- epa_pm_api_wrapper/models/number_of_full_time_students_enrolled_january_to_april.py +16 -0
- epa_pm_api_wrapper/models/number_of_full_time_students_enrolled_may_to_august.py +16 -0
- epa_pm_api_wrapper/models/number_of_full_time_students_enrolled_september_to_december.py +16 -0
- epa_pm_api_wrapper/models/number_of_guest_meals_served_per_year.py +15 -0
- epa_pm_api_wrapper/models/number_of_hotel_rooms.py +15 -0
- epa_pm_api_wrapper/models/number_of_indoor_ice_rinks.py +18 -0
- epa_pm_api_wrapper/models/number_of_laundry_hookups_in_all_units.py +16 -0
- epa_pm_api_wrapper/models/number_of_laundry_hookups_in_common_area.py +16 -0
- epa_pm_api_wrapper/models/number_of_letters_packages_per_year.py +17 -0
- epa_pm_api_wrapper/models/number_of_level_one_ev_charging_stations.py +15 -0
- epa_pm_api_wrapper/models/number_of_level_two_ev_charging_stations.py +15 -0
- epa_pm_api_wrapper/models/number_of_mri_machines.py +15 -0
- epa_pm_api_wrapper/models/number_of_open_closed_refrigeration_units.py +27 -0
- epa_pm_api_wrapper/models/number_of_paint_bays.py +16 -0
- epa_pm_api_wrapper/models/number_of_people.py +15 -0
- epa_pm_api_wrapper/models/number_of_repair_bays.py +16 -0
- epa_pm_api_wrapper/models/number_of_residential_lift_systems.py +15 -0
- epa_pm_api_wrapper/models/number_of_residential_living_units.py +20 -0
- epa_pm_api_wrapper/models/number_of_residential_living_units_high_rise_setting.py +18 -0
- epa_pm_api_wrapper/models/number_of_residential_living_units_low_rise_setting.py +18 -0
- epa_pm_api_wrapper/models/number_of_residential_living_units_mid_rise_setting.py +18 -0
- epa_pm_api_wrapper/models/number_of_residential_washing_machines.py +15 -0
- epa_pm_api_wrapper/models/number_of_rooms.py +16 -0
- epa_pm_api_wrapper/models/number_of_special_other_events_per_year.py +16 -0
- epa_pm_api_wrapper/models/number_of_sporting_events_per_year.py +15 -0
- epa_pm_api_wrapper/models/number_of_staffed_beds.py +15 -0
- epa_pm_api_wrapper/models/number_of_sterilization_units.py +15 -0
- epa_pm_api_wrapper/models/number_of_surgical_operating_beds.py +16 -0
- epa_pm_api_wrapper/models/number_of_walk_in_refrigeration_units.py +16 -0
- epa_pm_api_wrapper/models/number_of_warming_heating_equipment_units.py +15 -0
- epa_pm_api_wrapper/models/number_of_weekdays_open.py +17 -0
- epa_pm_api_wrapper/models/number_of_weekdays_type.py +21 -0
- epa_pm_api_wrapper/models/number_of_weekly_ice_resurfacing_for_all_rinks.py +23 -0
- epa_pm_api_wrapper/models/number_of_weekly_ice_resurfacing_type.py +20 -0
- epa_pm_api_wrapper/models/number_of_workers.py +16 -0
- epa_pm_api_wrapper/models/nutrient_removal.py +16 -0
- epa_pm_api_wrapper/models/occupancy_type.py +27 -0
- epa_pm_api_wrapper/models/office.py +16 -0
- epa_pm_api_wrapper/models/office_type.py +35 -0
- epa_pm_api_wrapper/models/office_type_use_details.py +58 -0
- epa_pm_api_wrapper/models/offsite_green_power_purchase.py +11 -0
- epa_pm_api_wrapper/models/offsite_green_power_purchase_type.py +224 -0
- epa_pm_api_wrapper/models/offsite_green_power_purchase_type_amount_purchased.py +31 -0
- epa_pm_api_wrapper/models/offsite_green_power_purchase_type_amount_purchased_percentage.py +46 -0
- epa_pm_api_wrapper/models/offsite_green_power_purchase_type_amount_purchased_percentage_meters.py +21 -0
- epa_pm_api_wrapper/models/offsite_green_power_purchase_type_amount_purchased_quantity.py +31 -0
- epa_pm_api_wrapper/models/offsite_green_power_purchase_type_cost.py +31 -0
- epa_pm_api_wrapper/models/offsite_green_power_purchase_type_fuel_sources.py +22 -0
- epa_pm_api_wrapper/models/offsite_green_power_purchase_type_fuel_sources_fuel_source.py +35 -0
- epa_pm_api_wrapper/models/offsite_green_power_purchase_type_rated_capacity.py +31 -0
- epa_pm_api_wrapper/models/offsite_green_power_purchase_type_renewable_generation_technologies.py +21 -0
- epa_pm_api_wrapper/models/on_site_laundry_facility.py +15 -0
- epa_pm_api_wrapper/models/onsite_laundry_type.py +20 -0
- epa_pm_api_wrapper/models/onsite_laundry_type_value.py +10 -0
- epa_pm_api_wrapper/models/onsite_renewable_detail.py +11 -0
- epa_pm_api_wrapper/models/onsite_renewable_detail_type.py +60 -0
- epa_pm_api_wrapper/models/onsite_renewable_details.py +28 -0
- epa_pm_api_wrapper/models/onsite_renewable_optional_info.py +13 -0
- epa_pm_api_wrapper/models/onsite_renewable_optional_info_type.py +134 -0
- epa_pm_api_wrapper/models/onsite_renewable_optional_info_type_rated_capacity.py +31 -0
- epa_pm_api_wrapper/models/onsite_renewable_optional_info_type_renewable_generation_technologies.py +21 -0
- epa_pm_api_wrapper/models/onsite_usage_detail_type.py +70 -0
- epa_pm_api_wrapper/models/open_footage.py +15 -0
- epa_pm_api_wrapper/models/open_on_weekends.py +16 -0
- epa_pm_api_wrapper/models/optional_floor_area_type.py +19 -0
- epa_pm_api_wrapper/models/organization_type.py +77 -0
- epa_pm_api_wrapper/models/other.py +16 -0
- epa_pm_api_wrapper/models/other_education.py +18 -0
- epa_pm_api_wrapper/models/other_entertainment_public_assembly.py +17 -0
- epa_pm_api_wrapper/models/other_lodging_residential.py +19 -0
- epa_pm_api_wrapper/models/other_mall.py +17 -0
- epa_pm_api_wrapper/models/other_public_services.py +21 -0
- epa_pm_api_wrapper/models/other_recreation.py +16 -0
- epa_pm_api_wrapper/models/other_restaurant_bar.py +17 -0
- epa_pm_api_wrapper/models/other_services.py +16 -0
- epa_pm_api_wrapper/models/other_speciality_hospital.py +17 -0
- epa_pm_api_wrapper/models/other_stadium.py +16 -0
- epa_pm_api_wrapper/models/other_stadium_type.py +35 -0
- epa_pm_api_wrapper/models/other_stadium_type_use_details.py +104 -0
- epa_pm_api_wrapper/models/other_technology_science.py +16 -0
- epa_pm_api_wrapper/models/other_type.py +35 -0
- epa_pm_api_wrapper/models/other_type_use_details.py +42 -0
- epa_pm_api_wrapper/models/other_utility.py +16 -0
- epa_pm_api_wrapper/models/outpatient_rehabilitation_physical_therapy.py +16 -0
- epa_pm_api_wrapper/models/owned_by.py +16 -0
- epa_pm_api_wrapper/models/owned_by_type.py +20 -0
- epa_pm_api_wrapper/models/owned_by_type_value.py +9 -0
- epa_pm_api_wrapper/models/parking.py +15 -0
- epa_pm_api_wrapper/models/parking_type.py +35 -0
- epa_pm_api_wrapper/models/parking_type_use_details.py +40 -0
- epa_pm_api_wrapper/models/partially_enclosed_footage.py +16 -0
- epa_pm_api_wrapper/models/ped.py +26 -0
- epa_pm_api_wrapper/models/pending_accounts_type.py +58 -0
- epa_pm_api_wrapper/models/pending_list.py +15 -0
- epa_pm_api_wrapper/models/pending_list_type.py +53 -0
- epa_pm_api_wrapper/models/pending_meters_type.py +104 -0
- epa_pm_api_wrapper/models/pending_properties_type.py +77 -0
- epa_pm_api_wrapper/models/percent_cooled.py +16 -0
- epa_pm_api_wrapper/models/percent_cooled_type.py +20 -0
- epa_pm_api_wrapper/models/percent_cooled_type_value.py +17 -0
- epa_pm_api_wrapper/models/percent_heated.py +16 -0
- epa_pm_api_wrapper/models/percent_heated_type.py +20 -0
- epa_pm_api_wrapper/models/percent_heated_type_value.py +17 -0
- epa_pm_api_wrapper/models/percent_of_gross_floor_area_that_is_common_space_only.py +16 -0
- epa_pm_api_wrapper/models/percent_of_lab_floor_area.py +16 -0
- epa_pm_api_wrapper/models/percent_office_cooled.py +11 -0
- epa_pm_api_wrapper/models/percent_office_cooled_type.py +20 -0
- epa_pm_api_wrapper/models/percent_office_cooled_type_value.py +9 -0
- epa_pm_api_wrapper/models/percent_office_heated.py +11 -0
- epa_pm_api_wrapper/models/percent_office_heated_type.py +20 -0
- epa_pm_api_wrapper/models/percent_office_heated_type_value.py +9 -0
- epa_pm_api_wrapper/models/percent_used_for_cold_storage.py +18 -0
- epa_pm_api_wrapper/models/performance_target_type.py +42 -0
- epa_pm_api_wrapper/models/performance_target_type_target_metric.py +10 -0
- epa_pm_api_wrapper/models/performance_target_type_target_value.py +107 -0
- epa_pm_api_wrapper/models/performing_arts.py +15 -0
- epa_pm_api_wrapper/models/period_type.py +8 -0
- epa_pm_api_wrapper/models/personal_services.py +17 -0
- epa_pm_api_wrapper/models/pgp.py +56 -0
- epa_pm_api_wrapper/models/pgp_list.py +18 -0
- epa_pm_api_wrapper/models/plant_data_type.py +28 -0
- epa_pm_api_wrapper/models/plant_data_type_value.py +71 -0
- epa_pm_api_wrapper/models/plant_design_flow_rate.py +16 -0
- epa_pm_api_wrapper/models/plant_design_flow_rate_type.py +22 -0
- epa_pm_api_wrapper/models/plant_design_flow_rate_units_type.py +8 -0
- epa_pm_api_wrapper/models/plant_type.py +17 -0
- epa_pm_api_wrapper/models/police_station.py +16 -0
- epa_pm_api_wrapper/models/pool_location.py +15 -0
- epa_pm_api_wrapper/models/pool_size.py +16 -0
- epa_pm_api_wrapper/models/pool_size_type.py +20 -0
- epa_pm_api_wrapper/models/pool_size_type_value.py +9 -0
- epa_pm_api_wrapper/models/pool_type.py +20 -0
- epa_pm_api_wrapper/models/pool_type_value.py +8 -0
- epa_pm_api_wrapper/models/precision_controls_for_temperature_and_humidity.py +16 -0
- epa_pm_api_wrapper/models/preschool_daycare.py +17 -0
- epa_pm_api_wrapper/models/preschool_daycare_type.py +35 -0
- epa_pm_api_wrapper/models/preschool_daycare_type_use_details.py +68 -0
- epa_pm_api_wrapper/models/primary_business_type.py +33 -0
- epa_pm_api_wrapper/models/primary_function_type.py +95 -0
- epa_pm_api_wrapper/models/prison.py +17 -0
- epa_pm_api_wrapper/models/professional_designation_list.py +23 -0
- epa_pm_api_wrapper/models/professional_designation_list_professional_designation.py +41 -0
- epa_pm_api_wrapper/models/property.py +11 -0
- epa_pm_api_wrapper/models/property_design_type.py +66 -0
- epa_pm_api_wrapper/models/property_metrics.py +15 -0
- epa_pm_api_wrapper/models/property_metrics_list.py +19 -0
- epa_pm_api_wrapper/models/property_metrics_type.py +58 -0
- epa_pm_api_wrapper/models/property_representation.py +59 -0
- epa_pm_api_wrapper/models/property_representation_property_representation_type.py +27 -0
- epa_pm_api_wrapper/models/property_type.py +192 -0
- epa_pm_api_wrapper/models/property_use.py +22 -0
- epa_pm_api_wrapper/models/race_track.py +16 -0
- epa_pm_api_wrapper/models/rated_capacity_uom_type.py +8 -0
- epa_pm_api_wrapper/models/rec_ownership_enum.py +10 -0
- epa_pm_api_wrapper/models/refrigerated_warehouse.py +17 -0
- epa_pm_api_wrapper/models/refrigerated_warehouse_type.py +37 -0
- epa_pm_api_wrapper/models/refrigerated_warehouse_type_use_details.py +66 -0
- epa_pm_api_wrapper/models/renewable_generation_technology_enum.py +11 -0
- epa_pm_api_wrapper/models/report.py +72 -0
- epa_pm_api_wrapper/models/report_error.py +53 -0
- epa_pm_api_wrapper/models/report_error_missing_metrics.py +21 -0
- epa_pm_api_wrapper/models/report_error_missing_metrics_property_missing_metric.py +43 -0
- epa_pm_api_wrapper/models/report_error_missing_metrics_property_missing_metric_metric.py +33 -0
- epa_pm_api_wrapper/models/report_metric_values_ws.py +57 -0
- epa_pm_api_wrapper/models/report_metrics.py +26 -0
- epa_pm_api_wrapper/models/report_metrics_group.py +36 -0
- epa_pm_api_wrapper/models/report_metrics_group_metrics.py +24 -0
- epa_pm_api_wrapper/models/report_metrics_group_metrics_metric.py +62 -0
- epa_pm_api_wrapper/models/report_properties.py +20 -0
- epa_pm_api_wrapper/models/report_status.py +11 -0
- epa_pm_api_wrapper/models/report_status_def.py +62 -0
- epa_pm_api_wrapper/models/report_status_type.py +33 -0
- epa_pm_api_wrapper/models/report_template.py +11 -0
- epa_pm_api_wrapper/models/report_template_type.py +63 -0
- epa_pm_api_wrapper/models/report_template_type_metrics.py +21 -0
- epa_pm_api_wrapper/models/report_type.py +17 -0
- epa_pm_api_wrapper/models/reporting_interval_type.py +15 -0
- epa_pm_api_wrapper/models/residence_hall_dormitory.py +16 -0
- epa_pm_api_wrapper/models/residence_hall_dormitory_type.py +37 -0
- epa_pm_api_wrapper/models/residence_hall_dormitory_type_use_details.py +58 -0
- epa_pm_api_wrapper/models/resident_population.py +16 -0
- epa_pm_api_wrapper/models/resident_population_type.py +20 -0
- epa_pm_api_wrapper/models/resident_population_type_value.py +12 -0
- epa_pm_api_wrapper/models/residential_care_facility.py +16 -0
- epa_pm_api_wrapper/models/residential_care_facility_type.py +37 -0
- epa_pm_api_wrapper/models/residential_care_facility_type_use_details.py +120 -0
- epa_pm_api_wrapper/models/response.py +11 -0
- epa_pm_api_wrapper/models/response_status.py +36 -0
- epa_pm_api_wrapper/models/response_status_errors.py +19 -0
- epa_pm_api_wrapper/models/response_type.py +59 -0
- epa_pm_api_wrapper/models/restaurant.py +20 -0
- epa_pm_api_wrapper/models/restaurant_type.py +35 -0
- epa_pm_api_wrapper/models/restaurant_type_use_details.py +84 -0
- epa_pm_api_wrapper/models/retail.py +17 -0
- epa_pm_api_wrapper/models/retail_type.py +35 -0
- epa_pm_api_wrapper/models/retail_type_use_details.py +130 -0
- epa_pm_api_wrapper/models/roller_rink.py +16 -0
- epa_pm_api_wrapper/models/school_district.py +15 -0
- epa_pm_api_wrapper/models/search_result_type.py +23 -0
- epa_pm_api_wrapper/models/search_results.py +15 -0
- epa_pm_api_wrapper/models/seating_capacity.py +16 -0
- epa_pm_api_wrapper/models/self_storage_facility.py +15 -0
- epa_pm_api_wrapper/models/self_storage_facility_type.py +37 -0
- epa_pm_api_wrapper/models/self_storage_facility_type_use_details.py +84 -0
- epa_pm_api_wrapper/models/send_data_response.py +43 -0
- epa_pm_api_wrapper/models/send_data_response_additional_email_addresses.py +17 -0
- epa_pm_api_wrapper/models/send_data_response_file_format.py +8 -0
- epa_pm_api_wrapper/models/senior_living_community.py +16 -0
- epa_pm_api_wrapper/models/senior_living_community_type.py +37 -0
- epa_pm_api_wrapper/models/senior_living_community_type_use_details.py +120 -0
- epa_pm_api_wrapper/models/share_level_type.py +12 -0
- epa_pm_api_wrapper/models/sharing_response.py +16 -0
- epa_pm_api_wrapper/models/sharing_response_type.py +34 -0
- epa_pm_api_wrapper/models/single_family_home.py +16 -0
- epa_pm_api_wrapper/models/single_family_home_type.py +35 -0
- epa_pm_api_wrapper/models/single_family_home_type_use_details.py +34 -0
- epa_pm_api_wrapper/models/single_store.py +15 -0
- epa_pm_api_wrapper/models/size_of_electronic_score_boards.py +15 -0
- epa_pm_api_wrapper/models/spectator_seating_capacity.py +16 -0
- epa_pm_api_wrapper/models/stadium_closed.py +17 -0
- epa_pm_api_wrapper/models/stadium_closed_type.py +35 -0
- epa_pm_api_wrapper/models/stadium_closed_type_use_details.py +104 -0
- epa_pm_api_wrapper/models/stadium_open.py +17 -0
- epa_pm_api_wrapper/models/stadium_open_type.py +35 -0
- epa_pm_api_wrapper/models/stadium_open_type_use_details.py +104 -0
- epa_pm_api_wrapper/models/state_code.py +159 -0
- epa_pm_api_wrapper/models/station.py +45 -0
- epa_pm_api_wrapper/models/status_type.py +8 -0
- epa_pm_api_wrapper/models/strip_mall.py +17 -0
- epa_pm_api_wrapper/models/student_seating_capacity.py +16 -0
- epa_pm_api_wrapper/models/supermarket.py +17 -0
- epa_pm_api_wrapper/models/supermarket_type.py +35 -0
- epa_pm_api_wrapper/models/supermarket_type_use_details.py +114 -0
- epa_pm_api_wrapper/models/supplemental_heating.py +15 -0
- epa_pm_api_wrapper/models/surgery_center_floor_area.py +16 -0
- epa_pm_api_wrapper/models/swimming_pool.py +15 -0
- epa_pm_api_wrapper/models/swimming_pool_type.py +35 -0
- epa_pm_api_wrapper/models/swimming_pool_type_use_details.py +34 -0
- epa_pm_api_wrapper/models/system_determined_string.py +7 -0
- epa_pm_api_wrapper/models/target_finder.py +11 -0
- epa_pm_api_wrapper/models/target_type_percentage_type.py +17 -0
- epa_pm_api_wrapper/models/target_type_percentage_values_type.py +107 -0
- epa_pm_api_wrapper/models/target_type_score_type.py +17 -0
- epa_pm_api_wrapper/models/target_type_score_values_type.py +106 -0
- epa_pm_api_wrapper/models/template_type.py +19 -0
- epa_pm_api_wrapper/models/template_type_value.py +15 -0
- epa_pm_api_wrapper/models/tenant_common_area_energy_type.py +21 -0
- epa_pm_api_wrapper/models/tenant_common_area_energy_use_information_type.py +31 -0
- epa_pm_api_wrapper/models/terminate_share_response_type.py +24 -0
- epa_pm_api_wrapper/models/terminate_sharing_response.py +16 -0
- epa_pm_api_wrapper/models/timeframe_type.py +103 -0
- epa_pm_api_wrapper/models/timeframe_type_baseline_period.py +18 -0
- epa_pm_api_wrapper/models/timeframe_type_compare_baseline_period.py +25 -0
- epa_pm_api_wrapper/models/timeframe_type_compare_current_period.py +25 -0
- epa_pm_api_wrapper/models/timeframe_type_current_period.py +18 -0
- epa_pm_api_wrapper/models/timeframe_type_current_vs_baseline.py +18 -0
- epa_pm_api_wrapper/models/timeframe_type_date_range.py +30 -0
- epa_pm_api_wrapper/models/timeframe_type_single_period.py +18 -0
- epa_pm_api_wrapper/models/timeframe_type_two_periods.py +24 -0
- epa_pm_api_wrapper/models/total_gross_floor_area.py +11 -0
- epa_pm_api_wrapper/models/total_ice_rink_surface_area_for_all_rinks.py +21 -0
- epa_pm_api_wrapper/models/transportation_terminal_station.py +16 -0
- epa_pm_api_wrapper/models/type_of_energy_star_partner.py +14 -0
- epa_pm_api_wrapper/models/type_of_meter.py +55 -0
- epa_pm_api_wrapper/models/type_of_waste_meter.py +122 -0
- epa_pm_api_wrapper/models/type_of_waste_meter_data_entry_method.py +18 -0
- epa_pm_api_wrapper/models/type_of_waste_meter_unit_of_measure.py +15 -0
- epa_pm_api_wrapper/models/un_auth_design_type.py +100 -0
- epa_pm_api_wrapper/models/un_auth_design_type_estimated_energy_list.py +17 -0
- epa_pm_api_wrapper/models/un_auth_design_type_property_uses.py +709 -0
- epa_pm_api_wrapper/models/un_auth_design_type_target.py +34 -0
- epa_pm_api_wrapper/models/ups_system_redundancy.py +16 -0
- epa_pm_api_wrapper/models/ups_system_redundancy_type.py +20 -0
- epa_pm_api_wrapper/models/ups_system_redundancy_type_value.py +12 -0
- epa_pm_api_wrapper/models/urgent_care_clinic_other_outpatient.py +17 -0
- epa_pm_api_wrapper/models/use_attribute_base.py +65 -0
- epa_pm_api_wrapper/models/use_attribute_base_default.py +9 -0
- epa_pm_api_wrapper/models/use_decimal_type.py +21 -0
- epa_pm_api_wrapper/models/use_details.py +1086 -0
- epa_pm_api_wrapper/models/use_integer_type.py +20 -0
- epa_pm_api_wrapper/models/use_string_type.py +19 -0
- epa_pm_api_wrapper/models/use_yes_no_type.py +20 -0
- epa_pm_api_wrapper/models/vehicle_dealership.py +16 -0
- epa_pm_api_wrapper/models/vehicle_dealership_type.py +37 -0
- epa_pm_api_wrapper/models/vehicle_dealership_type_use_details.py +84 -0
- epa_pm_api_wrapper/models/vehicle_repair_services.py +19 -0
- epa_pm_api_wrapper/models/vehicle_repair_services_type.py +37 -0
- epa_pm_api_wrapper/models/vehicle_repair_services_type_use_details.py +74 -0
- epa_pm_api_wrapper/models/verification.py +96 -0
- epa_pm_api_wrapper/models/veterinary_office.py +15 -0
- epa_pm_api_wrapper/models/vocational_school.py +16 -0
- epa_pm_api_wrapper/models/warning_type.py +29 -0
- epa_pm_api_wrapper/models/warnings_type.py +25 -0
- epa_pm_api_wrapper/models/waste_data.py +15 -0
- epa_pm_api_wrapper/models/waste_data_list.py +11 -0
- epa_pm_api_wrapper/models/waste_meter.py +11 -0
- epa_pm_api_wrapper/models/waste_meter_assoc_and_config_type.py +18 -0
- epa_pm_api_wrapper/models/waste_meter_data_type.py +32 -0
- epa_pm_api_wrapper/models/waste_meter_entry_type.py +113 -0
- epa_pm_api_wrapper/models/waste_meter_entry_type_average_percent_full.py +11 -0
- epa_pm_api_wrapper/models/waste_meter_type.py +81 -0
- epa_pm_api_wrapper/models/wastewater_treatment_plant.py +15 -0
- epa_pm_api_wrapper/models/wastewater_treatment_plant_type.py +37 -0
- epa_pm_api_wrapper/models/wastewater_treatment_plant_type_use_details.py +63 -0
- epa_pm_api_wrapper/models/water_meter_assoc_and_config_type.py +25 -0
- epa_pm_api_wrapper/models/weekly_building_occupied_hours.py +16 -0
- epa_pm_api_wrapper/models/weekly_operating_hours.py +19 -0
- epa_pm_api_wrapper/models/wholesale_club_supercenter.py +16 -0
- epa_pm_api_wrapper/models/wholesale_club_supercenter_type.py +37 -0
- epa_pm_api_wrapper/models/wholesale_club_supercenter_type_use_details.py +130 -0
- epa_pm_api_wrapper/models/worship_facility.py +19 -0
- epa_pm_api_wrapper/models/worship_facility_type.py +35 -0
- epa_pm_api_wrapper/models/worship_facility_type_use_details.py +102 -0
- epa_pm_api_wrapper/models/yes_no.py +8 -0
- epa_pm_api_wrapper/models/zoo.py +16 -0
- epa_pm_api_wrapper/py.typed +1 -0
- epa_pm_api_wrapper/resources/__init__.py +172 -0
- epa_pm_api_wrapper/resources/_base.py +22 -0
- epa_pm_api_wrapper/resources/account.py +37 -0
- epa_pm_api_wrapper/resources/association.py +145 -0
- epa_pm_api_wrapper/resources/building.py +89 -0
- epa_pm_api_wrapper/resources/consumption_data.py +142 -0
- epa_pm_api_wrapper/resources/custom_metric.py +91 -0
- epa_pm_api_wrapper/resources/customer.py +45 -0
- epa_pm_api_wrapper/resources/data_exchange.py +111 -0
- epa_pm_api_wrapper/resources/green_power.py +237 -0
- epa_pm_api_wrapper/resources/hey.py +22 -0
- epa_pm_api_wrapper/resources/hierarchy.py +59 -0
- epa_pm_api_wrapper/resources/identifier.py +92 -0
- epa_pm_api_wrapper/resources/meter.py +277 -0
- epa_pm_api_wrapper/resources/metrics.py +185 -0
- epa_pm_api_wrapper/resources/property.py +450 -0
- epa_pm_api_wrapper/resources/property_use.py +277 -0
- epa_pm_api_wrapper/resources/report.py +169 -0
- epa_pm_api_wrapper/resources/share.py +139 -0
- epa_pm_api_wrapper/resources/target_finder.py +34 -0
- epa_pm_api_wrapper/resources/verification.py +201 -0
- epa_pm_api_wrapper/resources/waste_data.py +124 -0
- epa_pm_api_wrapper/retry.py +219 -0
- epa_pm_api_wrapper-0.3.0.dist-info/METADATA +137 -0
- epa_pm_api_wrapper-0.3.0.dist-info/RECORD +654 -0
- epa_pm_api_wrapper-0.3.0.dist-info/WHEEL +4 -0
- epa_pm_api_wrapper-0.3.0.dist-info/entry_points.txt +2 -0
- epa_pm_api_wrapper-0.3.0.dist-info/licenses/LICENSE +21 -0
|
@@ -0,0 +1,102 @@
|
|
|
1
|
+
from __future__ import annotations
|
|
2
|
+
|
|
3
|
+
from dataclasses import dataclass, field
|
|
4
|
+
|
|
5
|
+
from .ceiling_height import CeilingHeight
|
|
6
|
+
from .cooking_facilities import CookingFacilities
|
|
7
|
+
from .gross_floor_area_used_for_food_preparation import (
|
|
8
|
+
GrossFloorAreaUsedForFoodPreparation,
|
|
9
|
+
)
|
|
10
|
+
from .number_of_commercial_refrigeration_units import (
|
|
11
|
+
NumberOfCommercialRefrigerationUnits,
|
|
12
|
+
)
|
|
13
|
+
from .number_of_computers import NumberOfComputers
|
|
14
|
+
from .number_of_weekdays_open import NumberOfWeekdaysOpen
|
|
15
|
+
from .percent_cooled import PercentCooled
|
|
16
|
+
from .percent_heated import PercentHeated
|
|
17
|
+
from .seating_capacity import SeatingCapacity
|
|
18
|
+
from .total_gross_floor_area import TotalGrossFloorArea
|
|
19
|
+
from .weekly_operating_hours import WeeklyOperatingHours
|
|
20
|
+
|
|
21
|
+
|
|
22
|
+
@dataclass(kw_only=True)
|
|
23
|
+
class WorshipFacilityTypeUseDetails:
|
|
24
|
+
class Meta:
|
|
25
|
+
global_type = False
|
|
26
|
+
|
|
27
|
+
total_gross_floor_area: TotalGrossFloorArea = field(
|
|
28
|
+
metadata={
|
|
29
|
+
"name": "totalGrossFloorArea",
|
|
30
|
+
"type": "Element",
|
|
31
|
+
}
|
|
32
|
+
)
|
|
33
|
+
weekly_operating_hours: None | WeeklyOperatingHours = field(
|
|
34
|
+
default=None,
|
|
35
|
+
metadata={
|
|
36
|
+
"name": "weeklyOperatingHours",
|
|
37
|
+
"type": "Element",
|
|
38
|
+
},
|
|
39
|
+
)
|
|
40
|
+
seating_capacity: None | SeatingCapacity = field(
|
|
41
|
+
default=None,
|
|
42
|
+
metadata={
|
|
43
|
+
"name": "seatingCapacity",
|
|
44
|
+
"type": "Element",
|
|
45
|
+
},
|
|
46
|
+
)
|
|
47
|
+
ceiling_height: None | CeilingHeight = field(
|
|
48
|
+
default=None,
|
|
49
|
+
metadata={
|
|
50
|
+
"name": "ceilingHeight",
|
|
51
|
+
"type": "Element",
|
|
52
|
+
},
|
|
53
|
+
)
|
|
54
|
+
cooking_facilities: None | CookingFacilities = field(
|
|
55
|
+
default=None,
|
|
56
|
+
metadata={
|
|
57
|
+
"name": "cookingFacilities",
|
|
58
|
+
"type": "Element",
|
|
59
|
+
},
|
|
60
|
+
)
|
|
61
|
+
gross_floor_area_used_for_food_preparation: None | GrossFloorAreaUsedForFoodPreparation = field(
|
|
62
|
+
default=None,
|
|
63
|
+
metadata={
|
|
64
|
+
"name": "grossFloorAreaUsedForFoodPreparation",
|
|
65
|
+
"type": "Element",
|
|
66
|
+
},
|
|
67
|
+
)
|
|
68
|
+
number_of_weekdays_open: None | NumberOfWeekdaysOpen = field(
|
|
69
|
+
default=None,
|
|
70
|
+
metadata={
|
|
71
|
+
"name": "numberOfWeekdaysOpen",
|
|
72
|
+
"type": "Element",
|
|
73
|
+
},
|
|
74
|
+
)
|
|
75
|
+
number_of_computers: None | NumberOfComputers = field(
|
|
76
|
+
default=None,
|
|
77
|
+
metadata={
|
|
78
|
+
"name": "numberOfComputers",
|
|
79
|
+
"type": "Element",
|
|
80
|
+
},
|
|
81
|
+
)
|
|
82
|
+
number_of_commercial_refrigeration_units: None | NumberOfCommercialRefrigerationUnits = field(
|
|
83
|
+
default=None,
|
|
84
|
+
metadata={
|
|
85
|
+
"name": "numberOfCommercialRefrigerationUnits",
|
|
86
|
+
"type": "Element",
|
|
87
|
+
},
|
|
88
|
+
)
|
|
89
|
+
percent_heated: None | PercentHeated = field(
|
|
90
|
+
default=None,
|
|
91
|
+
metadata={
|
|
92
|
+
"name": "percentHeated",
|
|
93
|
+
"type": "Element",
|
|
94
|
+
},
|
|
95
|
+
)
|
|
96
|
+
percent_cooled: None | PercentCooled = field(
|
|
97
|
+
default=None,
|
|
98
|
+
metadata={
|
|
99
|
+
"name": "percentCooled",
|
|
100
|
+
"type": "Element",
|
|
101
|
+
},
|
|
102
|
+
)
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
from __future__ import annotations
|
|
2
|
+
|
|
3
|
+
from dataclasses import dataclass
|
|
4
|
+
|
|
5
|
+
from .other_type import OtherType
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
@dataclass(kw_only=True)
|
|
9
|
+
class Zoo(OtherType):
|
|
10
|
+
"""
|
|
11
|
+
Buildings used primarily to provide habitat to live animals and which
|
|
12
|
+
may include public or private viewing and educational programs.
|
|
13
|
+
"""
|
|
14
|
+
|
|
15
|
+
class Meta:
|
|
16
|
+
name = "zoo"
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
# Marker file for PEP 561
|
|
@@ -0,0 +1,172 @@
|
|
|
1
|
+
"""Resource bindings for the EPA Portfolio Manager API.
|
|
2
|
+
|
|
3
|
+
Each resource class wraps a logical group of endpoints. Resources are attached
|
|
4
|
+
to ``EpaPmClient`` (sync) and ``EpaPmAsyncClient`` (async) as attributes
|
|
5
|
+
(``client.property``, ``client.meter``, etc.) and share the underlying HTTP
|
|
6
|
+
machinery via a back-reference to the client. The ``Async*`` variants mirror
|
|
7
|
+
their sync counterparts with ``async def`` methods.
|
|
8
|
+
"""
|
|
9
|
+
|
|
10
|
+
from .account import AccountResource, AsyncAccountResource
|
|
11
|
+
from .association import (
|
|
12
|
+
AssociationResource,
|
|
13
|
+
AsyncAssociationResource,
|
|
14
|
+
AsyncPropertyMeterAssociationResource,
|
|
15
|
+
AsyncPropertyUseMeterAssociationResource,
|
|
16
|
+
PropertyMeterAssociationResource,
|
|
17
|
+
PropertyUseMeterAssociationResource,
|
|
18
|
+
)
|
|
19
|
+
from .building import AsyncBuildingResource, BuildingResource
|
|
20
|
+
from .consumption_data import AsyncConsumptionDataResource, ConsumptionDataResource
|
|
21
|
+
from .custom_metric import AsyncCustomMetricResource, CustomMetricResource
|
|
22
|
+
from .customer import AsyncCustomerResource, CustomerResource
|
|
23
|
+
from .data_exchange import (
|
|
24
|
+
AsyncDataExchangeCustomFieldsResource,
|
|
25
|
+
AsyncDataExchangeResource,
|
|
26
|
+
DataExchangeCustomFieldsResource,
|
|
27
|
+
DataExchangeResource,
|
|
28
|
+
)
|
|
29
|
+
from .green_power import (
|
|
30
|
+
AsyncGreenPowerResource,
|
|
31
|
+
AsyncOffsiteGreenPowerResource,
|
|
32
|
+
AsyncOnsiteRenewableResource,
|
|
33
|
+
GreenPowerResource,
|
|
34
|
+
OffsiteGreenPowerResource,
|
|
35
|
+
OnsiteRenewableResource,
|
|
36
|
+
)
|
|
37
|
+
from .hey import AsyncHeyResource, HeyResource
|
|
38
|
+
from .hierarchy import AsyncHierarchyResource, HierarchyResource
|
|
39
|
+
from .identifier import AsyncIdentifierResource, IdentifierResource
|
|
40
|
+
from .meter import (
|
|
41
|
+
AggregateMeterResource,
|
|
42
|
+
AsyncAggregateMeterResource,
|
|
43
|
+
AsyncMeterIdentifierResource,
|
|
44
|
+
AsyncMeterResource,
|
|
45
|
+
MeterIdentifierResource,
|
|
46
|
+
MeterResource,
|
|
47
|
+
)
|
|
48
|
+
from .metrics import AsyncMetricsResource, MetricsResource
|
|
49
|
+
from .property import (
|
|
50
|
+
AsyncBillboardMetricResource,
|
|
51
|
+
AsyncEduResource,
|
|
52
|
+
AsyncEGridSubregionResource,
|
|
53
|
+
AsyncEnergyPerformanceProjectResource,
|
|
54
|
+
AsyncFederalAgencyResource,
|
|
55
|
+
AsyncInternationalWeatherStationResource,
|
|
56
|
+
AsyncPgpResource,
|
|
57
|
+
AsyncPropertyDesignResource,
|
|
58
|
+
AsyncPropertyResource,
|
|
59
|
+
BillboardMetricResource,
|
|
60
|
+
EduResource,
|
|
61
|
+
EGridSubregionResource,
|
|
62
|
+
EnergyPerformanceProjectResource,
|
|
63
|
+
FederalAgencyResource,
|
|
64
|
+
InternationalWeatherStationResource,
|
|
65
|
+
PgpResource,
|
|
66
|
+
PropertyDesignResource,
|
|
67
|
+
PropertyResource,
|
|
68
|
+
)
|
|
69
|
+
from .property_use import (
|
|
70
|
+
AsyncCustomUseResource,
|
|
71
|
+
AsyncPropertyUseResource,
|
|
72
|
+
AsyncUseDetailsResource,
|
|
73
|
+
CustomUseResource,
|
|
74
|
+
PropertyUseResource,
|
|
75
|
+
UseDetailsResource,
|
|
76
|
+
)
|
|
77
|
+
from .report import (
|
|
78
|
+
AsyncReportResource,
|
|
79
|
+
AsyncReportTemplatesResource,
|
|
80
|
+
ReportResource,
|
|
81
|
+
ReportTemplatesResource,
|
|
82
|
+
)
|
|
83
|
+
from .share import AsyncShareResource, ShareResource
|
|
84
|
+
from .target_finder import AsyncTargetFinderResource, TargetFinderResource
|
|
85
|
+
from .verification import (
|
|
86
|
+
AsyncVerificationDesignationsResource,
|
|
87
|
+
AsyncVerificationResource,
|
|
88
|
+
VerificationDesignationsResource,
|
|
89
|
+
VerificationResource,
|
|
90
|
+
)
|
|
91
|
+
from .waste_data import AsyncWasteDataResource, WasteDataResource
|
|
92
|
+
|
|
93
|
+
__all__ = [
|
|
94
|
+
"AccountResource",
|
|
95
|
+
"AggregateMeterResource",
|
|
96
|
+
"AssociationResource",
|
|
97
|
+
"AsyncAccountResource",
|
|
98
|
+
"AsyncAggregateMeterResource",
|
|
99
|
+
"AsyncAssociationResource",
|
|
100
|
+
"AsyncBillboardMetricResource",
|
|
101
|
+
"AsyncBuildingResource",
|
|
102
|
+
"AsyncConsumptionDataResource",
|
|
103
|
+
"AsyncCustomMetricResource",
|
|
104
|
+
"AsyncCustomUseResource",
|
|
105
|
+
"AsyncCustomerResource",
|
|
106
|
+
"AsyncDataExchangeCustomFieldsResource",
|
|
107
|
+
"AsyncDataExchangeResource",
|
|
108
|
+
"AsyncEGridSubregionResource",
|
|
109
|
+
"AsyncEduResource",
|
|
110
|
+
"AsyncEnergyPerformanceProjectResource",
|
|
111
|
+
"AsyncFederalAgencyResource",
|
|
112
|
+
"AsyncGreenPowerResource",
|
|
113
|
+
"AsyncHeyResource",
|
|
114
|
+
"AsyncHierarchyResource",
|
|
115
|
+
"AsyncIdentifierResource",
|
|
116
|
+
"AsyncInternationalWeatherStationResource",
|
|
117
|
+
"AsyncMeterIdentifierResource",
|
|
118
|
+
"AsyncMeterResource",
|
|
119
|
+
"AsyncMetricsResource",
|
|
120
|
+
"AsyncOffsiteGreenPowerResource",
|
|
121
|
+
"AsyncOnsiteRenewableResource",
|
|
122
|
+
"AsyncPgpResource",
|
|
123
|
+
"AsyncPropertyDesignResource",
|
|
124
|
+
"AsyncPropertyMeterAssociationResource",
|
|
125
|
+
"AsyncPropertyResource",
|
|
126
|
+
"AsyncPropertyUseMeterAssociationResource",
|
|
127
|
+
"AsyncPropertyUseResource",
|
|
128
|
+
"AsyncReportResource",
|
|
129
|
+
"AsyncReportTemplatesResource",
|
|
130
|
+
"AsyncShareResource",
|
|
131
|
+
"AsyncTargetFinderResource",
|
|
132
|
+
"AsyncUseDetailsResource",
|
|
133
|
+
"AsyncVerificationDesignationsResource",
|
|
134
|
+
"AsyncVerificationResource",
|
|
135
|
+
"AsyncWasteDataResource",
|
|
136
|
+
"BillboardMetricResource",
|
|
137
|
+
"BuildingResource",
|
|
138
|
+
"ConsumptionDataResource",
|
|
139
|
+
"CustomMetricResource",
|
|
140
|
+
"CustomUseResource",
|
|
141
|
+
"CustomerResource",
|
|
142
|
+
"DataExchangeCustomFieldsResource",
|
|
143
|
+
"DataExchangeResource",
|
|
144
|
+
"EGridSubregionResource",
|
|
145
|
+
"EduResource",
|
|
146
|
+
"EnergyPerformanceProjectResource",
|
|
147
|
+
"FederalAgencyResource",
|
|
148
|
+
"GreenPowerResource",
|
|
149
|
+
"HeyResource",
|
|
150
|
+
"HierarchyResource",
|
|
151
|
+
"IdentifierResource",
|
|
152
|
+
"InternationalWeatherStationResource",
|
|
153
|
+
"MeterIdentifierResource",
|
|
154
|
+
"MeterResource",
|
|
155
|
+
"MetricsResource",
|
|
156
|
+
"OffsiteGreenPowerResource",
|
|
157
|
+
"OnsiteRenewableResource",
|
|
158
|
+
"PgpResource",
|
|
159
|
+
"PropertyDesignResource",
|
|
160
|
+
"PropertyMeterAssociationResource",
|
|
161
|
+
"PropertyResource",
|
|
162
|
+
"PropertyUseMeterAssociationResource",
|
|
163
|
+
"PropertyUseResource",
|
|
164
|
+
"ReportResource",
|
|
165
|
+
"ReportTemplatesResource",
|
|
166
|
+
"ShareResource",
|
|
167
|
+
"TargetFinderResource",
|
|
168
|
+
"UseDetailsResource",
|
|
169
|
+
"VerificationDesignationsResource",
|
|
170
|
+
"VerificationResource",
|
|
171
|
+
"WasteDataResource",
|
|
172
|
+
]
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
"""Resource base classes — shared back-reference to the underlying client."""
|
|
2
|
+
|
|
3
|
+
from __future__ import annotations
|
|
4
|
+
|
|
5
|
+
from typing import TYPE_CHECKING
|
|
6
|
+
|
|
7
|
+
if TYPE_CHECKING:
|
|
8
|
+
from epa_pm_api_wrapper.client import EpaPmAsyncClient, EpaPmClient
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
class Resource:
|
|
12
|
+
"""Holds a back-reference to the sync client so resources can share `_request`."""
|
|
13
|
+
|
|
14
|
+
def __init__(self, client: EpaPmClient) -> None:
|
|
15
|
+
self._client = client
|
|
16
|
+
|
|
17
|
+
|
|
18
|
+
class AsyncResource:
|
|
19
|
+
"""Holds a back-reference to the async client so resources can share `_arequest`."""
|
|
20
|
+
|
|
21
|
+
def __init__(self, client: EpaPmAsyncClient) -> None:
|
|
22
|
+
self._client = client
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
"""Account resource — `/account` endpoints."""
|
|
2
|
+
|
|
3
|
+
from __future__ import annotations
|
|
4
|
+
|
|
5
|
+
from epa_pm_api_wrapper.models import Account, CustomFieldList, Response
|
|
6
|
+
|
|
7
|
+
from ._base import AsyncResource, Resource
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
class AccountResource(Resource):
|
|
11
|
+
def get(self) -> Account:
|
|
12
|
+
"""Get the account details for the authenticated user."""
|
|
13
|
+
return self._client._request("GET", "account", response_type=Account)
|
|
14
|
+
|
|
15
|
+
def update(self, account_data: Account) -> Response:
|
|
16
|
+
"""Update the authenticated user's account."""
|
|
17
|
+
return self._client._request("PUT", "account", data=account_data, response_type=Response)
|
|
18
|
+
|
|
19
|
+
def custom_fields(self, account_id: int) -> CustomFieldList:
|
|
20
|
+
"""List custom field values stored on a customer account."""
|
|
21
|
+
return self._client._request("GET", f"account/{account_id}/customFieldList", response_type=CustomFieldList)
|
|
22
|
+
|
|
23
|
+
|
|
24
|
+
class AsyncAccountResource(AsyncResource):
|
|
25
|
+
async def get(self) -> Account:
|
|
26
|
+
"""Get the account details for the authenticated user."""
|
|
27
|
+
return await self._client._arequest("GET", "account", response_type=Account)
|
|
28
|
+
|
|
29
|
+
async def update(self, account_data: Account) -> Response:
|
|
30
|
+
"""Update the authenticated user's account."""
|
|
31
|
+
return await self._client._arequest("PUT", "account", data=account_data, response_type=Response)
|
|
32
|
+
|
|
33
|
+
async def custom_fields(self, account_id: int) -> CustomFieldList:
|
|
34
|
+
"""List custom field values stored on a customer account."""
|
|
35
|
+
return await self._client._arequest(
|
|
36
|
+
"GET", f"account/{account_id}/customFieldList", response_type=CustomFieldList
|
|
37
|
+
)
|
|
@@ -0,0 +1,145 @@
|
|
|
1
|
+
"""Association resource — `/association/property/...` and `/association/propertyUse/...`.
|
|
2
|
+
|
|
3
|
+
Two flavors of meter associations: by property and by property use. Each flavor
|
|
4
|
+
exposes the same shape (``list``, ``set_many``, ``add_one``, ``remove_one``).
|
|
5
|
+
The building↔property associations live on :class:`BuildingResource` for
|
|
6
|
+
historical reasons (``client.building.associate`` / ``.disassociate``).
|
|
7
|
+
"""
|
|
8
|
+
|
|
9
|
+
from __future__ import annotations
|
|
10
|
+
|
|
11
|
+
from typing import TYPE_CHECKING
|
|
12
|
+
|
|
13
|
+
from epa_pm_api_wrapper.models import (
|
|
14
|
+
MeterPropertyAssociationList,
|
|
15
|
+
MeterPropertyUseAssociationList,
|
|
16
|
+
Response,
|
|
17
|
+
)
|
|
18
|
+
|
|
19
|
+
from ._base import AsyncResource, Resource
|
|
20
|
+
|
|
21
|
+
if TYPE_CHECKING:
|
|
22
|
+
from epa_pm_api_wrapper.client import EpaPmAsyncClient, EpaPmClient
|
|
23
|
+
|
|
24
|
+
|
|
25
|
+
class PropertyMeterAssociationResource(Resource):
|
|
26
|
+
def list(self, property_id: int) -> MeterPropertyAssociationList:
|
|
27
|
+
"""List meters associated with a property."""
|
|
28
|
+
return self._client._request(
|
|
29
|
+
"GET", f"association/property/{property_id}/meter", response_type=MeterPropertyAssociationList
|
|
30
|
+
)
|
|
31
|
+
|
|
32
|
+
def set_many(self, property_id: int, data: MeterPropertyAssociationList) -> Response:
|
|
33
|
+
"""Associate a batch of meters with a property in one call."""
|
|
34
|
+
return self._client._request(
|
|
35
|
+
"POST", f"association/property/{property_id}/meter", data=data, response_type=Response
|
|
36
|
+
)
|
|
37
|
+
|
|
38
|
+
def add_one(self, property_id: int, meter_id: int) -> Response:
|
|
39
|
+
"""Associate a single meter with a property."""
|
|
40
|
+
return self._client._request(
|
|
41
|
+
"POST", f"association/property/{property_id}/meter/{meter_id}", response_type=Response
|
|
42
|
+
)
|
|
43
|
+
|
|
44
|
+
def remove_one(self, property_id: int, meter_id: int) -> Response:
|
|
45
|
+
"""Remove a single meter↔property association."""
|
|
46
|
+
return self._client._request(
|
|
47
|
+
"DELETE", f"association/property/{property_id}/meter/{meter_id}", response_type=Response
|
|
48
|
+
)
|
|
49
|
+
|
|
50
|
+
|
|
51
|
+
class PropertyUseMeterAssociationResource(Resource):
|
|
52
|
+
def list(self, property_use_id: int) -> MeterPropertyUseAssociationList:
|
|
53
|
+
"""List meters associated with a property use."""
|
|
54
|
+
return self._client._request(
|
|
55
|
+
"GET", f"association/propertyUse/{property_use_id}/meter", response_type=MeterPropertyUseAssociationList
|
|
56
|
+
)
|
|
57
|
+
|
|
58
|
+
def set_many(self, property_use_id: int, data: MeterPropertyUseAssociationList) -> Response:
|
|
59
|
+
"""Associate a batch of meters with a property use."""
|
|
60
|
+
return self._client._request(
|
|
61
|
+
"POST", f"association/propertyUse/{property_use_id}/meter", data=data, response_type=Response
|
|
62
|
+
)
|
|
63
|
+
|
|
64
|
+
def add_one(self, property_use_id: int, meter_id: int) -> Response:
|
|
65
|
+
"""Associate a single meter with a property use."""
|
|
66
|
+
return self._client._request(
|
|
67
|
+
"POST", f"association/propertyUse/{property_use_id}/meter/{meter_id}", response_type=Response
|
|
68
|
+
)
|
|
69
|
+
|
|
70
|
+
def remove_one(self, property_use_id: int, meter_id: int) -> Response:
|
|
71
|
+
"""Remove a single meter↔propertyUse association."""
|
|
72
|
+
return self._client._request(
|
|
73
|
+
"DELETE", f"association/propertyUse/{property_use_id}/meter/{meter_id}", response_type=Response
|
|
74
|
+
)
|
|
75
|
+
|
|
76
|
+
|
|
77
|
+
class AssociationResource(Resource):
|
|
78
|
+
"""Top-level association namespace.
|
|
79
|
+
|
|
80
|
+
``client.association.property_meters`` covers property↔meter;
|
|
81
|
+
``client.association.property_use_meters`` covers propertyUse↔meter.
|
|
82
|
+
"""
|
|
83
|
+
|
|
84
|
+
def __init__(self, client: EpaPmClient) -> None:
|
|
85
|
+
super().__init__(client)
|
|
86
|
+
self.property_meters = PropertyMeterAssociationResource(client)
|
|
87
|
+
self.property_use_meters = PropertyUseMeterAssociationResource(client)
|
|
88
|
+
|
|
89
|
+
|
|
90
|
+
class AsyncPropertyMeterAssociationResource(AsyncResource):
|
|
91
|
+
async def list(self, property_id: int) -> MeterPropertyAssociationList:
|
|
92
|
+
return await self._client._arequest(
|
|
93
|
+
"GET", f"association/property/{property_id}/meter", response_type=MeterPropertyAssociationList
|
|
94
|
+
)
|
|
95
|
+
|
|
96
|
+
async def set_many(self, property_id: int, data: MeterPropertyAssociationList) -> Response:
|
|
97
|
+
return await self._client._arequest(
|
|
98
|
+
"POST", f"association/property/{property_id}/meter", data=data, response_type=Response
|
|
99
|
+
)
|
|
100
|
+
|
|
101
|
+
async def add_one(self, property_id: int, meter_id: int) -> Response:
|
|
102
|
+
return await self._client._arequest(
|
|
103
|
+
"POST", f"association/property/{property_id}/meter/{meter_id}", response_type=Response
|
|
104
|
+
)
|
|
105
|
+
|
|
106
|
+
async def remove_one(self, property_id: int, meter_id: int) -> Response:
|
|
107
|
+
return await self._client._arequest(
|
|
108
|
+
"DELETE", f"association/property/{property_id}/meter/{meter_id}", response_type=Response
|
|
109
|
+
)
|
|
110
|
+
|
|
111
|
+
|
|
112
|
+
class AsyncPropertyUseMeterAssociationResource(AsyncResource):
|
|
113
|
+
async def list(self, property_use_id: int) -> MeterPropertyUseAssociationList:
|
|
114
|
+
return await self._client._arequest(
|
|
115
|
+
"GET", f"association/propertyUse/{property_use_id}/meter", response_type=MeterPropertyUseAssociationList
|
|
116
|
+
)
|
|
117
|
+
|
|
118
|
+
async def set_many(self, property_use_id: int, data: MeterPropertyUseAssociationList) -> Response:
|
|
119
|
+
return await self._client._arequest(
|
|
120
|
+
"POST",
|
|
121
|
+
f"association/propertyUse/{property_use_id}/meter",
|
|
122
|
+
data=data,
|
|
123
|
+
response_type=Response,
|
|
124
|
+
)
|
|
125
|
+
|
|
126
|
+
async def add_one(self, property_use_id: int, meter_id: int) -> Response:
|
|
127
|
+
return await self._client._arequest(
|
|
128
|
+
"POST",
|
|
129
|
+
f"association/propertyUse/{property_use_id}/meter/{meter_id}",
|
|
130
|
+
response_type=Response,
|
|
131
|
+
)
|
|
132
|
+
|
|
133
|
+
async def remove_one(self, property_use_id: int, meter_id: int) -> Response:
|
|
134
|
+
return await self._client._arequest(
|
|
135
|
+
"DELETE",
|
|
136
|
+
f"association/propertyUse/{property_use_id}/meter/{meter_id}",
|
|
137
|
+
response_type=Response,
|
|
138
|
+
)
|
|
139
|
+
|
|
140
|
+
|
|
141
|
+
class AsyncAssociationResource(AsyncResource):
|
|
142
|
+
def __init__(self, client: EpaPmAsyncClient) -> None:
|
|
143
|
+
super().__init__(client)
|
|
144
|
+
self.property_meters = AsyncPropertyMeterAssociationResource(client)
|
|
145
|
+
self.property_use_meters = AsyncPropertyUseMeterAssociationResource(client)
|
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
"""Building resource — `/building` and `/property/{propertyId}/building` endpoints."""
|
|
2
|
+
|
|
3
|
+
from __future__ import annotations
|
|
4
|
+
|
|
5
|
+
from epa_pm_api_wrapper.models import Building, Response
|
|
6
|
+
|
|
7
|
+
from ._base import AsyncResource, Resource
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
class BuildingResource(Resource):
|
|
11
|
+
def list(self, property_id: int) -> Response:
|
|
12
|
+
"""List buildings belonging to a property."""
|
|
13
|
+
return self._client._request("GET", f"property/{property_id}/building/list", response_type=Response)
|
|
14
|
+
|
|
15
|
+
def get(self, building_id: int) -> Building:
|
|
16
|
+
"""Get details for a specific building."""
|
|
17
|
+
return self._client._request("GET", f"building/{building_id}", response_type=Building)
|
|
18
|
+
|
|
19
|
+
def create(self, property_id: int, building_data: Building) -> Response:
|
|
20
|
+
"""Create a new building under a property."""
|
|
21
|
+
return self._client._request(
|
|
22
|
+
"POST", f"property/{property_id}/building", data=building_data, response_type=Response
|
|
23
|
+
)
|
|
24
|
+
|
|
25
|
+
def update(self, building_id: int, building_data: Building) -> Response:
|
|
26
|
+
"""Update an existing building."""
|
|
27
|
+
return self._client._request("PUT", f"building/{building_id}", data=building_data, response_type=Response)
|
|
28
|
+
|
|
29
|
+
def delete(self, building_id: int) -> Response:
|
|
30
|
+
"""Delete a building (and all of its meters)."""
|
|
31
|
+
return self._client._request("DELETE", f"building/{building_id}", response_type=Response)
|
|
32
|
+
|
|
33
|
+
def list_parents(self, building_id: int) -> Response:
|
|
34
|
+
"""List parent properties connected to a building."""
|
|
35
|
+
return self._client._request("GET", f"building/{building_id}/property/list", response_type=Response)
|
|
36
|
+
|
|
37
|
+
def associate(self, property_id: int, building_id: int) -> Response:
|
|
38
|
+
"""Associate an existing building with a property (both must already be shared)."""
|
|
39
|
+
return self._client._request(
|
|
40
|
+
"POST",
|
|
41
|
+
f"association/property/{property_id}/building/{building_id}",
|
|
42
|
+
response_type=Response,
|
|
43
|
+
)
|
|
44
|
+
|
|
45
|
+
def disassociate(self, property_id: int, building_id: int) -> Response:
|
|
46
|
+
"""Remove the association between a building and a property."""
|
|
47
|
+
return self._client._request(
|
|
48
|
+
"DELETE",
|
|
49
|
+
f"association/property/{property_id}/building/{building_id}",
|
|
50
|
+
response_type=Response,
|
|
51
|
+
)
|
|
52
|
+
|
|
53
|
+
|
|
54
|
+
class AsyncBuildingResource(AsyncResource):
|
|
55
|
+
async def list(self, property_id: int) -> Response:
|
|
56
|
+
return await self._client._arequest("GET", f"property/{property_id}/building/list", response_type=Response)
|
|
57
|
+
|
|
58
|
+
async def get(self, building_id: int) -> Building:
|
|
59
|
+
return await self._client._arequest("GET", f"building/{building_id}", response_type=Building)
|
|
60
|
+
|
|
61
|
+
async def create(self, property_id: int, building_data: Building) -> Response:
|
|
62
|
+
return await self._client._arequest(
|
|
63
|
+
"POST", f"property/{property_id}/building", data=building_data, response_type=Response
|
|
64
|
+
)
|
|
65
|
+
|
|
66
|
+
async def update(self, building_id: int, building_data: Building) -> Response:
|
|
67
|
+
return await self._client._arequest(
|
|
68
|
+
"PUT", f"building/{building_id}", data=building_data, response_type=Response
|
|
69
|
+
)
|
|
70
|
+
|
|
71
|
+
async def delete(self, building_id: int) -> Response:
|
|
72
|
+
return await self._client._arequest("DELETE", f"building/{building_id}", response_type=Response)
|
|
73
|
+
|
|
74
|
+
async def list_parents(self, building_id: int) -> Response:
|
|
75
|
+
return await self._client._arequest("GET", f"building/{building_id}/property/list", response_type=Response)
|
|
76
|
+
|
|
77
|
+
async def associate(self, property_id: int, building_id: int) -> Response:
|
|
78
|
+
return await self._client._arequest(
|
|
79
|
+
"POST",
|
|
80
|
+
f"association/property/{property_id}/building/{building_id}",
|
|
81
|
+
response_type=Response,
|
|
82
|
+
)
|
|
83
|
+
|
|
84
|
+
async def disassociate(self, property_id: int, building_id: int) -> Response:
|
|
85
|
+
return await self._client._arequest(
|
|
86
|
+
"DELETE",
|
|
87
|
+
f"association/property/{property_id}/building/{building_id}",
|
|
88
|
+
response_type=Response,
|
|
89
|
+
)
|