Skip to content
Merged
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Next Next commit
Improve whats_left --signature output
  • Loading branch information
verhovsky authored and youknowone committed Apr 5, 2023
commit 8327d960fc993bdf4b142bd825eba17010d8a073
21 changes: 14 additions & 7 deletions whats_left.py
Original file line number Diff line number Diff line change
Expand Up @@ -34,8 +34,9 @@

implementation = platform.python_implementation()
if implementation != "CPython":
sys.exit("whats_left.py must be run under CPython, got {implementation} instead")

sys.exit(f"whats_left.py must be run under CPython, got {implementation} instead")
if sys.version_info[:2] < (3, 11):
sys.exit(f"whats_left.py must be run under CPython 3.11 or newer, got {implementation} {sys.version} instead")

def parse_args():
parser = argparse.ArgumentParser(description="Process some integers.")
Expand Down Expand Up @@ -483,11 +484,17 @@ def remove_one_indent(s):
if args.signature:
print("\n# mismatching signatures (warnings)")
for modname, mismatched in result["mismatched_items"].items():
for (item, rustpy_value, cpython_value) in mismatched:
if cpython_value == "ValueError('no signature found')":
continue # these items will never match

print(f"{item} {rustpy_value} != {cpython_value}")
for i, (item, rustpy_value, cpython_value) in enumerate(mismatched):
if cpython_value and cpython_value.startswith("ValueError("):
continue # these items will never match
if rustpy_value is None or rustpy_value.startswith("ValueError("):
rustpy_value = f" {rustpy_value}"
print(f"{item}{rustpy_value}")
if cpython_value is None or cpython_value.startswith("ValueError("):
Comment thread
verhovsky marked this conversation as resolved.
Outdated
cpython_value = f" {cpython_value}"
print(f"{' ' * len(item)}{cpython_value}")
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

also, minor nit here, but we don't account for the potential space added in the rustpy_value on line 491 so the alignment might be off by one.

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The idea is that ValueError/None aren't signatures. The output is like

func_name(arg1, arg2)
func_name(arg1, arg2, arg3)

but we don't repeat "func_name" a second time since it's always the same and this way the output is less busy visually

func_name(arg1, arg2)
         (arg1, arg2, arg3)

Then for value errors we have

func_name ValueError()
func_name(arg1, arg2, arg3)

or

func_name(arg1, arg2)
func_name None

if i < len(mismatched) - 1:
print()
Comment thread
DimitrisJim marked this conversation as resolved.

if args.doc:
print("\n# mismatching `__doc__`s (warnings)")
Expand Down