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