Michael C. Neel
neel at mediapulse.com
Tue Dec 2 14:51:32 EST 2003
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 > > > >
|