diff --git a/boxtree/fmm.py b/boxtree/fmm.py index c80a6f25ee843c8b6703ab4c79f15fe24f9b03a0..97c86a7e158f53f6a6b0906c02e65d37dc0429c3 100644 --- a/boxtree/fmm.py +++ b/boxtree/fmm.py @@ -72,7 +72,7 @@ def drive_fmm(traversal, expansion_wrangler, src_weights): logger.debug("propagate multipoles upward") - for lev in xrange(tree.nlevels-1, -1, -1): + for lev in range(tree.nlevels-1, -1, -1): start_parent_box, end_parent_box = \ traversal.level_start_source_parent_box_nrs[lev:lev+2] wrangler.coarsen_multipoles( @@ -164,7 +164,7 @@ def drive_fmm(traversal, expansion_wrangler, src_weights): logger.debug("propagate local_exps downward") - for lev in xrange(1, tree.nlevels): + for lev in range(1, tree.nlevels): start_box, end_box = \ traversal.level_start_target_or_target_parent_box_nrs[lev:lev+2] wrangler.refine_locals( diff --git a/boxtree/traversal.py b/boxtree/traversal.py index e71e2c2a93f09baeef84831239993c63fdf11c34..c09e5d38ca86ec5366ac9e5b63d7ea0c40243b77 100644 --- a/boxtree/traversal.py +++ b/boxtree/traversal.py @@ -1287,7 +1287,7 @@ class FMMTraversalBuilder: # Postprocess result for unoccupied levels prev_start = len(box_list) - for ilev in xrange(tree.nlevels-1, -1, -1): + for ilev in range(tree.nlevels-1, -1, -1): result[ilev] = prev_start = \ min(result[ilev], prev_start) diff --git a/boxtree/tree_build.py b/boxtree/tree_build.py index 4237502e0403596e069f0abd0f387335121291b2..a0522a03007676804be0e1371fd2474793168d17 100644 --- a/boxtree/tree_build.py +++ b/boxtree/tree_build.py @@ -1,4 +1,7 @@ from __future__ import division +from __future__ import absolute_import +from six.moves import range +from six.moves import zip __copyright__ = "Copyright (C) 2012 Andreas Kloeckner" @@ -764,7 +767,7 @@ class TreeBuilder(object): else: sources = make_obj_array([ - empty(nsources, coord_dtype) for i in xrange(dimensions)]) + empty(nsources, coord_dtype) for i in range(dimensions)]) fin_debug("srcntgt permuter (sources)") evt = knl_info.srcntgt_permuter( user_source_ids, @@ -774,7 +777,7 @@ class TreeBuilder(object): wait_for = [evt] targets = make_obj_array([ - empty(ntargets, coord_dtype) for i in xrange(dimensions)]) + empty(ntargets, coord_dtype) for i in range(dimensions)]) fin_debug("srcntgt permuter (targets)") evt = knl_info.srcntgt_permuter( srcntgt_target_ids, diff --git a/boxtree/tree_build_kernels.py b/boxtree/tree_build_kernels.py index 614bcd1e6462e5685330f6aed41a94eb64081383..610de4003de027c686a677e50063e140056e5f8a 100644 --- a/boxtree/tree_build_kernels.py +++ b/boxtree/tree_build_kernels.py @@ -1,4 +1,7 @@ from __future__ import division +from __future__ import absolute_import +import six +from six.moves import range __copyright__ = "Copyright (C) 2013 Andreas Kloeckner" @@ -1357,7 +1360,7 @@ def get_tree_build_kernel_info(context, dimensions, coord_dtype, ("box_flags_t", box_flags_enum.dtype), ("box_level_t", box_level_dtype), ) - codegen_args_tuples = tuple(codegen_args.iteritems()) + codegen_args_tuples = tuple(six.iteritems(codegen_args)) box_info_kernel = BOX_INFO_KERNEL_TPL.build( context, type_aliases, diff --git a/boxtree/visualization.py b/boxtree/visualization.py index 907e34bfc8846beaebc7982bb7d3ddd43ab702be..ef946a9381421e9f627cfc1e1f7ac8ceedabc1c6 100644 --- a/boxtree/visualization.py +++ b/boxtree/visualization.py @@ -1,4 +1,7 @@ from __future__ import division +from __future__ import absolute_import +from six.moves import range +from six.moves import zip __copyright__ = "Copyright (C) 2012 Andreas Kloeckner" @@ -40,7 +43,7 @@ class TreePlotter: kwargs["fill"] = fill kwargs["edgecolor"] = edgecolor - for ibox in xrange(self.tree.nboxes): + for ibox in range(self.tree.nboxes): self.draw_box(ibox, **kwargs) def set_bounding_box(self): @@ -82,7 +85,7 @@ class TreePlotter: tree = self.tree - for ibox in xrange(tree.nboxes): + for ibox in range(tree.nboxes): x, y = tree.box_centers[:, ibox] lev = int(tree.box_levels[ibox]) pt.text(x, y, str(ibox), fontsize=20*1.15**(-lev), diff --git a/doc/conf.py b/doc/conf.py index 454c42ebb8a076ace3189a9d537ae107637c004a..0b35d0b83f79c1c912e60dee6634d774b2b7ba81 100644 --- a/doc/conf.py +++ b/doc/conf.py @@ -1,3 +1,4 @@ +from __future__ import absolute_import # -*- coding: utf-8 -*- # # boxtree documentation build configuration file. @@ -55,7 +56,7 @@ copyright = u'2013, Andreas Kloeckner' # # The short X.Y version. ver_dic = {} -execfile("../boxtree/version.py", ver_dic) +exec(compile(open("../boxtree/version.py").read(), "../boxtree/version.py", 'exec'), ver_dic) version = ".".join(str(x) for x in ver_dic["VERSION"]) # The full version, including alpha/beta/rc tags. release = ver_dic["VERSION_TEXT"] diff --git a/examples/demo.py b/examples/demo.py index 9a1c53f05b8032243775f31f2c9db0c3d853c1d0..2fc45fe5601722359b52017a111931f3ca557ac6 100644 --- a/examples/demo.py +++ b/examples/demo.py @@ -1,6 +1,8 @@ +from __future__ import absolute_import # STARTEXAMPLE import pyopencl as cl import numpy as np +from six.moves import range ctx = cl.create_some_context() queue = cl.CommandQueue(ctx) diff --git a/setup.py b/setup.py index 066f292405447bff5da0954bf6c15009025185d1..3d2c1f07620bb7e05bab79aebdf2c7f8c38055a9 100644 --- a/setup.py +++ b/setup.py @@ -5,12 +5,6 @@ def main(): from setuptools import setup - try: - from distutils.command.build_py import build_py_2to3 as build_py - except ImportError: - # 2.x - from distutils.command.build_py import build_py - version_dict = {} init_filename = "boxtree/version.py" exec(compile(open(init_filename, "r").read(), init_filename, "exec"), @@ -52,10 +46,7 @@ def main(): "Mako>=0.7.3", "pytest>=2.3", "cgen>=2013.1.2", - ], - - # 2to3 invocation - cmdclass={'build_py': build_py}) + ]) if __name__ == '__main__': diff --git a/test/test_fmm.py b/test/test_fmm.py index 7aca7ea246aa92a6bb051eb09e68d8c3de1530b0..9f6188ab17dcd0340a6056c6c813a99c3189bca5 100644 --- a/test/test_fmm.py +++ b/test/test_fmm.py @@ -1,4 +1,7 @@ from __future__ import division +from __future__ import absolute_import +from __future__ import print_function +from six.moves import range __copyright__ = "Copyright (C) 2013 Andreas Kloeckner" @@ -349,7 +352,7 @@ def test_fmm_completeness(ctx_getter, dims, nsources_req, ntargets_req, logging.getLogger().setLevel(logging.WARNING) pb = ProgressBar("matrix", nsources) - for i in xrange(nsources): + for i in range(nsources): unit_vec = np.zeros(nsources, dtype=dtype) unit_vec[i] = 1 mat[:, i] = drive_fmm(host_trav, wrangler, unit_vec) @@ -384,8 +387,8 @@ def test_fmm_completeness(ctx_getter, dims, nsources_req, ntargets_req, tgt_boxes = [ host_tree.find_box_nr_for_target(i) for i in tree_order_missing_tgts] - print src_boxes - print tgt_boxes + print(src_boxes) + print(tgt_boxes) pt.plot( host_tree.targets[0][tree_order_missing_tgts], @@ -423,7 +426,7 @@ def test_fmm_completeness(ctx_getter, dims, nsources_req, ntargets_req, filt_targets[0][bad], filt_targets[1][bad], ] - print bad_targets[0].shape + print(bad_targets[0].shape) pt.plot(filt_targets[0], filt_targets[1], "x") pt.plot(bad_targets[0], bad_targets[1], "v") pt.show() diff --git a/test/test_traversal.py b/test/test_traversal.py index b609845dbfc70efa0ac7824048b890b73a70ef5c..d9613dc56c8538640c58e7aabf3e91b3ca53e1d3 100644 --- a/test/test_traversal.py +++ b/test/test_traversal.py @@ -1,4 +1,6 @@ from __future__ import division +from __future__ import absolute_import +from six.moves import range __copyright__ = "Copyright (C) 2013 Andreas Kloeckner" @@ -78,7 +80,7 @@ def test_tree_connectivity(ctx_getter, dims, sources_are_targets): # {{{ parent and child relations, levels match up - for ibox in xrange(1, tree.nboxes): + for ibox in range(1, tree.nboxes): # /!\ Not testing box 0, has no parents parent = parents[ibox] @@ -159,7 +161,7 @@ def test_tree_connectivity(ctx_getter, dims, sources_are_targets): assert (trav.target_or_target_parent_boxes == np.arange( tree.nboxes, dtype=tree.box_id_dtype)).all() - for ibox in xrange(tree.nboxes): + for ibox in range(tree.nboxes): start, end = trav.sep_bigger_starts[ibox:ibox+2] for jbox in trav.sep_bigger_lists[start:end]: diff --git a/test/test_tree.py b/test/test_tree.py index 83768e9bbf7d41f4a778346cd083151a957e21a1..c44482f270ef9acb96ba3933a89a16b71cbac1f9 100644 --- a/test/test_tree.py +++ b/test/test_tree.py @@ -1,4 +1,8 @@ from __future__ import division +from __future__ import absolute_import +from __future__ import print_function +import six +from six.moves import range __copyright__ = "Copyright (C) 2012 Andreas Kloeckner" @@ -93,7 +97,7 @@ def run_build_test(builder, queue, dims, dtype, nparticles, do_plot, logger.info(75*"-") logger.info("%dD %s - %d particles - max %d per box - %s" % ( dims, dtype.type.__name__, nparticles, max_particles_in_box, - " - ".join("%s: %s" % (k, v) for k, v in kwargs.iteritems()))) + " - ".join("%s: %s" % (k, v) for k, v in six.iteritems(kwargs)))) logger.info(75*"-") particles = make_normal_particle_array(queue, nparticles, dims, dtype) @@ -126,7 +130,7 @@ def run_build_test(builder, queue, dims, dtype, nparticles, do_plot, from boxtree import box_flags_enum as bfe scaled_tol = tol*tree.root_extent - for ibox in xrange(tree.nboxes): + for ibox in range(tree.nboxes): # Empty boxes exist in non-pruned trees--which themselves are undocumented. # These boxes will fail these tests. @@ -166,7 +170,7 @@ def run_build_test(builder, queue, dims, dtype, nparticles, do_plot, plotter.draw_box(ibox, edgecolor="red") if not all_good_here: - print "BAD BOX", ibox + print("BAD BOX", ibox) all_good_so_far = all_good_so_far and all_good_here @@ -265,7 +269,7 @@ def test_source_target_tree(ctx_getter, dims, do_plot=False): plotter.draw_tree(fill=False, edgecolor="black", zorder=10) plotter.set_bounding_box() - for ibox in xrange(tree.nboxes): + for ibox in range(tree.nboxes): extent_low, extent_high = tree.get_box_extent(ibox) assert (extent_low >= @@ -308,7 +312,7 @@ def test_source_target_tree(ctx_getter, dims, do_plot=False): pt.show() if not all_good_here: - print "BAD BOX %s %d" % (what, ibox) + print("BAD BOX %s %d" % (what, ibox)) all_good_so_far = all_good_so_far and all_good_here assert all_good_so_far @@ -389,7 +393,7 @@ def test_extent_tree(ctx_getter, dims, do_plot=False): # {{{ check sources, targets - for ibox in xrange(tree.nboxes): + for ibox in range(tree.nboxes): extent_low, extent_high = tree.get_box_extent(ibox) box_radius = np.max(extent_high-extent_low) * 0.5 @@ -432,7 +436,7 @@ def test_extent_tree(ctx_getter, dims, do_plot=False): all_good_here = good.all() if not all_good_here: - print "BAD BOX %s %d level %d" % (what, ibox, tree.box_levels[ibox]) + print("BAD BOX %s %d level %d" % (what, ibox, tree.box_levels[ibox])) all_good_so_far = all_good_so_far and all_good_here assert all_good_here @@ -515,7 +519,7 @@ def test_geometry_query(ctx_getter, dims, do_plot=False): from boxtree import box_flags_enum - for ibox in xrange(tree.nboxes): + for ibox in range(tree.nboxes): # We only want leaves here. if tree.box_flags[ibox] & box_flags_enum.HAS_CHILDREN: continue