Script 'mail_helper' called by obssrc
Hello community,

here is the log from the commit of package python-google-api-core for 
openSUSE:Factory checked in at 2022-09-09 18:27:41
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/python-google-api-core (Old)
 and      /work/SRC/openSUSE:Factory/.python-google-api-core.new.2083 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "python-google-api-core"

Fri Sep  9 18:27:41 2022 rev:21 rq:1001930 version:2.10.0

Changes:
--------
--- 
/work/SRC/openSUSE:Factory/python-google-api-core/python-google-api-core.changes
    2022-06-08 14:25:33.148549324 +0200
+++ 
/work/SRC/openSUSE:Factory/.python-google-api-core.new.2083/python-google-api-core.changes
  2022-09-09 18:29:12.617217859 +0200
@@ -1,0 +2,17 @@
+Thu Sep  8 11:26:12 UTC 2022 - John Paul Adrian Glaubitz 
<adrian.glaub...@suse.com>
+
+- Update to 2.10.0
+  * Add 'strict' to flatten_query_params to lower-case bools (#433)
+  * Make grpc transcode logic work in terms of protobuf python objects (#428)
+  * Require python 3.7+ (#410)
+  * Restore support for grpcio-gcp (#418)
+- from version 2.8.2
+  * **deps:** allow protobuf < 5.0.0 (#400)
+  * drop support for grpc-gcp (#401)
+  * fix changelog header to consistent size (#394)
+  * Fix typo in the BackgroundConsumer docstring (#395)
+- Refresh patches for new version
+  * python-google-api-core-no-mock.patch
+- Update BuildRequires and Requires from setup.py
+
+-------------------------------------------------------------------

Old:
----
  google-api-core-2.8.1.tar.gz

New:
----
  google-api-core-2.10.0.tar.gz

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ python-google-api-core.spec ++++++
--- /var/tmp/diff_new_pack.NHeyNW/_old  2022-09-09 18:29:12.989218838 +0200
+++ /var/tmp/diff_new_pack.NHeyNW/_new  2022-09-09 18:29:12.997218859 +0200
@@ -27,7 +27,7 @@
 %endif
 %define         skip_python2 1
 Name:           python-google-api-core
-Version:        2.8.1
+Version:        2.10.0
 Release:        0
 Summary:        Google API client core library
 License:        Apache-2.0
@@ -41,7 +41,7 @@
 BuildRequires:  %{python_module grpcio-gcp >= 0.2.2}
 BuildRequires:  %{python_module grpcio-status >= 1.33.2}
 BuildRequires:  %{python_module pip}
-BuildRequires:  %{python_module protobuf >= 3.12.0}
+BuildRequires:  %{python_module protobuf >= 3.20.1}
 BuildRequires:  %{python_module pytz}
 BuildRequires:  %{python_module requests >= 2.18.0}
 BuildRequires:  %{python_module setuptools >= 40.3.0}
@@ -60,7 +60,7 @@
 Requires:       python-googleapis-common-protos >= 1.53.0
 Requires:       python-grpcio >= 1.33.2
 Requires:       python-grpcio-status >= 1.33.2
-Requires:       python-protobuf >= 3.12.0
+Requires:       python-protobuf >= 3.20.1
 Requires:       python-pytz
 Requires:       python-requests >= 2.18.0
 Requires:       python-setuptools >= 40.3.0

++++++ google-api-core-2.8.1.tar.gz -> google-api-core-2.10.0.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/google-api-core-2.8.1/PKG-INFO 
new/google-api-core-2.10.0/PKG-INFO
--- old/google-api-core-2.8.1/PKG-INFO  2022-05-26 22:34:07.961703000 +0200
+++ new/google-api-core-2.10.0/PKG-INFO 2022-09-02 03:30:01.598130500 +0200
@@ -1,6 +1,6 @@
 Metadata-Version: 2.1
 Name: google-api-core
-Version: 2.8.1
+Version: 2.10.0
 Summary: Google API client core library
 Home-page: https://github.com/googleapis/python-api-core
 Author: Google LLC
@@ -12,14 +12,13 @@
 Classifier: License :: OSI Approved :: Apache Software License
 Classifier: Programming Language :: Python
 Classifier: Programming Language :: Python :: 3
-Classifier: Programming Language :: Python :: 3.6
 Classifier: Programming Language :: Python :: 3.7
 Classifier: Programming Language :: Python :: 3.8
 Classifier: Programming Language :: Python :: 3.9
 Classifier: Programming Language :: Python :: 3.10
 Classifier: Operating System :: OS Independent
 Classifier: Topic :: Internet
-Requires-Python: >=3.6
+Requires-Python: >=3.7
 Provides-Extra: grpc
 Provides-Extra: grpcgcp
 Provides-Extra: grpcio-gcp
@@ -43,13 +42,16 @@
 
 Supported Python Versions
 -------------------------
-Python >= 3.6
+Python >= 3.7
 
 
 Unsupported Python Versions
 ---------------------------
 
-Python == 2.7, Python == 3.5.
+Python == 2.7, Python == 3.5, Python == 3.6.
 
 The last version of this library compatible with Python 2.7 and 3.5 is
 `google-api-core==1.31.1`.
+
+The last version of this library compatible with Python 3.6 is
+`google-api-core==2.8.2`.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/google-api-core-2.8.1/README.rst 
new/google-api-core-2.10.0/README.rst
--- old/google-api-core-2.8.1/README.rst        2022-05-26 22:31:07.000000000 
+0200
+++ new/google-api-core-2.10.0/README.rst       2022-09-02 03:27:23.000000000 
+0200
@@ -16,13 +16,16 @@
 
 Supported Python Versions
 -------------------------
-Python >= 3.6
+Python >= 3.7
 
 
 Unsupported Python Versions
 ---------------------------
 
-Python == 2.7, Python == 3.5.
+Python == 2.7, Python == 3.5, Python == 3.6.
 
 The last version of this library compatible with Python 2.7 and 3.5 is
 `google-api-core==1.31.1`.
+
+The last version of this library compatible with Python 3.6 is
+`google-api-core==2.8.2`.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/google-api-core-2.8.1/google/api_core/bidi.py 
new/google-api-core-2.10.0/google/api_core/bidi.py
--- old/google-api-core-2.8.1/google/api_core/bidi.py   2022-05-26 
22:31:07.000000000 +0200
+++ new/google-api-core-2.10.0/google/api_core/bidi.py  2022-09-02 
03:27:23.000000000 +0200
@@ -364,7 +364,7 @@
         def should_recover(exc):
             return (
                 isinstance(exc, grpc.RpcError) and
-                exc.code() == grpc.StatusCode.UNVAILABLE)
+                exc.code() == grpc.StatusCode.UNAVAILABLE)
 
         initial_request = example_pb2.StreamingRpcRequest(
             setting='example')
@@ -589,7 +589,7 @@
         def should_recover(exc):
             return (
                 isinstance(exc, grpc.RpcError) and
-                exc.code() == grpc.StatusCode.UNVAILABLE)
+                exc.code() == grpc.StatusCode.UNAVAILABLE)
 
         initial_request = example_pb2.StreamingRpcRequest(
             setting='example')
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/google-api-core-2.8.1/google/api_core/grpc_helpers.py 
new/google-api-core-2.10.0/google/api_core/grpc_helpers.py
--- old/google-api-core-2.8.1/google/api_core/grpc_helpers.py   2022-05-26 
22:31:07.000000000 +0200
+++ new/google-api-core-2.10.0/google/api_core/grpc_helpers.py  2022-09-02 
03:27:23.000000000 +0200
@@ -16,6 +16,7 @@
 
 import collections
 import functools
+import warnings
 
 import grpc
 
@@ -24,12 +25,26 @@
 import google.auth.credentials
 import google.auth.transport.grpc
 import google.auth.transport.requests
+import google.protobuf
 
-try:
-    import grpc_gcp
+PROTOBUF_VERSION = google.protobuf.__version__
 
-    HAS_GRPC_GCP = True
-except ImportError:
+# The grpcio-gcp package only has support for protobuf < 4
+if PROTOBUF_VERSION[0:2] == "3.":
+    try:
+        import grpc_gcp
+
+        warnings.warn(
+            """Support for grpcio-gcp is deprecated. This feature will be
+            removed from `google-api-core` after January 1, 2024. If you need 
to
+            continue to use this feature, please pin to a specific version of
+            `google-api-core`.""",
+            DeprecationWarning,
+        )
+        HAS_GRPC_GCP = True
+    except ImportError:
+        HAS_GRPC_GCP = False
+else:
     HAS_GRPC_GCP = False
 
 
@@ -284,6 +299,7 @@
         default_host (str): The default endpoint. e.g., 
"pubsub.googleapis.com".
         kwargs: Additional key-word args passed to
             :func:`grpc_gcp.secure_channel` or :func:`grpc.secure_channel`.
+            Note: `grpc_gcp` is only supported in environments with protobuf < 
4.0.0.
 
     Returns:
         grpc.Channel: The created channel.
@@ -303,11 +319,8 @@
     )
 
     if HAS_GRPC_GCP:
-        # If grpc_gcp module is available use grpc_gcp.secure_channel,
-        # otherwise, use grpc.secure_channel to create grpc channel.
         return grpc_gcp.secure_channel(target, composite_credentials, **kwargs)
-    else:
-        return grpc.secure_channel(target, composite_credentials, **kwargs)
+    return grpc.secure_channel(target, composite_credentials, **kwargs)
 
 
 _MethodCall = collections.namedtuple(
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/google-api-core-2.8.1/google/api_core/grpc_helpers_async.py 
new/google-api-core-2.10.0/google/api_core/grpc_helpers_async.py
--- old/google-api-core-2.8.1/google/api_core/grpc_helpers_async.py     
2022-05-26 22:31:07.000000000 +0200
+++ new/google-api-core-2.10.0/google/api_core/grpc_helpers_async.py    
2022-09-02 03:27:23.000000000 +0200
@@ -12,7 +12,7 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 
-"""AsyncIO helpers for :mod:`grpc` supporting 3.6+.
+"""AsyncIO helpers for :mod:`grpc` supporting 3.7+.
 
 Please combine more detailed docstring in grpc_helpers.py to use following
 functions. This module is implementing the same surface with AsyncIO semantics.
@@ -27,9 +27,6 @@
 from google.api_core import exceptions, grpc_helpers
 
 
-# TODO(lidiz) Support gRPC GCP wrapper
-HAS_GRPC_GCP = False
-
 # NOTE(lidiz) Alternatively, we can hack "__getattribute__" to perform
 # automatic patching for us. But that means the overhead of creating an
 # extra Python function spreads to every single send and receive.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/google-api-core-2.8.1/google/api_core/path_template.py 
new/google-api-core-2.10.0/google/api_core/path_template.py
--- old/google-api-core-2.8.1/google/api_core/path_template.py  2022-05-26 
22:31:07.000000000 +0200
+++ new/google-api-core-2.10.0/google/api_core/path_template.py 2022-09-02 
03:27:23.000000000 +0200
@@ -176,7 +176,7 @@
     """Get the value of a field from a given dictionary.
 
     Args:
-        request (dict): A dictionary object.
+        request (dict | Message): A dictionary or a Message object.
         field (str): The key to the request in dot notation.
 
     Returns:
@@ -184,10 +184,12 @@
     """
     parts = field.split(".")
     value = request
+
     for part in parts:
         if not isinstance(value, dict):
-            return
-        value = value.get(part)
+            value = getattr(value, part, None)
+        else:
+            value = value.get(part)
     if isinstance(value, dict):
         return
     return value
@@ -197,19 +199,27 @@
     """Delete the value of a field from a given dictionary.
 
     Args:
-        request (dict): A dictionary object.
+        request (dict | Message): A dictionary object or a Message.
         field (str): The key to the request in dot notation.
     """
     parts = deque(field.split("."))
     while len(parts) > 1:
-        if not isinstance(request, dict):
-            return
         part = parts.popleft()
-        request = request.get(part)
+        if not isinstance(request, dict):
+            if hasattr(request, part):
+                request = getattr(request, part, None)
+            else:
+                return
+        else:
+            request = request.get(part)
     part = parts.popleft()
     if not isinstance(request, dict):
-        return
-    request.pop(part, None)
+        if hasattr(request, part):
+            request.ClearField(part)
+        else:
+            return
+    else:
+        request.pop(part, None)
 
 
 def validate(tmpl, path):
@@ -237,7 +247,7 @@
     return True if re.match(pattern, path) is not None else False
 
 
-def transcode(http_options, **request_kwargs):
+def transcode(http_options, message=None, **request_kwargs):
     """Transcodes a grpc request pattern into a proper HTTP request following 
the rules outlined here,
     
https://github.com/googleapis/googleapis/blob/master/google/api/http.proto#L44-L312
 
@@ -248,18 +258,20 @@
              'body'      (str): The body field name (optional)
              (This is a simplified representation of the proto option 
`google.api.http`)
 
+         message (Message) : A request object (optional)
          request_kwargs (dict) : A dict representing the request object
 
      Returns:
          dict: The transcoded request with these keys,
              'method'        (str)   : The http method
              'uri'           (str)   : The expanded uri
-             'body'          (dict)  : A dict representing the body (optional)
-             'query_params'  (dict)  : A dict mapping query parameter 
variables and values
+             'body'          (dict | Message)  : A dict or a Message 
representing the body (optional)
+             'query_params'  (dict | Message)  : A dict or Message mapping 
query parameter variables and values
 
      Raises:
          ValueError: If the request does not match the given template.
     """
+    transcoded_value = message or request_kwargs
     for http_option in http_options:
         request = {}
 
@@ -268,27 +280,35 @@
         path_fields = [
             match.group("name") for match in 
_VARIABLE_RE.finditer(uri_template)
         ]
-        path_args = {field: get_field(request_kwargs, field) for field in 
path_fields}
+        path_args = {field: get_field(transcoded_value, field) for field in 
path_fields}
         request["uri"] = expand(uri_template, **path_args)
-        # Remove fields used in uri path from request
-        leftovers = copy.deepcopy(request_kwargs)
-        for path_field in path_fields:
-            delete_field(leftovers, path_field)
 
         if not validate(uri_template, request["uri"]) or not 
all(path_args.values()):
             continue
 
+        # Remove fields used in uri path from request
+        leftovers = copy.deepcopy(transcoded_value)
+        for path_field in path_fields:
+            delete_field(leftovers, path_field)
+
         # Assign body and query params
         body = http_option.get("body")
 
         if body:
             if body == "*":
                 request["body"] = leftovers
-                request["query_params"] = {}
+                if message:
+                    request["query_params"] = message.__class__()
+                else:
+                    request["query_params"] = {}
             else:
                 try:
-                    request["body"] = leftovers.pop(body)
-                except KeyError:
+                    if message:
+                        request["body"] = getattr(leftovers, body)
+                        delete_field(leftovers, body)
+                    else:
+                        request["body"] = leftovers.pop(body)
+                except (KeyError, AttributeError):
                     continue
                 request["query_params"] = leftovers
         else:
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/google-api-core-2.8.1/google/api_core/rest_helpers.py 
new/google-api-core-2.10.0/google/api_core/rest_helpers.py
--- old/google-api-core-2.8.1/google/api_core/rest_helpers.py   2022-05-26 
22:31:07.000000000 +0200
+++ new/google-api-core-2.10.0/google/api_core/rest_helpers.py  2022-09-02 
03:27:23.000000000 +0200
@@ -18,8 +18,8 @@
 import operator
 
 
-def flatten_query_params(obj):
-    """Flatten a nested dict into a list of (name,value) tuples.
+def flatten_query_params(obj, strict=False):
+    """Flatten a dict into a list of (name,value) tuples.
 
     The result is suitable for setting query params on an http request.
 
@@ -28,9 +28,10 @@
         >>> obj = {'a':
         ...         {'b':
         ...           {'c': ['x', 'y', 'z']} },
-        ...      'd': 'uvw', }
-        >>> flatten_query_params(obj)
-        [('a.b.c', 'x'), ('a.b.c', 'y'), ('a.b.c', 'z'), ('d', 'uvw')]
+        ...      'd': 'uvw',
+        ...      'e': True, }
+        >>> flatten_query_params(obj, strict=True)
+        [('a.b.c', 'x'), ('a.b.c', 'y'), ('a.b.c', 'z'), ('d', 'uvw'), ('e', 
'true')]
 
     Note that, as described in
     
https://github.com/googleapis/googleapis/blob/48d9fb8c8e287c472af500221c6450ecd45d7d39/google/api/http.proto#L117,
@@ -38,7 +39,9 @@
     This is enforced in this function.
 
     Args:
-      obj: a nested dictionary (from json), or None
+      obj: a possibly nested dictionary (from json), or None
+      strict: a bool, defaulting to False, to enforce that all values in the
+              result tuples be strings and, if boolean, lower-cased.
 
     Returns: a list of tuples, with each tuple having a (possibly) multi-part 
name
       and a scalar value.
@@ -51,17 +54,17 @@
     if obj is not None and not isinstance(obj, dict):
         raise TypeError("flatten_query_params must be called with dict object")
 
-    return _flatten(obj, key_path=[])
+    return _flatten(obj, key_path=[], strict=strict)
 
 
-def _flatten(obj, key_path):
+def _flatten(obj, key_path, strict=False):
     if obj is None:
         return []
     if isinstance(obj, dict):
-        return _flatten_dict(obj, key_path=key_path)
+        return _flatten_dict(obj, key_path=key_path, strict=strict)
     if isinstance(obj, list):
-        return _flatten_list(obj, key_path=key_path)
-    return _flatten_value(obj, key_path=key_path)
+        return _flatten_list(obj, key_path=key_path, strict=strict)
+    return _flatten_value(obj, key_path=key_path, strict=strict)
 
 
 def _is_primitive_value(obj):
@@ -74,21 +77,33 @@
     return True
 
 
-def _flatten_value(obj, key_path):
-    return [(".".join(key_path), obj)]
+def _flatten_value(obj, key_path, strict=False):
+    return [(".".join(key_path), _canonicalize(obj, strict=strict))]
 
 
-def _flatten_dict(obj, key_path):
-    items = (_flatten(value, key_path=key_path + [key]) for key, value in 
obj.items())
+def _flatten_dict(obj, key_path, strict=False):
+    items = (
+        _flatten(value, key_path=key_path + [key], strict=strict)
+        for key, value in obj.items()
+    )
     return functools.reduce(operator.concat, items, [])
 
 
-def _flatten_list(elems, key_path):
+def _flatten_list(elems, key_path, strict=False):
     # Only lists of scalar values are supported.
     # The name (key_path) is repeated for each value.
     items = (
-        _flatten_value(elem, key_path=key_path)
+        _flatten_value(elem, key_path=key_path, strict=strict)
         for elem in elems
         if _is_primitive_value(elem)
     )
     return functools.reduce(operator.concat, items, [])
+
+
+def _canonicalize(obj, strict=False):
+    if strict:
+        value = str(obj)
+        if isinstance(obj, bool):
+            value = value.lower()
+        return value
+    return obj
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/google-api-core-2.8.1/google/api_core/version.py 
new/google-api-core-2.10.0/google/api_core/version.py
--- old/google-api-core-2.8.1/google/api_core/version.py        2022-05-26 
22:31:07.000000000 +0200
+++ new/google-api-core-2.10.0/google/api_core/version.py       2022-09-02 
03:27:23.000000000 +0200
@@ -12,4 +12,4 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 
-__version__ = "2.8.1"
+__version__ = "2.10.0"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/google-api-core-2.8.1/google_api_core.egg-info/PKG-INFO 
new/google-api-core-2.10.0/google_api_core.egg-info/PKG-INFO
--- old/google-api-core-2.8.1/google_api_core.egg-info/PKG-INFO 2022-05-26 
22:34:07.000000000 +0200
+++ new/google-api-core-2.10.0/google_api_core.egg-info/PKG-INFO        
2022-09-02 03:30:01.000000000 +0200
@@ -1,6 +1,6 @@
 Metadata-Version: 2.1
 Name: google-api-core
-Version: 2.8.1
+Version: 2.10.0
 Summary: Google API client core library
 Home-page: https://github.com/googleapis/python-api-core
 Author: Google LLC
@@ -12,14 +12,13 @@
 Classifier: License :: OSI Approved :: Apache Software License
 Classifier: Programming Language :: Python
 Classifier: Programming Language :: Python :: 3
-Classifier: Programming Language :: Python :: 3.6
 Classifier: Programming Language :: Python :: 3.7
 Classifier: Programming Language :: Python :: 3.8
 Classifier: Programming Language :: Python :: 3.9
 Classifier: Programming Language :: Python :: 3.10
 Classifier: Operating System :: OS Independent
 Classifier: Topic :: Internet
-Requires-Python: >=3.6
+Requires-Python: >=3.7
 Provides-Extra: grpc
 Provides-Extra: grpcgcp
 Provides-Extra: grpcio-gcp
@@ -43,13 +42,16 @@
 
 Supported Python Versions
 -------------------------
-Python >= 3.6
+Python >= 3.7
 
 
 Unsupported Python Versions
 ---------------------------
 
-Python == 2.7, Python == 3.5.
+Python == 2.7, Python == 3.5, Python == 3.6.
 
 The last version of this library compatible with Python 2.7 and 3.5 is
 `google-api-core==1.31.1`.
+
+The last version of this library compatible with Python 3.6 is
+`google-api-core==2.8.2`.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/google-api-core-2.8.1/google_api_core.egg-info/requires.txt 
new/google-api-core-2.10.0/google_api_core.egg-info/requires.txt
--- old/google-api-core-2.8.1/google_api_core.egg-info/requires.txt     
2022-05-26 22:34:07.000000000 +0200
+++ new/google-api-core-2.10.0/google_api_core.egg-info/requires.txt    
2022-09-02 03:30:01.000000000 +0200
@@ -1,5 +1,5 @@
 googleapis-common-protos<2.0dev,>=1.56.2
-protobuf<4.0.0dev,>=3.15.0
+protobuf<5.0.0dev,>=3.20.1
 google-auth<3.0dev,>=1.25.0
 requests<3.0.0dev,>=2.18.0
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/google-api-core-2.8.1/setup.cfg 
new/google-api-core-2.10.0/setup.cfg
--- old/google-api-core-2.8.1/setup.cfg 2022-05-26 22:34:07.961703000 +0200
+++ new/google-api-core-2.10.0/setup.cfg        2022-09-02 03:30:01.598130500 
+0200
@@ -1,5 +1,5 @@
 [pytype]
-python_version = 3.6
+python_version = 3.7
 inputs = 
        google/
 exclude = 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/google-api-core-2.8.1/setup.py 
new/google-api-core-2.10.0/setup.py
--- old/google-api-core-2.8.1/setup.py  2022-05-26 22:31:07.000000000 +0200
+++ new/google-api-core-2.10.0/setup.py 2022-09-02 03:27:23.000000000 +0200
@@ -30,7 +30,7 @@
 release_status = "Development Status :: 5 - Production/Stable"
 dependencies = [
     "googleapis-common-protos >= 1.56.2, < 2.0dev",
-    "protobuf >= 3.15.0, <4.0.0dev",
+    "protobuf >= 3.20.1, <5.0.0dev",
     "google-auth >= 1.25.0, < 3.0dev",
     "requests >= 2.18.0, < 3.0.0dev",
 ]
@@ -82,7 +82,6 @@
         "License :: OSI Approved :: Apache Software License",
         "Programming Language :: Python",
         "Programming Language :: Python :: 3",
-        "Programming Language :: Python :: 3.6",
         "Programming Language :: Python :: 3.7",
         "Programming Language :: Python :: 3.8",
         "Programming Language :: Python :: 3.9",
@@ -95,7 +94,7 @@
     namespace_packages=namespaces,
     install_requires=dependencies,
     extras_require=extras,
-    python_requires=">=3.6",
+    python_requires=">=3.7",
     include_package_data=True,
     zip_safe=False,
 )
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/google-api-core-2.8.1/tests/asyncio/test_grpc_helpers_async.py 
new/google-api-core-2.10.0/tests/asyncio/test_grpc_helpers_async.py
--- old/google-api-core-2.8.1/tests/asyncio/test_grpc_helpers_async.py  
2022-05-26 22:31:07.000000000 +0200
+++ new/google-api-core-2.10.0/tests/asyncio/test_grpc_helpers_async.py 
2022-09-02 03:27:23.000000000 +0200
@@ -565,11 +565,8 @@
     grpc_secure_channel.assert_called_once_with(target, composite_creds)
 
 
-@pytest.mark.skipif(
-    grpc_helpers_async.HAS_GRPC_GCP, reason="grpc_gcp module not available"
-)
 @mock.patch("grpc.aio.secure_channel")
-def test_create_channel_without_grpc_gcp(grpc_secure_channel):
+def test_create_channel(grpc_secure_channel):
     target = "example.com:443"
     scopes = ["test_scope"]
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/google-api-core-2.8.1/tests/unit/test_grpc_helpers.py 
new/google-api-core-2.10.0/tests/unit/test_grpc_helpers.py
--- old/google-api-core-2.8.1/tests/unit/test_grpc_helpers.py   2022-05-26 
22:31:07.000000000 +0200
+++ new/google-api-core-2.10.0/tests/unit/test_grpc_helpers.py  2022-09-02 
03:27:23.000000000 +0200
@@ -426,6 +426,7 @@
 
     composite_creds_call.assert_called_once_with(ssl_creds, mock.ANY)
     composite_creds = composite_creds_call.return_value
+
     if grpc_helpers.HAS_GRPC_GCP:
         grpc_secure_channel.assert_called_once_with(target, composite_creds, 
None)
     else:
@@ -507,6 +508,7 @@
     )
 
     assert channel is grpc_secure_channel.return_value
+
     if grpc_helpers.HAS_GRPC_GCP:
         grpc_secure_channel.assert_called_once_with(target, composite_creds, 
None)
     else:
@@ -530,6 +532,7 @@
     credentials.with_scopes.assert_called_once_with(scopes, 
default_scopes=None)
 
     assert channel is grpc_secure_channel.return_value
+
     if grpc_helpers.HAS_GRPC_GCP:
         grpc_secure_channel.assert_called_once_with(target, composite_creds, 
None)
     else:
@@ -557,6 +560,7 @@
     )
 
     assert channel is grpc_secure_channel.return_value
+
     if grpc_helpers.HAS_GRPC_GCP:
         grpc_secure_channel.assert_called_once_with(target, composite_creds, 
None)
     else:
@@ -582,6 +586,7 @@
     credentials.with_quota_project.assert_called_once_with("project-foo")
 
     assert channel is grpc_secure_channel.return_value
+
     if grpc_helpers.HAS_GRPC_GCP:
         grpc_secure_channel.assert_called_once_with(target, composite_creds, 
None)
     else:
@@ -610,6 +615,7 @@
     )
 
     assert channel is grpc_secure_channel.return_value
+
     if grpc_helpers.HAS_GRPC_GCP:
         grpc_secure_channel.assert_called_once_with(target, composite_creds, 
None)
     else:
@@ -641,6 +647,7 @@
     )
 
     assert channel is grpc_secure_channel.return_value
