Skip to content

Commit a8f16be

Browse files
authored
fix: Misleading warning message (#171)
1 parent c34105a commit a8f16be

File tree

2 files changed

+15
-3
lines changed

2 files changed

+15
-3
lines changed

.github/workflows/ci.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -159,4 +159,4 @@ jobs:
159159
- uses: pypa/[email protected]
160160
with:
161161
user: __token__
162-
password: ${{ secrets.PYPI_API_TOKEN }}
162+
password: ${{ secrets.PYPI_API_TOKEN }}

pybind11_stubgen/parser/mixins/fix.py

Lines changed: 14 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,11 @@
99
from logging import getLogger
1010
from typing import Any
1111

12-
from pybind11_stubgen.parser.errors import NameResolutionError, ParserError
12+
from pybind11_stubgen.parser.errors import (
13+
InvalidExpressionError,
14+
NameResolutionError,
15+
ParserError,
16+
)
1317
from pybind11_stubgen.parser.interface import IParser
1418
from pybind11_stubgen.structs import (
1519
Alias,
@@ -804,9 +808,17 @@ def parse_value_str(self, value: str) -> Value | InvalidExpression:
804808
enum_class = self.parse_annotation_str(f"{prefix}.{enum_class_str}")
805809
if isinstance(enum_class, ResolvedType):
806810
return Value(repr=f"{enum_class.name}.{entry}", is_print_safe=True)
807-
self._unknown_enum_classes.add(enum_class_str)
808811
return super().parse_value_str(value)
809812

813+
def report_error(self, error: ParserError) -> None:
814+
if isinstance(error, InvalidExpressionError):
815+
match = self._pybind11_enum_pattern.match(error.expression)
816+
if match is not None:
817+
enum_qual_name = match.group("enum")
818+
enum_class_str, entry = enum_qual_name.rsplit(".", maxsplit=1)
819+
self._unknown_enum_classes.add(enum_class_str)
820+
super().report_error(error)
821+
810822
def finalize(self):
811823
if self._unknown_enum_classes:
812824
logger.warning(

0 commit comments

Comments
 (0)