#--------------------------------------------------------
# FISCAL YEAR CONFIGURATION
#--------------------------------------------------------
# 1. Calculate the actual Current and Previous FY strings based on the system date
# (Fiscal Year starts October 1st)
CALC_YYYY := $(shell date +%Y)
CALC_MM := $(shell date +%m)
ifeq ($(shell [ $(CALC_MM) -ge 10 ] && echo 1), 1)
# If October or later, CURRENT is next year, PREVIOUS is this year
ACTUAL_CURRENT_FY := FY$(shell echo $$(($(CALC_YYYY) + 1)) | cut -c 3-4)
ACTUAL_PREVIOUS_FY := FY$(shell echo $(CALC_YYYY) | cut -c 3-4)
else
# If Jan-Sept, CURRENT is this year, PREVIOUS is last year
ACTUAL_CURRENT_FY := FY$(shell echo $(CALC_YYYY) | cut -c 3-4)
ACTUAL_PREVIOUS_FY := FY$(shell echo $$(($(CALC_YYYY) - 1)) | cut -c 3-4)
endif
# 2. Set the requested year (Default to CURRENT, can be overridden: make FISCAL_YEAR=FY24)
FISCAL_YEAR ?= CURRENT
# 3. Resolve the "Labeling Year" (For folders and titles)
RESOLVED_FY := $(FISCAL_YEAR)
ifeq ($(FISCAL_YEAR), CURRENT)
RESOLVED_FY := $(ACTUAL_CURRENT_FY)
endif
ifeq ($(FISCAL_YEAR), PREVIOUS)
RESOLVED_FY := $(ACTUAL_PREVIOUS_FY)
endif
# 4. Data Source Selection (Aliases stay aliases for live-updating links)
URL_KEY := $(FISCAL_YEAR)
#--------------------------------------------------------
# EXPORT MODULE URLS (Modular Definition)
#--------------------------------------------------------
# LIVE UPDATING LINKS (Neoserra modules set to "Fiscal Year: Current" or "Previous")
# These will always point to the rolling data regardless of the actual year.
CURRENT_TRAININGS_URL := https://pasbdc.neoserra.com/api/export?userid=6694&appid=189&appkey=e4c003ea-2216-48ae-ba76-2ebdef30848b
CURRENT_NBS_URL := https://pasbdc.neoserra.com/api/export?userid=6694&appid=187&appkey=1ebb99d3-551c-44f1-803f-f8cd09c8286f
CURRENT_CAPITAL_URL := https://pasbdc.neoserra.com/api/export?userid=6694&appid=188&appkey=1a37972c-8757-4447-b301-59e7ca65f7ea
CURRENT_CLIENT_LIST_URL := https://pasbdc.neoserra.com/api/export?userid=6694&appid=186&appkey=f0e90ceb-8063-44c2-8cc9-4949ca89763a
PREVIOUS_TRAININGS_URL := https://pasbdc.neoserra.com/api/export?userid=6694&appid=181&appkey=bc03174a-f36c-45a6-a933-0f6e28062e9c
PREVIOUS_NBS_URL := https://pasbdc.neoserra.com/api/export?userid=6694&appid=182&appkey=9b47f8c2-1ad5-4499-812c-742eddf149b9
PREVIOUS_CAPITAL_URL := https://pasbdc.neoserra.com/api/export?userid=6694&appid=183&appkey=08515f8b-8d52-4eb5-a85c-5c3b49261b4b
PREVIOUS_CLIENT_LIST_URL := https://pasbdc.neoserra.com/api/export?userid=6694&appid=184&appkey=72de7830-d65f-4ce3-9b0e-ab872d1bd41e
# ARCHIVED YEAR LINKS (Static keys for specific years)
# FY22
FY22_TRAININGS_URL := https://pasbdc.neoserra.com/api/export?userid=6694&appid=195&appkey=44d5cb65-dc5a-4f9a-b5ed-6c8fe4209a59
FY22_NBS_URL := https://pasbdc.neoserra.com/api/export?userid=6694&appid=198&appkey=857a32f8-efbe-4953-b4b6-0ed6809f286d
FY22_CAPITAL_URL := https://pasbdc.neoserra.com/api/export?userid=6694&appid=201&appkey=71bb27aa-4377-4322-8660-ae9b34b4d376
FY22_CLIENT_LIST_URL := https://pasbdc.neoserra.com/api/export?userid=6694&appid=192&appkey=75045c21-fb95-46e5-8ace-a3e3d67fa15e
# FY23
FY23_TRAININGS_URL := https://pasbdc.neoserra.com/api/export?userid=6694&appid=196&appkey=f372244a-7a1b-4627-b951-2241140d0e00
FY23_NBS_URL := https://pasbdc.neoserra.com/api/export?userid=6694&appid=199&appkey=040dab27-3886-4f8a-8d37-b75cd31c5925
FY23_CAPITAL_URL := https://pasbdc.neoserra.com/api/export?userid=6694&appid=202&appkey=16b9db95-12c8-48bc-ab8c-3dbf09803eb6
FY23_CLIENT_LIST_URL := https://pasbdc.neoserra.com/api/export?userid=6694&appid=193&appkey=bf10c884-7bdc-4d4e-ab6c-9b1752581bf5
# FY24
FY24_TRAININGS_URL := https://pasbdc.neoserra.com/api/export?userid=6694&appid=197&appkey=46e8bba5-4d94-460e-9a1b-e8435cf9f1d5
FY24_NBS_URL := https://pasbdc.neoserra.com/api/export?userid=6694&appid=200&appkey=958b9064-2e18-4643-82b3-a821922f7037
FY24_CAPITAL_URL := https://pasbdc.neoserra.com/api/export?userid=6694&appid=203&appkey=fbf5319c-c564-441d-8482-f1bd380671fb
FY24_CLIENT_LIST_URL := https://pasbdc.neoserra.com/api/export?userid=6694&appid=194&appkey=5e7c1d91-2292-4758-87b9-d4dd986e30e9
# 5. Computed Variable Selection: Fetch the URLs based on the URL_KEY
TRAININGS_EXPORT_URL := $($(URL_KEY)_TRAININGS_URL)
NBS_EXPORT_URL := $($(URL_KEY)_NBS_URL)
CAPITAL_EXPORT_URL := $($(URL_KEY)_CAPITAL_URL)
CLIENT_LIST_EXPORT_URL := $($(URL_KEY)_CLIENT_LIST_URL)
USE_EXPORT_MODULE ?= true
#--------------------------------------------------------
# CORE SETTINGS
#--------------------------------------------------------
# The home folder for this year's report
REPORT_ROOT_FOLDER := reports/$(RESOLVED_FY)
# This list defines all of the OUTPUT center names that will be seen in the final report. Some of the scripts need
# a list of center names to expect so that it can find the files on the filesystem
# Here an underscore represents a space. We have to do this as make's list syntax sees a space to separate list items
CENTERS_LIST := Z-Lead_Office \
Wilkes \
Shippensburg \
Widener \
Penn_State \
Bucknell \
St._Francis \
St._Vincent \
Gannon \
Clarion \
Temple \
Scranton \
Lehigh \
Duquesne \
Pittsburgh \
Kutztown
# Center Flags to be passed into scripts
# (loop over each center, replace _ with " ", and format as -c
CENTER_FLAGS:=$(foreach x,$(CENTERS_LIST),-c "$(subst _, ,$(x))")
# The paths to each input CSV file required to produce the report
# Set to . if you want it to look in the same directory as the make file
CSV_FOLDER:=csv_files
# Dynamic CSV paths based on RESOLVED_FY
TRAININGS_CSV:=$(CSV_FOLDER)/trainings_raw_$(RESOLVED_FY).csv
CLIENT_LIST_CSV:=$(CSV_FOLDER)/client_list_raw_$(RESOLVED_FY).csv
NBS_MILESTONE_CSV:=$(CSV_FOLDER)/nbs_milestones_raw_$(RESOLVED_FY).csv
FUNDING_MILESTONE_CSV:=$(CSV_FOLDER)/funding_milestones_raw_$(RESOLVED_FY).csv
SIGNUP_TO_START_CSV:=$(CSV_FOLDER)/days_client_signup_to_start_$(RESOLVED_FY).csv
SIGNUP_TO_COUNSELLING_CSV:=$(CSV_FOLDER)/days_client_signup_to_counselling_$(RESOLVED_FY).csv
START_TO_COUNSELLING_CSV:=$(CSV_FOLDER)/days_client_start_to_counselling_$(RESOLVED_FY).csv
INITIAL_TO_FOLLOWUP_CSV:=$(CSV_FOLDER)/days_initial_to_followup_$(RESOLVED_FY).csv
TRAINING_TO_COUNSELLING_CSV:=$(CSV_FOLDER)/days_training_to_counselling_$(RESOLVED_FY).csv
SATISFACTION_SURVEY_CSV:=$(CSV_FOLDER)/satisfaction_survey_raw_$(RESOLVED_FY).csv
ifeq ($(USE_EXPORT_MODULE), true)
TRAINING_SCRIPT_ARGS := --exportmoduleurl "$(TRAININGS_EXPORT_URL)"
NBS_SCRIPT_ARGS := --exportmoduleurl "$(NBS_EXPORT_URL)"
CAPITAL_SCRIPT_ARGS := --exportmoduleurl "$(CAPITAL_EXPORT_URL)"
CLIENT_SCRIPT_ARGS := --exportmoduleurl "$(CLIENT_LIST_EXPORT_URL)"
# Arguments for the make_milestone_analysis.py script which uses different flag names
SECTION_3_MILESTONES_ARGS := --fundingexportmodule "$(CAPITAL_EXPORT_URL)" --nbsexportmodule "$(NBS_EXPORT_URL)"
# When using API, don't require local CSV files to exist
TRAININGS_CSV_DEP :=
CLIENT_LIST_CSV_DEP :=
NBS_MILESTONE_CSV_DEP :=
FUNDING_MILESTONE_CSV_DEP :=
SIGNUP_TO_START_CSV_DEP :=
SIGNUP_TO_COUNSELLING_CSV_DEP :=
START_TO_COUNSELLING_CSV_DEP :=
INITIAL_TO_FOLLOWUP_CSV_DEP :=
TRAINING_TO_COUNSELLING_CSV_DEP :=
SATISFACTION_SURVEY_CSV_DEP :=
else
TRAINING_SCRIPT_ARGS := --inputcsv $(TRAININGS_CSV)
NBS_SCRIPT_ARGS := --inputcsv $(NBS_MILESTONE_CSV)
CAPITAL_SCRIPT_ARGS := --inputcsv $(FUNDING_MILESTONE_CSV)
CLIENT_SCRIPT_ARGS := --inputcsv $(CLIENT_LIST_CSV)
# Arguments for the make_milestone_analysis.py script which uses different flag names
SECTION_3_MILESTONES_ARGS := --fundingcsv $(FUNDING_MILESTONE_CSV) --nbscsv $(NBS_MILESTONE_CSV)
# When using local files, they MUST exist
TRAININGS_CSV_DEP := $(TRAININGS_CSV)
CLIENT_LIST_CSV_DEP := $(CLIENT_LIST_CSV)
NBS_MILESTONE_CSV_DEP := $(NBS_MILESTONE_CSV)
FUNDING_MILESTONE_CSV_DEP := $(FUNDING_MILESTONE_CSV)
SIGNUP_TO_START_CSV_DEP := $(SIGNUP_TO_START_CSV)
SIGNUP_TO_COUNSELLING_CSV_DEP := $(SIGNUP_TO_COUNSELLING_CSV)
START_TO_COUNSELLING_CSV_DEP := $(START_TO_COUNSELLING_CSV)
INITIAL_TO_FOLLOWUP_CSV_DEP := $(INITIAL_TO_FOLLOWUP_CSV)
TRAINING_TO_COUNSELLING_CSV_DEP := $(TRAINING_TO_COUNSELLING_CSV)
SATISFACTION_SURVEY_CSV_DEP := $(SATISFACTION_SURVEY_CSV)
endif
#--------------------------------------------------------
# SECTION 1 VARIABLES
#--------------------------------------------------------
# What to call each subfolder containing the images for a single report
# They will each be created underneath the root folder
SECTION_1_COUNSELLING_INTERVAL_FOLDER:=section_1_counselling_interval_graphs
SECTION_1_MILESTONE_FOLDER:=section_1_milestone_analysis_graphs
SECTION_1_NAICS_FOLDER:=section_1_naics_coverage_graphs
SECTION_1_SATISFACTION_FOLDER:=section_1_satisfaction_ananlysis_graphs
SECTION_1_TRAININGS_FOLDER:=section_1_trainings_analysis_graphs
# What to call each word file within the report
# These are paths so they both say what folder to place the file in and what to call
# the file
SECTION_1_TRAININGS_WORD_FILE_NAME:=$(REPORT_ROOT_FOLDER)/section_1_trainings_analysis_$(RESOLVED_FY).docx
SECTION_1_COUNSELLING_INTERVAL_WORD_FILE_NAME:=$(REPORT_ROOT_FOLDER)/section_1_counselling_interval_analysis_$(RESOLVED_FY).docx
SECTION_1_MILESTONE_WORD_FILE_NAME:=$(REPORT_ROOT_FOLDER)/section_1_milestone_analysis_$(RESOLVED_FY).docx
SECTION_1_SATISFACTION_SURVEY_WORD_FILE_NAME:=$(REPORT_ROOT_FOLDER)/section_1_satisfaction_analysis_$(RESOLVED_FY).docx
SECTION_1_NAICS_WORD_FILE_NAME:=$(REPORT_ROOT_FOLDER)/section_1_naics_coverage_$(RESOLVED_FY).docx
#--------------------------------------------------------
# SECTION 3 VARIABLES
#--------------------------------------------------------
# What to call each subfolder containing the images for a single report
# They will each be created underneath the root folder
SECTION_3_TRAININGS_TOPICS_FOLDER:=section_3_trainings_topic_analysis_graphs
SECTION_3_TRAININGS_FOLDER:=section_3_trainings_analysis_graphs
SECTION_3_MILESTONES_GRAPH_FOLDER:=section_3_milestone_graphs
# What to call each word file within the report
# These are paths so they both say what folder to place the file in and what to call
# the file
SECTION_3_TRAININGS_TOPICS_WORD_FILE_NAME:=$(REPORT_ROOT_FOLDER)/section_3_trainings_topics_analysis_$(RESOLVED_FY).docx
SECTION_3_TRAININGS_WORD_FOLDER:=$(REPORT_ROOT_FOLDER)/section_3_trainings_analysis_word
SECTION_3_MILESTONES_WORD_FOLDER:=$(REPORT_ROOT_FOLDER)/section_3_milestone_word_docs
# Set the appropriate location to the python executable based on OS
ifeq ($(OS),Windows_NT)
VENV_PYTHON:=.venv/Scripts/python.exe
RM_CMD:=rmdir /s /q
else
VENV_PYTHON:=.venv/bin/python3
RM_CMD:=rm -rf
endif
# Build the whole report
all: $(SECTION_1_TRAININGS_WORD_FILE_NAME) \
$(SECTION_1_COUNSELLING_INTERVAL_WORD_FILE_NAME) \
$(SECTION_1_MILESTONE_WORD_FILE_NAME) \
$(SECTION_1_SATISFACTION_SURVEY_WORD_FILE_NAME) \
$(SECTION_1_NAICS_WORD_FILE_NAME) \
$(SECTION_3_TRAININGS_TOPICS_WORD_FILE_NAME) \
$(SECTION_3_TRAININGS_WORD_FOLDER) \
$(SECTION_3_MILESTONES_WORD_FOLDER)
# Modular Year Targets
fy22:
$(MAKE) FISCAL_YEAR=FY22
fy23:
$(MAKE) FISCAL_YEAR=FY23
fy24:
$(MAKE) FISCAL_YEAR=FY24
current:
$(MAKE) FISCAL_YEAR=CURRENT
previous:
$(MAKE) FISCAL_YEAR=PREVIOUS
# Utility targets
clean:
$(RM_CMD) $(REPORT_ROOT_FOLDER)
# Count how many lines of code are in the project
lines:
cat \
section_1_datasets_module/section_1_datasets_module/*.py \
section_1_graph_export_module/*.py \
section_1_graph_library_module/section_1_graph_library_module/*.py \
section_1_word_export_scripts/*.py \
section_1_word_library_module/section_1_word_library_module/*.py \
section_3_graph_export_module/*.py \
section_3_graph_library_module/section_3_graph_library_module/*.py \
section_3_word_export_scripts/*.py \
section_3_word_library_module/section_3_word_library_module/*.py \
milestone_attribution_dataset_module/milestone_attribution_dataset_module/*.py \
milestone_attribution_graph_export_module/milestone_attribution_graph_export_module/*.py \
milestone_attribution_graph_library_module/milestone_attribution_graph_library_module/*.py \
milestone_attribution_word_export_module/*.py \
shared_tools_module/shared_tools_module/*.py \
libs/pasbdc_data_cleaning/pasbdc_data_cleaning/*.py \
libs/word_library/pasbdc_word_library/*.py \
makefile \
| wc -l \
.PHONY: all lines clean fy22 fy23 fy24 current previous
$(REPORT_ROOT_FOLDER):
-mkdir -p $(REPORT_ROOT_FOLDER)
requirements.txt:
echo "Requirements target"
#--------------------------------------------------------
# SECTION 1 NETWORK WIDE REPORT
#--------------------------------------------------------
#--------------------------------------------------------
# Counselling Interval Graph Generation and word document
#--------------------------------------------------------
$(REPORT_ROOT_FOLDER)/$(SECTION_1_COUNSELLING_INTERVAL_FOLDER): requirements.txt \
$(SIGNUP_TO_START_CSV_DEP) \
$(SIGNUP_TO_COUNSELLING_CSV_DEP) \
$(START_TO_COUNSELLING_CSV_DEP) \
$(INITIAL_TO_FOLLOWUP_CSV_DEP) \
$(TRAINING_TO_COUNSELLING_CSV_DEP) | $(REPORT_ROOT_FOLDER)
ifeq ($(USE_EXPORT_MODULE), false)
$(VENV_PYTHON) section_1_graph_export_module/counselling_interval_script.py \
--signuptostartcsv $(SIGNUP_TO_START_CSV) \
--signuptocounsellingcsv $(SIGNUP_TO_COUNSELLING_CSV) \
--starttocounsellingcsv $(START_TO_COUNSELLING_CSV) \
--initialtofollowupcsv $(INITIAL_TO_FOLLOWUP_CSV) \
--trainingtocounsellingcsv $(TRAINING_TO_COUNSELLING_CSV) \
--fiscalyear $(RESOLVED_FY) --outpath $(REPORT_ROOT_FOLDER)/$(SECTION_1_COUNSELLING_INTERVAL_FOLDER)
else
@echo "Skipping Counselling Interval graphs for $(RESOLVED_FY) (USE_EXPORT_MODULE is true)"
endif
$(SECTION_1_COUNSELLING_INTERVAL_WORD_FILE_NAME): $(REPORT_ROOT_FOLDER)/$(SECTION_1_COUNSELLING_INTERVAL_FOLDER)
ifeq ($(USE_EXPORT_MODULE), false)
$(VENV_PYTHON) section_1_word_export_scripts/counselling_interval_analysis.py \
--images $(REPORT_ROOT_FOLDER)/$(SECTION_1_COUNSELLING_INTERVAL_FOLDER) \
--output $(SECTION_1_COUNSELLING_INTERVAL_WORD_FILE_NAME)
else
@echo "Skipping Counselling Interval Word doc for $(RESOLVED_FY) (USE_EXPORT_MODULE is true)"
endif
#--------------------------------------------------------
# Trainings Analysis Graph and Word Generation
#--------------------------------------------------------
$(REPORT_ROOT_FOLDER)/$(SECTION_1_TRAININGS_FOLDER): requirements.txt $(TRAININGS_CSV_DEP) | $(REPORT_ROOT_FOLDER)
$(VENV_PYTHON) section_1_graph_export_module/trainings_analysis_script.py \
--fiscalyear $(RESOLVED_FY) \
--outpath $(REPORT_ROOT_FOLDER)/$(SECTION_1_TRAININGS_FOLDER) \
$(TRAINING_SCRIPT_ARGS)
$(SECTION_1_TRAININGS_WORD_FILE_NAME): $(REPORT_ROOT_FOLDER)/$(SECTION_1_TRAININGS_FOLDER)
$(VENV_PYTHON) section_1_word_export_scripts/generate_trainings_analysis_word.py \
--images $(REPORT_ROOT_FOLDER)/$(SECTION_1_TRAININGS_FOLDER) \
--output $(SECTION_1_TRAININGS_WORD_FILE_NAME) \
#--------------------------------------------------------
# Milestone Report Graph Generation
#--------------------------------------------------------
$(REPORT_ROOT_FOLDER)/$(SECTION_1_MILESTONE_FOLDER): requirements.txt $(NBS_MILESTONE_CSV_DEP) $(FUNDING_MILESTONE_CSV_DEP) | $(REPORT_ROOT_FOLDER)
$(VENV_PYTHON) section_1_graph_export_module/nbs_analysis_script.py \
--fiscalyear $(RESOLVED_FY) \
--outpath $(REPORT_ROOT_FOLDER)/$(SECTION_1_MILESTONE_FOLDER) \
$(NBS_SCRIPT_ARGS)
$(VENV_PYTHON) section_1_graph_export_module/funding_analysis_script.py \
--fiscalyear $(RESOLVED_FY) \
--outpath $(REPORT_ROOT_FOLDER)/$(SECTION_1_MILESTONE_FOLDER) \
$(CAPITAL_SCRIPT_ARGS)
$(SECTION_1_MILESTONE_WORD_FILE_NAME): $(REPORT_ROOT_FOLDER)/$(SECTION_1_MILESTONE_FOLDER)
$(VENV_PYTHON) section_1_word_export_scripts/make_nbs_funding_analysis.py\
--images $(REPORT_ROOT_FOLDER)/$(SECTION_1_MILESTONE_FOLDER) \
--output $(SECTION_1_MILESTONE_WORD_FILE_NAME)
#--------------------------------------------------------
# Satisfaction survey Graph and Word Generation
#--------------------------------------------------------
$(REPORT_ROOT_FOLDER)/$(SECTION_1_SATISFACTION_FOLDER): requirements.txt $(SATISFACTION_SURVEY_CSV_DEP) $(CLIENT_LIST_CSV_DEP) | $(REPORT_ROOT_FOLDER)
ifeq ($(USE_EXPORT_MODULE), false)
$(VENV_PYTHON) section_1_graph_export_module/satisfaction_survey_analysis_script.py \
--inputcsv $(SATISFACTION_SURVEY_CSV) \
--clientlistcsv $(CLIENT_LIST_CSV) \
--fiscalyear $(RESOLVED_FY) \
--outpath $(REPORT_ROOT_FOLDER)/$(SECTION_1_SATISFACTION_FOLDER)
else
@echo "Skipping Satisfaction Survey graphs for $(RESOLVED_FY) (USE_EXPORT_MODULE is true)"
endif
$(SECTION_1_SATISFACTION_SURVEY_WORD_FILE_NAME): $(REPORT_ROOT_FOLDER)/$(SECTION_1_SATISFACTION_FOLDER)
ifeq ($(USE_EXPORT_MODULE), false)
$(VENV_PYTHON) section_1_word_export_scripts/satisfaction_survey_word.py \
--images $(REPORT_ROOT_FOLDER)/$(SECTION_1_SATISFACTION_FOLDER) \
--output $(SECTION_1_SATISFACTION_SURVEY_WORD_FILE_NAME)
else
@echo "Skipping Satisfaction Survey Word doc for $(RESOLVED_FY) (USE_EXPORT_MODULE is true)"
endif
#--------------------------------------------------------
# NAICS coverage report graph and word generation
#--------------------------------------------------------
$(REPORT_ROOT_FOLDER)/$(SECTION_1_NAICS_FOLDER): requirements.txt $(CLIENT_LIST_CSV_DEP) | $(REPORT_ROOT_FOLDER)
$(VENV_PYTHON) section_1_graph_export_module/naics_census_analysis_script.py \
--fiscalyear $(RESOLVED_FY) \
--outpath $(REPORT_ROOT_FOLDER)/$(SECTION_1_NAICS_FOLDER) \
$(CLIENT_SCRIPT_ARGS)
$(SECTION_1_NAICS_WORD_FILE_NAME): $(REPORT_ROOT_FOLDER)/$(SECTION_1_NAICS_FOLDER)
$(VENV_PYTHON) section_1_word_export_scripts/generate_naics_word.py \
--images $(REPORT_ROOT_FOLDER)/$(SECTION_1_NAICS_FOLDER) \
--output $(SECTION_1_NAICS_WORD_FILE_NAME) \
#--------------------------------------------------------
# SECTION 3 CENTER SPECIFIC REPORT
#--------------------------------------------------------
#--------------------------------------------------------
# Center Specific Trainings Primary Topic Report Graph and Word Generation
#--------------------------------------------------------
$(REPORT_ROOT_FOLDER)/$(SECTION_3_TRAININGS_TOPICS_FOLDER): requirements.txt $(TRAININGS_CSV_DEP) | $(REPORT_ROOT_FOLDER)
$(VENV_PYTHON) section_3_graph_export_module/trainings_topic_per_center_script.py \
--fiscalyear $(RESOLVED_FY) \
--outpath $(REPORT_ROOT_FOLDER)/$(SECTION_3_TRAININGS_TOPICS_FOLDER) \
$(TRAINING_SCRIPT_ARGS)
$(SECTION_3_TRAININGS_TOPICS_WORD_FILE_NAME): $(REPORT_ROOT_FOLDER)/$(SECTION_3_TRAININGS_TOPICS_FOLDER)
$(VENV_PYTHON) section_3_word_export_scripts/generate_center_trainings_topic_analysis_word.py \
--images $(REPORT_ROOT_FOLDER)/$(SECTION_3_TRAININGS_TOPICS_FOLDER) \
--output $(SECTION_3_TRAININGS_TOPICS_WORD_FILE_NAME) \
--fiscalyear $(RESOLVED_FY) \
$(CENTER_FLAGS)
#--------------------------------------------------------
# Center Specific Trainings Graph and Word Generation
#--------------------------------------------------------
$(REPORT_ROOT_FOLDER)/$(SECTION_3_TRAININGS_FOLDER): requirements.txt $(TRAININGS_CSV_DEP) | $(REPORT_ROOT_FOLDER)
$(VENV_PYTHON) section_3_graph_export_module/trainings_analysis_script.py \
--outpath $(REPORT_ROOT_FOLDER)/$(SECTION_3_TRAININGS_FOLDER) \
--fiscalyear $(RESOLVED_FY) \
$(TRAINING_SCRIPT_ARGS)
$(SECTION_3_TRAININGS_WORD_FOLDER): $(REPORT_ROOT_FOLDER)/$(SECTION_3_TRAININGS_FOLDER)
$(VENV_PYTHON) section_3_word_export_scripts/generate_trainings_analysis_word.py \
--images $(REPORT_ROOT_FOLDER)/$(SECTION_3_TRAININGS_FOLDER) \
--output $(SECTION_3_TRAININGS_WORD_FOLDER) \
--fiscalyear $(RESOLVED_FY) \
$(CENTER_FLAGS)
#--------------------------------------------------------
# Center Specific Milestones Report Graph and Word Generation
#--------------------------------------------------------
$(REPORT_ROOT_FOLDER)/$(SECTION_3_MILESTONES_GRAPH_FOLDER): requirements.txt $(FUNDING_MILESTONE_CSV_DEP) $(NBS_MILESTONE_CSV_DEP) | $(REPORT_ROOT_FOLDER)
$(VENV_PYTHON) milestone_attribution_graph_export_module/milestone_attribution_graph_export_module/make_milestone_analysis.py \
$(SECTION_3_MILESTONES_ARGS) \
--fiscalyear $(RESOLVED_FY) \
--outpath $(REPORT_ROOT_FOLDER)/$(SECTION_3_MILESTONES_GRAPH_FOLDER)
$(SECTION_3_MILESTONES_WORD_FOLDER): $(REPORT_ROOT_FOLDER)/$(SECTION_3_MILESTONES_GRAPH_FOLDER)
$(VENV_PYTHON) milestone_attribution_word_export_module/generate_milestones_report.py \
--images $(REPORT_ROOT_FOLDER)/$(SECTION_3_MILESTONES_GRAPH_FOLDER) \
--out $(SECTION_3_MILESTONES_WORD_FOLDER)