python-betterproto icon indicating copy to clipboard operation
python-betterproto copied to clipboard

`mypy --strict` fails with `Name "betterproto.ServiceStub" is not defined`

Open llucax opened this issue 1 year ago • 2 comments

Summary

mypy --strict fails with Name "betterproto.ServiceStub" is not defined

Reproduction Steps

  1. Generate some gRPC files from some proto files
  2. Run mypy on the generated code

Expected Results

mypy passes.

Actual Results

error: Name "betterproto.ServiceStub" is not defined  [name-defined]

Where the stub class is defined in the generated code.

I see the symbol is imported in https://github.com/danielgtaylor/python-betterproto/blob/master/src/betterproto/init.py, but it seems like mypy needs imported symbols to be explicitly exported, probably via __all__ or using from x import y as y (see https://peps.python.org/pep-0484/#stub-files).

System Information

$ protoc --version; python --version; pip show betterproto; pip show grpcio-tools
bash: protoc: command not found
Python 3.11.9
Name: betterproto
Version: 2.0.0b6
Location: /home/luca/devel/frequenz-microgrid-betterproto/.direnv/python-3.11.9/lib/python3.11/site-packages
Requires: grpclib, python-dateutil
Required-by: frequenz-microgrid-betterproto
Name: grpcio-tools
Version: 1.63.0
Location: /home/luca/devel/setuptools-betterproto/.direnv/python-3.11/lib/python3.11/site-packages
Requires: grpcio, protobuf, setuptools

(I'm using grpcio-tools to generate the files, not protoc)

Checklist

  • [X] I have searched the issues for duplicates.
  • [X] I have shown the entire traceback, if possible.
  • [X] I have verified this issue occurs on the latest prelease of betterproto which can be installed using pip install -U --pre betterproto, if possible.

llucax avatar May 30 '24 08:05 llucax

Not sure if https://github.com/danielgtaylor/python-betterproto/pull/540 might fix this too already.

llucax avatar May 30 '24 08:05 llucax

Any updates on this? I'm running into this issue as well.

embooglement avatar Aug 28 '24 17:08 embooglement