Skip to content

Commit c34cf9c

Browse files
committed
fix: double args
1 parent cdbc98b commit c34cf9c

File tree

1 file changed

+33
-21
lines changed

1 file changed

+33
-21
lines changed

src/pyconverter/xml2py/ast_tree.py

Lines changed: 33 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@
2424
import textwrap
2525
from typing import List
2626
import warnings
27+
from pathlib import Path
2728

2829
from inflect import engine
2930
from lxml.etree import tostring
@@ -2113,8 +2114,9 @@ class ProductName(Element):
21132114

21142115

21152116
class ArgumentList:
2116-
def __init__(self, list_entry: VarlistEntry, args: List) -> None:
2117+
def __init__(self, py_name: str, list_entry: VarlistEntry, args: List) -> None:
21172118

2119+
self._py_name = py_name
21182120
self._list_entry = list_entry
21192121
self._arguments = []
21202122
self._initial_args = args
@@ -2137,7 +2139,7 @@ def _parse_list_entry(self):
21372139
def __iadd__(self, argument_list):
21382140
for arg in argument_list.arguments:
21392141
arg_name = arg.py_arg_name
2140-
if ("," not in arg_name or arg_name == "") or (arg_name not in self.py_arg_names):
2142+
if ("," in arg_name or arg_name == "") or (arg_name not in self.py_arg_names):
21412143
self._arguments.append(arg)
21422144
return self
21432145

@@ -2148,6 +2150,10 @@ def arguments(self):
21482150
@arguments.setter
21492151
def arguments(self, argument):
21502152
self._arguments.append(argument)
2153+
2154+
@property
2155+
def py_name(self):
2156+
return self._py_name
21512157

21522158
@property
21532159
def initial_args(self):
@@ -2449,33 +2455,39 @@ def arg_desc(self) -> List[Argument]:
24492455
for child in elem:
24502456
if isinstance(child, Variablelist):
24512457
if arguments is None:
2452-
arguments = ArgumentList(child, self.args)
2458+
arguments = ArgumentList(self.py_name, child, self.args)
24532459
else:
2454-
arguments += ArgumentList(child, self.args)
2455-
if self.py_name == "secmodif":
2456-
print(arguments.py_arg_names)
2460+
arguments += ArgumentList(self.py_name, child, self.args)
24572461

24582462
else:
24592463
for elem in refsyn:
24602464
if isinstance(elem, Variablelist):
24612465
if arguments is None:
2462-
arguments = ArgumentList(elem, self.args)
2466+
arguments = ArgumentList(self.py_name, elem, self.args)
24632467
else:
2464-
arguments += ArgumentList(elem, self.args)
2465-
if self.py_name == "secmodif":
2466-
print("HERE")
2467-
print(arguments.py_arg_names)
2468-
2469-
2470-
# if self.py_name in ["secmodif", "dmat"]:
2471-
# print(arguments.initial_args)
2472-
# print(arguments.py_arg_names)
2468+
arguments += ArgumentList(self.py_name, elem, self.args)
2469+
24732470
if arguments is not None:
2474-
if len(arguments.py_arg_names) < len(arguments.initial_args):
2475-
for arg in arguments.initial_args:
2476-
if arg not in arguments.py_arg_names:
2477-
new_arg = Argument(arg, arguments.initial_args, "")
2478-
arguments.arguments.append(new_arg)
2471+
if len(arguments.py_arg_names) != len(arguments.initial_args):
2472+
# This function needs a special treatment
2473+
if Path("args.txt").exists():
2474+
with open("args.txt", "r") as f:
2475+
for line in f:
2476+
pass
2477+
last_line = line
2478+
else:
2479+
last_line = ""
2480+
with open("args.txt", "a") as f:
2481+
if last_line != f"{arguments.py_arg_names}\n":
2482+
f.write("--------------------------------------------------\n")
2483+
f.write(f"{self.py_name}: {self.group}\n")
2484+
f.write(f"{arguments.initial_args}\n")
2485+
f.write(f"{arguments.py_arg_names}\n")
2486+
2487+
# for arg in arguments.initial_args:
2488+
# if arg not in arguments.py_arg_names:
2489+
# new_arg = Argument(arg, arguments.initial_args, "")
2490+
# arguments.arguments.append(new_arg)
24792491

24802492
return arguments.arguments
24812493

0 commit comments

Comments
 (0)