Py3 for zip_longest

This commit is contained in:
Mario de Frutos 2018-05-15 12:36:48 +02:00
parent a0535a6d02
commit 2e365b1eee

View File

@ -1,7 +1,7 @@
from nose.tools import assert_equal, assert_is_not_none
from nose_parameterized import parameterized
from itertools import izip_longest
from itertools import zip_longest
from util import query
from collections import OrderedDict
import json
@ -11,78 +11,78 @@ def grouper(iterable, n, fillvalue=None):
"Collect data into fixed-length chunks or blocks"
# grouper('ABCDEFG', 3, 'x') --> ABC DEF Gxx
args = [iter(iterable)] * n
return izip_longest(fillvalue=fillvalue, *args)
return zip_longest(fillvalue=fillvalue, *args)
USE_SCHEMA = True
SKIP_COLUMNS = set([
u'mx.inegi_columns.INDI18',
u'mx.inegi_columns.ECO40',
u'mx.inegi_columns.POB34',
u'mx.inegi_columns.POB63',
u'mx.inegi_columns.INDI7',
u'mx.inegi_columns.EDU28',
u'mx.inegi_columns.SCONY10',
u'mx.inegi_columns.EDU31',
u'mx.inegi_columns.POB7',
u'mx.inegi_columns.VIV30',
u'mx.inegi_columns.INDI12',
u'mx.inegi_columns.EDU13',
u'mx.inegi_columns.ECO43',
u'mx.inegi_columns.VIV9',
u'mx.inegi_columns.HOGAR25',
u'mx.inegi_columns.POB32',
u'mx.inegi_columns.ECO7',
u'mx.inegi_columns.INDI19',
u'mx.inegi_columns.INDI16',
u'mx.inegi_columns.POB65',
u'mx.inegi_columns.INDI3',
u'mx.inegi_columns.INDI9',
u'mx.inegi_columns.POB36',
u'mx.inegi_columns.POB33',
u'mx.inegi_columns.POB58',
u'mx.inegi_columns.DISC4',
u'mx.inegi_columns.VIV41',
u'mx.inegi_columns.VIV40',
u'mx.inegi_columns.VIV17',
u'mx.inegi_columns.VIV25',
u'mx.inegi_columns.EDU10',
u'whosonfirst.wof_disputed_name',
u'us.census.tiger.fullname',
u'whosonfirst.wof_marinearea_name',
u'us.census.tiger.mtfcc',
u'whosonfirst.wof_county_name',
u'whosonfirst.wof_region_name',
u'fr.insee.P12_RP_CHOS',
u'fr.insee.P12_RP_HABFOR',
u'fr.insee.P12_RP_EAUCH',
u'fr.insee.P12_RP_BDWC',
u'fr.insee.P12_RP_MIDUR',
u'fr.insee.P12_RP_CLIM',
u'fr.insee.P12_RP_MIBOIS',
u'fr.insee.P12_RP_CASE',
u'fr.insee.P12_RP_TTEGOU',
u'fr.insee.P12_RP_ELEC',
u'fr.insee.P12_ACTOCC15P_ILT45D',
u'fr.insee.P12_RP_CHOS',
u'fr.insee.P12_RP_HABFOR',
u'fr.insee.P12_RP_EAUCH',
u'fr.insee.P12_RP_BDWC',
u'fr.insee.P12_RP_MIDUR',
u'fr.insee.P12_RP_CLIM',
u'fr.insee.P12_RP_MIBOIS',
u'fr.insee.P12_RP_CASE',
u'fr.insee.P12_RP_TTEGOU',
u'fr.insee.P12_RP_ELEC',
u'fr.insee.P12_ACTOCC15P_ILT45D',
u'uk.ons.LC3202WA0007',
u'uk.ons.LC3202WA0010',
u'uk.ons.LC3202WA0004',
u'uk.ons.LC3204WA0004',
u'uk.ons.LC3204WA0007',
u'uk.ons.LC3204WA0010',
u'br.geo.subdistritos_name'
'mx.inegi_columns.INDI18',
'mx.inegi_columns.ECO40',
'mx.inegi_columns.POB34',
'mx.inegi_columns.POB63',
'mx.inegi_columns.INDI7',
'mx.inegi_columns.EDU28',
'mx.inegi_columns.SCONY10',
'mx.inegi_columns.EDU31',
'mx.inegi_columns.POB7',
'mx.inegi_columns.VIV30',
'mx.inegi_columns.INDI12',
'mx.inegi_columns.EDU13',
'mx.inegi_columns.ECO43',
'mx.inegi_columns.VIV9',
'mx.inegi_columns.HOGAR25',
'mx.inegi_columns.POB32',
'mx.inegi_columns.ECO7',
'mx.inegi_columns.INDI19',
'mx.inegi_columns.INDI16',
'mx.inegi_columns.POB65',
'mx.inegi_columns.INDI3',
'mx.inegi_columns.INDI9',
'mx.inegi_columns.POB36',
'mx.inegi_columns.POB33',
'mx.inegi_columns.POB58',
'mx.inegi_columns.DISC4',
'mx.inegi_columns.VIV41',
'mx.inegi_columns.VIV40',
'mx.inegi_columns.VIV17',
'mx.inegi_columns.VIV25',
'mx.inegi_columns.EDU10',
'whosonfirst.wof_disputed_name',
'us.census.tiger.fullname',
'whosonfirst.wof_marinearea_name',
'us.census.tiger.mtfcc',
'whosonfirst.wof_county_name',
'whosonfirst.wof_region_name',
'fr.insee.P12_RP_CHOS',
'fr.insee.P12_RP_HABFOR',
'fr.insee.P12_RP_EAUCH',
'fr.insee.P12_RP_BDWC',
'fr.insee.P12_RP_MIDUR',
'fr.insee.P12_RP_CLIM',
'fr.insee.P12_RP_MIBOIS',
'fr.insee.P12_RP_CASE',
'fr.insee.P12_RP_TTEGOU',
'fr.insee.P12_RP_ELEC',
'fr.insee.P12_ACTOCC15P_ILT45D',
'fr.insee.P12_RP_CHOS',
'fr.insee.P12_RP_HABFOR',
'fr.insee.P12_RP_EAUCH',
'fr.insee.P12_RP_BDWC',
'fr.insee.P12_RP_MIDUR',
'fr.insee.P12_RP_CLIM',
'fr.insee.P12_RP_MIBOIS',
'fr.insee.P12_RP_CASE',
'fr.insee.P12_RP_TTEGOU',
'fr.insee.P12_RP_ELEC',
'fr.insee.P12_ACTOCC15P_ILT45D',
'uk.ons.LC3202WA0007',
'uk.ons.LC3202WA0010',
'uk.ons.LC3202WA0004',
'uk.ons.LC3204WA0004',
'uk.ons.LC3204WA0007',
'uk.ons.LC3204WA0010',
'br.geo.subdistritos_name'
])
MEASURE_COLUMNS = query('''
@ -192,7 +192,7 @@ def grouped_measure_columns(filtered_columns):
else:
groupbypoint[point] = [numer_ids]
for point, numer_ids in groupbypoint.iteritems():
for point, numer_ids in groupbypoint.items():
for colgroup in grouper(numer_ids, 50):
yield point, [c for c in colgroup if c]
@ -215,7 +215,7 @@ def _test_measures(numer_ids, geom):
'normalization': 'predenominated'
})
params = query(u'''
params = query('''
SELECT {schema}OBS_GetMeta({geom}, '{in_params}')
'''.format(schema='cdb_observatory.' if USE_SCHEMA else '',
geom=geom,
@ -223,15 +223,15 @@ def _test_measures(numer_ids, geom):
# We can get duplicate IDs from multi-denominators, so for now we
# compress those measures into a single
params = OrderedDict([(p['id'], p) for p in params]).values()
params = list(OrderedDict([(p['id'], p) for p in params]).values())
assert_equal(len(params), len(in_params),
'Inconsistent out and in params for {}'.format(in_params))
q = u'''
q = '''
SELECT * FROM {schema}OBS_GetData(ARRAY[({geom}, 1)::geomval], '{params}')
'''.format(schema='cdb_observatory.' if USE_SCHEMA else '',
geom=geom,
params=json.dumps(params).replace(u"'", "''"))
params=json.dumps(params).replace("'", "''"))
resp = query(q).fetchone()
assert_is_not_none(resp, 'NULL returned for {}'.format(in_params))
rawvals = resp[1]