mirror of
https://github.com/wassname/cookiecutter-data-science.git
synced 2026-06-27 16:30:02 +08:00
maskfile
This commit is contained in:
@@ -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')
|
||||
|
||||
@@ -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)"
|
||||
```
|
||||
Reference in New Issue
Block a user