
###############################################################################
#  Licensed to the Apache Software Foundation (ASF) under one
#  or more contributor license agreements.  See the NOTICE file
#  distributed with this work for additional information
#  regarding copyright ownership.  The ASF licenses this file
#  to you 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.
###############################################################################

# This file has additional packages to install in Beam's containers.
# Do not specify dependencies, which are already in Beam's setup.py.
# See generate_pip_requirements_list.sh to find which extras (e.g. gcp) are used.
# Do not specify a constrained version without a particular reason, so that
# we can pick up recent versions when regenerating the requirements.
# Consider constraining requirements of Beam itself when necessary.

bs4  # Commonly used HTML processing tool.
# Don't upgrade to Cython 3.x, until it's released, stable and we have consensus
# to upgrade. Use 0.xx for now.
cython<1
# future is no longer a Beam dependency, but is an implicit dependency in
# some versions of libraries that launch Beam pipelines, like tensorflow-transform.
# Leaving 'future' in our containers for now prevent breaking tft users.
future
# TODO: Uncomment python version once guppy supports it.
# https://github.com/apache/beam/issues/25984
guppy3;python_version<"3.11"  # Memory profiler
mmh3  # Optimizes execution of some Beam codepaths. TODO: Make it Beam's dependency.
nltk  # Commonly used for natural language processing.
nose==1.3.7  # For Dataflow internal testing. TODO: remove this.
# TODO: Uncomment python version once python-snappy supports it.
# https://github.com/apache/beam/issues/25985
python-snappy;python_version<"3.11"  # Optimizes execution of some Beam codepaths.
scipy
scikit-learn
tensorflow>=2.12.0;python_version>="3.8"
