<pre style='margin:0'>
Mohamed Akram (mohd-akram) pushed a commit to branch master
in repository macports-ports.
</pre>
<p><a href="https://github.com/macports/macports-ports/commit/5fae7f76d43a5ef97ba4c9bb89cf7b77dd864f28">https://github.com/macports/macports-ports/commit/5fae7f76d43a5ef97ba4c9bb89cf7b77dd864f28</a></p>
<pre style="white-space: pre; background: #F8F8F8">The following commit(s) were added to refs/heads/master by this push:
<span style='display:block; white-space:pre;color:#404040;'> new 5fae7f76d43 mapnik: update to 4.0.4
</span>5fae7f76d43 is described below
<span style='display:block; white-space:pre;color:#808000;'>commit 5fae7f76d43a5ef97ba4c9bb89cf7b77dd864f28
</span>Author: Mohamed Akram <makr@macports.org>
AuthorDate: Sat Dec 7 14:16:43 2024 +0400
<span style='display:block; white-space:pre;color:#404040;'> mapnik: update to 4.0.4
</span>---
gis/mapnik/Portfile | 30 ++++---
gis/mapnik/files/patch-scons-action.py.diff | 19 -----
gis/mapnik/files/patch-scons-default.diff | 11 ---
gis/mapnik/files/patch-scons-tool-javac.py.diff | 19 -----
gis/mapnik/files/patch-scons-util.py.diff | 102 ------------------------
5 files changed, 14 insertions(+), 167 deletions(-)
<span style='display:block; white-space:pre;color:#808080;'>diff --git a/gis/mapnik/Portfile b/gis/mapnik/Portfile
</span><span style='display:block; white-space:pre;color:#808080;'>index 99004a80bdf..8bc825f6131 100644
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>--- a/gis/mapnik/Portfile
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/gis/mapnik/Portfile
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -5,8 +5,8 @@ PortGroup conflicts_build 1.0
</span> PortGroup boost 1.0
name mapnik
<span style='display:block; white-space:pre;background:#ffe0e0;'>-version 3.1.0
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-revision 11
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+version 4.0.4
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+revision 0
</span> categories gis devel
license LGPL-2.1
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -24,30 +24,26 @@ long_description Mapnik is a Free Toolkit for developing mapping \
</span> graphics library, which offers world-class anti-aliasing \
rendering with subpixel accuracy for geographic data.
<span style='display:block; white-space:pre;background:#ffe0e0;'>-homepage http://mapnik.org
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+homepage https://mapnik.org
</span> master_sites https://github.com/mapnik/mapnik/releases/download/v${version}/
distname mapnik-v${version}
use_bzip2 yes
<span style='display:block; white-space:pre;background:#ffe0e0;'>-checksums rmd160 ddd58a419aa6f7cf537e40ae10d369be423f18b2 \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- sha256 43d76182d2a975212b4ad11524c74e577576c11039fdab5286b828397d8e6261 \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- size 10110740
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+checksums rmd160 7e5c2cb48662879ce1b8572ef84ac6153fd51c19 \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ sha256 e4f564f9475088dd1d814b20b2500ab0ab073f657add56449ddb634f0f086ca7 \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ size 13020826
</span>
# When changing `boost.version`, please update the `mod_tile` port
# correspondingly with the same version of Boost. Also increase the
# `mod_tile` `revision` attribute.
boost.version 1.76
<span style='display:block; white-space:pre;background:#ffe0e0;'>-set python_branch 3.11
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+set python_branch 3.12
</span> set python_version [string map {. {}} ${python_branch}]
<span style='display:block; white-space:pre;background:#ffe0e0;'>-patchfiles patch-scons-action.py.diff \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- patch-scons-tool-javac.py.diff \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- patch-scons-util.py.diff \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- patch-scons-default.diff \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- patch-sconstruct.diff
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+patchfiles patch-sconstruct.diff
</span>
depends_build-append \
port:pkgconfig \
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -80,9 +76,9 @@ variant gdal description {Build GDAL/OGR plugin} {
</span> }
variant postgis description {Build PostGIS plugin} {
<span style='display:block; white-space:pre;background:#ffe0e0;'>- depends_lib-append path:lib/libpq.dylib:postgresql15
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ depends_lib-append path:lib/libpq.dylib:postgresql17
</span> if {![file exists ${prefix}/lib/libpq.dylib]} {
<span style='display:block; white-space:pre;background:#ffe0e0;'>- configure.args-append PG_CONFIG=${prefix}/lib/postgresql15/bin/pg_config
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ configure.args-append PG_CONFIG=${prefix}/lib/postgresql17/bin/pg_config
</span> }
lappend input_plugins postgis
}
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -100,7 +96,7 @@ variant libxml2 description {Enable libxml2 support for includes and entities} {
</span>
default_variants +postgis
<span style='display:block; white-space:pre;background:#ffe0e0;'>-compiler.cxx_standard 2014
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+compiler.cxx_standard 2017
</span>
universal_variant no
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -128,6 +124,8 @@ configure.args CXX="\$CXX" \
</span> BOOST_INCLUDES=[boost::include_dir] \
BOOST_LIBS=[boost::lib_dir]
<span style='display:block; white-space:pre;background:#e0ffe0;'>+configure.pkg_config_path ${prefix}/lib/proj7/lib/pkgconfig
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span> configure.cppflags-append \
-DACCEPT_USE_OF_DEPRECATED_PROJ_API_H=1
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -157,5 +155,5 @@ post-destroot {
</span> }
livecheck.type regex
<span style='display:block; white-space:pre;background:#ffe0e0;'>-livecheck.url http://mapnik.org/pages/downloads.html
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+livecheck.url https://mapnik.org/pages/downloads.html
</span> livecheck.regex {mapnik-v(\d+(?:\.\d+)*)[.tz]}
<span style='display:block; white-space:pre;color:#808080;'>diff --git a/gis/mapnik/files/patch-scons-action.py.diff b/gis/mapnik/files/patch-scons-action.py.diff
</span>deleted file mode 100644
<span style='display:block; white-space:pre;color:#808080;'>index a0b1ededcc8..00000000000
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>--- a/gis/mapnik/files/patch-scons-action.py.diff
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ /dev/null
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -1,19 +0,0 @@
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>---- scons/scons-local-3.0.1/SCons/Action.py.orig 2023-11-15 16:08:13.000000000 +0000
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+++ scons/scons-local-3.0.1/SCons/Action.py 2023-11-15 16:09:58.000000000 +0000
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -107,6 +107,7 @@
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- import subprocess
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- import itertools
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- import inspect
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+from collections import OrderedDict
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- import SCons.Debug
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- from SCons.Debug import logInstanceCreation
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -1289,7 +1290,7 @@
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- return result
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- def get_varlist(self, target, source, env, executor=None):
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-- result = SCons.Util.OrderedDict()
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ result = OrderedDict()
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- for act in self.list:
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- for var in act.get_varlist(target, source, env, executor):
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- result[var] = True
</span><span style='display:block; white-space:pre;color:#808080;'>diff --git a/gis/mapnik/files/patch-scons-default.diff b/gis/mapnik/files/patch-scons-default.diff
</span>deleted file mode 100644
<span style='display:block; white-space:pre;color:#808080;'>index b2aef79cb02..00000000000
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>--- a/gis/mapnik/files/patch-scons-default.diff
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ /dev/null
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -1,11 +0,0 @@
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>---- scons/scons-local-3.0.1/SCons/Defaults.py.orig
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+++ scons/scons-local-3.0.1/SCons/Defaults.py
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -210,7 +210,7 @@
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- else:
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- raise SyntaxError("Could not find +, - or =")
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- operation_list = operation.split(operator)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-- if len(operation_list) is not 2:
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ if len(operation_list) != 2:
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- raise SyntaxError("More than one operator found")
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- user = operation_list[0].strip().replace("a", "ugo")
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- permission = operation_list[1].strip()
</span><span style='display:block; white-space:pre;color:#808080;'>diff --git a/gis/mapnik/files/patch-scons-tool-javac.py.diff b/gis/mapnik/files/patch-scons-tool-javac.py.diff
</span>deleted file mode 100644
<span style='display:block; white-space:pre;color:#808080;'>index 14701ac6b84..00000000000
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>--- a/gis/mapnik/files/patch-scons-tool-javac.py.diff
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ /dev/null
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -1,19 +0,0 @@
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>---- scons/scons-local-3.0.1/SCons/Tool/javac.py.orig 2023-11-15 16:08:31.000000000 +0000
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+++ scons/scons-local-3.0.1/SCons/Tool/javac.py 2023-11-15 16:10:14.000000000 +0000
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -34,6 +34,7 @@
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- import os
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- import os.path
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+from collections import OrderedDict
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- import SCons.Action
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- import SCons.Builder
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -70,7 +71,7 @@
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- if isinstance(entry, SCons.Node.FS.File):
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- slist.append(entry)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- elif isinstance(entry, SCons.Node.FS.Dir):
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-- result = SCons.Util.OrderedDict()
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ result = OrderedDict()
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- dirnode = entry.rdir()
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- def find_java_files(arg, dirpath, filenames):
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- java_files = sorted([n for n in filenames
</span><span style='display:block; white-space:pre;color:#808080;'>diff --git a/gis/mapnik/files/patch-scons-util.py.diff b/gis/mapnik/files/patch-scons-util.py.diff
</span>deleted file mode 100644
<span style='display:block; white-space:pre;color:#808080;'>index f959b5b7f49..00000000000
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>--- a/gis/mapnik/files/patch-scons-util.py.diff
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ /dev/null
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -1,102 +0,0 @@
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>---- scons/scons-local-3.0.1/SCons/Util.py.orig 2023-11-15 16:08:41.000000000 +0000
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+++ scons/scons-local-3.0.1/SCons/Util.py 2023-11-15 16:10:05.000000000 +0000
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -37,21 +37,18 @@
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- PY3 = sys.version_info[0] == 3
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- try:
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ from collections import UserDict, UserList, UserString
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+except ImportError:
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- from UserDict import UserDict
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--except ImportError as e:
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-- from collections import UserDict
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--try:
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- from UserList import UserList
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--except ImportError as e:
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-- from collections import UserList
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--from collections import Iterable
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ from UserString import UserString
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- try:
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-- from UserString import UserString
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--except ImportError as e:
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-- from collections import UserString
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ from collections.abc import Iterable
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+except ImportError:
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ from collections import Iterable
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+from collections import OrderedDict
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- # Don't "from types import ..." these because we need to get at the
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- # types module later to look for UnicodeType.
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -63,7 +60,7 @@
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- FunctionType = types.FunctionType
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- try:
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-- unicode
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ _ = type(unicode)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- except NameError:
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- UnicodeType = str
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- else:
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -1034,60 +1031,6 @@
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- def __str__(self):
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- return ' '.join(self.data)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--# A dictionary that preserves the order in which items are added.
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--# Submitted by David Benjamin to ActiveState's Python Cookbook web site:
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--# http://aspn.activestate.com/ASPN/Cookbook/Python/Recipe/107747
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--# Including fixes/enhancements from the follow-on discussions.
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--class OrderedDict(UserDict):
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-- def __init__(self, dict = None):
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-- self._keys = []
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-- UserDict.__init__(self, dict)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-- def __delitem__(self, key):
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-- UserDict.__delitem__(self, key)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-- self._keys.remove(key)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-- def __setitem__(self, key, item):
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-- UserDict.__setitem__(self, key, item)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-- if key not in self._keys: self._keys.append(key)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-- def clear(self):
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-- UserDict.clear(self)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-- self._keys = []
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-- def copy(self):
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-- dict = OrderedDict()
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-- dict.update(self)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-- return dict
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-- def items(self):
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-- return list(zip(self._keys, list(self.values())))
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-- def keys(self):
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-- return self._keys[:]
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-- def popitem(self):
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-- try:
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-- key = self._keys[-1]
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-- except IndexError:
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-- raise KeyError('dictionary is empty')
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-- val = self[key]
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-- del self[key]
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-- return (key, val)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-- def setdefault(self, key, failobj = None):
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-- UserDict.setdefault(self, key, failobj)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-- if key not in self._keys: self._keys.append(key)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-- def update(self, dict):
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-- for (key, val) in dict.items():
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-- self.__setitem__(key, val)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-- def values(self):
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-- return list(map(self.get, self._keys))
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- class Selector(OrderedDict):
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- """A callable ordered dictionary that maps file suffixes to
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- dictionary values. We preserve the order in which items are added
</span></pre><pre style='margin:0'>
</pre>