Skip to main content

msdparser

A robust & lightning fast MSD parser for Python. MSD is the underlying file format for the SM and SSC simfile formats used by StepMania, as well as a few older formats like DWI.

Full documentation can be found on Read the Docs.

Features

  • Speed-optimized lexer & low-overhead parser
  • Support for escape sequences by default
  • Strict & lenient parse modes

Installation

msdparser is available on PyPI:

pip install msdparser

Quickstart

parse_msd takes a named file or string argument and yields MSDParameter instances:

>>> msd_data = """
... #VERSION:0.83;
... #TITLE:Springtime;
... #SUBTITLE:;
... #ARTIST:Kommisar;
... """
>>> from msdparser import parse_msd
>>> for param in parse_msd(string=msd_data):
...         print(
...             "key=" + repr(param.key),
...             "value=" + repr(param.value),
...         )
...
key='VERSION' value='0.83'
key='TITLE' value='Springtime'
key='SUBTITLE' value=''
key='ARTIST' value='Kommisar'

MSDParameter instances stringify back to MSD. They can be created from a sequence of strings, typically the key and value:

>>> from msdparser import MSDParameter
>>> pairs = [('TITLE', 'Springtime'), ('ARTIST', 'Kommisar')]
>>> for key, value in pairs:
...     print(str(MSDParameter([key, value])))
...
#TITLE:Springtime;
#ARTIST:Kommisar;

Prefer to use MSDParameter over interpolating the key/value pairs between #:; characters yourself. The str() implementation inserts escape sequences where required, preventing generation of invalid MSD.

Developing

msdparser uses Pipenv for dependency management. Activate the environment:

pipenv shell

To run the unit tests:

py -m unittest

To build the documentation:

docs/make html

Metadata

Release files for msdparser 2.0.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 msdparser 2.0.0
File Size Uploaded
msdparser-2.0.0.tar.gz 6.8 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for msdparser 2.0.0
File Interpreter ABI Platform
msdparser-2.0.0-py3-none-any.whl Python 3 none any Details

Total release size: 15.7 kB

Release files / msdparser-2.0.0.tar.gz

Download URL msdparser-2.0.0.tar.gz
Size 6.8 kB
Tags Source
SHA-256 checksum
How to use checksums
9bb6cf4b705c76850b1ce22823c768b62ba2bb63d1c2407bbe3e2c23e38be8e3
BLAKE2b-256 checksum
How to use checksums
5ea0554a03cedc509c00440897c4e9e668c23f3970db9a79b66123212eab336c
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/3.4.1 importlib_metadata/4.5.0 pkginfo/1.7.0 requests/2.25.1 requests-toolbelt/0.9.1 tqdm/4.61.0 CPython/3.7.6

Release files / msdparser-2.0.0-py3-none-any.whl

Download URL msdparser-2.0.0-py3-none-any.whl
Size 8.9 kB
Tags Python 3
SHA-256 checksum
How to use checksums
bbef8c89b2dc16183ba714354b093fff11a43469971c42972284c5046826002d
BLAKE2b-256 checksum
How to use checksums
4a784df3deda184b573055ac6ba4a7a8fa4084844d4f98b42550f3673550baff
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/3.4.1 importlib_metadata/4.5.0 pkginfo/1.7.0 requests/2.25.1 requests-toolbelt/0.9.1 tqdm/4.61.0 CPython/3.7.6
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