// Copyright 2022 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.

package {
    default_applicable_licenses: [
        "external_python_google-auth-library-python_license",
    ],
}

// Added automatically by a large-scale-change
// See: http://go/android-license-faq
license {
    name: "external_python_google-auth-library-python_license",
    visibility: [":__subpackages__"],
    license_kinds: [
        "SPDX-license-identifier-Apache-2.0",
    ],
    license_text: [
        "LICENSE",
    ],
}

python_library {
    name: "py-google-auth-library-python",
    host_supported: true,
    srcs: [
        "google/auth/*.py",
        "google/auth/compute_engine/*.py",
        "google/auth/crypt/*.py",
        "google/auth/transport/*.py",
        "google/oauth2/*.py",
    ],
    version: {
        py2: {
            enabled: true,
        },
        py3: {
            enabled: true,
        },
    },
}
