Skip to content

Commit a77b7d6

Browse files
authored
Provide 'types' and 'enums' submodule view (#273)
This is a minor hack to preserve the module interface from the monocode: types and enums for a service live in distinct submodules. Includes tests for enums
1 parent 4786136 commit a77b7d6

File tree

3 files changed

+38
-0
lines changed

3 files changed

+38
-0
lines changed
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
{% extends '_base.py.j2' %}
2+
3+
{% block content %}
4+
{% for p in api.protos.values() if p.file_to_generate and p.enums -%}
5+
from .types.{{ p.module_name }} import ({% for e in p.enums.values() %}{{ e.name }}, {% endfor %})
6+
{% endfor %}
7+
8+
__all__ = (
9+
{%- for p in api.protos.values() if p.file_to_generate %}{% for e in p.enums.values() %}
10+
'{{ e.name }}',
11+
{%- endfor %}{% endfor %}
12+
)
13+
{% endblock %}
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
{% extends '_base.py.j2' %}
2+
3+
{% block content %}
4+
{% for p in api.protos.values() if p.file_to_generate and p.messages -%}
5+
from .{{ p.module_name }} import ({% for m in p.messages.values() %}{{ m.name }}, {% endfor %})
6+
{% endfor %}
7+
8+
__all__ = (
9+
{%- for p in api.protos.values() if p.file_to_generate %}{% for m in p.messages.values() %}
10+
'{{ m.name }}',
11+
{%- endfor %}{% endfor %}
12+
)
13+
{% endblock %}

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

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,9 @@ from google.api_core import future
2020
from google.api_core import operations_v1
2121
from google.longrunning import operations_pb2
2222
{% endif -%}
23+
{% if api.protos.values()|selectattr('enums') -%}
24+
from {{ (api.naming.module_namespace + (api.naming.versioned_module_name,) + service.meta.address.subpackage)|join(".") }} import enums
25+
{% endif -%}
2326
{% for method in service.methods.values() -%}
2427
{% for ref_type in method.ref_types
2528
if not ((ref_type.ident.python_import.package == ('google', 'api_core') and ref_type.ident.python_import.module == 'operation')
@@ -431,4 +434,13 @@ def test_{{ message.name|snake_case }}_path():
431434

432435
{% endwith -%}
433436
{% endfor -%}
437+
438+
{% with enums = [] -%}{% for p in api.protos.values() if p.file_to_generate -%}{% for e in p.enums.values() if e.ident.module == service.meta.address.module -%}{% do enums.append(e) %}
439+
{% if enums -%}
440+
def test_enum_path():
441+
{%- for e in enums %}
442+
assert enums.{{ e.name }} == {{ e.ident.module }}.{{ e.name }}
443+
{%- endfor %}
444+
{% endif -%}
445+
{% endfor -%}{% endfor -%}{% endwith -%}
434446
{% endblock %}

0 commit comments

Comments
 (0)