|
Michael S. Fischer
michael at dynamine.net
Tue Dec 2 11:59:05 EST 2003
I agree that the code looks a little cleaner, but I still think it's
less robust due to the phenomenon I described.
(Python also makes you use 'elif's instead of 'case' statements, and
there's something to be said about the ugliness of the former as well.
Eye of the beholder, I guess.)
Best,
--Michael
Michael C. Neel wrote:
> What if something changed every major version, 2 - 5?
>
> with __version__ you could:
>
> if m.__version__.startswidth('2.'):
> user = m.get2_user()
> elif m.__version__.startswidth('3.'):
> user = m.get3_user()
> elif m.__version__.startswidth('4.'):
> user = m.get4_user()
> elif m.__version__.startswidth('5.'):
> user = m.get5_user()
> else:
> #unsupported version
>
> with try/except:
>
> try:
> user = m.get2_user()
> except:
> try:
> user = m.get3_user()
> except:
> try:
> user = m.get4_user()
> except:
> try:
> user = m.get5_user()
> except:
> #unsupported version
>
> I'm failing to see why it is supposed to be easier to code/easier to
> read with multiple try/except blocks, which are just going to get deeper
> as we go.
>
> Mike
>
>
>>-----Original Message-----
>>From: Michael S. Fischer [mailto:michael at dynamine.net]
>>Sent: Tuesday, December 02, 2003 2:41 PM
>>To: Michael C. Neel
>>Cc: Gustavo Córdova Avila; mod_python at modpython.org
>>Subject: Re: [mod_python] Getting mod_python version
>>
>>
>>Regardless of whether or not __version__ is implemented,
>>using exception
>>handling is more robust in the long run, I think.
>>
>>Forgetting to change the interface version number when a
>>compatibility
>>detail has changed is not an unknown phenomenon -- if not with
>>mod_python, then certainly with other SDKs.
>>
>>--Michael
>>
>>Michael C. Neel wrote:
>>
>>
>>>Most modules have a __version__ member, and the help()
>>
>>built-in method
>>
>>>even looks for this variable and uses it to display the
>>
>>version of the
>>
>>>file:
>>>
>>>
>>>
>>>>>>import cgi
>>>>>>cgi.__version__
>>>
>>>'2.6'
>>>
>>>
>>>>>>help(cgi)
>>>
>>>...skipping...
>>>DATA
>>> __all__ = ['MiniFieldStorage', 'FieldStorage',
>>
>>'FormContentDict',
>>
>>>'SvF...
>>> __version__ = '2.6'
>>> logfile = ''
>>> logfp = None
>>> maxlen = 0
>>>
>>>VERSION
>>> 2.6
>>>
>>>
>>>
>>>I have not read or seen anything saying the "pythonic" way
>>
>>of versioning
>>
>>>a module is by try/except blocks testing to see if variable
>>
>>exist. I
>>
>>>have however seen this from PEP 8:
>>>
>>>Version Bookkeeping
>>>
>>> If you have to have RCS or CVS crud in your source
>>
>>file, do it as
>>
>>> follows.
>>>
>>> __version__ = "$Revision: 1.20 $"
>>> # $Source:
>>
>>/cvsroot/python/python/nondist/peps/pep-0008.txt,v $
>>
>>> These lines should be included after the module's docstring,
>>> before any other code, separated by a blank line above and
>>> below.
>>>
>>>Which implies to me that __version__ is a pythonic way of
>>
>>versioning a
>>
>>>module/code file, though it doesn't seem to be as standard
>>
>>as __doc__.
>>
>>>Mike
>>>
>>>
>>>
>>>>-----Original Message-----
>>>>From: Gustavo Córdova Avila [mailto:gustavo.cordova at q-voz.com]
>>>>Sent: Tuesday, December 02, 2003 1:47 PM
>>>>To: Michael C. Neel
>>>>Cc: mod_python at modpython.org
>>>>Subject: Re: [mod_python] Getting mod_python version
>>>>
>>>>
>>>>This is the correct, "pythonic" way of doing things.
>>>>
>>>>I'd recommend using "except AttributeError:" instead of a naked
>>>>"except:" btw.
>>>>
>>>>-gustavo
>>>>
>>>>Michael C. Neel wrote:
>>>>
>>>>
>>>>
>>>>>Hi all,
>>>>>
>>>>> I don't know if it's not there, or I'm just overlooking it, but
>>>>>I can seem for a way in code to get the version of
>>>>
>>>>mod_python. I have
>>>>
>>>>
>>>>>some "default" modules I use, and I am trying to make them
>>>>
>>>>work with any
>>>>
>>>>
>>>>>mod_python version. Right now I'm doing try block, like such:
>>>>>
>>>>> # Get username/password from client
>>>>> pw = req.get_basic_auth_pw()
>>>>> try:
>>>>> # mod_python 2.x
>>>>> user = req.connection.user
>>>>> except:
>>>>> # mod_python 3.x
>>>>> user = req.user
>>>>>
>>>>> ...but I'd rather be able to get the version directly.
>>>>>
>>>>>Mike
>>>>>
>>>>>_______________________________________________
>>>>>Mod_python mailing list
>>>>>Mod_python at modpython.org
>>>>>http://mailman.modpython.org/mailman/listinfo/mod_python
>>>>>
>>>>>
>>>>>
>>>>>
>>>>
>>>>
>>>_______________________________________________
>>>Mod_python mailing list
>>>Mod_python at modpython.org
>>>http://mailman.modpython.org/mailman/listinfo/mod_python
>>>
>>
>>
>
|