From 2497e41922fc25fe063a68bc0adfca3c1a2ad50c Mon Sep 17 00:00:00 2001 From: taca Date: Wed, 24 Apr 2019 23:07:47 +0200 Subject: [PATCH 1/9] Switch to argparse module for generate_style.py * optparse is deprecated --- generate_style.py | 21 ++++++++++----------- 1 file changed, 10 insertions(+), 11 deletions(-) diff --git a/generate_style.py b/generate_style.py index 77012f5..004f3c3 100755 --- a/generate_style.py +++ b/generate_style.py @@ -1318,7 +1318,7 @@ } import sys -from optparse import OptionParser +import argparse # these are the preconfigured styles that can be called when creating the final mapfile, @@ -1339,24 +1339,23 @@ } -parser = OptionParser() -parser.add_option("-l", "--level", dest="level", type="int", action="store", default=-1, +parser = argparse.ArgumentParser() +parser.add_argument("-l", "--level", dest="level", type=int, action="store", default=-1, help="generate file for level n") -parser.add_option("-g", "--global", dest="full", action="store_true", default=False, +parser.add_argument("-g", "--global", dest="full", action="store_true", default=False, help="generate global include file") -parser.add_option("-s", "--style", - action="store", dest="style", default="default", +parser.add_argument("-s", "--style", action="store", dest="style", default="default", help="comma separated list of styles to apply (order is important)") -(options, args) = parser.parse_args() +args = parser.parse_args() items = vars.items() -for namedstyle in style_aliases[options.style].split(','): +for namedstyle in style_aliases[args.style].split(','): items = items + styles[namedstyle].items() style = dict(items) -if options.full: +if args.full: print "###### level 0 ######" for k,v in style.iteritems(): if type(v) is dict: @@ -1377,8 +1376,8 @@ else: print "#define _%s%d %s"%(k,i,v) -if options.level != -1: - level = options.level +if args.level != -1: + level = args.level for k,v in style.iteritems(): print "#undef _%s"%(k) From bd657d1e0cdac583f9f10bada3bd86abd37be861 Mon Sep 17 00:00:00 2001 From: taca Date: Wed, 24 Apr 2019 23:23:29 +0200 Subject: [PATCH 2/9] Switch to new-style string formatting --- generate_style.py | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/generate_style.py b/generate_style.py index 004f3c3..09aa911 100755 --- a/generate_style.py +++ b/generate_style.py @@ -1359,27 +1359,27 @@ print "###### level 0 ######" for k,v in style.iteritems(): if type(v) is dict: - print "#define _%s0 %s"%(k,v[0]) + print "#define _{0}0 {1}".format(k, v[0]) else: - print "#define _%s0 %s"%(k,v) + print "#define _{0}0 {1}".format(k, v) for i in range(1,19): print - print "###### level %d ######"%(i) + print "###### level {0} ######".format(i) for k,v in style.iteritems(): if type(v) is dict: if not v.has_key(i): - print "#define _%s%d _%s%d"%(k,i,k,i-1) + print "#define _{0}{1} _{0}{2}".format(k, i, i-1) else: - print "#define _%s%d %s"%(k,i,v[i]) + print "#define _{0}{1} {2}".format(k, i, v[i]) else: - print "#define _%s%d %s"%(k,i,v) + print "#define _{0}{1} {2}".format(k, i, v) if args.level != -1: level = args.level for k,v in style.iteritems(): - print "#undef _%s"%(k) + print "#undef _{0}".format(k) for k,v in style.iteritems(): - print "#define _%s _%s%s"%(k,k,level) + print "#define _{0} _{0}{1}".format(k, level) From 452864ed8460de59446aeb3980179273fdda0298 Mon Sep 17 00:00:00 2001 From: taca Date: Thu, 25 Apr 2019 19:11:34 +0200 Subject: [PATCH 3/9] Update the main dictionary directly * use update() method rather than using a list copy intermediary * the main dictionary could be copied first but it isn't used for anything else --- generate_style.py | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/generate_style.py b/generate_style.py index 09aa911..1be84ba 100755 --- a/generate_style.py +++ b/generate_style.py @@ -1349,11 +1349,10 @@ args = parser.parse_args() -items = vars.items() for namedstyle in style_aliases[args.style].split(','): - items = items + styles[namedstyle].items() + vars.update(styles[namedstyle].items()) -style = dict(items) +style = vars if args.full: print "###### level 0 ######" From 86c6e19e9be989eb333a528aadd59e2e75c27ce7 Mon Sep 17 00:00:00 2001 From: taca Date: Thu, 25 Apr 2019 19:39:42 +0200 Subject: [PATCH 4/9] Switch from type() to isinstance() test --- generate_style.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/generate_style.py b/generate_style.py index 1be84ba..b903d71 100755 --- a/generate_style.py +++ b/generate_style.py @@ -1357,7 +1357,7 @@ if args.full: print "###### level 0 ######" for k,v in style.iteritems(): - if type(v) is dict: + if isinstance(v, dict): print "#define _{0}0 {1}".format(k, v[0]) else: print "#define _{0}0 {1}".format(k, v) @@ -1367,7 +1367,7 @@ print print "###### level {0} ######".format(i) for k,v in style.iteritems(): - if type(v) is dict: + if isinstance(v, dict): if not v.has_key(i): print "#define _{0}{1} _{0}{2}".format(k, i, i-1) else: From 36730b72447d5d4ba1d8709d02d3ecc2734c8839 Mon Sep 17 00:00:00 2001 From: taca Date: Thu, 25 Apr 2019 19:42:41 +0200 Subject: [PATCH 5/9] Replace the has_key() method --- generate_style.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/generate_style.py b/generate_style.py index b903d71..443e28b 100755 --- a/generate_style.py +++ b/generate_style.py @@ -1368,7 +1368,7 @@ print "###### level {0} ######".format(i) for k,v in style.iteritems(): if isinstance(v, dict): - if not v.has_key(i): + if not i in v: print "#define _{0}{1} _{0}{2}".format(k, i, i-1) else: print "#define _{0}{1} {2}".format(k, i, v[i]) From cf5e38fea3b8d1586501d38834a2ad2391869832 Mon Sep 17 00:00:00 2001 From: taca Date: Thu, 25 Apr 2019 19:46:25 +0200 Subject: [PATCH 6/9] Switch from iteritems() to items() method * supported by Python2 and 3 * not as efficient as an iterable but cursory `time -v` tests show no difference in usr/system time or maximum RSS: presumably the style dictionary would have to grow monumentally before we could see a difference --- generate_style.py | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/generate_style.py b/generate_style.py index 443e28b..65b12f3 100755 --- a/generate_style.py +++ b/generate_style.py @@ -1356,7 +1356,7 @@ if args.full: print "###### level 0 ######" - for k,v in style.iteritems(): + for k, v in style.items(): if isinstance(v, dict): print "#define _{0}0 {1}".format(k, v[0]) else: @@ -1366,7 +1366,7 @@ for i in range(1,19): print print "###### level {0} ######".format(i) - for k,v in style.iteritems(): + for k, v in style.items(): if isinstance(v, dict): if not i in v: print "#define _{0}{1} _{0}{2}".format(k, i, i-1) @@ -1377,8 +1377,8 @@ if args.level != -1: level = args.level - for k,v in style.iteritems(): + for k, v in style.items(): print "#undef _{0}".format(k) - for k,v in style.iteritems(): + for k, v in style.items(): print "#define _{0} _{0}{1}".format(k, level) From 2e837a66c92c023c1c8daa1ef9eba7e13f9badfd Mon Sep 17 00:00:00 2001 From: taca Date: Thu, 25 Apr 2019 19:56:25 +0200 Subject: [PATCH 7/9] Convert print() --- generate_style.py | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/generate_style.py b/generate_style.py index 65b12f3..4f65ac2 100755 --- a/generate_style.py +++ b/generate_style.py @@ -1355,30 +1355,30 @@ style = vars if args.full: - print "###### level 0 ######" + print("###### level 0 ######") for k, v in style.items(): if isinstance(v, dict): - print "#define _{0}0 {1}".format(k, v[0]) + print("#define _{0}0 {1}".format(k, v[0])) else: - print "#define _{0}0 {1}".format(k, v) + print("#define _{0}0 {1}".format(k, v)) for i in range(1,19): - print - print "###### level {0} ######".format(i) + print('') + print("###### level {0} ######".format(i)) for k, v in style.items(): if isinstance(v, dict): if not i in v: - print "#define _{0}{1} _{0}{2}".format(k, i, i-1) + print("#define _{0}{1} _{0}{2}".format(k, i, i-1)) else: - print "#define _{0}{1} {2}".format(k, i, v[i]) + print("#define _{0}{1} {2}".format(k, i, v[i])) else: - print "#define _{0}{1} {2}".format(k, i, v) + print("#define _{0}{1} {2}".format(k, i, v)) if args.level != -1: level = args.level for k, v in style.items(): - print "#undef _{0}".format(k) + print("#undef _{0}".format(k)) for k, v in style.items(): - print "#define _{0} _{0}{1}".format(k, level) + print("#define _{0} _{0}{1}".format(k, level)) From 9e9f2655df786766c4c694749360537d09fa1e12 Mon Sep 17 00:00:00 2001 From: taca Date: Thu, 25 Apr 2019 20:10:32 +0200 Subject: [PATCH 8/9] Rename main dictionary * `vars` is a Python builtin function: dict renamed to 'style' * 'styles' dictionary renamed to 'namedstyles' to avoid confusion --- generate_style.py | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/generate_style.py b/generate_style.py index 4f65ac2..27f287a 100755 --- a/generate_style.py +++ b/generate_style.py @@ -65,7 +65,7 @@ 18:0 } -vars= { +style = { 'layer_suffix':layer_suffixes, 'maxscale':maxscales, 'minscale':minscales, @@ -1020,7 +1020,7 @@ 'locality_clr': "200 200 200", } -styles = { +namedstyles = { 'default': {}, 'outlined':{ 'display_motorway_outline': { @@ -1350,9 +1350,7 @@ args = parser.parse_args() for namedstyle in style_aliases[args.style].split(','): - vars.update(styles[namedstyle].items()) - -style = vars + style.update(namedstyles[namedstyle].items()) if args.full: print("###### level 0 ######") @@ -1363,7 +1361,7 @@ print("#define _{0}0 {1}".format(k, v)) - for i in range(1,19): + for i in range(1, 19): print('') print("###### level {0} ######".format(i)) for k, v in style.items(): From 31c8a66d44bf0ada021bd8a5bb59b3bfc4fa2162 Mon Sep 17 00:00:00 2001 From: taca Date: Thu, 25 Apr 2019 20:23:18 +0200 Subject: [PATCH 9/9] Remove sys module import and move import to top --- generate_style.py | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/generate_style.py b/generate_style.py index 27f287a..1def0d4 100755 --- a/generate_style.py +++ b/generate_style.py @@ -1,5 +1,7 @@ #!/usr/bin/env python +import argparse + layer_suffixes = { 0:0, 1:1, @@ -1317,10 +1319,6 @@ } } -import sys -import argparse - - # these are the preconfigured styles that can be called when creating the final mapfile, # e.g. with `make STYLE=google`. This will create an osm-google.map mapfile style_aliases = {