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.
Files changed (654) hide show
  1. epa_pm_api_wrapper/__init__.py +30 -0
  2. epa_pm_api_wrapper/__main__.py +4 -0
  3. epa_pm_api_wrapper/cli.py +413 -0
  4. epa_pm_api_wrapper/client.py +507 -0
  5. epa_pm_api_wrapper/exceptions.py +67 -0
  6. epa_pm_api_wrapper/models/__init__.py +1451 -0
  7. epa_pm_api_wrapper/models/accept_reject_type.py +12 -0
  8. epa_pm_api_wrapper/models/account.py +15 -0
  9. epa_pm_api_wrapper/models/account_info.py +58 -0
  10. epa_pm_api_wrapper/models/account_type.py +122 -0
  11. epa_pm_api_wrapper/models/account_type_language_preference.py +9 -0
  12. epa_pm_api_wrapper/models/additional_identifier.py +58 -0
  13. epa_pm_api_wrapper/models/additional_identifier_type.py +60 -0
  14. epa_pm_api_wrapper/models/additional_identifier_type_group.py +10 -0
  15. epa_pm_api_wrapper/models/additional_identifier_types.py +19 -0
  16. epa_pm_api_wrapper/models/additional_identifiers.py +19 -0
  17. epa_pm_api_wrapper/models/address_type.py +84 -0
  18. epa_pm_api_wrapper/models/address_type_state.py +159 -0
  19. epa_pm_api_wrapper/models/adult_education.py +17 -0
  20. epa_pm_api_wrapper/models/agency_type.py +41 -0
  21. epa_pm_api_wrapper/models/agency_type_country.py +242 -0
  22. epa_pm_api_wrapper/models/alerts.py +16 -0
  23. epa_pm_api_wrapper/models/alerts_type.py +47 -0
  24. epa_pm_api_wrapper/models/alerts_type_alert.py +29 -0
  25. epa_pm_api_wrapper/models/all_energy_meters_type.py +32 -0
  26. epa_pm_api_wrapper/models/all_meter_types.py +130 -0
  27. epa_pm_api_wrapper/models/ambulatory_surgical_center.py +16 -0
  28. epa_pm_api_wrapper/models/amount_of_laundry_processed_annually.py +17 -0
  29. epa_pm_api_wrapper/models/amount_of_laundry_processed_annually_type.py +28 -0
  30. epa_pm_api_wrapper/models/amount_of_laundry_processed_annually_units_type.py +9 -0
  31. epa_pm_api_wrapper/models/annual_research_expenditure.py +16 -0
  32. epa_pm_api_wrapper/models/annual_research_expenditure_type.py +22 -0
  33. epa_pm_api_wrapper/models/annual_research_expenditure_type_value.py +10 -0
  34. epa_pm_api_wrapper/models/aquarium.py +17 -0
  35. epa_pm_api_wrapper/models/area_of_all_walk_in_refrigeration_units.py +19 -0
  36. epa_pm_api_wrapper/models/average_effluent_biological_oxygen_demand.py +16 -0
  37. epa_pm_api_wrapper/models/average_influent_biological_oxygen_demand.py +16 -0
  38. epa_pm_api_wrapper/models/average_number_of_residents.py +15 -0
  39. epa_pm_api_wrapper/models/average_number_of_vehicles_in_inventory.py +16 -0
  40. epa_pm_api_wrapper/models/bank_branch.py +16 -0
  41. epa_pm_api_wrapper/models/bank_branch_type.py +35 -0
  42. epa_pm_api_wrapper/models/bank_branch_type_use_details.py +58 -0
  43. epa_pm_api_wrapper/models/bar_nightclub.py +17 -0
  44. epa_pm_api_wrapper/models/barracks.py +17 -0
  45. epa_pm_api_wrapper/models/barracks_type.py +35 -0
  46. epa_pm_api_wrapper/models/barracks_type_use_details.py +58 -0
  47. epa_pm_api_wrapper/models/baseline_and_target.py +16 -0
  48. epa_pm_api_wrapper/models/baseline_and_target_type.py +27 -0
  49. epa_pm_api_wrapper/models/baseline_type.py +41 -0
  50. epa_pm_api_wrapper/models/billboard_metric_setting.py +21 -0
  51. epa_pm_api_wrapper/models/billboard_metric_type.py +33 -0
  52. epa_pm_api_wrapper/models/billboard_metrics.py +11 -0
  53. epa_pm_api_wrapper/models/billboard_metrics_type.py +26 -0
  54. epa_pm_api_wrapper/models/bowling_alley.py +40 -0
  55. epa_pm_api_wrapper/models/bowling_alley_use_details.py +58 -0
  56. epa_pm_api_wrapper/models/building.py +11 -0
  57. epa_pm_api_wrapper/models/casino.py +16 -0
  58. epa_pm_api_wrapper/models/category_type.py +17 -0
  59. epa_pm_api_wrapper/models/cegep.py +15 -0
  60. epa_pm_api_wrapper/models/cegep_type.py +35 -0
  61. epa_pm_api_wrapper/models/cegep_type_use_details.py +131 -0
  62. epa_pm_api_wrapper/models/ceiling_height.py +15 -0
  63. epa_pm_api_wrapper/models/ceiling_height_units_type.py +27 -0
  64. epa_pm_api_wrapper/models/clear_height.py +16 -0
  65. epa_pm_api_wrapper/models/clear_height_units_type.py +26 -0
  66. epa_pm_api_wrapper/models/college_university.py +15 -0
  67. epa_pm_api_wrapper/models/college_university_type.py +37 -0
  68. epa_pm_api_wrapper/models/college_university_type_use_details.py +131 -0
  69. epa_pm_api_wrapper/models/common_entrance.py +16 -0
  70. epa_pm_api_wrapper/models/community_center_and_social_meeting_hall.py +46 -0
  71. epa_pm_api_wrapper/models/community_center_and_social_meeting_hall_use_details.py +58 -0
  72. epa_pm_api_wrapper/models/completely_enclosed_footage.py +15 -0
  73. epa_pm_api_wrapper/models/construction_status_type.py +9 -0
  74. epa_pm_api_wrapper/models/contact_type.py +70 -0
  75. epa_pm_api_wrapper/models/convenience_store_with_gas_station.py +19 -0
  76. epa_pm_api_wrapper/models/convenience_store_with_gas_station_type.py +37 -0
  77. epa_pm_api_wrapper/models/convenience_store_with_gas_station_type_use_details.py +140 -0
  78. epa_pm_api_wrapper/models/convenience_store_without_gas_station.py +19 -0
  79. epa_pm_api_wrapper/models/convenience_store_without_gas_station_type.py +37 -0
  80. epa_pm_api_wrapper/models/convenience_store_without_gas_station_type_use_details.py +140 -0
  81. epa_pm_api_wrapper/models/convention_center.py +16 -0
  82. epa_pm_api_wrapper/models/cooking_facilities.py +15 -0
  83. epa_pm_api_wrapper/models/cooking_located_onsite.py +16 -0
  84. epa_pm_api_wrapper/models/cooling_equipment_redundancy.py +15 -0
  85. epa_pm_api_wrapper/models/cooling_equipment_redundancy_type.py +22 -0
  86. epa_pm_api_wrapper/models/cooling_equipment_redundancy_type_value.py +12 -0
  87. epa_pm_api_wrapper/models/country_code.py +16 -0
  88. epa_pm_api_wrapper/models/country_list.py +493 -0
  89. epa_pm_api_wrapper/models/courthouse.py +16 -0
  90. epa_pm_api_wrapper/models/courthouse_type.py +35 -0
  91. epa_pm_api_wrapper/models/courthouse_type_use_details.py +58 -0
  92. epa_pm_api_wrapper/models/custom_field.py +109 -0
  93. epa_pm_api_wrapper/models/custom_field_list.py +20 -0
  94. epa_pm_api_wrapper/models/custom_field_list_custom_field.py +17 -0
  95. epa_pm_api_wrapper/models/custom_field_valid_characters.py +15 -0
  96. epa_pm_api_wrapper/models/custom_field_when_to_prompt.py +15 -0
  97. epa_pm_api_wrapper/models/custom_metric.py +49 -0
  98. epa_pm_api_wrapper/models/custom_units_type.py +19 -0
  99. epa_pm_api_wrapper/models/custom_use.py +15 -0
  100. epa_pm_api_wrapper/models/custom_use_detail1.py +15 -0
  101. epa_pm_api_wrapper/models/custom_use_detail2.py +15 -0
  102. epa_pm_api_wrapper/models/custom_use_details_type.py +50 -0
  103. epa_pm_api_wrapper/models/custom_use_details_type_data_type.py +8 -0
  104. epa_pm_api_wrapper/models/custom_use_type.py +35 -0
  105. epa_pm_api_wrapper/models/custom_use_type_use_details.py +27 -0
  106. epa_pm_api_wrapper/models/customer.py +77 -0
  107. epa_pm_api_wrapper/models/customer_language_preference.py +9 -0
  108. epa_pm_api_wrapper/models/data_center.py +17 -0
  109. epa_pm_api_wrapper/models/data_center_type.py +35 -0
  110. epa_pm_api_wrapper/models/data_center_type_use_details.py +50 -0
  111. epa_pm_api_wrapper/models/data_exchange_settings.py +37 -0
  112. epa_pm_api_wrapper/models/data_exchange_settings_supported_meter_types.py +20 -0
  113. epa_pm_api_wrapper/models/data_exchange_settings_terms_of_use.py +40 -0
  114. epa_pm_api_wrapper/models/data_request.py +88 -0
  115. epa_pm_api_wrapper/models/data_request_locations.py +19 -0
  116. epa_pm_api_wrapper/models/data_request_locations_location.py +22 -0
  117. epa_pm_api_wrapper/models/data_request_requester_details.py +32 -0
  118. epa_pm_api_wrapper/models/data_request_status_type.py +13 -0
  119. epa_pm_api_wrapper/models/data_response.py +47 -0
  120. epa_pm_api_wrapper/models/data_response_properties.py +20 -0
  121. epa_pm_api_wrapper/models/data_type.py +9 -0
  122. epa_pm_api_wrapper/models/delivery_facility.py +16 -0
  123. epa_pm_api_wrapper/models/demand_tracking_type.py +35 -0
  124. epa_pm_api_wrapper/models/design.py +15 -0
  125. epa_pm_api_wrapper/models/design_base_type.py +83 -0
  126. epa_pm_api_wrapper/models/design_base_type_estimated_energy_list.py +17 -0
  127. epa_pm_api_wrapper/models/design_base_type_property_uses.py +709 -0
  128. epa_pm_api_wrapper/models/design_base_type_target.py +34 -0
  129. epa_pm_api_wrapper/models/design_unit_of_measure.py +37 -0
  130. epa_pm_api_wrapper/models/detail_type.py +22 -0
  131. epa_pm_api_wrapper/models/details_types.py +20 -0
  132. epa_pm_api_wrapper/models/disposal_destination_type.py +60 -0
  133. epa_pm_api_wrapper/models/distribution_center.py +17 -0
  134. epa_pm_api_wrapper/models/distribution_center_type.py +37 -0
  135. epa_pm_api_wrapper/models/distribution_center_type_use_details.py +76 -0
  136. epa_pm_api_wrapper/models/drinking_water_treatment_and_distribution.py +18 -0
  137. epa_pm_api_wrapper/models/drinking_water_treatment_and_distribution_type.py +37 -0
  138. epa_pm_api_wrapper/models/drinking_water_treatment_and_distribution_type_use_details.py +18 -0
  139. epa_pm_api_wrapper/models/e_grid_subregion.py +38 -0
  140. epa_pm_api_wrapper/models/e_grid_subregion_country.py +242 -0
  141. epa_pm_api_wrapper/models/e_grid_subregion_list.py +19 -0
  142. epa_pm_api_wrapper/models/edu.py +64 -0
  143. epa_pm_api_wrapper/models/edu_list.py +18 -0
  144. epa_pm_api_wrapper/models/electric_vehicle_charging_station.py +15 -0
  145. epa_pm_api_wrapper/models/empty_string.py +7 -0
  146. epa_pm_api_wrapper/models/empty_type.py +7 -0
  147. epa_pm_api_wrapper/models/enclosed_floor_area.py +15 -0
  148. epa_pm_api_wrapper/models/enclosed_mall.py +16 -0
  149. epa_pm_api_wrapper/models/energy_meter_assoc_and_config_type.py +25 -0
  150. epa_pm_api_wrapper/models/energy_performance_project.py +11 -0
  151. epa_pm_api_wrapper/models/energy_performance_project_type.py +136 -0
  152. epa_pm_api_wrapper/models/energy_power_station.py +20 -0
  153. epa_pm_api_wrapper/models/energy_uom_type.py +11 -0
  154. epa_pm_api_wrapper/models/enrollment.py +11 -0
  155. epa_pm_api_wrapper/models/error_type.py +29 -0
  156. epa_pm_api_wrapper/models/errors_type.py +25 -0
  157. epa_pm_api_wrapper/models/estimated_energy_list_type.py +19 -0
  158. epa_pm_api_wrapper/models/estimated_energy_type.py +58 -0
  159. epa_pm_api_wrapper/models/estimates_applied.py +15 -0
  160. epa_pm_api_wrapper/models/ev_charging_station_type.py +37 -0
  161. epa_pm_api_wrapper/models/ev_charging_station_type_use_details.py +41 -0
  162. epa_pm_api_wrapper/models/evaluation_period_type.py +35 -0
  163. epa_pm_api_wrapper/models/exterior_entrance_to_the_public.py +15 -0
  164. epa_pm_api_wrapper/models/fast_food_restaurant.py +17 -0
  165. epa_pm_api_wrapper/models/fast_food_restaurant_type.py +37 -0
  166. epa_pm_api_wrapper/models/fast_food_restaurant_type_use_details.py +84 -0
  167. epa_pm_api_wrapper/models/federal_agencies.py +19 -0
  168. epa_pm_api_wrapper/models/financial_office.py +16 -0
  169. epa_pm_api_wrapper/models/financial_office_type.py +35 -0
  170. epa_pm_api_wrapper/models/financial_office_type_use_details.py +58 -0
  171. epa_pm_api_wrapper/models/fire_station.py +16 -0
  172. epa_pm_api_wrapper/models/fire_station_type.py +35 -0
  173. epa_pm_api_wrapper/models/fire_station_type_use_details.py +92 -0
  174. epa_pm_api_wrapper/models/fitness_center_health_club_gym.py +42 -0
  175. epa_pm_api_wrapper/models/fitness_center_health_club_gym_use_details.py +58 -0
  176. epa_pm_api_wrapper/models/fixed_film_trickle_filtration_process.py +15 -0
  177. epa_pm_api_wrapper/models/floor_area_type_base.py +23 -0
  178. epa_pm_api_wrapper/models/food_sales.py +17 -0
  179. epa_pm_api_wrapper/models/food_sales_type.py +35 -0
  180. epa_pm_api_wrapper/models/food_sales_type_use_details.py +114 -0
  181. epa_pm_api_wrapper/models/food_service.py +17 -0
  182. epa_pm_api_wrapper/models/full_service_spa_floor_area.py +15 -0
  183. epa_pm_api_wrapper/models/generation_location_type.py +41 -0
  184. epa_pm_api_wrapper/models/government_subsidized_housing.py +16 -0
  185. epa_pm_api_wrapper/models/grant_dollars.py +11 -0
  186. epa_pm_api_wrapper/models/green_power_fuel_source_enum.py +13 -0
  187. epa_pm_api_wrapper/models/green_power_type_enum.py +15 -0
  188. epa_pm_api_wrapper/models/gross_floor_area_hotel_conference_space.py +18 -0
  189. epa_pm_api_wrapper/models/gross_floor_area_that_is_exhibit_space.py +19 -0
  190. epa_pm_api_wrapper/models/gross_floor_area_type.py +24 -0
  191. epa_pm_api_wrapper/models/gross_floor_area_units_type.py +8 -0
  192. epa_pm_api_wrapper/models/gross_floor_area_used_for_food_preparation.py +19 -0
  193. epa_pm_api_wrapper/models/gym_center_floor_area.py +15 -0
  194. epa_pm_api_wrapper/models/gymnasium_floor_area.py +15 -0
  195. epa_pm_api_wrapper/models/has_computer_lab.py +15 -0
  196. epa_pm_api_wrapper/models/has_dining_hall.py +15 -0
  197. epa_pm_api_wrapper/models/has_laboratory.py +15 -0
  198. epa_pm_api_wrapper/models/hey.py +11 -0
  199. epa_pm_api_wrapper/models/hey_type.py +29 -0
  200. epa_pm_api_wrapper/models/hey_type_meter.py +35 -0
  201. epa_pm_api_wrapper/models/hey_type_meter_meter_data.py +22 -0
  202. epa_pm_api_wrapper/models/hey_type_property_info.py +35 -0
  203. epa_pm_api_wrapper/models/hierarchy.py +16 -0
  204. epa_pm_api_wrapper/models/hierarchy_type.py +84 -0
  205. epa_pm_api_wrapper/models/highest_award_level.py +17 -0
  206. epa_pm_api_wrapper/models/highest_award_level_type.py +20 -0
  207. epa_pm_api_wrapper/models/highest_award_level_type_value.py +11 -0
  208. epa_pm_api_wrapper/models/hospital.py +22 -0
  209. epa_pm_api_wrapper/models/hospital_type.py +35 -0
  210. epa_pm_api_wrapper/models/hospital_type_use_details.py +132 -0
  211. epa_pm_api_wrapper/models/hotel.py +17 -0
  212. epa_pm_api_wrapper/models/hotel_type.py +41 -0
  213. epa_pm_api_wrapper/models/hotel_type_use_details.py +140 -0
  214. epa_pm_api_wrapper/models/hours_per_day_guests_onsite.py +16 -0
  215. epa_pm_api_wrapper/models/hours_per_day_guests_onsite_type.py +22 -0
  216. epa_pm_api_wrapper/models/hours_per_day_guests_onsite_type_value.py +9 -0
  217. epa_pm_api_wrapper/models/ice_curling_rink.py +27 -0
  218. epa_pm_api_wrapper/models/ice_curling_rink_type.py +35 -0
  219. epa_pm_api_wrapper/models/ice_curling_rink_type_use_details.py +78 -0
  220. epa_pm_api_wrapper/models/ice_events.py +15 -0
  221. epa_pm_api_wrapper/models/individual_meter.py +86 -0
  222. epa_pm_api_wrapper/models/indoor_arena.py +17 -0
  223. epa_pm_api_wrapper/models/indoor_arena_type.py +35 -0
  224. epa_pm_api_wrapper/models/indoor_arena_type_use_details.py +104 -0
  225. epa_pm_api_wrapper/models/international_weather_station_list.py +26 -0
  226. epa_pm_api_wrapper/models/irrigation_area_type.py +28 -0
  227. epa_pm_api_wrapper/models/irrigation_area_type_base.py +30 -0
  228. epa_pm_api_wrapper/models/irrigation_area_units_type.py +10 -0
  229. epa_pm_api_wrapper/models/is_high_school.py +16 -0
  230. epa_pm_api_wrapper/models/is_tertiary_care.py +17 -0
  231. epa_pm_api_wrapper/models/it_energy_configuration_type.py +20 -0
  232. epa_pm_api_wrapper/models/it_energy_configuration_type_value.py +14 -0
  233. epa_pm_api_wrapper/models/it_energy_meter_configuration.py +16 -0
  234. epa_pm_api_wrapper/models/k12_school.py +16 -0
  235. epa_pm_api_wrapper/models/k12_school_type.py +35 -0
  236. epa_pm_api_wrapper/models/k12_school_type_use_details.py +126 -0
  237. epa_pm_api_wrapper/models/laboratory.py +17 -0
  238. epa_pm_api_wrapper/models/laundry_facility.py +16 -0
  239. epa_pm_api_wrapper/models/length_of_all_commercial_kitchen_hoods.py +19 -0
  240. epa_pm_api_wrapper/models/length_of_all_open_closed_refrigeration_units.py +21 -0
  241. epa_pm_api_wrapper/models/length_of_use_detail_type.py +26 -0
  242. epa_pm_api_wrapper/models/length_units_type.py +8 -0
  243. epa_pm_api_wrapper/models/library.py +17 -0
  244. epa_pm_api_wrapper/models/library_type.py +35 -0
  245. epa_pm_api_wrapper/models/library_type_use_details.py +58 -0
  246. epa_pm_api_wrapper/models/license.py +60 -0
  247. epa_pm_api_wrapper/models/license_list.py +19 -0
  248. epa_pm_api_wrapper/models/licensed_bed_capacity.py +19 -0
  249. epa_pm_api_wrapper/models/lifestyle_center.py +18 -0
  250. epa_pm_api_wrapper/models/link_type.py +52 -0
  251. epa_pm_api_wrapper/models/links_type.py +19 -0
  252. epa_pm_api_wrapper/models/log.py +11 -0
  253. epa_pm_api_wrapper/models/log_type.py +79 -0
  254. epa_pm_api_wrapper/models/mailing_center_post_office.py +16 -0
  255. epa_pm_api_wrapper/models/mailing_center_post_office_type.py +37 -0
  256. epa_pm_api_wrapper/models/mailing_center_post_office_type_use_details.py +74 -0
  257. epa_pm_api_wrapper/models/manufacturing_industrial_plant.py +17 -0
  258. epa_pm_api_wrapper/models/manufacturing_industrial_plant_type.py +37 -0
  259. epa_pm_api_wrapper/models/manufacturing_industrial_plant_type_use_details.py +49 -0
  260. epa_pm_api_wrapper/models/mapping.py +11 -0
  261. epa_pm_api_wrapper/models/mapping_type.py +23 -0
  262. epa_pm_api_wrapper/models/maximum_number_of_floors.py +15 -0
  263. epa_pm_api_wrapper/models/maximum_resident_capacity.py +15 -0
  264. epa_pm_api_wrapper/models/medical_office.py +16 -0
  265. epa_pm_api_wrapper/models/medical_office_type.py +35 -0
  266. epa_pm_api_wrapper/models/medical_office_type_use_details.py +82 -0
  267. epa_pm_api_wrapper/models/meter.py +11 -0
  268. epa_pm_api_wrapper/models/meter_category_type.py +9 -0
  269. epa_pm_api_wrapper/models/meter_consumption.py +15 -0
  270. epa_pm_api_wrapper/models/meter_consumption_type.py +110 -0
  271. epa_pm_api_wrapper/models/meter_data.py +11 -0
  272. epa_pm_api_wrapper/models/meter_data_type.py +41 -0
  273. epa_pm_api_wrapper/models/meter_delivery.py +11 -0
  274. epa_pm_api_wrapper/models/meter_delivery_type.py +68 -0
  275. epa_pm_api_wrapper/models/meter_list_type.py +23 -0
  276. epa_pm_api_wrapper/models/meter_property_association_list.py +18 -0
  277. epa_pm_api_wrapper/models/meter_property_association_list_type.py +38 -0
  278. epa_pm_api_wrapper/models/meter_property_use_association_list.py +16 -0
  279. epa_pm_api_wrapper/models/meter_type.py +131 -0
  280. epa_pm_api_wrapper/models/meter_type_unit_of_measure.py +40 -0
  281. epa_pm_api_wrapper/models/metric.py +71 -0
  282. epa_pm_api_wrapper/models/months_in_use.py +15 -0
  283. epa_pm_api_wrapper/models/months_in_use_type.py +21 -0
  284. epa_pm_api_wrapper/models/months_main_indoor_ice_rink_in_use.py +15 -0
  285. epa_pm_api_wrapper/models/months_school_in_use_type.py +21 -0
  286. epa_pm_api_wrapper/models/movie_theater.py +15 -0
  287. epa_pm_api_wrapper/models/multifamily_housing.py +16 -0
  288. epa_pm_api_wrapper/models/multifamily_housing_type.py +37 -0
  289. epa_pm_api_wrapper/models/multifamily_housing_type_use_details.py +124 -0
  290. epa_pm_api_wrapper/models/museum.py +26 -0
  291. epa_pm_api_wrapper/models/museum_type.py +35 -0
  292. epa_pm_api_wrapper/models/museum_type_use_details.py +78 -0
  293. epa_pm_api_wrapper/models/non_refrigerated_warehouse.py +16 -0
  294. epa_pm_api_wrapper/models/non_refrigerated_warehouse_type.py +37 -0
  295. epa_pm_api_wrapper/models/non_refrigerated_warehouse_type_use_details.py +76 -0
  296. epa_pm_api_wrapper/models/notification_list.py +16 -0
  297. epa_pm_api_wrapper/models/notification_list_type.py +19 -0
  298. epa_pm_api_wrapper/models/notification_type.py +106 -0
  299. epa_pm_api_wrapper/models/number_of_annual_emergency_incidents.py +17 -0
  300. epa_pm_api_wrapper/models/number_of_bedrooms.py +15 -0
  301. epa_pm_api_wrapper/models/number_of_cash_registers.py +15 -0
  302. epa_pm_api_wrapper/models/number_of_commercial_refrigeration_units.py +16 -0
  303. epa_pm_api_wrapper/models/number_of_commercial_washing_machines.py +16 -0
  304. epa_pm_api_wrapper/models/number_of_computers.py +15 -0
  305. epa_pm_api_wrapper/models/number_of_concert_show_events_per_year.py +15 -0
  306. epa_pm_api_wrapper/models/number_of_cooking_equipment_units.py +15 -0
  307. epa_pm_api_wrapper/models/number_of_curling_sheets.py +16 -0
  308. epa_pm_api_wrapper/models/number_of_dc_fast_ev_charging_stations.py +15 -0
  309. epa_pm_api_wrapper/models/number_of_emergency_vehicles.py +16 -0
  310. epa_pm_api_wrapper/models/number_of_fteworkers.py +16 -0
  311. epa_pm_api_wrapper/models/number_of_full_time_students_enrolled_january_to_april.py +16 -0
  312. epa_pm_api_wrapper/models/number_of_full_time_students_enrolled_may_to_august.py +16 -0
  313. epa_pm_api_wrapper/models/number_of_full_time_students_enrolled_september_to_december.py +16 -0
  314. epa_pm_api_wrapper/models/number_of_guest_meals_served_per_year.py +15 -0
  315. epa_pm_api_wrapper/models/number_of_hotel_rooms.py +15 -0
  316. epa_pm_api_wrapper/models/number_of_indoor_ice_rinks.py +18 -0
  317. epa_pm_api_wrapper/models/number_of_laundry_hookups_in_all_units.py +16 -0
  318. epa_pm_api_wrapper/models/number_of_laundry_hookups_in_common_area.py +16 -0
  319. epa_pm_api_wrapper/models/number_of_letters_packages_per_year.py +17 -0
  320. epa_pm_api_wrapper/models/number_of_level_one_ev_charging_stations.py +15 -0
  321. epa_pm_api_wrapper/models/number_of_level_two_ev_charging_stations.py +15 -0
  322. epa_pm_api_wrapper/models/number_of_mri_machines.py +15 -0
  323. epa_pm_api_wrapper/models/number_of_open_closed_refrigeration_units.py +27 -0
  324. epa_pm_api_wrapper/models/number_of_paint_bays.py +16 -0
  325. epa_pm_api_wrapper/models/number_of_people.py +15 -0
  326. epa_pm_api_wrapper/models/number_of_repair_bays.py +16 -0
  327. epa_pm_api_wrapper/models/number_of_residential_lift_systems.py +15 -0
  328. epa_pm_api_wrapper/models/number_of_residential_living_units.py +20 -0
  329. epa_pm_api_wrapper/models/number_of_residential_living_units_high_rise_setting.py +18 -0
  330. epa_pm_api_wrapper/models/number_of_residential_living_units_low_rise_setting.py +18 -0
  331. epa_pm_api_wrapper/models/number_of_residential_living_units_mid_rise_setting.py +18 -0
  332. epa_pm_api_wrapper/models/number_of_residential_washing_machines.py +15 -0
  333. epa_pm_api_wrapper/models/number_of_rooms.py +16 -0
  334. epa_pm_api_wrapper/models/number_of_special_other_events_per_year.py +16 -0
  335. epa_pm_api_wrapper/models/number_of_sporting_events_per_year.py +15 -0
  336. epa_pm_api_wrapper/models/number_of_staffed_beds.py +15 -0
  337. epa_pm_api_wrapper/models/number_of_sterilization_units.py +15 -0
  338. epa_pm_api_wrapper/models/number_of_surgical_operating_beds.py +16 -0
  339. epa_pm_api_wrapper/models/number_of_walk_in_refrigeration_units.py +16 -0
  340. epa_pm_api_wrapper/models/number_of_warming_heating_equipment_units.py +15 -0
  341. epa_pm_api_wrapper/models/number_of_weekdays_open.py +17 -0
  342. epa_pm_api_wrapper/models/number_of_weekdays_type.py +21 -0
  343. epa_pm_api_wrapper/models/number_of_weekly_ice_resurfacing_for_all_rinks.py +23 -0
  344. epa_pm_api_wrapper/models/number_of_weekly_ice_resurfacing_type.py +20 -0
  345. epa_pm_api_wrapper/models/number_of_workers.py +16 -0
  346. epa_pm_api_wrapper/models/nutrient_removal.py +16 -0
  347. epa_pm_api_wrapper/models/occupancy_type.py +27 -0
  348. epa_pm_api_wrapper/models/office.py +16 -0
  349. epa_pm_api_wrapper/models/office_type.py +35 -0
  350. epa_pm_api_wrapper/models/office_type_use_details.py +58 -0
  351. epa_pm_api_wrapper/models/offsite_green_power_purchase.py +11 -0
  352. epa_pm_api_wrapper/models/offsite_green_power_purchase_type.py +224 -0
  353. epa_pm_api_wrapper/models/offsite_green_power_purchase_type_amount_purchased.py +31 -0
  354. epa_pm_api_wrapper/models/offsite_green_power_purchase_type_amount_purchased_percentage.py +46 -0
  355. epa_pm_api_wrapper/models/offsite_green_power_purchase_type_amount_purchased_percentage_meters.py +21 -0
  356. epa_pm_api_wrapper/models/offsite_green_power_purchase_type_amount_purchased_quantity.py +31 -0
  357. epa_pm_api_wrapper/models/offsite_green_power_purchase_type_cost.py +31 -0
  358. epa_pm_api_wrapper/models/offsite_green_power_purchase_type_fuel_sources.py +22 -0
  359. epa_pm_api_wrapper/models/offsite_green_power_purchase_type_fuel_sources_fuel_source.py +35 -0
  360. epa_pm_api_wrapper/models/offsite_green_power_purchase_type_rated_capacity.py +31 -0
  361. epa_pm_api_wrapper/models/offsite_green_power_purchase_type_renewable_generation_technologies.py +21 -0
  362. epa_pm_api_wrapper/models/on_site_laundry_facility.py +15 -0
  363. epa_pm_api_wrapper/models/onsite_laundry_type.py +20 -0
  364. epa_pm_api_wrapper/models/onsite_laundry_type_value.py +10 -0
  365. epa_pm_api_wrapper/models/onsite_renewable_detail.py +11 -0
  366. epa_pm_api_wrapper/models/onsite_renewable_detail_type.py +60 -0
  367. epa_pm_api_wrapper/models/onsite_renewable_details.py +28 -0
  368. epa_pm_api_wrapper/models/onsite_renewable_optional_info.py +13 -0
  369. epa_pm_api_wrapper/models/onsite_renewable_optional_info_type.py +134 -0
  370. epa_pm_api_wrapper/models/onsite_renewable_optional_info_type_rated_capacity.py +31 -0
  371. epa_pm_api_wrapper/models/onsite_renewable_optional_info_type_renewable_generation_technologies.py +21 -0
  372. epa_pm_api_wrapper/models/onsite_usage_detail_type.py +70 -0
  373. epa_pm_api_wrapper/models/open_footage.py +15 -0
  374. epa_pm_api_wrapper/models/open_on_weekends.py +16 -0
  375. epa_pm_api_wrapper/models/optional_floor_area_type.py +19 -0
  376. epa_pm_api_wrapper/models/organization_type.py +77 -0
  377. epa_pm_api_wrapper/models/other.py +16 -0
  378. epa_pm_api_wrapper/models/other_education.py +18 -0
  379. epa_pm_api_wrapper/models/other_entertainment_public_assembly.py +17 -0
  380. epa_pm_api_wrapper/models/other_lodging_residential.py +19 -0
  381. epa_pm_api_wrapper/models/other_mall.py +17 -0
  382. epa_pm_api_wrapper/models/other_public_services.py +21 -0
  383. epa_pm_api_wrapper/models/other_recreation.py +16 -0
  384. epa_pm_api_wrapper/models/other_restaurant_bar.py +17 -0
  385. epa_pm_api_wrapper/models/other_services.py +16 -0
  386. epa_pm_api_wrapper/models/other_speciality_hospital.py +17 -0
  387. epa_pm_api_wrapper/models/other_stadium.py +16 -0
  388. epa_pm_api_wrapper/models/other_stadium_type.py +35 -0
  389. epa_pm_api_wrapper/models/other_stadium_type_use_details.py +104 -0
  390. epa_pm_api_wrapper/models/other_technology_science.py +16 -0
  391. epa_pm_api_wrapper/models/other_type.py +35 -0
  392. epa_pm_api_wrapper/models/other_type_use_details.py +42 -0
  393. epa_pm_api_wrapper/models/other_utility.py +16 -0
  394. epa_pm_api_wrapper/models/outpatient_rehabilitation_physical_therapy.py +16 -0
  395. epa_pm_api_wrapper/models/owned_by.py +16 -0
  396. epa_pm_api_wrapper/models/owned_by_type.py +20 -0
  397. epa_pm_api_wrapper/models/owned_by_type_value.py +9 -0
  398. epa_pm_api_wrapper/models/parking.py +15 -0
  399. epa_pm_api_wrapper/models/parking_type.py +35 -0
  400. epa_pm_api_wrapper/models/parking_type_use_details.py +40 -0
  401. epa_pm_api_wrapper/models/partially_enclosed_footage.py +16 -0
  402. epa_pm_api_wrapper/models/ped.py +26 -0
  403. epa_pm_api_wrapper/models/pending_accounts_type.py +58 -0
  404. epa_pm_api_wrapper/models/pending_list.py +15 -0
  405. epa_pm_api_wrapper/models/pending_list_type.py +53 -0
  406. epa_pm_api_wrapper/models/pending_meters_type.py +104 -0
  407. epa_pm_api_wrapper/models/pending_properties_type.py +77 -0
  408. epa_pm_api_wrapper/models/percent_cooled.py +16 -0
  409. epa_pm_api_wrapper/models/percent_cooled_type.py +20 -0
  410. epa_pm_api_wrapper/models/percent_cooled_type_value.py +17 -0
  411. epa_pm_api_wrapper/models/percent_heated.py +16 -0
  412. epa_pm_api_wrapper/models/percent_heated_type.py +20 -0
  413. epa_pm_api_wrapper/models/percent_heated_type_value.py +17 -0
  414. epa_pm_api_wrapper/models/percent_of_gross_floor_area_that_is_common_space_only.py +16 -0
  415. epa_pm_api_wrapper/models/percent_of_lab_floor_area.py +16 -0
  416. epa_pm_api_wrapper/models/percent_office_cooled.py +11 -0
  417. epa_pm_api_wrapper/models/percent_office_cooled_type.py +20 -0
  418. epa_pm_api_wrapper/models/percent_office_cooled_type_value.py +9 -0
  419. epa_pm_api_wrapper/models/percent_office_heated.py +11 -0
  420. epa_pm_api_wrapper/models/percent_office_heated_type.py +20 -0
  421. epa_pm_api_wrapper/models/percent_office_heated_type_value.py +9 -0
  422. epa_pm_api_wrapper/models/percent_used_for_cold_storage.py +18 -0
  423. epa_pm_api_wrapper/models/performance_target_type.py +42 -0
  424. epa_pm_api_wrapper/models/performance_target_type_target_metric.py +10 -0
  425. epa_pm_api_wrapper/models/performance_target_type_target_value.py +107 -0
  426. epa_pm_api_wrapper/models/performing_arts.py +15 -0
  427. epa_pm_api_wrapper/models/period_type.py +8 -0
  428. epa_pm_api_wrapper/models/personal_services.py +17 -0
  429. epa_pm_api_wrapper/models/pgp.py +56 -0
  430. epa_pm_api_wrapper/models/pgp_list.py +18 -0
  431. epa_pm_api_wrapper/models/plant_data_type.py +28 -0
  432. epa_pm_api_wrapper/models/plant_data_type_value.py +71 -0
  433. epa_pm_api_wrapper/models/plant_design_flow_rate.py +16 -0
  434. epa_pm_api_wrapper/models/plant_design_flow_rate_type.py +22 -0
  435. epa_pm_api_wrapper/models/plant_design_flow_rate_units_type.py +8 -0
  436. epa_pm_api_wrapper/models/plant_type.py +17 -0
  437. epa_pm_api_wrapper/models/police_station.py +16 -0
  438. epa_pm_api_wrapper/models/pool_location.py +15 -0
  439. epa_pm_api_wrapper/models/pool_size.py +16 -0
  440. epa_pm_api_wrapper/models/pool_size_type.py +20 -0
  441. epa_pm_api_wrapper/models/pool_size_type_value.py +9 -0
  442. epa_pm_api_wrapper/models/pool_type.py +20 -0
  443. epa_pm_api_wrapper/models/pool_type_value.py +8 -0
  444. epa_pm_api_wrapper/models/precision_controls_for_temperature_and_humidity.py +16 -0
  445. epa_pm_api_wrapper/models/preschool_daycare.py +17 -0
  446. epa_pm_api_wrapper/models/preschool_daycare_type.py +35 -0
  447. epa_pm_api_wrapper/models/preschool_daycare_type_use_details.py +68 -0
  448. epa_pm_api_wrapper/models/primary_business_type.py +33 -0
  449. epa_pm_api_wrapper/models/primary_function_type.py +95 -0
  450. epa_pm_api_wrapper/models/prison.py +17 -0
  451. epa_pm_api_wrapper/models/professional_designation_list.py +23 -0
  452. epa_pm_api_wrapper/models/professional_designation_list_professional_designation.py +41 -0
  453. epa_pm_api_wrapper/models/property.py +11 -0
  454. epa_pm_api_wrapper/models/property_design_type.py +66 -0
  455. epa_pm_api_wrapper/models/property_metrics.py +15 -0
  456. epa_pm_api_wrapper/models/property_metrics_list.py +19 -0
  457. epa_pm_api_wrapper/models/property_metrics_type.py +58 -0
  458. epa_pm_api_wrapper/models/property_representation.py +59 -0
  459. epa_pm_api_wrapper/models/property_representation_property_representation_type.py +27 -0
  460. epa_pm_api_wrapper/models/property_type.py +192 -0
  461. epa_pm_api_wrapper/models/property_use.py +22 -0
  462. epa_pm_api_wrapper/models/race_track.py +16 -0
  463. epa_pm_api_wrapper/models/rated_capacity_uom_type.py +8 -0
  464. epa_pm_api_wrapper/models/rec_ownership_enum.py +10 -0
  465. epa_pm_api_wrapper/models/refrigerated_warehouse.py +17 -0
  466. epa_pm_api_wrapper/models/refrigerated_warehouse_type.py +37 -0
  467. epa_pm_api_wrapper/models/refrigerated_warehouse_type_use_details.py +66 -0
  468. epa_pm_api_wrapper/models/renewable_generation_technology_enum.py +11 -0
  469. epa_pm_api_wrapper/models/report.py +72 -0
  470. epa_pm_api_wrapper/models/report_error.py +53 -0
  471. epa_pm_api_wrapper/models/report_error_missing_metrics.py +21 -0
  472. epa_pm_api_wrapper/models/report_error_missing_metrics_property_missing_metric.py +43 -0
  473. epa_pm_api_wrapper/models/report_error_missing_metrics_property_missing_metric_metric.py +33 -0
  474. epa_pm_api_wrapper/models/report_metric_values_ws.py +57 -0
  475. epa_pm_api_wrapper/models/report_metrics.py +26 -0
  476. epa_pm_api_wrapper/models/report_metrics_group.py +36 -0
  477. epa_pm_api_wrapper/models/report_metrics_group_metrics.py +24 -0
  478. epa_pm_api_wrapper/models/report_metrics_group_metrics_metric.py +62 -0
  479. epa_pm_api_wrapper/models/report_properties.py +20 -0
  480. epa_pm_api_wrapper/models/report_status.py +11 -0
  481. epa_pm_api_wrapper/models/report_status_def.py +62 -0
  482. epa_pm_api_wrapper/models/report_status_type.py +33 -0
  483. epa_pm_api_wrapper/models/report_template.py +11 -0
  484. epa_pm_api_wrapper/models/report_template_type.py +63 -0
  485. epa_pm_api_wrapper/models/report_template_type_metrics.py +21 -0
  486. epa_pm_api_wrapper/models/report_type.py +17 -0
  487. epa_pm_api_wrapper/models/reporting_interval_type.py +15 -0
  488. epa_pm_api_wrapper/models/residence_hall_dormitory.py +16 -0
  489. epa_pm_api_wrapper/models/residence_hall_dormitory_type.py +37 -0
  490. epa_pm_api_wrapper/models/residence_hall_dormitory_type_use_details.py +58 -0
  491. epa_pm_api_wrapper/models/resident_population.py +16 -0
  492. epa_pm_api_wrapper/models/resident_population_type.py +20 -0
  493. epa_pm_api_wrapper/models/resident_population_type_value.py +12 -0
  494. epa_pm_api_wrapper/models/residential_care_facility.py +16 -0
  495. epa_pm_api_wrapper/models/residential_care_facility_type.py +37 -0
  496. epa_pm_api_wrapper/models/residential_care_facility_type_use_details.py +120 -0
  497. epa_pm_api_wrapper/models/response.py +11 -0
  498. epa_pm_api_wrapper/models/response_status.py +36 -0
  499. epa_pm_api_wrapper/models/response_status_errors.py +19 -0
  500. epa_pm_api_wrapper/models/response_type.py +59 -0
  501. epa_pm_api_wrapper/models/restaurant.py +20 -0
  502. epa_pm_api_wrapper/models/restaurant_type.py +35 -0
  503. epa_pm_api_wrapper/models/restaurant_type_use_details.py +84 -0
  504. epa_pm_api_wrapper/models/retail.py +17 -0
  505. epa_pm_api_wrapper/models/retail_type.py +35 -0
  506. epa_pm_api_wrapper/models/retail_type_use_details.py +130 -0
  507. epa_pm_api_wrapper/models/roller_rink.py +16 -0
  508. epa_pm_api_wrapper/models/school_district.py +15 -0
  509. epa_pm_api_wrapper/models/search_result_type.py +23 -0
  510. epa_pm_api_wrapper/models/search_results.py +15 -0
  511. epa_pm_api_wrapper/models/seating_capacity.py +16 -0
  512. epa_pm_api_wrapper/models/self_storage_facility.py +15 -0
  513. epa_pm_api_wrapper/models/self_storage_facility_type.py +37 -0
  514. epa_pm_api_wrapper/models/self_storage_facility_type_use_details.py +84 -0
  515. epa_pm_api_wrapper/models/send_data_response.py +43 -0
  516. epa_pm_api_wrapper/models/send_data_response_additional_email_addresses.py +17 -0
  517. epa_pm_api_wrapper/models/send_data_response_file_format.py +8 -0
  518. epa_pm_api_wrapper/models/senior_living_community.py +16 -0
  519. epa_pm_api_wrapper/models/senior_living_community_type.py +37 -0
  520. epa_pm_api_wrapper/models/senior_living_community_type_use_details.py +120 -0
  521. epa_pm_api_wrapper/models/share_level_type.py +12 -0
  522. epa_pm_api_wrapper/models/sharing_response.py +16 -0
  523. epa_pm_api_wrapper/models/sharing_response_type.py +34 -0
  524. epa_pm_api_wrapper/models/single_family_home.py +16 -0
  525. epa_pm_api_wrapper/models/single_family_home_type.py +35 -0
  526. epa_pm_api_wrapper/models/single_family_home_type_use_details.py +34 -0
  527. epa_pm_api_wrapper/models/single_store.py +15 -0
  528. epa_pm_api_wrapper/models/size_of_electronic_score_boards.py +15 -0
  529. epa_pm_api_wrapper/models/spectator_seating_capacity.py +16 -0
  530. epa_pm_api_wrapper/models/stadium_closed.py +17 -0
  531. epa_pm_api_wrapper/models/stadium_closed_type.py +35 -0
  532. epa_pm_api_wrapper/models/stadium_closed_type_use_details.py +104 -0
  533. epa_pm_api_wrapper/models/stadium_open.py +17 -0
  534. epa_pm_api_wrapper/models/stadium_open_type.py +35 -0
  535. epa_pm_api_wrapper/models/stadium_open_type_use_details.py +104 -0
  536. epa_pm_api_wrapper/models/state_code.py +159 -0
  537. epa_pm_api_wrapper/models/station.py +45 -0
  538. epa_pm_api_wrapper/models/status_type.py +8 -0
  539. epa_pm_api_wrapper/models/strip_mall.py +17 -0
  540. epa_pm_api_wrapper/models/student_seating_capacity.py +16 -0
  541. epa_pm_api_wrapper/models/supermarket.py +17 -0
  542. epa_pm_api_wrapper/models/supermarket_type.py +35 -0
  543. epa_pm_api_wrapper/models/supermarket_type_use_details.py +114 -0
  544. epa_pm_api_wrapper/models/supplemental_heating.py +15 -0
  545. epa_pm_api_wrapper/models/surgery_center_floor_area.py +16 -0
  546. epa_pm_api_wrapper/models/swimming_pool.py +15 -0
  547. epa_pm_api_wrapper/models/swimming_pool_type.py +35 -0
  548. epa_pm_api_wrapper/models/swimming_pool_type_use_details.py +34 -0
  549. epa_pm_api_wrapper/models/system_determined_string.py +7 -0
  550. epa_pm_api_wrapper/models/target_finder.py +11 -0
  551. epa_pm_api_wrapper/models/target_type_percentage_type.py +17 -0
  552. epa_pm_api_wrapper/models/target_type_percentage_values_type.py +107 -0
  553. epa_pm_api_wrapper/models/target_type_score_type.py +17 -0
  554. epa_pm_api_wrapper/models/target_type_score_values_type.py +106 -0
  555. epa_pm_api_wrapper/models/template_type.py +19 -0
  556. epa_pm_api_wrapper/models/template_type_value.py +15 -0
  557. epa_pm_api_wrapper/models/tenant_common_area_energy_type.py +21 -0
  558. epa_pm_api_wrapper/models/tenant_common_area_energy_use_information_type.py +31 -0
  559. epa_pm_api_wrapper/models/terminate_share_response_type.py +24 -0
  560. epa_pm_api_wrapper/models/terminate_sharing_response.py +16 -0
  561. epa_pm_api_wrapper/models/timeframe_type.py +103 -0
  562. epa_pm_api_wrapper/models/timeframe_type_baseline_period.py +18 -0
  563. epa_pm_api_wrapper/models/timeframe_type_compare_baseline_period.py +25 -0
  564. epa_pm_api_wrapper/models/timeframe_type_compare_current_period.py +25 -0
  565. epa_pm_api_wrapper/models/timeframe_type_current_period.py +18 -0
  566. epa_pm_api_wrapper/models/timeframe_type_current_vs_baseline.py +18 -0
  567. epa_pm_api_wrapper/models/timeframe_type_date_range.py +30 -0
  568. epa_pm_api_wrapper/models/timeframe_type_single_period.py +18 -0
  569. epa_pm_api_wrapper/models/timeframe_type_two_periods.py +24 -0
  570. epa_pm_api_wrapper/models/total_gross_floor_area.py +11 -0
  571. epa_pm_api_wrapper/models/total_ice_rink_surface_area_for_all_rinks.py +21 -0
  572. epa_pm_api_wrapper/models/transportation_terminal_station.py +16 -0
  573. epa_pm_api_wrapper/models/type_of_energy_star_partner.py +14 -0
  574. epa_pm_api_wrapper/models/type_of_meter.py +55 -0
  575. epa_pm_api_wrapper/models/type_of_waste_meter.py +122 -0
  576. epa_pm_api_wrapper/models/type_of_waste_meter_data_entry_method.py +18 -0
  577. epa_pm_api_wrapper/models/type_of_waste_meter_unit_of_measure.py +15 -0
  578. epa_pm_api_wrapper/models/un_auth_design_type.py +100 -0
  579. epa_pm_api_wrapper/models/un_auth_design_type_estimated_energy_list.py +17 -0
  580. epa_pm_api_wrapper/models/un_auth_design_type_property_uses.py +709 -0
  581. epa_pm_api_wrapper/models/un_auth_design_type_target.py +34 -0
  582. epa_pm_api_wrapper/models/ups_system_redundancy.py +16 -0
  583. epa_pm_api_wrapper/models/ups_system_redundancy_type.py +20 -0
  584. epa_pm_api_wrapper/models/ups_system_redundancy_type_value.py +12 -0
  585. epa_pm_api_wrapper/models/urgent_care_clinic_other_outpatient.py +17 -0
  586. epa_pm_api_wrapper/models/use_attribute_base.py +65 -0
  587. epa_pm_api_wrapper/models/use_attribute_base_default.py +9 -0
  588. epa_pm_api_wrapper/models/use_decimal_type.py +21 -0
  589. epa_pm_api_wrapper/models/use_details.py +1086 -0
  590. epa_pm_api_wrapper/models/use_integer_type.py +20 -0
  591. epa_pm_api_wrapper/models/use_string_type.py +19 -0
  592. epa_pm_api_wrapper/models/use_yes_no_type.py +20 -0
  593. epa_pm_api_wrapper/models/vehicle_dealership.py +16 -0
  594. epa_pm_api_wrapper/models/vehicle_dealership_type.py +37 -0
  595. epa_pm_api_wrapper/models/vehicle_dealership_type_use_details.py +84 -0
  596. epa_pm_api_wrapper/models/vehicle_repair_services.py +19 -0
  597. epa_pm_api_wrapper/models/vehicle_repair_services_type.py +37 -0
  598. epa_pm_api_wrapper/models/vehicle_repair_services_type_use_details.py +74 -0
  599. epa_pm_api_wrapper/models/verification.py +96 -0
  600. epa_pm_api_wrapper/models/veterinary_office.py +15 -0
  601. epa_pm_api_wrapper/models/vocational_school.py +16 -0
  602. epa_pm_api_wrapper/models/warning_type.py +29 -0
  603. epa_pm_api_wrapper/models/warnings_type.py +25 -0
  604. epa_pm_api_wrapper/models/waste_data.py +15 -0
  605. epa_pm_api_wrapper/models/waste_data_list.py +11 -0
  606. epa_pm_api_wrapper/models/waste_meter.py +11 -0
  607. epa_pm_api_wrapper/models/waste_meter_assoc_and_config_type.py +18 -0
  608. epa_pm_api_wrapper/models/waste_meter_data_type.py +32 -0
  609. epa_pm_api_wrapper/models/waste_meter_entry_type.py +113 -0
  610. epa_pm_api_wrapper/models/waste_meter_entry_type_average_percent_full.py +11 -0
  611. epa_pm_api_wrapper/models/waste_meter_type.py +81 -0
  612. epa_pm_api_wrapper/models/wastewater_treatment_plant.py +15 -0
  613. epa_pm_api_wrapper/models/wastewater_treatment_plant_type.py +37 -0
  614. epa_pm_api_wrapper/models/wastewater_treatment_plant_type_use_details.py +63 -0
  615. epa_pm_api_wrapper/models/water_meter_assoc_and_config_type.py +25 -0
  616. epa_pm_api_wrapper/models/weekly_building_occupied_hours.py +16 -0
  617. epa_pm_api_wrapper/models/weekly_operating_hours.py +19 -0
  618. epa_pm_api_wrapper/models/wholesale_club_supercenter.py +16 -0
  619. epa_pm_api_wrapper/models/wholesale_club_supercenter_type.py +37 -0
  620. epa_pm_api_wrapper/models/wholesale_club_supercenter_type_use_details.py +130 -0
  621. epa_pm_api_wrapper/models/worship_facility.py +19 -0
  622. epa_pm_api_wrapper/models/worship_facility_type.py +35 -0
  623. epa_pm_api_wrapper/models/worship_facility_type_use_details.py +102 -0
  624. epa_pm_api_wrapper/models/yes_no.py +8 -0
  625. epa_pm_api_wrapper/models/zoo.py +16 -0
  626. epa_pm_api_wrapper/py.typed +1 -0
  627. epa_pm_api_wrapper/resources/__init__.py +172 -0
  628. epa_pm_api_wrapper/resources/_base.py +22 -0
  629. epa_pm_api_wrapper/resources/account.py +37 -0
  630. epa_pm_api_wrapper/resources/association.py +145 -0
  631. epa_pm_api_wrapper/resources/building.py +89 -0
  632. epa_pm_api_wrapper/resources/consumption_data.py +142 -0
  633. epa_pm_api_wrapper/resources/custom_metric.py +91 -0
  634. epa_pm_api_wrapper/resources/customer.py +45 -0
  635. epa_pm_api_wrapper/resources/data_exchange.py +111 -0
  636. epa_pm_api_wrapper/resources/green_power.py +237 -0
  637. epa_pm_api_wrapper/resources/hey.py +22 -0
  638. epa_pm_api_wrapper/resources/hierarchy.py +59 -0
  639. epa_pm_api_wrapper/resources/identifier.py +92 -0
  640. epa_pm_api_wrapper/resources/meter.py +277 -0
  641. epa_pm_api_wrapper/resources/metrics.py +185 -0
  642. epa_pm_api_wrapper/resources/property.py +450 -0
  643. epa_pm_api_wrapper/resources/property_use.py +277 -0
  644. epa_pm_api_wrapper/resources/report.py +169 -0
  645. epa_pm_api_wrapper/resources/share.py +139 -0
  646. epa_pm_api_wrapper/resources/target_finder.py +34 -0
  647. epa_pm_api_wrapper/resources/verification.py +201 -0
  648. epa_pm_api_wrapper/resources/waste_data.py +124 -0
  649. epa_pm_api_wrapper/retry.py +219 -0
  650. epa_pm_api_wrapper-0.3.0.dist-info/METADATA +137 -0
  651. epa_pm_api_wrapper-0.3.0.dist-info/RECORD +654 -0
  652. epa_pm_api_wrapper-0.3.0.dist-info/WHEEL +4 -0
  653. epa_pm_api_wrapper-0.3.0.dist-info/entry_points.txt +2 -0
  654. epa_pm_api_wrapper-0.3.0.dist-info/licenses/LICENSE +21 -0
