pyyaml
yamllint
Our great sponsors
pyyaml | yamllint | |
---|---|---|
16 | 11 | |
2,406 | 2,665 | |
1.5% | - | |
3.9 | 8.3 | |
9 days ago | about 1 month ago | |
Python | Python | |
MIT License | GNU General Public License v3.0 only |
Stars - the number of stars that a project has on GitHub. Growth - month over month growth in stars.
Activity is a relative number indicating how actively a project is being developed. Recent commits have higher weight than older ones.
For example, an activity of 9.0 indicates that a project is amongst the top 10% of the most actively developed projects that we are tracking.
pyyaml
-
Cython 3.0 Released
Mostly because of PyYAML: https://github.com/yaml/pyyaml/issues/724
PyYAML knew about the breakage since january 2022[0], and nothing really happened. After a year and a half with lots of alphas and betas, I don't think there is much cython could do, short of fixing PyYAML themselves.
- I'm needing a hand, I do not understand some (seemingly) simple Python stuff.
-
Using Rust to not have to touch Yaml in k8s land
Note some parsers, most notably pyyaml are still at yaml 1.1, because 13 years is just not enough time to update it.
-
I accidentally used YAML.parse instead of JSON.parse, and it worked?
Many parsers either default to YAML pre-1.2 or do not even expose a YAML 1.2 option. PyYAML has no 1.2 option, for example. So unless Ansible is using something other than PyYAML...
Relevant (open) PR: https://github.com/yaml/pyyaml/pull/555
- The Norway Problem
-
Strict YAML deserialization in Python with marshmallow
So I imported PyYaml and call load method:
yamllint
-
IT Pro Tuesday #227 - Notification Tool, SPF/DKIM/DMARC Tutorial, YAML Linter & More
yamllint, as the name suggests, is a linter for YAML files. It checks syntax validity, as well as looking for more-complex errors like key repetition and cosmetic problems such as line length, trailing spaces, indentation etc. This one was indly recommended by yankdevil.
-
StrictYAML
StrictYAML removes features that might be useful for some usecases, such as Node anchors+Refs and Flow Style.
I don't think the cost of an additional standard is worth it in this case.
While YAML has issues, they aren't much of problem if you use a linter, such as yamllint [1].
-
Data and System Visualization Tools That Will Boost Your Productivity
On top of the above-mentioned tools, it's also a good idea to use YAML linter such this one or its CLI equivalent, which will validate and cleanup your documents.
-
Let CI check & fix your yamls
yamlfixer automates the fixing of problems reported by yamllint by parsing its output.
-
Modern Python setup for quality development
repos: - repo: https://github.com/pre-commit/pre-commit-hooks rev: v4.0.1 hooks: - id: check-added-large-files - id: check-ast - id: check-builtin-literals - id: check-case-conflict - id: check-docstring-first - id: check-executables-have-shebangs - id: check-json - id: check-merge-conflict - id: check-symlinks - id: check-toml - id: check-vcs-permalinks - id: check-xml - id: check-yaml args: [--allow-multiple-documents] - id: debug-statements - id: detect-aws-credentials args: [--allow-missing-credentials] - id: destroyed-symlinks - id: end-of-file-fixer - id: fix-byte-order-marker - id: fix-encoding-pragma args: [--remove] - id: forbid-new-submodules - id: mixed-line-ending args: [--fix=auto] - id: name-tests-test args: [--django] - id: requirements-txt-fixer - id: trailing-whitespace - repo: local hooks: - id: black name: black entry: poetry run black language: system types: [python] - id: flake8 name: flake8 entry: poetry run flake8 language: system types: [python] - repo: https://github.com/pycqa/isort rev: "5.9.1" hooks: - id: isort args: - --profile - black - --filter-files - repo: https://github.com/adrienverge/yamllint.git rev: v1.26.1 hooks: - id: yamllint args: [-c=.yamllint.yaml] - repo: https://gitlab.com/devopshq/gitlab-ci-linter rev: v1.0.2 hooks: - id: gitlab-ci-linter args: - "--server" - "https://your.gitlab.server" # Need env var GITLAB_PRIVATE_TOKEN with gitlab api read token - repo: https://github.com/commitizen-tools/commitizen rev: v2.17.11 hooks: - id: commitizen stages: [commit-msg] - repo: https://github.com/jumanjihouse/pre-commit-hooks rev: 2.1.5 # or specific git tag hooks: - id: forbid-binary - id: shellcheck - id: shfmt
-
CloudFormation Noob - using YAML
Or, run Yamllint externally. I do this, because I have more control: https://github.com/adrienverge/yamllint
-
The Norway Problem
You can catch this with yamllint (https://github.com/adrienverge/yamllint):
% cat countries.yml
What are some alternatives?
confuse - painless YAML config files for Python
strictyaml - Type-safe YAML parser and validator.
cue - CUE has moved to https://github.com/cue-lang/cue
pre-commit - A framework for managing and maintaining multi-language pre-commit hooks.
Flake8 - flake8 is a python tool that glues together pycodestyle, pyflakes, mccabe, and third-party plugins to check the style and quality of some python code.
edn - Extensible Data Notation
kubernetes - Production-Grade Container Scheduling and Management
jsonnet - Jsonnet - The data templating language
marshmallow - A lightweight library for converting complex objects to and from simple Python datatypes.
yamlfix - A simple opinionated yaml formatter that keeps your comments!
ron - Rusty Object Notation
python-strict-yaml-parsing - Examples of strict yaml parsing in python