energy-reports-pkg 0.6.14__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 (221) hide show
  1. energy_reports_pkg-0.6.14.dist-info/METADATA +10 -0
  2. energy_reports_pkg-0.6.14.dist-info/RECORD +221 -0
  3. energy_reports_pkg-0.6.14.dist-info/WHEEL +5 -0
  4. energy_reports_pkg-0.6.14.dist-info/top_level.txt +1 -0
  5. mindsett_energy_reports_pkg/config/__init__.py +6 -0
  6. mindsett_energy_reports_pkg/config/email/__init__.py +37 -0
  7. mindsett_energy_reports_pkg/config/monday/__init__.py +8 -0
  8. mindsett_energy_reports_pkg/config/monday/auth/__init__.py +7 -0
  9. mindsett_energy_reports_pkg/config/monday/columns_concerned/__init__.py +22 -0
  10. mindsett_energy_reports_pkg/config/postgresdb/__init__.py +33 -0
  11. mindsett_energy_reports_pkg/config/postgresdb/table/__init__.py +2 -0
  12. mindsett_energy_reports_pkg/config/postgresdb/table_building/__init__.py +1 -0
  13. mindsett_energy_reports_pkg/config/postgresdb/table_building_total/__init__.py +1 -0
  14. mindsett_energy_reports_pkg/config/postgresdb/table_cache/__init__.py +30 -0
  15. mindsett_energy_reports_pkg/config/postgresdb/table_iot/__init__.py +1 -0
  16. mindsett_energy_reports_pkg/config/postgresdb/table_mailing/__init__.py +15 -0
  17. mindsett_energy_reports_pkg/config/postgresdb/table_meta/__init__.py +2 -0
  18. mindsett_energy_reports_pkg/config/postgresdb/table_occupancy/__init__.py +3 -0
  19. mindsett_energy_reports_pkg/config/postgresdb/table_on_off/__init__.py +2 -0
  20. mindsett_energy_reports_pkg/config/postgresdb/table_org/__init__.py +1 -0
  21. mindsett_energy_reports_pkg/config/postgresdb/table_price/__init__.py +2 -0
  22. mindsett_energy_reports_pkg/config/postgresdb/table_schedule/__init__.py +1 -0
  23. mindsett_energy_reports_pkg/config/postgresdb/table_sqm/__init__.py +2 -0
  24. mindsett_energy_reports_pkg/config/postgresdb/table_timezone/__init__.py +2 -0
  25. mindsett_energy_reports_pkg/config/sharepoint/__init__.py +12 -0
  26. mindsett_energy_reports_pkg/config/sharepoint/excel/__init__.py +5 -0
  27. mindsett_energy_reports_pkg/config/sharepoint/excel/columns_concerned/__init__.py +7 -0
  28. mindsett_energy_reports_pkg/config/smtp/__init__.py +10 -0
  29. mindsett_energy_reports_pkg/jobs/databricks_job.py +31 -0
  30. mindsett_energy_reports_pkg/libs/MondayProcessor/DataProcessor/__init__.py +14 -0
  31. mindsett_energy_reports_pkg/libs/MondayProcessor/DataProcessor/launchInteractiveProcess.py +6 -0
  32. mindsett_energy_reports_pkg/libs/MondayProcessor/MondayProcessorExceptions_/MondayProcessorBoardColumnNotMatch/__init__.py +6 -0
  33. mindsett_energy_reports_pkg/libs/MondayProcessor/MondayProcessorExceptions_/MondayProcessorBoardNotFound/__init__.py +5 -0
  34. mindsett_energy_reports_pkg/libs/MondayProcessor/MondayProcessorExceptions_/MondayProcessorException/__init__.py +4 -0
  35. mindsett_energy_reports_pkg/libs/MondayProcessor/MondayProcessorExceptions_/MondayProcessorNoColumInBoard/__init__.py +5 -0
  36. mindsett_energy_reports_pkg/libs/MondayProcessor/MondayProcessorExceptions_/MondayProcessorNoGroupsInBoard/__init__.py +5 -0
  37. mindsett_energy_reports_pkg/libs/MondayProcessor/MondayProcessorExceptions_/MondayProcessorNoItemInGroup/__init__.py +6 -0
  38. mindsett_energy_reports_pkg/libs/MondayProcessor/MondayProcessorExceptions_/MondayProcessorPageNotSupported/__init__.py +7 -0
  39. mindsett_energy_reports_pkg/libs/MondayProcessor/MondayProcessorExceptions_/__init__.py +8 -0
  40. mindsett_energy_reports_pkg/libs/MondayProcessor/__init__.py +40 -0
  41. mindsett_energy_reports_pkg/libs/MondayProcessor/_fetchBoardById.py +13 -0
  42. mindsett_energy_reports_pkg/libs/MondayProcessor/_fetchBoardLogsById.py +33 -0
  43. mindsett_energy_reports_pkg/libs/MondayProcessor/_fetchColumnValueByGroup.py +103 -0
  44. mindsett_energy_reports_pkg/libs/MondayProcessor/_fetchGroups.py +19 -0
  45. mindsett_energy_reports_pkg/libs/MondayProcessor/_fetchPrismConf.py +10 -0
  46. mindsett_energy_reports_pkg/libs/MondayProcessor/_fetchPrismConfByBoard.py +83 -0
  47. mindsett_energy_reports_pkg/libs/MondayProcessor/_fetchPrismConfByGroup.py +89 -0
  48. mindsett_energy_reports_pkg/libs/MondayProcessor/_searchColumnIdsByName.py +23 -0
  49. mindsett_energy_reports_pkg/libs/MondayProcessor/_searchConfColumnIds.py +30 -0
  50. mindsett_energy_reports_pkg/libs/MondayProcessor/_searchConfColumnIdsMatch.py +20 -0
  51. mindsett_energy_reports_pkg/libs/MondayProcessor/dev/graphql_query/__init__.py +11 -0
  52. mindsett_energy_reports_pkg/libs/MondayProcessor/dev/graphql_query/boards/__init__.py +12 -0
  53. mindsett_energy_reports_pkg/libs/MondayProcessor/dev/graphql_query/boards/groups/__init__.py +11 -0
  54. mindsett_energy_reports_pkg/libs/MondayProcessor/dev/graphql_query/boards/groups/items_page/__init__.py +10 -0
  55. mindsett_energy_reports_pkg/libs/MondayProcessor/dev/graphql_query/boards/groups/items_page/items/__init__.py +12 -0
  56. mindsett_energy_reports_pkg/libs/MondayProcessor/dev/graphql_query/boards/groups/items_page/items/column_values/__init__.py +10 -0
  57. mindsett_energy_reports_pkg/libs/MondayProcessor/dev/graphql_query/boards/groups/items_page/items/column_values/column/__init__.py +2 -0
  58. mindsett_energy_reports_pkg/libs/MondayProcessor/launchInteractiveProcess.py +7 -0
  59. mindsett_energy_reports_pkg/libs/__init__.py +4 -0
  60. mindsett_energy_reports_pkg/libs/cache_return/__init__.py +47 -0
  61. mindsett_energy_reports_pkg/libs/fetch_monday_info/__init__.py +29 -0
  62. mindsett_energy_reports_pkg/libs/fetch_monday_info/load_cf_from_db/__init__.py +17 -0
  63. mindsett_energy_reports_pkg/libs/fetch_monday_info/sync_with_monday/__init__.py +52 -0
  64. mindsett_energy_reports_pkg/libs/fetch_monday_info/sync_with_monday/cache_cf_to_db/__init__.py +11 -0
  65. mindsett_energy_reports_pkg/libs/fetch_monday_info/sync_with_monday/cache_cf_to_db/append_df_to_table/__init__.py +29 -0
  66. mindsett_energy_reports_pkg/libs/fetch_monday_info/sync_with_monday/cache_cf_to_db/empty_table/__init__.py +11 -0
  67. mindsett_energy_reports_pkg/libs/fetch_monday_info/sync_with_monday/extract_contacts/__init__.py +57 -0
  68. mindsett_energy_reports_pkg/libs/fetch_monday_info/sync_with_monday/extract_contacts/get_mailing_list/__init__.py +25 -0
  69. mindsett_energy_reports_pkg/libs/fetch_monday_info/sync_with_monday/extract_contacts/load_mailing_list/__init__.py +50 -0
  70. mindsett_energy_reports_pkg/libs/fetch_monday_info/sync_with_monday/extract_contacts/load_mailing_list/columns_concerned/__init__.py +22 -0
  71. mindsett_energy_reports_pkg/libs/fetch_monday_info/sync_with_monday/get_last_update_time/__init__.py +26 -0
  72. mindsett_energy_reports_pkg/libs/fetch_sharepoint_info/__init__.py +27 -0
  73. mindsett_energy_reports_pkg/libs/fetch_sharepoint_info/load_cf_from_db/__init__.py +17 -0
  74. mindsett_energy_reports_pkg/libs/fetch_sharepoint_info/sync_with_sharepoint/__init__.py +28 -0
  75. mindsett_energy_reports_pkg/libs/fetch_sharepoint_info/sync_with_sharepoint/cache_cf_to_db/__init__.py +11 -0
  76. mindsett_energy_reports_pkg/libs/fetch_sharepoint_info/sync_with_sharepoint/cache_cf_to_db/append_df_to_table/__init__.py +29 -0
  77. mindsett_energy_reports_pkg/libs/fetch_sharepoint_info/sync_with_sharepoint/cache_cf_to_db/empty_table/__init__.py +11 -0
  78. mindsett_energy_reports_pkg/libs/fetch_sharepoint_info/sync_with_sharepoint/extract_contacts/__init__.py +13 -0
  79. mindsett_energy_reports_pkg/libs/fetch_sharepoint_info/sync_with_sharepoint/extract_contacts/format_contacts/__init__.py +57 -0
  80. mindsett_energy_reports_pkg/libs/fetch_sharepoint_info/sync_with_sharepoint/extract_contacts/format_contacts/columns_concerned/__init__.py +8 -0
  81. mindsett_energy_reports_pkg/libs/fetch_sharepoint_info/sync_with_sharepoint/extract_contacts/format_contacts/extract_id/# __init__.py +11 -0
  82. mindsett_energy_reports_pkg/libs/fetch_sharepoint_info/sync_with_sharepoint/extract_contacts/format_contacts/extract_id/__init__.py +19 -0
  83. mindsett_energy_reports_pkg/libs/fetch_sharepoint_info/sync_with_sharepoint/extract_contacts/format_contacts/get_mailing_list/__init__.py +10 -0
  84. mindsett_energy_reports_pkg/libs/fetch_sharepoint_info/sync_with_sharepoint/extract_contacts/format_contacts/uuid_for_nona/__init__.py +12 -0
  85. mindsett_energy_reports_pkg/libs/fetch_sharepoint_info/sync_with_sharepoint/extract_contacts/load_mailing_list/__init__.py +30 -0
  86. mindsett_energy_reports_pkg/libs/fetch_sharepoint_info/sync_with_sharepoint/extract_contacts/load_mailing_list/get_excel_file_from_link/__init__.py +30 -0
  87. mindsett_energy_reports_pkg/libs/fetch_sharepoint_info/sync_with_sharepoint/extract_contacts/load_mailing_list/load_excel_as_df/__init__.py +45 -0
  88. mindsett_energy_reports_pkg/libs/generate_dag_id/__init__.py +20 -0
  89. mindsett_energy_reports_pkg/libs/get_conn_by_id/__init__.py +42 -0
  90. mindsett_energy_reports_pkg/libs/get_conn_by_id/__version__.py +8 -0
  91. mindsett_energy_reports_pkg/libs/get_conn_by_id/get_conn_by_id_airflow/__init__.py +47 -0
  92. mindsett_energy_reports_pkg/libs/get_conn_by_id/get_conn_by_id_json/__init__.py +25 -0
  93. mindsett_energy_reports_pkg/libs/get_conn_by_id/get_conn_by_id_json/get_credential_url/__init__.py +17 -0
  94. mindsett_energy_reports_pkg/libs/get_conn_by_id/get_conn_by_id_json/get_credential_url/databricks/__init__.py +10 -0
  95. mindsett_energy_reports_pkg/libs/get_conn_by_id/get_conn_by_id_json/get_credential_url/local/__init__.py +13 -0
  96. mindsett_energy_reports_pkg/libs/get_conn_by_id/get_conn_by_id_synapse/__init__.py +15 -0
  97. mindsett_energy_reports_pkg/libs/get_conn_by_id/get_conn_by_id_synapse/connect_lake_and_fetch_json/__init__.py +19 -0
  98. mindsett_energy_reports_pkg/libs/get_conn_by_id/get_conn_by_id_synapse/datalake/__init__.py +7 -0
  99. mindsett_energy_reports_pkg/mdl/__init__.py +2 -0
  100. mindsett_energy_reports_pkg/mdl/prepare_and_email_reports/ClientSite/__init__.py +119 -0
  101. mindsett_energy_reports_pkg/mdl/prepare_and_email_reports/ClientSite/get_end_time/__init__.py +8 -0
  102. mindsett_energy_reports_pkg/mdl/prepare_and_email_reports/ClientSite/get_period_range/__init__.py +8 -0
  103. mindsett_energy_reports_pkg/mdl/prepare_and_email_reports/ClientSite/get_schedule_records/__init__.py +34 -0
  104. mindsett_energy_reports_pkg/mdl/prepare_and_email_reports/ClientSite/get_start_time/__init__.py +6 -0
  105. mindsett_energy_reports_pkg/mdl/prepare_and_email_reports/ClientSite/get_start_time_co2_barchart/__init__.py +7 -0
  106. mindsett_energy_reports_pkg/mdl/prepare_and_email_reports/__init__.py +93 -0
  107. mindsett_energy_reports_pkg/mdl/prepare_and_email_reports/email_report/__init__.py +47 -0
  108. mindsett_energy_reports_pkg/mdl/prepare_and_email_reports/load_config/__init__.py +75 -0
  109. mindsett_energy_reports_pkg/mdl/prepare_and_email_reports/load_config/apply_price_from_db/__init__.py +13 -0
  110. mindsett_energy_reports_pkg/mdl/prepare_and_email_reports/load_config/apply_price_from_db/load_energy_price/__init__.py +14 -0
  111. mindsett_energy_reports_pkg/mdl/prepare_and_email_reports/load_config/attach_id_to_buildings/__init__.py +24 -0
  112. mindsett_energy_reports_pkg/mdl/prepare_and_email_reports/load_config/attach_id_to_buildings/load_building/__init__.py +19 -0
  113. mindsett_energy_reports_pkg/mdl/prepare_and_email_reports/load_config/attach_id_to_buildings/load_org/__init__.py +13 -0
  114. mindsett_energy_reports_pkg/mdl/prepare_and_email_reports/load_config/check_and_keep_valid/__init__.py +36 -0
  115. mindsett_energy_reports_pkg/mdl/prepare_and_email_reports/load_config/load_sqm/__init__.py +11 -0
  116. mindsett_energy_reports_pkg/mdl/prepare_and_email_reports/load_config/load_timezone/__init__.py +11 -0
  117. mindsett_energy_reports_pkg/mdl/prepare_and_email_reports/prepare_report/__init__.py +43 -0
  118. mindsett_energy_reports_pkg/mdl/prepare_and_email_reports/prepare_report/generate_components/__init__.py +47 -0
  119. mindsett_energy_reports_pkg/mdl/prepare_and_email_reports/prepare_report/generate_components/generate_daily_barchart_with_temp/__init__.py +40 -0
  120. mindsett_energy_reports_pkg/mdl/prepare_and_email_reports/prepare_report/generate_components/generate_daily_barchart_with_temp/plot_shifted_daily_barchart_with_temp/__init__.py +71 -0
  121. mindsett_energy_reports_pkg/mdl/prepare_and_email_reports/prepare_report/generate_components/generate_daily_barchart_with_temp/plot_shifted_daily_barchart_with_temp/plot_temperature_graph/__init__.py +35 -0
  122. mindsett_energy_reports_pkg/mdl/prepare_and_email_reports/prepare_report/generate_components/generate_daily_barchart_with_temp/plot_shifted_daily_barchart_with_temp/plot_the_legend/__init__.py +26 -0
  123. mindsett_energy_reports_pkg/mdl/prepare_and_email_reports/prepare_report/generate_components/generate_daily_barchart_with_temp/plot_shifted_daily_barchart_with_temp/setup_x_tick_lim/__init__.py +26 -0
  124. mindsett_energy_reports_pkg/mdl/prepare_and_email_reports/prepare_report/generate_components/generate_daily_barchart_with_temp/plot_shifted_daily_barchart_with_temp/setup_x_tick_lim/generate_day_code/__init__.py +18 -0
  125. mindsett_energy_reports_pkg/mdl/prepare_and_email_reports/prepare_report/generate_components/generate_daily_barchart_with_temp/plot_shifted_daily_barchart_with_temp/setup_x_tick_lim/generate_day_code/generate_day_code_list/__init__.py +38 -0
  126. mindsett_energy_reports_pkg/mdl/prepare_and_email_reports/prepare_report/generate_components/generate_daily_barchart_with_temp/plot_shifted_daily_barchart_with_temp/setup_y_label_and_get_pos_bot_range/__init__.py +40 -0
  127. mindsett_energy_reports_pkg/mdl/prepare_and_email_reports/prepare_report/generate_components/generate_daily_barchart_with_temp/plot_shifted_daily_barchart_with_temp/setup_y_label_and_get_pos_bot_range/get_pos_bot_and_ylim/__init__.py +30 -0
  128. mindsett_energy_reports_pkg/mdl/prepare_and_email_reports/prepare_report/generate_components/generate_daily_barchart_with_temp/plot_shifted_daily_barchart_with_temp/setup_y_tick_lim_label_zero_line/__init__.py +23 -0
  129. mindsett_energy_reports_pkg/mdl/prepare_and_email_reports/prepare_report/generate_components/generate_daily_barchart_with_temp/preprocessing_for_barchart/__init__.py +21 -0
  130. mindsett_energy_reports_pkg/mdl/prepare_and_email_reports/prepare_report/generate_components/generate_daily_barchart_with_temp/preprocessing_for_barchart/groupby_date_and_ooh_current_period/__init__.py +39 -0
  131. mindsett_energy_reports_pkg/mdl/prepare_and_email_reports/prepare_report/generate_components/generate_daily_barchart_with_temp/preprocessing_for_barchart/patch_missing_columns_for_ooh_and_sign/__init__.py +18 -0
  132. mindsett_energy_reports_pkg/mdl/prepare_and_email_reports/prepare_report/generate_components/generate_daily_barchart_with_temp/preprocessing_for_barchart/patch_missing_dates/__init__.py +28 -0
  133. mindsett_energy_reports_pkg/mdl/prepare_and_email_reports/prepare_report/generate_components/generate_energy_meter_with_benchmarking/__init__.py +42 -0
  134. mindsett_energy_reports_pkg/mdl/prepare_and_email_reports/prepare_report/generate_components/generate_energy_meter_with_benchmarking/energy_meter_with_benchmarking/__init__.py +66 -0
  135. mindsett_energy_reports_pkg/mdl/prepare_and_email_reports/prepare_report/generate_components/generate_energy_meter_with_benchmarking/energy_meter_with_benchmarking/benchmarking_design/__init__.py +194 -0
  136. mindsett_energy_reports_pkg/mdl/prepare_and_email_reports/prepare_report/generate_components/generate_energy_meter_with_benchmarking/energy_meter_with_benchmarking/benchmarking_design/ruler_anno_shink_cf/__init__.py +24 -0
  137. mindsett_energy_reports_pkg/mdl/prepare_and_email_reports/prepare_report/generate_components/generate_energy_meter_with_benchmarking/energy_meter_with_benchmarking/energy_meter_design/__init__.py +233 -0
  138. mindsett_energy_reports_pkg/mdl/prepare_and_email_reports/prepare_report/generate_components/generate_energy_meter_with_benchmarking/preprocessing_for_energy_meter_with_benchmarking/__init__.py +23 -0
  139. mindsett_energy_reports_pkg/mdl/prepare_and_email_reports/prepare_report/generate_components/generate_insight_statements/__init__.py +42 -0
  140. mindsett_energy_reports_pkg/mdl/prepare_and_email_reports/prepare_report/generate_components/generate_insight_statements/insight_statements/__init__.py +41 -0
  141. mindsett_energy_reports_pkg/mdl/prepare_and_email_reports/prepare_report/generate_components/generate_insight_statements/insight_statements/statement_for_avg_action_time/__init__.py +61 -0
  142. mindsett_energy_reports_pkg/mdl/prepare_and_email_reports/prepare_report/generate_components/generate_insight_statements/insight_statements/statement_for_biggest_ooh/__init__.py +31 -0
  143. mindsett_energy_reports_pkg/mdl/prepare_and_email_reports/prepare_report/generate_components/generate_insight_statements/insight_statements/statement_for_total_ooh/__init__.py +18 -0
  144. mindsett_energy_reports_pkg/mdl/prepare_and_email_reports/prepare_report/generate_components/generate_insight_statements/preprocessing_for_statement/__init__.py +85 -0
  145. mindsett_energy_reports_pkg/mdl/prepare_and_email_reports/prepare_report/generate_components/generate_period_barchart/__init__.py +29 -0
  146. mindsett_energy_reports_pkg/mdl/prepare_and_email_reports/prepare_report/generate_components/generate_period_barchart/plot_shifted_period_barchart/__init__.py +49 -0
  147. mindsett_energy_reports_pkg/mdl/prepare_and_email_reports/prepare_report/generate_components/generate_period_barchart/plot_shifted_period_barchart/set_x_label_prepare_xtick/__init__.py +24 -0
  148. mindsett_energy_reports_pkg/mdl/prepare_and_email_reports/prepare_report/generate_components/generate_period_barchart/plot_shifted_period_barchart/set_x_tick_and_lim/__init__.py +26 -0
  149. mindsett_energy_reports_pkg/mdl/prepare_and_email_reports/prepare_report/generate_components/generate_period_barchart/plot_shifted_period_barchart/setup_y_tick_lim_label_zero_line/__init__.py +31 -0
  150. mindsett_energy_reports_pkg/mdl/prepare_and_email_reports/prepare_report/generate_components/generate_period_barchart/preprocessing_for_period_barchart/__init__.py +43 -0
  151. mindsett_energy_reports_pkg/mdl/prepare_and_email_reports/prepare_report/generate_components/generate_period_barchart/preprocessing_for_period_barchart/patch_missing_ooh_periods_sign/__init__.py +23 -0
  152. mindsett_energy_reports_pkg/mdl/prepare_and_email_reports/prepare_report/generate_components/generate_piechart_with_phase/__init__.py +56 -0
  153. mindsett_energy_reports_pkg/mdl/prepare_and_email_reports/prepare_report/generate_components/generate_piechart_with_phase/plot_adaptive_ring_with_phase/__init__.py +109 -0
  154. mindsett_energy_reports_pkg/mdl/prepare_and_email_reports/prepare_report/generate_components/generate_piechart_with_phase/plot_adaptive_ring_with_phase/colors/__init__.py +28 -0
  155. mindsett_energy_reports_pkg/mdl/prepare_and_email_reports/prepare_report/generate_components/generate_piechart_with_phase/plot_adaptive_ring_with_phase/hatches/__init__.py +2 -0
  156. mindsett_energy_reports_pkg/mdl/prepare_and_email_reports/prepare_report/generate_components/generate_piechart_with_phase/plot_adaptive_ring_with_phase/plot_centre_pct/__init__.py +28 -0
  157. mindsett_energy_reports_pkg/mdl/prepare_and_email_reports/prepare_report/generate_components/generate_piechart_with_phase/plot_adaptive_ring_with_phase/plot_phase_balance/__init__.py +42 -0
  158. mindsett_energy_reports_pkg/mdl/prepare_and_email_reports/prepare_report/generate_components/generate_piechart_with_phase/plot_adaptive_ring_with_phase/plot_phase_balance/get_phase_markers/__init__.py +28 -0
  159. mindsett_energy_reports_pkg/mdl/prepare_and_email_reports/prepare_report/generate_components/generate_piechart_with_phase/plot_adaptive_ring_with_phase/plot_phase_balance/get_tick_values/__init__.py +44 -0
  160. mindsett_energy_reports_pkg/mdl/prepare_and_email_reports/prepare_report/generate_components/generate_piechart_with_phase/plot_adaptive_ring_with_phase/plot_phase_balance/plot_phase_balance_part/__init__.py +108 -0
  161. mindsett_energy_reports_pkg/mdl/prepare_and_email_reports/prepare_report/generate_components/generate_piechart_with_phase/plot_adaptive_ring_with_phase/plot_phase_balance/plot_phase_balance_part/ruler_anno_shink_cf/__init__.py +29 -0
  162. mindsett_energy_reports_pkg/mdl/prepare_and_email_reports/prepare_report/generate_components/generate_piechart_with_phase/plot_adaptive_ring_with_phase/plot_phase_balance/plot_phase_balance_part/ruler_symbol_cf/__init__.py +35 -0
  163. mindsett_energy_reports_pkg/mdl/prepare_and_email_reports/prepare_report/generate_components/generate_piechart_with_phase/plot_adaptive_ring_with_phase/plot_ring/__init__.py +87 -0
  164. mindsett_energy_reports_pkg/mdl/prepare_and_email_reports/prepare_report/generate_components/generate_piechart_with_phase/plot_adaptive_ring_with_phase/plot_ring/adjust_gap_for_visibility/__init__.py +19 -0
  165. mindsett_energy_reports_pkg/mdl/prepare_and_email_reports/prepare_report/generate_components/generate_piechart_with_phase/plot_adaptive_ring_with_phase/plot_ring/adjust_to_inner_ring/__init__.py +32 -0
  166. mindsett_energy_reports_pkg/mdl/prepare_and_email_reports/prepare_report/generate_components/generate_piechart_with_phase/plot_adaptive_ring_with_phase/plot_ring/adjust_values_for_better_visibility/__init__.py +27 -0
  167. mindsett_energy_reports_pkg/mdl/prepare_and_email_reports/prepare_report/generate_components/generate_piechart_with_phase/plot_adaptive_ring_with_phase/plot_ring/annotate_pct_on_pies/__init__.py +21 -0
  168. mindsett_energy_reports_pkg/mdl/prepare_and_email_reports/prepare_report/generate_components/generate_piechart_with_phase/plot_adaptive_ring_with_phase/plot_ring/generate_pct_fmt/__init__.py +8 -0
  169. mindsett_energy_reports_pkg/mdl/prepare_and_email_reports/prepare_report/generate_components/generate_piechart_with_phase/plot_adaptive_ring_with_phase/show_legend/__init__.py +36 -0
  170. mindsett_energy_reports_pkg/mdl/prepare_and_email_reports/prepare_report/generate_components/generate_piechart_with_phase/plot_adaptive_ring_with_phase/show_legend/generate_legend_labels/__init__.py +50 -0
  171. mindsett_energy_reports_pkg/mdl/prepare_and_email_reports/prepare_report/generate_components/generate_piechart_with_phase/plot_adaptive_ring_with_phase/show_legend/generate_legend_labels/get_formatted_arrow/__init__.py +18 -0
  172. mindsett_energy_reports_pkg/mdl/prepare_and_email_reports/prepare_report/generate_components/generate_piechart_with_phase/plot_adaptive_ring_with_phase/show_legend/generate_legend_labels/get_formatted_name/__init__.py +14 -0
  173. mindsett_energy_reports_pkg/mdl/prepare_and_email_reports/prepare_report/generate_components/generate_piechart_with_phase/plot_adaptive_ring_with_phase/show_legend/generate_legend_labels/get_formatted_pct/__init__.py +44 -0
  174. mindsett_energy_reports_pkg/mdl/prepare_and_email_reports/prepare_report/generate_components/generate_piechart_with_phase/plot_adaptive_ring_with_phase/show_legend/generate_legend_labels/get_formatted_sum/__init__.py +31 -0
  175. mindsett_energy_reports_pkg/mdl/prepare_and_email_reports/prepare_report/generate_components/generate_piechart_with_phase/plot_adaptive_ring_with_phase/show_legend/get_legend_handles/__init__.py +22 -0
  176. mindsett_energy_reports_pkg/mdl/prepare_and_email_reports/prepare_report/generate_components/generate_piechart_with_phase/preprocessing_for_phases/__init__.py +37 -0
  177. mindsett_energy_reports_pkg/mdl/prepare_and_email_reports/prepare_report/generate_components/generate_piechart_with_phase/preprocessing_for_piechart/__init__.py +26 -0
  178. mindsett_energy_reports_pkg/mdl/prepare_and_email_reports/prepare_report/generate_components/generate_piechart_with_phase/preprocessing_for_piechart/group_and_pivot/__init__.py +24 -0
  179. mindsett_energy_reports_pkg/mdl/prepare_and_email_reports/prepare_report/generate_components/generate_piechart_with_phase/preprocessing_for_piechart/transform_asset_stats_for_adaptive_piechart/__init__.py +30 -0
  180. mindsett_energy_reports_pkg/mdl/prepare_and_email_reports/prepare_report/generate_components/generate_piechart_with_phase/preprocessing_for_piechart/transform_asset_stats_for_adaptive_piechart/get_change_pct_and_sort_and_trim_cols/__init__.py +34 -0
  181. mindsett_energy_reports_pkg/mdl/prepare_and_email_reports/prepare_report/generate_components/generate_piechart_with_phase/preprocessing_for_piechart/transform_asset_stats_for_adaptive_piechart/get_entries_to_display/__init__.py +34 -0
  182. mindsett_energy_reports_pkg/mdl/prepare_and_email_reports/prepare_report/generate_components/generate_piechart_with_phase/preprocessing_for_piechart/transform_asset_stats_for_adaptive_piechart/get_rank_overall_protect/__init__.py +14 -0
  183. mindsett_energy_reports_pkg/mdl/prepare_and_email_reports/prepare_report/generate_components/generate_piechart_with_phase/preprocessing_for_piechart/transform_asset_stats_for_adaptive_piechart/get_subgroup_sum_and_rank/__init__.py +22 -0
  184. mindsett_energy_reports_pkg/mdl/prepare_and_email_reports/prepare_report/generate_components/generate_piechart_with_phase/preprocessing_for_piechart/transform_asset_stats_for_adaptive_piechart/get_sum_for_curr_and_prev/__init__.py +20 -0
  185. mindsett_energy_reports_pkg/mdl/prepare_and_email_reports/prepare_report/generate_report/PDF/__init__.py +44 -0
  186. mindsett_energy_reports_pkg/mdl/prepare_and_email_reports/prepare_report/generate_report/PDF/write_multicell_with_styles.py +30 -0
  187. mindsett_energy_reports_pkg/mdl/prepare_and_email_reports/prepare_report/generate_report/__init__.py +162 -0
  188. mindsett_energy_reports_pkg/mdl/prepare_and_email_reports/prepare_report/preparing_source_data/__init__.py +78 -0
  189. mindsett_energy_reports_pkg/mdl/prepare_and_email_reports/prepare_report/preparing_source_data/load_source_data/__init__.py +32 -0
  190. mindsett_energy_reports_pkg/mdl/prepare_and_email_reports/prepare_report/preparing_source_data/load_source_data/import_data_with_meta_postgres/__init__.py +47 -0
  191. mindsett_energy_reports_pkg/mdl/prepare_and_email_reports/prepare_report/preparing_source_data/load_source_data/import_data_with_meta_postgres/load_iot_data/__init__.py +28 -0
  192. mindsett_energy_reports_pkg/mdl/prepare_and_email_reports/prepare_report/preparing_source_data/load_source_data/import_data_with_meta_postgres/load_iot_data/load_iot_data_partition/__init__.py +24 -0
  193. mindsett_energy_reports_pkg/mdl/prepare_and_email_reports/prepare_report/preparing_source_data/load_source_data/import_data_with_meta_postgres/load_metadata/__init__.py +34 -0
  194. mindsett_energy_reports_pkg/mdl/prepare_and_email_reports/prepare_report/preparing_source_data/load_source_data/import_data_with_meta_postgres/load_metadata/get_meta_statement/__init__.py +32 -0
  195. mindsett_energy_reports_pkg/mdl/prepare_and_email_reports/prepare_report/preparing_source_data/load_source_data/query_building_total/__init__.py +40 -0
  196. mindsett_energy_reports_pkg/mdl/prepare_and_email_reports/prepare_report/preparing_source_data/refine_group_name/__init__.py +20 -0
  197. mindsett_energy_reports_pkg/mdl/prepare_and_email_reports/prepare_report/preparing_source_data/refine_group_name/exchange_group_name_column/__init__.py +10 -0
  198. mindsett_energy_reports_pkg/mdl/prepare_and_email_reports/prepare_report/preparing_source_data/validate_data_not_empty/__init__.py +9 -0
  199. mindsett_energy_reports_pkg/mdl/prepare_and_email_reports/select_sites_and_emails/__init__.py +19 -0
  200. mindsett_energy_reports_pkg/mdl/utils_/__init__.py +17 -0
  201. mindsett_energy_reports_pkg/mdl/utils_/cache_df_to_db/__init__.py +11 -0
  202. mindsett_energy_reports_pkg/mdl/utils_/cache_df_to_db/append_df_to_table/__init__.py +29 -0
  203. mindsett_energy_reports_pkg/mdl/utils_/cache_df_to_db/empty_table/__init__.py +11 -0
  204. mindsett_energy_reports_pkg/mdl/utils_/cache_obj/__init__.py +50 -0
  205. mindsett_energy_reports_pkg/mdl/utils_/color_dict/__init__.py +13 -0
  206. mindsett_energy_reports_pkg/mdl/utils_/delete_files_in_directory/__init__.py +15 -0
  207. mindsett_energy_reports_pkg/mdl/utils_/enriching_time_features/__init__.py +66 -0
  208. mindsett_energy_reports_pkg/mdl/utils_/enriching_time_features/__version__.py +4 -0
  209. mindsett_energy_reports_pkg/mdl/utils_/generate_time_partition_list/__init__.py +14 -0
  210. mindsett_energy_reports_pkg/mdl/utils_/get_group_with_others/__init__.py +7 -0
  211. mindsett_energy_reports_pkg/mdl/utils_/get_pos_bot_range_unit_format/__init__.py +37 -0
  212. mindsett_energy_reports_pkg/mdl/utils_/get_pos_bot_range_unit_format/get_pos_bot_and_ylim/__init__.py +31 -0
  213. mindsett_energy_reports_pkg/mdl/utils_/modify_group_names/__init__.py +17 -0
  214. mindsett_energy_reports_pkg/mdl/utils_/patch_missing_periods/__init__.py +34 -0
  215. mindsett_energy_reports_pkg/mdl/utils_/plot_stacked_barchart/__init__.py +50 -0
  216. mindsett_energy_reports_pkg/mdl/utils_/send_email/__init__.py +73 -0
  217. mindsett_energy_reports_pkg/mdl/utils_/setup_table/__init__.py +40 -0
  218. mindsett_energy_reports_pkg/mdl/utils_/setup_table/check_table_existence/__init__.py +25 -0
  219. mindsett_energy_reports_pkg/mdl/utils_/setup_table/create_new_schema/__init__.py +8 -0
  220. mindsett_energy_reports_pkg/mdl/utils_/setup_table/create_table/__init__.py +73 -0
  221. mindsett_energy_reports_pkg/mdl/utils_/setup_table/empty_table/__init__.py +11 -0
