Registry / serialization / openstep-plist

openstep-plist

JSON →
library0.5.2pypypi✓ verified 92d ago

A fast ASCII plist parser written in Cython, used primarily for parsing Glyphs.app and other Apple-style ASCII property list files. Current version 0.5.2, supports Python >=3.8, released on a maintenance cadence.

pip install openstep-plist
INSTALL
IMPORT
SIG · OPENSTEP-PLIST
O
openstep-plist
serializationpythonv0.5.2
Install
1.7s avg
Import
—
Disk
20MB
Pass rate
10/ 10
Env Coverage10 / 10
glibc
3.9–3.13
musl
3.9–3.13
Install & Compatibility
Where this runs
tested against v0.5.2 · pip install
no network on importno background threads
Install × environment matrix
Each cell = how many times install + import succeeded across repeated harness runs. Partial = flaky.
glibc = Debian/Ubuntu slim · musl = Alpine Linux
musl
py 3.10–3.95 runs
installs and imports cleanly · install 0.0s · import 0.000s · 23.4MB
glibc
py 3.10–3.95 runs
installs and imports cleanly · install 1.7s · import 0.000s · 21MB
20MB installed
● package 20MB
Code
Verified usage

Verified import paths — ran on the pinned version, not inferred.

load
✓ from openstep_plist import load
✗ from openstep_plist.load import load
load is a top-level function, not a submodule.
loads
✓ from openstep_plist import loads
✗ import openstep_plist; openstep_plist.loads()
Works but not the recommended import.
dump
✓ from openstep_plist import dump
dumps
✓ from openstep_plist import dumps
PlistParser
✓ from openstep_plist import PlistParser
✗ from openstep_plist.parser import PlistParser
PlistParser is exposed at package level.
PlistWriter
✓ from openstep_plist import PlistWriter
✗ from openstep_plist.writer import PlistWriter
PlistWriter is exposed at package level.

Parse and dump ASCII plist strings.

from openstep_plist import load, dumps # Parse an ASCII plist string plist_string = """{ name = Example; version = 1; }""" data = load(plist_string) print(data) # {'name': 'Example', 'version': 1} # Dump back to ASCII plist output = dumps(data) print(output)
Debug
Known issues
breakingIn v0.5.0, the default behavior for dumping single-line tuples changed: no space after comma. If you rely on the old format, set `single_line_empty_objects=True`.
fix
Use `dumps(data, single_line_empty_objects=True)` to preserve old spacing.
affects: >=0.5.0
breakingIn v0.2.1, the default value of `use_numbers` in the parser was reverted to False. Strings that look like numbers (e.g., '123') are now kept as strings by default.
fix
If you need automatic conversion to int/float, pass `use_numbers=True` to `load()` or `loads()`.
affects: >=0.2.1
deprecated`pkg_resources` usage was replaced by `importlib.metadata` in v0.5.2. If you were depending on `pkg_resources` internals, update your code.
fix
Use `importlib.metadata.version('openstep-plist')` instead of `pkg_resources.get_distribution('openstep-plist').version`.
affects: >=0.5.2
gotchaThe library only supports ASCII property list format, not XML or binary plists. Loading an XML plist will fail or produce unexpected results.
fix
Use `plistlib` for XML/binary plists; use `openstep-plist` only for ASCII plist format (e.g., Glyphs files).
affects: all
Errors
Common errors & fixes
ModuleNotFoundError: No module named 'openstep_plist'
The package is installed as `openstep-plist` (with hyphen) but imported as `openstep_plist` (underscore).
fix
Install with `pip install openstep-plist`, then import as `from openstep_plist import ...`.
AttributeError: module 'openstep_plist' has no attribute 'loads'
Older versions (e.g., 0.2.x) did not expose `loads` at the top level; or the import is wrong.
fix
Upgrade to latest version (`pip install -U openstep-plist`) or use `from openstep_plist import loads`.
ValueError: Unsupported plist format
Attempting to parse XML or binary plist data with openstep-plist, which only handles ASCII plist format.
fix
Use Python's built-in `plistlib` for XML or binary plists.
Upgrade
Version history
0.5.2latest on PyPI · released Mar 11, 2026
Audit
Dependencies

No dependency data recorded yet.

Agent activity
4 hits · last 30 days
node
4
Resources
openstep-plist — pip install openstep-plist · libregistry