R. Bernstein wrote:
> Nick Coghlan writes:
>  > 3. Do what a number of standard library APIs (e.g. linecache) that
>  > accept filenames do and also accept an optional "module globals"
>  > argument. 
> 
> Actually, I did this and committed a change (to pydb) before posting
> any of these queries. ;-)
> 
> If "a number of standard library APIs" are doing the *same* thing,
> then shouldn't this exposed as a common routine?
> 
> If on the other hand, by "a number" you mean "one" as in linecache --
> 1 *is* a number too! -- then perhaps the relevant code that is buried
> inside the "updatecache" should be exposed on its own.  (As a side
> benefit that code can be tested separately too!)
> 
> Should I file a feature request for this? 

The reason for my slightly odd phrasing is that all of the examples I
was originally going to mention (traceback, pdb, doctest, inspect)
actually all end up calling linecache to do the heavy lifting.

So it is possible that linecache.getlines() actually *is* the common
routine you're looking for - it just needs to be added to the
documentation and the __all__ attribute for linecache to be officially
supported. Currently, only the single line getline() function is
documented and exposed via __all__, but I don't see any reason for that
restriction - linecache.getlines() has been there with a stable API
since at least Python 2.5.

For cases where you have an appropriate Python object (i.e. a module,
function, method, class, traceback, frame or code object) rather than a
pseudo-filename, then inspect.getsource() actually jumps through a lot
of hoops to try to find the actual source code for that object - in
those cases, using the appropriate inspect function is generally a much
better idea than trying to interpret __file__ yourself.

Cheers,
Nick.

-- 
Nick Coghlan   |   ncogh...@gmail.com   |   Brisbane, Australia
---------------------------------------------------------------
_______________________________________________
Python-Dev mailing list
Python-Dev@python.org
http://mail.python.org/mailman/listinfo/python-dev
Unsubscribe: 
http://mail.python.org/mailman/options/python-dev/archive%40mail-archive.com

Reply via email to