annotate scripts/ast_generator.py @ 902:09cc3627654c experimental-inline

Sync `experimental/inline` branch with [source:trunk@1126].
author cmlenz
date Fri, 23 Apr 2010 21:08:26 +0000
parents 1837f39efd6f
children
rev   line source
820
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
1 #!/usr/bin/env python2.5
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
2
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
3 """Script to that automatically generates genshi/templates/_astpy24.py.
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
4 Be sure to run this with a Python 2.5 interpreter.
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
5 """
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
6
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
7 import _ast
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
8
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
9 done = set()
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
10
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
11 IGNORE_ATTRS = ('__module__', '__dict__', '__weakref__', '__setattr__',
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
12 '__new__', '__getattribute__', '__reduce__', '__delattr__',
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
13 '__init__')
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
14
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
15 def print_class(cls):
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
16 bnames = []
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
17 for base in cls.__bases__:
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
18 if base.__module__ == '_ast':
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
19 if base not in done:
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
20 print_class(base)
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
21 bnames.append(base.__name__)
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
22 elif base.__module__ == '__builtin__':
902
09cc3627654c Sync `experimental/inline` branch with [source:trunk@1126].
cmlenz
parents: 820
diff changeset
23 bnames.append("%s" % base.__name__)
820
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
24 else:
902
09cc3627654c Sync `experimental/inline` branch with [source:trunk@1126].
cmlenz
parents: 820
diff changeset
25 bnames.append("%s.%s" % (base.__module__,base.__name__))
09cc3627654c Sync `experimental/inline` branch with [source:trunk@1126].
cmlenz
parents: 820
diff changeset
26 print("class %s(%s):" % (cls.__name__, ", ".join(bnames)))
820
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
27 written = False
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
28 for attr in cls.__dict__:
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
29 if attr not in IGNORE_ATTRS:
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
30 written = True
902
09cc3627654c Sync `experimental/inline` branch with [source:trunk@1126].
cmlenz
parents: 820
diff changeset
31 print("\t%s = %s" % (attr, repr(cls.__dict__[attr]),))
820
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
32 if not written:
902
09cc3627654c Sync `experimental/inline` branch with [source:trunk@1126].
cmlenz
parents: 820
diff changeset
33 print("\tpass")
820
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
34 done.add(cls)
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
35
902
09cc3627654c Sync `experimental/inline` branch with [source:trunk@1126].
cmlenz
parents: 820
diff changeset
36 print('# Generated automatically, please do not edit')
09cc3627654c Sync `experimental/inline` branch with [source:trunk@1126].
cmlenz
parents: 820
diff changeset
37 print('# Generator can be found in Genshi SVN, scripts/ast_generator.py')
09cc3627654c Sync `experimental/inline` branch with [source:trunk@1126].
cmlenz
parents: 820
diff changeset
38 print('')
09cc3627654c Sync `experimental/inline` branch with [source:trunk@1126].
cmlenz
parents: 820
diff changeset
39 print('__version__ = %s' % _ast.__version__)
09cc3627654c Sync `experimental/inline` branch with [source:trunk@1126].
cmlenz
parents: 820
diff changeset
40 print('')
820
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
41
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
42 for name in dir(_ast):
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
43 cls = getattr(_ast, name)
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
44 if cls.__class__ is type:
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
45 print_class(cls)
1837f39efd6f Sync (old) experimental inline branch with trunk@1027.
cmlenz
parents:
diff changeset
46 print
Copyright (C) 2012-2017 Edgewall Software