@@ -13,13 +13,14 @@ def __init__(self, pdfconfig):
13
13
self .config = pdfconfig
14
14
self .required_parsets = {}
15
15
self .builder_data = {'local' : {},'global' : {'symbols' : set ()}}
16
+ self .encountered_expressions = {}
16
17
17
18
def collect (self , thismod , nom ):
18
19
maskval = True if thismod else False
19
20
mask = [maskval ] * len (nom )
20
21
return {'mask' : mask }
21
22
22
- def require_synbols_as_scalars (self , symbols ):
23
+ def require_symbols_as_scalars (self , symbols ):
23
24
param_spec = {
24
25
p :
25
26
[{
@@ -52,15 +53,16 @@ def append(self, key, channel, sample, thismod, defined_samp):
52
53
parsed = parser .parse_expr (formula )
53
54
free_symbols = parsed .free_symbols
54
55
for x in free_symbols :
55
- self .builder_data ['global' ].setdefault ('symbols' ,set ()).add (x )
56
+ if x not in self .encountered_expressions :
57
+ self .builder_data ['global' ].setdefault ('symbols' ,set ()).add (x )
56
58
else :
57
59
parsed = None
58
60
self .builder_data ['local' ].setdefault (key ,{}).setdefault (sample ,{}).setdefault ('channels' ,{}).setdefault (channel ,{})['parsed' ] = parsed
59
61
60
62
def finalize (self ):
61
63
list_of_symbols = [str (x ) for x in self .builder_data ['global' ]['symbols' ]]
62
64
63
- self .required_parsets = self .require_synbols_as_scalars (list_of_symbols )
65
+ self .required_parsets = self .require_symbols_as_scalars (list_of_symbols )
64
66
65
67
self .builder_data ['global' ]['symbol_names' ] = list_of_symbols
66
68
for modname , modspec in self .builder_data ['local' ].items ():
0 commit comments