Skip to main content
Version Docs Build Status Coveralls Downloads

A pure Python parser for working with MapServer MapFiles, built using Lark. mappyfile is an official OSGeo Community Project.

https://raw.githubusercontent.com/geographika/mappyfile/master/docs/images/OSGeo_community_small.png

mappyfile is used for formatting and validation in https://app.mapserverstudio.net/, and can be tested for free on any of your Mapfiles. If you find mappyfile useful please consider signing up for a professional account at https://mapserverstudio.net/. This will help to fund maintenance and further development of both mappyfile and MapServer.

Requirements

  • Python 3.8 or higher

Installation

mappyfile is available on PyPI (the Python Package Index), and can be installed using pip:

pip install mappyfile

This will also install its required dependencies - Lark, and jsonschema.

To install the optional lark-cython library for better performance on CPython you can run the following command:

pip install mappyfile[lark_cython]

pip install mappyfile[lark_cython,yaml]

mappyfile is also available on conda. Install as follows:

conda install -c conda-forge mappyfile

Documentation

Full documentation is available at http://mappyfile.readthedocs.io/en/latest/

https://raw.githubusercontent.com/geographika/mappyfile/master/docs/images/class_parsed_small.png

Usage

From within Python scripts:

import mappyfile

mapfile = mappyfile.open("./docs/examples/raster.map")

# update the map name
mapfile["name"] = "MyNewMap"

new_layer_string = """
LAYER
    NAME 'land'
    TYPE POLYGON
    DATA '../data/vector/naturalearth/ne_110m_land'
    CLASS
        STYLE
            COLOR 107 208 107
            OUTLINECOLOR 2 2 2
            WIDTH 1
        END
    END
END
"""

layers = mapfile["layers"]

new_layer = mappyfile.loads(new_layer_string)

layers.insert(0, new_layer) # insert the new layer at any index in the Mapfile

for l in layers:
    print("{} {}".format(l["name"], l["type"]))

print(mappyfile.dumps(mapfile, indent=1, spacer="\t"))

YAML support is available as an optional extra (pip install mappyfile[yaml]):

import mappyfile
import mappyfile.yaml

mapfile = mappyfile.open("./docs/examples/raster.map")

# export to YAML
mappyfile.yaml.save(mapfile, "raster.yaml")

# load back from YAML
mapfile2 = mappyfile.yaml.open("raster.yaml")
print(mappyfile.dumps(mapfile2))

Command line tools are also available - format, validate, schema, yaml-export, and yaml-import:

mappyfile format raster.map formatted_raster.map
mappyfile validate D:\ms-ogc-workshop\ms4w\apps\ms-ogc-workshop\**\*.map
mappyfile schema mapfile-schema-8-0.json --version=8.0
mappyfile yaml-export raster.map raster.yaml
mappyfile yaml-import raster.yaml raster.map

Authors

Contributors

Metadata

Release files for mappyfile 1.2.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for mappyfile 1.2.0
File Size Uploaded
mappyfile-1.2.0.tar.gz 114.5 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for mappyfile 1.2.0
File Interpreter ABI Platform
mappyfile-1.2.0-py2.py3-none-any.whl Python 3, Python 2 none any Details

Total release size: 180.1 kB

Release files / mappyfile-1.2.0.tar.gz

Download URL mappyfile-1.2.0.tar.gz
Size 114.5 kB
Tags Source
SHA-256 checksum
How to use checksums
62698b7c4d10662948912f9466ea2cfa4ddf94038a20a7cd91e00e40641d7bb9
BLAKE2b-256 checksum
How to use checksums
b965e3c10b5f2fbd6b9b46c89feb39cf01f13dcb099ffad80fca38cc3b5054a3
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.13.12

Release files / mappyfile-1.2.0-py2.py3-none-any.whl

Download URL mappyfile-1.2.0-py2.py3-none-any.whl
Size 65.5 kB
Tags Python 2 Python 3
SHA-256 checksum
How to use checksums
0b875a35035f6fc712b153b134de27bdcbb42f732a5a05801c9bead7a123fa72
BLAKE2b-256 checksum
How to use checksums
4de22b8bd1befdec49b11e356d827ed0c97b34704816f7a04410efedac2744b8
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.13.12

Release history Release notifications | RSS feed

This release

1.2.0 This release

2 release files

1.1.1

2 release files

1.1.0

2 release files

1.0.2

2 release files

1.0.1

2 release files

1.0.0

2 release files

0.9.7

2 release files

0.9.6

2 release files

0.9.5

2 release files

0.9.4

2 release files

0.9.3

6 release files

0.9.2

6 release files

0.9.1

6 release files

0.9.0

6 release files

0.8.4

5 release files

0.8.3

5 release files

0.8.2

2 release files

0.8.1

2 release files

0.8.0

2 release files

0.7.6

2 release files

0.7.5

2 release files

0.7.4

2 release files

0.7.3

2 release files

0.7.2

2 release files

0.7.1

2 release files

0.7.0

2 release files

0.6.2

2 release files

0.6.1

2 release files

0.6.0

2 release files

0.5.1

2 release files

0.5.0

2 release files

0.4.3

2 release files

0.4.2

2 release files

0.4.1

2 release files

0.3.2

1 release file

0.3.1

1 release file

0.3.0

1 release file

0.2.2

2 release files

0.2.1

2 release files

0.2.0

2 release files

0.1.3

1 release file

0.1.2

1 release file

0.1.1

1 release file

0.1.0

1 release file

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page