-
Notifications
You must be signed in to change notification settings - Fork 41
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Showing
63 changed files
with
288 additions
and
597 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,299 +1,18 @@ | ||
.DEFAULT_GOAL := help | ||
|
||
define BROWSER_PYSCRIPT | ||
import os, webbrowser, sys | ||
|
||
try: | ||
from urllib import pathname2url | ||
except: | ||
from urllib.request import pathname2url | ||
|
||
webbrowser.open("file://" + pathname2url(os.path.abspath(sys.argv[1]))) | ||
endef | ||
export BROWSER_PYSCRIPT | ||
|
||
define PRINT_HELP_PYSCRIPT | ||
import re, sys | ||
|
||
for line in sys.stdin: | ||
match = re.match(r'^([a-zA-Z_-]+):.*?## (.*)$$', line) | ||
if match: | ||
target, help = match.groups() | ||
print("%-20s %s" % (target, help)) | ||
endef | ||
export PRINT_HELP_PYSCRIPT | ||
|
||
BROWSER := python -c "$$BROWSER_PYSCRIPT" | ||
|
||
.PHONY: help | ||
help: | ||
@python -c "$$PRINT_HELP_PYSCRIPT" < $(MAKEFILE_LIST) | ||
|
||
|
||
# CLEAN TARGETS | ||
|
||
.PHONY: clean-build | ||
clean-build: ## remove build artifacts | ||
rm -fr build/ | ||
rm -fr dist/ | ||
rm -fr .eggs/ | ||
rm -fr benchmark/.eggs/ | ||
find . -name '*.egg-info' -exec rm -fr {} + | ||
find . -name '*.egg' -exec rm -fr {} + | ||
|
||
.PHONY: clean-pyc | ||
clean-pyc: ## remove Python file artifacts | ||
find . -name '*.pyc' -exec rm -f {} + | ||
find . -name '*.pyo' -exec rm -f {} + | ||
find . -name '*~' -exec rm -f {} + | ||
find . -name '__pycache__' -exec rm -fr {} + | ||
|
||
.PHONY: clean-docs | ||
clean-docs: ## remove previously built docs | ||
rm -rf docs/api/ docs/api_reference/api/ docs/tutorials docs/build docs/_build docs/tutorials | ||
|
||
.PHONY: clean-coverage | ||
clean-coverage: ## remove coverage artifacts | ||
rm -f .coverage | ||
rm -f .coverage.* | ||
rm -fr htmlcov/ | ||
|
||
.PHONY: clean-test | ||
clean-test: ## remove test artifacts | ||
rm -fr .tox/ | ||
rm -fr .pytest_cache | ||
|
||
.PHONY: clean | ||
clean: clean-build clean-pyc clean-test clean-coverage clean-docs ## remove all build, test, coverage, docs and Python artifacts | ||
|
||
|
||
|
||
# INSTALL TARGETS | ||
|
||
.PHONY: install | ||
install: clean-build clean-pyc ## install the package to the active Python's site-packages | ||
pip install . | ||
|
||
.PHONY: install-test | ||
install-test: clean-build clean-pyc ## install the package and test dependencies | ||
pip install .[test] | ||
|
||
.PHONY: install-benchmark | ||
install-benchmark: clean-build clean-pyc ## install the package and test dependencies | ||
pip install ./benchmark | ||
|
||
.PHONY: install-develop | ||
install-develop: clean-build clean-pyc ## install the package in editable mode and dependencies for development | ||
pip install -e .[dev] -e ./benchmark | ||
|
||
MINIMUM := $(shell sed -n '/install_requires = \[/,/]/p' setup.py | grep -v -e '[][]' | sed 's/ *\(.*\),$?$$/\1/g' | tr '>' '=') | ||
|
||
.PHONY: install-minimum | ||
install-minimum: ## install the minimum supported versions of the package dependencies | ||
echo pip install $(MINIMUM) | ||
|
||
BENCHMARK_MINIMUM := $(shell sed -n '/install_requires = \[/,/]/p' benchmark/setup.py | grep -v -e '[][]' | sed 's/ *\(.*\),$?$$/\1/g' | tr '>' '=') | ||
|
||
.PHONY: install-benchmark-minimum | ||
install-benchmark-minimum: ## install the minimum supported versions of the package dependencies | ||
echo pip install $(BENCHMARK_MINIMUM) | ||
|
||
# LINT TARGETS | ||
|
||
.PHONY: lint-btb | ||
lint-btb: ## check style with flake8 and isort | ||
flake8 btb | ||
isort -c --recursive btb | ||
# pydocstyle btb | ||
|
||
.PHONY: lint-tests | ||
lint-tests: ## check style with flake8 and isort | ||
flake8 --ignore=D,SFS2 tests | ||
isort -c --recursive tests | ||
|
||
.PHONY: lint-benchmark | ||
lint: ## check style with flake8 and isort | ||
flake8 benchmark/btb_benchmark | ||
isort -c --recursive -p btb_benchmark benchmark | ||
|
||
.PHONY: check-dependencies | ||
check-dependencies: ## test if there are any broken dependencies | ||
pip check | ||
clean: | ||
find . -name '*.pyo' -delete | ||
find . -name '*.pyc' -delete | ||
find . -name __pycache__ -delete | ||
find . -name '*~' -delete | ||
find . -name '.coverage.*' -delete | ||
coverage erase | ||
|
||
.PHONY: lint | ||
lint: check-dependencies lint-btb lint-tests lint-benchmark ## Run all code style and static testing validations | ||
|
||
.PHONY: fix-lint | ||
fix-lint: ## fix lint issues using autoflake, autopep8, and isort | ||
find btb -name '*.py' | xargs autoflake --in-place --remove-all-unused-imports --remove-unused-variables | ||
autopep8 --in-place --recursive --aggressive btb | ||
isort --apply --atomic --recursive btb tests benchmark | ||
|
||
|
||
# TEST TARGETS | ||
|
||
.PHONY: test-unit | ||
test-unit: ## run tests quickly with the default Python | ||
python -m pytest --cov=btb | ||
|
||
.PHONY: test-readme | ||
test-readme: ## run the readme snippets | ||
rm -rf tests/readme_test && mkdir tests/readme_test | ||
cd tests/readme_test && rundoc run --single-session python3 -t python3 ../../README.md | ||
rm -rf tests/readme_test | ||
|
||
.PHONY: test-tutorials | ||
test-tutorials: ## run the tutorial notebooks | ||
find tutorials -path "*/.ipynb_checkpoints" -prune -false -o -name "*.ipynb" -exec \ | ||
jupyter nbconvert --execute --ExecutePreprocessor.timeout=3600 --to=html --stdout {} > /dev/null \; | ||
|
||
.PHONY: test | ||
test: test-unit test-readme test-tutorials ## test everything that needs test dependencies | ||
|
||
.PHONY: test-minimum | ||
test-minimum: install-minimum check-dependencies test-unit ## run tests using the minimum supported dependencies | ||
|
||
.PHONY: test-minimum-benchmark | ||
test-minimum: install-benchmark-minimum check-dependencies | ||
|
||
.PHONY: test-all | ||
test-all: ## run tests on every Python version with tox | ||
tox -r | ||
|
||
.PHONY: coverage | ||
coverage: ## check code coverage quickly with the default Python | ||
coverage run --source btb -m pytest | ||
coverage report -m | ||
coverage html | ||
$(BROWSER) htmlcov/index.html | ||
|
||
|
||
# DOCS TARGETS | ||
|
||
.PHONY: docs | ||
docs: clean-docs ## generate Sphinx HTML documentation, including API docs | ||
cp -r tutorials docs | ||
sphinx-apidoc --separate --no-toc -o docs/api/ btb | ||
$(MAKE) -C docs html | ||
|
||
.PHONY: view-docs | ||
view-docs: ## view the docs in a browser | ||
$(BROWSER) docs/_build/html/index.html | ||
|
||
.PHONY: serve-docs | ||
serve-docs: view-docs ## compile the docs watching for changes | ||
watchmedo shell-command -W -R -D -p '*.rst;*.md' -c '$(MAKE) -C docs html' docs | ||
|
||
# DOCKER TARGET | ||
|
||
.PHONY: docker-login | ||
docker-login: | ||
docker login | ||
|
||
.PHONY: docker-build | ||
docker-build: | ||
docker build -t btb -f benchmark/Dockerfile . | ||
|
||
.PHONY: docker-push | ||
docker-push: docker-login docker-build | ||
@$(eval VERSION := $(shell python -c 'import btb; print(btb.__version__)')) | ||
docker tag btb mlbazaar/btb:$(VERSION) | ||
docker push mlbazaar/btb:$(VERSION) | ||
|
||
# RELEASE TARGETS | ||
|
||
.PHONY: dist | ||
dist: clean ## builds source and wheel package | ||
python setup.py sdist | ||
python setup.py bdist_wheel | ||
ls -l dist | ||
|
||
.PHONY: publish-confirm | ||
publish-confirm: | ||
@echo "WARNING: This will irreversibly upload a new version to PyPI!" | ||
@echo -n "Please type 'confirm' to proceed: " \ | ||
&& read answer \ | ||
&& [ "$${answer}" = "confirm" ] | ||
|
||
.PHONY: publish-test | ||
publish-test: dist publish-confirm ## package and upload a release on TestPyPI | ||
twine upload --repository-url https://test.pypi.org/legacy/ dist/* | ||
|
||
.PHONY: publish | ||
publish: dist publish-confirm ## package and upload a release | ||
twine upload dist/* | ||
|
||
.PHONY: bumpversion-release | ||
bumpversion-release: ## Merge master to stable and bumpversion release | ||
git checkout stable || (git checkout -b stable && git push --set-upstream origin stable) | ||
git merge --no-ff master -m"make release-tag: Merge branch 'master' into stable" | ||
bumpversion release | ||
git push --tags origin stable | ||
|
||
.phony: bumpversion-release-test | ||
bumpversion-release-test: ## merge master to stable and bumpversion release | ||
git checkout stable || git checkout -b stable | ||
git merge --no-ff master -m"make release-tag: merge branch 'master' into stable" | ||
bumpversion release --no-tag | ||
@echo git push --tags origin stable | ||
|
||
.PHONY: bumpversion-patch | ||
bumpversion-patch: ## Merge stable to master and bumpversion patch | ||
git checkout master | ||
git merge stable | ||
bumpversion --no-tag patch | ||
git push | ||
|
||
.PHONY: bumpversion-candidate | ||
bumpversion-candidate: ## Bump the version to the next candidate | ||
bumpversion candidate --no-tag | ||
|
||
.PHONY: bumpversion-minor | ||
bumpversion-minor: ## Bump the version the next minor skipping the release | ||
bumpversion --no-tag minor | ||
|
||
.PHONY: bumpversion-major | ||
bumpversion-major: ## Bump the version the next major skipping the release | ||
bumpversion --no-tag major | ||
|
||
.PHONY: bumpversion-revert | ||
bumpversion-revert: ## Undo a previous bumpversion-release | ||
git checkout master | ||
git branch -D stable | ||
|
||
CLEAN_DIR := $(shell git status --short | grep -v ??) | ||
CURRENT_BRANCH := $(shell git rev-parse --abbrev-ref HEAD 2>/dev/null) | ||
CHANGELOG_LINES := $(shell git diff HEAD..origin/stable HISTORY.md 2>&1 | wc -l) | ||
|
||
.PHONY: check-clean | ||
check-clean: ## Check if the directory has uncommitted changes | ||
ifneq ($(CLEAN_DIR),) | ||
$(error There are uncommitted changes) | ||
endif | ||
|
||
.PHONY: check-master | ||
check-master: ## Check if we are in master branch | ||
ifneq ($(CURRENT_BRANCH),master) | ||
$(error Please make the release from master branch\n) | ||
endif | ||
|
||
.PHONY: check-history | ||
check-history: ## Check if HISTORY.md has been modified | ||
ifeq ($(CHANGELOG_LINES),0) | ||
$(error Please insert the release notes in HISTORY.md before releasing) | ||
endif | ||
|
||
.PHONY: check-release | ||
check-release: check-clean check-master check-history ## Check if the release can be made | ||
|
||
.PHONY: release | ||
release: check-release bumpversion-release publish docker-push bumpversion-patch | ||
|
||
.PHONY: release-candidate | ||
release-candidate: check-master publish docker-push bumpversion-candidate | ||
|
||
.PHONY: release-minor | ||
release-minor: check-release bumpversion-minor release | ||
|
||
.PHONY: release-major | ||
release-major: check-release bumpversion-major release | ||
lint: | ||
black btb/ tests/ --check --config=./pyproject.toml | ||
ruff btb/ tests/ --config=./pyproject.toml | ||
|
||
.PHONY: lint-fix | ||
lint-fix: | ||
black btb/ tests/ --config=./pyproject.toml | ||
ruff btb/ tests/ --fix --config=./pyproject.toml |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -2,7 +2,7 @@ | |
|
||
"""Top-level package for BTB.""" | ||
|
||
from btb.session import BTBSession | ||
from baytune.session import BTBSession | ||
|
||
__author__ = """MIT Data To AI Lab""" | ||
__email__ = '[email protected]' | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,12 @@ | ||
from baytune.selection.best import BestKReward, BestKVelocity | ||
from baytune.selection.hierarchical import HierarchicalByAlgorithm | ||
from baytune.selection.pure import PureBestKVelocity | ||
from baytune.selection.recent import RecentKReward, RecentKVelocity | ||
from baytune.selection.ucb1 import UCB1 | ||
from baytune.selection.uniform import Uniform | ||
|
||
__all__ = ( | ||
'BestKReward', 'BestKVelocity', 'HierarchicalByAlgorithm', | ||
'PureBestKVelocity', 'RecentKReward', 'RecentKVelocity', | ||
'UCB1', 'Uniform', | ||
) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
2 changes: 1 addition & 1 deletion
2
btb/selection/custom_selector.py → baytune/selection/custom_selector.py
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
2 changes: 1 addition & 1 deletion
2
btb/selection/hierarchical.py → baytune/selection/hierarchical.py
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
File renamed without changes.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.