[Git][debian-gis-team/python-mapnik][upstream] 2 commits: New upstream version 0.0~20240816-e25ea400e

Bas Couwenberg (@sebastic) gitlab at salsa.debian.org
Fri Nov 1 13:35:19 GMT 2024



Bas Couwenberg pushed to branch upstream at Debian GIS Project / python-mapnik


Commits:
099250ee by Bas Couwenberg at 2024-08-30T20:12:43+02:00
New upstream version 0.0~20240816-e25ea400e
- - - - -
e52fa506 by Bas Couwenberg at 2024-10-16T13:12:47+02:00
New upstream version 0.0~20240911-7addcf9ab
- - - - -


10 changed files:

- pyproject.toml
- setup.py
- src/mapnik_placement_finder.cpp
- src/mapnik_projection.cpp
- src/mapnik_text_symbolizer.cpp
- src/python_to_value.hpp
- test/python_tests/images/support/pgraster/rgba_8bui-nodataedge-rgb_8bui C T_64x64 Cl--1-box1.png
- test/python_tests/images/support/pgraster/rgba_8bui-nodataedge-rgb_8bui C T_64x64--0-box1.png
- test/python_tests/images/support/raster_warping.png
- test/python_tests/pgraster_test.py


Changes:

=====================================
pyproject.toml
=====================================
@@ -1,7 +1,7 @@
 [build-system]
 requires = [
-         "setuptools >= 69.0",
-         "pybind11 >= 2.10.0",
+         "setuptools >= 74.1.2",
+         "pybind11 >= 2.13.5",
 ]
 build-backend = "setuptools.build_meta"
 
@@ -29,3 +29,9 @@ Documentation = "https://github.com/mapnik/python-mapnik/wiki"
 Repository = "https://github.com/mapnik/python-mapnik"
 "Bug Tracker" = "https://github.com/mapnik/python-mapnik/issues"
 Changelog = "https://github.com/mapnik/python-mapnik/blob/master/CHANGELOG.md"
+
+[tool.pytest.ini_options]
+minversion = "8.0"
+testpaths = [
+    "test/python_tests",
+]
\ No newline at end of file


=====================================
setup.py
=====================================
@@ -125,8 +125,6 @@ setup(
           'mapnik': ['lib/*.*', 'lib/*/*/*', 'share/*/*'],
      },
      ext_modules=ext_modules,
-     #extras_require={"test": "pytest"},
      cmdclass={"build_ext": build_ext},
-     #zip_safe=False,
      python_requires=">=3.7",
 )


=====================================
src/mapnik_placement_finder.cpp
=====================================
@@ -28,6 +28,7 @@
 #include <mapnik/symbolizer_keys.hpp>
 #include <mapnik/symbolizer_enumerations.hpp>
 #include <mapnik/text/placements/dummy.hpp>
+#include <mapnik/text/placements/simple.hpp>
 #include <mapnik/text/text_properties.hpp>
 #include <mapnik/text/formatting/text.hpp>
 #include "mapnik_symbolizer.hpp"
