yaml/pyyaml

Canonical source repository for PyYAML

2,941

stars

324

commits

Python

primary language

Jun 17, 2026

updated

python
yaml

README

PyYAML

A full-featured YAML processing framework for Python

Installation

To install, type python setup.py install.

By default, the setup.py script checks whether LibYAML is installed and if so, builds and installs LibYAML bindings. To skip the check and force installation of LibYAML bindings, use the option --with-libyaml: python setup.py --with-libyaml install. To disable the check and skip building and installing LibYAML bindings, use --without-libyaml: python setup.py --without-libyaml install.

When LibYAML bindings are installed, you may use fast LibYAML-based parser and emitter as follows:

>>> yaml.load(stream, Loader=yaml.CLoader)
>>> yaml.dump(data, Dumper=yaml.CDumper)

If you don't trust the input YAML stream, you should use:

>>> yaml.safe_load(stream)

Testing

PyYAML includes a comprehensive test suite.

To run the complete local test suite, type:

make test

This creates a local Python environment, runs the pure Python tests, builds a local copy of LibYAML, and then runs the LibYAML extension tests. The local LibYAML build is pinned by LIBYAML-REF, which defaults to 0.2.5.

To run only one test mode:

make test-python
make test-libyaml

To test with a specific Python version:

make test PYTHON-VERSION=3.13.5

Further Information

License

The PyYAML module was written by Kirill Simonov xi@resolvent.net. It is currently maintained by the YAML and Python communities.

PyYAML is released under the MIT license.

See the file LICENSE for more details.

Contributors

(top 30 of 37)

xitology

175 commits

ingydotnet

29 commits

perlpunk

28 commits

nitzmahone

26 commits

yaml/pyyaml

Canonical source repository for PyYAML

2,941

stars

324

commits

Python

primary language

Jun 17, 2026

updated

python
yaml

README

PyYAML

A full-featured YAML processing framework for Python

Installation

To install, type python setup.py install.

By default, the setup.py script checks whether LibYAML is installed and if so, builds and installs LibYAML bindings. To skip the check and force installation of LibYAML bindings, use the option --with-libyaml: python setup.py --with-libyaml install. To disable the check and skip building and installing LibYAML bindings, use --without-libyaml: python setup.py --without-libyaml install.

When LibYAML bindings are installed, you may use fast LibYAML-based parser and emitter as follows:

>>> yaml.load(stream, Loader=yaml.CLoader)
>>> yaml.dump(data, Dumper=yaml.CDumper)

If you don't trust the input YAML stream, you should use:

>>> yaml.safe_load(stream)

Testing

PyYAML includes a comprehensive test suite.

To run the complete local test suite, type:

make test

This creates a local Python environment, runs the pure Python tests, builds a local copy of LibYAML, and then runs the LibYAML extension tests. The local LibYAML build is pinned by LIBYAML-REF, which defaults to 0.2.5.

To run only one test mode:

make test-python
make test-libyaml

To test with a specific Python version:

make test PYTHON-VERSION=3.13.5

Further Information

License

The PyYAML module was written by Kirill Simonov xi@resolvent.net. It is currently maintained by the YAML and Python communities.

PyYAML is released under the MIT license.

See the file LICENSE for more details.

Contributors

(top 30 of 37)

xitology

175 commits

ingydotnet

29 commits

perlpunk

28 commits

nitzmahone

26 commits

Languages

Python

81.4%

Cython

17.5%