<s> from pytest import raises <EOL> from . env import NInt , get_session , key <EOL> from . env import session <EOL> from sider . types import SortedSet <EOL> from sider . transaction import Transaction <EOL> from sider . exceptions import CommitError <EOL> S = frozenset <EOL> IntSet = SortedSet ( NInt ) <EOL> def test_iterate ( session ) : <EOL> set_ = session . set ( key ( '<STR_LIT>' ) , <EOL> { '<STR_LIT:a>' : <NUM_LIT:3> , '<STR_LIT:b>' : <NUM_LIT:1> , '<STR_LIT:c>' : <NUM_LIT:2> } , <EOL> SortedSet ) <EOL> assert list ( set_ ) == [ '<STR_LIT:b>' , '<STR_LIT:c>' , '<STR_LIT:a>' ] <EOL> setx = session . set ( key ( '<STR_LIT>' ) , <EOL> { <NUM_LIT:1> : <NUM_LIT:3> , <NUM_LIT:2> : <NUM_LIT:1> , <NUM_LIT:3> : <NUM_LIT:2> } , <EOL> IntSet ) <EOL> assert list ( setx ) == [ <NUM_LIT:2> , <NUM_LIT:3> , <NUM_LIT:1> ] <EOL> def test_length ( session ) : <EOL> set_ = session . set ( key ( '<STR_LIT>' ) , S ( '<STR_LIT:abc>' ) , SortedSet ) <EOL> assert len ( set_ ) == <NUM_LIT:3> <EOL> setx = session . set ( key ( '<STR_LIT>' ) , S ( [ <NUM_LIT:1> , <NUM_LIT:2> , <NUM_LIT:3> ] ) , IntSet ) <EOL> assert len ( setx ) == <NUM_LIT:3> <EOL> def test_contains ( session ) : <EOL> set_ = session . set ( key ( '<STR_LIT>' ) , S ( '<STR_LIT:abc>' ) , SortedSet ) <EOL> assert '<STR_LIT:a>' in set_ <EOL> assert '<STR_LIT:d>' not in set_ <EOL> setx = session . set ( key ( '<STR_LIT>' ) , S ( [ <NUM_LIT:1> , <NUM_LIT:2> , <NUM_LIT:3> ] ) , IntSet ) <EOL> assert <NUM_LIT:1> in setx <EOL> assert <NUM_LIT:4> not in setx <EOL> assert '<STR_LIT:1>' not in setx <EOL> assert '<STR_LIT:4>' not in setx <EOL> def test_getitem ( session ) : <EOL> set_ = session . set ( key ( '<STR_LIT>' ) , S ( '<STR_LIT:abc>' ) , SortedSet ) <EOL> assert set_ [ '<STR_LIT:a>' ] == <NUM_LIT:1> <EOL> assert set_ [ '<STR_LIT:b>' ] == <NUM_LIT:1> <EOL> assert set_ [ '<STR_LIT:c>' ] == <NUM_LIT:1> <EOL> with raises ( KeyError ) : <EOL> set_ [ '<STR_LIT:d>' ] <EOL> with raises ( TypeError ) : <EOL> set_ [ <NUM_LIT> ] <EOL> set_ . update ( a = <NUM_LIT> , c = - <NUM_LIT:2> ) <EOL> assert set_ [ '<STR_LIT:a>' ] == <NUM_LIT> <EOL> assert set_ [ '<STR_LIT:b>' ] == <NUM_LIT:1> <EOL> assert set_ [ '<STR_LIT:c>' ] == - <NUM_LIT:1> <EOL> setx = session . set ( key ( '<STR_LIT>' ) , S ( [ <NUM_LIT:1> , <NUM_LIT:2> , <NUM_LIT:3> ] ) , IntSet ) <EOL> assert setx [ <NUM_LIT:1> ] == <NUM_LIT:1> <EOL> assert setx [ <NUM_LIT:2> ] == <NUM_LIT:1> <EOL> assert setx [ <NUM_LIT:3> ] == <NUM_LIT:1> <EOL> with raises ( KeyError ) : <EOL> setx [ <NUM_LIT:4> ] <EOL> with raises ( TypeError ) : <EOL> setx [ '<STR_LIT:a>' ] <EOL> setx . update ( { <NUM_LIT:1> : <NUM_LIT> , <NUM_LIT:3> : - <NUM_LIT:2> } ) <EOL> assert setx [ <NUM_LIT:1> ] == <NUM_LIT> <EOL> assert setx [ <NUM_LIT:2> ] == <NUM_LIT:1> <EOL> assert setx [ <NUM_LIT:3> ] == - <NUM_LIT:1> <EOL> def test_setitem ( session ) : <EOL> set_ = session . set ( key ( '<STR_LIT>' ) , S ( '<STR_LIT:abc>' ) , SortedSet ) <EOL> set_ [ '<STR_LIT:d>' ] = <NUM_LIT:1> <EOL> set_ [ '<STR_LIT:a>' ] = <NUM_LIT> <EOL> assert dict ( set_ ) == { '<STR_LIT:a>' : <NUM_LIT> , '<STR_LIT:b>' : <NUM_LIT:1> , '<STR_LIT:c>' : <NUM_LIT:1> , '<STR_LIT:d>' : <NUM_LIT:1> } <EOL> with raises ( TypeError ) : <EOL> set_ [ <NUM_LIT> ] = <NUM_LIT> <EOL> with raises ( TypeError ) : <EOL> set_ [ '<STR_LIT:a>' ] = '<STR_LIT:a>' <EOL> setx = session . set ( key ( '<STR_LIT>' ) , S ( [ <NUM_LIT:1> , <NUM_LIT:2> , <NUM_LIT:3> ] ) , IntSet ) <EOL> setx [ <NUM_LIT:4> ] = <NUM_LIT:1> <EOL> setx [ <NUM_LIT:1> ] = <NUM_LIT> <EOL> assert dict ( setx ) == { <NUM_LIT:1> : <NUM_LIT> , <NUM_LIT:2> : <NUM_LIT:1> , <NUM_LIT:3> : <NUM_LIT:1> , <NUM_LIT:4> : <NUM_LIT:1> } <EOL> with raises ( TypeError ) : <EOL> setx [ '<STR_LIT:a>' ] = <NUM_LIT> <EOL> with raises ( TypeError ) : <EOL> setx [ <NUM_LIT> ] = '<STR_LIT:a>' <EOL> def test_delitem ( session ) : <EOL> set_ = session . set ( key ( '<STR_LIT>' ) , S ( '<STR_LIT:abc>' ) , SortedSet ) <EOL> del set_ [ '<STR_LIT:b>' ] <EOL> assert S ( set_ ) == S ( '<STR_LIT>' ) <EOL> with raises ( KeyError ) : <EOL> del set_ [ '<STR_LIT:d>' ] <EOL> with raises ( TypeError ) : <EOL> del set_ [ <NUM_LIT> ] <EOL> setx = session . set ( key ( '<STR_LIT>' ) , S ( [ <NUM_LIT:1> , <NUM_LIT:2> , <NUM_LIT:3> ] ) , IntSet ) <EOL> del setx [ <NUM_LIT:2> ] <EOL> assert S ( setx ) == S ( [ <NUM_LIT:1> , <NUM_LIT:3> ] ) <EOL> with raises ( KeyError ) : <EOL> del setx [ <NUM_LIT:4> ] <EOL> with raises ( TypeError ) : <EOL> del setx [ '<STR_LIT:a>' ] <EOL> def test_delitem_t ( session ) : <EOL> session2 = get_session ( ) <EOL> keyid = key ( '<STR_LIT>' ) <EOL> set_ = session . set ( keyid , S ( '<STR_LIT:abc>' ) , SortedSet ) <EOL> set2 = session2 . get ( keyid , SortedSet ) <EOL> with Transaction ( session , [ keyid ] ) : <EOL> card = len ( set_ ) <EOL> assert card == <NUM_LIT:3> <EOL> del set_ [ '<STR_LIT:b>' ] <EOL> assert S ( set2 ) == S ( '<STR_LIT:abc>' ) <EOL> with raises ( CommitError ) : <EOL> len ( set_ ) <EOL> assert S ( set_ ) == S ( set2 ) == S ( '<STR_LIT>' ) <EOL> with Transaction ( session , [ keyid ] ) : <EOL> with raises ( KeyError ) : <EOL> del set_ [ '<STR_LIT:d>' ] <EOL> with Transaction ( session , [ keyid ] ) : <EOL> with raises ( TypeError ) : <EOL> del set_ [ <NUM_LIT> ] <EOL> keyid2 = key ( '<STR_LIT>' ) <EOL> setx = session . set ( keyid2 , S ( [ <NUM_LIT:1> , <NUM_LIT:2> , <NUM_LIT:3> ] ) , IntSet ) <EOL> sety = session2 . get ( keyid2 , IntSet ) <EOL> with Transaction ( session , [ keyid ] ) : <EOL> card = len ( setx ) <EOL> assert card == <NUM_LIT:3> <EOL> del setx [ <NUM_LIT:2> ] <EOL> assert S ( sety ) == S ( [ <NUM_LIT:1> , <NUM_LIT:2> , <NUM_LIT:3> ] ) <EOL> with raises ( CommitError ) : <EOL> len ( setx ) <EOL> assert S ( setx ) == S ( sety ) == S ( [ <NUM_LIT:1> , <NUM_LIT:3> ] ) <EOL> with Transaction ( session , [ keyid ] ) : <EOL> with raises ( KeyError ) : <EOL> del setx [ <NUM_LIT:4> ] <EOL> with Transaction ( session , [ keyid ] ) : <EOL> with raises ( TypeError ) : <EOL> del setx [ '<STR_LIT:a>' ] <EOL> def test_keys ( session ) : <EOL> set_ = session . set ( key ( '<STR_LIT>' ) , <EOL> { '<STR_LIT:a>' : <NUM_LIT:3> , '<STR_LIT:b>' : <NUM_LIT:1> , '<STR_LIT:c>' : <NUM_LIT:2> } , <EOL> SortedSet ) <EOL> assert list ( set_ . keys ( ) ) == [ '<STR_LIT:b>' , '<STR_LIT:c>' , '<STR_LIT:a>' ] <EOL> assert list ( set_ . keys ( reverse = True ) ) == [ '<STR_LIT:a>' , '<STR_LIT:c>' , '<STR_LIT:b>' ] <EOL> setx = session . set ( key ( '<STR_LIT>' ) , { <NUM_LIT:1> : <NUM_LIT:3> , <NUM_LIT:2> : <NUM_LIT:1> , <NUM_LIT:3> : <NUM_LIT:2> } , IntSet ) <EOL> assert list ( setx . keys ( reverse = True ) ) == [ <NUM_LIT:1> , <NUM_LIT:3> , <NUM_LIT:2> ] <EOL> def test_items ( session ) : <EOL> set_ = session . set ( key ( '<STR_LIT>' ) , <EOL> { '<STR_LIT:a>' : <NUM_LIT:1> , '<STR_LIT:b>' : <NUM_LIT:2> , '<STR_LIT:c>' : <NUM_LIT:3> } , <EOL> SortedSet ) <EOL> assert set_ . items ( ) == [ ( '<STR_LIT:a>' , <NUM_LIT:1> ) , ( '<STR_LIT:b>' , <NUM_LIT:2> ) , ( '<STR_LIT:c>' , <NUM_LIT:3> ) ] <EOL> assert set_ . items ( reverse = True ) == [ ( '<STR_LIT:c>' , <NUM_LIT:3> ) , ( '<STR_LIT:b>' , <NUM_LIT:2> ) , ( '<STR_LIT:a>' , <NUM_LIT:1> ) ] <EOL> setx = session . set ( key ( '<STR_LIT>' ) , <EOL> { <NUM_LIT:1> : <NUM_LIT:1> , <NUM_LIT:2> : <NUM_LIT:2> , <NUM_LIT:3> : <NUM_LIT:3> } , <EOL> IntSet ) <EOL> assert setx . items ( ) == [ ( <NUM_LIT:1> , <NUM_LIT:1> ) , ( <NUM_LIT:2> , <NUM_LIT:2> ) , ( <NUM_LIT:3> , <NUM_LIT:3> ) ] <EOL> assert setx . items ( reverse = True ) == [ ( <NUM_LIT:3> , <NUM_LIT:3> ) , ( <NUM_LIT:2> , <NUM_LIT:2> ) , ( <NUM_LIT:1> , <NUM_LIT:1> ) ] <EOL> def test_values ( session ) : <EOL> set_ = session . set ( key ( '<STR_LIT>' ) , <EOL> { '<STR_LIT:a>' : <NUM_LIT:3> , '<STR_LIT:b>' : <NUM_LIT:1> , '<STR_LIT:c>' : <NUM_LIT:2> , '<STR_LIT:d>' : <NUM_LIT:1> } , <EOL> SortedSet ) <EOL> assert set_ . values ( ) == [ <NUM_LIT:1> , <NUM_LIT:1> , <NUM_LIT:2> , <NUM_LIT:3> ] <EOL> assert set_ . values ( reverse = True ) == [ <NUM_LIT:3> , <NUM_LIT:2> , <NUM_LIT:1> , <NUM_LIT:1> ] <EOL> setx = session . set ( key ( '<STR_LIT>' ) , <EOL> { <NUM_LIT:1> : <NUM_LIT:3> , <NUM_LIT:2> : <NUM_LIT:1> , <NUM_LIT:3> : <NUM_LIT:2> , <NUM_LIT:4> : <NUM_LIT:1> } , <EOL> IntSet ) <EOL> assert setx . values ( ) == [ <NUM_LIT:1> , <NUM_LIT:1> , <NUM_LIT:2> , <NUM_LIT:3> ] <EOL> assert setx . values ( reverse = True ) == [ <NUM_LIT:3> , <NUM_LIT:2> , <NUM_LIT:1> , <NUM_LIT:1> ] <EOL> def test_most_common ( session ) : <EOL> set_ = session . set ( key ( '<STR_LIT>' ) , <EOL> { '<STR_LIT:a>' : <NUM_LIT:5> , '<STR_LIT:s>' : <NUM_LIT:4> , '<STR_LIT:d>' : <NUM_LIT:3> , '<STR_LIT:f>' : <NUM_LIT:2> , '<STR_LIT:g>' : <NUM_LIT:1> } , <EOL> SortedSet ) <EOL> assert set_ . most_common ( <NUM_LIT:3> ) == [ ( '<STR_LIT:a>' , <NUM_LIT:5> ) , ( '<STR_LIT:s>' , <NUM_LIT:4> ) , ( '<STR_LIT:d>' , <NUM_LIT:3> ) ] <EOL> assert set_ . most_common ( ) == [ ( '<STR_LIT:a>' , <NUM_LIT:5> ) , ( '<STR_LIT:s>' , <NUM_LIT:4> ) , ( '<STR_LIT:d>' , <NUM_LIT:3> ) , ( '<STR_LIT:f>' , <NUM_LIT:2> ) , ( '<STR_LIT:g>' , <NUM_LIT:1> ) ] <EOL> assert set_ . most_common ( <NUM_LIT:3> , reverse = True ) == [ ( '<STR_LIT:g>' , <NUM_LIT:1> ) , ( '<STR_LIT:f>' , <NUM_LIT:2> ) , ( '<STR_LIT:d>' , <NUM_LIT:3> ) ] <EOL> assert ( set_ . most_common ( reverse = True ) == <EOL> [ ( '<STR_LIT:g>' , <NUM_LIT:1> ) , ( '<STR_LIT:f>' , <NUM_LIT:2> ) , ( '<STR_LIT:d>' , <NUM_LIT:3> ) , ( '<STR_LIT:s>' , <NUM_LIT:4> ) , ( '<STR_LIT:a>' , <NUM_LIT:5> ) ] ) <EOL> setx = session . set ( key ( '<STR_LIT>' ) , <EOL> { <NUM_LIT:7> : <NUM_LIT:5> , <NUM_LIT:3> : <NUM_LIT:4> , <NUM_LIT:9> : <NUM_LIT:3> , <NUM_LIT:2> : <NUM_LIT:2> , <NUM_LIT:6> : <NUM_LIT:1> } , <EOL> IntSet ) <EOL> assert setx . most_common ( <NUM_LIT:3> ) == [ ( <NUM_LIT:7> , <NUM_LIT:5> ) , ( <NUM_LIT:3> , <NUM_LIT:4> ) , ( <NUM_LIT:9> , <NUM_LIT:3> ) ] <EOL> assert setx . most_common ( ) == [ ( <NUM_LIT:7> , <NUM_LIT:5> ) , ( <NUM_LIT:3> , <NUM_LIT:4> ) , ( <NUM_LIT:9> , <NUM_LIT:3> ) , ( <NUM_LIT:2> , <NUM_LIT:2> ) , ( <NUM_LIT:6> , <NUM_LIT:1> ) ] <EOL> assert setx . most_common ( <NUM_LIT:3> , reverse = True ) == [ ( <NUM_LIT:6> , <NUM_LIT:1> ) , ( <NUM_LIT:2> , <NUM_LIT:2> ) , ( <NUM_LIT:9> , <NUM_LIT:3> ) ] <EOL> assert setx . most_common ( reverse = True ) == [ ( <NUM_LIT:6> , <NUM_LIT:1> ) , ( <NUM_LIT:2> , <NUM_LIT:2> ) , ( <NUM_LIT:9> , <NUM_LIT:3> ) , <EOL> ( <NUM_LIT:3> , <NUM_LIT:4> ) , ( <NUM_LIT:7> , <NUM_LIT:5> ) ] <EOL> def test_least_common ( session ) : <EOL> set_ = session . set ( key ( '<STR_LIT>' ) , <EOL> { '<STR_LIT:a>' : <NUM_LIT:5> , '<STR_LIT:s>' : <NUM_LIT:4> , '<STR_LIT:d>' : <NUM_LIT:3> , '<STR_LIT:f>' : <NUM_LIT:2> , '<STR_LIT:g>' : <NUM_LIT:1> } , <EOL> SortedSet ) <EOL> assert set_ . least_common ( <NUM_LIT:3> ) == [ ( '<STR_LIT:g>' , <NUM_LIT:1> ) , ( '<STR_LIT:f>' , <NUM_LIT:2> ) , ( '<STR_LIT:d>' , <NUM_LIT:3> ) ] <EOL> assert set_ . least_common ( ) == [ ( '<STR_LIT:g>' , <NUM_LIT:1> ) , ( '<STR_LIT:f>' , <NUM_LIT:2> ) , ( '<STR_LIT:d>' , <NUM_LIT:3> ) , ( '<STR_LIT:s>' , <NUM_LIT:4> ) , ( '<STR_LIT:a>' , <NUM_LIT:5> ) ] <EOL> assert set_ . least_common ( <NUM_LIT:3> , reverse = True ) == [ ( '<STR_LIT:a>' , <NUM_LIT:5> ) , ( '<STR_LIT:s>' , <NUM_LIT:4> ) , ( '<STR_LIT:d>' , <NUM_LIT:3> ) ] <EOL> assert ( set_ . least_common ( reverse = True ) == <EOL> [ ( '<STR_LIT:a>' , <NUM_LIT:5> ) , ( '<STR_LIT:s>' , <NUM_LIT:4> ) , ( '<STR_LIT:d>' , <NUM_LIT:3> ) , ( '<STR_LIT:f>' , <NUM_LIT:2> ) , ( '<STR_LIT:g>' , <NUM_LIT:1> ) ] ) <EOL> setx = session . set ( key ( '<STR_LIT>' ) , <EOL> { <NUM_LIT:7> : <NUM_LIT:5> , <NUM_LIT:3> : <NUM_LIT:4> , <NUM_LIT:9> : <NUM_LIT:3> , <NUM_LIT:2> : <NUM_LIT:2> , <NUM_LIT:6> : <NUM_LIT:1> } , <EOL> IntSet ) <EOL> assert setx . least_common ( <NUM_LIT:3> ) == [ ( <NUM_LIT:6> , <NUM_LIT:1> ) , ( <NUM_LIT:2> , <NUM_LIT:2> ) , ( <NUM_LIT:9> , <NUM_LIT:3> ) ] <EOL> assert setx . least_common ( ) == [ ( <NUM_LIT:6> , <NUM_LIT:1> ) , ( <NUM_LIT:2> , <NUM_LIT:2> ) , ( <NUM_LIT:9> , <NUM_LIT:3> ) , ( <NUM_LIT:3> , <NUM_LIT:4> ) , ( <NUM_LIT:7> , <NUM_LIT:5> ) ] <EOL> assert setx . least_common ( <NUM_LIT:3> , reverse = True ) == [ ( <NUM_LIT:7> , <NUM_LIT:5> ) , ( <NUM_LIT:3> , <NUM_LIT:4> ) , ( <NUM_LIT:9> , <NUM_LIT:3> ) ] <EOL> assert setx . least_common ( reverse = True ) == [ ( <NUM_LIT:7> , <NUM_LIT:5> ) , ( <NUM_LIT:3> , <NUM_LIT:4> ) , ( <NUM_LIT:9> , <NUM_LIT:3> ) , <EOL> ( <NUM_LIT:2> , <NUM_LIT:2> ) , ( <NUM_LIT:6> , <NUM_LIT:1> ) ] <EOL> def test_equals ( session ) : <EOL> set_ = session . set ( key ( '<STR_LIT>' ) , S ( '<STR_LIT:abc>' ) , SortedSet ) <EOL> set2 = session . set ( key ( '<STR_LIT>' ) , S ( '<STR_LIT:abc>' ) , SortedSet ) <EOL> set3 = session . set ( key ( '<STR_LIT>' ) , S ( '<STR_LIT>' ) , SortedSet ) <EOL> set4 = session . set ( key ( '<STR_LIT>' ) , { '<STR_LIT:a>' : <NUM_LIT:1> , '<STR_LIT:b>' : <NUM_LIT:2> , '<STR_LIT:c>' : <NUM_LIT:1> } , <EOL> SortedSet ) <EOL> set5 = session . set ( key ( '<STR_LIT>' ) , S ( [ <NUM_LIT:1> , <NUM_LIT:2> , <NUM_LIT:3> ] ) , IntSet ) <EOL> emptyset = session . set ( key ( '<STR_LIT>' ) , S ( ) , SortedSet ) <EOL> emptyset2 = session . set ( key ( '<STR_LIT>' ) , S ( ) , IntSet ) <EOL> assert set_ == set ( '<STR_LIT:abc>' ) <EOL> assert set_ != set ( '<STR_LIT>' ) <EOL> assert set_ == { '<STR_LIT:a>' : <NUM_LIT:1> , '<STR_LIT:b>' : <NUM_LIT:1> , '<STR_LIT:c>' : <NUM_LIT:1> } <EOL> assert set_ != { '<STR_LIT:a>' : <NUM_LIT:1> , '<STR_LIT:b>' : <NUM_LIT:1> , '<STR_LIT:c>' : <NUM_LIT:1> , '<STR_LIT:d>' : <NUM_LIT:1> } <EOL> assert set_ != { '<STR_LIT:a>' : <NUM_LIT:1> , '<STR_LIT:b>' : <NUM_LIT:1> , '<STR_LIT:c>' : <NUM_LIT:2> } <EOL> assert set_ == S ( '<STR_LIT:abc>' ) <EOL> assert set_ != S ( '<STR_LIT>' ) <EOL> assert set_ == set2 and set2 == set_ <EOL> assert set_ != set3 and set3 != set_ <EOL> assert set_ != set4 and set4 != set_ <EOL> assert set_ != set5 and set5 != set_ <EOL> assert emptyset == emptyset2 and emptyset2 == emptyset <EOL> def test_add ( session ) : <EOL> set_ = session . set ( key ( '<STR_LIT>' ) , S ( '<STR_LIT:abc>' ) , SortedSet ) <EOL> set_ . add ( '<STR_LIT:d>' ) <EOL> assert dict ( set_ ) == { '<STR_LIT:a>' : <NUM_LIT:1> , '<STR_LIT:b>' : <NUM_LIT:1> , '<STR_LIT:c>' : <NUM_LIT:1> , '<STR_LIT:d>' : <NUM_LIT:1> } <EOL> set_ . add ( '<STR_LIT:e>' , score = <NUM_LIT> ) <EOL> assert dict ( set_ ) == { '<STR_LIT:a>' : <NUM_LIT:1> , '<STR_LIT:b>' : <NUM_LIT:1> , '<STR_LIT:c>' : <NUM_LIT:1> , '<STR_LIT:d>' : <NUM_LIT:1> , '<STR_LIT:e>' : <NUM_LIT> } <EOL> set_ . add ( '<STR_LIT:c>' ) <EOL> assert dict ( set_ ) == { '<STR_LIT:a>' : <NUM_LIT:1> , '<STR_LIT:b>' : <NUM_LIT:1> , '<STR_LIT:c>' : <NUM_LIT:2> , '<STR_LIT:d>' : <NUM_LIT:1> , '<STR_LIT:e>' : <NUM_LIT> } <EOL> set_ . add ( '<STR_LIT:c>' , score = <NUM_LIT> ) <EOL> assert dict ( set_ ) == { '<STR_LIT:a>' : <NUM_LIT:1> , '<STR_LIT:b>' : <NUM_LIT:1> , '<STR_LIT:c>' : <NUM_LIT> , '<STR_LIT:d>' : <NUM_LIT:1> , '<STR_LIT:e>' : <NUM_LIT> } <EOL> with raises ( TypeError ) : <EOL> set_ . add ( <NUM_LIT> ) <EOL> with raises ( TypeError ) : <EOL> set_ . add ( '<STR_LIT:a>' , score = '<STR_LIT>' ) <EOL> setx = session . set ( key ( '<STR_LIT>' ) , S ( [ <NUM_LIT:1> , <NUM_LIT:2> , <NUM_LIT:3> ] ) , IntSet ) <EOL> setx . add ( <NUM_LIT:4> ) <EOL> assert dict ( setx ) == { <NUM_LIT:1> : <NUM_LIT:1> , <NUM_LIT:2> : <NUM_LIT:1> , <NUM_LIT:3> : <NUM_LIT:1> , <NUM_LIT:4> : <NUM_LIT:1> } <EOL> setx . add ( <NUM_LIT:5> , score = <NUM_LIT> ) <EOL> assert dict ( setx ) == { <NUM_LIT:1> : <NUM_LIT:1> , <NUM_LIT:2> : <NUM_LIT:1> , <NUM_LIT:3> : <NUM_LIT:1> , <NUM_LIT:4> : <NUM_LIT:1> , <NUM_LIT:5> : <NUM_LIT> } <EOL> setx . add ( <NUM_LIT:3> ) <EOL> assert dict ( setx ) == { <NUM_LIT:1> : <NUM_LIT:1> , <NUM_LIT:2> : <NUM_LIT:1> , <NUM_LIT:3> : <NUM_LIT:2> , <NUM_LIT:4> : <NUM_LIT:1> , <NUM_LIT:5> : <NUM_LIT> } <EOL> setx . add ( <NUM_LIT:3> , score = <NUM_LIT> ) <EOL> assert dict ( setx ) == { <NUM_LIT:1> : <NUM_LIT:1> , <NUM_LIT:2> : <NUM_LIT:1> , <NUM_LIT:3> : <NUM_LIT> , <NUM_LIT:4> : <NUM_LIT:1> , <NUM_LIT:5> : <NUM_LIT> } <EOL> with raises ( TypeError ) : <EOL> setx . add ( '<STR_LIT:a>' ) <EOL> with raises ( TypeError ) : <EOL> setx . add ( <NUM_LIT:1> , score = '<STR_LIT>' ) <EOL> def test_discard ( session ) : <EOL> set_ = session . set ( key ( '<STR_LIT>' ) , S ( '<STR_LIT:abc>' ) , SortedSet ) <EOL> set_ . discard ( '<STR_LIT:a>' ) <EOL> assert dict ( set_ ) == { '<STR_LIT:b>' : <NUM_LIT:1> , '<STR_LIT:c>' : <NUM_LIT:1> } <EOL> set_ . discard ( '<STR_LIT:d>' ) <EOL> assert dict ( set_ ) == { '<STR_LIT:b>' : <NUM_LIT:1> , '<STR_LIT:c>' : <NUM_LIT:1> } <EOL> set_ . discard ( '<STR_LIT:b>' , score = <NUM_LIT:0.5> ) <EOL> assert dict ( set_ ) == { '<STR_LIT:b>' : <NUM_LIT:0.5> , '<STR_LIT:c>' : <NUM_LIT:1> } <EOL> set_ . discard ( '<STR_LIT:b>' , score = <NUM_LIT:0.5> , remove = - <NUM_LIT:1> ) <EOL> assert dict ( set_ ) == { '<STR_LIT:b>' : <NUM_LIT:0> , '<STR_LIT:c>' : <NUM_LIT:1> } <EOL> with raises ( TypeError ) : <EOL> set_ . discard ( <NUM_LIT> ) <EOL> with raises ( TypeError ) : <EOL> set_ . discard ( '<STR_LIT:a>' , score = '<STR_LIT>' ) <EOL> setx = session . set ( key ( '<STR_LIT>' ) , S ( [ <NUM_LIT:1> , <NUM_LIT:2> , <NUM_LIT:3> ] ) , IntSet ) <EOL> setx . discard ( <NUM_LIT:1> ) <EOL> assert dict ( setx ) == { <NUM_LIT:2> : <NUM_LIT:1> , <NUM_LIT:3> : <NUM_LIT:1> } <EOL> setx . discard ( <NUM_LIT:4> ) <EOL> assert dict ( setx ) == { <NUM_LIT:2> : <NUM_LIT:1> , <NUM_LIT:3> : <NUM_LIT:1> } <EOL> setx . discard ( <NUM_LIT:2> , score = <NUM_LIT:0.5> ) <EOL> assert dict ( setx ) == { <NUM_LIT:2> : <NUM_LIT:0.5> , <NUM_LIT:3> : <NUM_LIT:1> } <EOL> setx . discard ( <NUM_LIT:2> , score = <NUM_LIT:0.5> , remove = - <NUM_LIT:1> ) <EOL> assert dict ( setx ) == { <NUM_LIT:2> : <NUM_LIT:0> , <NUM_LIT:3> : <NUM_LIT:1> } <EOL> with raises ( TypeError ) : <EOL> setx . discard ( '<STR_LIT:a>' ) <EOL> with raises ( TypeError ) : <EOL> setx . discard ( <NUM_LIT:1> , score = '<STR_LIT>' ) <EOL> def test_discard_t ( session ) : <EOL> session2 = get_session ( ) <EOL> keyid = key ( '<STR_LIT>' ) <EOL> set_ = session . set ( keyid , S ( '<STR_LIT:abc>' ) , SortedSet ) <EOL> set2 = session2 . get ( keyid , SortedSet ) <EOL> with Transaction ( session , [ keyid ] ) : <EOL> len ( set_ ) <EOL> set_ . discard ( '<STR_LIT:a>' ) <EOL> assert dict ( set2 ) == { '<STR_LIT:a>' : <NUM_LIT:1> , '<STR_LIT:b>' : <NUM_LIT:1> , '<STR_LIT:c>' : <NUM_LIT:1> } <EOL> with raises ( CommitError ) : <EOL> len ( set_ ) <EOL> assert dict ( set_ ) == dict ( set2 ) == { '<STR_LIT:b>' : <NUM_LIT:1> , '<STR_LIT:c>' : <NUM_LIT:1> } <EOL> with Transaction ( session , [ keyid ] ) : <EOL> len ( set_ ) <EOL> set_ . discard ( '<STR_LIT:d>' ) <EOL> assert dict ( set2 ) == { '<STR_LIT:b>' : <NUM_LIT:1> , '<STR_LIT:c>' : <NUM_LIT:1> } <EOL> assert dict ( set_ ) == dict ( set2 ) == { '<STR_LIT:b>' : <NUM_LIT:1> , '<STR_LIT:c>' : <NUM_LIT:1> } <EOL> with Transaction ( session , [ keyid ] ) : <EOL> len ( set_ ) <EOL> set_ . discard ( '<STR_LIT:b>' , score = <NUM_LIT:0.5> ) <EOL> assert dict ( set2 ) == { '<STR_LIT:b>' : <NUM_LIT:1> , '<STR_LIT:c>' : <NUM_LIT:1> } <EOL> with raises ( CommitError ) : <EOL> len ( set_ ) <EOL> assert dict ( set_ ) == dict ( set2 ) == { '<STR_LIT:b>' : <NUM_LIT:0.5> , '<STR_LIT:c>' : <NUM_LIT:1> } <EOL> with Transaction ( session , [ keyid ] ) : <EOL> len ( set_ ) <EOL> set_ . discard ( '<STR_LIT:b>' , score = <NUM_LIT:0.5> , remove = - <NUM_LIT:1> ) <EOL> assert dict ( set2 ) == { '<STR_LIT:b>' : <NUM_LIT:0.5> , '<STR_LIT:c>' : <NUM_LIT:1> } <EOL> with raises ( CommitError ) : <EOL> len ( set_ ) <EOL> assert dict ( set_ ) == dict ( set2 ) == { '<STR_LIT:b>' : <NUM_LIT:0> , '<STR_LIT:c>' : <NUM_LIT:1> } <EOL> def test_setdefault ( session ) : <EOL> set_ = session . set ( key ( '<STR_LIT>' ) , <EOL> { '<STR_LIT:h>' : <NUM_LIT:1> , '<STR_LIT:o>' : <NUM_LIT:2> , '<STR_LIT:n>' : <NUM_LIT:3> , '<STR_LIT:g>' : <NUM_LIT:4> } , <EOL> SortedSet ) <EOL> assert <NUM_LIT:1> == set_ . setdefault ( '<STR_LIT:h>' ) <EOL> assert { '<STR_LIT:h>' : <NUM_LIT:1> , '<STR_LIT:o>' : <NUM_LIT:2> , '<STR_LIT:n>' : <NUM_LIT:3> , '<STR_LIT:g>' : <NUM_LIT:4> } == dict ( set_ ) <EOL> assert <NUM_LIT:1> == set_ . setdefault ( '<STR_LIT:h>' , <NUM_LIT> ) <EOL> assert { '<STR_LIT:h>' : <NUM_LIT:1> , '<STR_LIT:o>' : <NUM_LIT:2> , '<STR_LIT:n>' : <NUM_LIT:3> , '<STR_LIT:g>' : <NUM_LIT:4> } == dict ( set_ ) <EOL> assert <NUM_LIT:1> == set_ . setdefault ( '<STR_LIT:m>' ) <EOL> assert { '<STR_LIT:h>' : <NUM_LIT:1> , '<STR_LIT:o>' : <NUM_LIT:2> , '<STR_LIT:n>' : <NUM_LIT:3> , '<STR_LIT:g>' : <NUM_LIT:4> , '<STR_LIT:m>' : <NUM_LIT:1> } == dict ( set_ ) <EOL> assert <NUM_LIT> == set_ . setdefault ( '<STR_LIT:i>' , <NUM_LIT> ) <EOL> assert { '<STR_LIT:h>' : <NUM_LIT:1> , '<STR_LIT:o>' : <NUM_LIT:2> , '<STR_LIT:n>' : <NUM_LIT:3> , '<STR_LIT:g>' : <NUM_LIT:4> , '<STR_LIT:m>' : <NUM_LIT:1> , '<STR_LIT:i>' : <NUM_LIT> } == dict ( set_ ) <EOL> with raises ( TypeError ) : <EOL> set_ . setdefault ( '<STR_LIT:e>' , None ) <EOL> with raises ( TypeError ) : <EOL> set_ . setdefault ( '<STR_LIT:e>' , '<STR_LIT>' ) <EOL> setx = session . set ( key ( '<STR_LIT>' ) , <EOL> { <NUM_LIT:100> : <NUM_LIT:1> , <NUM_LIT:200> : <NUM_LIT:2> , <NUM_LIT> : <NUM_LIT:3> , <NUM_LIT> : <NUM_LIT:4> } , <EOL> IntSet ) <EOL> assert <NUM_LIT:1> == setx . setdefault ( <NUM_LIT:100> ) <EOL> assert { <NUM_LIT:100> : <NUM_LIT:1> , <NUM_LIT:200> : <NUM_LIT:2> , <NUM_LIT> : <NUM_LIT:3> , <NUM_LIT> : <NUM_LIT:4> } == dict ( setx ) <EOL> assert <NUM_LIT:1> == setx . setdefault ( <NUM_LIT:100> , <NUM_LIT> ) <EOL> assert { <NUM_LIT:100> : <NUM_LIT:1> , <NUM_LIT:200> : <NUM_LIT:2> , <NUM_LIT> : <NUM_LIT:3> , <NUM_LIT> : <NUM_LIT:4> } == dict ( setx ) <EOL> assert <NUM_LIT:1> == setx . setdefault ( <NUM_LIT> ) <EOL> assert { <NUM_LIT:100> : <NUM_LIT:1> , <NUM_LIT:200> : <NUM_LIT:2> , <NUM_LIT> : <NUM_LIT:3> , <NUM_LIT> : <NUM_LIT:4> , <NUM_LIT> : <NUM_LIT:1> } == dict ( setx ) <EOL> assert <NUM_LIT> == setx . setdefault ( <NUM_LIT> , <NUM_LIT> ) <EOL> assert { <NUM_LIT:100> : <NUM_LIT:1> , <NUM_LIT:200> : <NUM_LIT:2> , <NUM_LIT> : <NUM_LIT:3> , <NUM_LIT> : <NUM_LIT:4> , <NUM_LIT> : <NUM_LIT:1> , <NUM_LIT> : <NUM_LIT> } == dict ( setx ) <EOL> with raises ( TypeError ) : <EOL> setx . setdefault ( <NUM_LIT> , None ) <EOL> with raises ( TypeError ) : <EOL> setx . setdefault ( <NUM_LIT> , '<STR_LIT>' ) <EOL> def test_setdefault_t ( session ) : <EOL> session2 = get_session ( ) <EOL> keyid = key ( '<STR_LIT>' ) <EOL> set_ = session . set ( keyid , { '<STR_LIT:h>' : <NUM_LIT:1> , '<STR_LIT:o>' : <NUM_LIT:2> , '<STR_LIT:n>' : <NUM_LIT:3> , '<STR_LIT:g>' : <NUM_LIT:4> } , SortedSet ) <EOL> set2 = session2 . get ( keyid , SortedSet ) <EOL> with Transaction ( session , [ keyid ] ) : <EOL> len ( set_ ) <EOL> val = set_ . setdefault ( '<STR_LIT:h>' ) <EOL> assert <NUM_LIT:1> == val <EOL> assert { '<STR_LIT:h>' : <NUM_LIT:1> , '<STR_LIT:o>' : <NUM_LIT:2> , '<STR_LIT:n>' : <NUM_LIT:3> , '<STR_LIT:g>' : <NUM_LIT:4> } == dict ( set2 ) <EOL> assert { '<STR_LIT:h>' : <NUM_LIT:1> , '<STR_LIT:o>' : <NUM_LIT:2> , '<STR_LIT:n>' : <NUM_LIT:3> , '<STR_LIT:g>' : <NUM_LIT:4> } == dict ( set_ ) == dict ( set2 ) <EOL> with Transaction ( session , [ keyid ] ) : <EOL> len ( set_ ) <EOL> val = set_ . setdefault ( '<STR_LIT:h>' , <NUM_LIT> ) <EOL> assert <NUM_LIT:1> == val <EOL> assert { '<STR_LIT:h>' : <NUM_LIT:1> , '<STR_LIT:o>' : <NUM_LIT:2> , '<STR_LIT:n>' : <NUM_LIT:3> , '<STR_LIT:g>' : <NUM_LIT:4> } == dict ( set2 ) <EOL> assert { '<STR_LIT:h>' : <NUM_LIT:1> , '<STR_LIT:o>' : <NUM_LIT:2> , '<STR_LIT:n>' : <NUM_LIT:3> , '<STR_LIT:g>' : <NUM_LIT:4> } == dict ( set_ ) == dict ( set2 ) <EOL> with Transaction ( session , [ keyid ] ) : <EOL> len ( set_ ) <EOL> val = set_ . setdefault ( '<STR_LIT:m>' ) <EOL> assert <NUM_LIT:1> == val <EOL> assert { '<STR_LIT:h>' : <NUM_LIT:1> , '<STR_LIT:o>' : <NUM_LIT:2> , '<STR_LIT:n>' : <NUM_LIT:3> , '<STR_LIT:g>' : <NUM_LIT:4> } == dict ( set2 ) <EOL> with raises ( CommitError ) : <EOL> len ( set_ ) <EOL> assert { '<STR_LIT:h>' : <NUM_LIT:1> , '<STR_LIT:o>' : <NUM_LIT:2> , '<STR_LIT:n>' : <NUM_LIT:3> , '<STR_LIT:g>' : <NUM_LIT:4> , '<STR_LIT:m>' : <NUM_LIT:1> } == dict ( set_ ) == dict ( set2 ) <EOL> with Transaction ( session , [ keyid ] ) : <EOL> len ( set_ ) <EOL> val = set_ . setdefault ( '<STR_LIT:i>' , <NUM_LIT> ) <EOL> assert <NUM_LIT> == val <EOL> assert { '<STR_LIT:h>' : <NUM_LIT:1> , '<STR_LIT:o>' : <NUM_LIT:2> , '<STR_LIT:n>' : <NUM_LIT:3> , '<STR_LIT:g>' : <NUM_LIT:4> , '<STR_LIT:m>' : <NUM_LIT:1> } == dict ( set2 ) <EOL> with raises ( CommitError ) : <EOL> len ( set_ ) <EOL> assert ( { '<STR_LIT:h>' : <NUM_LIT:1> , '<STR_LIT:o>' : <NUM_LIT:2> , '<STR_LIT:n>' : <NUM_LIT:3> , '<STR_LIT:g>' : <NUM_LIT:4> , '<STR_LIT:m>' : <NUM_LIT:1> , '<STR_LIT:i>' : <NUM_LIT> } <EOL> == dict ( set_ ) == dict ( set2 ) ) <EOL> def test_pop_set ( session ) : <EOL> set_ = session . set ( key ( '<STR_LIT>' ) , <EOL> { '<STR_LIT:h>' : <NUM_LIT:1> , '<STR_LIT:o>' : <NUM_LIT:2> , '<STR_LIT:n>' : <NUM_LIT:3> , '<STR_LIT:g>' : <NUM_LIT> } , <EOL> SortedSet ) <EOL> popped = set_ . pop ( ) <EOL> assert popped == '<STR_LIT:h>' <EOL> assert dict ( set_ ) == { '<STR_LIT:o>' : <NUM_LIT:2> , '<STR_LIT:n>' : <NUM_LIT:3> , '<STR_LIT:g>' : <NUM_LIT> } <EOL> popped = set_ . pop ( desc = True ) <EOL> assert popped == '<STR_LIT:g>' <EOL> assert dict ( set_ ) == { '<STR_LIT:o>' : <NUM_LIT:2> , '<STR_LIT:n>' : <NUM_LIT:3> , '<STR_LIT:g>' : <NUM_LIT> } <EOL> popped = set_ . pop ( score = <NUM_LIT:0.5> ) <EOL> assert popped == '<STR_LIT:o>' <EOL> assert dict ( set_ ) == { '<STR_LIT:o>' : <NUM_LIT> , '<STR_LIT:n>' : <NUM_LIT:3> , '<STR_LIT:g>' : <NUM_LIT> } <EOL> popped = set_ . pop ( remove = <NUM_LIT:0.5> ) <EOL> assert popped == '<STR_LIT:o>' <EOL> assert dict ( set_ ) == { '<STR_LIT:n>' : <NUM_LIT:3> , '<STR_LIT:g>' : <NUM_LIT> } <EOL> popped = set_ . pop ( remove = None ) <EOL> assert popped == '<STR_LIT:n>' <EOL> assert dict ( set_ ) == { '<STR_LIT:g>' : <NUM_LIT> } <EOL> set_ . clear ( ) <EOL> with raises ( KeyError ) : <EOL> set_ . pop ( ) <EOL> setx = session . set ( key ( '<STR_LIT>' ) , <EOL> { <NUM_LIT:3> : <NUM_LIT:1> , <NUM_LIT:1> : <NUM_LIT:2> , <NUM_LIT:4> : <NUM_LIT:3> , <NUM_LIT:5> : <NUM_LIT> } , <EOL> IntSet ) <EOL> popped = setx . pop ( ) <EOL> assert popped == <NUM_LIT:3> <EOL> assert dict ( setx ) == { <NUM_LIT:1> : <NUM_LIT:2> , <NUM_LIT:4> : <NUM_LIT:3> , <NUM_LIT:5> : <NUM_LIT> } <EOL> popped = setx . pop ( desc = True ) <EOL> assert popped == <NUM_LIT:5> <EOL> assert dict ( setx ) == { <NUM_LIT:1> : <NUM_LIT:2> , <NUM_LIT:4> : <NUM_LIT:3> , <NUM_LIT:5> : <NUM_LIT> } <EOL> popped = setx . pop ( score = <NUM_LIT:0.5> ) <EOL> assert popped == <NUM_LIT:1> <EOL> assert dict ( setx ) == { <NUM_LIT:1> : <NUM_LIT> , <NUM_LIT:4> : <NUM_LIT:3> , <NUM_LIT:5> : <NUM_LIT> } <EOL> popped = setx . pop ( remove = <NUM_LIT:0.5> ) <EOL> assert popped == <NUM_LIT:1> <EOL> assert dict ( setx ) == { <NUM_LIT:4> : <NUM_LIT:3> , <NUM_LIT:5> : <NUM_LIT> } <EOL> popped = setx . pop ( remove = None ) <EOL> assert popped == <NUM_LIT:4> <EOL> assert dict ( setx ) == { <NUM_LIT:5> : <NUM_LIT> } <EOL> setx . clear ( ) <EOL> with raises ( KeyError ) : <EOL> setx . pop ( ) <EOL> def test_pop_set_t ( session ) : <EOL> session2 = get_session ( ) <EOL> keyid = key ( '<STR_LIT>' ) <EOL> set_ = session . set ( keyid , { '<STR_LIT:h>' : <NUM_LIT:1> , '<STR_LIT:o>' : <NUM_LIT:2> , '<STR_LIT:n>' : <NUM_LIT:3> , '<STR_LIT:g>' : <NUM_LIT> } , SortedSet ) <EOL> set2 = session2 . get ( keyid , SortedSet ) <EOL> with Transaction ( session , [ keyid ] ) : <EOL> len ( set_ ) <EOL> popped = set_ . pop ( ) <EOL> assert popped == '<STR_LIT:h>' <EOL> assert dict ( set2 ) == { '<STR_LIT:h>' : <NUM_LIT:1> , '<STR_LIT:o>' : <NUM_LIT:2> , '<STR_LIT:n>' : <NUM_LIT:3> , '<STR_LIT:g>' : <NUM_LIT> } <EOL> with raises ( CommitError ) : <EOL> len ( set_ ) <EOL> assert dict ( set_ ) == dict ( set2 ) == { '<STR_LIT:o>' : <NUM_LIT:2> , '<STR_LIT:n>' : <NUM_LIT:3> , '<STR_LIT:g>' : <NUM_LIT> } <EOL> with Transaction ( session , [ keyid ] ) : <EOL> len ( set_ ) <EOL> popped = set_ . pop ( desc = True ) <EOL> assert popped == '<STR_LIT:g>' <EOL> assert dict ( set2 ) == { '<STR_LIT:o>' : <NUM_LIT:2> , '<STR_LIT:n>' : <NUM_LIT:3> , '<STR_LIT:g>' : <NUM_LIT> } <EOL> with raises ( CommitError ) : <EOL> len ( set_ ) <EOL> assert dict ( set_ ) == dict ( set2 ) == { '<STR_LIT:o>' : <NUM_LIT:2> , '<STR_LIT:n>' : <NUM_LIT:3> , '<STR_LIT:g>' : <NUM_LIT> } <EOL> with Transaction ( session , [ keyid ] ) : <EOL> len ( set_ ) <EOL> popped = set_ . pop ( score = <NUM_LIT:0.5> ) <EOL> assert popped == '<STR_LIT:o>' <EOL> assert dict ( set2 ) == { '<STR_LIT:o>' : <NUM_LIT:2> , '<STR_LIT:n>' : <NUM_LIT:3> , '<STR_LIT:g>' : <NUM_LIT> } <EOL> assert dict ( set_ ) == dict ( set2 ) == { '<STR_LIT:o>' : <NUM_LIT> , '<STR_LIT:n>' : <NUM_LIT:3> , '<STR_LIT:g>' : <NUM_LIT> } <EOL> with Transaction ( session , [ keyid ] ) : <EOL> len ( set_ ) <EOL> popped = set_ . pop ( remove = <NUM_LIT:0.5> ) <EOL> assert popped == '<STR_LIT:o>' <EOL> assert dict ( set2 ) == { '<STR_LIT:o>' : <NUM_LIT> , '<STR_LIT:n>' : <NUM_LIT:3> , '<STR_LIT:g>' : <NUM_LIT> } <EOL> assert dict ( set_ ) == dict ( set2 ) == { '<STR_LIT:n>' : <NUM_LIT:3> , '<STR_LIT:g>' : <NUM_LIT> } <EOL> with Transaction ( session , [ keyid ] ) : <EOL> len ( set_ ) <EOL> popped = set_ . pop ( remove = None ) <EOL> assert popped == '<STR_LIT:n>' <EOL> assert dict ( set2 ) == { '<STR_LIT:n>' : <NUM_LIT:3> , '<STR_LIT:g>' : <NUM_LIT> } <EOL> assert dict ( set_ ) == dict ( set2 ) == { '<STR_LIT:g>' : <NUM_LIT> } <EOL> set_ . clear ( ) <EOL> with Transaction ( session , [ keyid ] ) : <EOL> with raises ( KeyError ) : <EOL> set_ . pop ( ) <EOL> def test_pop_dict ( session ) : <EOL> set_ = session . set ( key ( '<STR_LIT>' ) , <EOL> { '<STR_LIT:h>' : <NUM_LIT:1> , '<STR_LIT:o>' : <NUM_LIT:1> , '<STR_LIT:n>' : <NUM_LIT:3> , '<STR_LIT:g>' : <NUM_LIT:4> } , <EOL> SortedSet ) <EOL> popped = set_ . pop ( '<STR_LIT:o>' ) <EOL> assert popped == <NUM_LIT:1> <EOL> assert dict ( set_ ) == { '<STR_LIT:h>' : <NUM_LIT:1> , '<STR_LIT:n>' : <NUM_LIT:3> , '<STR_LIT:g>' : <NUM_LIT:4> } <EOL> popped = set_ . pop ( '<STR_LIT:n>' , score = <NUM_LIT:0.5> ) <EOL> assert popped == <NUM_LIT:3> <EOL> assert dict ( set_ ) == { '<STR_LIT:h>' : <NUM_LIT:1> , '<STR_LIT:n>' : <NUM_LIT> , '<STR_LIT:g>' : <NUM_LIT:4> } <EOL> popped = set_ . pop ( '<STR_LIT:n>' , remove = <NUM_LIT> ) <EOL> assert popped == <NUM_LIT> <EOL> assert dict ( set_ ) == { '<STR_LIT:h>' : <NUM_LIT:1> , '<STR_LIT:g>' : <NUM_LIT:4> } <EOL> popped = set_ . pop ( '<STR_LIT:g>' , remove = None ) <EOL> assert popped == <NUM_LIT:4> <EOL> assert dict ( set_ ) == { '<STR_LIT:h>' : <NUM_LIT:1> } <EOL> popped = set_ . pop ( '<STR_LIT:n>' ) <EOL> assert popped is None <EOL> assert dict ( set_ ) == { '<STR_LIT:h>' : <NUM_LIT:1> } <EOL> popped = set_ . pop ( '<STR_LIT:n>' , default = '<STR_LIT>' ) <EOL> assert popped == '<STR_LIT>' <EOL> setx = session . set ( key ( '<STR_LIT>' ) , <EOL> { <NUM_LIT:3> : <NUM_LIT:1> , <NUM_LIT:1> : <NUM_LIT:1> , <NUM_LIT:4> : <NUM_LIT:3> , <NUM_LIT:5> : <NUM_LIT:4> } , <EOL> IntSet ) <EOL> popped = setx . pop ( <NUM_LIT:1> ) <EOL> assert popped == <NUM_LIT:1> <EOL> assert dict ( setx ) == { <NUM_LIT:3> : <NUM_LIT:1> , <NUM_LIT:4> : <NUM_LIT:3> , <NUM_LIT:5> : <NUM_LIT:4> } <EOL> popped = setx . pop ( <NUM_LIT:4> , score = <NUM_LIT:0.5> ) <EOL> assert popped == <NUM_LIT:3> <EOL> assert dict ( setx ) == { <NUM_LIT:3> : <NUM_LIT:1> , <NUM_LIT:4> : <NUM_LIT> , <NUM_LIT:5> : <NUM_LIT:4> } <EOL> popped = setx . pop ( <NUM_LIT:4> , remove = <NUM_LIT> ) <EOL> assert popped == <NUM_LIT> <EOL> assert dict ( setx ) == { <NUM_LIT:3> : <NUM_LIT:1> , <NUM_LIT:5> : <NUM_LIT:4> } <EOL> popped = setx . pop ( <NUM_LIT:5> , remove = None ) <EOL> assert popped == <NUM_LIT:4> <EOL> assert dict ( setx ) == { <NUM_LIT:3> : <NUM_LIT:1> } <EOL> popped = setx . pop ( <NUM_LIT:4> ) <EOL> assert popped is None <EOL> assert dict ( setx ) == { <NUM_LIT:3> : <NUM_LIT:1> } <EOL> popped = setx . pop ( <NUM_LIT:4> , default = '<STR_LIT>' ) <EOL> assert popped == '<STR_LIT>' <EOL> def test_pop_dict_t ( session ) : <EOL> session2 = get_session ( ) <EOL> keyid = key ( '<STR_LIT>' ) <EOL> set_ = session . set ( keyid , { '<STR_LIT:h>' : <NUM_LIT:1> , '<STR_LIT:o>' : <NUM_LIT:1> , '<STR_LIT:n>' : <NUM_LIT:3> , '<STR_LIT:g>' : <NUM_LIT:4> } , SortedSet ) <EOL> set2 = session2 . get ( keyid , SortedSet ) <EOL> with Transaction ( session , [ keyid ] ) : <EOL> len ( set_ ) <EOL> popped = set_ . pop ( '<STR_LIT:o>' ) <EOL> assert popped == <NUM_LIT:1> <EOL> assert dict ( set2 ) == { '<STR_LIT:h>' : <NUM_LIT:1> , '<STR_LIT:o>' : <NUM_LIT:1> , '<STR_LIT:n>' : <NUM_LIT:3> , '<STR_LIT:g>' : <NUM_LIT:4> } <EOL> with raises ( CommitError ) : <EOL> len ( set_ ) <EOL> assert dict ( set_ ) == dict ( set2 ) == { '<STR_LIT:h>' : <NUM_LIT:1> , '<STR_LIT:n>' : <NUM_LIT:3> , '<STR_LIT:g>' : <NUM_LIT:4> } <EOL> with Transaction ( session , [ keyid ] ) : <EOL> len ( set_ ) <EOL> popped = set_ . pop ( '<STR_LIT:n>' , score = <NUM_LIT:0.5> ) <EOL> assert popped == <NUM_LIT:3> <EOL> assert dict ( set2 ) == { '<STR_LIT:h>' : <NUM_LIT:1> , '<STR_LIT:n>' : <NUM_LIT:3> , '<STR_LIT:g>' : <NUM_LIT:4> } <EOL> with raises ( CommitError ) : <EOL> len ( set_ ) <EOL> assert dict ( set_ ) == dict ( set2 ) == { '<STR_LIT:h>' : <NUM_LIT:1> , '<STR_LIT:n>' : <NUM_LIT> , '<STR_LIT:g>' : <NUM_LIT:4> } <EOL> with Transaction ( session , [ keyid ] ) : <EOL> len ( set_ ) <EOL> popped = set_ . pop ( '<STR_LIT:n>' , remove = <NUM_LIT> ) <EOL> assert popped == <NUM_LIT> <EOL> assert dict ( set2 ) == { '<STR_LIT:h>' : <NUM_LIT:1> , '<STR_LIT:n>' : <NUM_LIT> , '<STR_LIT:g>' : <NUM_LIT:4> } <EOL> with raises ( CommitError ) : <EOL> len ( set_ ) <EOL> assert dict ( set_ ) == dict ( set2 ) == { '<STR_LIT:h>' : <NUM_LIT:1> , '<STR_LIT:g>' : <NUM_LIT:4> } <EOL> with Transaction ( session , [ keyid ] ) : <EOL> len ( set_ ) <EOL> popped = set_ . pop ( '<STR_LIT:g>' , remove = None ) <EOL> assert popped == <NUM_LIT:4> <EOL> assert dict ( set2 ) == { '<STR_LIT:h>' : <NUM_LIT:1> , '<STR_LIT:g>' : <NUM_LIT:4> } <EOL> with raises ( CommitError ) : <EOL> len ( set_ ) <EOL> assert dict ( set_ ) == dict ( set2 ) == { '<STR_LIT:h>' : <NUM_LIT:1> } <EOL> with Transaction ( session , [ keyid ] ) : <EOL> len ( set_ ) <EOL> popped = set_ . pop ( '<STR_LIT:n>' ) <EOL> assert popped is None <EOL> assert dict ( set2 ) == { '<STR_LIT:h>' : <NUM_LIT:1> } <EOL> assert dict ( set_ ) == dict ( set2 ) == { '<STR_LIT:h>' : <NUM_LIT:1> } <EOL> with Transaction ( session , [ keyid ] ) : <EOL> len ( set_ ) <EOL> popped = set_ . pop ( '<STR_LIT:n>' , default = '<STR_LIT>' ) <EOL> assert popped == '<STR_LIT>' <EOL> assert dict ( set2 ) == { '<STR_LIT:h>' : <NUM_LIT:1> } <EOL> assert dict ( set_ ) == dict ( set2 ) == { '<STR_LIT:h>' : <NUM_LIT:1> } <EOL> def test_popitem ( session ) : <EOL> set_ = session . set ( key ( '<STR_LIT>' ) , <EOL> { '<STR_LIT:h>' : <NUM_LIT:1> , '<STR_LIT:o>' : <NUM_LIT:2> , '<STR_LIT:n>' : <NUM_LIT:3> , '<STR_LIT:g>' : <NUM_LIT> } , <EOL> SortedSet ) <EOL> popped = set_ . popitem ( ) <EOL> assert popped == ( '<STR_LIT:h>' , <NUM_LIT:1> ) <EOL> assert dict ( set_ ) == { '<STR_LIT:o>' : <NUM_LIT:2> , '<STR_LIT:n>' : <NUM_LIT:3> , '<STR_LIT:g>' : <NUM_LIT> } <EOL> popped = set_ . popitem ( desc = True ) <EOL> assert popped == ( '<STR_LIT:g>' , <NUM_LIT> ) <EOL> assert dict ( set_ ) == { '<STR_LIT:o>' : <NUM_LIT:2> , '<STR_LIT:n>' : <NUM_LIT:3> , '<STR_LIT:g>' : <NUM_LIT> } <EOL> popped = set_ . popitem ( score = <NUM_LIT:0.5> ) <EOL> assert popped == ( '<STR_LIT:o>' , <NUM_LIT:2> ) <EOL> assert dict ( set_ ) == { '<STR_LIT:o>' : <NUM_LIT> , '<STR_LIT:n>' : <NUM_LIT:3> , '<STR_LIT:g>' : <NUM_LIT> } <EOL> popped = set_ . popitem ( remove = <NUM_LIT:0.5> ) <EOL> assert popped == ( '<STR_LIT:o>' , <NUM_LIT> ) <EOL> assert dict ( set_ ) == { '<STR_LIT:n>' : <NUM_LIT:3> , '<STR_LIT:g>' : <NUM_LIT> } <EOL> popped = set_ . popitem ( remove = None ) <EOL> assert popped == ( '<STR_LIT:n>' , <NUM_LIT:3> ) <EOL> assert dict ( set_ ) == { '<STR_LIT:g>' : <NUM_LIT> } <EOL> set_ . clear ( ) <EOL> with raises ( KeyError ) : <EOL> set_ . popitem ( ) <EOL> setx = session . set ( key ( '<STR_LIT>' ) , <EOL> { <NUM_LIT:3> : <NUM_LIT:1> , <NUM_LIT:1> : <NUM_LIT:2> , <NUM_LIT:4> : <NUM_LIT:3> , <NUM_LIT:5> : <NUM_LIT> } , <EOL> IntSet ) <EOL> popped = setx . popitem ( ) <EOL> assert popped == ( <NUM_LIT:3> , <NUM_LIT:1> ) <EOL> assert dict ( setx ) == { <NUM_LIT:1> : <NUM_LIT:2> , <NUM_LIT:4> : <NUM_LIT:3> , <NUM_LIT:5> : <NUM_LIT> } <EOL> popped = setx . popitem ( desc = True ) <EOL> assert popped == ( <NUM_LIT:5> , <NUM_LIT> ) <EOL> assert dict ( setx ) == { <NUM_LIT:1> : <NUM_LIT:2> , <NUM_LIT:4> : <NUM_LIT:3> , <NUM_LIT:5> : <NUM_LIT> } <EOL> popped = setx . popitem ( score = <NUM_LIT:0.5> ) <EOL> assert popped == ( <NUM_LIT:1> , <NUM_LIT:2> ) <EOL> assert dict ( setx ) == { <NUM_LIT:1> : <NUM_LIT> , <NUM_LIT:4> : <NUM_LIT:3> , <NUM_LIT:5> : <NUM_LIT> } <EOL> popped = setx . popitem ( remove = <NUM_LIT:0.5> ) <EOL> assert popped == ( <NUM_LIT:1> , <NUM_LIT> ) <EOL> assert dict ( setx ) == { <NUM_LIT:4> : <NUM_LIT:3> , <NUM_LIT:5> : <NUM_LIT> } <EOL> popped = setx . popitem ( remove = None ) <EOL> assert popped == ( <NUM_LIT:4> , <NUM_LIT:3> ) <EOL> assert dict ( setx ) == { <NUM_LIT:5> : <NUM_LIT> } <EOL> setx . clear ( ) <EOL> with raises ( KeyError ) : <EOL> setx . popitem ( ) <EOL> def test_popitem_t ( session ) : <EOL> session2 = get_session ( ) <EOL> keyid = key ( '<STR_LIT>' ) <EOL> set_ = session . set ( keyid , { '<STR_LIT:h>' : <NUM_LIT:1> , '<STR_LIT:o>' : <NUM_LIT:2> , '<STR_LIT:n>' : <NUM_LIT:3> , '<STR_LIT:g>' : <NUM_LIT> } , SortedSet ) <EOL> set2 = session2 . get ( keyid , SortedSet ) <EOL> with Transaction ( session , [ keyid ] ) : <EOL> len ( set_ ) <EOL> popped = set_ . popitem ( ) <EOL> assert popped == ( '<STR_LIT:h>' , <NUM_LIT:1> ) <EOL> assert dict ( set2 ) == { '<STR_LIT:h>' : <NUM_LIT:1> , '<STR_LIT:o>' : <NUM_LIT:2> , '<STR_LIT:n>' : <NUM_LIT:3> , '<STR_LIT:g>' : <NUM_LIT> } <EOL> with raises ( CommitError ) : <EOL> len ( set_ ) <EOL> assert dict ( set_ ) == dict ( set2 ) == { '<STR_LIT:o>' : <NUM_LIT:2> , '<STR_LIT:n>' : <NUM_LIT:3> , '<STR_LIT:g>' : <NUM_LIT> } <EOL> with Transaction ( session , [ keyid ] ) : <EOL> len ( set_ ) <EOL> popped = set_ . popitem ( desc = True ) <EOL> assert popped == ( '<STR_LIT:g>' , <NUM_LIT> ) <EOL> assert dict ( set2 ) == { '<STR_LIT:o>' : <NUM_LIT:2> , '<STR_LIT:n>' : <NUM_LIT:3> , '<STR_LIT:g>' : <NUM_LIT> } <EOL> with raises ( CommitError ) : <EOL> len ( set_ ) <EOL> assert dict ( set_ ) == dict ( set2 ) == { '<STR_LIT:o>' : <NUM_LIT:2> , '<STR_LIT:n>' : <NUM_LIT:3> , '<STR_LIT:g>' : <NUM_LIT> } <EOL> with Transaction ( session , [ keyid ] ) : <EOL> len ( set_ ) <EOL> popped = set_ . popitem ( score = <NUM_LIT:0.5> ) <EOL> assert popped == ( '<STR_LIT:o>' , <NUM_LIT:2> ) <EOL> assert dict ( set2 ) == { '<STR_LIT:o>' : <NUM_LIT:2> , '<STR_LIT:n>' : <NUM_LIT:3> , '<STR_LIT:g>' : <NUM_LIT> } <EOL> assert dict ( set_ ) == dict ( set2 ) == { '<STR_LIT:o>' : <NUM_LIT> , '<STR_LIT:n>' : <NUM_LIT:3> , '<STR_LIT:g>' : <NUM_LIT> } <EOL> with Transaction ( session , [ keyid ] ) : <EOL> len ( set_ ) <EOL> popped = set_ . popitem ( remove = <NUM_LIT:0.5> ) <EOL> assert popped == ( '<STR_LIT:o>' , <NUM_LIT> ) <EOL> assert dict ( set2 ) == { '<STR_LIT:o>' : <NUM_LIT> , '<STR_LIT:n>' : <NUM_LIT:3> , '<STR_LIT:g>' : <NUM_LIT> } <EOL> assert dict ( set_ ) == dict ( set2 ) == { '<STR_LIT:n>' : <NUM_LIT:3> , '<STR_LIT:g>' : <NUM_LIT> } <EOL> with Transaction ( session , [ keyid ] ) : <EOL> len ( set_ ) <EOL> popped = set_ . popitem ( remove = None ) <EOL> assert popped == ( '<STR_LIT:n>' , <NUM_LIT:3> ) <EOL> assert dict ( set2 ) == { '<STR_LIT:n>' : <NUM_LIT:3> , '<STR_LIT:g>' : <NUM_LIT> } <EOL> assert dict ( set_ ) == dict ( set2 ) == { '<STR_LIT:g>' : <NUM_LIT> } <EOL> set_ . clear ( ) <EOL> with Transaction ( session , [ keyid ] ) : <EOL> with raises ( KeyError ) : <EOL> set_ . popitem ( ) <EOL> def test_clear ( session ) : <EOL> set_ = session . set ( key ( '<STR_LIT>' ) , S ( '<STR_LIT:abc>' ) , SortedSet ) <EOL> set_ . clear ( ) <EOL> assert len ( set_ ) == <NUM_LIT:0> <EOL> setx = session . set ( key ( '<STR_LIT>' ) , S ( [ <NUM_LIT:1> , <NUM_LIT:2> , <NUM_LIT:3> ] ) , IntSet ) <EOL> setx . clear ( ) <EOL> assert len ( setx ) == <NUM_LIT:0> <EOL> def test_update ( session ) : <EOL> def reset ( ) : <EOL> return session . set ( key ( '<STR_LIT>' ) , S ( '<STR_LIT:abc>' ) , SortedSet ) <EOL> set_ = reset ( ) <EOL> set_ . update ( '<STR_LIT>' ) <EOL> assert dict ( set_ ) == { '<STR_LIT:a>' : <NUM_LIT:1> , '<STR_LIT:b>' : <NUM_LIT:1> , '<STR_LIT:c>' : <NUM_LIT:2> , '<STR_LIT:d>' : <NUM_LIT:1> , '<STR_LIT:e>' : <NUM_LIT:1> } <EOL> reset ( ) <EOL> set_ . update ( { '<STR_LIT:a>' : <NUM_LIT:1> , '<STR_LIT:b>' : <NUM_LIT:2> , '<STR_LIT:d>' : <NUM_LIT:1> , '<STR_LIT:e>' : <NUM_LIT> } ) <EOL> assert dict ( set_ ) == { '<STR_LIT:a>' : <NUM_LIT:2> , '<STR_LIT:b>' : <NUM_LIT:3> , '<STR_LIT:c>' : <NUM_LIT:1> , '<STR_LIT:d>' : <NUM_LIT:1> , '<STR_LIT:e>' : <NUM_LIT> } <EOL> reset ( ) <EOL> set_ . update ( a = <NUM_LIT:1> , b = <NUM_LIT:2> , d = <NUM_LIT:1> , e = <NUM_LIT> ) <EOL> assert dict ( set_ ) == { '<STR_LIT:a>' : <NUM_LIT:2> , '<STR_LIT:b>' : <NUM_LIT:3> , '<STR_LIT:c>' : <NUM_LIT:1> , '<STR_LIT:d>' : <NUM_LIT:1> , '<STR_LIT:e>' : <NUM_LIT> } <EOL> reset ( ) <EOL> set_ . update ( '<STR_LIT>' , { '<STR_LIT:b>' : <NUM_LIT:2> , '<STR_LIT:d>' : <NUM_LIT> } , c = <NUM_LIT> ) <EOL> assert dict ( set_ ) == { '<STR_LIT:a>' : <NUM_LIT:1> , '<STR_LIT:b>' : <NUM_LIT:3> , '<STR_LIT:c>' : <NUM_LIT> , '<STR_LIT:d>' : <NUM_LIT> , '<STR_LIT:e>' : <NUM_LIT:1> } <EOL> def reset2 ( ) : <EOL> return session . set ( key ( '<STR_LIT>' ) , S ( [ <NUM_LIT:1> , <NUM_LIT:2> , <NUM_LIT:3> ] ) , IntSet ) <EOL> setx = reset2 ( ) <EOL> setx . update ( [ <NUM_LIT:3> , <NUM_LIT:4> , <NUM_LIT:5> ] ) <EOL> assert dict ( setx ) == { <NUM_LIT:1> : <NUM_LIT:1> , <NUM_LIT:2> : <NUM_LIT:1> , <NUM_LIT:3> : <NUM_LIT:2> , <NUM_LIT:4> : <NUM_LIT:1> , <NUM_LIT:5> : <NUM_LIT:1> } <EOL> reset2 ( ) <EOL> setx . update ( { <NUM_LIT:1> : <NUM_LIT:1> , <NUM_LIT:2> : <NUM_LIT:2> , <NUM_LIT:4> : <NUM_LIT> , <NUM_LIT:5> : <NUM_LIT:1> } ) <EOL> assert dict ( setx ) == { <NUM_LIT:1> : <NUM_LIT:2> , <NUM_LIT:2> : <NUM_LIT:3> , <NUM_LIT:3> : <NUM_LIT:1> , <NUM_LIT:4> : <NUM_LIT> , <NUM_LIT:5> : <NUM_LIT:1> } <EOL> reset2 ( ) <EOL> setx . update ( [ <NUM_LIT:3> , <NUM_LIT:4> , <NUM_LIT:5> ] , { <NUM_LIT:2> : <NUM_LIT:2> , <NUM_LIT:4> : <NUM_LIT:5> , <NUM_LIT:3> : <NUM_LIT> } ) <EOL> assert dict ( setx ) == { <NUM_LIT:1> : <NUM_LIT:1> , <NUM_LIT:2> : <NUM_LIT:3> , <NUM_LIT:3> : <NUM_LIT> , <NUM_LIT:4> : <NUM_LIT:6> , <NUM_LIT:5> : <NUM_LIT:1> } <EOL> def test_massive_update ( session ) : <EOL> huge_data = dict ( ( chr ( a ) * i , ( a - ord ( '<STR_LIT:a>' ) + <NUM_LIT:1> ) * i ) <EOL> for a in range ( ord ( '<STR_LIT:a>' ) , ord ( '<STR_LIT:z>' ) + <NUM_LIT:1> ) <EOL> for i in range ( <NUM_LIT:1> , <NUM_LIT> ) ) <EOL> set_ = session . get ( key ( '<STR_LIT>' ) , SortedSet ) <EOL> set_ . update ( huge_data ) <EOL> assert dict ( set_ ) == huge_data <EOL> a_to_z = set ( '<STR_LIT>' ) <EOL> set_ . update ( a_to_z ) <EOL> for i in a_to_z : <EOL> huge_data [ i ] += <NUM_LIT:1> <EOL> assert dict ( set_ ) == huge_data <EOL> data = dict ( ( chr ( a ) , a ) for a in range ( ord ( '<STR_LIT:a>' ) , ord ( '<STR_LIT:z>' ) + <NUM_LIT:1> ) ) <EOL> setx = session . set ( key ( '<STR_LIT>' ) , data , SortedSet ) <EOL> set_ . update ( setx ) <EOL> for e , score in setx . items ( ) : <EOL> huge_data [ e ] += score <EOL> assert dict ( set_ ) == huge_data <EOL> def test_repr ( session ) : <EOL> keyid = key ( '<STR_LIT>' ) <EOL> set_ = session . set ( keyid , set ( [ <NUM_LIT:1> , <NUM_LIT:2> , <NUM_LIT:3> ] ) , IntSet ) <EOL> expected = '<STR_LIT>' + repr ( keyid ) + '<STR_LIT>' <EOL> assert expected == repr ( set_ ) <EOL> set_ . update ( { <NUM_LIT:1> : <NUM_LIT:1> } ) <EOL> expected = '<STR_LIT>' + repr ( keyid ) + '<STR_LIT>' <EOL> assert expected == repr ( set_ ) </s>
