Releases¶
1.0.0 28/09/2023¶
In celebration of becoming an official OSGeo Community Project,
a version 1.0.0
release is now out!
Support for Python 2.7 has now been dropped. See #166 - Drop Python 2.7 support. The codebase has had all Python2 specific code removed - see #188.
Breaking Change - in the
MapfileToDict
class the parametertransformerClass
has been renamedtransformer_class
. An example of how to fix this is shown below:from mappyfile.transformer import MapfileToDict from mappyfile_colors import ColorsTransformer m = MapfileToDict( include_position=True, include_comments=True, # replace the following parameter # transformerClass=ColorsTransformer, transformer_class=ColorsTransformer, conversion_type=None, include_color_names=True, )
Support added for lark_cython - see #178 - thanks @erezsh. To use
lark_cython
is as simple as installing the option withpip
:pip install mappyfile[lark_cython]
All mappyfile dicts now have human readable output when displayed as a string:
mf = mappyfile.open("./docs/examples/before.map") print(mf) # previous output # DefaultOrderedDict(<class 'mappyfile.ordereddict.CaseInsensitiveOrderedDict'>, CaseInsensitiveOrderedDict([('__type__', 'map'),.. # new output { "__type__": "map", "layers": [ { "__type__": "layer", "name": "Layer1", "type": "POLYGON" },
Approach to resolving JSON references updated due to the deprecated
jsonschema.RefResolver
- see this link, the associated JSONSchema pull request and the migration approach.
Other improvements and fixes in the v1.0.0 release:
#196 - Code base fixes for
Prospector
warnings#195 - Update test suite from latest msautotests
#194 - Docs overhaul in preparation for v1 release
#193 - Update to
jsonschema
v4 and replace deprecatedRefResolver
#191 - Simplify processing of comments
#189 - Add type hints to the code base
#153 - Support querying items without the given key in
utils.findunique()
- thanks @DonQueso89 for fixSchema fixes for
grid
,label
,style
,leader
, addflatgeobuf
Code reformatted using black
Resolution of long-standing parsing issues, and all msautotest examples now pass successfully:
0.9.7 03/04/2022¶
0.9.6 29/03/2022¶
Schema fixes for GRID LABELFORMAT and set max versions for MAP DATAPATTERN and TEMPLATEPATTERN
Allow TRUE/FALSE values for OUTPUTFORMAT TRANSPARENT
0.9.5 01/03/2022¶
0.9.4 22/02/2022¶
#137 - Checking mapfile dict properties creates invalid empty dictionaries
#119 - STYLE GEOMTRANSFORM ‘labelcenter’
#143 - Automate schema building
#142 - Allow newer versions of jsonschema for py3
#141 - Update and fix Continuous Integration
#139 - Feature: align values in column
#138 - Update schema based on new Mapfile validation rules
0.9.3 13/12/2021¶
Adds a new
mappyfile.create
function to allow creation of Mapfile objects with default valuesUpdate the Mapfile schema to include
default
values for keywords
0.9.2 28/08/2021¶
Add the “idw” to
LAYER
CONNECIONTYPE
Correct “minVersion” of
LABEL
EXPRESSION
Add validation to
LEGEND
LABELS
Add correct validation for
MAP
LEGEND
andOUTPUTFORMAT
Add “byte” to
OUTPUTFORMAT
IMAGEMODE
Add “maxVersion” to
WEB
LOG
#120 - Expression list element with apostrophe throws error
#118 - LABEL -> FONT and LABEL -> POSITION gives errors in validate when attributes are used
0.9.1 23/12/2020¶
0.9.0 14/07/2020¶
Schemas updated to include
minVersion
andmaxVersion
metadata to define which Mapfile keywords are valid for different versions of MapServerA new
schema
command line tool to export Mapfile schemas for different versions of MapServerAllow Mapfile validation based on a specific version of MapServer
Add better error message when incorrect dicts are passed to printer
Add py38 to continuous integration testing
Add command line scripts to continuous integration testing
Fix
CONNECTIONOPTIONS
formatted outputUpdate to lark-parser 0.9.0
#109 - Add validation based on MapServer version
#96 - Unquoted Unicode strings cause parsing errors
#102 - Added support for accented-latin in unquoted strings (Issue #96) - thanks @erezsh
#97 - Allow for negative expressions
#101 - Fix for issue #97 (unary negation) - thanks @erezsh
#85 - Coding of NOT logical expression
#100 - Allowing non-bracketed NOT expression (Issue #85) - thanks @erezsh
0.8.4 11/01/2020¶
0.8.3 06/10/2019¶
Update to lark-parser 0.7.7
Update to jsonref 0.2
Add automated releases to GitHub using Appveyor
Add automated releases to PyPI using Appveyor
Add missing CLASS properties to JSON schema
Additional tests for CaseInsensitiveOrderedDict and EXPRESSIONs
#37 - LIKE not recognised in FILTER - thanks @ianturton for fix
#87 - JSON schema add join tag- thanks @hugbe8 for fix
0.8.2 29/03/2019¶
0.8.1 27/02/2019¶
Fix comments on root objects in a MapFile
Fix issues with duplicated METADATA keys and comments
Fix ReadTheDocs build
Add more sample MapFiles for testing to the project
0.8.0 24/02/2019¶
Update code to work with Lark 0.6.6 (see #71)
New end_comment option for pprint - Add a comment with the block type at each closing END statement e.g. END # MAP (see request #69)
Add
**kwargs
to main API to allow greater flexibility with pluginsFix DeprecationWarnings relating to Python 3.7.2 (thanks @tigerfoot for the report)
Tested use with new jsonschema 3.0.0 release
0.7.6 (13/10/2018)¶
Deprecated
write
function removed from the API and codebaseUpdate OFFSET validation to allow attribute bindings - see https://github.com/mapserver/docs/pull/256
#68 - Support pickling of DefaultOrderedDict in Python3
#67 - Fix deprecation warnings for grammar regular expressions in Python 3.6
#65 - Handle hexadecimal color translucence
0.7.5 (14/09/2018)¶
Save tokens for value lists
Update README and fix example code
0.7.4 (07/09/2018)¶
Support for modulus operator
Allow custom transformers to be used with kwargs
0.7.3 (23/08/2018)¶
Two new CLI programs -
format
andvalidate
Update of Lark parser to 0.6.4 (fixes some validation line number issues)
Improvements to validation log messages
Normalise include paths
0.7.2 (24/07/2018)¶
0.7.1 (10/07/2018)¶
Breaking Change
utils.dictfind
renamedutils.findkey
new dictionary update function - allowing for easier creation of Mapfiles using YAML
allow any custom hidden metadata tags of the form
__property__
to be used in dicts for custom processingSchema validation updates including RANGEITEM and CLUSTER
Appveyor builds added
#56 Can’t parse expressions with a : in them
#54 fix windows cwd name issue in includes - thanks @ianturton
0.7.0 (04/04/2018)¶
Finalise validation API
Finalised Mapfile comments API
New
dictfind
functionAllow non-string function parameters in expressions
Use of CaseInsensitiveOrderedDict throughout transformer
UTF comments
JSONSchema updates and fixes
0.6.2 (24/02/2018)¶
Breaking Change - the
mappyfile.load
method now accepts a file-like object rather than a filename to match the usage in other Python libraries. A newmappyfile.open
method allows opening directly with a filename.New preserve comments feature - experimental
Add basic plugin system
Updates to schema docs (fixes for POSITION, AUTO, and added new default values)
Fix issue with comments on INCLUDE lines
#50 Allow END keyword for GEOTRANSFORM parameter
#49 Allow non-ASCII characters in parser
#47 Add in missing expression operators - divide, multiply, and power.
0.6.1 (06/02/2018)¶
Fixes to setup.py
0.6.0 (17/01/2018)¶
Extensive refactoring of grammar and transformer
Removal of Earley grammar
Whitespace ignored when parsing
JSON schema fixes
#45 Set fixed dependency ranges
Experimental - inclusion of token positions
Experimental - inclusion of validation comments
0.5.1 (05/01/2018)¶
#45 Remove unnecessary parser keyword
0.5.0 (01/11/2017)¶
Add in jsonschema and validation class
#44 Includes should be relative to Mapfile
0.4.3 (28/08/2017)¶
0.4.0 (18/08/2017)¶
0.3.2¶
Revert back to a single grammar, but add linebreaks before all
END
keywords to keep acceptable performance
0.3.1¶
Add in alternative grammar that allows for no line breaks between composites, and fall back to this if parsing fails (otherwise most use cases suffer a 3x performance hit)
0.3.0¶
Allow multiple composites to be parsed directly (e.g.
CLASS..END CLASS..END
)Allow direct parsing of the
METADATA
andVALIDATION
blocksUTF-8 checks when opening a Mapfile
#23 Alternative NE and EQ comparisons not defined
#22 Handle AUTO Projection setting
#21 INCLUDES throw error when no cwd set
#20 Only the first FORMATOPTION is kept after transform
#19 IMAGEMODE FEATURE throws parsing error
#18 CONFIG keyword not capitalised
Older Releases¶
0.2.2 - various fixes to grammar, and allow for alternate comparison operators
0.2.1 - new
findall
function, see https://github.com/geographika/mappyfile/pull/12 - thanks @Jenselme0.2.0 - switch to Lark parser
0.1.0 - initial release