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,26 @@
1
+ import matplotlib.ticker as ticker
2
+
3
+ def set_x_tick_and_lim(ax, x_ticks_labels, df_pivot_working_hours_sorted,
4
+ fontsize=None):
5
+
6
+ if fontsize is None:
7
+ fontsize = 13
8
+
9
+ df_pivot_working_hours_sorted_reset = df_pivot_working_hours_sorted.reset_index(drop=True)
10
+
11
+ # set up the x-ticks and xlim
12
+ ax.tick_params(axis='x', which='major', pad=8, length=2, labelsize=fontsize)
13
+
14
+ x_tick_pad = 0.99
15
+ top_index = df_pivot_working_hours_sorted_reset.index.min() - x_tick_pad
16
+ bot_index = df_pivot_working_hours_sorted_reset.index.max() + x_tick_pad
17
+ ax.set_xlim([top_index, bot_index])
18
+
19
+ # used to handle the below warning:
20
+ ax.xaxis.set_major_locator(ticker.MultipleLocator(1)) # ValueError: The number of FixedLocator locations (5), usually from a call to set_ticks, does not match the number of labels (8).
21
+
22
+ # fixing yticks with matplotlib.ticker "FixedLocator": UserWarning: FixedFormatter should only be used together with FixedLocator
23
+ ticks_loc = ax.get_xticks().tolist()
24
+ # print(f'{ticks_loc = }')
25
+ ax.xaxis.set_major_locator(ticker.FixedLocator(ticks_loc))
26
+ ax.set_xticklabels(x_ticks_labels, fontsize=fontsize)
@@ -0,0 +1,31 @@
1
+ import matplotlib.ticker as ticker
2
+
3
+ def setup_y_tick_lim_label_zero_line(ax, ls_ylim, display_unit, formatter,
4
+ freqstr=None,
5
+ fontsize=None):
6
+
7
+ if freqstr is None:
8
+ freqstr == 'M'
9
+
10
+ if fontsize is None:
11
+ fontsize = 13
12
+
13
+ # move the y_tick to the right
14
+ ax.yaxis.tick_right()
15
+ ax.yaxis.set_label_position("right")
16
+ ax.tick_params(axis='y', which='major', pad=9, length=5, labelsize=fontsize)
17
+ ax.set_ylim(ls_ylim)
18
+
19
+ # set y label
20
+ if freqstr == 'M':
21
+ y_label = f"Monthly Usage ({display_unit})"
22
+ else:
23
+ y_label = f"Weekly Usage ({display_unit})"
24
+
25
+ ax.set_ylabel(y_label, labelpad= 18, fontsize =fontsize)
26
+
27
+ # set yaxis formatter
28
+ ax.yaxis.set_major_formatter(ticker.FormatStrFormatter(formatter))
29
+
30
+ # plot the zero value horizontal line
31
+ ax.axhline(y=0, color='k', linestyle=':', zorder=-1)
@@ -0,0 +1,43 @@
1
+ import pandas as pd
2
+ from itertools import product
3
+
4
+ from .patch_missing_ooh_periods_sign import patch_missing_ooh_periods_sign
5
+
6
+ def preprocessing_for_period_barchart(df_meta_with_value,
7
+ sign_column=None,
8
+ period_column=None,
9
+ ooh_column=None,
10
+ kwh_column=None,
11
+ no_of_period=None):
12
+ if sign_column is None:
13
+ sign_column = 'neg_sign'
14
+
15
+ if period_column is None:
16
+ period_column = "period"
17
+
18
+ if ooh_column is None:
19
+ ooh_column = "out_of_hours"
20
+
21
+ if kwh_column is None:
22
+ kwh_column = "kwh"
23
+
24
+ if no_of_period is None:
25
+ no_of_period = 6
26
+
27
+ df_meta_with_value[sign_column] = df_meta_with_value[kwh_column].lt(0)
28
+
29
+ df_grouped_working_hours_period = df_meta_with_value.groupby([sign_column, period_column, ooh_column])[kwh_column].sum()
30
+
31
+ period_max = df_meta_with_value[period_column].max() # todo: check whether there are other better ways for getting the max period, as it might be missing also
32
+
33
+ # handle the situation that not all groups exist
34
+ df_grouped_working_hours_period = patch_missing_ooh_periods_sign(df_grouped_working_hours_period, period_max,
35
+ no_of_period=no_of_period)
36
+
37
+ df_grouped_working_hours_period_unstacked = df_grouped_working_hours_period.unstack([sign_column, ooh_column])
38
+ df_grouped_working_hours_period_unstacked = df_grouped_working_hours_period_unstacked.sort_index()
39
+
40
+ # convert the unit from kwh to mwh
41
+ df_grouped_working_hours_period_unstacked = df_grouped_working_hours_period_unstacked.div(1000)
42
+
43
+ return df_grouped_working_hours_period_unstacked
@@ -0,0 +1,23 @@
1
+
2
+ import pandas as pd
3
+ from itertools import product
4
+
5
+ def patch_missing_ooh_periods_sign(df_grouped_working_hours_period,
6
+ period_max,
7
+ no_of_period=None):
8
+
9
+ if no_of_period is None:
10
+ no_of_period = 6
11
+
12
+ # handle the situation that not all groups exist
13
+ expected_sign = [True, False]
14
+ expected_periods = [period_max-i for i in range(no_of_period)]
15
+ expected_working_hours = [True, False]
16
+ expected_group_index = pd.Index(product(expected_sign, expected_periods, expected_working_hours))
17
+
18
+ missing_group_index = expected_group_index.drop(df_grouped_working_hours_period.index)
19
+
20
+ for indice in missing_group_index:
21
+ df_grouped_working_hours_period.loc[indice] = 0
22
+
23
+ return df_grouped_working_hours_period
@@ -0,0 +1,56 @@
1
+
2
+ import io
3
+ import matplotlib.pyplot as plt
4
+
5
+
6
+ from .preprocessing_for_piechart import preprocessing_for_piechart
7
+ from .preprocessing_for_phases import preprocessing_for_phases
8
+ from .plot_adaptive_ring_with_phase import plot_adaptive_ring_with_phase
9
+
10
+
11
+ def generate_piechart_with_phase(df_meta_with_value,
12
+ colors=None,
13
+ hatches=None,
14
+ reading_interval_in_mins=None,
15
+ asset_group=None,
16
+ minimum_cnt_for_protection=None,
17
+ max_display_cnt=None,
18
+ sum_column=None,
19
+ pct_column=None,
20
+ gene_column=None,
21
+ fontsize=None,
22
+ directory_to_savefig=None
23
+ ):
24
+
25
+ df_sort_idx_trim = preprocessing_for_piechart(df_meta_with_value,
26
+ reading_interval_in_mins=reading_interval_in_mins,
27
+ asset_group=asset_group,
28
+ minimum_cnt_for_protection=minimum_cnt_for_protection,
29
+ max_display_cnt=max_display_cnt,
30
+ sum_column=sum_column,
31
+ pct_column=pct_column,
32
+ gene_column=gene_column)
33
+
34
+ phase_values_list = preprocessing_for_phases(df_meta_with_value,
35
+ reading_interval_in_mins=reading_interval_in_mins)
36
+
37
+ plot_adaptive_ring_with_phase(df_sort_idx_trim, phase_values_list,
38
+ colors=colors,
39
+ hatches=hatches,
40
+ sum_column=sum_column,
41
+ pct_column=pct_column,
42
+ gene_column=gene_column,
43
+ fontsize=fontsize,
44
+ )
45
+
46
+ png_name = 'consumption_by_assetclass_piechart_with_phase.png'
47
+ if directory_to_savefig == None:
48
+ png_object = io.BytesIO()
49
+ plt.savefig(png_object, format='png', dpi=200)
50
+ plt.close()
51
+ return {png_name: png_object}
52
+ else:
53
+ png_path = directory_to_savefig + png_name
54
+ plt.savefig(png_path, format='png', dpi=200)
55
+ plt.close()
56
+ return {png_name: png_path}
@@ -0,0 +1,109 @@
1
+
2
+ import matplotlib.pyplot as plt
3
+
4
+ from .plot_ring import plot_ring
5
+ from .plot_centre_pct import plot_centre_pct
6
+ from .show_legend import show_legend
7
+ from .plot_phase_balance import plot_phase_balance
8
+
9
+ # cd = {"tomato": '#FF836A',
10
+ # "aquablue": '#6DC2B3',
11
+ # "peach": '#FED6D2',
12
+ # "darkgrey": '#9F9D9C',
13
+ # "potato": '#FEF8C8',
14
+ # "cyan": '#B6E4E1',
15
+ # "dimgray":'#696969',
16
+ # "Seafoam":'#87e0cf',
17
+ # "gainsboro":'#DCDCDC',
18
+ # "grey": '#808080',
19
+ # "brown": '#964B00',
20
+ # "black": '#000000'}
21
+
22
+ def plot_adaptive_ring_with_phase(df_pre_pie,
23
+ phase_values_list,
24
+ colors=None,
25
+ hatches=None,
26
+ sum_column = None,
27
+ pct_column = None,
28
+ gene_column = None,
29
+ fontsize=None,
30
+ ):
31
+
32
+ if colors is None:
33
+ from .colors import colors
34
+
35
+ if hatches is None:
36
+ from .hatches import hatches
37
+
38
+ if sum_column is None:
39
+ sum_column = "sum_abs"
40
+
41
+ if gene_column is None:
42
+ gene_column = 'generator'
43
+
44
+ fig, ax = plt.subplots(1, 1, figsize=(9, 3.5))
45
+
46
+ # gs = fig.add_gridspec(2, hspace=0)
47
+ # axs = gs.subplots(sharex=True, sharey=True)
48
+
49
+ if df_pre_pie[gene_column].nunique() == 2:
50
+
51
+ sr_outer = df_pre_pie.loc[df_pre_pie[gene_column]==False, sum_column]
52
+ sr_inner = df_pre_pie.loc[df_pre_pie[gene_column]==True, sum_column]
53
+ gap_value = sr_inner.sum() - sr_outer.sum()
54
+ outer_ring_inner_radius = 0.55
55
+ asset_total = sr_inner.sum() + sr_outer.sum()
56
+ else:
57
+ sr_outer = df_pre_pie[sum_column]
58
+ gap_value = None
59
+ outer_ring_inner_radius = 0.50
60
+ asset_total = sr_outer.sum()
61
+
62
+ print('consumption_mwh_subchannel_sum: ', asset_total/1000) # debug
63
+
64
+ # plot the outer ring
65
+ plot_ring(sr_outer, ax,
66
+ colors=colors,
67
+ fontsize=fontsize,
68
+ gap_value=gap_value,
69
+ outer_radius=1,
70
+ inner_radius=outer_ring_inner_radius,
71
+ ann_pct=True,
72
+ as_inner_ring=False)
73
+
74
+ # plot the inner ring and pct text in the middle conditionally
75
+ if df_pre_pie[gene_column].nunique() == 2:
76
+ plot_ring(sr_inner, ax,
77
+ hatch=hatches,
78
+ fontsize=fontsize,
79
+ gap_value=-gap_value,
80
+ outer_radius=0.5,
81
+ inner_radius=0.3,
82
+ ann_pct=False,
83
+ as_inner_ring=True)
84
+
85
+ assets_source_pct = sr_inner.sum()/sr_outer.sum()
86
+ plot_centre_pct(ax, assets_source_pct,
87
+ fontsize=fontsize)
88
+
89
+ show_legend(ax, df_pre_pie,
90
+ fontsize=fontsize,
91
+ sum_column=sum_column,
92
+ pct_column=pct_column)
93
+
94
+ # ruler settings
95
+ ru_x = 0.01 # the x-axis of phase balance ruler
96
+ ru_y = 0 # the x-axis of phase balance ruler
97
+ ru_w = 2 # the width of phase balance ruler
98
+ ru_h = 0.06 # the height of phase balance ruler
99
+
100
+ plot_phase_balance(ax, phase_values_list,
101
+ fontsize=fontsize,
102
+ ru_x=ru_x,
103
+ ru_y=ru_y,
104
+ ru_h=ru_h,
105
+ ru_w=ru_w)
106
+
107
+ fig.tight_layout(pad=0, rect=[-0.2, -0.0, 0.608, 0.99])
108
+
109
+ ax.set_ylim(-1.75, 1.6)
@@ -0,0 +1,28 @@
1
+
2
+
3
+ colors = ['#6DC2B3',
4
+ '#FF836A',
5
+ '#FED6D2',
6
+ '#9F9D9C',
7
+ '#B6E4E1',
8
+ '#FEF8C8',
9
+ '#CFCDCD',
10
+ '#9DE7BE',
11
+ '#f7baad',
12
+ '#b3fff2',
13
+ '#F7D8BA']
14
+
15
+ # backup/archive copy
16
+
17
+ cd = {"aquablue": '#6DC2B3',
18
+ "tomato": '#FF836A',
19
+ "peach": '#FED6D2',
20
+ "darkgrey": '#9F9D9C',
21
+ "cyan": '#B6E4E1',
22
+ "potato": '#FEF8C8',
23
+ "dimgray":'#696969',
24
+ "Seafoam":'#87e0cf',
25
+ "gainsboro":'#DCDCDC',
26
+ "grey": '#808080',
27
+ "brown": '#964B00',
28
+ "black": '#000000'}
@@ -0,0 +1,28 @@
1
+
2
+ import matplotlib.pyplot as plt
3
+
4
+
5
+
6
+ def plot_centre_pct(ax, assets_source_pct,
7
+ fontsize=None):
8
+
9
+ if fontsize is None:
10
+ fontsize = 13
11
+
12
+ assets_source_pct_value = assets_source_pct*100
13
+
14
+ # print(f'{assets_source_pct_value = }')
15
+ # ensure the digits are readable
16
+ if assets_source_pct_value >= 1:
17
+ assets_source_pct_fmt = f'{assets_source_pct_value:.0f}%'
18
+ elif assets_source_pct_value >= 0.1:
19
+ assets_source_pct_fmt = f'{assets_source_pct_value:.1f}%'
20
+ elif assets_source_pct_value >= 0.01:
21
+ assets_source_pct_fmt = f'{(assets_source_pct_value*10):.1f}‰'
22
+ else:
23
+ assets_source_pct_fmt = f'<0.1‰'
24
+
25
+ ax.text(0, 0, assets_source_pct_fmt,
26
+ fontsize=fontsize,
27
+ horizontalalignment='center',
28
+ verticalalignment='center')
@@ -0,0 +1,42 @@
1
+
2
+ # import matplotlib.patches as mpatches
3
+
4
+ from .plot_phase_balance_part import plot_phase_balance_part
5
+ from .get_tick_values import get_tick_values
6
+ from .get_phase_markers import get_phase_markers
7
+
8
+ color_dict = {"grey": '#808080',
9
+ "brown": '#964B00',
10
+ "black": '#000000'}
11
+
12
+ def plot_phase_balance(ax, phase_values_list,
13
+ fontsize=None,
14
+ ru_x=None,
15
+ ru_y=None,
16
+ ru_h=None,
17
+ ru_w=None):
18
+
19
+ phase_markers_list = get_phase_markers(phase_values_list)
20
+
21
+ part_control_ls = [{'ruler_part_color': color_dict["brown"],
22
+ 'phase_marker': phase_markers_list[0],
23
+ 'part': 'part_one',
24
+ 'part_idx': 1},
25
+ {'ruler_part_color': color_dict["black"],
26
+ 'phase_marker': phase_markers_list[1],
27
+ 'part': 'part_two',
28
+ 'part_idx': 2},
29
+ {'ruler_part_color': color_dict["grey"],
30
+ 'phase_marker': phase_markers_list[2],
31
+ 'part': 'part_three',
32
+ 'part_idx': 3}]
33
+
34
+ ticks_values_list = get_tick_values(phase_values_list)
35
+
36
+ for part_control in part_control_ls:
37
+ plot_phase_balance_part(ax, ticks_values_list, part_control,
38
+ fontsize=fontsize,
39
+ ru_x=ru_x,
40
+ ru_y=ru_y,
41
+ ru_h=ru_h,
42
+ ru_w=ru_w)
@@ -0,0 +1,28 @@
1
+
2
+
3
+ def get_phase_markers(phase_values_list,
4
+ var_allowance_pct=None):
5
+
6
+ balanced_avg_value = sum(phase_values_list)/3
7
+
8
+ if var_allowance_pct is None:
9
+ var_allowance_pct = 0.04
10
+
11
+ var_allowance_value = balanced_avg_value * var_allowance_pct
12
+
13
+ markers_list = []
14
+ for phase_value in phase_values_list:
15
+
16
+ if phase_value > (balanced_avg_value + var_allowance_value):
17
+ marker_text = '>'
18
+ elif phase_value > (balanced_avg_value - var_allowance_value):
19
+ marker_text = '='
20
+ elif phase_value > 0:
21
+ marker_text = '<'
22
+ else:
23
+ marker_text = '?'
24
+
25
+ markers_list.append(marker_text)
26
+
27
+ return markers_list
28
+
@@ -0,0 +1,44 @@
1
+
2
+ import pandas as pd
3
+
4
+ def get_tick_values(phase_values_list,
5
+ min_visible_pct=None):
6
+
7
+ if min_visible_pct is None:
8
+ min_visible_pct = 0.077
9
+
10
+ df_phase = pd.DataFrame({'phase_value': phase_values_list})
11
+
12
+ total_value = df_phase['phase_value'].sum()
13
+
14
+ # setup the threshold
15
+ min_visible_value = total_value * min_visible_pct
16
+
17
+ # label the visibility
18
+ df_phase['min_visible_value'] = min_visible_value
19
+ df_phase['visible'] = df_phase['phase_value'].gt(min_visible_value)
20
+
21
+ # separate by visibility
22
+ df_phase_visible = df_phase.loc[df_phase['visible']]
23
+ df_phase_invisible = df_phase.loc[~df_phase['visible']]
24
+
25
+ # get adjusted value for invisible part
26
+ df_phase_invisible['adj_value'] = df_phase_invisible['min_visible_value']
27
+
28
+ # get adjusted value for visible part
29
+ compensation = df_phase_invisible['adj_value'].sum() - df_phase_invisible['phase_value'].sum()
30
+ visible_orig_sum = df_phase_visible['phase_value'].sum()
31
+ shrink_pct = (visible_orig_sum - compensation)/visible_orig_sum
32
+ df_phase_visible['adj_value'] = df_phase_visible['phase_value'] * shrink_pct
33
+
34
+ # combine the visible and invisible parts back
35
+ df_phase_adj = pd.concat([df_phase_visible, df_phase_invisible]).sort_index()
36
+
37
+ # get the tick values
38
+ df_phase_adj['tick_value'] = df_phase_adj['adj_value'].cumsum()
39
+
40
+ non_zero_tick_values = df_phase_adj['tick_value'].to_list()
41
+
42
+ tick_values_list = [0, *non_zero_tick_values]
43
+
44
+ return tick_values_list
@@ -0,0 +1,108 @@
1
+
2
+ import matplotlib.patches as mpatches
3
+
4
+ from .ruler_anno_shink_cf import ruler_anno_shink_cf
5
+
6
+ def plot_phase_balance_part(ax, ticks_values_list, part_control,
7
+ fontsize=None,
8
+ fx=None,
9
+ fy=None,
10
+ fs=None,
11
+ ru_x=None,
12
+ ru_y=None,
13
+ ru_h=None,
14
+ ru_w=None):
15
+
16
+ if fontsize is None:
17
+ fontsize = 13
18
+
19
+ # fancy box setting
20
+ if fx is None:
21
+ fx = -1 # fancy box x-axis value
22
+ if fy is None:
23
+ fy = -1.3 # fancy box y-axis value
24
+ if fs is None:
25
+ fs = 1 # fancy box scale factor
26
+
27
+ # ruler settings
28
+ if ru_x is None:
29
+ ru_x = 0 # the x-axis of benchmarking ruler
30
+ if ru_y is None:
31
+ ru_y = 0 # the x-axis of benchmarking ruler
32
+ if ru_h is None:
33
+ ru_h = 0.03 # the height of benchmarking ruler
34
+ if ru_w is None:
35
+ ru_w = 1 # the width of benchmarking ruler
36
+
37
+ ruler_part_color = part_control['ruler_part_color']
38
+ part = part_control['part']
39
+ part_idx = part_control['part_idx']
40
+ phase_marker = part_control['phase_marker']
41
+ # text_color = part_control['text_color']
42
+
43
+ # ticks range
44
+ ticks_max = max(ticks_values_list)
45
+ ticks_min = min(ticks_values_list)
46
+ ticks_range = ticks_max - ticks_min
47
+
48
+ # rp_edgecolor = 'k' # edgecolor of the ruler body parts
49
+ 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
50
+
51
+ # ruler body - rectangle bar
52
+ rp_x = ru_x + ru_w * (ticks_values_list[part_idx-1]-ticks_min)/ticks_range # the x-axis value of this part
53
+ rp_y = ru_y - 0.03 # - 0.1 # 0.14 # the y-axis value of this part
54
+ rp_pct = (ticks_values_list[part_idx]-ticks_values_list[part_idx-1])/ticks_range
55
+ rp_w = ru_w * rp_pct # the width value of this part
56
+ rp_h = ru_h
57
+ rp_c = ruler_part_color
58
+ ruler_body_part = mpatches.Rectangle([fx+rp_x*fs, fy+rp_y*fs], rp_w*fs, rp_h*fs,
59
+ facecolor=rp_c,
60
+ edgecolor='w',
61
+ lw=2)
62
+ ax.add_artist(ruler_body_part)
63
+
64
+ # ruler body - annotation on the bar
65
+ rpa_x = rp_x + rp_w/2.0 # ruler body part annotation - x axis
66
+ rpa_y = rp_y + 0.076 # ruler body part annotation - y axis
67
+ bar_width = rp_w*fs
68
+ # part = 'part_one'
69
+ rpa_text = ruler_anno_shink_cf(bar_width, part)
70
+
71
+ ax.annotate(rpa_text, (fx+fs*rpa_x, fy+fs*rpa_y),
72
+ color= 'w', # '#B87333', # text_color,
73
+ weight='extra bold',
74
+ fontsize=rp_note_fontsize,
75
+ ha='center',
76
+ va='center')
77
+
78
+ # ruler body - marker symbol below the bar
79
+ rps_x = rp_x + rp_w/2.0 # ruler body part annotation - x axis
80
+ sym_pad_y = (-0.18)
81
+ rps_y = rp_y + sym_pad_y # ruler body part annotation - y axis
82
+ bar_width = rp_w*fs
83
+ rp_maker_fontsize = fontsize +2 # make it bigger than the annotation text, to be more visible
84
+
85
+ # print(f'{rp_pct = }')
86
+
87
+ # balance_value = 1./3
88
+ # variance_allowance = 0.04/3
89
+
90
+ # if rp_pct > (balance_value + variance_allowance):
91
+ # rps_text = '>'
92
+ # elif rp_pct > (balance_value - variance_allowance):
93
+ # rps_text = '='
94
+ # elif rp_pct > 0:
95
+ # rps_text = '<'
96
+ # else:
97
+ # rps_text = '?'
98
+
99
+ # rpa_text = ruler_anno_shink_cf(bar_width, part)
100
+ symbol_color = 'k'
101
+
102
+ ax.annotate(phase_marker, (fx+fs*rps_x, fy+fs*rps_y),
103
+ color=symbol_color,
104
+ weight='extra bold',
105
+ fontsize=rp_maker_fontsize,
106
+ ha='center',
107
+ va='center')
108
+
@@ -0,0 +1,29 @@
1
+
2
+
3
+ # ruler annotation shinking config
4
+
5
+ config_dict = {'full_name': {'size_lim': 0.11*2,
6
+ 'names': {'part_one': "",
7
+ 'part_two': '',
8
+ 'part_three': ''}},
9
+ 'short_name': {'size_lim': 0.035*2,
10
+ 'names': {'part_one': "",
11
+ 'part_two': '',
12
+ 'part_three': ''}},
13
+ 'null_name': {'size_lim': 0.03*2,
14
+ 'names': {'part_one': "",
15
+ 'part_two': '',
16
+ 'part_three': ''}},
17
+ }
18
+
19
+
20
+ def ruler_anno_shink_cf(bar_width, part):
21
+
22
+ if bar_width > config_dict['full_name']['size_lim']:
23
+ rpa_text = config_dict['full_name']['names'][part]
24
+ elif bar_width > config_dict['short_name']['size_lim']:
25
+ rpa_text = config_dict['short_name']['names'][part]
26
+ else:
27
+ rpa_text = config_dict['null_name']['names'][part]
28
+
29
+ return rpa_text
@@ -0,0 +1,35 @@
1
+
2
+
3
+ # ruler annotation shinking config
4
+
5
+ config_dict = {'full_name': {'size_lim': 0.11,
6
+ 'names': {'part_one': "L1",
7
+ 'part_two': 'L2',
8
+ 'part_three': 'L3'}},
9
+ 'shrink_name': {'size_lim': 0.08,
10
+ 'names': {'part_one': "L1",
11
+ 'part_two': 'L2',
12
+ 'part_three': 'L3'}},
13
+ 'short_name': {'size_lim': 0.06,
14
+ 'names': {'part_one': "1",
15
+ 'part_two': '2',
16
+ 'part_three': '3'}},
17
+ 'null_name': {'size_lim': 0.05,
18
+ 'names': {'part_one': "",
19
+ 'part_two': '',
20
+ 'part_three': ''}},
21
+ }
22
+
23
+
24
+ def ruler_anno_shink_cf(bar_width, part):
25
+
26
+ if bar_width > config_dict['full_name']['size_lim']:
27
+ rpa_text = config_dict['full_name']['names'][part]
28
+ elif bar_width > config_dict['shrink_name']['size_lim']:
29
+ rpa_text = config_dict['shrink_name']['names'][part]
30
+ elif bar_width > config_dict['short_name']['size_lim']:
31
+ rpa_text = config_dict['short_name']['names'][part]
32
+ else:
33
+ rpa_text = config_dict['null_name']['names'][part]
34
+
35
+ return rpa_text