Skip to main content

A python library to parse and dump Unity YAML files

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 and filter for a single or multiple entries
hero_prefab_file = 'UnityProject/Assets/Prefabs/Hero.prefab'
doc = UnityDocument.load_yaml(hero_prefab_file)
# accessing all entries
doc.entries
# [<UnityClass>, <UnityClass>, ...]
# accessing first entry
doc.entry
# <UnityClass>
# get single entry uniquely defined by filters
entry = doc.get(class_name='MonoBehaviour', attributes=('m_MaxHealth',))
entry.m_MaxHealth += 10
# get multiple entries matching a filter
entries = doc.filter(class_names=('MonoBehaviour',), attributes=('m_Enabled',))
for entry in entries:
    entry.m_Enabled = 1
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.UnityDocument.get(class_name=None, attributes=None)

Method: Return a single entry uniquely matching the given filters. Must exist exactly one.

unityparser.UnityDocument.filter(class_names=None, attributes=None)

Method: Return a list of entries matching the given filters. Many or none can be matched.

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

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.

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.0.0.tar.gz (14.9 kB view details)

Uploaded Source

Built Distributions

unityparser-2.0.0-py3.6.egg (37.2 kB view details)

Uploaded Source

unityparser-2.0.0-py3-none-any.whl (18.3 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: unityparser-2.0.0.tar.gz
  • Upload date:
  • Size: 14.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.13.0 pkginfo/1.5.0.1 requests/2.22.0 setuptools/52.0.0.post20210125 requests-toolbelt/0.9.1 tqdm/4.32.1 CPython/3.6.13

File hashes

Hashes for unityparser-2.0.0.tar.gz
Algorithm Hash digest
SHA256 173614e70fc64bdf40d295bb7c56c01029c34e6bcc61855ecef10aba3ddc7169
MD5 328e7c33c148f3755ee6133058bc11f5
BLAKE2b-256 cb98ff492b019c8a684ff24ffa8281a84821abafcf1a2d656302c66f30834c4d

See more details on using hashes here.

File details

Details for the file unityparser-2.0.0-py3.6.egg.

File metadata

  • Download URL: unityparser-2.0.0-py3.6.egg
  • Upload date:
  • Size: 37.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.13.0 pkginfo/1.5.0.1 requests/2.22.0 setuptools/52.0.0.post20210125 requests-toolbelt/0.9.1 tqdm/4.32.1 CPython/3.6.13

File hashes

Hashes for unityparser-2.0.0-py3.6.egg
Algorithm Hash digest
SHA256 d4ccc4415ab1ab27d6eb848eb9617a3024a7c83655d0b570100c46095c2e2e5e
MD5 49a705452945f58f942339247716bd7e
BLAKE2b-256 1bf30a33a765dc4c6e37145e8ba00f1284d0c0028505804b847256166d152e6d

See more details on using hashes here.

File details

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

File metadata

  • Download URL: unityparser-2.0.0-py3-none-any.whl
  • Upload date:
  • Size: 18.3 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.13.0 pkginfo/1.5.0.1 requests/2.22.0 setuptools/52.0.0.post20210125 requests-toolbelt/0.9.1 tqdm/4.32.1 CPython/3.6.13

File hashes

Hashes for unityparser-2.0.0-py3-none-any.whl
Algorithm Hash digest
SHA256 6c583c15607d5707d12d52b145e851d5ec96ff8f44dbc432de7e6ff176815b82
MD5 bf155fa1d3d37e3b2189bf92c6c510f7
BLAKE2b-256 805a509e87be1dd8ad1fcc75b8f21ac5530804603409e3b52e9a0cd802be953b

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