@@ -0,0 +1,30 @@
1
+ """Top-level package for EPA PM API Wrapper."""
2
+
3
+ from epa_pm_api_wrapper.client import EpaPmAsyncClient, EpaPmClient
4
+ from epa_pm_api_wrapper.exceptions import (
5
+ EpaErrorDetail,
6
+ EpaPmApiError,
7
+ EpaPmAuthError,
8
+ EpaPmError,
9
+ )
10
+ from epa_pm_api_wrapper.models import (
11
+ AcceptRejectType,
12
+ MeterConsumption,
13
+ MeterData,
14
+ SharingResponse,
15
+ )
16
+ from epa_pm_api_wrapper.retry import RetryConfig
17
+
18
+ __all__ = [
19
+ "AcceptRejectType",
20
+ "EpaErrorDetail",
21
+ "EpaPmApiError",
22
+ "EpaPmAsyncClient",
23
+ "EpaPmAuthError",
24
+ "EpaPmClient",
25
+ "EpaPmError",
26
+ "MeterConsumption",
27
+ "MeterData",
28
+ "RetryConfig",
29
+ "SharingResponse",
30
+ ]
@@ -0,0 +1,4 @@
1
+ from .cli import app
2
+
3
+ if __name__ == "__main__":
4
+ app()
@@ -0,0 +1,413 @@
1
+ """Console script for epa_pm_api_wrapper.
2
+
3
+ The CLI is intentionally a thin exploration tool — read-only commands for
4
+ the most common ad-hoc lookups (accounts, properties, meters, consumption,
5
+ catalogs). For programmatic use of the full ~70-endpoint surface, instantiate
6
+ :class:`EpaPmClient` directly.
7
+
8
+ Each command takes ``--username`` / ``--password`` / ``--test`` (with matching
9
+ ``EPA_PM_USERNAME`` / ``EPA_PM_PASSWORD`` / ``EPA_PM_TEST`` environment
10
+ variables, also picked up from a `.env` file in the working directory).
11
+ """
12
+
13
+ import typer
14
+ from dotenv import load_dotenv
15
+ from rich.console import Console
16
+ from rich.table import Table
17
+
18
+ from epa_pm_api_wrapper.client import EpaPmClient
19
+
20
+ # Load environment variables from .env file
21
+ load_dotenv()
22
+
23
+ app = typer.Typer()
24
+ console = Console()
25
+
26
+
27
+ def _client(username: str, password: str, test: bool) -> EpaPmClient:
28
+ return EpaPmClient(username=username, password=password, use_test_env=test)
29
+
30
+
31
+ _USERNAME = typer.Option(..., envvar="EPA_PM_USERNAME", help="EPA PM Username")
32
+ _PASSWORD = typer.Option(..., envvar="EPA_PM_PASSWORD", help="EPA PM Password", hide_input=True)
33
+ _TEST = typer.Option(False, "--test", envvar="EPA_PM_TEST", help="Use test environment")
34
+
35
+
36
+ @app.command()
37
+ def account(
38
+ username: str = _USERNAME,
39
+ password: str = _PASSWORD,
40
+ test: bool = _TEST,
41
+ ) -> None:
42
+ """Get account details."""
43
+ client = _client(username, password, test)
44
+ try:
45
+ acc = client.account.get()
46
+ console.print("[bold green]Account Details:[/bold green]")
47
+ console.print(f"ID: {acc.id}")
48
+ console.print(f"Username: {acc.username}")
49
+ console.print(f"Organization: {acc.organization.name}")
50
+ console.print(f"Primary Business: {acc.organization.primary_business}")
51
+ except Exception as e:
52
+ console.print(f"[bold red]Error:[/bold red] {e}")
53
+
54
+
55
+ @app.command("list-properties")
56
+ def list_properties(
57
+ account_id: int = typer.Argument(..., help="Account ID to list properties for"),
58
+ username: str = _USERNAME,
59
+ password: str = _PASSWORD,
60
+ test: bool = _TEST,
61
+ ) -> None:
62
+ """List all properties accessible under an account."""
63
+ client = _client(username, password, test)
64
+ try:
65
+ response = client.property.list(account_id)
66
+ if not response.links or not response.links.link:
67
+ console.print("[yellow]No properties found.[/yellow]")
68
+ return
69
+ table = Table(title=f"Properties for account {account_id}")
70
+ table.add_column("ID", style="cyan")
71
+ table.add_column("Name")
72
+ for link in response.links.link:
73
+ table.add_row(str(link.id), link.hint or "")
74
+ console.print(table)
75
+ except Exception as e:
76
+ console.print(f"[bold red]Error:[/bold red] {e}")
77
+
78
+
79
+ @app.command("get-property")
80
+ def get_property(
81
+ property_id: int,
82
+ username: str = _USERNAME,
83
+ password: str = _PASSWORD,
84
+ test: bool = _TEST,
85
+ ) -> None:
86
+ """Get property details."""
87
+ client = _client(username, password, test)
88
+ try:
89
+ prop = client.property.get(property_id)
90
+ console.print("[bold green]Property Details:[/bold green]")
91
+ console.print(f"ID: {property_id}")
92
+ console.print(f"Name: {prop.name}")
93
+ console.print(f"Primary Function: {prop.primary_function}")
94
+ if prop.address:
95
+ addr = prop.address
96
+ console.print(f"Address: {addr.address1}, {addr.city}, {addr.state} {addr.postal_code}")
97
+ else:
98
+ console.print("Address: N/A")
99
+ except Exception as e:
100
+ console.print(f"[bold red]Error:[/bold red] {e}")
101
+
102
+
103
+ @app.command("list-meters")
104
+ def list_meters(
105
+ property_id: int = typer.Argument(..., help="Property ID to list meters for"),
106
+ username: str = _USERNAME,
107
+ password: str = _PASSWORD,
108
+ test: bool = _TEST,
109
+ ) -> None:
110
+ """List meters on a property."""
111
+ client = _client(username, password, test)
112
+ try:
113
+ response = client.meter.list(property_id)
114
+ if not response.links or not response.links.link:
115
+ console.print("[yellow]No meters found.[/yellow]")
116
+ return
117
+ table = Table(title=f"Meters for property {property_id}")
118
+ table.add_column("ID", style="cyan")
119
+ table.add_column("Name")
120
+ for link in response.links.link:
121
+ table.add_row(str(link.id), link.hint or "")
122
+ console.print(table)
123
+ except Exception as e:
124
+ console.print(f"[bold red]Error:[/bold red] {e}")
125
+
126
+
127
+ @app.command("get-meter")
128
+ def get_meter(
129
+ meter_id: int,
130
+ username: str = _USERNAME,
131
+ password: str = _PASSWORD,
132
+ test: bool = _TEST,
133
+ ) -> None:
134
+ """Get meter details."""
135
+ client = _client(username, password, test)
136
+ try:
137
+ meter = client.meter.get(meter_id)
138
+ console.print("[bold green]Meter Details:[/bold green]")
139
+ console.print(f"ID: {meter.id}")
140
+ console.print(f"Name: {meter.name}")
141
+ console.print(f"Type: {meter.type_value}")
142
+ console.print(f"Unit: {meter.unit_of_measure}")
143
+ console.print(f"Metered: {meter.metered}")
144
+ console.print(f"In Use: {meter.in_use}")
145
+ except Exception as e:
146
+ console.print(f"[bold red]Error:[/bold red] {e}")
147
+
148
+
149
+ @app.command("get-consumption")
150
+ def get_consumption(
151
+ meter_id: int,
152
+ page: int = typer.Option(1, help="1-based page number (120 records per page)"),
153
+ start_date: str | None = typer.Option(None, help="ISO 8601 start date (YYYY-MM-DD)"),
154
+ end_date: str | None = typer.Option(None, help="ISO 8601 end date (YYYY-MM-DD)"),
155
+ username: str = _USERNAME,
156
+ password: str = _PASSWORD,
157
+ test: bool = _TEST,
158
+ ) -> None:
159
+ """Get consumption records for a meter."""
160
+ client = _client(username, password, test)
161
+ try:
162
+ data = client.consumption_data.get(meter_id, page=page, start_date=start_date, end_date=end_date)
163
+ records = data.meter_consumption or []
164
+ if not records:
165
+ console.print("[yellow]No consumption records in range.[/yellow]")
166
+ return
167
+ table = Table(title=f"Consumption for meter {meter_id} (page {page})")
168
+ table.add_column("ID", style="cyan")
169
+ table.add_column("Start Date")
170
+ table.add_column("End Date")
171
+ table.add_column("Usage", justify="right")
172
+ table.add_column("Estimated", justify="center")
173
+ for rec in records:
174
+ table.add_row(
175
+ str(rec.id),
176
+ str(rec.start_date) if rec.start_date else "",
177
+ str(rec.end_date) if rec.end_date else "",
178
+ str(rec.usage) if rec.usage is not None else "",
179
+ "yes" if rec.estimated_value else "no",
180
+ )
181
+ console.print(table)
182
+ except Exception as e:
183
+ console.print(f"[bold red]Error:[/bold red] {e}")
184
+
185
+
186
+ @app.command("list-customers")
187
+ def list_customers(
188
+ username: str = _USERNAME,
189
+ password: str = _PASSWORD,
190
+ test: bool = _TEST,
191
+ ) -> None:
192
+ """List customers connected to your account."""
193
+ client = _client(username, password, test)
194
+ try:
195
+ response = client.customer.list()
196
+ if not response.links or not response.links.link:
197
+ console.print("[yellow]No connected customers.[/yellow]")
198
+ return
199
+ table = Table(title="Connected customers")
200
+ table.add_column("ID", style="cyan")
201
+ table.add_column("Name / Hint")
202
+ for link in response.links.link:
203
+ table.add_row(str(link.id), link.hint or "")
204
+ console.print(table)
205
+ except Exception as e:
206
+ console.print(f"[bold red]Error:[/bold red] {e}")
207
+
208
+
209
+ @app.command("list-pending-shares")
210
+ def list_pending_shares(
211
+ username: str = _USERNAME,
212
+ password: str = _PASSWORD,
213
+ test: bool = _TEST,
214
+ ) -> None:
215
+ """List pending property and meter share requests."""
216
+ client = _client(username, password, test)
217
+ try:
218
+ prop_pending = client.share.pending_property_shares()
219
+ meter_pending = client.share.pending_meter_shares()
220
+ conn_pending = client.share.pending_connections()
221
+
222
+ console.print(f"[bold]Pending property shares:[/bold] {len(prop_pending.property)}")
223
+ console.print(f"[bold]Pending meter shares:[/bold] {len(meter_pending.meter)}")
224
+ console.print(f"[bold]Pending account connections:[/bold] {len(conn_pending.account)}")
225
+ except Exception as e:
226
+ console.print(f"[bold red]Error:[/bold red] {e}")
227
+
228
+
229
+ @app.command("list-property-uses")
230
+ def list_property_uses(
231
+ property_id: int = typer.Argument(..., help="Property ID to list property uses for"),
232
+ username: str = _USERNAME,
233
+ password: str = _PASSWORD,
234
+ test: bool = _TEST,
235
+ ) -> None:
236
+ """List property uses defined for a property."""
237
+ client = _client(username, password, test)
238
+ try:
239
+ response = client.property_use.list(property_id)
240
+ if not response.links or not response.links.link:
241
+ console.print("[yellow]No property uses found.[/yellow]")
242
+ return
243
+ table = Table(title=f"Property uses for property {property_id}")
244
+ table.add_column("ID", style="cyan")
245
+ table.add_column("Name / Hint")
246
+ for link in response.links.link:
247
+ table.add_row(str(link.id), link.hint or "")
248
+ console.print(table)
249
+ except Exception as e:
250
+ console.print(f"[bold red]Error:[/bold red] {e}")
251
+
252
+
253
+ @app.command("list-buildings")
254
+ def list_buildings(
255
+ property_id: int = typer.Argument(..., help="Property ID to list buildings for"),
256
+ username: str = _USERNAME,
257
+ password: str = _PASSWORD,
258
+ test: bool = _TEST,
259
+ ) -> None:
260
+ """List buildings under a property."""
261
+ client = _client(username, password, test)
262
+ try:
263
+ response = client.building.list(property_id)
264
+ if not response.links or not response.links.link:
265
+ console.print("[yellow]No buildings found.[/yellow]")
266
+ return
267
+ table = Table(title=f"Buildings for property {property_id}")
268
+ table.add_column("ID", style="cyan")
269
+ table.add_column("Name / Hint")
270
+ for link in response.links.link:
271
+ table.add_row(str(link.id), link.hint or "")
272
+ console.print(table)
273
+ except Exception as e:
274
+ console.print(f"[bold red]Error:[/bold red] {e}")
275
+
276
+
277
+ @app.command("list-edu")
278
+ def list_edu(
279
+ property_id: int = typer.Argument(..., help="Property ID to list available EDUs for"),
280
+ username: str = _USERNAME,
281
+ password: str = _PASSWORD,
282
+ test: bool = _TEST,
283
+ ) -> None:
284
+ """List available Electric Distribution Utilities for a property."""
285
+ client = _client(username, password, test)
286
+ try:
287
+ edus = client.property.edu.list(property_id)
288
+ if not edus.edu:
289
+ console.print("[yellow]No EDUs available.[/yellow]")
290
+ return
291
+ table = Table(title=f"EDUs available for property {property_id}")
292
+ table.add_column("Code", style="cyan")
293
+ table.add_column("Name")
294
+ table.add_column("Preferred")
295
+ table.add_column("Selected")
296
+ for edu in edus.edu:
297
+ table.add_row(
298
+ edu.edu_code or "",
299
+ edu.name or "",
300
+ "yes" if edu.preferred else "no",
301
+ "yes" if edu.selected else "no",
302
+ )
303
+ console.print(table)
304
+ except Exception as e:
305
+ console.print(f"[bold red]Error:[/bold red] {e}")
306
+
307
+
308
+ @app.command("list-federal-agencies")
309
+ def list_federal_agencies(
310
+ username: str = _USERNAME,
311
+ password: str = _PASSWORD,
312
+ test: bool = _TEST,
313
+ ) -> None:
314
+ """List federal agencies (catalog)."""
315
+ client = _client(username, password, test)
316
+ try:
317
+ catalog = client.property.federal_agency.list()
318
+ if not catalog.agency:
319
+ console.print("[yellow]No agencies in catalog.[/yellow]")
320
+ return
321
+ table = Table(title="Federal agencies")
322
+ table.add_column("ID", style="cyan")
323
+ table.add_column("Code")
324
+ table.add_column("Name")
325
+ table.add_column("Country")
326
+ for agency in catalog.agency:
327
+ table.add_row(
328
+ str(agency.id) if agency.id else "",
329
+ agency.code or "",
330
+ agency.name or "",
331
+ str(agency.country) if agency.country else "",
332
+ )
333
+ console.print(table)
334
+ except Exception as e:
335
+ console.print(f"[bold red]Error:[/bold red] {e}")
336
+
337
+
338
+ @app.command("list-egrid-subregions")
339
+ def list_egrid_subregions(
340
+ username: str = _USERNAME,
341
+ password: str = _PASSWORD,
342
+ test: bool = _TEST,
343
+ ) -> None:
344
+ """List eGrid subregions (catalog)."""
345
+ client = _client(username, password, test)
346
+ try:
347
+ catalog = client.property.e_grid_subregion.list()
348
+ if not catalog.e_grid_subregion:
349
+ console.print("[yellow]No subregions in catalog.[/yellow]")
350
+ return
351
+ table = Table(title="eGrid subregions")
352
+ table.add_column("Code", style="cyan")
353
+ table.add_column("Name")
354
+ table.add_column("Country")
355
+ for sr in catalog.e_grid_subregion:
356
+ table.add_row(
357
+ sr.code or "",
358
+ sr.name or "",
359
+ str(sr.country) if sr.country else "",
360
+ )
361
+ console.print(table)
362
+ except Exception as e:
363
+ console.print(f"[bold red]Error:[/bold red] {e}")
364
+
365
+
366
+ @app.command("list-reports")
367
+ def list_reports(
368
+ username: str = _USERNAME,
369
+ password: str = _PASSWORD,
370
+ test: bool = _TEST,
371
+ ) -> None:
372
+ """List reports in your account."""
373
+ client = _client(username, password, test)
374
+ try:
375
+ response = client.report.list()
376
+ if not response.links or not response.links.link:
377
+ console.print("[yellow]No reports found.[/yellow]")
378
+ return
379
+ table = Table(title="Reports")
380
+ table.add_column("ID", style="cyan")
381
+ table.add_column("Name / Hint")
382
+ for link in response.links.link:
383
+ table.add_row(str(link.id), link.hint or "")
384
+ console.print(table)
385
+ except Exception as e:
386
+ console.print(f"[bold red]Error:[/bold red] {e}")
387
+
388
+
389
+ @app.command("list-report-templates")
390
+ def list_report_templates(
391
+ username: str = _USERNAME,
392
+ password: str = _PASSWORD,
393
+ test: bool = _TEST,
394
+ ) -> None:
395
+ """List report templates available to your account."""
396
+ client = _client(username, password, test)
397
+ try:
398
+ response = client.report.templates.list()
399
+ if not response.links or not response.links.link:
400
+ console.print("[yellow]No templates found.[/yellow]")
401
+ return
402
+ table = Table(title="Report templates")
403
+ table.add_column("ID", style="cyan")
404
+ table.add_column("Name / Hint")
405
+ for link in response.links.link:
406
+ table.add_row(str(link.id), link.hint or "")
407
+ console.print(table)
408
+ except Exception as e:
409
+ console.print(f"[bold red]Error:[/bold red] {e}")
410
+
411
+
412
+ if __name__ == "__main__":
413
+ app()