Fix all typecheck errors in source code

- Fix partially unknown types from empty set() literals with annotations
- Use getattr-based indexing for runtime probes on object-typed instances
- Fix val_type annotation for hidden type discovery
- Use raw_type string check instead of isinstance for classmethod detection
- Access classmethod.__func__ via getattr to avoid partial unknown types
- Fix struct base type narrowing in collect_all_type_strings

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-03-30 17:29:40 +02:00
co-authored by Claude Opus 4.6
parent b4158d8ca2
commit cfcb66620a
2 changed files with 34 additions and 33 deletions
+7 -9
View File
@@ -84,8 +84,9 @@ def collect_all_type_strings(module_data: ModuleData) -> list[str]:
for var in module_data["variables"]:
all_types.append(map_type(var["type"]))
for struct in module_data.get("structs", []):
if struct.get("base"):
all_types.append(struct["base"])
base = struct.get("base")
if base:
all_types.append(base)
for prop in struct["properties"]:
all_types.append(prop["type"])
for method in struct["methods"]:
@@ -538,13 +539,11 @@ def collect_inherited_info(
if base in by_name:
base_methods = {m["name"] for m in by_name[base]["methods"]}
base_ro_props = {
p["name"]
for p in by_name[base]["properties"]
if p["is_readonly"]
p["name"] for p in by_name[base]["properties"] if p["is_readonly"]
}
else:
base_methods = set()
base_ro_props = set()
base_methods: set[str] = set()
base_ro_props: set[str] = set()
parent = get_inherited(base)
cache[name] = _InheritedInfo(
base_methods | parent.methods,
@@ -755,8 +754,7 @@ def generate_module_stub(
# Add TypeVar if any struct uses Generic[_T]
if any(
"Generic[_T]" in (s.get("base") or "")
for s in module_data.get("structs", [])
"Generic[_T]" in (s.get("base") or "") for s in module_data.get("structs", [])
):
parts.append('_T = TypeVar("_T")')
parts.append("")