+
     if grpc_helpers.HAS_GRPC_GCP:
         grpc_secure_channel.assert_called_once_with(target, composite_creds, 
None)
     else:
@@ -672,6 +679,7 @@
     )
 
     assert channel is grpc_secure_channel.return_value
+
     if grpc_helpers.HAS_GRPC_GCP:
         grpc_secure_channel.assert_called_once_with(target, composite_creds, 
None)
     else:
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/google-api-core-2.8.1/tests/unit/test_path_template.py 
new/google-api-core-2.10.0/tests/unit/test_path_template.py
--- old/google-api-core-2.8.1/tests/unit/test_path_template.py  2022-05-26 
22:31:07.000000000 +0200
+++ new/google-api-core-2.10.0/tests/unit/test_path_template.py 2022-09-02 
03:27:23.000000000 +0200
@@ -17,6 +17,7 @@
 import mock
 import pytest
 
+from google.api import auth_pb2
 from google.api_core import path_template
 
 
@@ -171,113 +172,264 @@
 
 
 @pytest.mark.parametrize(
-    "http_options, request_kwargs, expected_result",
+    "http_options, message, request_kwargs, expected_result",
     [
         [
             [["get", "/v1/no/template", ""]],
+            None,
             {"foo": "bar"},
             ["get", "/v1/no/template", {}, {"foo": "bar"}],
         ],
+        [
+            [["get", "/v1/no/template", ""]],
+            auth_pb2.AuthenticationRule(selector="bar"),
+            {},
+            [
+                "get",
+                "/v1/no/template",
+                None,
+                auth_pb2.AuthenticationRule(selector="bar"),
+            ],
+        ],
         # Single templates
         [
             [["get", "/v1/{field}", ""]],
+            None,
             {"field": "parent"},
             ["get", "/v1/parent", {}, {}],
         ],
         [
+            [["get", "/v1/{selector}", ""]],
+            auth_pb2.AuthenticationRule(selector="parent"),
+            {},
+            ["get", "/v1/parent", None, auth_pb2.AuthenticationRule()],
+        ],
+        [
             [["get", "/v1/{field.sub}", ""]],
+            None,
             {"field": {"sub": "parent"}, "foo": "bar"},
             ["get", "/v1/parent", {}, {"field": {}, "foo": "bar"}],
         ],
+        [
+            [["get", "/v1/{oauth.canonical_scopes}", ""]],
+            auth_pb2.AuthenticationRule(
+                selector="bar",
+                oauth=auth_pb2.OAuthRequirements(canonical_scopes="parent"),
+            ),
+            {},
+            [
+                "get",
+                "/v1/parent",
+                None,
+                auth_pb2.AuthenticationRule(
+                    selector="bar", oauth=auth_pb2.OAuthRequirements()
+                ),
+            ],
+        ],
     ],
 )