@@ -0,0 +1,23 @@
1
+
2
+ import matplotlib.ticker as ticker
3
+
4
+ def setup_y_tick_lim_label_zero_line(ax, ls_ylim, display_unit, formatter,
5
+ fontsize=None):
6
+
7
+ if fontsize is None:
8
+ fontsize = 13
9
+
10
+ # move the y_tick to the right
11
+ ax.yaxis.tick_right()
12
+ ax.yaxis.set_label_position("right")
13
+ ax.tick_params(axis='y', right=True, length=5, pad=9, labelsize=fontsize)
14
+ ax.set_ylim(ls_ylim)
15
+
16
+ # set y label
17
+ ax.set_ylabel(f"Daily Usage ({display_unit})", labelpad=18, fontsize=fontsize)
18
+
19
+ # set yaxis formatter
20
+ ax.yaxis.set_major_formatter(ticker.FormatStrFormatter(formatter))
21
+
22
+ # plot the zero value horizontal line
23
+ ax.axhline(y=0, color='k', linestyle=':', zorder=-1)
@@ -0,0 +1,21 @@
1
+ from .patch_missing_dates import patch_missing_dates
2
+ from .patch_missing_columns_for_ooh_and_sign import patch_missing_columns_for_ooh_and_sign
3
+ from .groupby_date_and_ooh_current_period import groupby_date_and_ooh_current_period
4
+
5
+ # from .groupby_date_and_ooh_current_period import groupby_date_and_ooh_current_period
6
+
7
+ from cache_return import cache_return
8
+
9
+
10
+ @cache_return
11
+ def preprocessing_for_barchart(df_meta_with_value_bld):
12
+
13
+ # main operation
14
+ df_pivot_working_hours_with_sign_sorted, period_current = groupby_date_and_ooh_current_period(df_meta_with_value_bld)
15
+
16
+ # patch the missing ooh columns and period index
17
+ df_pivot_working_hours_with_sign_sorted = patch_missing_columns_for_ooh_and_sign(df_pivot_working_hours_with_sign_sorted)
18
+ df_pivot_working_hours_with_sign_sorted = patch_missing_dates(df_pivot_working_hours_with_sign_sorted, period_current)
19
+
20
+ return df_pivot_working_hours_with_sign_sorted, period_current
21
+ # pass
@@ -0,0 +1,39 @@
1
+
2
+
3
+
4
+
5
+ def groupby_date_and_ooh_current_period(df_meta_with_value):
6
+
7
+ # select data only for the current period
8
+
9
+ period_current = df_meta_with_value["period"].max()
10
+ df_meta_with_value_current = df_meta_with_value.loc[df_meta_with_value["period"]==period_current]
11
+
12
+ df_meta_with_value_current['neg_sign'] = df_meta_with_value_current['W'].lt(0)
13
+
14
+ # Conversion into MWh
15
+ w_to_mw_para = 1./1000/1000
16
+ min_to_hour_para = 1./60
17
+ reading_interval_in_mins=10
18
+
19
+ wm_to_mwh_parameter = w_to_mw_para * min_to_hour_para
20
+ reading_to_mwh_parameter = reading_interval_in_mins * wm_to_mwh_parameter
21
+
22
+ # Conversion into MWh
23
+ # reading_to_mwh_parameter = 1./1000
24
+
25
+ # todo: Better to change to df_meta_value_building
26
+ df_grouped_working_hours_current_period_with_sign = df_meta_with_value_current.groupby(['neg_sign', "date", 'out_of_hours'])["W"].sum() * reading_to_mwh_parameter # Div 1000 for convertion to MWh
27
+
28
+ # df_grouped_working_hours_current_period = df_grouped_working_hours_current_period_with_sign.droplevel('neg_sign')
29
+ # # select only the maximum period
30
+ # df_grouped_working_hours_multiple_period_unstack = df_grouped_working_hours_multiple_period.unstack(["period"])
31
+ # period_current = df_grouped_working_hours_multiple_period_unstack.columns[-1]
32
+ # df_grouped_working_hours = df_grouped_working_hours_multiple_period_unstack.loc[:, period_current]
33
+
34
+ # todo: fill missing group index
35
+ df_pivot_working_hours_with_sign_sorted = df_grouped_working_hours_current_period_with_sign.unstack(['neg_sign', 'out_of_hours']).sort_index(axis=1,
36
+ level=1,
37
+ ascending=False)
38
+
39
+ return df_pivot_working_hours_with_sign_sorted, period_current
@@ -0,0 +1,18 @@
1
+
2
+ import pandas as pd
3
+
4
+ def patch_missing_columns_for_ooh_and_sign(df_pivot_working_hours_with_sign):
5
+
6
+ columns_for_sign = [True, False]
7
+ columns_for_ooh = [True, False]
8
+
9
+ required_columns_for_ooh_and_sign = pd.MultiIndex.from_product([columns_for_sign, columns_for_ooh])
10
+
11
+ # required_columns_for_ooh = [True, False]
12
+ existing_columns_for_ooh_and_sign = df_pivot_working_hours_with_sign.columns
13
+
14
+ for column in required_columns_for_ooh_and_sign:
15
+ if column not in existing_columns_for_ooh_and_sign:
16
+ df_pivot_working_hours_with_sign[column] = 0
17
+
18
+ return df_pivot_working_hours_with_sign
@@ -0,0 +1,28 @@
1
+ import pandas as pd
2
+
3
+ def patch_missing_dates(df_pivot_working_hours, period_current):
4
+
5
+ start_date = period_current.start_time.date()
6
+ end_date = period_current.end_time.date()
7
+
8
+ # firstly ensuring that the start and finish date are not missing
9
+ if start_date not in df_pivot_working_hours.index:
10
+ df_pivot_working_hours.loc[start_date] = 0
11
+
12
+ if end_date not in df_pivot_working_hours.index:
13
+ df_pivot_working_hours.loc[end_date] = 0
14
+
15
+ # convert the date index to full datetime, so it can be used to adjust frequency
16
+ df_pivot_working_hours.index = pd.to_datetime(df_pivot_working_hours.index)
17
+ df_pivot_working_hours_patched = df_pivot_working_hours.asfreq('1D', fill_value=0).fillna(0)
18
+
19
+ # convert the full datetime frequency to date following the original format
20
+ df_pivot_working_hours_patched.index = df_pivot_working_hours_patched.index.date
21
+
22
+ return df_pivot_working_hours_patched
23
+
24
+
25
+
26
+
27
+
28
+
@@ -0,0 +1,42 @@
1
+ from pathlib import Path
2
+ import matplotlib.pyplot as plt
3
+ import io
4
+
5
+ from .preprocessing_for_energy_meter_with_benchmarking import preprocessing_for_energy_meter_with_benchmarking
6
+ from .energy_meter_with_benchmarking import energy_meter_with_benchmarking
7
+
8
+
9
+ def generate_energy_meter_with_benchmarking(df_meta_with_value_building, floor_size,
10
+ industry = "office",
11
+ size_in_sqm = True,
12
+ conv_mwh_price = 190,
13
+ currency = 'GBP',
14
+ fontsize = 13,
15
+ directory_to_savefig=None):
16
+
17
+ consumption_mwh_cur, consumption_mwh_pre, days_in_period = preprocessing_for_energy_meter_with_benchmarking(df_meta_with_value_building)
18
+
19
+ print('consumption_mwh_building_total: ', consumption_mwh_cur) # debug
20
+ energy_meter_with_benchmarking(consumption_mwh_cur, consumption_mwh_pre, floor_size,
21
+ industry=industry,
22
+ period=days_in_period,
23
+ size_in_sqm=size_in_sqm,
24
+ conv_mwh_price=conv_mwh_price,
25
+ currency=currency,
26
+ fontsize=fontsize)
27
+
28
+ png_name = 'monthly_total_and_bm_latest.png'
29
+ if directory_to_savefig == None:
30
+ png_object = io.BytesIO()
31
+ plt.savefig(png_object, format='png', dpi=200,transparent=True, bbox_inches='tight', pad_inches=0)
32
+ plt.close()
33
+ return {png_name: png_object}
34
+ else:
35
+ png_path = directory_to_savefig + png_name
36
+ plt.savefig(png_path, format='png', dpi=200,transparent=True, bbox_inches='tight', pad_inches=0)
37
+ plt.close()
38
+ return {png_name: png_path}
39
+
40
+
41
+ # Path(directory_to_savefig).mkdir(parents=True, exist_ok=True)
42
+ # plt.savefig(directory_to_savefig+"monthly_total_and_bm_latest.png", format='png', dpi=200,transparent=True, bbox_inches='tight', pad_inches=0)
@@ -0,0 +1,66 @@
1
+
2
+ import matplotlib.pyplot as plt
3
+
4
+ from os import path
5
+
6
+ from .energy_meter_design import energy_meter_design
7
+ from .benchmarking_design import benchmarking_design
8
+
9
+
10
+ def energy_meter_with_benchmarking(consumption_mwh_cur, consumption_mwh_pre, floor_size,
11
+ image_folder=None,
12
+ size_in_sqm = True,
13
+ industry = "office",
14
+ period = 30,
15
+ conv_mwh_co2 = 0.233,
16
+ conv_mwh_price = 190,
17
+ fx = 0.2, # fancy box x-axis value
18
+ fy = 0.3, # fancy box y-axis value
19
+ fs = 0.6, # fancy box scale factor
20
+ kwh_per_sqm_good = 10.33,
21
+ kwh_per_sqm_typical = 14.5,
22
+ currency = 'GBP',
23
+ fontsize=13, # please note that the other fontsizes haven't been tested yet
24
+ # directory_to_savefig = './figures/'
25
+ ):
26
+
27
+ if image_folder == None:
28
+ image_folder = path.join(path.dirname(__file__), '_assets_/')
29
+
30
+ plt.style.use('seaborn-white')
31
+ fig, ax = plt.subplots(figsize=(5, 5.5))
32
+
33
+ if size_in_sqm:
34
+ floor_sqm = floor_size
35
+ else:
36
+ floor_sqm = floor_size * 0.0929
37
+
38
+ if industry == "office":
39
+ floor_sqm_as_office = floor_sqm
40
+ elif industry == "food service":
41
+ # (not working on 26 Nov 24): https://cdn2.hubspot.net/hubfs/5055051/Offers/Energy%20Benchmarking%20Report%20-%20Iota.pdf?utm_campaign=Offer%3A%20Energy%20Benchmarking%20Report&utm_medium=email&_hsmi=72631957&_hsenc=p2ANqtz-8urx_6ejMPQ25rp-u0vAHPq0cmKPTvL18SQTEf22gtrdDV2x7wGnd5kkP40_bx3M5hOWp3tysnbPI4JjWriJEp2fb5o7PzNF5D9VFqQNjYVLVxKtE&utm_content=72631957&utm_source=hs_automation
42
+ # added on 26 Nov 24: https://www.betterbuildingspartnership.co.uk/sites/default/files/media/attachment/REEB%202023%20Benchmarks_0.pdf
43
+ floor_sqm_as_office = floor_sqm * 56/15 # 56/15 food service/office
44
+
45
+ floor_sqm_as_office_for_month = floor_sqm_as_office * period / 30 # default days in a month
46
+
47
+
48
+ energy_meter_design(ax, consumption_mwh_cur, consumption_mwh_pre, image_folder,
49
+ conv_mwh_co2=conv_mwh_co2,
50
+ conv_mwh_price=conv_mwh_price,
51
+ fx=fx, fy=fy, fs=fs,
52
+ currency=currency,
53
+ fontsize=fontsize)
54
+ benchmarking_design(ax, consumption_mwh_cur, floor_sqm_as_office_for_month,
55
+ fx=fx, fy=fy-0.12, fs=fs,
56
+ kwh_per_sqm_good=kwh_per_sqm_good,
57
+ kwh_per_sqm_typical=kwh_per_sqm_typical,
58
+ fontsize=fontsize
59
+ )
60
+ ax.set_xlim(0, 1) # shouldn't be modified
61
+ ax.set_ylim(-1, 2)
62
+
63
+ plt.axis('off')
64
+ # Specify the directory to save figures, if it does not exist, create it
65
+ # Path(directory_to_savefig).mkdir(parents=True, exist_ok=True)
66
+ # plt.savefig(directory_to_savefig+"Monthly_total_and_bm_latest.png", format='png', dpi=200,transparent=True, bbox_inches='tight', pad_inches=0)
@@ -0,0 +1,194 @@
1
+
2
+ import matplotlib.patches as mpatches
3
+ import matplotlib.text as mpltext
4
+
5
+ from .ruler_anno_shink_cf import ruler_anno_shink_cf
6
+
7
+
8
+ cd = {"tomato": '#FF836A',"aquablue": '#6DC2B3',"peach": '#FED6D2',"darkgrey": '#9F9D9C',"potato": '#FEF8C8',
9
+ "cyan": '#B6E4E1',"dimgray":'#696969',"Seafoam":'#87e0cf',"gainsboro":'#DCDCDC'}
10
+
11
+
12
+ def benchmarking_design(ax, consumption_mwh_cur, floor_sqm,
13
+ kwh_per_sqm_good = 10.33,
14
+ kwh_per_sqm_typical = 14.5,
15
+ fx = 0.2, # fancy box x-axis value
16
+ fy = 0.18, # fancy box y-axis value
17
+ fs = 0.6, # fancy box scale factor
18
+ fontsize = 13
19
+ ):
20
+
21
+
22
+ mwh_good = floor_sqm * kwh_per_sqm_good / 1000
23
+ mwh_typical = floor_sqm * kwh_per_sqm_typical / 1000
24
+
25
+ mwh_btw_good_typical = mwh_typical - mwh_good
26
+
27
+ key_values_list = [mwh_typical + mwh_btw_good_typical,
28
+ mwh_good - mwh_btw_good_typical,
29
+ consumption_mwh_cur + mwh_btw_good_typical/2,
30
+ consumption_mwh_cur - mwh_btw_good_typical/2]
31
+
32
+ ticks_max = max(key_values_list)
33
+ ticks_min = min(key_values_list)
34
+
35
+ ticks_values_list = [ticks_min, mwh_good, mwh_typical, ticks_max]
36
+ ticks_range = ticks_max - ticks_min
37
+
38
+ ## ruler settings
39
+ ru_x = 0 # the x-axis of benchmarking ruler
40
+ ru_y = 0 # the x-axis of benchmarking ruler
41
+ ru_w = 1 # the width of benchmarking ruler
42
+ ru_h = 0.08 # the height of benchmarking ruler
43
+
44
+ rp_edgecolor = 'k' # edgecolor of the ruler body parts
45
+ rp_note_fontsize = fontsize - 5 # the fontsize of notes on ruler parts # please note that the other sizes except default 13 haven't been tested yet
46
+
47
+ # ruler body - part one - good
48
+ rp_x = ru_x # the x-axis value of this part
49
+ rp_y = ru_y - 0.07 # the y-axis value of this part
50
+ rp_w = ru_w * (ticks_values_list[1]-ticks_values_list[0])/ticks_range # the width value of this part
51
+ rp_h = ru_h
52
+ rp_c = cd["aquablue"]
53
+ ruler_body_part_one = mpatches.Rectangle([fx+rp_x*fs, fy+rp_y*fs],
54
+ rp_w*fs, rp_h*fs, facecolor=rp_c, edgecolor=rp_edgecolor, lw=1)
55
+
56
+ # print('ruler_body_part_one rp_w*fs, rp_h*fs: ', rp_w*fs, rp_h*fs)
57
+ rpa_x = rp_x + rp_w/2.0 # ruler body part annotation - x axis
58
+ rpa_y = rp_y # ruler body part annotation - y axis
59
+ bar_width = rp_w*fs
60
+ part = 'part_one'
61
+ rpa_text = ruler_anno_shink_cf(bar_width, part)
62
+
63
+
64
+ ax.annotate(rpa_text, (fx+fs*rpa_x, fx+fs*rpa_y), color='w', weight='bold',
65
+ fontsize=rp_note_fontsize, ha='center', va='center')
66
+
67
+ # ruler body - part two - normal
68
+ rp_x = rp_x + rp_w # the x-axis value of this part
69
+ rp_y = ru_y - 0.07 # the y-axis value of this part
70
+ rp_w = ru_w * (ticks_values_list[2]-ticks_values_list[1])/ticks_range # the width value of this part
71
+ rp_h = ru_h
72
+ rp_c = cd["potato"]
73
+ ruler_body_part_two = mpatches.Rectangle([fx+rp_x*fs, fy+rp_y*fs],
74
+ rp_w*fs, rp_h*fs, facecolor=rp_c, edgecolor=rp_edgecolor, lw=1)
75
+
76
+ # print('ruler_body_part_two rp_w*fs, rp_h*fs: ', rp_w*fs, rp_h*fs)
77
+ rpa_x = rp_x + rp_w/2.0 # ruler body part annotation - x axis
78
+ rpa_y = rp_y # ruler body part annotation - y axis
79
+ bar_width = rp_w*fs
80
+ part = 'part_two'
81
+ rpa_text = ruler_anno_shink_cf(bar_width, part)
82
+
83
+ ax.annotate(rpa_text, (fx+fs*rpa_x, fx+fs*rpa_y), color='#9F9D9C', weight='bold',
84
+ fontsize=rp_note_fontsize, ha='center', va='center')
85
+
86
+ # ruler body - part three - poor
87
+ rp_x = rp_x + rp_w # the x-axis value of this part
88
+ rp_y = ru_y - 0.07 # the y-axis value of this part
89
+ rp_w = ru_w * (ticks_values_list[3]-ticks_values_list[2])/ticks_range # the width value of this part
90
+ rp_h = ru_h
91
+ rp_c = cd["tomato"]
92
+ ruler_body_part_thr = mpatches.Rectangle([fx+rp_x*fs, fy+rp_y*fs],
93
+ rp_w*fs, rp_h*fs, facecolor=rp_c, edgecolor=rp_edgecolor, lw=1)
94
+
95
+ # print('ruler_body_part_three rp_w*fs, rp_h*fs: ', rp_w*fs, rp_h*fs)
96
+ rpa_x = rp_x + rp_w/2.0 # ruler body part annotation - x axis
97
+ rpa_y = rp_y # ruler body part annotation - y axis
98
+ bar_width = rp_w*fs
99
+ part = 'part_three'
100
+ rpa_text = ruler_anno_shink_cf(bar_width, part)
101
+
102
+ ax.annotate(rpa_text, (fx+fs*rpa_x, fx+fs*rpa_y), color='w', weight='bold',
103
+ fontsize=rp_note_fontsize, ha='center', va='center')
104
+
105
+ ax.add_artist(ruler_body_part_one)
106
+ ax.add_artist(ruler_body_part_two)
107
+ ax.add_artist(ruler_body_part_thr)
108
+
109
+
110
+ # ruler ticks labels
111
+
112
+ rt_fs = fontsize # the fontsize of ruler ticks labels
113
+ rt_c = "grey" # the font color of ruler ticks labels
114
+ rt_va = u'bottom'
115
+ rt_ha = u'center'
116
+ rt_fontweight = "light"
117
+
118
+ ru_rt_y = -0.18 # ruler ticks y-axis in relation to the ruler y-axis
119
+
120
+ tick = ticks_values_list[0]
121
+ rt_x = ru_x + (tick-ticks_min)/ticks_range
122
+ rt_y = ru_y + ru_rt_y
123
+ tick_value = f"{tick:1.1f}"
124
+ tick_label_one = mpltext.Text(x=fx+rt_x*fs, y=fy+rt_y*fs, text=f'{tick_value}',
125
+ va=rt_va, color=rt_c, ha=rt_ha, fontweight=rt_fontweight, fontsize=rt_fs)
126
+
127
+ tick = ticks_values_list[1]
128
+ tick_pct = (tick-ticks_min)/ticks_range
129
+ rt_x = ru_x + tick_pct
130
+ rt_y = ru_y + ru_rt_y
131
+
132
+ # conditionally remove the tick_value label when it's too close to the edges
133
+ if (tick_pct < 0.2) or (tick_pct > 0.8):
134
+ tick_value = ''
135
+ else:
136
+ tick_value = f"{tick:1.1f}"
137
+ tick_label_two = mpltext.Text(x=fx+rt_x*fs, y=fy+rt_y*fs, text=f'{tick_value}',
138
+ va=rt_va, color=rt_c, ha=rt_ha, fontweight=rt_fontweight, fontsize=rt_fs)
139
+
140
+ tick = ticks_values_list[2]
141
+ tick_pct = (tick-ticks_min)/ticks_range
142
+ rt_x = ru_x + tick_pct
143
+ rt_y = ru_y + ru_rt_y
144
+
145
+ # conditionally remove the tick_value label when it's too close to the edges
146
+ if (tick_pct < 0.2) or (tick_pct > 0.8):
147
+ tick_value = ''
148
+ else:
149
+ tick_value = f"{tick:1.1f}"
150
+ tick_label_thr = mpltext.Text(x=fx+rt_x*fs, y=fy+rt_y*fs, text=f'{tick_value}',
151
+ va=rt_va, color=rt_c, ha=rt_ha, fontweight=rt_fontweight, fontsize=rt_fs)
152
+
153
+ tick = ticks_values_list[3]
154
+ rt_x = ru_x + (tick-ticks_min)/ticks_range
155
+ rt_y = ru_y + ru_rt_y
156
+ tick_value = f"{tick:1.1f}"
157
+ tick_label_four = mpltext.Text(x=fx+rt_x*fs, y=fy+rt_y*fs, text=f'{tick_value}',
158
+ va=rt_va, color=rt_c, ha=rt_ha, fontweight=rt_fontweight, fontsize=rt_fs)
159
+
160
+ ax.add_artist(tick_label_one)
161
+ ax.add_artist(tick_label_two)
162
+ ax.add_artist(tick_label_thr)
163
+ ax.add_artist(tick_label_four)
164
+
165
+ # ruler indicator
166
+ indicator_value = consumption_mwh_cur
167
+ rih_x = ru_x + (indicator_value-ticks_min)/ticks_range # x-axis value of the ruler indicator head
168
+ rih_y = ru_y + 0.084 # y-axis value of the ruler indicator head
169
+ rih_r = 0.045
170
+
171
+ indicator_head = mpatches.Circle((fx+(rih_x)*fs, fy+rih_y*fs), rih_r*fs,
172
+ fc="w", color = "w", ec="k", lw=1.3, zorder=10
173
+ ) #path_effects=[path_effects.withSimplePatchShadow()]
174
+
175
+ rib_x = ru_x + (indicator_value-ticks_min)/ticks_range # x-axis value of the ruler indicator head
176
+ rib_y = ru_y - 0.09 # y-axis value of the ruler indicator head
177
+ rib_w = 0.02
178
+ rib_h = ru_h * 2
179
+
180
+ indicator_body = mpatches.Rectangle([fx+(rib_x-rib_w/2)*fs, fy+rib_y*fs], rib_w*fs, rib_h*fs,
181
+ fc="w", ec="k", lw=1.3, zorder=10) #path_effects=[path_effects.withSimplePatchShadow()]
182
+ ax.add_artist(indicator_body)
183
+ ax.add_artist(indicator_head)
184
+
185
+ ## title
186
+
187
+ tt_x = ru_x + ru_w/2
188
+ tt_y = ru_y - 0.26
189
+ #title = f"BBP Benchmarking (REEB)"
190
+ #tt_c = '#9F9D9C'
191
+ #title_text = mpltext.Text(x=fx+tt_x*fs, y=fy+tt_y*fs, text=f'{title}',
192
+ #va="center", ha="center", color=tt_c, fontweight="normal", fontsize=12) #fontfamily='serif'
193
+
194
+ #ax.add_artist(title_text)
@@ -0,0 +1,24 @@
1
+
2
+
3
+ # ruler annotation shinking config
4
+
5
+ config_dict = {'full_name': {'size_lim': 0.11, 'names': {'part_one': "GOOD", 'part_two': 'NORM', 'part_three': 'POOR'}},
6
+ 'shrink_name': {'size_lim': 0.08, 'names': {'part_one': "GD", 'part_two': 'NR', 'part_three': 'PR'}},
7
+ 'short_name': {'size_lim': 0.06, 'names': {'part_one': "G", 'part_two': 'N', 'part_three': 'P'}},
8
+ 'null_name': {'size_lim': 0.05, 'names': {'part_one': "", 'part_two': '', 'part_three': ''}},
9
+ }
10
+
11
+ def ruler_anno_shink_cf(bar_width, part):
12
+
13
+ if bar_width > config_dict['full_name']['size_lim']:
14
+ rpa_text = config_dict['full_name']['names'][part]
15
+ elif bar_width > config_dict['shrink_name']['size_lim']:
16
+ rpa_text = config_dict['shrink_name']['names'][part]
17
+ elif bar_width > config_dict['short_name']['size_lim']:
18
+ rpa_text = config_dict['short_name']['names'][part]
19
+ else:
20
+ rpa_text = config_dict['null_name']['names'][part]
21
+
22
+ return rpa_text
23
+
24
+