| ################################################################################# |
| # GLOBALS # |
| ################################################################################# |
|
|
| PROJECT_NAME = OCR_projet05 |
| PYTHON_VERSION = 3.10 |
| PYTHON_INTERPRETER = python |
|
|
| ################################################################################# |
| # COMMANDS # |
| ################################################################################# |
|
|
|
|
| ## Install Python dependencies |
| .PHONY: requirements |
| requirements: |
| pip install -e . |
| |
|
|
|
|
|
|
| ## Delete all compiled Python files |
| .PHONY: clean |
| clean: |
| find . -type f -name "*.py[co]" -delete |
| find . -type d -name "__pycache__" -delete |
|
|
|
|
| ## Lint using ruff (use `make format` to do formatting) |
| .PHONY: lint |
| lint: |
| ruff format --check |
| ruff check |
|
|
| ## Format source code with ruff |
| .PHONY: format |
| format: |
| ruff check --fix |
| ruff format |
|
|
|
|
|
|
| ## Run tests |
| .PHONY: test |
| test: |
| @mkdir -p logs/tests_logs |
| @timestamp=$$(date +%Y%m%d_%H%M%S); \ |
| pytest | tee logs/tests_logs/$$timestamp.log |
|
|
|
|
| ## Set up Python interpreter environment |
| .PHONY: create_environment |
| create_environment: |
| @bash -c "if [ ! -z `which virtualenvwrapper.sh` ]; then source `which virtualenvwrapper.sh`; mkvirtualenv $(PROJECT_NAME) --python=$(PYTHON_INTERPRETER); else mkvirtualenv.bat $(PROJECT_NAME) --python=$(PYTHON_INTERPRETER); fi" |
| @echo ">>> New virtualenv created. Activate with:\nworkon $(PROJECT_NAME)" |
| |
|
|
|
|
|
|
| ################################################################################# |
| # PROJECT RULES # |
| ################################################################################# |
|
|
|
|
| ## Make dataset |
| .PHONY: data |
| data: requirements |
| $(PYTHON_INTERPRETER) projet_05/dataset.py |
|
|
|
|
| ################################################################################# |
| # Self Documenting Commands # |
| ################################################################################# |
|
|
| .DEFAULT_GOAL := help |
|
|
| define PRINT_HELP_PYSCRIPT |
| import re, sys; \ |
| lines = '\n'.join([line for line in sys.stdin]); \ |
| matches = re.findall(r'\n## (.*)\n[\s\S]+?\n([a-zA-Z_-]+):', lines); \ |
| print('Available rules:\n'); \ |
| print('\n'.join(['{:25}{}'.format(*reversed(match)) for match in matches])) |
| endef |
| export PRINT_HELP_PYSCRIPT |
|
|
| help: |
| @$(PYTHON_INTERPRETER) -c "${PRINT_HELP_PYSCRIPT}" < $(MAKEFILE_LIST) |
|
|