summaryrefslogtreecommitdiffstats
path: root/codegen/override.py
diff options
context:
space:
mode:
authorPaul Pogonyshev <pogonyshev@gmx.net>2008-09-08 20:26:13 +0000
committerPaul Pogonyshev <paulp@src.gnome.org>2008-09-08 20:26:13 +0000
commit5a5460578775d8e44e15ad4df3cbcad2f0c3a808 (patch)
treeee37fba6b7279f51fa08c0e1b55e35c982582e6e /codegen/override.py
parent3be00e793df41c81b5188f7b0b8fb8fcfb75ed56 (diff)
downloadpygobject-5a5460578775d8e44e15ad4df3cbcad2f0c3a808.tar.gz
pygobject-5a5460578775d8e44e15ad4df3cbcad2f0c3a808.tar.xz
pygobject-5a5460578775d8e44e15ad4df3cbcad2f0c3a808.zip
Bug 551056 – make codegen not import when corresponding argument types
2008-09-08 Paul Pogonyshev <pogonyshev@gmx.net> Bug 551056 – make codegen not import when corresponding argument types are not registered * codegen/override.py (import_pat): Add support for optional 'for' clause. (Overrides.__parse_override): Handle it. * codegen/codegen.py (SourceWriter.write_imports) (SourceWriter.write_object_imports): Adapt for changes in get_imports() return value. (is_registered_object): New function. svn path=/trunk/; revision=967
Diffstat (limited to 'codegen/override.py')
-rw-r--r--codegen/override.py8
1 files changed, 6 insertions, 2 deletions
diff --git a/codegen/override.py b/codegen/override.py
index c4d5ffa..bba5e42 100644
--- a/codegen/override.py
+++ b/codegen/override.py
@@ -19,7 +19,10 @@ def class2cname(klass, method):
c_name += c
return c_name[1:] + '_' + method
-import_pat = re.compile(r'\s*import\s+(\S+)\.([^\s.]+)\s+as\s+(\S+)')
+# import python_type as c_name [for arg_type]
+# Last ('for') clause is optional. If present, the type will be
+# imported only if given 'arg_type' is registered.
+import_pat = re.compile(r'\s*import\s+(\S+)\.([^\s.]+)\s+as\s+(\S+)(\s+for\s+(\S+))?')
class Overrides:
def __init__(self, filename=None):
@@ -166,7 +169,8 @@ class Overrides:
for line in string.split(buffer, '\n'):
match = import_pat.match(line)
if match:
- self.imports.append(match.groups())
+ module, pyname, cname, conditional, importing_for = match.groups()
+ self.imports.append((module, pyname, cname, importing_for or None))
elif command == 'define':
"define funcname [kwargs|noargs|onearg] [classmethod|staticmethod]"
"define Class.method [kwargs|noargs|onearg] [classmethod|staticmethod]"