Skip to content

Commit

Permalink
fail stubs generation in case of unnamed arguments
Browse files Browse the repository at this point in the history
  • Loading branch information
Muream committed Jun 13, 2021
1 parent 744a4e2 commit 89b4289
Showing 1 changed file with 33 additions and 0 deletions.
33 changes: 33 additions & 0 deletions scripts/generate_stubs.py
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
import inspect
from itertools import count
import sys
import time

Expand All @@ -12,6 +13,10 @@ class InvalidSignatureError(Exception):
"""Raised when one or more signatures are invalid."""


class UnnamedArgumentError(Exception):
"""Raised when one or more signatures contain unnamed arguments."""


def cleanup_imports(content):
"""Remove any classes accidentally imported as modules.
Expand All @@ -36,6 +41,26 @@ def cleanup_imports(content):
return content


def count_unnamed_args(lines):
"""Count all the signatures that have unnamed arguments.
This ignores property setters as these will always have unnamed arguments.
"""

unnamed_signatures = []
for line in lines:
if "arg0" in line and "setter" not in previous_line:
unnamed_signatures.append(line)
previous_line = line

if unnamed_signatures:
print("These signatures contain unnamed arguments:")
for signature in unnamed_signatures:
print(f" {signature.strip(' ')}")

return len(unnamed_signatures)


def main():
print("Generating stubs")
t0 = time.time()
Expand All @@ -59,6 +84,14 @@ def main():

print("(2) Generating stubs content..")

lines = module.to_lines()
unnamed_args_count = count_unnamed_args(lines)

if unnamed_args_count > 0:
raise UnnamedArgumentError(
f"Module contains {unnamed_args_count} signatures with unnamed arguments."
)

content = "\n".join(module.to_lines())
content = cleanup_imports(content)

Expand Down

0 comments on commit 89b4289

Please sign in to comment.