Convert Figma logo to code with AI

yaml logopyyaml

Canonical source repository for PyYAML

2,524
514
2,524
284

Top Related Projects

6,265

JavaScript YAML parser and dumper. Very fast.

11,663

yq is a portable command-line YAML, JSON, XML, CSV, TOML and properties processor

Quick Overview

PyYAML is a YAML parser and emitter for Python. It allows you to read and write YAML-formatted data in your Python applications. YAML is a human-readable data serialization format that is often used for configuration files, data exchange, and other applications.

Pros

  • Simplicity: PyYAML provides a straightforward and easy-to-use API for working with YAML data in Python.
  • Flexibility: The library supports a wide range of YAML features, including scalars, sequences, mappings, and more.
  • Performance: PyYAML is written in C and is generally faster than pure-Python YAML parsers.
  • Widespread Adoption: PyYAML is a widely-used and well-established library in the Python ecosystem.

Cons

  • Limited Validation: PyYAML does not provide extensive validation of YAML data, which can lead to unexpected behavior if the input is not well-formed.
  • Potential Security Risks: Like other YAML parsers, PyYAML can be vulnerable to security issues if untrusted YAML data is loaded without proper precautions.
  • Lack of Maintenance: The project has not seen significant updates in recent years, and the maintainers have indicated that they are no longer actively developing the library.
  • Python 2 Dependency: PyYAML is still dependent on Python 2, which may be a concern for projects that have moved to Python 3.

Code Examples

Here are a few examples of how to use PyYAML:

  1. Reading YAML data from a file:
import yaml

with open('config.yaml', 'r') as f:
    config = yaml.load(f, Loader=yaml.FullLoader)

print(config)
  1. Writing YAML data to a file:
import yaml

data = {
    'name': 'John Doe',
    'age': 30,
    'hobbies': ['reading', 'hiking', 'cooking']
}

with open('output.yaml', 'w') as f:
    yaml.dump(data, f, default_flow_style=False)
  1. Parsing YAML data from a string:
import yaml

yaml_string = """
name: John Doe
age: 30
hobbies:
  - reading
  - hiking
  - cooking
"""

data = yaml.load(yaml_string, Loader=yaml.FullLoader)
print(data)
  1. Handling YAML errors:
import yaml

try:
    yaml.load('{invalid: yaml}', Loader=yaml.FullLoader)
except yaml.YAMLError as exc:
    print(f"YAML error: {exc}")

Getting Started

To get started with PyYAML, you can install it using pip:

pip install pyyaml

Once installed, you can start using the library in your Python code. The basic usage involves loading YAML data from a file or string, and then accessing the data as a Python dictionary or list.

For more detailed information on using PyYAML, you can refer to the project's documentation.

Competitor Comparisons

6,265

JavaScript YAML parser and dumper. Very fast.

Pros of js-yaml

  • Better performance and faster parsing compared to PyYAML
  • More active development and frequent updates
  • Supports both browser and Node.js environments

Cons of js-yaml

  • Limited support for custom tags and complex YAML structures
  • Smaller community and fewer resources compared to PyYAML
  • May have compatibility issues with some YAML 1.2 features

Code Comparison

PyYAML:

import yaml

data = yaml.safe_load("""
- name: John
  age: 30
""")
print(data)

js-yaml:

const yaml = require('js-yaml');

const data = yaml.load(`
- name: John
  age: 30
`);
console.log(data);

Both libraries offer similar basic functionality for parsing YAML, but their syntax and usage differ slightly due to the language differences. PyYAML uses safe_load() for secure parsing, while js-yaml uses load() by default. js-yaml also provides additional methods like safeLoad() for enhanced security.

js-yaml is generally faster and more actively maintained, making it a popular choice for JavaScript projects. However, PyYAML has broader YAML specification support and a larger ecosystem, which can be advantageous for Python developers working with complex YAML structures.

11,663

yq is a portable command-line YAML, JSON, XML, CSV, TOML and properties processor

Pros of yq

  • Command-line tool for easy YAML processing and manipulation
  • Supports jq-like syntax for powerful querying and transformation
  • Can work with JSON and XML in addition to YAML

Cons of yq

  • Limited to command-line usage, not a library for integration into Python projects
  • May require learning a new syntax for complex operations

Code Comparison

yq example:

yq e '.users[] | select(.age > 30)' input.yaml

PyYAML example:

import yaml

with open('input.yaml', 'r') as file:
    data = yaml.safe_load(file)
    users_over_30 = [user for user in data['users'] if user['age'] > 30]

Summary

yq is a powerful command-line tool for YAML processing, offering a concise syntax for querying and manipulating YAML data. It's particularly useful for shell scripts and quick data transformations. PyYAML, on the other hand, is a Python library that provides YAML parsing and dumping capabilities, making it more suitable for integration into Python projects. While yq excels in command-line operations, PyYAML offers more flexibility for programmatic YAML handling within Python applications.

Convert Figma logo designs to code with AI

Visual Copilot

Introducing Visual Copilot: A new AI model to turn Figma designs to high quality code using your components.

Try Visual Copilot

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 tests, type python setup.py test.

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.