diff --git a/Makefile b/Makefile index d6924c9..ab29ce7 100644 --- a/Makefile +++ b/Makefile @@ -1,14 +1,18 @@ -# Generated by Medikit 0.5.2 on 2018-03-08. +# Generated by Medikit 0.5.19 on 2018-03-29. # All changes will be overriden. +# Edit Projectfile and run “make update” (or “medikit update”) to regenerate. PACKAGE ?= bonobo -PYTHON ?= $(shell which python) +PYTHON ?= $(shell which python || echo python) PYTHON_BASENAME ?= $(shell basename $(PYTHON)) PYTHON_DIRNAME ?= $(shell dirname $(PYTHON)) PYTHON_REQUIREMENTS_FILE ?= requirements.txt PYTHON_REQUIREMENTS_DEV_FILE ?= requirements-dev.txt +PYTHON_REQUIREMENTS_DOCKER_FILE ?= requirements-docker.txt +PYTHON_REQUIREMENTS_JUPYTER_FILE ?= requirements-jupyter.txt +PYTHON_REQUIREMENTS_SQLALCHEMY_FILE ?= requirements-sqlalchemy.txt QUICK ?= -PIP ?= $(PYTHON_DIRNAME)/pip +PIP ?= $(PYTHON) -m pip PIP_INSTALL_OPTIONS ?= VERSION ?= $(shell git describe 2>/dev/null || git rev-parse --short HEAD) PYTEST ?= $(PYTHON_DIRNAME)/pytest @@ -20,44 +24,113 @@ SPHINX_BUILDDIR ?= $(SPHINX_SOURCEDIR)/_build YAPF ?= $(PYTHON) -m yapf YAPF_OPTIONS ?= -rip SPHINX_AUTOBUILD ?= $(PYTHON_DIRNAME)/sphinx-autobuild +MEDIKIT ?= $(PYTHON) -m medikit +MEDIKIT_UPDATE_OPTIONS ?= +MEDIKIT_VERSION ?= 0.5.19 -.PHONY: $(SPHINX_SOURCEDIR) clean format install install-dev test update update-requirements watch-$(SPHINX_SOURCEDIR) +.PHONY: $(SPHINX_SOURCEDIR) clean format help install install-dev install-docker install-jupyter install-sqlalchemy medikit quick test update update-requirements watch-$(SPHINX_SOURCEDIR) -# Installs the local project dependencies. -install: - if [ -z "$(QUICK)" ]; then \ - $(PIP) install -U pip wheel $(PIP_INSTALL_OPTIONS) -r $(PYTHON_REQUIREMENTS_FILE) ; \ - fi +install: .medikit/install ## Installs the project. +.medikit/install: $(PYTHON_REQUIREMENTS_FILE) setup.py + $(eval target := $(shell echo $@ | rev | cut -d/ -f1 | rev)) +ifeq ($(filter quick,$(MAKECMDGOALS)),quick) + @printf "Skipping \033[36m%s\033[0m because of \033[36mquick\033[0m target.\n" $(target) +else ifneq ($(QUICK),) + @printf "Skipping \033[36m%s\033[0m because \033[36m$$QUICK\033[0m is not empty.\n" $(target) +else + @printf "Applying \033[36m%s\033[0m target...\n" $(target) + $(PIP) install $(PIP_INSTALL_OPTIONS) -U pip wheel + $(PIP) install $(PIP_INSTALL_OPTIONS) -U -r $(PYTHON_REQUIREMENTS_FILE) + @mkdir -p .medikit; touch $@ +endif -# Installs the local project dependencies, including development-only libraries. -install-dev: - if [ -z "$(QUICK)" ]; then \ - $(PIP) install -U pip wheel $(PIP_INSTALL_OPTIONS) -r $(PYTHON_REQUIREMENTS_DEV_FILE) ; \ - fi +clean: ## Cleans up the working copy. + rm -rf build dist *.egg-info .medikit/install .medikit/install-dev .medikit/install-docker .medikit/install-jupyter .medikit/install-sqlalchemy + find . -name __pycache__ -type d | xargs rm -rf -# Cleans up the local mess. -clean: - rm -rf build dist *.egg-info +install-dev: .medikit/install-dev ## Installs the project (with dev dependencies). +.medikit/install-dev: $(PYTHON_REQUIREMENTS_DEV_FILE) $(PYTHON_REQUIREMENTS_FILE) setup.py + $(eval target := $(shell echo $@ | rev | cut -d/ -f1 | rev)) +ifeq ($(filter quick,$(MAKECMDGOALS)),quick) + @printf "Skipping \033[36m%s\033[0m because of \033[36mquick\033[0m target.\n" $(target) +else ifneq ($(QUICK),) + @printf "Skipping \033[36m%s\033[0m because \033[36m$$QUICK\033[0m is not empty.\n" $(target) +else + @printf "Applying \033[36m%s\033[0m target...\n" $(target) + $(PIP) install $(PIP_INSTALL_OPTIONS) -U pip wheel + $(PIP) install $(PIP_INSTALL_OPTIONS) -U -r $(PYTHON_REQUIREMENTS_DEV_FILE) + @mkdir -p .medikit; touch $@ +endif -# Update project artifacts using medikit, after installing it eventually. -update: - python -c 'import medikit; print(medikit.__version__)' || pip install medikit; - $(PYTHON) -m medikit update +quick: # + @printf "" -# Remove requirements files and update project artifacts using medikit, after installing it eventually. -update-requirements: - rm -rf requirements*.txt - $(MAKE) update +install-docker: .medikit/install-docker ## Installs the project (with docker dependencies). +.medikit/install-docker: $(PYTHON_REQUIREMENTS_DOCKER_FILE) $(PYTHON_REQUIREMENTS_FILE) setup.py + $(eval target := $(shell echo $@ | rev | cut -d/ -f1 | rev)) +ifeq ($(filter quick,$(MAKECMDGOALS)),quick) + @printf "Skipping \033[36m%s\033[0m because of \033[36mquick\033[0m target.\n" $(target) +else ifneq ($(QUICK),) + @printf "Skipping \033[36m%s\033[0m because \033[36m$$QUICK\033[0m is not empty.\n" $(target) +else + @printf "Applying \033[36m%s\033[0m target...\n" $(target) + $(PIP) install $(PIP_INSTALL_OPTIONS) -U pip wheel + $(PIP) install $(PIP_INSTALL_OPTIONS) -U -r $(PYTHON_REQUIREMENTS_DOCKER_FILE) + @mkdir -p .medikit; touch $@ +endif -test: install-dev +install-jupyter: .medikit/install-jupyter ## Installs the project (with jupyter dependencies). +.medikit/install-jupyter: $(PYTHON_REQUIREMENTS_FILE) $(PYTHON_REQUIREMENTS_JUPYTER_FILE) setup.py + $(eval target := $(shell echo $@ | rev | cut -d/ -f1 | rev)) +ifeq ($(filter quick,$(MAKECMDGOALS)),quick) + @printf "Skipping \033[36m%s\033[0m because of \033[36mquick\033[0m target.\n" $(target) +else ifneq ($(QUICK),) + @printf "Skipping \033[36m%s\033[0m because \033[36m$$QUICK\033[0m is not empty.\n" $(target) +else + @printf "Applying \033[36m%s\033[0m target...\n" $(target) + $(PIP) install $(PIP_INSTALL_OPTIONS) -U pip wheel + $(PIP) install $(PIP_INSTALL_OPTIONS) -U -r $(PYTHON_REQUIREMENTS_JUPYTER_FILE) + @mkdir -p .medikit; touch $@ +endif + +install-sqlalchemy: .medikit/install-sqlalchemy ## Installs the project (with sqlalchemy dependencies). +.medikit/install-sqlalchemy: $(PYTHON_REQUIREMENTS_FILE) $(PYTHON_REQUIREMENTS_SQLALCHEMY_FILE) setup.py + $(eval target := $(shell echo $@ | rev | cut -d/ -f1 | rev)) +ifeq ($(filter quick,$(MAKECMDGOALS)),quick) + @printf "Skipping \033[36m%s\033[0m because of \033[36mquick\033[0m target.\n" $(target) +else ifneq ($(QUICK),) + @printf "Skipping \033[36m%s\033[0m because \033[36m$$QUICK\033[0m is not empty.\n" $(target) +else + @printf "Applying \033[36m%s\033[0m target...\n" $(target) + $(PIP) install $(PIP_INSTALL_OPTIONS) -U pip wheel + $(PIP) install $(PIP_INSTALL_OPTIONS) -U -r $(PYTHON_REQUIREMENTS_SQLALCHEMY_FILE) + @mkdir -p .medikit; touch $@ +endif + +test: install-dev ## Runs the test suite. $(PYTEST) $(PYTEST_OPTIONS) tests -$(SPHINX_SOURCEDIR): install-dev +$(SPHINX_SOURCEDIR): install-dev ## $(SPHINX_BUILD) -b html -D latex_paper_size=a4 $(SPHINX_OPTIONS) $(SPHINX_SOURCEDIR) $(SPHINX_BUILDDIR)/html -format: install-dev +format: install-dev ## Reformats the whole python codebase using yapf. $(YAPF) $(YAPF_OPTIONS) . $(YAPF) $(YAPF_OPTIONS) Projectfile -watch-$(SPHINX_SOURCEDIR): +watch-$(SPHINX_SOURCEDIR): ## $(SPHINX_AUTOBUILD) $(SPHINX_SOURCEDIR) $(shell mktemp -d) + +medikit: # Checks installed medikit version and updates it if it is outdated. + @$(PYTHON) -c 'import medikit, sys; from packaging.version import Version; sys.exit(0 if Version(medikit.__version__) >= Version("$(MEDIKIT_VERSION)") else 1)' || $(PYTHON) -m pip install -U "medikit>=$(MEDIKIT_VERSION)" + +update: medikit ## Update project artifacts using medikit. + $(MEDIKIT) update $(MEDIKIT_UPDATE_OPTIONS) + +update-requirements: ## Update project artifacts using medikit, including requirements files. + MEDIKIT_UPDATE_OPTIONS="--override-requirements" $(MAKE) update + +help: ## Shows available commands. + @echo "Available commands:" + @echo + @grep -E '^[a-zA-Z_-]+:.*?##[\s]?.*$$' $(MAKEFILE_LIST) | sort | awk 'BEGIN {FS = ":.*?##"}; {printf " make \033[36m%-30s\033[0m %s\n", $$1, $$2}' + @echo diff --git a/Projectfile b/Projectfile index e5d6887..69924c2 100644 --- a/Projectfile +++ b/Projectfile @@ -46,7 +46,7 @@ python.add_requirements( 'graphviz >=0.8,<0.9', 'jinja2 ~=2.9', 'mondrian ~=0.6', - 'packaging ~=16.0', + 'packaging ~=17.0', 'psutil ~=5.4', 'python-slugify ~=1.2.0', 'requests ~=2.0', diff --git a/requirements-dev.txt b/requirements-dev.txt index ab71e69..2989475 100644 --- a/requirements-dev.txt +++ b/requirements-dev.txt @@ -1,4 +1,5 @@ -e .[dev] +-r requirements.txt alabaster==0.7.10 arrow==0.12.1 attrs==17.4.0 @@ -8,31 +9,32 @@ certifi==2018.1.18 chardet==3.0.4 click==6.7 cookiecutter==1.5.1 -coverage==4.4.2 +coverage==4.5.1 docutils==0.14 future==0.16.0 idna==2.6 -imagesize==0.7.1 +imagesize==1.0.0 jinja2-time==0.2.0 jinja2==2.10 markupsafe==1.0 +more-itertools==4.1.0 +packaging==17.1 pluggy==0.6.0 poyo==0.4.1 -py==1.5.2 +py==1.5.3 pygments==2.2.0 +pyparsing==2.2.0 pytest-cov==2.5.1 -pytest-sugar==0.8.0 pytest-timeout==1.2.1 -pytest==3.4.0 -python-dateutil==2.6.1 -pytz==2017.3 +pytest==3.5.0 +python-dateutil==2.7.2 +pytz==2018.3 requests==2.18.4 six==1.11.0 snowballstemmer==1.2.1 sphinx-sitemap==0.2 -sphinx==1.6.6 +sphinx==1.7.2 sphinxcontrib-websupport==1.0.1 -termcolor==1.1.0 urllib3==1.22 whichcraft==0.4.1 -yapf==0.20.1 +yapf==0.21.0 diff --git a/requirements-docker.txt b/requirements-docker.txt index e685085..7c9c7bf 100644 --- a/requirements-docker.txt +++ b/requirements-docker.txt @@ -1,28 +1,29 @@ -e .[docker] +-r requirements.txt appdirs==1.4.3 bonobo-docker==0.6.0 certifi==2018.1.18 chardet==3.0.4 colorama==0.3.9 -docker-pycreds==0.2.1 +docker-pycreds==0.2.2 docker==2.7.0 -fs==2.0.18 +fs==2.0.20 graphviz==0.8.2 idna==2.6 jinja2==2.10 markupsafe==1.0 -mondrian==0.6.1 +mondrian==0.6.6 packaging==16.8 -pbr==3.1.1 +pbr==4.0.0 psutil==5.4.3 pyparsing==2.2.0 -python-slugify==1.2.4 -pytz==2017.3 +python-slugify==1.2.5 +pytz==2018.3 requests==2.18.4 semantic-version==2.6.0 six==1.11.0 stevedore==1.28.0 unidecode==1.0.22 urllib3==1.22 -websocket-client==0.46.0 -whistle==1.0.0 +websocket-client==0.47.0 +whistle==1.0.1 diff --git a/requirements-jupyter.txt b/requirements-jupyter.txt index fa0f4c4..1f15f99 100644 --- a/requirements-jupyter.txt +++ b/requirements-jupyter.txt @@ -1,17 +1,18 @@ -e .[jupyter] +-r requirements.txt appnope==0.1.0 -bleach==2.1.2 +bleach==2.1.3 decorator==4.2.1 entrypoints==0.2.3 html5lib==1.0.1 -ipykernel==4.8.0 +ipykernel==4.8.2 ipython-genutils==0.2.0 ipython==6.2.1 ipywidgets==6.0.1 jedi==0.11.1 jinja2==2.10 jsonschema==2.6.0 -jupyter-client==5.2.2 +jupyter-client==5.2.3 jupyter-console==5.2.0 jupyter-core==4.4.0 jupyter==1.0.0 @@ -19,23 +20,23 @@ markupsafe==1.0 mistune==0.8.3 nbconvert==5.3.1 nbformat==4.4.0 -notebook==5.4.0 +notebook==5.4.1 pandocfilters==1.4.2 parso==0.1.1 -pexpect==4.3.1 +pexpect==4.4.0 pickleshare==0.7.4 prompt-toolkit==1.0.15 ptyprocess==0.5.2 pygments==2.2.0 -python-dateutil==2.6.1 -pyzmq==16.0.4 +python-dateutil==2.7.2 +pyzmq==17.0.0 qtconsole==4.3.1 -send2trash==1.4.2 +send2trash==1.5.0 simplegeneric==0.8.1 six==1.11.0 terminado==0.8.1 testpath==0.3.1 -tornado==4.5.3 +tornado==5.0.1 traitlets==4.3.2 wcwidth==0.1.7 webencodings==0.5.1 diff --git a/requirements-sqlalchemy.txt b/requirements-sqlalchemy.txt index 21287e7..0479ce6 100644 --- a/requirements-sqlalchemy.txt +++ b/requirements-sqlalchemy.txt @@ -1,25 +1,26 @@ -e .[sqlalchemy] +-r requirements.txt appdirs==1.4.3 bonobo-sqlalchemy==0.6.0 certifi==2018.1.18 chardet==3.0.4 colorama==0.3.9 -fs==2.0.18 +fs==2.0.20 graphviz==0.8.2 idna==2.6 jinja2==2.10 markupsafe==1.0 -mondrian==0.6.1 +mondrian==0.6.6 packaging==16.8 -pbr==3.1.1 +pbr==4.0.0 psutil==5.4.3 pyparsing==2.2.0 -python-slugify==1.2.4 -pytz==2017.3 +python-slugify==1.2.5 +pytz==2018.3 requests==2.18.4 six==1.11.0 -sqlalchemy==1.2.2 +sqlalchemy==1.2.5 stevedore==1.28.0 unidecode==1.0.22 urllib3==1.22 -whistle==1.0.0 +whistle==1.0.1 diff --git a/requirements.txt b/requirements.txt index 15c7fcf..2d3492f 100644 --- a/requirements.txt +++ b/requirements.txt @@ -3,21 +3,21 @@ appdirs==1.4.3 certifi==2018.1.18 chardet==3.0.4 colorama==0.3.9 -fs==2.0.18 +fs==2.0.20 graphviz==0.8.2 idna==2.6 jinja2==2.10 markupsafe==1.0 -mondrian==0.6.1 -packaging==16.8 -pbr==3.1.1 +mondrian==0.6.6 +packaging==17.1 +pbr==4.0.0 psutil==5.4.3 pyparsing==2.2.0 -python-slugify==1.2.4 -pytz==2017.3 +python-slugify==1.2.5 +pytz==2018.3 requests==2.18.4 six==1.11.0 stevedore==1.28.0 unidecode==1.0.22 urllib3==1.22 -whistle==1.0.0 +whistle==1.0.1 diff --git a/setup.py b/setup.py index b642900..37a6c92 100644 --- a/setup.py +++ b/setup.py @@ -1,5 +1,6 @@ -# This file is autogenerated by medikit code generator. -# All changes will be overwritten. +# Generated by Medikit 0.5.19 on 2018-03-29. +# All changes will be overriden. +# Edit Projectfile and run “make update” (or “medikit update”) to regenerate. from setuptools import setup, find_packages from codecs import open @@ -59,14 +60,13 @@ setup( packages=find_packages(exclude=['ez_setup', 'example', 'test']), include_package_data=True, install_requires=[ - 'fs (~= 2.0)', 'graphviz (>= 0.8, < 0.9)', 'jinja2 (~= 2.9)', 'mondrian (~= 0.6)', 'packaging (~= 16.0)', + 'fs (~= 2.0)', 'graphviz (>= 0.8, < 0.9)', 'jinja2 (~= 2.9)', 'mondrian (~= 0.6)', 'packaging (~= 17.0)', 'psutil (~= 5.4)', 'python-slugify (~= 1.2.0)', 'requests (~= 2.0)', 'stevedore (~= 1.27)', 'whistle (~= 1.0)' ], extras_require={ 'dev': [ 'cookiecutter (>= 1.5, < 1.6)', 'coverage (~= 4.4)', 'pytest (~= 3.4)', 'pytest-cov (~= 2.5)', - 'pytest-sugar (~= 0.9.1)', 'pytest-timeout (>= 1, < 2)', 'sphinx (>= 1.6, < 2.0)', - 'sphinx-sitemap (>= 0.2, < 0.3)', 'yapf' + 'pytest-timeout (>= 1, < 2)', 'sphinx (~= 1.7)', 'sphinx-sitemap (>= 0.2, < 0.3)', 'yapf' ], 'docker': ['bonobo-docker (~= 0.6.0a1)'], 'jupyter': ['ipywidgets (~= 6.0)', 'jupyter (~= 1.0)'],