diff --git a/misc/py-kartograph/files/patch-2to3 b/misc/py-kartograph/files/patch-2to3 new file mode 100644 index 0000000000000..ea79cd778eda7 --- /dev/null +++ b/misc/py-kartograph/files/patch-2to3 @@ -0,0 +1,379 @@ +--- kartograph/cli.py.orig 2014-03-27 03:57:55 UTC ++++ kartograph/cli.py +@@ -6,7 +6,7 @@ command line interface for kartograph + import argparse + import os + import os.path +-from options import read_map_config ++from .options import read_map_config + import sys + + +@@ -37,7 +37,7 @@ parser.add_argument('--format', '-f', metavar='svg', h + parser.add_argument('--preview', '-p', nargs='?', metavar='', const=True, help='opens the generated svg for preview') + parser.add_argument('--pretty-print', '-P', dest='pretty_print', action='store_true', help='pretty print the svg file') + +-from kartograph import Kartograph ++from .kartograph import Kartograph + import time + import os + +@@ -74,7 +74,7 @@ def render_map(args): + # print str(r) + pass + +- except Exception, e: ++ except Exception as e: + print_error(e) + exit(-1) + +@@ -98,17 +98,17 @@ def main(): + + try: + args = parser.parse_args() +- except IOError, e: ++ except IOError as e: + # parser.print_help() + sys.stderr.write('\n' + str(e) + '\n') +- except Exception, e: ++ except Exception as e: + parser.print_help() +- print '\nError:', e ++ print('\nError:', e) + else: + args.func(args) + elapsed = (time.time() - start) + if args.output != '-': +- print 'execution time: %.3f secs' % elapsed ++ print('execution time: %.3f secs' % elapsed) + + sys.exit(0) + +--- kartograph/kartograph.py.orig 2014-03-27 03:57:55 UTC ++++ kartograph/kartograph.py +@@ -1,11 +1,11 @@ + +-from options import parse_options ++from .options import parse_options + from shapely.geometry import Polygon, LineString, MultiPolygon +-from errors import * ++from .errors import * + from copy import deepcopy +-from renderer import SvgRenderer +-from mapstyle import MapStyle +-from map import Map ++from .renderer import SvgRenderer ++from .mapstyle import MapStyle ++from .map import Map + import os + + +@@ -64,14 +64,14 @@ class Kartograph(object): + command = commands[sys.platform] + else: + sys.stderr.write('don\'t know how to preview SVGs on your system. Try setting the KARTOGRAPH_PREVIEW environment variable.') +- print renderer ++ print(renderer) + return + renderer.preview(command) + # Write the map to a file or return the renderer instance. + if outfile is None: + return renderer + elif outfile == '-': +- print renderer ++ print(renderer) + else: + renderer.write(outfile) + else: +--- kartograph/layersource/postgislayer.py.orig 2014-03-27 03:57:55 UTC ++++ kartograph/layersource/postgislayer.py +@@ -1,5 +1,5 @@ + +-from layersource import LayerSource ++from .layersource import LayerSource + from kartograph.errors import * + from kartograph.geometry import create_feature + import shapely.wkb +@@ -72,11 +72,11 @@ class PostGISLayer(LayerSource): + if fields[f] != self.geom_col: + # but ignore null values + if rec[f]: +- if isinstance(rec[f], (str, unicode)): ++ if isinstance(rec[f], str): + try: + meta[fields[f]] = rec[f].decode('utf-8') + except: +- print 'decoding error', fields[f], rec[f] ++ print('decoding error', fields[f], rec[f]) + meta[fields[f]] = '--decoding error--' + else: + meta[fields[f]] = rec[f] +@@ -84,7 +84,7 @@ class PostGISLayer(LayerSource): + # Store geometry + geom_wkb = rec[f] + +- if filter is None or filter(meta): ++ if filter is None or list(filter(meta)): + # construct geometry + geom = shapely.wkb.loads(geom_wkb.decode('hex')) + # Finally we construct the map feature and append it to the +--- kartograph/layersource/shplayer.py.orig 2014-03-27 03:57:55 UTC ++++ kartograph/layersource/shplayer.py +@@ -1,11 +1,11 @@ + +-from layersource import LayerSource ++from .layersource import LayerSource + from kartograph.errors import * + from kartograph.geometry import BBox, create_feature + from os.path import exists + from osgeo.osr import SpatialReference + import pyproj +-import shapefile ++from . import shapefile + + + verbose = False +@@ -20,7 +20,7 @@ class ShapefileLayer(LayerSource): + """ + initialize shapefile reader + """ +- if isinstance(src, unicode): ++ if isinstance(src, str): + src = src.encode('ascii', 'ignore') + src = self.find_source(src) + self.shpSrc = src +@@ -93,7 +93,7 @@ class ShapefileLayer(LayerSource): + for j in range(len(self.attributes)): + drec[self.attributes[j]] = self.recs[i][j] + # For each record that is not filtered.. +- if filter is None or filter(drec): ++ if filter is None or list(filter(drec)): + props = {} + # ..we try to decode the attributes (shapefile charsets are arbitrary) + for j in range(len(self.attributes)): +@@ -107,10 +107,10 @@ class ShapefileLayer(LayerSource): + break + except: + if verbose: +- print 'warning: could not decode "%s" to %s' % (val, enc) ++ print('warning: could not decode "%s" to %s' % (val, enc)) + if not decoded: + raise KartographError('having problems to decode the input data "%s"' % val) +- if isinstance(val, (str, unicode)): ++ if isinstance(val, str): + val = val.strip() + props[self.attributes[j]] = val + +@@ -129,7 +129,7 @@ class ShapefileLayer(LayerSource): + feature = create_feature(geom, props) + res.append(feature) + if bbox is not None and ignored > 0 and verbose: +- print "-ignoring %d shapes (not in bounds %s )" % (ignored, bbox) ++ print("-ignoring %d shapes (not in bounds %s )" % (ignored, bbox)) + return res + + # # shape2geometry +--- kartograph/map.py.orig 2014-03-27 03:57:55 UTC ++++ kartograph/map.py +@@ -1,11 +1,11 @@ + from shapely.geometry import Polygon + from shapely.geometry.base import BaseGeometry +-from maplayer import MapLayer +-from geometry.utils import geom_to_bbox +-from geometry import BBox, View +-from proj import projections +-from filter import filter_record +-from errors import KartographError ++from .maplayer import MapLayer ++from .geometry.utils import geom_to_bbox ++from .geometry import BBox, View ++from .proj import projections ++from .filter import filter_record ++from .errors import KartographError + import sys + + # Map +@@ -154,7 +154,7 @@ class Map(object): + ### Initialize bounding polygons and bounding box + ### Compute the projected bounding box + """ +- from geometry.utils import bbox_to_polygon ++ from .geometry.utils import bbox_to_polygon + + opts = self.options + proj = self.proj +@@ -306,7 +306,7 @@ class Map(object): + """ + ### Simplify geometries + """ +- from simplify import create_point_store, simplify_lines ++ from .simplify import create_point_store, simplify_lines + + # We will use a glocal point cache for all layers. If the + # same point appears in more than one layer, it will be +@@ -421,7 +421,7 @@ class Map(object): + a single feature. Kartograph uses the geometry.union() method of shapely + to do that. + """ +- from geometry.utils import join_features ++ from .geometry.utils import join_features + + for layer in self.layers: + if layer.options['join'] is not False: +@@ -517,7 +517,7 @@ class Map(object): + for feat in groupFeatures[g_id]: + exp[g_id].append(feat.props[join['export-ids']]) + import json +- print json.dumps(exp) ++ print(json.dumps(exp)) + + layer.features = res + +--- kartograph/proj/__init__.py.orig 2014-03-27 03:57:55 UTC ++++ kartograph/proj/__init__.py +@@ -18,8 +18,8 @@ + + projections = dict() + +-from base import Proj +-from cylindrical import * ++from .base import Proj ++from .cylindrical import * + + projections['lonlat'] = Equirectangular + projections['cea'] = CEA +@@ -30,7 +30,7 @@ projections['balthasart'] = Balthasart + projections['mercator'] = Mercator + projections['ll'] = LonLat + +-from pseudocylindrical import * ++from .pseudocylindrical import * + + projections['naturalearth'] = NaturalEarth + projections['robinson'] = Robinson +@@ -47,7 +47,7 @@ projections['aitoff'] = Aitoff + projections['winkel3'] = Winkel3 + projections['nicolosi'] = Nicolosi + +-from azimuthal import * ++from .azimuthal import * + + projections['ortho'] = Orthographic + projections['laea'] = LAEA +@@ -58,11 +58,11 @@ projections['satellite'] = Satellite + projections['eda'] = EquidistantAzimuthal + projections['aitoff'] = Aitoff + +-from conic import * ++from .conic import * + + projections['lcc'] = LCC + +-from proj4 import Proj4 ++from .proj4 import Proj4 + + projections['proj4'] = Proj4 + +@@ -78,7 +78,7 @@ if __name__ == '__main__': + #assert (round(x,2),round(y,2)) == (3962799.45, -2999718.85), 'LAEA proj error' + from kartograph.geometry import BBox + +- print Proj.fromXML(Robinson(lat0=3, lon0=4).toXML(), projections) ++ print(Proj.fromXML(Robinson(lat0=3, lon0=4).toXML(), projections)) + + Robinson(lat0=3, lon0=4) + +@@ -87,10 +87,10 @@ if __name__ == '__main__': + bbox = BBox() + try: + proj = Proj(lon0=60) +- print proj.project(0, 0) +- print proj.world_bounds(bbox) +- print proj.toXML() ++ print(proj.project(0, 0)) ++ print(proj.world_bounds(bbox)) ++ print(proj.toXML()) + except: +- print 'Error', pj +- print sys.exc_info()[0] ++ print('Error', pj) ++ print(sys.exc_info()[0]) + raise +--- kartograph/proj/azimuthal/azimuthal.py.orig 2014-03-27 03:57:55 UTC ++++ kartograph/proj/azimuthal/azimuthal.py +@@ -62,7 +62,7 @@ class Azimuthal(Proj): + def sea_shape(self, llbbox=(-180, -90, 180, 90)): + out = [] + if llbbox == (-180, -90, 180, 90) or llbbox == [-180, -90, 180, 90]: +- print "-> full extend" ++ print("-> full extend") + for phi in range(0, 360): + x = self.r + math.cos(math.radians(phi)) * self.r + y = self.r + math.sin(math.radians(phi)) * self.r +--- kartograph/renderer/svg.py.orig 2014-03-27 03:57:55 UTC ++++ kartograph/renderer/svg.py +@@ -239,7 +239,7 @@ class SvgRenderer(MapRenderer): + + key = labelOpts['key'] + if not key: +- key = feature.props.keys()[0] ++ key = list(feature.props.keys())[0] + if key not in feature.props: + #sys.stderr.write('could not find feature property "%s" for labeling\n' % key) + return +@@ -411,7 +411,7 @@ class SvgDocument(object): + # Here we finally write the SVG file, and we're brave enough + # to try to write it in Unicode. + def write(self, outfile, pretty_print=False): +- if isinstance(outfile, (str, unicode)): ++ if isinstance(outfile, str): + outfile = open(outfile, 'w') + if pretty_print: + raw = self.doc.toprettyxml('utf-8') +@@ -420,7 +420,7 @@ class SvgDocument(object): + try: + raw = raw.encode('utf-8') + except: +- print 'warning: could not encode to unicode' ++ print('warning: could not encode to unicode') + + outfile.write(raw) + outfile.close() +@@ -431,7 +431,7 @@ class SvgDocument(object): + import tempfile + tmpfile = tempfile.NamedTemporaryFile(suffix='.svg', delete=False) + self.write(tmpfile, pretty_print) +- print 'map stored to', tmpfile.name ++ print('map stored to', tmpfile.name) + from subprocess import call + call([command, tmpfile.name]) + +--- kartograph/yaml_ordered_dict.py.orig 2014-03-27 03:57:55 UTC ++++ kartograph/yaml_ordered_dict.py +@@ -19,8 +19,8 @@ class OrderedDictYAMLLoader(yaml.Loader): + def __init__(self, *args, **kwargs): + yaml.Loader.__init__(self, *args, **kwargs) + +- self.add_constructor(u'tag:yaml.org,2002:map', type(self).construct_yaml_map) +- self.add_constructor(u'tag:yaml.org,2002:omap', type(self).construct_yaml_map) ++ self.add_constructor('tag:yaml.org,2002:map', type(self).construct_yaml_map) ++ self.add_constructor('tag:yaml.org,2002:omap', type(self).construct_yaml_map) + + def construct_yaml_map(self, node): + data = OrderedDict() +@@ -40,7 +40,7 @@ class OrderedDictYAMLLoader(yaml.Loader): + key = self.construct_object(key_node, deep=deep) + try: + hash(key) +- except TypeError, exc: ++ except TypeError as exc: + raise yaml.constructor.ConstructorError('while constructing a mapping', + node.start_mark, 'found unacceptable key (%s)' % exc, key_node.start_mark) + value = self.construct_object(value_node, deep=deep) +@@ -63,4 +63,4 @@ two: + + data = yaml.load(textwrap.dedent(sample), OrderedDictYAMLLoader) + assert type(data) is OrderedDict +- print data +\ No newline at end of file ++ print(data)