Skip to content

Commit 011659a

Browse files
authored
Change generated client class name to have 'Client' at the end (#223)
Fix for #221 : Client class name changes from monolith gapic
1 parent 7b2e911 commit 011659a

File tree

10 files changed

+49
-38
lines changed

10 files changed

+49
-38
lines changed

packages/gapic-generator/gapic/schema/wrappers.py

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -627,6 +627,11 @@ class Service:
627627
def __getattr__(self, name):
628628
return getattr(self.service_pb, name)
629629

630+
@property
631+
def client_name(self) -> str:
632+
"""Returns the name of the generated client class"""
633+
return self.name + "Client"
634+
630635
@property
631636
def has_lro(self) -> bool:
632637
"""Return whether the service has a long-running method."""
@@ -672,8 +677,9 @@ def names(self) -> FrozenSet[str]:
672677
used for imports.
673678
"""
674679
# Put together a set of the service and method names.
675-
answer = {self.name}.union(
676-
{utils.to_snake_case(i.name) for i in self.methods.values()}
680+
answer = {self.name, self.client_name}
681+
answer.update(
682+
utils.to_snake_case(i.name) for i in self.methods.values()
677683
)
678684

679685
# Identify any import module names where the same module name is used

packages/gapic-generator/gapic/templates/$namespace/$name/__init__.py.j2

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ from {% if api.naming.module_namespace %}{{ api.naming.module_namespace|join('.'
1111
{% for service in api.services.values()|sort(attribute='name')
1212
if service.meta.address.subpackage == api.subpackage_view -%}
1313
from {% if api.naming.module_namespace %}{{ api.naming.module_namespace|join('.') }}.{% endif -%}
14-
{{ api.naming.versioned_module_name }}.services.{{ service.name|snake_case }}.client import {{ service.name }}
14+
{{ api.naming.versioned_module_name }}.services.{{ service.name|snake_case }}.client import {{ service.client_name }}
1515
{% endfor -%}
1616

1717
{# Import messages from each proto.
@@ -36,7 +36,7 @@ __all__ = (
3636
{%- endfor %}
3737
{%- for service in api.services.values()|sort(attribute='name')
3838
if service.meta.address.subpackage == api.subpackage_view %}
39-
'{{ service.name }}',
39+
'{{ service.client_name }}',
4040
{%- endfor %}
4141
{%- for proto in api.protos.values()|sort(attribute='module_name')
4242
if proto.meta.address.subpackage == api.subpackage_view %}

packages/gapic-generator/gapic/templates/$namespace/$name_$version/$sub/__init__.py.j2

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ from . import {{ subpackage }}
1010
{% filter sort_lines -%}
1111
{% for service in api.services.values()|sort(attribute='name')
1212
if service.meta.address.subpackage == api.subpackage_view -%}
13-
from .services.{{ service.name|snake_case }} import {{ service.name }}
13+
from .services.{{ service.name|snake_case }} import {{ service.client_name }}
1414
{% endfor -%}
1515
{% endfilter -%}
1616

@@ -42,7 +42,7 @@ __all__ = (
4242
{%- endfor %}
4343
{%- for service in api.services.values()
4444
if service.meta.address.subpackage == api.subpackage_view %}
45-
'{{ service.name }}',
45+
'{{ service.client_name }}',
4646
{%- endfor %}
4747
{%- for proto in api.protos.values()
4848
if proto.meta.address.subpackage == api.subpackage_view %}
Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
11
{% extends '_base.py.j2' %}
22

33
{% block content %}
4-
from .client import {{ service.name }}
4+
from .client import {{ service.client_name }}
55

66
__all__ = (
7-
'{{ service.name }}',
7+
'{{ service.client_name }}',
88
)
99
{% endblock %}

packages/gapic-generator/gapic/templates/$namespace/$name_$version/$sub/services/$service/client.py.j2

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ from .transports.base import {{ service.name }}Transport
2121
from .transports.grpc import {{ service.name }}GrpcTransport
2222

2323

24-
class {{ service.name }}Meta(type):
24+
class {{ service.client_name }}Meta(type):
2525
"""Metaclass for the {{ service.name }} client.
2626

2727
This provides class-level methods for building and retrieving
@@ -52,14 +52,14 @@ class {{ service.name }}Meta(type):
5252
return next(iter(cls._transport_registry.values()))
5353

5454

55-
class {{ service.name }}(metaclass={{ service.name }}Meta):
55+
class {{ service.client_name }}(metaclass={{ service.client_name }}Meta):
5656
"""{{ service.meta.doc|rst(width=72, indent=4) }}"""
5757
def __init__(self, *,
5858
host: str{% if service.host %} = '{{ service.host }}'{% endif %},
5959
credentials: credentials.Credentials = None,
6060
transport: Union[str, {{ service.name }}Transport] = None
6161
) -> None:
62-
"""Instantiate the {{ (service.name|snake_case).replace('_', ' ') }}.
62+
"""Instantiate the {{ (service.client_name|snake_case).replace('_', ' ') }}.
6363

6464
Args:
6565
host ({% if service.host %}Optional[str]{% else %}str{% endif %}):
@@ -214,6 +214,6 @@ except pkg_resources.DistributionNotFound:
214214

215215

216216
__all__ = (
217-
'{{ service.name }}',
217+
'{{ service.client_name }}',
218218
)
219219
{% endblock %}

packages/gapic-generator/gapic/templates/examples/sample.py.j2

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -28,13 +28,13 @@
2828
{% for import_statement in imports %}
2929
{{ import_statement }}
3030
{% endfor %}
31-
from {{ (api.naming.module_namespace + (api.naming.versioned_module_name,) + service.meta.address.subpackage)|join(".") }}.services.{{ service.name|snake_case }} import {{ service.name }}
31+
from {{ (api.naming.module_namespace + (api.naming.versioned_module_name,) + service.meta.address.subpackage)|join(".") }}.services.{{ service.name|snake_case }} import {{ service.client_name }}
3232

3333
{# also need calling form #}
3434
def sample_{{ frags.render_method_name(sample.rpc)|trim -}}({{ frags.print_input_params(sample.request)|trim -}}):
3535
"""{{ sample.description }}"""
3636

37-
client = {{ service.name }}(
37+
client = {{ service.client_name }}(
3838
credentials=credentials.AnonymousCredentials(),
3939
transport="grpc",
4040
)

packages/gapic-generator/gapic/templates/tests/unit/$name_$version/$sub/test_$service.py.j2

Lines changed: 13 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ import pytest
1111
{% filter sort_lines -%}
1212
from google import auth
1313
from google.auth import credentials
14-
from {{ (api.naming.module_namespace + (api.naming.versioned_module_name,) + service.meta.address.subpackage)|join(".") }}.services.{{ service.name|snake_case }} import {{ service.name }}
14+
from {{ (api.naming.module_namespace + (api.naming.versioned_module_name,) + service.meta.address.subpackage)|join(".") }}.services.{{ service.name|snake_case }} import {{ service.client_name }}
1515
from {{ (api.naming.module_namespace + (api.naming.versioned_module_name,) + service.meta.address.subpackage)|join(".") }}.services.{{ service.name|snake_case }} import transports
1616
{% if service.has_lro -%}
1717
from google.api_core import future
@@ -28,7 +28,7 @@ from google.longrunning import operations_pb2
2828

2929
{% for method in service.methods.values() -%}
3030
def test_{{ method.name|snake_case }}(transport: str = 'grpc'):
31-
client = {{ service.name }}(
31+
client = {{ service.client_name }}(
3232
credentials=credentials.AnonymousCredentials(),
3333
transport=transport,
3434
)
@@ -79,7 +79,7 @@ def test_{{ method.name|snake_case }}(transport: str = 'grpc'):
7979

8080
{% if method.field_headers %}
8181
def test_{{ method.name|snake_case }}_field_headers():
82-
client = {{ service.name }}(
82+
client = {{ service.client_name }}(
8383
credentials=credentials.AnonymousCredentials(),
8484
)
8585

@@ -116,7 +116,7 @@ def test_{{ method.name|snake_case }}_field_headers():
116116

117117
{% if method.flattened_fields %}
118118
def test_{{ method.name|snake_case }}_flattened():
119-
client = {{ service.name }}(
119+
client = {{ service.client_name }}(
120120
credentials=credentials.AnonymousCredentials(),
121121
)
122122

@@ -152,7 +152,7 @@ def test_{{ method.name|snake_case }}_flattened():
152152

153153

154154
def test_{{ method.name|snake_case }}_flattened_error():
155-
client = {{ service.name }}(
155+
client = {{ service.client_name }}(
156156
credentials=credentials.AnonymousCredentials(),
157157
)
158158

@@ -170,7 +170,7 @@ def test_{{ method.name|snake_case }}_flattened_error():
170170

171171
{% if method.paged_result_field %}
172172
def test_{{ method.name|snake_case }}_pager():
173-
client = {{ service.name }}(
173+
client = {{ service.client_name }}(
174174
credentials=credentials.AnonymousCredentials,
175175
)
176176

@@ -222,7 +222,7 @@ def test_credentials_transport_error():
222222
credentials=credentials.AnonymousCredentials(),
223223
)
224224
with pytest.raises(ValueError):
225-
client = {{ service.name }}(
225+
client = {{ service.client_name }}(
226226
credentials=credentials.AnonymousCredentials(),
227227
transport=transport,
228228
)
@@ -233,13 +233,13 @@ def test_transport_instance():
233233
transport = transports.{{ service.name }}GrpcTransport(
234234
credentials=credentials.AnonymousCredentials(),
235235
)
236-
client = {{ service.name }}(transport=transport)
236+
client = {{ service.client_name }}(transport=transport)
237237
assert client._transport is transport
238238

239239

240240
def test_transport_grpc_default():
241241
# A client should use the gRPC transport by default.
242-
client = {{ service.name }}(
242+
client = {{ service.client_name }}(
243243
credentials=credentials.AnonymousCredentials(),
244244
)
245245
assert isinstance(
@@ -277,7 +277,7 @@ def test_{{ service.name|snake_case }}_auth_adc():
277277
# If no credentials are provided, we should use ADC credentials.
278278
with mock.patch.object(auth, 'default') as adc:
279279
adc.return_value = (credentials.AnonymousCredentials(), None)
280-
client = {{ service.name }}()
280+
client = {{ service.client_name }}()
281281
adc.assert_called_once_with(scopes=(
282282
{%- for scope in service.oauth_scopes %}
283283
'{{ scope }}',
@@ -287,7 +287,7 @@ def test_{{ service.name|snake_case }}_auth_adc():
287287

288288
def test_{{ service.name|snake_case }}_host_no_port():
289289
{% with host = (service.host|default('localhost', true)).split(':')[0] -%}
290-
client = {{ service.name }}(
290+
client = {{ service.client_name }}(
291291
credentials=credentials.AnonymousCredentials(),
292292
host='{{ host }}',
293293
transport='grpc',
@@ -298,7 +298,7 @@ def test_{{ service.name|snake_case }}_host_no_port():
298298

299299
def test_{{ service.name|snake_case }}_host_with_port():
300300
{% with host = (service.host|default('localhost', true)).split(':')[0] -%}
301-
client = {{ service.name }}(
301+
client = {{ service.client_name }}(
302302
credentials=credentials.AnonymousCredentials(),
303303
host='{{ host }}:8000',
304304
transport='grpc',
@@ -317,7 +317,7 @@ def test_{{ service.name|snake_case }}_grpc_transport_channel():
317317

318318
{% if service.has_lro -%}
319319
def test_{{ service.name|snake_case }}_grpc_lro_client():
320-
client = {{ service.name }}(
320+
client = {{ service.client_name }}(
321321
credentials=credentials.AnonymousCredentials(),
322322
transport='grpc',
323323
)

packages/gapic-generator/tests/system/conftest.py

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -14,23 +14,23 @@
1414

1515
import pytest
1616

17-
from google.showcase import Echo
18-
from google.showcase import Identity
17+
from google.showcase import EchoClient
18+
from google.showcase import IdentityClient
1919

2020
import grpc
2121

2222

2323
@pytest.fixture
2424
def echo():
25-
transport = Echo.get_transport_class('grpc')(
25+
transport = EchoClient.get_transport_class('grpc')(
2626
channel=grpc.insecure_channel('localhost:7469'),
2727
)
28-
return Echo(transport=transport)
28+
return EchoClient(transport=transport)
2929

3030

3131
@pytest.fixture
3232
def identity():
33-
transport = Identity.get_transport_class('grpc')(
33+
transport = IdentityClient.get_transport_class('grpc')(
3434
channel=grpc.insecure_channel('localhost:7469'),
3535
)
36-
return Identity(transport=transport)
36+
return IdentityClient(transport=transport)

packages/gapic-generator/tests/unit/samplegen/test_integration.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -71,7 +71,7 @@ def test_generate_sample_basic():
7171
api_naming = naming.Naming(
7272
name="MolluscClient", namespace=("molluscs", "v1"))
7373
service = wrappers.Service(
74-
service_pb=namedtuple('service_pb', ['name'])('MolluscClient'),
74+
service_pb=namedtuple('service_pb', ['name'])('MolluscService'),
7575
methods={
7676
"Classify": DummyMethod(
7777
input=input_type,
@@ -119,12 +119,12 @@ def test_generate_sample_basic():
119119
# [START %s]
120120
from google import auth
121121
from google.auth import credentials
122-
from molluscs.v1.molluscclient.services.mollusc_client import MolluscClient
122+
from molluscs.v1.molluscclient.services.mollusc_service import MolluscServiceClient
123123
124124
def sample_classify(video, location):
125125
"""Determine the full taxonomy of input mollusc"""
126126
127-
client = MolluscClient(
127+
client = MolluscServiceClient(
128128
credentials=credentials.AnonymousCredentials(),
129129
transport="grpc",
130130
)

packages/gapic-generator/tests/unit/schema/wrappers/test_service.py

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@
2727
def test_service_properties():
2828
service = make_service(name='ThingDoer')
2929
assert service.name == 'ThingDoer'
30+
assert service.client_name == 'ThingDoerClient'
3031

3132

3233
def test_service_host():
@@ -51,7 +52,9 @@ def test_service_names():
5152
get_method('Jump', 'foo.bacon.JumpRequest', 'foo.bacon.JumpResponse'),
5253
get_method('Yawn', 'a.b.v1.c.YawnRequest', 'x.y.v1.z.YawnResponse'),
5354
))
54-
assert service.names == {'ThingDoer', 'do_thing', 'jump', 'yawn'}
55+
expected_names = {'ThingDoer', 'ThingDoerClient',
56+
'do_thing', 'jump', 'yawn'}
57+
assert service.names == expected_names
5558

5659

5760
def test_service_name_colliding_modules():
@@ -60,7 +63,9 @@ def test_service_name_colliding_modules():
6063
get_method('Jump', 'bacon.bar.JumpRequest', 'bacon.bar.JumpResponse'),
6164
get_method('Yawn', 'a.b.v1.c.YawnRequest', 'a.b.v1.c.YawnResponse'),
6265
))
63-
assert service.names == {'ThingDoer', 'do_thing', 'jump', 'yawn', 'bar'}
66+
expected_names = {'ThingDoer', 'ThingDoerClient',
67+
'do_thing', 'jump', 'yawn', 'bar'}
68+
assert service.names == expected_names
6469

6570

6671
def test_service_no_scopes():

0 commit comments

Comments
 (0)