Compare commits

...

2 Commits

Author SHA1 Message Date
7a2ee5a4cc feat(cli): print predicate with dump-registry 2026-06-19 15:06:55 +02:00
359ed21bb8 fix(checker): typo in docstring 2026-06-19 15:05:49 +02:00
2 changed files with 17 additions and 1 deletions

View File

@@ -743,7 +743,7 @@ class PythonTyper(
Returns: Returns:
Optional[Function]: the resolved function signature if it can be Optional[Function]: the resolved function signature if it can be
determined unambigously, or `None`. determined unambiguously, or `None`.
""" """
candidates: list[OverloadCandidate] = [] candidates: list[OverloadCandidate] = []
for overload in overloads: for overload in overloads:

View File

@@ -8,6 +8,7 @@ from typing import TextIO
import click import click
from midas.ast.printer import MidasPrinter
from midas.checker.checker import TypeChecker from midas.checker.checker import TypeChecker
from midas.checker.types import AliasType, AppliedType, BaseType, GenericType, Type from midas.checker.types import AliasType, AppliedType, BaseType, GenericType, Type
@@ -35,6 +36,7 @@ def dump_registry(
for types_file in types: for types_file in types:
checker.import_midas(Path(types_file.name).resolve()) checker.import_midas(Path(types_file.name).resolve())
print("##### Types #####")
for name, type in checker.types._types.items(): for name, type in checker.types._types.items():
members: dict[str, Type] = checker.types._members.get(name, {}) members: dict[str, Type] = checker.types._members.get(name, {})
print(f"{name} = {base_type(type)}") print(f"{name} = {base_type(type)}")
@@ -42,3 +44,17 @@ def dump_registry(
print(" " * 4 + "Members:") print(" " * 4 + "Members:")
for member_name, member_type in members.items(): for member_name, member_type in members.items():
print(" " * 8 + f"{member_name}: {member_type}") print(" " * 8 + f"{member_name}: {member_type}")
print("##### Predicates #####")
printer = MidasPrinter()
for name, predicate in checker.types._predicates.items():
body: str = printer.print(predicate.body)
if predicate.alias:
print(f"{name}: {predicate.type} = {body}")
else:
print(f"{name}{predicate.type}:")
body = "\n".join(
" " + ("return " if i == 0 else "") + line
for i, line in enumerate(body.split("\n"))
)
print(body)