Skip to main content

YAML Where?

yaml_where calculates source maps for YAML files, allowing you to correlate file locations with elements in YAML documents.

CI

Installation

$ pip install yaml-where

Examples

Mappings

Find the range containg the key and value of a map entry:

source_map = YAMLWhere.from_string("a: 1\nb: 42")
assert source_map.get_range(Item("b")) == Range(Position(1, 0), Position(1, 5))

Or get the range of just the key:

source_map = YAMLWhere.from_string("a: 1\nb: 42")
assert source_map.get_range(Key("a")) == Range(Position(0, 0), Position(0, 1))

Or just the value:

source_map = YAMLWhere.from_string("a: 1\nb: 42")
assert source_map.get_range(Value("b")) == Range(Position(1, 3), Position(1, 5))

You can also look up nested locations:

yaml = """a:
    b: 42
    c:
        doo: hola
"""
source_map = YAMLWhere.from_string(yaml)
assert source_map.get_range(Value("a"), Key("b")) == Range(Position(1, 4), Position(1, 5))
assert source_map.get_range(Value("a"), Key("c")) == Range(Position(2, 4), Position(2, 5))
assert source_map.get_range(Value("a"), Value("c"), Key("doo")) == Range(Position(3, 8), Position(3, 11))

Sequences

You can also find ranges for sequence elements:

yaml = """[1,
 a, foo,
 
     indented]
"""
source_map = YAMLWhere.from_string(yaml)
assert source_map.get_range(Index(0)) == Range(Position(0, 1), Position(0, 2))
assert source_map.get_range(Index(1)) == Range(Position(1, 1), Position(1, 2))
assert source_map.get_range(Index(2)) == Range(Position(1, 4), Position(1, 7))
assert source_map.get_range(Index(3)) == Range(Position(3, 5), Position(3, 13))

CI/CD

Tests will be run on every push to Github.

Use the "bump-and-publish" job in Github Actions to make new releases.

Metadata

Release files for yaml-where 2.0.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Built distribution (wheel)

Table of built distributions (wheels) for yaml-where 2.0.0
File Interpreter ABI Platform
yaml_where-2.0.0-py3-none-any.whl Python 3 none any Details

Release files / yaml_where-2.0.0-py3-none-any.whl

Download URL yaml_where-2.0.0-py3-none-any.whl
Size 8.3 kB
Tags Python 3
SHA-256 checksum
How to use checksums
ba3bc49a2e70badf4e98f73908d70f82824fde87e9a0a93eaf7269c62878ead3
BLAKE2b-256 checksum
How to use checksums
7d2cd74c5423d6501dc8b951444dcf33b83095b5cc4bb837fc96bbfafb45fab9
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.12.9

Release history Release notifications | RSS feed

This release

2.0.0 This release

1 release file

1.0.4

1 release file

1.0.1

1 release file

0.2.1

2 release files

0.1.0

2 release files

0.0.1

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page