diff --git a/bin/install.sh b/bin/install.sh new file mode 100755 index 00000000..1d1bdfd9 --- /dev/null +++ b/bin/install.sh @@ -0,0 +1,31 @@ +#!/bin/bash +# +# Copyright 2024 DeepMind Technologies Limited. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# https://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# +# Install meltingpot. +set -euxo pipefail +cd "$(dirname "$0")/.." + +echo 'Installing requirements...' +pip install --no-deps --require-hashes --requirement requirements.txt +echo +echo + +echo 'Installing Melting Pot...' +pip install --no-deps --no-index --no-build-isolation --editable . +echo +echo + +pip list diff --git a/bin/setup_venv.sh b/bin/setup_venv.sh new file mode 100755 index 00000000..5cb6e4c5 --- /dev/null +++ b/bin/setup_venv.sh @@ -0,0 +1,36 @@ +#!/bin/bash +# +# Copyright 2024 DeepMind Technologies Limited. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# https://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# +# Sets up the virtual environment. +set -euxo pipefail +cd "$(dirname "$0")/.." + +readonly VENV_PATH="${1:-venv}" +if [[ -d "${VENV_PATH}" ]]; then + read -p "Virtual environment "${VENV_PATH}" already exists. Overwrite? (Y/N) " confirm + [[ "${confirm}" = [Yy]* ]] && rm -rf "${VENV_PATH}" || exit 1 +fi + +echo "Creating virtual environment at ${VENV_PATH}..." +python3 -m venv "${VENV_PATH}" +source "${VENV_PATH}"/bin/activate +python --version +pip --version +pip list +echo +echo + +./bin/install.sh diff --git a/bin/test.sh b/bin/test.sh new file mode 100755 index 00000000..65c374d4 --- /dev/null +++ b/bin/test.sh @@ -0,0 +1,41 @@ +#!/bin/bash +# +# Copyright 2024 DeepMind Technologies Limited. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# https://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# +# Test meltingpot. +set -euxo pipefail +cd "$(dirname "$0")/.." +FAILURES=false + +echo "pytest meltingpot..." +pytest meltingpot || FAILURES=true +echo +echo + +echo "pytype meltingpot..." +pytype meltingpot || FAILURES=true +echo +echo + +echo "pylint meltingpot..." +pylint --errors-only meltingpot || FAILURES=true +echo +echo + +if "${FAILURES}"; then + echo -e '\033[0;31mFAILURE\033[0m' && exit 1 +else + echo -e '\033[0;32mSUCCESS\033[0m' +fi diff --git a/bin/test_examples.sh b/bin/test_examples.sh new file mode 100755 index 00000000..bb1f2478 --- /dev/null +++ b/bin/test_examples.sh @@ -0,0 +1,41 @@ +#!/bin/bash +# +# Copyright 2024 DeepMind Technologies Limited. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# https://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# +# Test the examples. +set -euxo pipefail +cd "$(dirname "$0")/.." +FAILURES=false + +echo "pytest examples..." +pytest examples || FAILURES=true +echo +echo + +echo "pytype examples..." +pytype examples || FAILURES=true +echo +echo + +echo "pylint examples..." +pylint --errors-only examples || FAILURES=true +echo +echo + +if "${FAILURES}"; then + echo -e '\033[0;31mFAILURE\033[0m' && exit 1 +else + echo -e '\033[0;32mSUCCESS\033[0m' +fi diff --git a/bin/update_requirements.sh b/bin/update_requirements.sh new file mode 100755 index 00000000..2b7ff2b0 --- /dev/null +++ b/bin/update_requirements.sh @@ -0,0 +1,22 @@ +#!/bin/bash +# +# Copyright 2024 DeepMind Technologies Limited. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# https://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# +# Update requirements.txt. +set -euxo pipefail +cd "$(dirname "$0")/.." + +pip-compile --generate-hashes --reuse-hashes --strip-extras \ + --upgrade --extra dev setup.py