# Copyright 2016 Google Inc. All Rights Reserved.
#
# 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.


# Configures the version of the dependencies of various generated packages, and
# related information.

auth_version:
  python:
    lower: '1.0.2'
    upper: '2.0dev'
  nodejs:
    lower: '0.9.8'
  ruby:
    lower: '0.5.1'

grpc_version:
  python:
    lower: '1.0.2'
    upper: '2.0dev'
  nodejs:
    lower: '1.1.2'
  php:
    lower: '1.4.0'
  ruby:
    lower: '1.0'
  java:
    lower: '1.6.1'

gax_version:
  python:
    lower: '0.15.7'
    upper: '0.16dev'
  nodejs:
    lower: '0.14.0'
  php:
    lower: '0.23.0'
  ruby:
    lower: '0.8.6'
  java:
    lower: '1.8.1'

gax_grpc_version:
  java:
    lower: '0.25.1'

proto_version:
  python:
    lower: '3.0.0'
    upper: '4.0dev'
  nodejs:
    # This is the version of ProtoBuf.js.
    lower: '5.0.1'
  php:
    lower: '3.3.2'
  ruby:
    lower: '3.0'
  java:
    lower: '3.3.0'

# Dependencies on gRPC/proto packages referenced in the proto_deps
# field of the Artman config.

google-common-protos_version:
  python:
    name_override: googleapis-common-protos
    lower: '1.5.2'
    upper: '2.0dev'
  nodejs:
    name_override: google-proto-files
    lower: '0.12.0'
  ruby:
    name_override: googleapis-common-protos
    lower: '1.3.1'
  java:
    lower: '0.1.19'

google-iam-v1_version:
  python:
    name_override: grpc-google-iam-v1
    lower: '0.11.1'
    upper: '0.12dev'
  ruby:
    name_override: grpc-google-iam-v1
    lower: '0.6.8'
  java:
    lower: '0.1.19'

api_common_version:
  java:
    lower: '1.1.0'
