Build modernization (GHA, wheels, setuptools) (#407)

* Move most CI to GitHub Actions
* Build sdist
* Build manylinux1 wheels with libyaml ext (also tested with 2010 and 2014)
* Build MacOS x86_64 wheels with libyaml ext
* Windows wheel builds remain on AppVeyor until we drop 2.7 support in 6.0
* Smoke tests of all post-build artifacts
* Add PEP517/518 build declaration (pyproject.toml with setuptools backend)
* Fully move build to setuptools
* Drop Python 3.5 support
* Declare Python 3.9 support
* Update PyPI metadata now that setuptools lets it flow through

Co-authored-by: Matt Davis <>
24 files changed
tree: 5d5126f4d895ce8ba6b1972829ee678fc820f843
  1. .appveyor.yml
  2. .github/
  3. .gitignore
  4. Changes
  5. License
  7. Makefile
  9. announcement.msg
  10. examples/
  11. lib/
  12. lib3/
  13. packaging/
  14. pyproject.toml
  15. setup.cfg
  17. tests/
  18. tox.ini
  19. yaml/


A full-featured YAML processing framework for Python


To install, type python install.

By default, the 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 --with-libyaml install. To disable the check and skip building and installing LibYAML bindings, use --without-libyaml: python --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)


PyYAML includes a comprehensive test suite. To run the tests, type python test.

Further Information


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

PyYAML is released under the MIT license.

See the file LICENSE for more details.