Changeset 313

Show
Ignore:
Timestamp:
03/27/08 18:33:22 (6 years ago)
Author:
ged
Message:

Apply one more patch from Jason R. Coombs for python2.3 compatibility
(including in our tests). Thanks!

Location:
elixir/trunk
Files:
7 modified

Legend:

Unmodified
Added
Removed
  • elixir/trunk/elixir/ext/list.py

    r309 r313  
    115115            qualifier_method = lambda self: None 
    116116         
    117         @before_insert 
    118117        def _init_position(self): 
    119118            s = select( 
     
    125124            a = s.alias() 
    126125            setattr(self, position_column_name, select([func.max(a.c.value)])) 
    127          
    128         @before_delete 
     126        _init_position = before_insert(_init_position) 
     127         
    129128        def _shift_items(self): 
    130129            self.table.update( 
     
    137136                } 
    138137            ).execute() 
     138        _shift_items = before_delete(_shift_items) 
    139139         
    140140        def move_to_bottom(self):         
  • elixir/trunk/elixir/py23compat.py

    r308 r313  
    77    from sets import Set as set 
    88 
     9orig_cmp = cmp 
     10# [].sort 
     11def sort_list(l, cmp=None, key=None, reverse=False): 
     12    try: 
     13        l.sort(cmp, key, reverse) 
     14    except TypeError, e: 
     15        if not str(e).startswith('sort expected at most 1 arguments'): 
     16            raise 
     17        if cmp is None: 
     18            cmp = orig_cmp 
     19        if key is not None: 
     20            # the cmp=cmp parameter is required to get the original comparator 
     21            # into the lambda namespace 
     22            cmp = lambda self, other, cmp=cmp: cmp(key(self), key(other)) 
     23        if reverse: 
     24            cmp = lambda self, other, cmp=cmp: -cmp(self,other) 
     25        l.sort(cmp)  
     26 
    927# sorted 
    1028try: 
     
    1331    # global name 'sorted' doesn't exist in Python2.3 
    1432    # this provides a poor-man's emulation of the sorted built-in method 
    15     def sorted(l, **kwargs): 
     33    def sorted(l, cmp=None, key=None, reverse=False): 
    1634        sorted_list = list(l) 
    17         if 'key' in kwargs: 
    18             key_func = kwargs['key'] 
    19             sorted_list.sort(lambda self, other: cmp(key_func(self), 
    20                                                      key_func(other))) 
    21         else: 
    22             sorted_list.sort() 
     35        sort_list(sorted_list, cmp, key, reverse) 
    2336        return sorted_list 
    2437 
  • elixir/trunk/tests/test_autoload.py

    r310 r313  
    140140        print "Persons in the '%s' category: %s." % ( 
    141141                c.name,  
    142                 ", ".join(p.name for p in c.persons)) 
     142                ", ".join([p.name for p in c.persons])) 
    143143         
    144144        assert len(c.persons) == 4 
  • elixir/trunk/tests/test_events.py

    r310 r313  
    1919        name = Field(String(50)) 
    2020         
    21         @before_insert 
    2221        def pre_insert(self): 
    2322            global before_insert_called 
    2423            before_insert_called += 1 
     24        pre_insert = before_insert(pre_insert) 
    2525         
    26         @after_insert 
    2726        def post_insert(self): 
    2827            global after_insert_called 
    2928            after_insert_called += 1 
     29        post_insert = after_insert(post_insert) 
    3030 
    31         @before_update 
    3231        def pre_update(self): 
    3332            global before_update_called 
    3433            before_update_called += 1 
     34        pre_update = before_update(pre_update) 
    3535         
    36         @after_update 
    3736        def post_update(self): 
    3837            global after_update_called 
    3938            after_update_called += 1 
     39        post_update = after_update(post_update) 
    4040 
    41         @before_delete 
    4241        def pre_delete(self): 
    4342            global before_delete_called 
    4443            before_delete_called += 1 
     44        pre_delete = before_delete(pre_delete) 
    4545         
    46         @after_delete 
    4746        def post_delete(self): 
    4847            global after_delete_called 
    4948            after_delete_called += 1 
     49        post_delete = after_delete(post_delete) 
    5050     
    51         @before_insert 
    52         @before_update 
    53         @before_delete 
    5451        def pre_any(self): 
    5552            global before_any_called 
    5653            before_any_called += 1 
     54        pre_any = before_insert(before_update(before_delete(pre_any))) 
    5755    metadata.bind = 'sqlite:///' 
    5856 
  • elixir/trunk/tests/test_inherit.py

    r310 r313  
    55from elixir import * 
    66import elixir 
     7from elixir.py23compat import sort_list 
    78 
    89def setup(): 
     
    5354    for class_ in (A, B, C, D, E): 
    5455        res[class_.__name__] = class_.query.all() 
    55         res[class_.__name__].sort(key=lambda o: o.__class__.__name__)  
     56        sort_list(res[class_.__name__], key=lambda o: o.__class__.__name__)  
    5657 
    5758    for query_class in ('A', 'B', 'C', 'D', 'E'): 
  • elixir/trunk/tests/test_o2m.py

    r271 r313  
    6262        print "%s is %s's child." % (p.name, p.father.name)         
    6363        print "His children are: %s." % ( 
    64                 " and ".join(c.name for c in p.children)) 
     64                " and ".join([c.name for c in p.children])) 
    6565         
    6666        assert p in p.father.children 
  • elixir/trunk/tests/test_properties.py

    r310 r313  
    9494#        assert category.score == 85 # doesn't work for now 
    9595        for user in category.users: 
    96             assert user.score == sum(tag.score for tag in user.tags) 
     96            assert user.score == sum([tag.score for tag in user.tags]) 
    9797            for tag in user.tags: 
    9898                assert tag.score == tag.score1 * tag.score2