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,4 @@
1
+
2
+ class MondayProcessorException(Exception):
3
+ def __init__(self, *args: object) -> None:
4
+ super().__init__(*args)
@@ -0,0 +1,5 @@
1
+ from ..MondayProcessorException import MondayProcessorException
2
+
3
+ class MondayProcessorNoColumInBoard(MondayProcessorException):
4
+ def __init__(self, *args: object) -> None:
5
+ super().__init__(*args)
@@ -0,0 +1,5 @@
1
+ from ..MondayProcessorException import MondayProcessorException
2
+
3
+ class MondayProcessorNoGroupsInBoard(MondayProcessorException):
4
+ def __init__(self, *args: object) -> None:
5
+ super().__init__(*args)
@@ -0,0 +1,6 @@
1
+
2
+ from ..MondayProcessorException import MondayProcessorException
3
+
4
+ class MondayProcessorNoItemInGroup(MondayProcessorException):
5
+ def __init__(self, *args: object) -> None:
6
+ super().__init__(*args)
@@ -0,0 +1,7 @@
1
+
2
+
3
+ from ..MondayProcessorException import MondayProcessorException
4
+
5
+ class MondayProcessorPageNotSupported(MondayProcessorException):
6
+ def __init__(self, *args: object) -> None:
7
+ super().__init__(*args)
@@ -0,0 +1,8 @@
1
+
2
+ from .MondayProcessorException import MondayProcessorException
3
+ from .MondayProcessorBoardNotFound import MondayProcessorBoardNotFound
4
+ from .MondayProcessorNoColumInBoard import MondayProcessorNoColumInBoard
5
+ from .MondayProcessorNoGroupsInBoard import MondayProcessorNoGroupsInBoard
6
+ from .MondayProcessorNoItemInGroup import MondayProcessorNoItemInGroup
7
+ from .MondayProcessorBoardColumnNotMatch import MondayProcessorBoardColumnNotMatch
8
+ from .MondayProcessorPageNotSupported import MondayProcessorPageNotSupported
@@ -0,0 +1,40 @@
1
+ #!/usr/bin/env python
2
+ # -*- coding: utf-8 -*-
3
+ #author: Xiao Wang
4
+ # x.wang@cloudfmgroup.com
5
+ # Created: 05/04/2023
6
+
7
+ from .DataProcessor import DataProcessor
8
+ from monday import MondayClient
9
+
10
+ class MondayProcessor(DataProcessor):
11
+
12
+ from .launchInteractiveProcess import launchInteractiveProcess
13
+ from ._fetchBoardById import _fetchBoardById
14
+ from ._fetchBoardLogsById import _fetchBoardLogsById
15
+ from ._fetchGroups import _fetchGroups
16
+ from ._fetchPrismConf import _fetchPrismConf
17
+ from ._fetchPrismConfByBoard import _fetchPrismConfByBoard
18
+ from ._fetchPrismConfByGroup import _fetchPrismConfByGroup
19
+ from ._fetchColumnValueByGroup import _fetchColumnValueByGroup
20
+ from ._searchConfColumnIds import _searchConfColumnIds
21
+ from ._searchColumnIdsByName import _searchColumnIdsByName
22
+ from ._searchConfColumnIdsMatch import _searchConfColumnIdsMatch
23
+
24
+ def __init__(self, MONDAY_TOKEN) -> None:
25
+ super().__init__()
26
+ self._token = MONDAY_TOKEN
27
+ self.monday = MondayClient(self._token)
28
+
29
+
30
+ if __name__ == "__main__":
31
+
32
+ mp = MondayProcessor()
33
+ # mp._fetchBoardById(4246692749)
34
+ # mp._fetchPrismConfByGroup(board_id=4246692749, groupId="topics", columns=["ct_type", "color", "prism_channel_no_9", "status1" ])
35
+ ConfColumnIds = mp._searchConfColumnIds(4246692749)
36
+ mp._fetchPrismConfByGroup(board_id=4246692749, groupId="topics", columns=ConfColumnIds)
37
+ # mp._fetchGroups(4246692749)
38
+ # mp._fetchPrismConf(4246692749)
39
+ # df = mp.launchInteractiveProcess(4246692749)
40
+ # print(df)
@@ -0,0 +1,13 @@
1
+ import requests
2
+
3
+ def _fetchBoardById(self, board_id:int):
4
+ headers = {"Authorization": self._token,
5
+ "API-Version": '2024-01'}
6
+ data = {"query": f'''query {{
7
+ boards (ids:{board_id}){{
8
+ id
9
+ name
10
+ }}
11
+ }}'''}
12
+ r = requests.post('https://api.monday.com/v2', headers=headers, data=data)
13
+ return r.json()
@@ -0,0 +1,33 @@
1
+ import requests
2
+
3
+ # def _fetchBoardLogsById(self, board_id:int):
4
+ # headers = {"Authorization": self._token}
5
+ # data = {"query": f'''query {{
6
+ # boards (ids:{board_id}){
7
+ # activity_logs (limit: 10) {
8
+ # id
9
+ # name
10
+ # }}
11
+ # }}'''}
12
+ # r = requests.post('https://api.monday.com/v2', headers=headers, data=data)
13
+ # return r.json()
14
+
15
+ def _fetchBoardLogsById(self, board_id, limit=1):
16
+ headers = {"Authorization": self._token,
17
+ "API-Version": '2024-01'}
18
+ data = {"query": f'''query {{
19
+ boards (ids:{board_id}){{
20
+ activity_logs (limit: {limit}) {{
21
+ id
22
+ event
23
+ created_at
24
+ }}
25
+ }}
26
+ }}'''}
27
+ r = requests.post('https://api.monday.com/v2', headers=headers, json=data)
28
+
29
+ data = r.json()
30
+ if 'data' not in data:
31
+ print(data)
32
+
33
+ return data
@@ -0,0 +1,103 @@
1
+ from typing import List
2
+ import requests
3
+
4
+
5
+ from .MondayProcessorExceptions_ import (
6
+ MondayProcessorBoardNotFound,
7
+ MondayProcessorNoColumInBoard,
8
+ MondayProcessorNoItemInGroup,
9
+ MondayProcessorPageNotSupported
10
+ )
11
+
12
+ def _fetchColumnValueByGroup(self, board_id:int, groupId:str, columns:List[str]):
13
+
14
+ column_ids = []
15
+
16
+ for column_name in columns:
17
+ for column_id in self._searchColumnIdsByName(board_id, column_name=column_name):
18
+ column_ids.append(column_id)
19
+
20
+ columns_str = '["' + '","'.join(column_ids) + '"]'
21
+ # columns_index = ["ct", "phase", "channel", "sn", "powerSupplyPhase"]
22
+ # columnsDict = dict(zip(columns,columns_index))
23
+ headers = {"Authorization": self._token,
24
+ "API-Version": '2024-01'}
25
+ data = {"query": f'''query {{
26
+ boards (ids:{board_id}){{
27
+ id
28
+ name
29
+ groups(ids:"{groupId}"){{
30
+ id
31
+ items_page(limit:500){{
32
+ cursor
33
+ items{{
34
+ id
35
+ name
36
+ column_values(ids:{columns_str}){{
37
+ column{{
38
+ title
39
+ }}
40
+ type
41
+ text
42
+ ... on BoardRelationValue {{
43
+ display_value
44
+ }}
45
+ ... on LinkValue {{
46
+ url_text
47
+ }}
48
+ ... on CheckboxValue {{
49
+ checked
50
+ }}
51
+ }}
52
+ }}
53
+ }}
54
+
55
+ }}
56
+ }}
57
+ }}'''}
58
+ r = requests.post('https://api.monday.com/v2', headers=headers, json=data)
59
+ data = r.json()
60
+ if 'data' not in data:
61
+ print(data)
62
+ # print(data)
63
+ boards = data['data']['boards']
64
+ if(len(boards) <1):
65
+ raise MondayProcessorBoardNotFound(f"Monday board id ({board_id}) not found when perform MondayProcessor._searchConfColumnIds")
66
+ groups = boards[0]['groups']
67
+ if(len(groups) < 1):
68
+ raise MondayProcessorNoColumInBoard(f"No column in board {board_id}")
69
+ items_page = groups[0]['items_page']
70
+ if items_page['cursor'] is not None:
71
+ raise MondayProcessorPageNotSupported(f"The items on page exceeded the limit 500, board {board_id}, group {groupId}!")
72
+
73
+ items = items_page['items']
74
+ if(len(items) < 1):
75
+ raise MondayProcessorNoItemInGroup(f"No column in board {board_id}, group {groupId}")
76
+
77
+ ret = []
78
+ for item in items:
79
+ # print('item:', item)
80
+ tmpDict = {}
81
+ if 'Name' in columns:
82
+ tmpDict['Name'] = item['name']
83
+ for v in item["column_values"]:
84
+
85
+ if v["type"] == 'board_relation':
86
+ tmpDict[v['column']["title"]] = v["display_value"]
87
+ elif v["type"] == "link":
88
+ tmpDict[v['column']["title"]] = v["url_text"]
89
+ elif v["type"] == "checkbox":
90
+ tmpDict[v['column']["title"]] = v["checked"]
91
+ else:
92
+ tmpDict[v['column']["title"]] = v["text"]
93
+ # key = v["id"]
94
+ # ai = v["additional_info"]
95
+ # tmpDict[key]= None if ai== None else json.loads(ai)["label"]
96
+ # try:
97
+ # ch = tmpDict["channel"]
98
+ # chN = int(ch)
99
+ # tmpDict["channel"] = chN
100
+ # except:
101
+ # tmpDict["channel"] = None
102
+ ret.append(tmpDict)
103
+ return ret
@@ -0,0 +1,19 @@
1
+ from typing import List
2
+
3
+ from .MondayProcessorExceptions_ import (
4
+ MondayProcessorBoardNotFound,
5
+ MondayProcessorNoColumInBoard
6
+ )
7
+
8
+ def _fetchGroups(self, board_id:int) -> List[str]:
9
+ data = self.monday.groups.get_groups_by_board(board_ids=board_id)
10
+ boards = data['data']['boards']
11
+ if(len(boards) <1):
12
+ raise MondayProcessorBoardNotFound(f"Monday board id ({board_id}) not found when perform MondayProcessor._searchConfColumnIds")
13
+ groups = boards[0]['groups']
14
+ if(len(groups) < 1):
15
+ raise MondayProcessorNoColumInBoard(f"No column in board {board_id}")
16
+ ret = {x["id"]:x["title"] for x in groups}
17
+ # print(groups)
18
+ # print(ret)
19
+ return ret
@@ -0,0 +1,10 @@
1
+ from typing import List
2
+
3
+ def _fetchPrismConf(self, board_id:int)->List[dict]:
4
+ confColumnIds = self._searchConfColumnIds(board_id=board_id)
5
+ groupIds = self._fetchGroups(board_id=board_id)
6
+ ret = []
7
+ for gId in groupIds:
8
+ items = self._fetchPrismConfByGroup(board_id=board_id, groupId=gId, columns=confColumnIds)
9
+ ret.extend(items)
10
+ return ret
@@ -0,0 +1,83 @@
1
+
2
+ from typing import List
3
+ import requests
4
+
5
+ from .MondayProcessorExceptions_ import (
6
+ MondayProcessorBoardNotFound,
7
+ MondayProcessorNoColumInBoard,
8
+ MondayProcessorNoItemInGroup
9
+ )
10
+
11
+
12
+ def _fetchPrismConfByBoard(self, board_id:int, columns:List[str]):
13
+
14
+ column_ids = []
15
+
16
+ for column_name in columns:
17
+ for column_id in self._searchColumnIdsByName(board_id, column_name=column_name):
18
+ column_ids.append(column_id)
19
+
20
+ columns_str = '["' + '","'.join(column_ids) + '"]'
21
+ columns_index = ["ct", "phase", "channel", "sn", "powerSupplyPhase"]
22
+ columnsDict = dict(zip(columns,columns_index))
23
+ headers = {"Authorization": self._token,
24
+ "API-Version": '2024-01'}
25
+ data = {"query": f'''query {{
26
+ boards (ids:{board_id}){{
27
+ id
28
+ name
29
+ groups(){{
30
+ id
31
+ title
32
+ items_page(limit:500) {{
33
+ cursor
34
+ items{{
35
+ id
36
+ name
37
+ column_values(ids:{columns_str}){{
38
+ column{{title}}
39
+ text
40
+ }}
41
+ }}
42
+ }}
43
+
44
+ }}
45
+ }}
46
+ }}'''}
47
+ r = requests.post('https://api.monday.com/v2', headers=headers, json=data)
48
+ data = r.json()
49
+ if 'data' not in data:
50
+ print(data)
51
+ boards = data['data']['boards']
52
+ if(len(boards) <1):
53
+ raise MondayProcessorBoardNotFound(f"Monday board id ({board_id}) not found when perform MondayProcessor._searchConfColumnIds")
54
+ groups = boards[0]['groups']
55
+ if(len(groups) < 1):
56
+ raise MondayProcessorNoColumInBoard(f"No column in board {board_id}")
57
+
58
+ ret = []
59
+ for group in groups:
60
+ groupId = group['id']
61
+ items = group['items_page']['items']
62
+ if(len(items) < 1):
63
+ raise MondayProcessorNoItemInGroup(f"No column in board {board_id}, group {groupId}")
64
+
65
+ for item in items:
66
+ print('item:', item)
67
+ tmpDict = {}
68
+ if 'Name' in columns:
69
+ tmpDict['Name'] = item['name']
70
+ tmpDict['building_name'] = group["title"]
71
+ for v in item["column_values"]:
72
+ tmpDict[v["column"]["title"]] = v["text"]
73
+ # key = v["id"]
74
+ # ai = v["additional_info"]
75
+ # tmpDict[key]= None if ai== None else json.loads(ai)["label"]
76
+ # try:
77
+ # ch = tmpDict["channel"]
78
+ # chN = int(ch)
79
+ # tmpDict["channel"] = chN
80
+ # except:
81
+ # tmpDict["channel"] = None
82
+ ret.append(tmpDict)
83
+ return ret
@@ -0,0 +1,89 @@
1
+ from typing import List
2
+ import requests
3
+
4
+
5
+ from .MondayProcessorExceptions_ import (
6
+ MondayProcessorBoardNotFound,
7
+ MondayProcessorNoColumInBoard,
8
+ MondayProcessorNoItemInGroup,
9
+ MondayProcessorPageNotSupported
10
+ )
11
+
12
+ def _fetchPrismConfByGroup(self, board_id:int, groupId:str, columns:List[str]):
13
+
14
+ column_ids = []
15
+
16
+ for column_name in columns:
17
+ for column_id in self._searchColumnIdsByName(board_id, column_name=column_name):
18
+ column_ids.append(column_id)
19
+
20
+ columns_str = '["' + '","'.join(column_ids) + '"]'
21
+ columns_index = ["ct", "phase", "channel", "sn", "powerSupplyPhase"]
22
+ columnsDict = dict(zip(columns,columns_index))
23
+ headers = {"Authorization": self._token,
24
+ # "Content-Type": 'application/json',
25
+ "API-Version": '2024-01'}
26
+
27
+ graphql_query = f'''query {{
28
+ boards (ids:{board_id}){{
29
+ id
30
+ name
31
+ groups(ids:"{groupId}"){{
32
+ id
33
+ items_page(limit:500){{
34
+ cursor
35
+ items{{
36
+ id
37
+ name
38
+ column_values(ids:{columns_str}){{
39
+ column{{
40
+ title
41
+ }}
42
+ text
43
+ }}
44
+ }}
45
+ }}
46
+
47
+ }}
48
+ }}
49
+ }}'''
50
+
51
+ data = {"query": graphql_query}
52
+
53
+ r = requests.post('https://api.monday.com/v2', headers=headers, json=data)
54
+ data = r.json()
55
+ if 'data' not in data:
56
+ print(data)
57
+ boards = data['data']['boards']
58
+ if(len(boards) <1):
59
+ raise MondayProcessorBoardNotFound(f"Monday board id ({board_id}) not found when perform MondayProcessor._searchConfColumnIds")
60
+ groups = boards[0]['groups']
61
+ if(len(groups) < 1):
62
+ raise MondayProcessorNoColumInBoard(f"No column in board {board_id}")
63
+ items_page = groups[0]['items_page']
64
+ if items_page['cursor'] is not None:
65
+ raise MondayProcessorPageNotSupported(f"The items on page exceeded the limit 500, board {board_id}, group {groupId}!")
66
+
67
+ items = items_page['items']
68
+ if(len(items) < 1):
69
+ raise MondayProcessorNoItemInGroup(f"No column in board {board_id}, group {groupId}")
70
+
71
+ ret = []
72
+ for item in items:
73
+ # print('item:', item)
74
+ tmpDict = {}
75
+ if 'Name' in columns:
76
+ tmpDict['Name'] = item['name']
77
+ for v in item["column_values"]:
78
+ tmpDict[v['column']["title"]] = v["text"]
79
+ # key = v["id"]
80
+ # ai = v["additional_info"]
81
+ # tmpDict[key]= None if ai== None else json.loads(ai)["label"]
82
+ # try:
83
+ # ch = tmpDict["channel"]
84
+ # chN = int(ch)
85
+ # tmpDict["channel"] = chN
86
+ # except:
87
+ # tmpDict["channel"] = None
88
+ ret.append(tmpDict)
89
+ return ret
@@ -0,0 +1,23 @@
1
+ from typing import List
2
+
3
+ from .MondayProcessorExceptions_ import (
4
+ MondayProcessorBoardNotFound,
5
+ MondayProcessorNoColumInBoard,
6
+ MondayProcessorBoardColumnNotMatch
7
+ )
8
+
9
+ def _searchColumnIdsByName(self, board_id:int, column_name:str) -> List[str]:
10
+ data = self.monday.boards.fetch_columns_by_board_id(board_ids=board_id)
11
+ boards = data['data']['boards']
12
+ if(len(boards) <1):
13
+ raise MondayProcessorBoardNotFound(f"Monday board id ({board_id}) not found when perform MondayProcessor._searchConfColumnIds")
14
+ columns = boards[0]['columns']
15
+ if(len(columns) < 1):
16
+ raise MondayProcessorNoColumInBoard(f"No column in board {board_id}")
17
+ # = boards[0][groups]
18
+ # print("columns: ", columns)
19
+ ColumnId = self._searchConfColumnIdsMatch(columns=columns,includeList=[column_name])
20
+ if (ColumnId == None): raise MondayProcessorBoardColumnNotMatch("cannot find a column with this name")
21
+
22
+ ret = [ColumnId]
23
+ return ret
@@ -0,0 +1,30 @@
1
+ from typing import List
2
+
3
+ from .MondayProcessorExceptions_ import (
4
+ MondayProcessorBoardNotFound,
5
+ MondayProcessorNoColumInBoard,
6
+ MondayProcessorBoardColumnNotMatch
7
+ )
8
+
9
+ def _searchConfColumnIds(self, board_id:int) -> List[str]:
10
+ data = self.monday.boards.fetch_columns_by_board_id(board_ids=board_id)
11
+ boards = data['data']['boards']
12
+ if(len(boards) <1):
13
+ raise MondayProcessorBoardNotFound(f"Monday board id ({board_id}) not found when perform MondayProcessor._searchConfColumnIds")
14
+ columns = boards[0]['columns']
15
+ if(len(columns) < 1):
16
+ raise MondayProcessorNoColumInBoard(f"No column in board {board_id}")
17
+ # = boards[0][groups]
18
+ ctColumnId = self._searchConfColumnIdsMatch(columns=columns,includeList=["ct","type"])
19
+ if (ctColumnId == None): raise MondayProcessorBoardColumnNotMatch("cannot find CT type column")
20
+ phaseColumnId = self._searchConfColumnIdsMatch(columns=columns,includeList=["L1","L2","L3"], excludeList=["supply"])
21
+ if (phaseColumnId == None): raise MondayProcessorBoardColumnNotMatch("cannot find circuit phase column")
22
+ channelColumnId = self._searchConfColumnIdsMatch(columns=columns,includeList=["channel","no"])
23
+ if (channelColumnId == None): raise MondayProcessorBoardColumnNotMatch("cannot find PRISM channel column")
24
+ snColumnId = self._searchConfColumnIdsMatch(columns=columns,includeList=["ID","PRISM"])
25
+ if (snColumnId == None): raise MondayProcessorBoardColumnNotMatch("cannot find PRISM SN column")
26
+ powerSupplyPhaseColumnId = self._searchConfColumnIdsMatch(columns=columns,includeList=["PRISM","supply","phase"])
27
+ if (powerSupplyPhaseColumnId == None): raise MondayProcessorBoardColumnNotMatch("cannot find PRISM power supply phase column")
28
+
29
+ ret = [ctColumnId, phaseColumnId, channelColumnId, snColumnId, powerSupplyPhaseColumnId]
30
+ return ret
@@ -0,0 +1,20 @@
1
+ from typing import List, Union
2
+
3
+ def _searchConfColumnIdsMatch(self, columns, includeList:List[str], excludeList:List[str] = [])-> Union[str,None]:
4
+ for c in columns:
5
+ title:str = c["title"]
6
+ id = c["id"]
7
+ flag = True
8
+ for item in includeList:
9
+ if item.lower() not in title.lower():
10
+ flag = False
11
+ break
12
+ if(not flag): continue
13
+ flag = True
14
+ for item in excludeList:
15
+ if item.lower() in title.lower():
16
+ flag = False
17
+ break
18
+ if(not flag): continue
19
+ return id
20
+ return None
@@ -0,0 +1,11 @@
1
+
2
+ from .boards import boards
3
+
4
+ def graphql_query(board_id, group_id, column_values_ids):
5
+
6
+ graphql_query = f'''query {{
7
+ {boards(board_id, group_id, column_values_ids)}
8
+ }}'''
9
+
10
+ return graphql_query
11
+
@@ -0,0 +1,12 @@
1
+
2
+ from .groups import groups
3
+
4
+ def boards(id, group_id, column_values_ids):
5
+ boards = f'''
6
+ boards (ids:{id}){{
7
+ id
8
+ name
9
+ {groups(group_id, column_values_ids)}
10
+ }}
11
+ '''
12
+ return boards
@@ -0,0 +1,11 @@
1
+ from .items_page import items_page
2
+
3
+ def groups(id, column_values_ids):
4
+ groups = f'''
5
+ groups(ids:"{id}"){{
6
+ id
7
+ {items_page(column_values_ids)}
8
+
9
+ }}
10
+ '''
11
+ return groups
@@ -0,0 +1,10 @@
1
+ from .items import items
2
+
3
+ def items_page(column_values_ids):
4
+ items_page = f"""
5
+ items_page(limit:500){{
6
+ cursor
7
+ {items(column_values_ids)}
8
+ }}
9
+ """
10
+ return items_page
@@ -0,0 +1,12 @@
1
+
2
+ from .column_values import column_values
3
+
4
+ def items(column_values_ids):
5
+ items = f"""
6
+ items{{
7
+ id
8
+ name
9
+ {column_values(column_values_ids)}
10
+ }}
11
+ """
12
+ return items
@@ -0,0 +1,10 @@
1
+ from .column import column
2
+
3
+ def column_values(ids):
4
+ column_values = f"""
5
+ column_values (ids:{ids}) {{
6
+ {column}
7
+ text
8
+ }}
9
+ """
10
+ return column_values
@@ -0,0 +1,7 @@
1
+ import pandas as pd
2
+
3
+ def launchInteractiveProcess(self, board_id:int) -> pd.DataFrame:
4
+ data = self._fetchPrismConf(board_id)
5
+ df = pd.DataFrame.from_records(data)
6
+ # print(df.head(10))
7
+ return df
@@ -0,0 +1,4 @@
1
+ import os.path, sys
2
+ file_path = os.path.realpath(__file__)
3
+ dir_path = os.path.dirname(file_path)
4
+ sys.path.append(dir_path)
@@ -0,0 +1,47 @@
1
+
2
+ import functools
3
+ import pandas as pd
4
+ import os
5
+ import pickle
6
+
7
+ # note: this function require the cached module function names to be unique
8
+ # note: this function can be only applied to functions returning dataframe now
9
+
10
+ def cache_return(_func=None):
11
+ def decorator(func):
12
+ func_name = func.__name__
13
+ @functools.wraps(func)
14
+ def wrapper(*args, **kwargs):
15
+
16
+ caching = kwargs.pop('caching', False)
17
+ flushing = kwargs.pop('flushing', False)
18
+ cache_path = kwargs.pop('cache_path', './_cache_')
19
+
20
+ if caching:
21
+ if not os.path.exists(cache_path):
22
+ os.makedirs(cache_path)
23
+
24
+ # dir_path = os.path.dirname(os.path.realpath(__file__))
25
+ pkl_path = f'{cache_path}/{func_name}.pkl'
26
+ if os.path.exists(pkl_path) and not flushing:
27
+ with open(pkl_path, 'rb') as file:
28
+ df_value = pd.compat.pickle_compat.load(file)
29
+ # df_value = pickle.load(file)
30
+
31
+ print(f'[INFO]: the value of function [{func_name}] has been obtained from {cache_path}!')
32
+ return df_value
33
+
34
+ df_value = func(*args, **kwargs)
35
+
36
+ if caching:
37
+ with open(pkl_path, 'wb') as file:
38
+ pickle.dump(df_value, file)
39
+ print(f'[INFO]: the value of function [{func_name}] has been cached under {cache_path}!')
40
+
41
+ return df_value
42
+ return wrapper
43
+
44
+ if _func is None:
45
+ return decorator
46
+ else:
47
+ return decorator(_func)