On 24 Jan 2005 20:39:11 -0800, [EMAIL PROTECTED] wrote: >Assume I am using a class Foo. I want to find out the modification time >of the file that that class was defined in. How would I go about this? > >If I could find out the name of the file that Foo was defined in then >it is easy, I could use os.path.getmtime(), but I can't even figure >that out. > >I realize that this wouldn't be a completely accurate way to tell the >last time this class was modified because it could inherit info from >other classes, or use functions from other modules that have been >modified, etc. > >Nathan Bullock >
try this for about any object you can pass to finfo: ----< finfo.py >---------------- import sys, os def finfo(obj): if not hasattr(obj, '__name__'): obj = type(obj) name = '<%s instance>'%obj.__name__ else: name = obj.__name__ if type(obj) == type(sys): # module type modname = name else: # not module type, but be class now modname = obj.__module__ mod = sys.modules[modname] if modname == '__builtin__' or repr(mod) == "<module '%s' (built-in)>"%modname: path = sys.executable else: path = vars(sys.modules[modname]).get('__file__','??') if path != '??': tmod = os.path.getmtime(path) else: tmod = '???' return name, modname, path, tmod -------------------------------- Not very tested, but seems to retrieve info. The file in question for builtins is the interpreter executable, I supposed. Ignore the "ut." here, that's just my utilities grabbag [ 0:25] C:\pywk\sovm>py24 Python 2.4b1 (#56, Nov 3 2004, 01:47:27) [GCC 3.2.3 (mingw special 20030504-1)] on win32 Type "help", "copyright", "credits" or "license" for more information. >>> from ut.finfo import finfo >>> finfo(finfo) ('finfo', 'ut.finfo', 'c:\\pywk\\ut\\finfo.pyc', 1106641080) >>> import time >>> time.ctime(finfo(finfo)[-1]) 'Tue Jan 25 00:18:00 2005' HIH Regards, Bengt Richter -- http://mail.python.org/mailman/listinfo/python-list