[python-mapnik] 01/06: Imported Upstream version 0.0~20170602-1635afe
Bas Couwenberg
sebastic at debian.org
Mon Jun 5 19:15:29 UTC 2017
This is an automated email from the git hooks/post-receive script.
sebastic pushed a commit to branch master
in repository python-mapnik.
commit d2fe6aaf9365fb94b4ab5d6f61cef51635ee978f
Author: Bas Couwenberg <sebastic at xs4all.nl>
Date: Mon Jun 5 20:13:10 2017 +0200
Imported Upstream version 0.0~20170602-1635afe
---
mapnik/__init__.py | 2 +-
setup.py | 2 ++
src/mapnik_font_engine.cpp | 22 ++++-----------
src/mapnik_geometry.cpp | 6 ++--
test/python_tests/geometry_io_test.py | 52 +++++++++++++++++++----------------
test/python_tests/postgis_test.py | 9 ++----
6 files changed, 42 insertions(+), 51 deletions(-)
diff --git a/mapnik/__init__.py b/mapnik/__init__.py
index 1d28848..4d99ad1 100644
--- a/mapnik/__init__.py
+++ b/mapnik/__init__.py
@@ -1065,7 +1065,7 @@ def register_fonts(path=None, valid_extensions=[
for dirpath, _, filenames in os.walk(path):
for filename in filenames:
if os.path.splitext(filename.lower())[1] in valid_extensions:
- FontEngine.instance().register_font(os.path.join(dirpath, filename))
+ FontEngine.register_font(os.path.join(dirpath, filename))
# auto-register known plugins and fonts
register_plugins()
diff --git a/setup.py b/setup.py
index 9d9e665..a0654de 100755
--- a/setup.py
+++ b/setup.py
@@ -227,6 +227,8 @@ if mason_build:
extra_comp_args = check_output([mapnik_config, '--cflags']).split(' ')
+extra_comp_args = list(filter(lambda arg: arg != "-fvisibility=hidden", extra_comp_args))
+
if os.environ.get("PYCAIRO", "false") == "true":
try:
extra_comp_args.append('-DHAVE_PYCAIRO')
diff --git a/src/mapnik_font_engine.cpp b/src/mapnik_font_engine.cpp
index 629618a..c539938 100644
--- a/src/mapnik_font_engine.cpp
+++ b/src/mapnik_font_engine.cpp
@@ -21,7 +21,6 @@
*****************************************************************************/
#include <mapnik/config.hpp>
-#include "boost_std_shared_shim.hpp"
#pragma GCC diagnostic push
#include <mapnik/warning_ignore.hpp>
@@ -30,27 +29,16 @@
#pragma GCC diagnostic pop
#include <mapnik/font_engine_freetype.hpp>
-#include <mapnik/util/singleton.hpp>
void export_font_engine()
{
using mapnik::freetype_engine;
- using mapnik::singleton;
- using mapnik::CreateStatic;
using namespace boost::python;
- class_<singleton<freetype_engine,CreateStatic>,boost::noncopyable>("Singleton",no_init)
- .def("instance",&singleton<freetype_engine,CreateStatic>::instance,
- return_value_policy<reference_existing_object>())
- .staticmethod("instance")
- ;
-
- class_<freetype_engine,bases<singleton<freetype_engine,CreateStatic> >,
- boost::noncopyable>("FontEngine",no_init)
- .def("register_font",&freetype_engine::register_font)
- .def("register_fonts",&freetype_engine::register_fonts)
- .def("face_names",&freetype_engine::face_names)
+ class_<freetype_engine, boost::noncopyable>("FontEngine", no_init)
+ .def("register_font", &freetype_engine::register_font)
+ .def("register_fonts", &freetype_engine::register_fonts)
+ .def("face_names", &freetype_engine::face_names)
.staticmethod("register_font")
.staticmethod("register_fonts")
- .staticmethod("face_names")
- ;
+ .staticmethod("face_names");
}
diff --git a/src/mapnik_geometry.cpp b/src/mapnik_geometry.cpp
index 1181c06..688f5de 100644
--- a/src/mapnik_geometry.cpp
+++ b/src/mapnik_geometry.cpp
@@ -117,12 +117,12 @@ PyObject* to_wkb_impl(mapnik::geometry::geometry<double> const& geom, mapnik::wk
std::string to_geojson_impl(mapnik::geometry::geometry<double> const& geom)
{
- std::string wkt;
- if (!mapnik::util::to_geojson(wkt, geom))
+ std::string json;
+ if (!mapnik::util::to_geojson(json, geom))
{
throw std::runtime_error("Generate JSON failed");
}
- return wkt;
+ return json;
}
std::string to_wkt_impl(mapnik::geometry::geometry<double> const& geom)
diff --git a/test/python_tests/geometry_io_test.py b/test/python_tests/geometry_io_test.py
index e51686c..f1bac0b 100644
--- a/test/python_tests/geometry_io_test.py
+++ b/test/python_tests/geometry_io_test.py
@@ -3,7 +3,7 @@
import os
from binascii import unhexlify
-from nose.tools import eq_
+from nose.tools import eq_, assert_raises
import mapnik
@@ -101,23 +101,25 @@ geojson_reversed = [
'{"coordinates":[[[[-178.32319,71.518365],[-178.321586,71.518439],[-178.259635,71.510688],[-178.304862,71.513129],[-178.32319,71.518365]]],[[[-178.32319,71.518365],[-178.341544,71.517524],[-178.32244,71.505439],[-178.215323,71.478034],[-178.193473,71.47663],[-178.147757,71.485175],[-178.124442,71.481879],[-178.005729,71.448615],[-178.017203,71.441413],[-178.054191,71.428778],[-178.047049,71.425727],[-178.033439,71.417792],[-178.026236,71.415107],[-178.030082,71.413459],[-178.039908,7 [...]
]
-geojson_nulls = [
- '{ "type": "Feature", "properties": { }, "geometry": null }',
- '{ "type": "Feature", "properties": { }, "geometry": { "type": "Point", "coordinates": [] }}',
- '{ "type": "Feature", "properties": { }, "geometry": { "type": "LineString", "coordinates": [ [] ] }}',
- '{ "type": "Feature", "properties": { }, "geometry": { "type": "Polygon", "coordinates": [ [ [] ] ] } }',
- '{ "type": "Feature", "properties": { }, "geometry": { "coordinates": [], "type": "Point" }}',
- '{ "type": "Feature", "properties": { }, "geometry": { "coordinates": [ [] ], "type": "LineString" }}',
- '{ "type": "Feature", "properties": { }, "geometry": { "coordinates": [ [ [] ] ], "type": "Polygon" } }',
- '{ "type": "Feature", "properties": { }, "geometry": { "type": "MultiPoint", "coordinates": [ [] ] }}',
- '{ "type": "Feature", "properties": { }, "geometry": { "type": "MultiPoint", "coordinates": [ [],[] ] }}',
- '{ "type": "Feature", "properties": { }, "geometry": { "type": "MultiLineString", "coordinates": [ [] ] }}',
- '{ "type": "Feature", "properties": { }, "geometry": { "type": "MultiLineString", "coordinates": [ [ [] ] ] }}',
- '{ "type": "Feature", "properties": { }, "geometry": { "type": "MultiPolygon", "coordinates": [ [] ] }}',
- '{ "type": "Feature", "properties": { }, "geometry": { "type": "MultiPolygon", "coordinates": [ [ [] ] ] }}',
- '{ "type": "Feature", "properties": { }, "geometry": { "type": "MultiPolygon", "coordinates": [ [ [ [] ] ] ] }}',
+valid_empty_geometries = [
+ 'null', # Point can't be empty
+ '{ "type": "LineString" , "coordinates": []}',
+ '{ "type": "Polygon" , "coordinates": [[]]}',
+ '{ "type": "MultiPoint" , "coordinates": []}',
+ '{ "type": "MultiLineString" , "coordinates": [[]]}',
+ '{ "type": "MultiPolygon" , "coordinates": [[[]]]}',
]
+invalid_empty_geometries = [
+ '{ "type": "Point" , "coordinates": []}', # Point can't be empty
+ '{ "type": "LineString" , "coordinates": [[]]}',
+ '{ "type": "Polygon" , "coordinates": [[[]]]}',
+ '{ "type": "MultiPoint" , "coordinates": [[]]}',
+ '{ "type": "MultiLineString" , "coordinates": [[[]]]}',
+ '{ "type": "MultiPolygon" , "coordinates": [[[[]]]]}',
+]
+
+
# valid, but empty wkb's
# (http://trac.osgeo.org/postgis/wiki/DevWikiEmptyGeometry)
empty_wkbs = [
@@ -329,15 +331,17 @@ def test_creating_feature_from_geojson():
eq_(feat['name'], u'value')
-def test_handling_geojson_null_geoms():
- for j in geojson_nulls:
- ctx = mapnik.Context()
- out_json = mapnik.Feature.from_geojson(j, ctx).to_geojson()
- expected = '{"type":"Feature","id":1,"geometry":null,"properties":{}}'
- eq_(out_json, expected)
- # ensure it round trips
- eq_(mapnik.Feature.from_geojson(out_json, ctx).to_geojson(), expected)
+def test_handling_valid_geojson_empty_geometries():
+ for json in valid_empty_geometries:
+ geom = mapnik.Geometry.from_geojson(json)
+ out_json = geom.to_geojson()
+ # check round trip
+ eq_(json.replace(" ",""), out_json)
+
+def test_handling_invalid_geojson_empty_geometries():
+ for json in invalid_empty_geometries:
+ assert_raises(RuntimeError, mapnik.Geometry.from_geojson, json)
if __name__ == "__main__":
setup()
diff --git a/test/python_tests/postgis_test.py b/test/python_tests/postgis_test.py
index bafda20..a03d3a1 100644
--- a/test/python_tests/postgis_test.py
+++ b/test/python_tests/postgis_test.py
@@ -728,7 +728,7 @@ if 'postgis' in mapnik.DatasourceCache.plugin_names() \
table='test',
max_size=20,
geometry_field='geom')
- fs = ds.all_features()
+ fs = list(ds.all_features())
eq_(len(fs), 8)
meta = ds.describe()
@@ -967,8 +967,7 @@ if 'postgis' in mapnik.DatasourceCache.plugin_names() \
failed = False
try:
fs = ds_bad.featureset()
- for feature in fs.features:
- pass
+ count = sum(1 for f in fs)
except RuntimeError as e:
assert 'invalid input syntax for integer' in str(e)
failed = True
@@ -977,9 +976,7 @@ if 'postgis' in mapnik.DatasourceCache.plugin_names() \
# Should be ok
fs = ds_good.featureset()
- count = 0
- for feature in fs.features:
- count += 1
+ count = sum(1 for f in fs)
eq_(count, 8)
def test_psql_error_should_give_back_connections_opened_for_lower_layers_to_the_pool():
--
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-grass/python-mapnik.git
More information about the Pkg-grass-devel
mailing list