-def test_transcode_base_case(http_options, request_kwargs, expected_result):
+def test_transcode_base_case(http_options, message, request_kwargs, 
expected_result):
     http_options, expected_result = helper_test_transcode(http_options, 
expected_result)
-    result = path_template.transcode(http_options, **request_kwargs)
+    result = path_template.transcode(http_options, message, **request_kwargs)
     assert result == expected_result
 
 
 @pytest.mark.parametrize(
-    "http_options, request_kwargs, expected_result",
+    "http_options, message, request_kwargs, expected_result",
     [
         [
             [["get", "/v1/{field.subfield}", ""]],
+            None,
             {"field": {"subfield": "parent"}, "foo": "bar"},
             ["get", "/v1/parent", {}, {"field": {}, "foo": "bar"}],
         ],
         [
+            [["get", "/v1/{oauth.canonical_scopes}", ""]],
+            auth_pb2.AuthenticationRule(
+                selector="bar",
+                oauth=auth_pb2.OAuthRequirements(canonical_scopes="parent"),
+            ),
+            {},
+            [
+                "get",
+                "/v1/parent",
+                None,
+                auth_pb2.AuthenticationRule(
+                    selector="bar", oauth=auth_pb2.OAuthRequirements()
+                ),
+            ],
+        ],
+        [
             [["get", "/v1/{field.subfield.subsubfield}", ""]],
+            None,
             {"field": {"subfield": {"subsubfield": "parent"}}, "foo": "bar"},
             ["get", "/v1/parent", {}, {"field": {"subfield": {}}, "foo": 
"bar"}],
         ],
         [
             [["get", "/v1/{field.subfield1}/{field.subfield2}", ""]],
+            None,
             {"field": {"subfield1": "parent", "subfield2": "child"}, "foo": 
"bar"},
             ["get", "/v1/parent/child", {}, {"field": {}, "foo": "bar"}],
         ],
+        [
+            [["get", "/v1/{selector}/{oauth.canonical_scopes}", ""]],
+            auth_pb2.AuthenticationRule(
+                selector="parent",
+                oauth=auth_pb2.OAuthRequirements(canonical_scopes="child"),
+            ),
+            {"field": {"subfield1": "parent", "subfield2": "child"}, "foo": 
"bar"},
+            [
+                "get",
+                "/v1/parent/child",
+                None,
+                
auth_pb2.AuthenticationRule(oauth=auth_pb2.OAuthRequirements()),
+            ],
+        ],
     ],
 )
