1.1 --- a/modules.py Mon Jan 08 00:13:18 2018 +0100
1.2 +++ b/modules.py Mon Jan 08 00:30:23 2018 +0100
1.3 @@ -4,7 +4,7 @@
1.4 Module abstractions.
1.5
1.6 Copyright (C) 2007, 2008, 2009, 2010, 2011, 2012, 2013,
1.7 - 2014, 2015, 2016, 2017 Paul Boddie <paul@boddie.org.uk>
1.8 + 2014, 2015, 2016, 2017, 2018 Paul Boddie <paul@boddie.org.uk>
1.9
1.10 This program is free software; you can redistribute it and/or modify it under
1.11 the terms of the GNU General Public License as published by the Free Software
1.12 @@ -63,6 +63,7 @@
1.13 # Function details.
1.14
1.15 self.function_parameters = {}
1.16 + self.function_attr_initialisers = {}
1.17 self.function_defaults = {}
1.18 self.function_locals = {}
1.19 self.scope_globals = {}
1.20 @@ -391,6 +392,7 @@
1.21 self._get_initialised_names(f)
1.22 self._get_aliased_names(f)
1.23 self._get_function_parameters(f)
1.24 + self._get_function_attr_initialisers(f)
1.25 self._get_function_defaults(f)
1.26 self._get_function_locals(f)
1.27 self.from_lines(f, self.scope_globals) # "scope globals:"
1.28 @@ -510,6 +512,15 @@
1.29 self.function_parameters[function] = names != "{}" and names.split(", ") or []
1.30 line = f.readline().rstrip()
1.31
1.32 + def _get_function_attr_initialisers(self, f):
1.33 + f.readline() # "function attribute initialisers:"
1.34 + line = f.readline().rstrip()
1.35 + while line:
1.36 + function, names = self._get_fields(line)
1.37 + self.importer.function_attr_initialisers[function] = \
1.38 + self.function_attr_initialisers[function] = names != "{}" and names.split(", ") or []
1.39 + line = f.readline().rstrip()
1.40 +
1.41 def _get_function_defaults(self, f):
1.42 f.readline() # "function default parameters:"
1.43 line = f.readline().rstrip()
1.44 @@ -782,6 +793,17 @@
1.45 print >>f, function, "{}"
1.46
1.47 print >>f
1.48 + print >>f, "function attribute initialisers:"
1.49 + functions = self.function_attr_initialisers.keys()
1.50 + functions.sort()
1.51 + for function in functions:
1.52 + parameters = self.function_attr_initialisers[function]
1.53 + if parameters:
1.54 + print >>f, function, ", ".join(parameters)
1.55 + else:
1.56 + print >>f, function, "{}"
1.57 +
1.58 + print >>f
1.59 print >>f, "function default parameters:"
1.60 functions = self.function_defaults.keys()
1.61 functions.sort()