1# Requirements for the Federated Compute Python development environment. 2# 3# For compatibility with TensorFlow and TensorFlow Federated, most Python 4# dependencies should be managed by pip, not Bazel. 5# 6# * For packages that have a stable release, we use a version that is 7# compatible with that release (e.g. `~=x.y`). See 8# https://peps.python.org/pep-0440/#compatible-release for more information. 9# * For packages that do not have a stable release, we use a version that 10# matches a release that has been tested (e.g. `==x.y.z`). See 11# https://peps.python.org/pep-0440/#version-matching for more information. 12# 13# Note: There is bug in `pip` when multiple packages use the compatible release 14# operator `~=` to specify a version and one of those versions ends in `0`. See 15# https://github.com/pypa/pip/issues/9613 for more information. In this case, 16# use the equivalent clause `>=x.0,==x.*` instead of `~=x.0`. 17# 18# This assumes that the packages follow Semantic Versioning, see 19# https://semver.org/. If a package follows a different versioning scheme or 20# requires unique handling, we use a different version specifier and comment the 21# versioning scheme or reasoning. 22 23absl-py>=1.0,==1.* 24protobuf~=3.20 25# The TensorFlow version should match what's specified in the WORKSPACE file for 26# C++ targets. 27tensorflow==2.12.0 28tensorflow-federated~=0.53 29