This commit is contained in:
wassname
2023-10-07 13:45:07 +08:00
parent a7ea65d19a
commit 133b60e3c1
2 changed files with 140 additions and 115 deletions
+115 -115
View File
@@ -1,133 +1,133 @@
.PHONY: clean data lint requirements sync_data_to_s3 sync_data_from_s3 doc_reqs test
# .PHONY: clean data lint requirements sync_data_to_s3 sync_data_from_s3 doc_reqs test
#################################################################################
# GLOBALS #
#################################################################################
# #################################################################################
# # GLOBALS #
# #################################################################################
SHELL := /bin/bash
PROJECT_DIR := $(shell dirname $(realpath $(lastword $(MAKEFILE_LIST))))
BUCKET = {{ cookiecutter.s3_bucket }}
PROFILE = {{ cookiecutter.aws_profile }}
PROJECT_NAME = {{ cookiecutter.repo_name }}
PYTHON_INTERPRETER = {{ cookiecutter.python_interpreter }}
# SHELL := /bin/bash
# PROJECT_DIR := $(shell dirname $(realpath $(lastword $(MAKEFILE_LIST))))
# BUCKET = {{ cookiecutter.s3_bucket }}
# PROFILE = {{ cookiecutter.aws_profile }}
# PROJECT_NAME = {{ cookiecutter.repo_name }}
# PYTHON_INTERPRETER = {{ cookiecutter.python_interpreter }}
#################################################################################
# COMMANDS #
#################################################################################
# #################################################################################
# # COMMANDS #
# #################################################################################
## Install Python Dependencies
requirements: test_environment
conda env create --name {{ cookiecutter.repo_name }} python=3.7 -f ./requirements/environment.yaml
# ## Install Python Dependencies
# requirements: test_environment
# conda env create --name {{ cookiecutter.repo_name }} python=3.7 -f ./requirements/environment.yaml
## Make Dataset
data: requirements
$(PYTHON_INTERPRETER) src/data/make_dataset.py data/raw data/processed
# ## Make Dataset
# data: requirements
# $(PYTHON_INTERPRETER) src/data/make_dataset.py data/raw data/processed
## Delete all compiled Python files
clean:
find . -type f -name "*.py[co]" -delete
find . -type d -name "__pycache__" -delete
# ## Delete all compiled Python files
# clean:
# find . -type f -name "*.py[co]" -delete
# find . -type d -name "__pycache__" -delete
## Lint using flake8
lint:
flake8 src
# ## Lint using flake8
# lint:
# flake8 src
## Upload Data to S3
sync_data_to_s3:
ifeq (default,$(PROFILE))
aws s3 sync data/ s3://$(BUCKET)/data/
else
aws s3 sync data/ s3://$(BUCKET)/data/ --profile $(PROFILE)
endif
# ## Upload Data to S3
# sync_data_to_s3:
# ifeq (default,$(PROFILE))
# aws s3 sync data/ s3://$(BUCKET)/data/
# else
# aws s3 sync data/ s3://$(BUCKET)/data/ --profile $(PROFILE)
# endif
## Download Data from S3
sync_data_from_s3:
ifeq (default,$(PROFILE))
aws s3 sync s3://$(BUCKET)/data/ data/
else
aws s3 sync s3://$(BUCKET)/data/ data/ --profile $(PROFILE)
endif
# ## Download Data from S3
# sync_data_from_s3:
# ifeq (default,$(PROFILE))
# aws s3 sync s3://$(BUCKET)/data/ data/
# else
# aws s3 sync s3://$(BUCKET)/data/ data/ --profile $(PROFILE)
# endif
## Set up python interpreter environment
create_environment:
@echo ">>> Detected conda, creating conda environment."
conda env create --name $(PROJECT_NAME) python=3 -f ./requirements/environment.yaml
@echo ">>> New conda env created. Activate with:\nsource activate $(PROJECT_NAME)"
# ## Set up python interpreter environment
# create_environment:
# @echo ">>> Detected conda, creating conda environment."
# conda env create --name $(PROJECT_NAME) python=3 -f ./requirements/environment.yaml
# @echo ">>> New conda env created. Activate with:\nsource activate $(PROJECT_NAME)"
## Run pytest
test:
$(PYTHON_INTERPRETER) -m pytest ./test -v -s
# ## Run pytest
# test:
# $(PYTHON_INTERPRETER) -m pytest ./test -v -s
## Export project requirements in multiple formats
doc_reqs:
conda env export --no-builds --from-history --name $(PROJECT_NAME) > requirements/environment.min.yaml
conda env export --name $(PROJECT_NAME) > requirements/environment.max.yaml
$(PYTHON_INTERPRETER) -m pip freeze > requirements/pip.conda.txt
cd requirements && conda-lock -f environment.max.yaml -p linux-64
# ## Export project requirements in multiple formats
# doc_reqs:
# conda env export --no-builds --from-history --name $(PROJECT_NAME) > requirements/environment.min.yaml
# conda env export --name $(PROJECT_NAME) > requirements/environment.max.yaml
# $(PYTHON_INTERPRETER) -m pip freeze > requirements/pip.conda.txt
# cd requirements && conda-lock -f environment.max.yaml -p linux-64
#################################################################################
# PROJECT RULES #
#################################################################################
# #################################################################################
# # PROJECT RULES #
# #################################################################################
#################################################################################
# Self Documenting Commands #
#################################################################################
# #################################################################################
# # Self Documenting Commands #
# #################################################################################
.DEFAULT_GOAL := help
# .DEFAULT_GOAL := help
# Inspired by <http://marmelab.com/blog/2016/02/29/auto-documented-makefile.html>
# sed script explained:
# /^##/:
# * save line in hold space
# * purge line
# * Loop:
# * append newline + line to hold space
# * go to next line
# * if line starts with doc comment, strip comment character off and loop
# * remove target prerequisites
# * append hold space (+ newline) to line
# * replace newline plus comments by `---`
# * print line
# Separate expressions are necessary because labels cannot be delimited by
# semicolon; see <http://stackoverflow.com/a/11799865/1968>
.PHONY: help
help:
@echo "$$(tput bold)Available rules:$$(tput sgr0)"
@echo
@sed -n -e "/^## / { \
h; \
s/.*//; \
:doc" \
-e "H; \
n; \
s/^## //; \
t doc" \
-e "s/:.*//; \
G; \
s/\\n## /---/; \
s/\\n/ /g; \
p; \
}" ${MAKEFILE_LIST} \
| LC_ALL='C' sort --ignore-case \
| awk -F '---' \
-v ncol=$$(tput cols) \
-v indent=19 \
-v col_on="$$(tput setaf 6)" \
-v col_off="$$(tput sgr0)" \
'{ \
printf "%s%*s%s ", col_on, -indent, $$1, col_off; \
n = split($$2, words, " "); \
line_length = ncol - indent; \
for (i = 1; i <= n; i++) { \
line_length -= length(words[i]) + 1; \
if (line_length <= 0) { \
line_length = ncol - indent - length(words[i]) - 1; \
printf "\n%*s ", -indent, " "; \
} \
printf "%s ", words[i]; \
} \
printf "\n"; \
}' \
| more $(shell test $(shell uname) = Darwin && echo '--no-init --raw-control-chars')
# # Inspired by <http://marmelab.com/blog/2016/02/29/auto-documented-makefile.html>
# # sed script explained:
# # /^##/:
# # * save line in hold space
# # * purge line
# # * Loop:
# # * append newline + line to hold space
# # * go to next line
# # * if line starts with doc comment, strip comment character off and loop
# # * remove target prerequisites
# # * append hold space (+ newline) to line
# # * replace newline plus comments by `---`
# # * print line
# # Separate expressions are necessary because labels cannot be delimited by
# # semicolon; see <http://stackoverflow.com/a/11799865/1968>
# .PHONY: help
# help:
# @echo "$$(tput bold)Available rules:$$(tput sgr0)"
# @echo
# @sed -n -e "/^## / { \
# h; \
# s/.*//; \
# :doc" \
# -e "H; \
# n; \
# s/^## //; \
# t doc" \
# -e "s/:.*//; \
# G; \
# s/\\n## /---/; \
# s/\\n/ /g; \
# p; \
# }" ${MAKEFILE_LIST} \
# | LC_ALL='C' sort --ignore-case \
# | awk -F '---' \
# -v ncol=$$(tput cols) \
# -v indent=19 \
# -v col_on="$$(tput setaf 6)" \
# -v col_off="$$(tput sgr0)" \
# '{ \
# printf "%s%*s%s ", col_on, -indent, $$1, col_off; \
# n = split($$2, words, " "); \
# line_length = ncol - indent; \
# for (i = 1; i <= n; i++) { \
# line_length -= length(words[i]) + 1; \
# if (line_length <= 0) { \
# line_length = ncol - indent - length(words[i]) - 1; \
# printf "\n%*s ", -indent, " "; \
# } \
# printf "%s ", words[i]; \
# } \
# printf "\n"; \
# }' \
# | more $(shell test $(shell uname) = Darwin && echo '--no-init --raw-control-chars')
+25
View File
@@ -0,0 +1,25 @@
# Tasks
Tasks running for [mask](https://github.com/jacobdeichert/mask).
## freeze
> record pip and conda requirements
```sh
export PROJECT_NAME={{ cookiecutter.repo_name }}
mkdir -p requirements
conda env export --no-builds --from-history --name $(PROJECT_NAME) > requirements/environment.min.yaml
conda env export --name $(PROJECT_NAME) > requirements/environment.max.yaml
$(PYTHON_INTERPRETER) -m pip freeze > requirements/pip.conda.txt
cd requirements && conda-lock -f environment.max.yaml -p linux-64
```
## create_environment
```sh
export PROJECT_NAME={{ cookiecutter.repo_name }}
@echo ">>> Detected conda, creating conda environment."
conda env create --name $(PROJECT_NAME) python=3 -f ./requirements/environment.yaml
@echo ">>> New conda env created. Activate with:\nsource activate $(PROJECT_NAME)"
```