[Python-Dev] Catching "return" and "return expr" at compile time

Guido van Rossum guido@CNRI.Reston.VA.US
Tue, 07 Sep 1999 19:05:19 -0400

> > Perhaps on those platforms a file could be opened in a
> > standard location to
> > catch stderr (I presume you can detect the lack of stderr at
> > run-time?).
> Not really - there are 2 scenarios here.  pythonw.exe, for example, always
> has a valid stdout handle - it just goes nowhere.  When Python is embedded
> in certain COM servers (such as ASP), the stdout handle is invalid -
> operations on it will fail (perversely, this also means a single "print"
> statement in your Python code can raise an exception and make your code
> fail - and seeing as print statements are the debugging state of the art at
> the moment, this is less than ideal - but I digress)
> So Im not sure we can check this reasonably at runtime - invalid handles
> are easy, but valid handles that go nowhere useful (as in pythonw.exe, and
> therefore the majority of cases we care about) is obviously difficult.
> OTOH, pythonw.exe doesnt print tracebacks either.  Although not ideal,
> people arent loudly complaining about this - they know to develop and debug
> using python.exe.  As the warnings we are discussing are compile time
> warnings, we could simply document that they should run "compileall" over
> their scripts to generate the warnings before attempting to embed it in
> some sort of wierd system.

Hmm...  Perhaps pythonw.exe could use freopen() to point stdout and
stderr to a log file in a temp directory?  The wizards will know where 
to look...

> On my third hand, I would _really_ like to see this in a lint tool rather
> than in the core.  I realize there is no such tool at the moment, but IMO
> is where we should be heading.  Skip's return statement warnings are fine
> and a nice addition, but in my experience account for a trivial number of
> my errors.  Stuff like warning about a variable name used only once, for
> example, will probably never get into core Python but in my opinion is far
> more valuable.  So adding this "-w" switch is fine, but still doesnt give
> us the framework we need to actually create a truly useful package of
> warnings for the Python developer.
> [And I am slowly and painfully starting work in this - a lint tool based on
> the Python parser module.  Dont hold your breath though :-]

Eventually, I also plan to have some kind of lint in IDLE.  If the
CP4E money comes, I'll start working on that for earnest...

--Guido van Rossum (home page: http://www.python.org/~guido/)