<s> from __future__ import absolute_import , print_function , division <EOL> from petl . compat import PY2 <EOL> from petl . test . helpers import ieq , eq_ <EOL> from petl . util . counting import valuecount , valuecounter , valuecounts , rowlengths , typecounts , parsecounts , stringpatterns , nrows <EOL> def test_nrows ( ) : <EOL> table = ( ( '<STR_LIT:foo>' , '<STR_LIT:bar>' ) , ( '<STR_LIT:a>' , <NUM_LIT:1> ) , ( '<STR_LIT:b>' , ) ) <EOL> actual = nrows ( table ) <EOL> expect = <NUM_LIT:2> <EOL> eq_ ( expect , actual ) <EOL> def test_valuecount ( ) : <EOL> table = ( ( '<STR_LIT:foo>' , '<STR_LIT:bar>' ) , ( '<STR_LIT:a>' , <NUM_LIT:1> ) , ( '<STR_LIT:b>' , <NUM_LIT:2> ) , ( '<STR_LIT:b>' , <NUM_LIT:7> ) ) <EOL> n , f = valuecount ( table , '<STR_LIT:foo>' , '<STR_LIT:b>' ) <EOL> eq_ ( <NUM_LIT:2> , n ) <EOL> eq_ ( <NUM_LIT> / <NUM_LIT:3> , f ) <EOL> def test_valuecounter ( ) : <EOL> table = ( ( '<STR_LIT:foo>' , '<STR_LIT:bar>' ) , ( '<STR_LIT:a>' , <NUM_LIT:1> ) , ( '<STR_LIT:b>' , <NUM_LIT:2> ) , ( '<STR_LIT:b>' , <NUM_LIT:7> ) ) <EOL> actual = valuecounter ( table , '<STR_LIT:foo>' ) <EOL> expect = { '<STR_LIT:b>' : <NUM_LIT:2> , '<STR_LIT:a>' : <NUM_LIT:1> } <EOL> eq_ ( expect , actual ) <EOL> def test_valuecounter_shortrows ( ) : <EOL> table = ( ( '<STR_LIT:foo>' , '<STR_LIT:bar>' ) , ( '<STR_LIT:a>' , <NUM_LIT:7> ) , ( '<STR_LIT:b>' , ) , ( '<STR_LIT:b>' , <NUM_LIT:7> ) ) <EOL> actual = valuecounter ( table , '<STR_LIT:foo>' ) <EOL> expect = { '<STR_LIT:b>' : <NUM_LIT:2> , '<STR_LIT:a>' : <NUM_LIT:1> } <EOL> eq_ ( expect , actual ) <EOL> actual = valuecounter ( table , '<STR_LIT:bar>' ) <EOL> expect = { <NUM_LIT:7> : <NUM_LIT:2> , None : <NUM_LIT:1> } <EOL> eq_ ( expect , actual ) <EOL> actual = valuecounter ( table , '<STR_LIT:foo>' , '<STR_LIT:bar>' ) <EOL> expect = { ( '<STR_LIT:a>' , <NUM_LIT:7> ) : <NUM_LIT:1> , ( '<STR_LIT:b>' , None ) : <NUM_LIT:1> , ( '<STR_LIT:b>' , <NUM_LIT:7> ) : <NUM_LIT:1> } <EOL> eq_ ( expect , actual ) <EOL> def test_valuecounts ( ) : <EOL> table = ( ( '<STR_LIT:foo>' , '<STR_LIT:bar>' ) , ( '<STR_LIT:a>' , <NUM_LIT:1> ) , ( '<STR_LIT:b>' , <NUM_LIT:2> ) , ( '<STR_LIT:b>' , <NUM_LIT:7> ) ) <EOL> actual = valuecounts ( table , '<STR_LIT:foo>' ) <EOL> expect = ( ( '<STR_LIT:foo>' , '<STR_LIT:count>' , '<STR_LIT>' ) , ( '<STR_LIT:b>' , <NUM_LIT:2> , <NUM_LIT> / <NUM_LIT:3> ) , ( '<STR_LIT:a>' , <NUM_LIT:1> , <NUM_LIT:1.> / <NUM_LIT:3> ) ) <EOL> ieq ( expect , actual ) <EOL> ieq ( expect , actual ) <EOL> def test_valuecounts_shortrows ( ) : <EOL> table = ( ( '<STR_LIT:foo>' , '<STR_LIT:bar>' ) , <EOL> ( '<STR_LIT:a>' , True ) , <EOL> ( '<STR_LIT:x>' , True ) , <EOL> ( '<STR_LIT:b>' , ) , <EOL> ( '<STR_LIT:b>' , True ) , <EOL> ( '<STR_LIT:c>' , False ) , <EOL> ( '<STR_LIT:z>' , False ) ) <EOL> actual = valuecounts ( table , '<STR_LIT:bar>' ) <EOL> expect = ( ( '<STR_LIT:bar>' , '<STR_LIT:count>' , '<STR_LIT>' ) , <EOL> ( True , <NUM_LIT:3> , <NUM_LIT> / <NUM_LIT:6> ) , <EOL> ( False , <NUM_LIT:2> , <NUM_LIT> / <NUM_LIT:6> ) , <EOL> ( None , <NUM_LIT:1> , <NUM_LIT:1.> / <NUM_LIT:6> ) ) <EOL> ieq ( expect , actual ) <EOL> ieq ( expect , actual ) <EOL> def test_valuecounts_multifields ( ) : <EOL> table = ( ( '<STR_LIT:foo>' , '<STR_LIT:bar>' , '<STR_LIT>' ) , <EOL> ( '<STR_LIT:a>' , True , <NUM_LIT> ) , <EOL> ( '<STR_LIT:a>' , True , <NUM_LIT> ) , <EOL> ( '<STR_LIT:b>' , False , <NUM_LIT> ) , <EOL> ( '<STR_LIT:b>' , False , <NUM_LIT> ) , <EOL> ( '<STR_LIT:b>' , ) , <EOL> ( '<STR_LIT:b>' , False , <NUM_LIT> ) ) <EOL> actual = valuecounts ( table , '<STR_LIT:foo>' , '<STR_LIT:bar>' ) <EOL> expect = ( ( '<STR_LIT:foo>' , '<STR_LIT:bar>' , '<STR_LIT:count>' , '<STR_LIT>' ) , <EOL> ( '<STR_LIT:b>' , False , <NUM_LIT:3> , <NUM_LIT> / <NUM_LIT:6> ) , <EOL> ( '<STR_LIT:a>' , True , <NUM_LIT:2> , <NUM_LIT> / <NUM_LIT:6> ) , <EOL> ( '<STR_LIT:b>' , None , <NUM_LIT:1> , <NUM_LIT:1.> / <NUM_LIT:6> ) ) <EOL> ieq ( expect , actual ) <EOL> ieq ( expect , actual ) <EOL> def test_rowlengths ( ) : <EOL> table = ( ( '<STR_LIT:foo>' , '<STR_LIT:bar>' , '<STR_LIT>' ) , <EOL> ( '<STR_LIT:A>' , <NUM_LIT:1> , <NUM_LIT:2> ) , <EOL> ( '<STR_LIT:B>' , '<STR_LIT:2>' , '<STR_LIT>' ) , <EOL> ( '<STR_LIT:B>' , '<STR_LIT:3>' , '<STR_LIT>' , True ) , <EOL> ( '<STR_LIT:D>' , '<STR_LIT>' , <NUM_LIT> ) , <EOL> ( '<STR_LIT:E>' , None ) , <EOL> ( '<STR_LIT:F>' , <NUM_LIT:9> ) ) <EOL> actual = rowlengths ( table ) <EOL> expect = ( ( '<STR_LIT>' , '<STR_LIT:count>' ) , ( <NUM_LIT:3> , <NUM_LIT:3> ) , ( <NUM_LIT:2> , <NUM_LIT:2> ) , ( <NUM_LIT:4> , <NUM_LIT:1> ) ) <EOL> ieq ( expect , actual ) <EOL> def test_typecounts ( ) : <EOL> table = ( ( '<STR_LIT:foo>' , '<STR_LIT:bar>' , '<STR_LIT>' ) , <EOL> ( b'<STR_LIT:A>' , <NUM_LIT:1> , <NUM_LIT> ) , <EOL> ( b'<STR_LIT:B>' , u'<STR_LIT:2>' , <NUM_LIT> ) , <EOL> ( u'<STR_LIT:B>' , u'<STR_LIT:3>' , <NUM_LIT> , True ) , <EOL> ( b'<STR_LIT:D>' , u'<STR_LIT>' , <NUM_LIT> ) , <EOL> ( b'<STR_LIT:E>' , <NUM_LIT> ) ) <EOL> actual = typecounts ( table , '<STR_LIT:foo>' ) <EOL> if PY2 : <EOL> expect = ( ( '<STR_LIT:type>' , '<STR_LIT:count>' , '<STR_LIT>' ) , <EOL> ( '<STR_LIT:str>' , <NUM_LIT:4> , <NUM_LIT> / <NUM_LIT:5> ) , <EOL> ( '<STR_LIT>' , <NUM_LIT:1> , <NUM_LIT:1.> / <NUM_LIT:5> ) ) <EOL> else : <EOL> expect = ( ( '<STR_LIT:type>' , '<STR_LIT:count>' , '<STR_LIT>' ) , <EOL> ( '<STR_LIT>' , <NUM_LIT:4> , <NUM_LIT> / <NUM_LIT:5> ) , <EOL> ( '<STR_LIT:str>' , <NUM_LIT:1> , <NUM_LIT:1.> / <NUM_LIT:5> ) ) <EOL> ieq ( expect , actual ) <EOL> actual = typecounts ( table , '<STR_LIT:bar>' ) <EOL> if PY2 : <EOL> expect = ( ( '<STR_LIT:type>' , '<STR_LIT:count>' , '<STR_LIT>' ) , <EOL> ( '<STR_LIT>' , <NUM_LIT:3> , <NUM_LIT> / <NUM_LIT:5> ) , <EOL> ( '<STR_LIT:int>' , <NUM_LIT:2> , <NUM_LIT> / <NUM_LIT:5> ) ) <EOL> else : <EOL> expect = ( ( '<STR_LIT:type>' , '<STR_LIT:count>' , '<STR_LIT>' ) , <EOL> ( '<STR_LIT:str>' , <NUM_LIT:3> , <NUM_LIT> / <NUM_LIT:5> ) , <EOL> ( '<STR_LIT:int>' , <NUM_LIT:2> , <NUM_LIT> / <NUM_LIT:5> ) ) <EOL> ieq ( expect , actual ) <EOL> actual = typecounts ( table , '<STR_LIT>' ) <EOL> expect = ( ( '<STR_LIT:type>' , '<STR_LIT:count>' , '<STR_LIT>' ) , <EOL> ( '<STR_LIT:float>' , <NUM_LIT:4> , <NUM_LIT> / <NUM_LIT:5> ) , <EOL> ( '<STR_LIT>' , <NUM_LIT:1> , <NUM_LIT:1.> / <NUM_LIT:5> ) ) <EOL> ieq ( expect , actual ) <EOL> def test_parsecounts ( ) : <EOL> table = ( ( '<STR_LIT:foo>' , '<STR_LIT:bar>' , '<STR_LIT>' ) , <EOL> ( '<STR_LIT:A>' , '<STR_LIT>' , <NUM_LIT:2> ) , <EOL> ( '<STR_LIT:B>' , '<STR_LIT:2>' , '<STR_LIT>' ) , <EOL> ( '<STR_LIT:B>' , '<STR_LIT:3>' , '<STR_LIT>' , True ) , <EOL> ( '<STR_LIT:D>' , '<STR_LIT>' , <NUM_LIT> ) , <EOL> ( '<STR_LIT:E>' , <NUM_LIT> ) ) <EOL> actual = parsecounts ( table , '<STR_LIT:bar>' ) <EOL> expect = ( ( '<STR_LIT:type>' , '<STR_LIT:count>' , '<STR_LIT>' ) , ( '<STR_LIT:float>' , <NUM_LIT:3> , <NUM_LIT:1> ) , ( '<STR_LIT:int>' , <NUM_LIT:2> , <NUM_LIT:2> ) ) <EOL> ieq ( expect , actual ) <EOL> def test_stringpatterns ( ) : <EOL> table = ( ( '<STR_LIT:foo>' , '<STR_LIT:bar>' ) , <EOL> ( '<STR_LIT>' , '<STR_LIT>' ) , <EOL> ( '<STR_LIT>' , '<STR_LIT>' ) , <EOL> ( '<STR_LIT>' , '<STR_LIT>' ) , <EOL> ( '<STR_LIT>' , '<STR_LIT>' ) , <EOL> ( '<STR_LIT>' , '<STR_LIT>' ) , <EOL> ( '<STR_LIT>' , '<STR_LIT>' ) ) <EOL> actual = stringpatterns ( table , '<STR_LIT:foo>' ) <EOL> expect = ( ( '<STR_LIT>' , '<STR_LIT:count>' , '<STR_LIT>' ) , <EOL> ( '<STR_LIT>' , <NUM_LIT:3> , <NUM_LIT> / <NUM_LIT:6> ) , <EOL> ( '<STR_LIT>' , <NUM_LIT:2> , <NUM_LIT> / <NUM_LIT:6> ) , <EOL> ( '<STR_LIT>' , <NUM_LIT:1> , <NUM_LIT:1.> / <NUM_LIT:6> ) ) <EOL> ieq ( expect , actual ) <EOL> actual = stringpatterns ( table , '<STR_LIT:bar>' ) <EOL> expect = ( ( '<STR_LIT>' , '<STR_LIT:count>' , '<STR_LIT>' ) , <EOL> ( '<STR_LIT>' , <NUM_LIT:3> , <NUM_LIT> / <NUM_LIT:6> ) , <EOL> ( '<STR_LIT>' , <NUM_LIT:2> , <NUM_LIT> / <NUM_LIT:6> ) , <EOL> ( '<STR_LIT>' , <NUM_LIT:1> , <NUM_LIT:1.> / <NUM_LIT:6> ) ) <EOL> ieq ( expect , actual ) </s>
