From 43bfbc0af1ac68176d2d3ae4f6a79fd15b9339c8 Mon Sep 17 00:00:00 2001 From: Michael Reneer Date: Fri, 6 Oct 2023 13:25:38 -0700 Subject: [PATCH] Cleanup and add build, test, and publish scripts for the TFP Python package. PiperOrigin-RevId: 571419982 --- .../build_pip_package.sh | 31 +++++--------- tools/publish_pip_package.sh | 41 +++++++++++++++++++ tools/test_pip_package.sh | 41 +++++++++++++++++++ 3 files changed, 92 insertions(+), 21 deletions(-) rename build_pip_package.sh => tools/build_pip_package.sh (66%) create mode 100755 tools/publish_pip_package.sh create mode 100755 tools/test_pip_package.sh diff --git a/build_pip_package.sh b/tools/build_pip_package.sh similarity index 66% rename from build_pip_package.sh rename to tools/build_pip_package.sh index 13031af..de90d24 100755 --- a/build_pip_package.sh +++ b/tools/build_pip_package.sh @@ -14,37 +14,26 @@ # limitations under the License. # # Tool to build the TensorFlow Privacy pip package. -# -# Usage: -# bazel run //tensorflow_privacy:build_pip_package -- \ -# "/tmp/tensorflow_privacy" -# -# Arguments: -# output_dir: An output directory. set -e -die() { - echo >&2 "$@" - exit 1 -} - main() { - local output_dir="$1" - - if [[ ! -d "${output_dir}" ]]; then - die "The output directory '${output_dir}' does not exist." - fi + # Create a working directory. + local temp_dir="$(mktemp -d)" + trap "rm -rf ${temp_dir}" EXIT # Create a virtual environment - python3 -m venv "venv" - source "venv/bin/activate" + python3 -m venv "${temp_dir}/venv" + source "${temp_dir}/venv/bin/activate" + python --version pip install --upgrade pip + pip --version - # Build pip package + # Build the pip package pip install --upgrade setuptools wheel python "setup.py" sdist bdist_wheel - cp "dist/"* "${output_dir}" + # Cleanup. + deactivate } main "$@" diff --git a/tools/publish_pip_package.sh b/tools/publish_pip_package.sh new file mode 100755 index 0000000..3faa3a1 --- /dev/null +++ b/tools/publish_pip_package.sh @@ -0,0 +1,41 @@ +#!/usr/bin/env bash +# Copyright 2020, The TensorFlow Privacy Authors. +# +# 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 +# +# http://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. +# +# Tool to publish the TensorFlow Privacy pip package. +set -e + +main() { + # Create a working directory. + local temp_dir="$(mktemp -d)" + trap "rm -rf ${temp_dir}" EXIT + + # Create a virtual environment + python3 -m venv "${temp_dir}/venv" + source "${temp_dir}/venv/bin/activate" + python --version + pip install --upgrade pip + pip --version + + # Publish the pip package. + package="$(ls "dist/"*".whl" | head -n1)" + pip install --upgrade twine + twine check "${package}" + twine upload "${package}" + + # Cleanup. + deactivate +} + +main "$@" diff --git a/tools/test_pip_package.sh b/tools/test_pip_package.sh new file mode 100755 index 0000000..8dc075f --- /dev/null +++ b/tools/test_pip_package.sh @@ -0,0 +1,41 @@ +#!/usr/bin/env bash +# Copyright 2020, The TensorFlow Privacy Authors. +# +# 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 +# +# http://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. +# +# Tool to build the TensorFlow Privacy pip package. +set -e + +main() { + # Create a working directory. + local temp_dir="$(mktemp -d)" + trap "rm -rf ${temp_dir}" EXIT + + # Create a virtual environment + python3 -m venv "${temp_dir}/venv" + source "${temp_dir}/venv/bin/activate" + python --version + pip install --upgrade pip + pip --version + + # Publish the pip package. + package="$(ls "dist/"*".whl" | head -n1)" + pip install --upgrade "${package}" + pip freeze + python -c "import tensorflow_privacy as tfp; print(tfp.__version__)" + + # Cleanup. + deactivate +} + +main "$@"