@@ -39,67 +40,79 @@ namespace py = pybind11;
 namespace
 {
 
-void set_face_name(mapnik::text_placements_dummy & finder, std::string const& face_name)
+template <typename PlacementFinder>
+void set_face_name(PlacementFinder & finder, std::string const& face_name)
 {
     finder.defaults.format_defaults.face_name = face_name;
 }
 
-std::string get_face_name(mapnik::text_placements_dummy & finder)
+template <typename PlacementFinder>
+std::string get_face_name(PlacementFinder const& finder)
 {
     return finder.defaults.format_defaults.face_name;
 }
 
-void set_text_size(mapnik::text_placements_dummy & finder, double text_size)
+template <typename PlacementFinder>
+void set_text_size(PlacementFinder & finder, double text_size)
 {
     finder.defaults.format_defaults.text_size = text_size;
 }
 
-py::object get_text_size(mapnik::text_placements_dummy const& finder)
+template <typename PlacementFinder>
+py::object get_text_size(PlacementFinder const& finder)
 {
     return mapnik::util::apply_visitor(python_mapnik::extract_python_object<>(mapnik::keys::MAX_SYMBOLIZER_KEY),
                                        finder.defaults.format_defaults.text_size);
 }
 
-void set_fill(mapnik::text_placements_dummy & finder, mapnik::color const& fill)
+template <typename PlacementFinder>
+void set_fill(PlacementFinder & finder, mapnik::color const& fill)
 {
     finder.defaults.format_defaults.fill = fill;
 }
 
-py::object get_fill(mapnik::text_placements_dummy & finder)
+template <typename PlacementFinder>
+py::object get_fill(PlacementFinder const& finder)
 {
     return mapnik::util::apply_visitor(python_mapnik::extract_python_object<>(mapnik::keys::MAX_SYMBOLIZER_KEY),
                                        finder.defaults.format_defaults.fill);
 }
-void set_halo_fill(mapnik::text_placements_dummy & finder, mapnik::color const& halo_fill )
+
+template <typename PlacementFinder>
+void set_halo_fill(PlacementFinder & finder, mapnik::color const& halo_fill )
 {
     finder.defaults.format_defaults.halo_fill = halo_fill;
 }
 
-py::object get_halo_fill(mapnik::text_placements_dummy & finder)
+template <typename PlacementFinder>
+py::object get_halo_fill(PlacementFinder const& finder)
 {
     return mapnik::util::apply_visitor(python_mapnik::extract_python_object<>(mapnik::keys::MAX_SYMBOLIZER_KEY),
                                        finder.defaults.format_defaults.halo_fill);
 }
 
-
-void set_halo_radius(mapnik::text_placements_dummy & finder, double halo_radius)
+template <typename PlacementFinder>
+void set_halo_radius(PlacementFinder & finder, double halo_radius)
 {
     finder.defaults.format_defaults.halo_radius = halo_radius;
 }
 
-py::object get_halo_radius(mapnik::text_placements_dummy & finder)
+template <typename PlacementFinder>
+py::object get_halo_radius(PlacementFinder const& finder)
 {
     return mapnik::util::apply_visitor(python_mapnik::extract_python_object<>(mapnik::keys::MAX_SYMBOLIZER_KEY),
                                        finder.defaults.format_defaults.halo_radius);
 }
 
-void set_format_expr(mapnik::text_placements_dummy & finder, std::string const& expr)
+template <typename PlacementFinder>
+void set_format_expr(PlacementFinder & finder, std::string const& expr)
 {
     finder.defaults.set_format_tree(
         std::make_shared<mapnik::formatting::text_node>(mapnik::parse_expression(expr)));
 }
 
-std::string get_format_expr(mapnik::text_placements_dummy & finder)
+template <typename PlacementFinder>
+std::string get_format_expr(PlacementFinder const& finder)
 {
     mapnik::expression_set exprs;
     finder.defaults.add_expressions(exprs);
@@ -118,11 +131,59 @@ void export_placement_finder(py::module const& m)
 {
     py::class_<mapnik::text_placements_dummy, std::shared_ptr<mapnik::text_placements_dummy>>(m, "PlacementFinder")
         .def(py::init<>(), "Default ctor")
-        .def_property("face_name", &get_face_name, &set_face_name, "Font face name")
-        .def_property("text_size", &get_text_size, &set_text_size, "Size of text")
-        .def_property("fill", &get_fill, &set_fill, "Fill")
-        .def_property("halo_fill", &get_halo_fill, &set_halo_fill, "Halo fill")
-        .def_property("halo_radius", &get_halo_radius, &set_halo_radius, "Halo radius")
-        .def_property("format_expression", &get_format_expr, &set_format_expr, "Format expression")
+        .def_property("face_name",
+                      &get_face_name<mapnik::text_placements_dummy>,
+                      &set_face_name<mapnik::text_placements_dummy>,
+                      "Font face name")
+        .def_property("text_size",
+                      &get_text_size<mapnik::text_placements_dummy>,
+                      &set_text_size<mapnik::text_placements_dummy>,
+                      "Size of text")
+        .def_property("fill",
+                      &get_fill<mapnik::text_placements_dummy>,
+                      &set_fill<mapnik::text_placements_dummy>,
+                      "Fill")
+        .def_property("halo_fill",
+                      &get_halo_fill<mapnik::text_placements_dummy>,
+                      &set_halo_fill<mapnik::text_placements_dummy>,
+                      "Halo fill")
+        .def_property("halo_radius",
+                      &get_halo_radius<mapnik::text_placements_dummy>,
+                      &set_halo_radius<mapnik::text_placements_dummy>,
+                      "Halo radius")
+        .def_property("format_expression",
+                      &get_format_expr<mapnik::text_placements_dummy>,
+                      &set_format_expr<mapnik::text_placements_dummy>,
+                      "Format expression")
+        ;
+
+/*
+    py::class_<mapnik::text_placements_simple, std::shared_ptr<mapnik::text_placements_simple>>(m, "PlacementFinderSimple")
+        .def(py::init<>(), "Default ctor")
+        .def_property("face_name",
+                      &get_face_name<mapnik::text_placements_simple>,
+                      &set_face_name<mapnik::text_placements_simple>,
+                      "Font face name")
+        .def_property("text_size",
+                      &get_text_size<mapnik::text_placements_simple>,
+                      &set_text_size<mapnik::text_placements_simple>,
+                      "Size of text")
+        .def_property("fill",
+                      &get_fill<mapnik::text_placements_simple>,
+                      &set_fill<mapnik::text_placements_simple>,
+                      "Fill")
+        .def_property("halo_fill",
+                      &get_halo_fill<mapnik::text_placements_simple>,
+                      &set_halo_fill<mapnik::text_placements_simple>,
+                      "Halo fill")
+        .def_property("halo_radius",
+                      &get_halo_radius<mapnik::text_placements_simple>,
+                      &set_halo_radius<mapnik::text_placements_simple>,
+                      "Halo radius")
+        .def_property("format_expression",
+                      &get_format_expr<mapnik::text_placements_simple>,
+                      &set_format_expr<mapnik::text_placements_simple>,
+                      "Format expression")
         ;
+*/
 }


=====================================
src/mapnik_projection.cpp
=====================================
@@ -27,6 +27,7 @@
 #include <mapnik/projection.hpp>
 //pybind11
 #include <pybind11/pybind11.h>
+#include <pybind11/stl.h>
 
 using mapnik::projection;
 
@@ -107,11 +108,13 @@ void export_projection (py::module& m)
         .def_property_readonly("geographic", &projection::is_geographic,
                                "This property is True if the projection is a geographic projection\n"
                                "(i.e. it uses lon/lat coordinates)\n")
+        .def_property_readonly("area_of_use", &projection::area_of_use,
+                               "This property returns projection area of use in lonlat WGS84\n")
         ;
 
-    m.def("forward_",&forward_pt);
-    m.def("inverse_",&inverse_pt);
-    m.def("forward_",&forward_env);
-    m.def("inverse_",&inverse_env);
+    m.def("forward_", &forward_pt);
+    m.def("inverse_", &inverse_pt);
+    m.def("forward_", &forward_env);
+    m.def("inverse_", &inverse_env);
 
 }


=====================================
src/mapnik_text_symbolizer.cpp
=====================================
@@ -59,12 +59,12 @@ void export_text_symbolizer(py::module const& m)
     using namespace python_mapnik;
     using mapnik::text_symbolizer;
 
-//     using namespace boost::python;
-//     mapnik::enumeration_<mapnik::label_placement_e>("label_placement")
-//         .value("LINE_PLACEMENT", mapnik::label_placement_enum::LINE_PLACEMENT)
-//         .value("POINT_PLACEMENT", mapnik::label_placement_enum::POINT_PLACEMENT)
-//         .value("VERTEX_PLACEMENT", mapnik::label_placement_enum::VERTEX_PLACEMENT)
-//         .value("INTERIOR_PLACEMENT", mapnik::label_placement_enum::INTERIOR_PLACEMENT);
+    py::enum_<mapnik::label_placement_enum>(m, "LabelPlacement")
+        .value("LINE_PLACEMENT", mapnik::label_placement_enum::LINE_PLACEMENT)
+        .value("POINT_PLACEMENT", mapnik::label_placement_enum::POINT_PLACEMENT)
+        .value("VERTEX_PLACEMENT", mapnik::label_placement_enum::VERTEX_PLACEMENT)
+        .value("INTERIOR_PLACEMENT", mapnik::label_placement_enum::INTERIOR_PLACEMENT)
+        ;
 
 //     mapnik::enumeration_<mapnik::vertical_alignment_e>("vertical_alignment")
 //         .value("TOP", mapnik::vertical_alignment_enum::V_TOP)
@@ -90,14 +90,24 @@ void export_text_symbolizer(py::module const& m)
 //         .value("LOWERCASE", mapnik::text_transform_enum::LOWERCASE)
 //         .value("CAPITALIZE", mapnik::text_transform_enum::CAPITALIZE);
 
-//     mapnik::enumeration_<mapnik::halo_rasterizer_e>("halo_rasterizer")
-//         .value("FULL", mapnik::halo_rasterizer_enum::HALO_RASTERIZER_FULL)
-//         .value("FAST", mapnik::halo_rasterizer_enum::HALO_RASTERIZER_FAST);
+    py::enum_<mapnik::halo_rasterizer_enum>(m, "halo_rasterizer")
+        .value("FULL", mapnik::halo_rasterizer_enum::HALO_RASTERIZER_FULL)
+        .value("FAST", mapnik::halo_rasterizer_enum::HALO_RASTERIZER_FAST);
+
+
+    // set_symbolizer_property<symbolizer_base, composite_mode_e>(sym, keys::halo_comp_op, node);
+    // set_symbolizer_property<symbolizer_base, halo_rasterizer_enum>(sym, keys::halo_rasterizer, node);
+    // set_symbolizer_property<symbolizer_base, transform_type>(sym, keys::halo_transform, node);
+    // set_symbolizer_property<symbolizer_base, value_double>(sym, keys::offset, node);
 
     py::class_<text_symbolizer, symbolizer_base>(m, "TextSymbolizer")
         .def(py::init<>(), "Default ctor")
         .def("__hash__",hash_impl_2<text_symbolizer>)
         .def_property("placement_finder", &get_placement_finder, &set_placement_finder, "Placement finder")
+        .def_property("halo_comp_op",
+                      &get<mapnik::composite_mode_e, mapnik::keys::halo_comp_op>,
+                      &set_enum_property<symbolizer_base, mapnik::composite_mode_e, mapnik::keys::halo_comp_op>,
+                      "Composite mode (comp-op)")
         ;
 
 }


