[Distutils] Stylistic comments
Robin Becker
robin@jessikat.demon.co.uk
Thu, 10 Feb 2000 11:20:13 +0000
In article <20000209215010.A611@beelzebub>, Greg Ward <gward@python.net>
writes
>Hi all (especially Robin and Thomas!) --
>
>I was just looking through the new registry-grovelling code in
>msvccompiler.py, making some stylistic changes, when I noticed the
>following in '_find_exe()' (comments added by me):
>
> try:
> for p in string.split(os.environ['Path'],';'):
> fn=os.path.join(os.path.abspath(p),exe)
> if os.path.isfile(fn):
> return fn
> # XXX BAD BAD BAD BAD BAD BAD BAD BAD BAD BAD BAD BAD !!!!!!!!!!!!!!!!
> except: # XXX WHAT'S BEING CAUGHT HERE?!?!?
> pass
>
>What is this 'except' clause supposed to catch?
>
well os.environ['Path'] may not be there and then it would be a keyError
>Other changes: I have renamed '_devstudio_versions()' to
>'get_devstudio_versions()' because it's more descriptive and I don't see
>a big need for the leading underscore; likewise '_msvc_get_paths()' is
>now 'get_msvc_paths()'.
>
>I've changed the 'get_devstudio_versions()' docstring to:
>
> """Get list of devstudio versions from the Windows registry. Return a
> list of strings (???) containing version numbers; the list will
> be empty if we were unable to access the registry (eg. couldn't
> import a registry-access module) or the appropriate registry
> keys weren't found. (XXX is this correct???)"""
>
>Input, please?
Correct on the doc. I put underscore to stop these being implicitly
available outside of the module.
>
>I'd like a similarly explicit and useful docstring for
>'get_msvc_paths()', but don't understand it well enough to write one:
>could someone supply me one please?
>
>Oh yeah, I'm mystified by the purpose for '_find_SET()' and '_do_SET()'.
>Could I get docstrings for those please? Better parameter names (full
>words, not single characters!) might help.
_find_SET(name,version_number)
'''' looks up in the registry and returns a list of values suitable for
use in a SET command eg SET name=value. Normally the value will be a
';' separated list similar to a path list.
name is the name of an MSVC path and version_number is a version_number
of an MSVC installation.
''''
_do_SET(name,version_number)
'''' sets os.environ[name] to an MSVC path type value obtained from
_find_SET. This is equivalent to a SET command prior to exceution of
spawned commands.
''''
>
>Also, the real reason I went off on this tangent was because we get an
>even *worse* traceback than before now on machines without MSVC++
>(eg. my Linux box being told to use an MSVCCompiler object, which used
>to work just fine in dry-run mode). In particular, it blows up because
>'get_devstudio_versions()' returns None, but '_find_exe()' expects a
>sequence. My inclination is to fix 'get_devstudio_versions()' to always
>return a list, empty if the imports failed. Ditto for
I thought we had that None fixed ages ago. They should return []. What
to do if they do is open.
>'get_msvc_paths()' for consistency. Anyone see a problem with this?
>(I.e., are we ever going to need to distinguish "couldn't find anything
>in the registry" from "couldn't access the registry at all"?)
>
>Thanks --
>
> Greg
--
Robin Becker