diff --git a/.github/linters/.python-lint b/.github/linters/.python-lint index bdeb6c16..0624349a 100644 --- a/.github/linters/.python-lint +++ b/.github/linters/.python-lint @@ -173,6 +173,7 @@ ignored-classes=optparse.Values,thread._local,_thread._local # supports qualified module names, as well as Unix pattern matching. ignored-modules=flask, flask_talisman, + google.api_core.exceptions, google.auth.exceptions, google.cloud, jinja2, diff --git a/.github/workflows/linter.yml b/.github/workflows/linter.yml index f650abe7..12190c82 100644 --- a/.github/workflows/linter.yml +++ b/.github/workflows/linter.yml @@ -31,6 +31,7 @@ jobs: uses: super-linter/super-linter/slim@v8 env: DEFAULT_BRANCH: main + ENABLE_GITHUB_PULL_REQUEST_SUMMARY_COMMENT: false GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} FILTER_REGEX_EXCLUDE: .*\.min\..* VALIDATE_BASH: true diff --git a/.github/workflows/test-website.yml b/.github/workflows/test-website.yml index d4738b0e..6f6288ba 100644 --- a/.github/workflows/test-website.yml +++ b/.github/workflows/test-website.yml @@ -37,6 +37,7 @@ jobs: - name: Lint Generated HTML uses: super-linter/super-linter/slim@v8 env: + ENABLE_GITHUB_PULL_REQUEST_SUMMARY_COMMENT: false FILTER_REGEX_INCLUDE: static/html/.* GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} VALIDATE_HTML: true diff --git a/package-lock.json b/package-lock.json index 42dd3937..429fa98f 100644 --- a/package-lock.json +++ b/package-lock.json @@ -280,6 +280,7 @@ "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.16.0.tgz", "integrity": "sha512-UVJyE9MttOsBQIDKw1skb9nAwQuR5wuGD3+82K6JgJlm/Y+KI92oNsMNGZCYdDsVtRHSak0pcV5Dno5+4jh9sw==", "dev": true, + "peer": true, "bin": { "acorn": "bin/acorn" }, @@ -304,6 +305,7 @@ "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.17.1.tgz", "integrity": "sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==", "dev": true, + "peer": true, "dependencies": { "fast-deep-equal": "^3.1.3", "fast-uri": "^3.0.1", @@ -388,6 +390,7 @@ "url": "https://github.com/sponsors/ai" } ], + "peer": true, "dependencies": { "baseline-browser-mapping": "^2.9.0", "caniuse-lite": "^1.0.30001759", @@ -1370,6 +1373,7 @@ "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.105.4.tgz", "integrity": "sha512-jTywjboN9aHxFlToqb0K0Zs9SbBoW4zRUlGzI2tYNxVYcEi/IPpn+Xi4ye5jTLvX2YeLuic/IvxNot+Q1jMoOw==", "dev": true, + "peer": true, "dependencies": { "@types/eslint-scope": "^3.7.7", "@types/estree": "^1.0.8", @@ -1771,7 +1775,8 @@ "version": "8.16.0", "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.16.0.tgz", "integrity": "sha512-UVJyE9MttOsBQIDKw1skb9nAwQuR5wuGD3+82K6JgJlm/Y+KI92oNsMNGZCYdDsVtRHSak0pcV5Dno5+4jh9sw==", - "dev": true + "dev": true, + "peer": true }, "acorn-import-phases": { "version": "1.0.3", @@ -1785,6 +1790,7 @@ "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.17.1.tgz", "integrity": "sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==", "dev": true, + "peer": true, "requires": { "fast-deep-equal": "^3.1.3", "fast-uri": "^3.0.1", @@ -1837,6 +1843,7 @@ "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.28.1.tgz", "integrity": "sha512-ZC5Bd0LgJXgwGqUknZY/vkUQ04r8NXnJZ3yYi4vDmSiZmC/pdSN0NbNRPxZpbtO4uAfDUAFffO8IZoM3Gj8IkA==", "dev": true, + "peer": true, "requires": { "baseline-browser-mapping": "^2.9.0", "caniuse-lite": "^1.0.30001759", @@ -2513,6 +2520,7 @@ "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.105.4.tgz", "integrity": "sha512-jTywjboN9aHxFlToqb0K0Zs9SbBoW4zRUlGzI2tYNxVYcEi/IPpn+Xi4ye5jTLvX2YeLuic/IvxNot+Q1jMoOw==", "dev": true, + "peer": true, "requires": { "@types/eslint-scope": "^3.7.7", "@types/estree": "^1.0.8", diff --git a/server/dates.py b/server/dates.py index 0f1f3d6d..b667b2da 100644 --- a/server/dates.py +++ b/server/dates.py @@ -2,7 +2,8 @@ import logging from google.cloud import storage -from google.auth.exceptions import DefaultCredentialsError +from google.auth.exceptions import DefaultCredentialsError, RefreshError +from google.api_core.exceptions import Forbidden # Create/configure stream handler sh = logging.StreamHandler() @@ -21,7 +22,8 @@ LOAD_DATES_FROM_GCS = True try: gcs = storage.Client() -except DefaultCredentialsError: # pragma: no cover + gcs.get_bucket(GCS_BUCKET) # pragma: no cover +except (DefaultCredentialsError, RefreshError, Forbidden): # pragma: no cover logger.warning("Unable to authenticate to Google Cloud Storage.") LOAD_DATES_FROM_GCS = False