=====================================
src/python_to_value.hpp
=====================================
@@ -48,15 +48,15 @@ namespace mapnik {
             }
             else if (py::isinstance<py::bool_>(handle))
             {
-                vars[key] = handle.cast<bool>();
+                vars[key] = handle.cast<mapnik::value_bool>();
             }
             else if (py::isinstance<py::float_>(handle))
             {
-                vars[key] = handle.cast<double>();
+                vars[key] = handle.cast<mapnik::value_double>();
             }
             else if (py::isinstance<py::int_>(handle))
             {
-                  vars[key] = handle.cast<long long>();
+                vars[key] = handle.cast<mapnik::value_integer>();
             }
             else
             {


=====================================
test/python_tests/images/support/pgraster/rgba_8bui-nodataedge-rgb_8bui C T_64x64 Cl--1-box1.png
=====================================
Binary files a/test/python_tests/images/support/pgraster/rgba_8bui-nodataedge-rgb_8bui C T_64x64 Cl--1-box1.png and b/test/python_tests/images/support/pgraster/rgba_8bui-nodataedge-rgb_8bui C T_64x64 Cl--1-box1.png differ


=====================================
test/python_tests/images/support/pgraster/rgba_8bui-nodataedge-rgb_8bui C T_64x64--0-box1.png
=====================================
Binary files a/test/python_tests/images/support/pgraster/rgba_8bui-nodataedge-rgb_8bui C T_64x64--0-box1.png and b/test/python_tests/images/support/pgraster/rgba_8bui-nodataedge-rgb_8bui C T_64x64--0-box1.png differ


=====================================
test/python_tests/images/support/raster_warping.png
=====================================
Binary files a/test/python_tests/images/support/raster_warping.png and b/test/python_tests/images/support/raster_warping.png differ


=====================================
test/python_tests/pgraster_test.py
=====================================
@@ -24,7 +24,6 @@ def setup():
     # from another directory we need to chdir()
     os.chdir(execution_path('.'))
 
-
 def call(cmd, silent=False):
     stdin, stderr = Popen(cmd, shell=True, stdout=PIPE,
                           stderr=PIPE).communicate()
@@ -129,11 +128,13 @@ def drop_imported(tabname, overview):
 
 
 def compare_images(expected, im):
+    cur_dir = os.path.dirname(os.path.realpath(__file__))
     expected = os.path.join(
         os.path.dirname(expected),
         os.path.basename(expected).replace(
             ':',
             '_'))
+    expected = os.path.join(cur_dir, expected)
     if not os.path.exists(expected) or os.environ.get('UPDATE'):
         print('generating expected image %s' % expected)
         im.save(expected, 'png32')
@@ -243,7 +244,7 @@ if 'pgraster' in mapnik.DatasourceCache.plugin_names() \
 
     def _test_dataraster_16bsi(lbl, tilesize, constraint, overview):
         import_raster(
-            './test/data/raster/dataraster-small.tif',
+            os.path.join(os.path.dirname(os.path.realpath(__file__)),'../../test/data/raster/dataraster-small.tif'),
             'dataRaster',
             tilesize,
             constraint,
@@ -268,13 +269,13 @@ if 'pgraster' in mapnik.DatasourceCache.plugin_names() \
                     _test_dataraster_16bsi(
                         'data_16bsi', tilesize, constraint, overview)
 
-    # river.tiff, RGBA 8BUI
+    # # river.tiff, RGBA 8BUI
     def _test_rgba_8bui_rendering(lbl, overview, rescale, clip):
         if rescale:
             lbl += ' Sc'
         if clip:
             lbl += ' Cl'
-        ds = mapnik.PgRaster(dbname=MAPNIK_TEST_DBNAME, table='(select * from "River") foo',
+        ds = mapnik.PgRaster(dbname=MAPNIK_TEST_DBNAME, table='(select * from "River" order by rid) foo',
                              use_overviews=1 if overview else 0,
                              prescale_rasters=rescale, clip_rasters=clip)
         fs = iter(ds)
@@ -312,7 +313,7 @@ if 'pgraster' in mapnik.DatasourceCache.plugin_names() \
         mapnik.render(mm, im)
         lap = time.time() - t0
         log('T ' + str(lap) + ' -- ' + lbl + ' E:full')
-        expected = './test/python_tests/images/support/pgraster/%s-%s-%s-%s-box1.png' % (
+        expected = './images/support/pgraster/%s-%s-%s-%s-box1.png' % (
             lyr.name, lbl, overview, clip)
         compare_images(expected, im)
         # no data
@@ -337,7 +338,7 @@ if 'pgraster' in mapnik.DatasourceCache.plugin_names() \
         mapnik.render(mm, im)
         lap = time.time() - t0
         log('T ' + str(lap) + ' -- ' + lbl + ' E:1/10')
-        expected = './test/python_tests/images/support/pgraster/%s-%s-%s-%s-box2.png' % (
+        expected = './images/support/pgraster/%s-%s-%s-%s-box2.png' % (
             lyr.name, lbl, overview, clip)
         compare_images(expected, im)
         # no data
@@ -356,7 +357,7 @@ if 'pgraster' in mapnik.DatasourceCache.plugin_names() \
 
     def _test_rgba_8bui(lbl, tilesize, constraint, overview):
         import_raster(
-            './test/data/raster/river.tiff',
+            os.path.join(os.path.dirname(os.path.realpath(__file__)),'../../test/data/raster/river.tiff'),
             'River',
             tilesize,
             constraint,
@@ -379,13 +380,13 @@ if 'pgraster' in mapnik.DatasourceCache.plugin_names() \
                     _test_rgba_8bui(
                         'rgba_8bui', tilesize, constraint, overview)
 
-    # nodata-edge.tif, RGB 8BUI
+    # # nodata-edge.tif, RGB 8BUI
     def _test_rgb_8bui_rendering(lbl, tnam, overview, rescale, clip):
         if rescale:
             lbl += ' Sc'
         if clip:
             lbl += ' Cl'
-        ds = mapnik.PgRaster(dbname=MAPNIK_TEST_DBNAME, table=tnam,
+        ds = mapnik.PgRaster(dbname=MAPNIK_TEST_DBNAME, table=f'(select * from "{tnam}" order by rid) foo',
                              use_overviews=1 if overview else 0,
                              prescale_rasters=rescale, clip_rasters=clip)
         fs = iter(ds)
@@ -393,8 +394,8 @@ if 'pgraster' in mapnik.DatasourceCache.plugin_names() \
         assert feature['rid'] == 1
         lyr = mapnik.Layer('rgba_8bui')
         lyr.datasource = ds
-        expenv = mapnik.Box2d(-12329035.7652168, 4508650.39854396,
-                              -12328653.0279471, 4508957.34625536)
+        expenv = mapnik.Box2d(-12329035.765216826, 4508650.398543958,
+                              -12328653.027947055, 4508957.346255356)
         env = lyr.envelope()
         # As the input size is a prime number both horizontally
         # and vertically, we expect the extent of the overview
@@ -424,7 +425,7 @@ if 'pgraster' in mapnik.DatasourceCache.plugin_names() \
         mapnik.render(mm, im)
         lap = time.time() - t0
         log('T ' + str(lap) + ' -- ' + lbl + ' E:full')
-        expected = './test/python_tests/images/support/pgraster/%s-%s-%s-%s-%s-box1.png' % (
+        expected = './images/support/pgraster/%s-%s-%s-%s-%s-box1.png' % (
             lyr.name, tnam, lbl, overview, clip)
         compare_images(expected, im)
         # no data
@@ -447,7 +448,7 @@ if 'pgraster' in mapnik.DatasourceCache.plugin_names() \
         mapnik.render(mm, im)
         lap = time.time() - t0
         log('T ' + str(lap) + ' -- ' + lbl + ' E:1/10')
-        expected = './test/python_tests/images/support/pgraster/%s-%s-%s-%s-%s-box2.png' % (
+        expected = 'images/support/pgraster/%s-%s-%s-%s-%s-box2.png' % (
             lyr.name, tnam, lbl, overview, clip)
         compare_images(expected, im)
         # no data
@@ -466,7 +467,7 @@ if 'pgraster' in mapnik.DatasourceCache.plugin_names() \
     def _test_rgb_8bui(lbl, tilesize, constraint, overview):
         tnam = 'nodataedge'
         import_raster(
-            './test/data/raster/nodata-edge.tif',
+            os.path.join(os.path.dirname(os.path.realpath(__file__)),'../../test/data/raster/nodata-edge.tif'),
             tnam,
             tilesize,
             constraint,
@@ -480,7 +481,7 @@ if 'pgraster' in mapnik.DatasourceCache.plugin_names() \
         for prescale in [0, 1]:
             for clip in [0, 1]:
                 _test_rgb_8bui_rendering(lbl, tnam, overview, prescale, clip)
-        #drop_imported(tnam, overview)
+        drop_imported(tnam, overview)
 
     def test_rgb_8bui():
         for tilesize in ['64x64']:
@@ -529,10 +530,10 @@ if 'pgraster' in mapnik.DatasourceCache.plugin_names() \
         lyr.datasource = ds
         expenv = mapnik.Box2d(0, 0, 14, 14)
         env = lyr.envelope()
-        assert env.minx == expenv.minx#, places=0)
-        assert env.miny == expenv.miny#, places=0)
-        assert env.maxx == expenv.maxx#, places=0)
-        assert env.maxy == expenv.maxy#, places=0)
+        assert env.minx == expenv.minx
+        assert env.miny == expenv.miny
+        assert env.maxx == expenv.maxx
+        assert env.maxy == expenv.maxy
         mm = mapnik.Map(15, 15)
         style = mapnik.Style()
         sym = mapnik.RasterSymbolizer()
@@ -548,7 +549,7 @@ if 'pgraster' in mapnik.DatasourceCache.plugin_names() \
         mapnik.render(mm, im)
         lap = time.time() - t0
         log('T ' + str(lap) + ' -- ' + lbl + ' E:full')
-        expected = './test/python_tests/images/support/pgraster/%s-%s-%s-%s.png' % (
+        expected = 'images/support/pgraster/%s-%s-%s-%s.png' % (
             lyr.name, lbl, pixtype, value)
         compare_images(expected, im)
         h = format(value, '02x')
@@ -667,7 +668,7 @@ if 'pgraster' in mapnik.DatasourceCache.plugin_names() \
         mapnik.render(mm, im)
         lap = time.time() - t0
         log('T ' + str(lap) + ' -- ' + lbl + ' E:full')
-        expected = './test/python_tests/images/support/pgraster/%s-%s-%s-%s.png' % (
+        expected = 'images/support/pgraster/%s-%s-%s-%s.png' % (
             lyr.name, lbl, pixtype, value)
         compare_images(expected, im)
 
@@ -785,11 +786,11 @@ if 'pgraster' in mapnik.DatasourceCache.plugin_names() \
         mapnik.render(mm, im)
         lap = time.time() - t0
         log('T ' + str(lap) + ' -- ' + lbl + ' E:full')
-        expected = './test/python_tests/images/support/pgraster/%s-%s-%s-%s-%s-%s-%s-%s-%s.png' % (
+        expected = 'images/support/pgraster/%s-%s-%s-%s-%s-%s-%s-%s-%s.png' % (
             lyr.name, lbl, pixtype, r, g, b, a, g1, b1)
         compare_images(expected, im)
-        hex_v = format(r << 24 | g << 16 | b << 8 | a, '08x').encode()
-        hex_a = format(r << 24 | g1 << 16 | b << 8 | a, '08x').encode()
+        hex_v = format(r << 24 | g << 16 | b  << 8 | a, '08x').encode()
+        hex_a = format(r << 24 | g1<< 16 | b  << 8 | a, '08x').encode()
         hex_b = format(r << 24 | g << 16 | b1 << 8 | a, '08x').encode()
         assert hexlify(im.view(3, 3, 1, 1).to_string()) ==  hex_v
         assert hexlify(im.view(8, 3, 1, 1).to_string()) == hex_v
@@ -812,11 +813,11 @@ if 'pgraster' in mapnik.DatasourceCache.plugin_names() \
             255,
             255)
 
-    # def test_rgba_16bui_subquery():
-    #  _test_rgba_subquery('rgba_16bui_subquery', '16BUI', 65535, 0, 0, 65535, 65535, 65535)
+    #def test_rgba_16bui_subquery():
+    #   _test_rgba_subquery('rgba_16bui_subquery', '16BUI', 65535, 0, 0, 65535, 65535, 65535)
 
-    # def test_rgba_32bui_subquery():
-    #  _test_rgba_subquery('rgba_32bui_subquery', '32BUI')
+    #def test_rgba_32bui_subquery():
+    #   _test_rgba_subquery('rgba_32bui_subquery', '32BUI')
 
     atexit.register(postgis_takedown)
 



View it on GitLab: https://salsa.debian.org/debian-gis-team/python-mapnik/-/compare/8d2936d19b2967fe32aa52440db39ec0c6efffac...e52fa50643782ec68232184f70b06cf7d4ffc054

-- 
View it on GitLab: https://salsa.debian.org/debian-gis-team/python-mapnik/-/compare/8d2936d19b2967fe32aa52440db39ec0c6efffac...e52fa50643782ec68232184f70b06cf7d4ffc054
You're receiving this email because of your account on salsa.debian.org.


-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://alioth-lists.debian.net/pipermail/pkg-grass-devel/attachments/20241101/c4918294/attachment-0001.htm>


More information about the Pkg-grass-devel mailing list