[mapproxy] 01/04: New upstream version 1.10.3
Bas Couwenberg
sebastic at debian.org
Fri Jul 7 14:17:42 UTC 2017
This is an automated email from the git hooks/post-receive script.
sebastic pushed a commit to branch master
in repository mapproxy.
commit 919c901d802f406a95aa00eca33c2c48bc2c97d0
Author: Bas Couwenberg <sebastic at xs4all.nl>
Date: Fri Jul 7 15:55:11 2017 +0200
New upstream version 1.10.3
---
CHANGES.txt | 9 +++++++++
doc/conf.py | 2 +-
mapproxy/image/mask.py | 3 +++
mapproxy/image/transform.py | 6 +++++-
mapproxy/test/unit/test_conf_loader.py | 20 ++++++++++++++++++--
mapproxy/util/geom.py | 3 +--
setup.py | 2 +-
7 files changed, 38 insertions(+), 7 deletions(-)
diff --git a/CHANGES.txt b/CHANGES.txt
index ca91d31..df94dbe 100644
--- a/CHANGES.txt
+++ b/CHANGES.txt
@@ -1,3 +1,12 @@
+1.10.3 2017-07-07
+~~~~~~~~~~~~~~~~~
+
+Fixes:
+
+- Fix crash during clipping
+- Fix bilinear/bicubic resampling from cropped source
+- Fix loading empty coverages
+
1.10.2 2017-06-21
~~~~~~~~~~~~~~~~~
diff --git a/doc/conf.py b/doc/conf.py
index cb05ca7..6dd6f5d 100644
--- a/doc/conf.py
+++ b/doc/conf.py
@@ -51,7 +51,7 @@ copyright = u'Oliver Tonnhofer, Omniscale'
# The short X.Y version.
version = '1.10'
# The full version, including alpha/beta/rc tags.
-release = '1.10.2'
+release = '1.10.3'
# The language for content autogenerated by Sphinx. Refer to documentation
# for a list of supported languages.
diff --git a/mapproxy/image/mask.py b/mapproxy/image/mask.py
index a98e1dc..26238e5 100644
--- a/mapproxy/image/mask.py
+++ b/mapproxy/image/mask.py
@@ -62,6 +62,9 @@ def image_mask_from_geom(size, bbox, polygons):
# little bit smaller polygon does not include touched pixels outside coverage
buffered = p.buffer(buffer, resolution=1, join_style=2)
+ if buffered.is_empty: # can be empty after negative buffer
+ continue
+
if buffered.type == 'MultiPolygon':
# negative buffer can turn polygon into multipolygon
for p in buffered:
diff --git a/mapproxy/image/transform.py b/mapproxy/image/transform.py
index 1a956ad..ba7ec2e 100644
--- a/mapproxy/image/transform.py
+++ b/mapproxy/image/transform.py
@@ -190,7 +190,11 @@ def img_for_resampling(img, resampling):
resampling = image_filter[resampling]
if img.mode == 'P' and resampling != Image.NEAREST:
img.load() # load to get actual palette mode
- img = img.convert(img.palette.mode)
+ if img.palette is not None:
+ # palette can still be None for cropped images
+ img = img.convert(img.palette.mode)
+ else:
+ img = img.convert('RGBA')
return img
def griddify(quad, steps):
diff --git a/mapproxy/test/unit/test_conf_loader.py b/mapproxy/test/unit/test_conf_loader.py
index af39c9d..b0fdc50 100644
--- a/mapproxy/test/unit/test_conf_loader.py
+++ b/mapproxy/test/unit/test_conf_loader.py
@@ -30,8 +30,8 @@ from mapproxy.cache.tile import TileManager
from mapproxy.seed.spec import validate_seed_conf
from mapproxy.test.helper import TempFile
from mapproxy.test.unit.test_grid import assert_almost_equal_bbox
+from mapproxy.util.geom import EmptyGeometryError
from nose.tools import eq_, assert_raises
-from nose.plugins.skip import SkipTest
class TestLayerConfiguration(object):
def _test_conf(self, yaml_part):
@@ -925,7 +925,7 @@ class TestImageOptions(object):
conf.globals.image_options.image_opts({}, 'image/jpeg')
-class TestLoadCoverage(object):
+class TestCoverageValidation(object):
def test_union(self):
conf = {
'coverages': {
@@ -942,3 +942,19 @@ class TestLoadCoverage(object):
assert informal_only
assert len(errors) == 1
eq_(errors[0], "unknown 'unknown' in coverages.covname.union[1]")
+
+
+class TestLoadCoverage(object):
+ def test_load_empty_geojson(self):
+ with TempFile() as tf:
+ with open(tf, 'wb') as f:
+ f.write('{"type": "FeatureCollection", "features": []}')
+ conf = {'datasource': tf, 'srs': 'EPSG:4326'}
+ assert_raises(EmptyGeometryError, load_coverage, conf)
+
+ def test_load_empty_geojson_ogr(self):
+ with TempFile() as tf:
+ with open(tf, 'wb') as f:
+ f.write('{"type": "FeatureCollection", "features": []}')
+ conf = {'datasource': tf, 'where': '0 != 1', 'srs': 'EPSG:4326'}
+ assert_raises(EmptyGeometryError, load_coverage, conf)
diff --git a/mapproxy/util/geom.py b/mapproxy/util/geom.py
index f6e8c8d..21ce047 100644
--- a/mapproxy/util/geom.py
+++ b/mapproxy/util/geom.py
@@ -171,8 +171,7 @@ def load_polygon_lines(line_iter, source='<string>'):
def build_multipolygon(polygons, simplify=False):
if not polygons:
- p = shapely.geometry.Polygon()
- return p.bounds, p
+ raise EmptyGeometryError('no polygons')
if len(polygons) == 1:
geom = polygons[0]
diff --git a/setup.py b/setup.py
index 7ec76d5..5515279 100644
--- a/setup.py
+++ b/setup.py
@@ -54,7 +54,7 @@ def long_description(changelog_releases=10):
setup(
name='MapProxy',
- version="1.10.2",
+ version="1.10.3",
description='An accelerating proxy for web map services',
long_description=long_description(7),
author='Oliver Tonnhofer',
--
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-grass/mapproxy.git
More information about the Pkg-grass-devel
mailing list