From 944136c5ed11af03b1960ac1f0db9f4d0733b381 Mon Sep 17 00:00:00 2001 From: WhiteSource Renovate Date: Mon, 1 Feb 2021 20:50:03 +0100 Subject: [PATCH 1/3] chore(deps): update dependency jinja2 to v2.11.3 (#758) [![WhiteSource Renovate](https://app.renovatebot.com/images/banner.svg)](https://renovatebot.com) This PR contains the following updates: | Package | Change | Age | Adoption | Passing | Confidence | |---|---|---|---|---|---| | [jinja2](https://palletsprojects.com/p/jinja/) ([source](https://togithub.com/pallets/jinja)) | `==2.11.2` -> `==2.11.3` | [![age](https://badges.renovateapi.com/packages/pypi/jinja2/2.11.3/age-slim)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://badges.renovateapi.com/packages/pypi/jinja2/2.11.3/adoption-slim)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://badges.renovateapi.com/packages/pypi/jinja2/2.11.3/compatibility-slim/2.11.2)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://badges.renovateapi.com/packages/pypi/jinja2/2.11.3/confidence-slim/2.11.2)](https://docs.renovatebot.com/merge-confidence/) | --- ### Release Notes
pallets/jinja ### [`v2.11.3`](https://togithub.com/pallets/jinja/blob/master/CHANGES.rst#Version-2113) [Compare Source](https://togithub.com/pallets/jinja/compare/2.11.2...2.11.3) Released 2021-01-31 - Improve the speed of the `urlize` filter by reducing regex backtracking. Email matching requires a word character at the start of the domain part, and only word characters in the TLD. :pr:`1343`
--- ### Renovate configuration :date: **Schedule**: At any time (no schedule defined). :vertical_traffic_light: **Automerge**: Disabled by config. Please merge this manually once you are satisfied. :recycle: **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. :no_bell: **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR has been generated by [WhiteSource Renovate](https://renovate.whitesourcesoftware.com). View repository job log [here](https://app.renovatebot.com/dashboard#github/googleapis/gapic-generator-python). --- requirements.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements.txt b/requirements.txt index ba548cf684..7784cde09b 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,7 +1,7 @@ click==7.1.2 google-api-core==1.25.0 googleapis-common-protos==1.52.0 -jinja2==2.11.2 +jinja2==2.11.3 MarkupSafe==1.1.1 protobuf==3.14.0 pypandoc==1.5 From cdbc22130a176e733c529f60a6b8b1d224e82e89 Mon Sep 17 00:00:00 2001 From: Dov Shlachter Date: Tue, 2 Feb 2021 09:46:05 -0800 Subject: [PATCH 2/3] fix: remove duplicate assignment of certain flattened, repeated fields (#760) Fix for #756. Under certain circumstances, flattened, repeated fields could be duplicated during request construction. --- .../%sub/services/%service/client.py.j2 | 28 +++++++++---------- gapic/ads-templates/noxfile.py.j2 | 4 +-- gapic/ads-templates/setup.py.j2 | 1 - .../%sub/services/%service/client.py.j2 | 18 ++++++------ 4 files changed, 25 insertions(+), 26 deletions(-) diff --git a/gapic/ads-templates/%namespace/%name/%version/%sub/services/%service/client.py.j2 b/gapic/ads-templates/%namespace/%name/%version/%sub/services/%service/client.py.j2 index 4d2f0abebb..2f36e5058b 100644 --- a/gapic/ads-templates/%namespace/%name/%version/%sub/services/%service/client.py.j2 +++ b/gapic/ads-templates/%namespace/%name/%version/%sub/services/%service/client.py.j2 @@ -341,9 +341,9 @@ class {{ service.client_name }}(metaclass={{ service.client_name }}Meta): raise ValueError('If the `request` argument is set, then none of ' 'the individual field arguments should be set.') - {% endif -%} + {% endif -%} {# method.flattened_fields #} {% if method.input.ident.package != method.ident.package -%} {# request lives in a different package, so there is no proto wrapper #} - # The request isn't a proto-plus wrapped type, + # The request isn't a proto-plus wrapped type. # so it must be constructed via keyword expansion. if isinstance(request, dict): request = {{ method.input.ident }}(**request) @@ -351,7 +351,7 @@ class {{ service.client_name }}(metaclass={{ service.client_name }}Meta): elif not request: request = {{ method.input.ident }}({% if method.input.ident.package != method.ident.package %}{% for f in method.flattened_fields.values() %}{{ f.name }}={{ f.name }}, {% endfor %}{% endif %}) {% endif -%}{# Cross-package req and flattened fields #} - {%- else %} + {%- else %} {# Request is in _our_ package #} # Minor optimization to avoid making a copy if the user passes # in a {{ method.input.ident }}. # There's no risk of modifying the input as we've already verified @@ -364,22 +364,22 @@ class {{ service.client_name }}(metaclass={{ service.client_name }}Meta): # If we have keyword arguments corresponding to fields on the # request, apply these. {% endif -%} - {%- for key, field in method.flattened_fields.items() if not(field.repeated and method.input.ident.package != method.ident.package) %} + {%- for key, field in method.flattened_fields.items() if not field.repeated or method.input.ident.package == method.ident.package %} if {{ field.name }} is not None: request.{{ key }} = {{ field.name }} {%- endfor %} {# Map-y fields can be _updated_, however #} - {%- for key, field in method.flattened_fields.items() if field.map and method.input.ident.package == method.ident.package %} - + {%- for key, field in method.flattened_fields.items() if field.repeated and method.input.ident.package != method.ident.package %} + {%- if field.map %} {# map implies repeated, but repeated does NOT imply map#} if {{ field.name }}: request.{{ key }}.update({{ field.name }}) - {%- endfor %} + {%- else %} {# And list-y fields can be _extended_ -#} - {%- for key, field in method.flattened_fields.items() if field.repeated and not field.map and method.input.ident.package == method.ident.package %} if {{ field.name }}: request.{{ key }}.extend({{ field.name }}) - {%- endfor %} - {%- endif %} + {%- endif %} {# field.map #} + {%- endfor %} {# key, field in method.flattened_fields.items() #} + {%- endif %} {# method.client_streaming #} # Wrap the RPC method; this adds retry and timeout information, # and friendly error handling. @@ -397,7 +397,7 @@ class {{ service.client_name }}(metaclass={{ service.client_name }}Meta): {%- endfor %} )), ) - {%- endif %} + {%- endif %} {# method.field_headers #} # Send the request. {% if not method.void %}response = {% endif %}rpc( @@ -405,7 +405,7 @@ class {{ service.client_name }}(metaclass={{ service.client_name }}Meta): request, {%- else %} requests, - {%- endif %} + {%- endif %} {# method.client_streaming #} retry=retry, timeout=timeout, metadata=metadata, @@ -429,12 +429,12 @@ class {{ service.client_name }}(metaclass={{ service.client_name }}Meta): response=response, metadata=metadata, ) - {%- endif %} + {%- endif %} {# method.lro #} {%- if not method.void %} # Done; return the response. return response - {%- endif %} + {%- endif %} {# method.void #} {{ '\n' }} {% endfor %} diff --git a/gapic/ads-templates/noxfile.py.j2 b/gapic/ads-templates/noxfile.py.j2 index 4760bc548b..36dcd2b2e1 100644 --- a/gapic/ads-templates/noxfile.py.j2 +++ b/gapic/ads-templates/noxfile.py.j2 @@ -6,7 +6,7 @@ import os import nox # type: ignore -@nox.session(python=['3.6', '3.7']) +@nox.session(python=['3.7', '3.8']) def unit(session): """Run the unit test suite.""" @@ -24,7 +24,7 @@ def unit(session): ) -@nox.session(python=['3.6', '3.7']) +@nox.session(python=['3.7', '3.8']) def mypy(session): """Run the type checker.""" session.install('mypy') diff --git a/gapic/ads-templates/setup.py.j2 b/gapic/ads-templates/setup.py.j2 index 92ae4ea7af..18f06803dd 100644 --- a/gapic/ads-templates/setup.py.j2 +++ b/gapic/ads-templates/setup.py.j2 @@ -35,7 +35,6 @@ setuptools.setup( 'Development Status :: 3 - Alpha', 'Intended Audience :: Developers', 'Operating System :: OS Independent', - 'Programming Language :: Python :: 3.6', 'Programming Language :: Python :: 3.7', 'Programming Language :: Python :: 3.8', 'Topic :: Internet', diff --git a/gapic/templates/%namespace/%name_%version/%sub/services/%service/client.py.j2 b/gapic/templates/%namespace/%name_%version/%sub/services/%service/client.py.j2 index ada75471b0..d7073af7d0 100644 --- a/gapic/templates/%namespace/%name_%version/%sub/services/%service/client.py.j2 +++ b/gapic/templates/%namespace/%name_%version/%sub/services/%service/client.py.j2 @@ -244,7 +244,7 @@ class {{ service.client_name }}(metaclass={{ service.client_name }}Meta): if use_client_cert: if client_options.client_cert_source: is_mtls = True - client_cert_source_func = client_options.client_cert_source + client_cert_source_func = client_options.client_cert_source else: is_mtls = mtls.has_default_client_cert_source() client_cert_source_func = mtls.default_client_cert_source() if is_mtls else None @@ -381,22 +381,22 @@ class {{ service.client_name }}(metaclass={{ service.client_name }}Meta): # If we have keyword arguments corresponding to fields on the # request, apply these. {% endif -%} - {%- for key, field in method.flattened_fields.items() if not field.repeated and method.input.ident.package == method.ident.package %} + {%- for key, field in method.flattened_fields.items() if not field.repeated or method.input.ident.package == method.ident.package %} if {{ field.name }} is not None: request.{{ key }} = {{ field.name }} {%- endfor %} - {# Map-y fields can be _updated_, however #} - {%- for key, field in method.flattened_fields.items() if field.map and method.input.ident.package == method.ident.package %} - + {# Map-y fields can be _updated_, however #} + {%- for key, field in method.flattened_fields.items() if field.repeated and method.input.ident.package != method.ident.package %} + {%- if field.map %} {# map implies repeated, but repeated does NOT imply map#} if {{ field.name }}: request.{{ key }}.update({{ field.name }}) - {%- endfor %} + {%- else %} {# And list-y fields can be _extended_ -#} - {%- for key, field in method.flattened_fields.items() if field.repeated and not field.map and method.input.ident.package == method.ident.package %} if {{ field.name }}: request.{{ key }}.extend({{ field.name }}) - {%- endfor %} - {%- endif %} + {%- endif %} {# field.map #} + {%- endfor %} {# method.flattened_fields.items() #} + {%- endif %} {# method.client_streaming #} # Wrap the RPC method; this adds retry and timeout information, # and friendly error handling. From aaabb277f2c44c332586bb98e4dd683a482bb4fa Mon Sep 17 00:00:00 2001 From: "release-please[bot]" <55107282+release-please[bot]@users.noreply.github.com> Date: Tue, 2 Feb 2021 18:06:04 +0000 Subject: [PATCH 3/3] chore: release 0.40.6 (#762) :robot: I have created a release \*beep\* \*boop\* --- ### [0.40.6](https://www.github.com/googleapis/gapic-generator-python/compare/v0.40.5...v0.40.6) (2021-02-02) ### Bug Fixes * remove duplicate assignment of certain flattened, repeated fields ([#760](https://www.github.com/googleapis/gapic-generator-python/issues/760)) ([cdbc221](https://www.github.com/googleapis/gapic-generator-python/commit/cdbc22130a176e733c529f60a6b8b1d224e82e89)) --- This PR was generated with [Release Please](https://github.com/googleapis/release-please). See [documentation](https://github.com/googleapis/release-please#release-please). --- CHANGELOG.md | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index df99e6f750..acd91750a9 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,12 @@ # Changelog +### [0.40.6](https://www.github.com/googleapis/gapic-generator-python/compare/v0.40.5...v0.40.6) (2021-02-02) + + +### Bug Fixes + +* remove duplicate assignment of certain flattened, repeated fields ([#760](https://www.github.com/googleapis/gapic-generator-python/issues/760)) ([cdbc221](https://www.github.com/googleapis/gapic-generator-python/commit/cdbc22130a176e733c529f60a6b8b1d224e82e89)) + ### [0.40.5](https://www.github.com/googleapis/gapic-generator-python/compare/v0.40.4...v0.40.5) (2021-02-01)