Skip to main content

A python library to parse and dump Unity YAML files

Reason this release was yanked:

Wrong base branch

Project description

Unity YAML Parser

travis

This project aims to provide a python3 API to load and dump Unity YAML files(configurations, prefabs, scenes, serialized data, etc) in the exact same format the internal Unity YAML serializer does.

Using this API you will be able to easily manipulate(as python objects) Unity YAML files and save them just the same, keeping the YAML structure exactly as Unity does. This has the advantages of, first not having to configure PyYAML beforehand to deal with Unity YAMLs, and second as the modified file keeps the same structure and formatting that Unity does, when the YAML file is loaded by Unity it won't make formatting changes to it that will make any VCS report unexpected file changes.

Installing

Install and update using pip:

pip install -U unityparser

A Simple Example

from unityparser import UnityDocument

# Loading and modifying a config file with a single YAML document
project_settings_file = 'UnityProject/ProjectSettings/ProjectSettings.asset'
doc = UnityDocument.load_yaml(project_settings_file)
ProjectSettings = doc.entry
ProjectSettings.scriptingDefineSymbols['1'] += ';CUSTOM_DEFINE'
ProjectSettings.scriptingDefineSymbols['7'] = ProjectSettings.scriptingDefineSymbols['1']
doc.dump_yaml()

# You can also load YAML files with multiple documents
hero_prefab_file = 'UnityProject/Assets/Prefabs/Hero.prefab'
doc = UnityDocument.load_yaml(hero_prefab_file)
for entry in doc.entries:
  if entry.__class__.__name__ == 'MonoBehaviour' and getattr(entry, 'MaxHealth', None) is not None:
    entry.MaxHealth = str(int(entry.MaxHealth) + 10)
    break
doc.dump_yaml()
# calling entry method for a doc with multiple document will return the first one
print(doc.entry.__class__.__name__)
# 'Prefab'

Classes

unityparser.UnityDocument

Main class to load and dump files.

unityparser.UnityDocument.load_yaml(file_path)

Classmethod: Load the given YAML file_path and return a UnityDocument file

unityparser.UnityDocument.dump_yaml(file_path=None)

Dump the UnityDocument to the previously loaded file location(overwrite). If file_path argument is provided, dump the document to the specified location instead.

This method keeps line endings of the original file when it dumps.

unityparser.UnityDocument.entries

Property: Return the list of documents found in the YAML. The objects in the list are of types Class named after the serialized Unity class(ie. MonoBehaviour, GameObject, Prefab, CustomName, etc).

unityparser.UnityDocument.entry

Property: Return the first document in the YAML, useful if there is only one. Equivalent of doing UnityDocument.entries[0].

unityparser.loader.UnityLoader

PyYAML's Loader class, can be used directly with PyYAML to customise loading.

unityparser.dumper.UnityDumper

PyYAML's Dumper class, can be used directly with PyYAML to customise dumping.

Considerations

unityparser converts every scalar value in the YAML to string when loading the data for safety purposes. Any key from the mappings in the YAML included.

You have to make sure to convert every modified/added value(or dict key) in the loaded data object back to string before dumping the document. Otherwise the written YAML will contain ugly tags.

Text scalars which are single or double quoted that span multiple lines are not being dumped exactly as Unity does. There's a difference in the maximum length allowed per line and the logic to wrap them.

Unity scenes are not yet supported. It shouldn't require much effort to do so.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

unityparser-2.1.0.tar.gz (31.5 kB view details)

Uploaded Source

Built Distribution

unityparser-2.1.0-py3-none-any.whl (17.1 kB view details)

Uploaded Python 3

File details

Details for the file unityparser-2.1.0.tar.gz.

File metadata

  • Download URL: unityparser-2.1.0.tar.gz
  • Upload date:
  • Size: 31.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.8.0 pkginfo/1.8.2 readme-renderer/32.0 requests/2.24.0 requests-toolbelt/0.9.1 urllib3/1.25.11 tqdm/4.62.3 importlib-metadata/4.11.1 keyring/23.5.0 rfc3986/2.0.0 colorama/0.4.4 CPython/3.9.5

File hashes

Hashes for unityparser-2.1.0.tar.gz
Algorithm Hash digest
SHA256 fbaf9ce85a6dddeb7f3dbbe7a1870346b9f7dc6c2bf7453dc7ecf9a59341393b
MD5 7538cf8c7fe1448141b4600d619dcddb
BLAKE2b-256 82fcf3c2efd423146ef790cce45e63f84aaad3ac4ec96de0d5f117a3ee46bc64

See more details on using hashes here.

File details

Details for the file unityparser-2.1.0-py3-none-any.whl.

File metadata

  • Download URL: unityparser-2.1.0-py3-none-any.whl
  • Upload date:
  • Size: 17.1 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.8.0 pkginfo/1.8.2 readme-renderer/32.0 requests/2.24.0 requests-toolbelt/0.9.1 urllib3/1.25.11 tqdm/4.62.3 importlib-metadata/4.11.1 keyring/23.5.0 rfc3986/2.0.0 colorama/0.4.4 CPython/3.9.5

File hashes

Hashes for unityparser-2.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 1b1b4d8fc71f652f824e6c906544501b35a782d7173e84735e1e1a2b9e8e66ae
MD5 09ec3152ffec6a96f81141153f10edf4
BLAKE2b-256 2a6b20df812732207db26b171947a906d2a93d048a4ac20a7d0726b2a0238a01

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page