###############################################################################
#  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.
###############################################################################

# These are packages needed by the Apache Beam Python SDK. Their versions need
# to be compatible with the requirements in sdks/python/setup.py.
# Specifying the versions manually helps to resolve dependency conflicts
# with other packages installed in the container.
# Any SDK dependencies not listed here will be installed when SDK is installed
# into the container.

avro==1.8.2;python_version<="2.7"
avro-python3==1.8.2;python_version>="3.4"
fastavro==0.23.3
crcmod==1.7
dill==0.3.1.1
future==0.18.2
futures==3.2.0;python_version<"3.0"
grpcio==1.29.0
hdfs==2.5.8
httplib2==0.12.0
mock==2.0.0
oauth2client==3.0.0
protobuf==3.12.2
pyarrow==0.16.0
pydot==1.4.1
pytz==2019.3
pyvcf==0.6.8;python_version<"3.0"
pyyaml==5.1
typing==3.7.4.1;python_full_version<"3.5.3"
typing-extensions==3.7.4.1

# GCP extra features
google-api-core==1.20.0
google-apitools==0.5.28
google-cloud-pubsub==1.0.2
google-cloud-bigquery==1.26.1
google-cloud-bigtable==1.0.0
google-cloud-core==1.1.0
google-cloud-datastore==1.7.4

# Optional packages
cython==0.29.13
guppy==0.1.11;python_version<="2.7"
guppy3==3.0.9;python_version>="3.5"

# These are additional packages likely to be used by customers.
numpy==1.16.5;python_version<="2.7"
numpy==1.17.3;python_version>="3.4"
scipy==1.2.2;python_version<="2.7"
scipy==1.4.1;python_version>="3.4"
pandas==0.24.2;python_version<="2.7"
pandas==0.25.2;python_version>="3.4"
protorpc==0.12.0
python-gflags==3.0.6
tensorflow==2.1.0;python_version<="2.7"
tensorflow==2.2.0;python_version>="3.5"
pymongo==3.9.0

# Packages needed for testing.
tenacity>=5.0.2
pyhamcrest<2.0,>=1.9
nose==1.3.7
