From 1081b7ce6b01727cfe6e2eeec45ce06da5812182 Mon Sep 17 00:00:00 2001 From: Anthonios Partheniou Date: Mon, 3 Mar 2025 15:30:39 +0000 Subject: [PATCH] fix: allow google-cloud-storage 3.x --- packages/google-cloud-automl/README.rst | 89 +++++++++++++++++++ packages/google-cloud-automl/setup.py | 2 +- .../integrate-isolated-handwritten-code.yaml | 2 +- 3 files changed, 91 insertions(+), 2 deletions(-) diff --git a/packages/google-cloud-automl/README.rst b/packages/google-cloud-automl/README.rst index a3c8bf944fbf..a77481b20c7c 100644 --- a/packages/google-cloud-automl/README.rst +++ b/packages/google-cloud-automl/README.rst @@ -106,3 +106,92 @@ Next Steps .. _Cloud AutoML Product documentation: https://cloud.google.com/automl/docs/ .. _README: https://github.com/googleapis/google-cloud-python/blob/main/README.rst + +Logging +------- + +This library uses the standard Python :code:`logging` functionality to log some RPC events that could be of interest for debugging and monitoring purposes. +Note the following: + +#. Logs may contain sensitive information. Take care to **restrict access to the logs** if they are saved, whether it be on local storage or on Google Cloud Logging. +#. Google may refine the occurrence, level, and content of various log messages in this library without flagging such changes as breaking. **Do not depend on immutability of the logging events**. +#. By default, the logging events from this library are not handled. You must **explicitly configure log handling** using one of the mechanisms below. + +Simple, environment-based configuration +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +To enable logging for this library without any changes in your code, set the :code:`GOOGLE_SDK_PYTHON_LOGGING_SCOPE` environment variable to a valid Google +logging scope. This configures handling of logging events (at level :code:`logging.DEBUG` or higher) from this library in a default manner, emitting the logged +messages in a structured format. It does not currently allow customizing the logging levels captured nor the handlers, formatters, etc. used for any logging +event. + +A logging scope is a period-separated namespace that begins with :code:`google`, identifying the Python module or package to log. + +- Valid logging scopes: :code:`google`, :code:`google.cloud.asset.v1`, :code:`google.api`, :code:`google.auth`, etc. +- Invalid logging scopes: :code:`foo`, :code:`123`, etc. + +**NOTE**: If the logging scope is invalid, the library does not set up any logging handlers. + +Environment-Based Examples +^^^^^^^^^^^^^^^^^^^^^^^^^^ + +- Enabling the default handler for all Google-based loggers + +.. code-block:: console + + export GOOGLE_SDK_PYTHON_LOGGING_SCOPE=google + +- Enabling the default handler for a specific Google module (for a client library called :code:`library_v1`): + +.. code-block:: console + + export GOOGLE_SDK_PYTHON_LOGGING_SCOPE=google.cloud.library_v1 + + +Advanced, code-based configuration +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +You can also configure a valid logging scope using Python's standard `logging` mechanism. + +Code-Based Examples +^^^^^^^^^^^^^^^^^^^ + +- Configuring a handler for all Google-based loggers + +.. code-block:: python + + import logging + + from google.cloud.translate_v3 import translate + + base_logger = logging.getLogger("google") + base_logger.addHandler(logging.StreamHandler()) + base_logger.setLevel(logging.DEBUG) + +- Configuring a handler for a specific Google module (for a client library called :code:`library_v1`): + +.. code-block:: python + + import logging + + from google.cloud.translate_v3 import translate + + base_logger = logging.getLogger("google.cloud.library_v1") + base_logger.addHandler(logging.StreamHandler()) + base_logger.setLevel(logging.DEBUG) + +Logging details +~~~~~~~~~~~~~~~ + +#. Regardless of which of the mechanisms above you use to configure logging for this library, by default logging events are not propagated up to the root + logger from the `google`-level logger. If you need the events to be propagated to the root logger, you must explicitly set + :code:`logging.getLogger("google").propagate = True` in your code. +#. You can mix the different logging configurations above for different Google modules. For example, you may want use a code-based logging configuration for + one library, but decide you need to also set up environment-based logging configuration for another library. + + #. If you attempt to use both code-based and environment-based configuration for the same module, the environment-based configuration will be ineffectual + if the code -based configuration gets applied first. + +#. The Google-specific logging configurations (default handlers for environment-based configuration; not propagating logging events to the root logger) get + executed the first time *any* client library is instantiated in your application, and only if the affected loggers have not been previously configured. + (This is the reason for 2.i. above.) diff --git a/packages/google-cloud-automl/setup.py b/packages/google-cloud-automl/setup.py index 15d0a07fa1cb..5c7fdfff2b30 100644 --- a/packages/google-cloud-automl/setup.py +++ b/packages/google-cloud-automl/setup.py @@ -50,7 +50,7 @@ extras = { "libcst": "libcst >= 0.2.5", "pandas": ["pandas>=1.0.5"], - "storage": ["google-cloud-storage >=1.18.0, <3.0.0dev"], + "storage": ["google-cloud-storage >=1.18.0, <4.0.0dev"], } url = "https://github.com/googleapis/google-cloud-python/tree/main/packages/google-cloud-automl" diff --git a/scripts/client-post-processing/integrate-isolated-handwritten-code.yaml b/scripts/client-post-processing/integrate-isolated-handwritten-code.yaml index a07702d34e03..c1e5c9b2c9e4 100644 --- a/scripts/client-post-processing/integrate-isolated-handwritten-code.yaml +++ b/scripts/client-post-processing/integrate-isolated-handwritten-code.yaml @@ -198,7 +198,7 @@ replacements: extras = { "libcst": "libcst >= 0.2.5", "pandas": ["pandas>=1.0.5"], - "storage": ["google-cloud-storage >=1.18.0, <3.0.0dev"], + "storage": ["google-cloud-storage >=1.18.0, <4.0.0dev"], } count: 1 - paths: [