injecting "set" into 2.3's builtins?

Stephen Thorne stephen.thorne at gmail.com
Thu Mar 10 23:43:44 EST 2005


On Wed, 9 Mar 2005 19:49:36 -0600, Skip Montanaro <skip at pobox.com> wrote:
> 
> I use sets a lot in my Python 2.3 code at work and have been using this
> hideous import to make the future move to 2.4's set type transparent:
> 
>     try:
>         x = set
>     except NameError:
>         from sets import Set as set
>     else:
>         del x
> 
> Of course, while it's transparent at one level (where sets are used) it's
> not really transparent at another level (where the set object is defined).
> 
> I'm toying with the idea of adding this to the sitecustomize module at work:
> 
>     import sets
>     import __builtin__
>     __builtin__.set = sets.Set
>     del sets, __builtin__
> 
> I'm wondering if others have tried it.  If so, did it cause any problems?
> I've not noticed any incompatibilities between the 2.3 and 2.4 versions of
> set objects, but my use of them has been pretty straightforward.

I have:
try:
    set
except NameError:
    from sets import Set as set

in my code in a few places. Its not any worse than:

try:
    True,False
except NameError:
    True, False = 1==1,1==0

which is in quite a bit of python2.2 code.

-- 
Stephen Thorne
Development Engineer, NetBoxBlue.com



More information about the Python-list mailing list