danielgtaylor / danielgtaylor/python-betterproto

Mypy type checking does not work with enums

Open
#616 2 comments 3 reactions 0 assignees View on GitHub
bug low priority
Dominant language
Python
Stars
1.8k
Forks
234
PR merge metrics
No merged PRs in 30d

Description

### Summary

When using an enum in a code project mypy is broken and has the impression that all the enum fields are of type 'int'

### Reproduction Steps

Run type checking on this file and see the problem in version 2.0.0b7
```py
import betterproto

class Colour(betterproto.Enum):
RED = 1
GREEN = 2
BLUE = 3

def print_color(color: Colour) -> None:
print(color.value)

def test_mypy_types() -> None:
print(Colour.RED == Colour.try_value(Colour.RED))

print_color(Colour.RED)
print_color(Colour.try_value(Colour.RED))

if __name__ == '__main__':
test_mypy_types()

```

### Expected Results

I would have expected the type checking to pass as in version 2.0.0-beta6

This is caused by #293 (and is not solved by #540)

The expected type of `Colour.RED` is a `Colour` not an `int`.

### Actual Results

```bash
$ poetry run mypy test-mypy.py
test-mypy.py:16: error: Argument 1 to "print_color" has incompatible type "int"; expected "Colour" [arg-type]
print_color(Colour.RED)
^~~~~~~~~~
Found 1 error in 1 file (checked 1 source file)
```

### System Information

```bash
Python 3.11.9
Name: betterproto
Version: 2.0.0b7
Summary: A better Protobuf / gRPC generator & library
Home-page: https://github.com/danielgtaylor/python-betterproto
Author: Daniel G. Taylor
Author-email: danielgtaylor@gmail.com
License: MIT
Location: /home/jns/product/.venv/lib/python3.11/site-packages
Requires: grpclib, python-dateutil, typing-extensions
Required-by: inventory_code_project_enumeration, inventory_name_inference, inventory_py_schema_description, inventory_py_schema_endpoints_extraction, inventory_py_schema_services_extraction, inventory_repository_analysis, inventory_repository_clone, inventory_repository_extract_schema, inventory_repository_extract_secret, inventory_repository_extract_service, inventory_repository_owner_search, inventory_schema_analysis, inventory_schema_classification, inventory_schema_conversion, inventory_schema_data_leaks, inventory_service_description, inventory_software_types_fingerprinter, protocol
```

### 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.

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.