Re: retrieve source code from code object as returned by compile()
in python3, I do inspect.getsource(object) [dochttps://docs.python.org/3/library/inspect.html#inspect.getsource], I don't know the limitations. On Python 2, there is meta https://pypi.python.org/pypi/meta. My interest is different, I use to retrieve the definition of function to submit it to a database, instead of stored procedures, but I have the source of the code. It can also be used to retrieve the ast. 2014-04-25 4:50 GMT+02:00 Justin Ezequiel justin.ezequ...@gmail.com: On Thursday, April 24, 2014 1:53:38 PM UTC+8, Gregory Ewing wrote: Alternatively you could create a .pyc file out of the code object and then use Easy Python Decompiler on that. The following snippet of code should do that: (Taken from: http://stackoverflow.com/questions/8627835/generate-pyc-from-python-ast) Woohoo! Success! Thank you Greg! -- https://mail.python.org/mailman/listinfo/python-list -- https://mail.python.org/mailman/listinfo/python-list
Re: retrieve source code from code object as returned by compile()
Amirouche Boubekki wrote: in python3, I do inspect.getsource(object) [doc https://docs.python.org/3/library/inspect.html#inspect.getsource], I don't know the limitations. The limitation relevant here is that it requires the original source file to be present. :-) -- Greg -- https://mail.python.org/mailman/listinfo/python-list
Re: retrieve source code from code object as returned by compile()
On Thursday, April 24, 2014 1:53:38 PM UTC+8, Gregory Ewing wrote: Alternatively you could create a .pyc file out of the code object and then use Easy Python Decompiler on that. The following snippet of code should do that: (Taken from: http://stackoverflow.com/questions/8627835/generate-pyc-from-python-ast) Woohoo! Success! Thank you Greg! -- https://mail.python.org/mailman/listinfo/python-list
retrieve source code from code object as returned by compile()
Is there a way to get the original source? I am trying to retrieve the main script from a py2exe'd old program. The programmer neglected to commit to SVN before leaving. Using Easy Python Decompiler I am able to get the source for the imported modules. Using Resources Viewer from PlexData and some code I am able to retrieve the code object. I am however stumped as to how to retrieve the source from this code object. PythonWin 2.5.4 (r254:67916, Dec 23 2008, 15:10:54) [MSC v.1310 32 bit (Intel)] on win32. Portions Copyright 1994-2008 Mark Hammond - see 'Help/About PythonWin' for further copyright information. s = 'import time\nprint time.time()\n' c = compile(s, 'foo.py', 'exec') exec(c) 1398299623.77 c code object module at 01E5C5C0, file foo.py, line 1 for n in dir(c): ... if n.startswith('_'): continue ... print n ... a = getattr(c, n) ... print type(a) ... print `a` ... print ... co_argcount type 'int' 0 co_cellvars type 'tuple' () co_code type 'str' 'd\x00\x00d\x01\x00k\x00\x00Z\x00\x00e\x00\x00i\x00\x00\x83\x00\x00GHd\x01\x00S' co_consts type 'tuple' (-1, None) co_filename type 'str' 'foo.py' co_firstlineno type 'int' 1 co_flags type 'int' 64 co_freevars type 'tuple' () co_lnotab type 'str' '\x0c\x01' co_name type 'str' 'module' co_names type 'tuple' ('time',) co_nlocals type 'int' 0 co_stacksize type 'int' 2 co_varnames type 'tuple' () len(s) 30 len(c.co_code) 27 -- https://mail.python.org/mailman/listinfo/python-list
Re: retrieve source code from code object as returned by compile()
Justin Ezequiel wrote: Using Easy Python Decompiler I am able to get the source for the imported modules. Using Resources Viewer from PlexData and some code I am able to retrieve the code object. I am however stumped as to how to retrieve the source from this code object. Easy Python Decompiler should be able to do that, but you may need to delve into its innards a bit to find an entry point where you can feed in a code object. Alternatively you could create a .pyc file out of the code object and then use Easy Python Decompiler on that. The following snippet of code should do that: import marshal import py_compile import time with open('output.pyc', 'wb') as fc: fc.write('\0\0\0\0') py_compile.wr_long(fc, long(time.time())) marshal.dump(codeobject, fc) fc.flush() fc.seek(0, 0) fc.write(py_compile.MAGIC) (Taken from: http://stackoverflow.com/questions/8627835/generate-pyc-from-python-ast) -- Greg -- https://mail.python.org/mailman/listinfo/python-list