Skip to content

Commit 823daed

Browse files
committed
fix init
1 parent 56cd1dd commit 823daed

File tree

1 file changed

+38
-29
lines changed

1 file changed

+38
-29
lines changed

Browser/gen_stub.py

Lines changed: 38 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
1-
import inspect
21
from typing import Any
32

3+
from robotlibcore import KeywordBuilder # type: ignore
4+
45
import Browser
56

67

@@ -40,40 +41,44 @@ def get_function_list_from_keywords(keywords):
4041
method_name = get_method_name_for_keyword(keyword)
4142
keyword_arguments = br.get_keyword_arguments(keyword)
4243
keyword_types = br.get_keyword_types(keyword)
43-
arguments_list = list()
44-
for argument in keyword_arguments:
45-
if isinstance(argument, tuple):
46-
arg_str = argument[0]
47-
default_value = argument[1]
48-
arg_type_str = get_type_sting_from_argument(arg_str, keyword_types)
49-
if arg_type_str:
50-
if default_value is None:
51-
arg_type_str = f"Optional[{arg_type_str}]"
52-
if arg_type_str == "str":
53-
default_value = f"'{default_value}'"
54-
arg_str = arg_str + f": {arg_type_str}"
55-
elif isinstance(default_value, str):
56-
default_value = f"'{default_value}'"
57-
arg_str = arg_str + f" = {default_value}"
58-
else:
59-
arg_str = argument
60-
arg_type_str = get_type_sting_from_argument(arg_str, keyword_types)
61-
if arg_type_str:
62-
arg_str = arg_str + f": {arg_type_str}"
63-
arguments_list.append(arg_str)
64-
arguments_string = (
65-
f", {', '.join(arguments_list)}" if len(arguments_list) > 0 else ""
66-
)
67-
functions.append(f" def {method_name}(self{arguments_string}): ...\n")
44+
functions.append(keyword_line(keyword_arguments, keyword_types, method_name))
6845
functions.sort()
6946
return functions
7047

7148

49+
def keyword_line(keyword_arguments, keyword_types, method_name):
50+
arguments_list = list()
51+
for argument in keyword_arguments:
52+
if isinstance(argument, tuple):
53+
arg_str = argument[0]
54+
default_value = argument[1]
55+
arg_type_str = get_type_sting_from_argument(arg_str, keyword_types)
56+
if arg_type_str:
57+
if default_value is None:
58+
arg_type_str = f"Optional[{arg_type_str}]"
59+
if arg_type_str == "str":
60+
default_value = f"'{default_value}'"
61+
arg_str = arg_str + f": {arg_type_str}"
62+
elif isinstance(default_value, str):
63+
default_value = f"'{default_value}'"
64+
arg_str = arg_str + f" = {default_value}"
65+
else:
66+
arg_str = argument
67+
arg_type_str = get_type_sting_from_argument(arg_str, keyword_types)
68+
if arg_type_str:
69+
arg_str = arg_str + f": {arg_type_str}"
70+
arguments_list.append(arg_str)
71+
arguments_string = (
72+
f", {', '.join(arguments_list)}" if len(arguments_list) > 0 else ""
73+
)
74+
return f" def {method_name}(self{arguments_string}): ...\n"
75+
76+
7277
br: Any = Browser.Browser()
7378
function_list = get_function_list_from_keywords(br.get_keyword_names())
7479

7580

76-
pyi_boilerplate = f"""from concurrent.futures import Future
81+
pyi_boilerplate = """from concurrent.futures import Future
7782
from typing import (
7883
Any,
7984
Dict,
@@ -86,10 +91,14 @@ def get_function_list_from_keywords(keywords):
8691
8792
8893
class Browser:
89-
90-
def __init__(self, {str(inspect.signature(br.__init__))[1:]}: ...\n
9194
"""
9295

96+
init_method = KeywordBuilder.build(br.__init__)
9397
with open("Browser/__init__.pyi", "w") as stub_file:
9498
stub_file.write(pyi_boilerplate)
99+
stub_file.write(
100+
keyword_line(
101+
init_method.argument_specification, init_method.argument_types, "__init__"
102+
)
103+
)
95104
stub_file.writelines(function_list)

0 commit comments

Comments
 (0)