Source maps for YAML files
Project description
YAML Where?
yaml_where calculates source maps for YAML files, allowing you to correlate file locations with elements in
YAML documents.
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.
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distributions
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file yaml_where-2.0.0-py3-none-any.whl.
File metadata
- Download URL: yaml_where-2.0.0-py3-none-any.whl
- Upload date:
- Size: 8.3 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.12.9
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
ba3bc49a2e70badf4e98f73908d70f82824fde87e9a0a93eaf7269c62878ead3
|
|
| MD5 |
905f4d2fc1035ac3c6c437f312e92fea
|
|
| BLAKE2b-256 |
7d2cd74c5423d6501dc8b951444dcf33b83095b5cc4bb837fc96bbfafb45fab9
|