-def test_transcode_subfields(http_options, request_kwargs, expected_result):
+def test_transcode_subfields(http_options, message, request_kwargs, 
expected_result):
     http_options, expected_result = helper_test_transcode(http_options, 
expected_result)
-    result = path_template.transcode(http_options, **request_kwargs)
+    result = path_template.transcode(http_options, message, **request_kwargs)
     assert result == expected_result
 
 
 @pytest.mark.parametrize(
-    "http_options, request_kwargs, expected_result",
+    "http_options, message, request_kwargs, expected_result",
     [
         # Single segment wildcard
         [
             [["get", "/v1/{field=*}", ""]],
+            None,
             {"field": "parent"},
             ["get", "/v1/parent", {}, {}],
         ],
         [
+            [["get", "/v1/{selector=*}", ""]],
+            auth_pb2.AuthenticationRule(selector="parent"),
+            {},
+            ["get", "/v1/parent", None, auth_pb2.AuthenticationRule()],
+        ],
+        [
             [["get", "/v1/{field=a/*/b/*}", ""]],
+            None,
             {"field": "a/parent/b/child", "foo": "bar"},
             ["get", "/v1/a/parent/b/child", {}, {"foo": "bar"}],
         ],
+        [
+            [["get", "/v1/{selector=a/*/b/*}", ""]],
+            auth_pb2.AuthenticationRule(
+                selector="a/parent/b/child", allow_without_credential=True
+            ),
+            {},
+            [
+                "get",
+                "/v1/a/parent/b/child",
+                None,
+                auth_pb2.AuthenticationRule(allow_without_credential=True),
+            ],
+        ],
         # Double segment wildcard
         [
             [["get", "/v1/{field=**}", ""]],
+            None,
             {"field": "parent/p1"},
             ["get", "/v1/parent/p1", {}, {}],
         ],
         [
+            [["get", "/v1/{selector=**}", ""]],
+            auth_pb2.AuthenticationRule(selector="parent/p1"),
+            {},
+            ["get", "/v1/parent/p1", None, auth_pb2.AuthenticationRule()],
+        ],
+        [
             [["get", "/v1/{field=a/**/b/**}", ""]],
+            None,
             {"field": "a/parent/p1/b/child/c1", "foo": "bar"},
             ["get", "/v1/a/parent/p1/b/child/c1", {}, {"foo": "bar"}],
         ],
+        [
+            [["get", "/v1/{selector=a/**/b/**}", ""]],
+            auth_pb2.AuthenticationRule(
+                selector="a/parent/p1/b/child/c1", 
allow_without_credential=True
+            ),
+            {},
+            [
+                "get",
+                "/v1/a/parent/p1/b/child/c1",
+                None,
+                auth_pb2.AuthenticationRule(allow_without_credential=True),
+            ],
+        ],
         # Combined single and double segment wildcard
         [
             [["get", "/v1/{field=a/*/b/**}", ""]],
+            None,
             {"field": "a/parent/b/child/c1"},
             ["get", "/v1/a/parent/b/child/c1", {}, {}],
         ],
         [
+            [["get", "/v1/{selector=a/*/b/**}", ""]],
+            auth_pb2.AuthenticationRule(selector="a/parent/b/child/c1"),
+            {},
+            ["get", "/v1/a/parent/b/child/c1", None, 
auth_pb2.AuthenticationRule()],
+        ],
+        [
             [["get", "/v1/{field=a/**/b/*}/v2/{name}", ""]],
+            None,
             {"field": "a/parent/p1/b/child", "name": "first", "foo": "bar"},
             ["get", "/v1/a/parent/p1/b/child/v2/first", {}, {"foo": "bar"}],
         ],
+        [
+            [["get", "/v1/{selector=a/**/b/*}/v2/{oauth.canonical_scopes}", 
""]],
+            auth_pb2.AuthenticationRule(
+                selector="a/parent/p1/b/child",
+                oauth=auth_pb2.OAuthRequirements(canonical_scopes="first"),
+            ),
+            {"field": "a/parent/p1/b/child", "name": "first", "foo": "bar"},
+            [
+                "get",
+                "/v1/a/parent/p1/b/child/v2/first",
+                None,
+                
auth_pb2.AuthenticationRule(oauth=auth_pb2.OAuthRequirements()),
+            ],
+        ],
     ],
 )
