diff --git a/.github/workflows/unittest.yml b/.github/workflows/unittest.yml new file mode 100644 index 000000000..a5ddd035d --- /dev/null +++ b/.github/workflows/unittest.yml @@ -0,0 +1,76 @@ +# Copyright 2026 Google LLC +# +# 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 +# +# https://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. + +on: + pull_request: + branches: + - main + +permissions: + contents: read + +name: unittest +jobs: + unit: + runs-on: ubuntu-22.04 + strategy: + matrix: + python: ['3.8'] + steps: + - name: Checkout + uses: actions/checkout@v4 + - name: Setup Python + uses: actions/setup-python@v5 + with: + python-version: ${{ matrix.python }} + - name: Install nox + run: | + python -m pip install --upgrade setuptools pip wheel + python -m pip install nox + - name: Run unit tests + env: + COVERAGE_FILE: .coverage-${{ matrix.python }} + run: | + nox -s unit-${{ matrix.python }} + - name: Upload coverage results + uses: actions/upload-artifact@v4 + with: + name: coverage-artifact-${{ matrix.python }} + path: .coverage-${{ matrix.python }} + include-hidden-files: true + + cover: + runs-on: ubuntu-latest + needs: + - unit + steps: + - name: Checkout + uses: actions/checkout@v4 + - name: Setup Python + uses: actions/setup-python@v5 + with: + python-version: "3.13" + - name: Install coverage + run: | + python -m pip install --upgrade setuptools pip wheel + python -m pip install coverage + - name: Download coverage results + uses: actions/download-artifact@v4 + with: + path: .coverage-results/ + - name: Report coverage results + run: | + find .coverage-results -type f -name '*.zip' -exec unzip {} \; + coverage combine .coverage-results/**/.coverage* + coverage report --show-missing --fail-under=99 diff --git a/google/auth/_default.py b/google/auth/_default.py index d854163c4..01bd02a21 100644 --- a/google/auth/_default.py +++ b/google/auth/_default.py @@ -16,13 +16,13 @@ Implements application default credentials and project ID detection. """ +from __future__ import annotations -from collections.abc import Sequence import io import json import logging import os -from typing import Optional, TYPE_CHECKING +from typing import Optional, Sequence, TYPE_CHECKING import warnings from google.auth import environment_vars diff --git a/google/oauth2/id_token.py b/google/oauth2/id_token.py index fe4bebd78..d21be1a06 100644 --- a/google/oauth2/id_token.py +++ b/google/oauth2/id_token.py @@ -54,6 +54,7 @@ http://openid.net/specs/openid-connect-core-1_0.html#IDToken .. _CacheControl: https://cachecontrol.readthedocs.io """ +from __future__ import annotations import http.client as http_client import json diff --git a/noxfile.py b/noxfile.py index 8a97f74cd..70173e55c 100644 --- a/noxfile.py +++ b/noxfile.py @@ -32,9 +32,16 @@ ] DEFAULT_PYTHON_VERSION = "3.14" -# TODO(https://github.com/googleapis/google-auth-library-python/issues/1787): -# Remove or restore testing for Python 3.7/3.8 -UNIT_TEST_PYTHON_VERSIONS = ["3.9", "3.10", "3.11", "3.12", "3.13", "3.14"] +UNIT_TEST_PYTHON_VERSIONS = [ + "3.7", + "3.8", + "3.9", + "3.10", + "3.11", + "3.12", + "3.13", + "3.14", +] # Error if a python version is missing nox.options.error_on_missing_interpreters = True @@ -44,8 +51,6 @@ "lint", "blacken", "mypy", - # TODO(https://github.com/googleapis/google-auth-library-python/issues/1787): - # Remove or restore testing for Python 3.7/3.8 "unit-3.9", "unit-3.10", "unit-3.11",