gapic-generator-python
gapic-generator-python copied to clipboard
Dictionary support not reflected in type annotations
Issue
- This is a follow-up to #986 (closed). Retesting the recent
google-cloud-documentai==1.5.0
version, the issue is still present. - This code is valid:
import google.cloud.documentai_v1 as documentai client_options = dict(api_endpoint="eu-documentai.googleapis.com") client = documentai.DocumentProcessorServiceClient(client_options=client_options)
- But it triggers the following type checker warning:
Argument of type "dict[str, str]" cannot be assigned to parameter "client_options" of type "ClientOptions | None" in function "__init__" Type "dict[str, str]" cannot be assigned to type "ClientOptions | None" "dict[str, str]" is incompatible with "ClientOptions"
- If you check the source,
client_options
can be a dict, yet its declaration says otherwise:def __init__( ... client_options: Optional[client_options_lib.ClientOptions] = None, ... ) -> None: ... if isinstance(client_options, dict): client_options = client_options_lib.from_dict(client_options)
Expected
def __init__(
...
client_options: Union[client_options_lib.ClientOptions, dict, None] = None,
...
) -> None:
...
@PicardParis
Yup, your code looks good. Feel free to open a PR. Otherwise, my team will triage this issue and resolve it, but may take longer.
Hi, I thought the library was auto-generated from protobufs. Please confirm that it's not and I'll make a PR.
@PicardParis The library is generated, so the change should be done not in the lib, but in gapic-generator-python (i.e. this repository) instead. The changes are most likely to happen in one of the template files (*.py.j2
files). I would look into changing somethign here: https://github.com/googleapis/gapic-generator-python/blob/main/gapic/templates/%25namespace/%25name_%25version/%25sub/services/%25service/client.py.j2#L279