Skip to content

Commit

Permalink
rename library
Browse files Browse the repository at this point in the history
  • Loading branch information
gsheni committed Jul 15, 2023
1 parent ab32286 commit 6ea6d39
Show file tree
Hide file tree
Showing 63 changed files with 288 additions and 597 deletions.
311 changes: 15 additions & 296 deletions Makefile
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
2 changes: 1 addition & 1 deletion btb/__init__.py → baytune/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -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]'
Expand Down
12 changes: 12 additions & 0 deletions baytune/selection/__init__.py
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',
)
2 changes: 1 addition & 1 deletion btb/selection/best.py → baytune/selection/best.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@

import numpy as np

from btb.selection.ucb1 import UCB1
from baytune.selection.ucb1 import UCB1

# the minimum number of scores that each choice must have in order to use best-K
# optimizations. If not all choices meet this threshold, default UCB1 selection
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import random

from btb.selection.selector import Selector
from baytune.selection.selector import Selector


class CustomSelector(Selector):
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
from btb.selection.ucb1 import UCB1
from baytune.selection.ucb1 import UCB1


class HierarchicalByAlgorithm(UCB1):
Expand Down
2 changes: 1 addition & 1 deletion btb/selection/pure.py → baytune/selection/pure.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import logging

from btb.selection.selector import Selector
from baytune.selection.selector import Selector

# the minimum number of scores that each choice must have in order to use best-K
# optimizations. If not all choices meet this threshold, default UCB1 selection
Expand Down
2 changes: 1 addition & 1 deletion btb/selection/recent.py → baytune/selection/recent.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import logging

from btb.selection.ucb1 import UCB1
from baytune.selection.ucb1 import UCB1

# the minimum number of scores that each choice must have in order to use
# best-K optimizations. If not all choices meet this threshold, default UCB1
Expand Down
File renamed without changes.
2 changes: 1 addition & 1 deletion btb/selection/ucb1.py → baytune/selection/ucb1.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@

import numpy as np

from btb.selection.selector import Selector
from baytune.selection.selector import Selector


class UCB1(Selector):
Expand Down
2 changes: 1 addition & 1 deletion btb/selection/uniform.py → baytune/selection/uniform.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import random

from btb.selection.selector import Selector
from baytune.selection.selector import Selector


class Uniform(Selector):
Expand Down
Loading

0 comments on commit 6ea6d39

Please sign in to comment.