-def test_transcode_with_wildcard(http_options, request_kwargs, 
expected_result):
+def test_transcode_with_wildcard(
+    http_options, message, request_kwargs, expected_result
+):
     http_options, expected_result = helper_test_transcode(http_options, 
expected_result)
-    result = path_template.transcode(http_options, **request_kwargs)
+    result = path_template.transcode(http_options, message, **request_kwargs)
     assert result == expected_result
 
 
 @pytest.mark.parametrize(
-    "http_options, request_kwargs, expected_result",
+    "http_options, message, request_kwargs, expected_result",
     [
         # Single field body
         [
             [["post", "/v1/no/template", "data"]],
+            None,
             {"data": {"id": 1, "info": "some info"}, "foo": "bar"},
             ["post", "/v1/no/template", {"id": 1, "info": "some info"}, 
{"foo": "bar"}],
         ],
         [
+            [["post", "/v1/no/template", "oauth"]],
+            auth_pb2.AuthenticationRule(
+                selector="bar",
+                oauth=auth_pb2.OAuthRequirements(canonical_scopes="child"),
+            ),
+            {},
+            [
+                "post",
+                "/v1/no/template",
+                auth_pb2.OAuthRequirements(canonical_scopes="child"),
+                auth_pb2.AuthenticationRule(selector="bar"),
+            ],
+        ],
+        [
             [["post", "/v1/{field=a/*}/b/{name=**}", "data"]],
+            None,
             {
                 "field": "a/parent",
                 "name": "first/last",
@@ -291,9 +443,29 @@
                 {"foo": "bar"},
             ],
         ],
+        [
+            [["post", "/v1/{selector=a/*}/b/{oauth.canonical_scopes=**}", 
"oauth"]],
+            auth_pb2.AuthenticationRule(
+                selector="a/parent",
+                allow_without_credential=True,
+                requirements=[auth_pb2.AuthRequirement(provider_id="p")],
+                
oauth=auth_pb2.OAuthRequirements(canonical_scopes="first/last"),
+            ),
+            {},
+            [
+                "post",
+                "/v1/a/parent/b/first/last",
+                auth_pb2.OAuthRequirements(),
+                auth_pb2.AuthenticationRule(
+                    requirements=[auth_pb2.AuthRequirement(provider_id="p")],
+                    allow_without_credential=True,
+                ),
+            ],
+        ],
         # Wildcard body
         [
             [["post", "/v1/{field=a/*}/b/{name=**}", "*"]],
+            None,
             {
                 "field": "a/parent",
                 "name": "first/last",
@@ -307,16 +479,38 @@
                 {},
             ],
         ],
+        [
+            [["post", "/v1/{selector=a/*}/b/{oauth.canonical_scopes=**}", 
"*"]],
+            auth_pb2.AuthenticationRule(
+                selector="a/parent",
+                allow_without_credential=True,
+                
oauth=auth_pb2.OAuthRequirements(canonical_scopes="first/last"),
+            ),
+            {
+                "field": "a/parent",
+                "name": "first/last",
+                "data": {"id": 1, "info": "some info"},
+                "foo": "bar",
+            },
+            [
+                "post",
+                "/v1/a/parent/b/first/last",
+                auth_pb2.AuthenticationRule(
+                    allow_without_credential=True, 
oauth=auth_pb2.OAuthRequirements()
+                ),
+                auth_pb2.AuthenticationRule(),
+            ],
+        ],
     ],
 )
-def test_transcode_with_body(http_options, request_kwargs, expected_result):
+def test_transcode_with_body(http_options, message, request_kwargs, 
expected_result):
     http_options, expected_result = helper_test_transcode(http_options, 
expected_result)
-    result = path_template.transcode(http_options, **request_kwargs)
+    result = path_template.transcode(http_options, message, **request_kwargs)
     assert result == expected_result
 
 
 @pytest.mark.parametrize(
-    "http_options, request_kwargs, expected_result",
+    "http_options, message, request_kwargs, expected_result",
     [
         # Additional bindings
         [
@@ -324,6 +518,7 @@
                 ["post", "/v1/{field=a/*}/b/{name=**}", "extra_data"],
                 ["post", "/v1/{field=a/*}/b/{name=**}", "*"],
             ],
+            None,
             {
                 "field": "a/parent",
                 "name": "first/last",
@@ -339,36 +534,103 @@
         ],
         [
             [
+                [
+                    "post",
+                    "/v1/{selector=a/*}/b/{oauth.canonical_scopes=**}",
+                    "extra_data",
+                ],
+                ["post", "/v1/{selector=a/*}/b/{oauth.canonical_scopes=**}", 
"*"],
+            ],
+            auth_pb2.AuthenticationRule(
+                selector="a/parent",
+                allow_without_credential=True,
+                
oauth=auth_pb2.OAuthRequirements(canonical_scopes="first/last"),
+            ),
+            {},
+            [
+                "post",
+                "/v1/a/parent/b/first/last",
+                auth_pb2.AuthenticationRule(
+                    allow_without_credential=True, 
oauth=auth_pb2.OAuthRequirements()
+                ),
+                auth_pb2.AuthenticationRule(),
+            ],
+        ],
+        [
+            [
                 ["get", "/v1/{field=a/*}/b/{name=**}", ""],
                 ["get", "/v1/{field=a/*}/b/first/last", ""],
             ],
+            None,
             {"field": "a/parent", "foo": "bar"},
             ["get", "/v1/a/parent/b/first/last", {}, {"foo": "bar"}],
         ],
+        [
+            [
+                ["get", 
"/v1/{selector=a/*}/b/{oauth.allow_without_credential=**}", ""],
+                ["get", "/v1/{selector=a/*}/b/first/last", ""],
+            ],
+            auth_pb2.AuthenticationRule(
+                selector="a/parent",
+                allow_without_credential=True,
+                oauth=auth_pb2.OAuthRequirements(),
+            ),
+            {},
+            [
+                "get",
+                "/v1/a/parent/b/first/last",
+                None,
+                auth_pb2.AuthenticationRule(
+                    allow_without_credential=True, 
oauth=auth_pb2.OAuthRequirements()
+                ),
+            ],
+        ],
     ],
 )
 def test_transcode_with_additional_bindings(
-    http_options, request_kwargs, expected_result
+    http_options, message, request_kwargs, expected_result
 ):
     http_options, expected_result = helper_test_transcode(http_options, 
expected_result)
-    result = path_template.transcode(http_options, **request_kwargs)
+    result = path_template.transcode(http_options, message, **request_kwargs)
     assert result == expected_result
 
 
 @pytest.mark.parametrize(
-    "http_options, request_kwargs",
+    "http_options, message, request_kwargs",
     [
-        [[["get", "/v1/{name}", ""]], {"foo": "bar"}],
-        [[["get", "/v1/{name}", ""]], {"name": "first/last"}],
-        [[["get", "/v1/{name=mr/*/*}", ""]], {"name": "first/last"}],
-        [[["post", "/v1/{name}", "data"]], {"name": "first/last"}],
-        [[["post", "/v1/{first_name}", "data"]], {"last_name": "last"}],
+        [[["get", "/v1/{name}", ""]], None, {"foo": "bar"}],
+        [[["get", "/v1/{selector}", ""]], auth_pb2.AuthenticationRule(), {}],
+        [[["get", "/v1/{name}", ""]], auth_pb2.AuthenticationRule(), {}],
+        [[["get", "/v1/{name}", ""]], None, {"name": "first/last"}],
+        [
+            [["get", "/v1/{selector}", ""]],
+            auth_pb2.AuthenticationRule(selector="first/last"),
+            {},
+        ],
+        [[["get", "/v1/{name=mr/*/*}", ""]], None, {"name": "first/last"}],
+        [
+            [["get", "/v1/{selector=mr/*/*}", ""]],
+            auth_pb2.AuthenticationRule(selector="first/last"),
+            {},
+        ],
+        [[["post", "/v1/{name}", "data"]], None, {"name": "first/last"}],
+        [
+            [["post", "/v1/{selector}", "data"]],
+            auth_pb2.AuthenticationRule(selector="first"),
+            {},
+        ],
+        [[["post", "/v1/{first_name}", "data"]], None, {"last_name": "last"}],
+        [
+            [["post", "/v1/{first_name}", ""]],
+            auth_pb2.AuthenticationRule(selector="first"),
+            {},
+        ],
     ],
 )
