annotate pyloader/invoke.py @ 3:65d9a7c7ac63

other misc improvements
author Jeff Hammel <jhammel@mozilla.com>
date Tue, 10 May 2011 10:26:19 -0700
parents 6cb7696edc4d
children 5ce55f6c8964
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
2
6cb7696edc4d add some more stuff for string loady type things and rearrange structure
Jeff Hammel <jhammel@mozilla.com>
parents:
diff changeset
1 import inspect
6cb7696edc4d add some more stuff for string loady type things and rearrange structure
Jeff Hammel <jhammel@mozilla.com>
parents:
diff changeset
2
6cb7696edc4d add some more stuff for string loady type things and rearrange structure
Jeff Hammel <jhammel@mozilla.com>
parents:
diff changeset
3 def call(obj, *args, **kwargs):
6cb7696edc4d add some more stuff for string loady type things and rearrange structure
Jeff Hammel <jhammel@mozilla.com>
parents:
diff changeset
4 """call a thing with string arguments"""
6cb7696edc4d add some more stuff for string loady type things and rearrange structure
Jeff Hammel <jhammel@mozilla.com>
parents:
diff changeset
5 inspected = obj
6cb7696edc4d add some more stuff for string loady type things and rearrange structure
Jeff Hammel <jhammel@mozilla.com>
parents:
diff changeset
6 if inspect.isclass(obj):
6cb7696edc4d add some more stuff for string loady type things and rearrange structure
Jeff Hammel <jhammel@mozilla.com>
parents:
diff changeset
7 inspected = obj.__init__ # inspect the ctor
6cb7696edc4d add some more stuff for string loady type things and rearrange structure
Jeff Hammel <jhammel@mozilla.com>
parents:
diff changeset
8 argspec = inspect.getargspec(inspected)
6cb7696edc4d add some more stuff for string loady type things and rearrange structure
Jeff Hammel <jhammel@mozilla.com>
parents:
diff changeset
9
3
65d9a7c7ac63 other misc improvements
Jeff Hammel <jhammel@mozilla.com>
parents: 2
diff changeset
10 if __name__ == '__main__':
65d9a7c7ac63 other misc improvements
Jeff Hammel <jhammel@mozilla.com>
parents: 2
diff changeset
11 import sys
65d9a7c7ac63 other misc improvements
Jeff Hammel <jhammel@mozilla.com>
parents: 2
diff changeset
12 from loader import load
65d9a7c7ac63 other misc improvements
Jeff Hammel <jhammel@mozilla.com>
parents: 2
diff changeset
13 from optparse import OptionParser
65d9a7c7ac63 other misc improvements
Jeff Hammel <jhammel@mozilla.com>
parents: 2
diff changeset
14 usage = '%prog Object arg1=value1 arg2=value2 [...]'
65d9a7c7ac63 other misc improvements
Jeff Hammel <jhammel@mozilla.com>
parents: 2
diff changeset
15 description = 'invoke an Object given string arguments'
65d9a7c7ac63 other misc improvements
Jeff Hammel <jhammel@mozilla.com>
parents: 2
diff changeset
16 parser = OptionParser(usage=usage, description=description)
65d9a7c7ac63 other misc improvements
Jeff Hammel <jhammel@mozilla.com>
parents: 2
diff changeset
17 args = sys.argv[1:]
65d9a7c7ac63 other misc improvements
Jeff Hammel <jhammel@mozilla.com>
parents: 2
diff changeset
18 if not args:
65d9a7c7ac63 other misc improvements
Jeff Hammel <jhammel@mozilla.com>
parents: 2
diff changeset
19 parser.print_usage()
65d9a7c7ac63 other misc improvements
Jeff Hammel <jhammel@mozilla.com>
parents: 2
diff changeset
20 parser.exit()
65d9a7c7ac63 other misc improvements
Jeff Hammel <jhammel@mozilla.com>
parents: 2
diff changeset
21 obj_args = dict([i.split('=', 1) for i in args[1:]])
65d9a7c7ac63 other misc improvements
Jeff Hammel <jhammel@mozilla.com>
parents: 2
diff changeset
22 obj = load(args[0])
65d9a7c7ac63 other misc improvements
Jeff Hammel <jhammel@mozilla.com>
parents: 2
diff changeset
23 print call(obj, **obj_args)