123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147 |
- # Check Python major and minor version
- # For more information, see https://stackoverflow.com/a/22105036
- PYV = $(shell python -c "import sys;t='{v[0]}.{v[1]}'.format(v=list(sys.version_info[:2]));sys.stdout.write(t)")
- HIGHS_DIR = "../HiGHS"
- # Note: use tabs
- # actions which are virtual, i.e. not a script
- .PHONY: install install-for-dev install-for-test install-deps install-flexmeasures run-local test freeze-deps upgrade-deps update-docs update-docs-pdf show-file-space show-data-model clean-db cli-autocomplete build-highs-macos install-highs-macos
- # ---- Development ---
- run-local:
- python run-local.py
- test:
- make install-for-test
- pytest
- # ---- Documentation ---
- gen_code_docs := False # by default code documentation is not generated
- update-docs:
- @echo "Creating docs environment ..."
- make install-docs-dependencies
- @echo "Creating documentation ..."
- export GEN_CODE_DOCS=${gen_code_docs}; cd documentation; make clean; make html SPHINXOPTS="-W --keep-going -n"; cd ..
- update-docs-pdf:
- @echo "NOTE: PDF documentation requires packages (on Debian: latexmk texlive-latex-recommended texlive-latex-extra texlive-fonts-recommended)"
- make install-docs-dependencies
- export GEN_CODE_DOCS=${gen_code_docs}; cd documentation; make clean; make latexpdf; make latexpdf; cd .. # make latexpdf can require two passes
- # ---- Installation ---
- install: install-deps install-flexmeasures
- install-for-dev:
- make freeze-deps
- make ensure-deps-folder
- pip-sync requirements/${PYV}/app.txt requirements/${PYV}/dev.txt requirements/${PYV}/test.txt
- make install-flexmeasures
- # Locally install HiGHS on macOS
- @if [ "$(shell uname)" = "Darwin" ]; then \
- make install-highs-macos; \
- fi
- install-for-test:
- make install-pip-tools
- # Pass pinned=no if you want to test against latest stable packages, default is our pinned dependency set
- ifneq ($(pinned), no)
- pip-sync requirements/${PYV}/app.txt requirements/${PYV}/test.txt
- else
- pip install --upgrade -r requirements/app.in -r requirements/test.in
- endif
- make install-flexmeasures
- # Locally install HiGHS on macOS
- @if [ "$(shell uname)" = "Darwin" ]; then \
- make install-highs-macos; \
- fi
- $(HIGHS_DIR):
- @if [ ! -d $(HIGHS_DIR) ]; then \
- git clone https://github.com/ERGO-Code/HiGHS.git $(HIGHS_DIR); \
- fi
- brew install cmake;
- build-highs-macos: $(HIGHS_DIR)
- cd $(HIGHS_DIR); \
- git checkout latest; \
- mkdir -p build; \
- cd build; \
- cmake ..; \
- make; \
- make install; \
- cd ../../flexmeasures;
- install-highs-macos: build-highs-macos
- pip install $(HIGHS_DIR) ; \
- install-deps:
- make install-pip-tools
- make freeze-deps
- # Pass pinned=no if you want to test against latest stable packages, default is our pinned dependency set
- ifneq ($(pinned), no)
- pip-sync requirements/${PYV}/app.txt
- else
- pip install --upgrade -r requirements/app.in
- endif
- install-flexmeasures:
- pip install -e .
- install-pip-tools:
- pip3 install -q "pip-tools>=7.2"
- install-docs-dependencies:
- pip install -r requirements/${PYV}/docs.txt
- freeze-deps:
- make ensure-deps-folder
- make install-pip-tools
- pip-compile -o requirements/${PYV}/app.txt requirements/app.in
- pip-compile -c requirements/${PYV}/app.txt -o requirements/${PYV}/test.txt requirements/test.in
- pip-compile -c requirements/${PYV}/app.txt -c requirements/${PYV}/test.txt -o requirements/${PYV}/dev.txt requirements/dev.in
- pip-compile -c requirements/${PYV}/app.txt -o requirements/${PYV}/docs.txt requirements/docs.in
- upgrade-deps:
- make ensure-deps-folder
- make install-pip-tools
- pip-compile --upgrade -o requirements/${PYV}/app.txt requirements/app.in
- pip-compile --upgrade -c requirements/${PYV}/app.txt -o requirements/${PYV}/test.txt requirements/test.in
- pip-compile --upgrade -c requirements/${PYV}/app.txt -c requirements/${PYV}/test.txt -o requirements/${PYV}/dev.txt requirements/dev.in
- pip-compile --upgrade -c requirements/${PYV}/app.txt -o requirements/${PYV}/docs.txt requirements/docs.in
- ifneq ($(skip-test), yes)
- make test
- endif
- # ---- Data ----
- show-file-space:
- # Where is our file space going?
- du --summarize --human-readable --total ./* ./.[a-zA-Z]* | sort -h
- upgrade-db:
- flask db current
- flask db upgrade
- flask db current
- show-data-model:
- # This generates the data model, as currently written in code, as a PNG picture.
- # Also try with --schema for the database model.
- # With --deprecated, you'll see the legacy models, and not their replacements.
- # Use --help to learn more.
- ./flexmeasures/data/scripts/visualize_data_model.py --uml
- ensure-deps-folder:
- mkdir -p requirements/${PYV}
- clean-db:
- ./flexmeasures/data/scripts/clean_database.sh ${db_name} ${db_user}
- cli-autocomplete:
- ./flexmeasures/cli/scripts/add_scripts_path.sh ${extension}
|