-def test_transcode_fails(http_options, request_kwargs):
+def test_transcode_fails(http_options, message, request_kwargs):
     http_options, _ = helper_test_transcode(http_options, range(4))
     with pytest.raises(ValueError):
-        path_template.transcode(http_options, **request_kwargs)
+        path_template.transcode(http_options, message, **request_kwargs)
 
 
 def helper_test_transcode(http_options_list, expected_result_list):
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/google-api-core-2.8.1/tests/unit/test_rest_helpers.py 
new/google-api-core-2.10.0/tests/unit/test_rest_helpers.py
--- old/google-api-core-2.8.1/tests/unit/test_rest_helpers.py   2022-05-26 
22:31:07.000000000 +0200
+++ new/google-api-core-2.10.0/tests/unit/test_rest_helpers.py  2022-09-02 
03:27:23.000000000 +0200
@@ -36,9 +36,26 @@
 
 
 def test_flatten_simple_dict():
-    assert rest_helpers.flatten_query_params({"a": "abc", "b": "def"}) == [
+    obj = {"a": "abc", "b": "def", "c": True, "d": False, "e": 10, "f": -3.76}
+    assert rest_helpers.flatten_query_params(obj) == [
         ("a", "abc"),
         ("b", "def"),
+        ("c", True),
+        ("d", False),
+        ("e", 10),
+        ("f", -3.76),
+    ]
+
+
+def test_flatten_simple_dict_strict():
+    obj = {"a": "abc", "b": "def", "c": True, "d": False, "e": 10, "f": -3.76}
+    assert rest_helpers.flatten_query_params(obj, strict=True) == [
+        ("a", "abc"),
+        ("b", "def"),
+        ("c", "true"),
+        ("d", "false"),
+        ("e", "10"),
+        ("f", "-3.76"),
     ]
 
 

++++++ python-google-api-core-no-mock.patch ++++++
--- /var/tmp/diff_new_pack.NHeyNW/_old  2022-09-09 18:29:13.105219143 +0200
+++ /var/tmp/diff_new_pack.NHeyNW/_new  2022-09-09 18:29:13.109219154 +0200
@@ -1,6 +1,6 @@
-diff -upr google-api-core-2.7.2.orig/tests/asyncio/future/test_async_future.py 
google-api-core-2.7.2/tests/asyncio/future/test_async_future.py
---- google-api-core-2.7.2.orig/tests/asyncio/future/test_async_future.py       
2022-05-12 11:14:18.386281401 +0200
-+++ google-api-core-2.7.2/tests/asyncio/future/test_async_future.py    
2022-05-12 11:14:18.402281504 +0200
+diff -Nru 
google-api-core-2.10.0.orig/tests/asyncio/future/test_async_future.py 
google-api-core-2.10.0/tests/asyncio/future/test_async_future.py
+--- google-api-core-2.10.0.orig/tests/asyncio/future/test_async_future.py      
2022-09-02 03:27:23.000000000 +0200
++++ google-api-core-2.10.0/tests/asyncio/future/test_async_future.py   
2022-09-08 13:25:05.452419648 +0200
 @@ -14,7 +14,7 @@
  
  import asyncio
@@ -10,9 +10,9 @@
  import pytest
  
  from google.api_core import exceptions
-diff -upr google-api-core-2.7.2.orig/tests/asyncio/gapic/test_method_async.py 
google-api-core-2.7.2/tests/asyncio/gapic/test_method_async.py
---- google-api-core-2.7.2.orig/tests/asyncio/gapic/test_method_async.py        
2022-05-12 11:14:18.386281401 +0200
-+++ google-api-core-2.7.2/tests/asyncio/gapic/test_method_async.py     
2022-05-12 11:14:18.402281504 +0200
+diff -Nru google-api-core-2.10.0.orig/tests/asyncio/gapic/test_method_async.py 
google-api-core-2.10.0/tests/asyncio/gapic/test_method_async.py
+--- google-api-core-2.10.0.orig/tests/asyncio/gapic/test_method_async.py       
2022-09-02 03:27:23.000000000 +0200
++++ google-api-core-2.10.0/tests/asyncio/gapic/test_method_async.py    
2022-09-08 13:25:05.444419568 +0200
 @@ -14,7 +14,7 @@
  
  import datetime
@@ -22,9 +22,9 @@
  import pytest
  
  try:
-diff -upr 
google-api-core-2.7.2.orig/tests/asyncio/operations_v1/test_operations_async_client.py
 
google-api-core-2.7.2/tests/asyncio/operations_v1/test_operations_async_client.py
---- 
google-api-core-2.7.2.orig/tests/asyncio/operations_v1/test_operations_async_client.py
     2022-05-12 11:14:18.386281401 +0200
-+++ 
google-api-core-2.7.2/tests/asyncio/operations_v1/test_operations_async_client.py
  2022-05-12 11:14:18.402281504 +0200
+diff -Nru 
google-api-core-2.10.0.orig/tests/asyncio/operations_v1/test_operations_async_client.py
 
google-api-core-2.10.0/tests/asyncio/operations_v1/test_operations_async_client.py
+--- 
google-api-core-2.10.0.orig/tests/asyncio/operations_v1/test_operations_async_client.py
    2022-09-02 03:27:23.000000000 +0200
++++ 
google-api-core-2.10.0/tests/asyncio/operations_v1/test_operations_async_client.py
 2022-09-08 13:25:05.436419487 +0200
 @@ -12,7 +12,7 @@
  # See the License for the specific language governing permissions and
  # limitations under the License.
@@ -34,9 +34,9 @@
  import pytest
  
  try:
-diff -upr google-api-core-2.7.2.orig/tests/asyncio/test_grpc_helpers_async.py 
google-api-core-2.7.2/tests/asyncio/test_grpc_helpers_async.py
---- google-api-core-2.7.2.orig/tests/asyncio/test_grpc_helpers_async.py        
2022-05-12 11:14:18.386281401 +0200
-+++ google-api-core-2.7.2/tests/asyncio/test_grpc_helpers_async.py     
2022-05-12 11:14:18.402281504 +0200
+diff -Nru google-api-core-2.10.0.orig/tests/asyncio/test_grpc_helpers_async.py 
google-api-core-2.10.0/tests/asyncio/test_grpc_helpers_async.py
+--- google-api-core-2.10.0.orig/tests/asyncio/test_grpc_helpers_async.py       
2022-09-02 03:27:23.000000000 +0200
++++ google-api-core-2.10.0/tests/asyncio/test_grpc_helpers_async.py    
2022-09-08 13:25:05.432419447 +0200
 @@ -12,7 +12,7 @@
  # See the License for the specific language governing permissions and
  # limitations under the License.
@@ -46,9 +46,9 @@
  import pytest  # noqa: I202
  
  try:
-diff -upr google-api-core-2.7.2.orig/tests/asyncio/test_operation_async.py 
google-api-core-2.7.2/tests/asyncio/test_operation_async.py
---- google-api-core-2.7.2.orig/tests/asyncio/test_operation_async.py   
2022-05-12 11:14:18.386281401 +0200
-+++ google-api-core-2.7.2/tests/asyncio/test_operation_async.py        
2022-05-12 11:14:18.402281504 +0200
+diff -Nru google-api-core-2.10.0.orig/tests/asyncio/test_operation_async.py 
google-api-core-2.10.0/tests/asyncio/test_operation_async.py
+--- google-api-core-2.10.0.orig/tests/asyncio/test_operation_async.py  
2022-09-02 03:27:23.000000000 +0200
++++ google-api-core-2.10.0/tests/asyncio/test_operation_async.py       
2022-09-08 13:25:05.448419608 +0200
 @@ -13,7 +13,7 @@
  # limitations under the License.
  
@@ -58,9 +58,9 @@
  import pytest
  
  try:
-diff -upr google-api-core-2.7.2.orig/tests/asyncio/test_page_iterator_async.py 
google-api-core-2.7.2/tests/asyncio/test_page_iterator_async.py
---- google-api-core-2.7.2.orig/tests/asyncio/test_page_iterator_async.py       
2022-05-12 11:14:18.386281401 +0200
-+++ google-api-core-2.7.2/tests/asyncio/test_page_iterator_async.py    
2022-05-12 11:14:18.402281504 +0200
+diff -Nru 
google-api-core-2.10.0.orig/tests/asyncio/test_page_iterator_async.py 
google-api-core-2.10.0/tests/asyncio/test_page_iterator_async.py
+--- google-api-core-2.10.0.orig/tests/asyncio/test_page_iterator_async.py      
2022-09-02 03:27:23.000000000 +0200
++++ google-api-core-2.10.0/tests/asyncio/test_page_iterator_async.py   
2022-09-08 13:25:05.428419407 +0200
 @@ -14,7 +14,7 @@
  
  import inspect
@@ -70,18 +70,9 @@
  import pytest
  
  from google.api_core import page_iterator_async
-@@ -126,7 +126,7 @@ class TestAsyncIterator:
-         item2 = 100
-         item3 = 211
- 
--        # Make pages from mock responses
-+        # Make pages from unittest.mock responses
-         parent = mock.sentinel.parent
-         page1 = page_iterator_async.Page(
-             parent, (item1, item2), 
page_iterator_async._item_to_value_identity
-diff -upr google-api-core-2.7.2.orig/tests/asyncio/test_retry_async.py 
google-api-core-2.7.2/tests/asyncio/test_retry_async.py
---- google-api-core-2.7.2.orig/tests/asyncio/test_retry_async.py       
2022-05-12 11:14:18.386281401 +0200
-+++ google-api-core-2.7.2/tests/asyncio/test_retry_async.py    2022-05-12 
11:14:18.402281504 +0200
+diff -Nru google-api-core-2.10.0.orig/tests/asyncio/test_retry_async.py 
google-api-core-2.10.0/tests/asyncio/test_retry_async.py
+--- google-api-core-2.10.0.orig/tests/asyncio/test_retry_async.py      
2022-09-02 03:27:23.000000000 +0200
++++ google-api-core-2.10.0/tests/asyncio/test_retry_async.py   2022-09-08 
13:25:05.436419487 +0200
 @@ -15,7 +15,7 @@
  import datetime
  import re
@@ -91,9 +82,9 @@
  import pytest
  
  from google.api_core import exceptions
-diff -upr google-api-core-2.7.2.orig/tests/unit/future/test__helpers.py 
google-api-core-2.7.2/tests/unit/future/test__helpers.py
---- google-api-core-2.7.2.orig/tests/unit/future/test__helpers.py      
2022-05-12 11:14:18.390281427 +0200
-+++ google-api-core-2.7.2/tests/unit/future/test__helpers.py   2022-05-12 
11:14:18.402281504 +0200
+diff -Nru google-api-core-2.10.0.orig/tests/unit/future/test__helpers.py 
google-api-core-2.10.0/tests/unit/future/test__helpers.py
+--- google-api-core-2.10.0.orig/tests/unit/future/test__helpers.py     
2022-09-02 03:27:23.000000000 +0200
++++ google-api-core-2.10.0/tests/unit/future/test__helpers.py  2022-09-08 
13:25:05.508420211 +0200
 @@ -12,7 +12,7 @@
  # See the License for the specific language governing permissions and
  # limitations under the License.
@@ -103,10 +94,10 @@
  
  from google.api_core.future import _helpers
  
-diff -upr google-api-core-2.7.2.orig/tests/unit/future/test_polling.py 
google-api-core-2.7.2/tests/unit/future/test_polling.py
---- google-api-core-2.7.2.orig/tests/unit/future/test_polling.py       
2022-05-12 11:14:18.390281427 +0200
-+++ google-api-core-2.7.2/tests/unit/future/test_polling.py    2022-05-12 
11:14:18.402281504 +0200
-@@ -16,7 +16,7 @@ import concurrent.futures
+diff -Nru google-api-core-2.10.0.orig/tests/unit/future/test_polling.py 
google-api-core-2.10.0/tests/unit/future/test_polling.py
+--- google-api-core-2.10.0.orig/tests/unit/future/test_polling.py      
2022-09-02 03:27:23.000000000 +0200
++++ google-api-core-2.10.0/tests/unit/future/test_polling.py   2022-09-08 
13:25:05.508420211 +0200
+@@ -16,7 +16,7 @@
  import threading
  import time
  
@@ -115,9 +106,9 @@
  import pytest
  
  from google.api_core import exceptions, retry
-diff -upr google-api-core-2.7.2.orig/tests/unit/gapic/test_method.py 
google-api-core-2.7.2/tests/unit/gapic/test_method.py
---- google-api-core-2.7.2.orig/tests/unit/gapic/test_method.py 2022-05-12 
11:14:18.386281401 +0200
-+++ google-api-core-2.7.2/tests/unit/gapic/test_method.py      2022-05-12 
11:14:18.402281504 +0200
+diff -Nru google-api-core-2.10.0.orig/tests/unit/gapic/test_method.py 
google-api-core-2.10.0/tests/unit/gapic/test_method.py
+--- google-api-core-2.10.0.orig/tests/unit/gapic/test_method.py        
2022-09-02 03:27:23.000000000 +0200
++++ google-api-core-2.10.0/tests/unit/gapic/test_method.py     2022-09-08 
13:25:05.492420050 +0200
 @@ -14,7 +14,7 @@
  
  import datetime
@@ -127,9 +118,9 @@
  import pytest
  
  try:
-diff -upr 
google-api-core-2.7.2.orig/tests/unit/operations_v1/test_operations_rest_client.py
 google-api-core-2.7.2/tests/unit/operations_v1/test_operations_rest_client.py
---- 
google-api-core-2.7.2.orig/tests/unit/operations_v1/test_operations_rest_client.py
 2022-05-12 11:14:18.386281401 +0200
-+++ 
google-api-core-2.7.2/tests/unit/operations_v1/test_operations_rest_client.py   
   2022-05-12 11:14:18.402281504 +0200
+diff -Nru 
google-api-core-2.10.0.orig/tests/unit/operations_v1/test_operations_rest_client.py
 google-api-core-2.10.0/tests/unit/operations_v1/test_operations_rest_client.py
+--- 
google-api-core-2.10.0.orig/tests/unit/operations_v1/test_operations_rest_client.py
        2022-09-02 03:27:23.000000000 +0200
++++ 
google-api-core-2.10.0/tests/unit/operations_v1/test_operations_rest_client.py  
   2022-09-08 13:25:05.480419930 +0200
 @@ -15,7 +15,7 @@
  #
  import os
@@ -139,10 +130,10 @@
  import pytest
  
  try:
-diff -upr google-api-core-2.7.2.orig/tests/unit/test_bidi.py 
google-api-core-2.7.2/tests/unit/test_bidi.py
---- google-api-core-2.7.2.orig/tests/unit/test_bidi.py 2022-05-12 
11:14:18.386281401 +0200
-+++ google-api-core-2.7.2/tests/unit/test_bidi.py      2022-05-12 
11:14:18.402281504 +0200
-@@ -17,7 +17,7 @@ import logging
+diff -Nru google-api-core-2.10.0.orig/tests/unit/test_bidi.py 
google-api-core-2.10.0/tests/unit/test_bidi.py
+--- google-api-core-2.10.0.orig/tests/unit/test_bidi.py        2022-09-02 
03:27:23.000000000 +0200
++++ google-api-core-2.10.0/tests/unit/test_bidi.py     2022-09-08 
13:25:05.456419688 +0200
+@@ -17,7 +17,7 @@
  import queue
  import threading
  
@@ -151,9 +142,9 @@
  import pytest
  
  try:
-diff -upr google-api-core-2.7.2.orig/tests/unit/test_exceptions.py 
google-api-core-2.7.2/tests/unit/test_exceptions.py
---- google-api-core-2.7.2.orig/tests/unit/test_exceptions.py   2022-05-12 
11:14:18.386281401 +0200
-+++ google-api-core-2.7.2/tests/unit/test_exceptions.py        2022-05-12 
11:14:18.402281504 +0200
+diff -Nru google-api-core-2.10.0.orig/tests/unit/test_exceptions.py 
google-api-core-2.10.0/tests/unit/test_exceptions.py
+--- google-api-core-2.10.0.orig/tests/unit/test_exceptions.py  2022-09-02 
03:27:23.000000000 +0200
++++ google-api-core-2.10.0/tests/unit/test_exceptions.py       2022-09-08 
13:25:05.488420010 +0200
 @@ -15,7 +15,7 @@
  import http.client
  import json
@@ -163,10 +154,10 @@
  import pytest
  import requests
  
-diff -upr google-api-core-2.7.2.orig/tests/unit/test_extended_operation.py 
google-api-core-2.7.2/tests/unit/test_extended_operation.py
---- google-api-core-2.7.2.orig/tests/unit/test_extended_operation.py   
2022-05-12 11:14:18.386281401 +0200
-+++ google-api-core-2.7.2/tests/unit/test_extended_operation.py        
2022-05-12 11:14:18.402281504 +0200
-@@ -16,7 +16,7 @@ import dataclasses
+diff -Nru google-api-core-2.10.0.orig/tests/unit/test_extended_operation.py 
google-api-core-2.10.0/tests/unit/test_extended_operation.py
+--- google-api-core-2.10.0.orig/tests/unit/test_extended_operation.py  
2022-09-02 03:27:23.000000000 +0200
++++ google-api-core-2.10.0/tests/unit/test_extended_operation.py       
2022-09-08 13:25:05.468419809 +0200
+@@ -16,7 +16,7 @@
  import enum
  import typing
  
@@ -175,9 +166,9 @@
  import pytest
  
  from google.api_core import exceptions
-diff -upr google-api-core-2.7.2.orig/tests/unit/test_grpc_helpers.py 
google-api-core-2.7.2/tests/unit/test_grpc_helpers.py
---- google-api-core-2.7.2.orig/tests/unit/test_grpc_helpers.py 2022-05-12 
11:14:18.386281401 +0200
-+++ google-api-core-2.7.2/tests/unit/test_grpc_helpers.py      2022-05-12 
11:14:18.402281504 +0200
+diff -Nru google-api-core-2.10.0.orig/tests/unit/test_grpc_helpers.py 
google-api-core-2.10.0/tests/unit/test_grpc_helpers.py
+--- google-api-core-2.10.0.orig/tests/unit/test_grpc_helpers.py        
2022-09-02 03:27:23.000000000 +0200
++++ google-api-core-2.10.0/tests/unit/test_grpc_helpers.py     2022-09-08 
13:25:05.476419890 +0200
 @@ -12,7 +12,7 @@
  # See the License for the specific language governing permissions and
  # limitations under the License.
@@ -187,9 +178,9 @@
  import pytest
  
  try:
-diff -upr google-api-core-2.7.2.orig/tests/unit/test_operation.py 
google-api-core-2.7.2/tests/unit/test_operation.py
---- google-api-core-2.7.2.orig/tests/unit/test_operation.py    2022-05-12 
11:14:18.386281401 +0200
-+++ google-api-core-2.7.2/tests/unit/test_operation.py 2022-05-12 
11:14:18.406281529 +0200
+diff -Nru google-api-core-2.10.0.orig/tests/unit/test_operation.py 
google-api-core-2.10.0/tests/unit/test_operation.py
+--- google-api-core-2.10.0.orig/tests/unit/test_operation.py   2022-09-02 
03:27:23.000000000 +0200
++++ google-api-core-2.10.0/tests/unit/test_operation.py        2022-09-08 
13:25:05.464419769 +0200
 @@ -13,7 +13,7 @@
  # limitations under the License.
  
@@ -199,9 +190,9 @@
  import pytest
  
  try:
-diff -upr google-api-core-2.7.2.orig/tests/unit/test_page_iterator.py 
google-api-core-2.7.2/tests/unit/test_page_iterator.py
---- google-api-core-2.7.2.orig/tests/unit/test_page_iterator.py        
2022-05-12 11:14:18.386281401 +0200
-+++ google-api-core-2.7.2/tests/unit/test_page_iterator.py     2022-05-12 
11:14:18.406281529 +0200
+diff -Nru google-api-core-2.10.0.orig/tests/unit/test_page_iterator.py 
google-api-core-2.10.0/tests/unit/test_page_iterator.py
+--- google-api-core-2.10.0.orig/tests/unit/test_page_iterator.py       
2022-09-02 03:27:23.000000000 +0200
++++ google-api-core-2.10.0/tests/unit/test_page_iterator.py    2022-09-08 
13:25:05.460419729 +0200
 @@ -15,7 +15,7 @@
  import math
  import types
@@ -211,18 +202,9 @@
  import pytest
  
  from google.api_core import page_iterator
-@@ -177,7 +177,7 @@ class TestIterator(object):
-         item2 = 100
-         item3 = 211
- 
--        # Make pages from mock responses
-+        # Make pages from unittest.mock responses
-         parent = mock.sentinel.parent
-         page1 = page_iterator.Page(
-             parent, (item1, item2), page_iterator._item_to_value_identity
-diff -upr google-api-core-2.7.2.orig/tests/unit/test_path_template.py 
google-api-core-2.7.2/tests/unit/test_path_template.py
---- google-api-core-2.7.2.orig/tests/unit/test_path_template.py        
2022-05-12 11:14:18.386281401 +0200
-+++ google-api-core-2.7.2/tests/unit/test_path_template.py     2022-05-12 
11:14:18.406281529 +0200
+diff -Nru google-api-core-2.10.0.orig/tests/unit/test_path_template.py 
google-api-core-2.10.0/tests/unit/test_path_template.py
+--- google-api-core-2.10.0.orig/tests/unit/test_path_template.py       
2022-09-02 03:27:23.000000000 +0200
++++ google-api-core-2.10.0/tests/unit/test_path_template.py    2022-09-08 
13:25:05.456419688 +0200
 @@ -14,7 +14,7 @@
  
  from __future__ import unicode_literals
@@ -231,11 +213,11 @@
 +from unittest import mock
  import pytest
  
- from google.api_core import path_template
-diff -upr google-api-core-2.7.2.orig/tests/unit/test_retry.py 
google-api-core-2.7.2/tests/unit/test_retry.py
---- google-api-core-2.7.2.orig/tests/unit/test_retry.py        2022-05-12 
11:14:18.390281427 +0200
-+++ google-api-core-2.7.2/tests/unit/test_retry.py     2022-05-12 
11:14:18.406281529 +0200
-@@ -16,7 +16,7 @@ import datetime
+ from google.api import auth_pb2
+diff -Nru google-api-core-2.10.0.orig/tests/unit/test_retry.py 
google-api-core-2.10.0/tests/unit/test_retry.py
+--- google-api-core-2.10.0.orig/tests/unit/test_retry.py       2022-09-02 
03:27:23.000000000 +0200
++++ google-api-core-2.10.0/tests/unit/test_retry.py    2022-09-08 
13:25:05.484419970 +0200
+@@ -16,7 +16,7 @@
  import itertools
  import re
  
@@ -244,9 +226,9 @@
  import pytest
  import requests.exceptions
  
-diff -upr google-api-core-2.7.2.orig/tests/unit/test_timeout.py 
google-api-core-2.7.2/tests/unit/test_timeout.py
---- google-api-core-2.7.2.orig/tests/unit/test_timeout.py      2022-05-12 
11:14:18.390281427 +0200
-+++ google-api-core-2.7.2/tests/unit/test_timeout.py   2022-05-12 
11:14:18.406281529 +0200
+diff -Nru google-api-core-2.10.0.orig/tests/unit/test_timeout.py 
google-api-core-2.10.0/tests/unit/test_timeout.py
+--- google-api-core-2.10.0.orig/tests/unit/test_timeout.py     2022-09-02 
03:27:23.000000000 +0200
++++ google-api-core-2.10.0/tests/unit/test_timeout.py  2022-09-08 
13:25:05.500420130 +0200
 @@ -15,7 +15,7 @@
  import datetime
  import itertools

Reply via email to