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