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)
| File | Size | Uploaded | |
|---|---|---|---|
| msdparser-2.0.0.tar.gz | 6.8 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| 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
|