Как переопределить базовый преобразователь в pyyamlPython

Программы на Python
Anonymous
Как переопределить базовый преобразователь в pyyaml

Сообщение Anonymous »

Я нашел несколько комментариев и похожий вопрос о том, как переопределить преобразователь.
https://github.com/yaml/pyyaml/issues/3 ... -576821252

@StrayDragon На самом деле вы можете изменить это поведение, если хотите, переопределив регулярное выражение тега bool в базовом преобразователе (https://github.com/yaml/pyyaml/blob/master/lib/ yaml/resolver.py#L170-L175), затем подключите свой преобразователь вместо стандартного к новому экземпляру загрузчика (который передается в yaml.load()).

Я понимаю теорию, но она не работает, когда я пытаюсь ее реализовать.
Это мой код на Python:

Код: Выделить всё

 import yaml
import re

class CustomLoader(yaml.FullLoader):
pass

# Override the boolean tag regex
yaml.resolver.BaseResolver.add_implicit_resolver(
'tag:yaml.org,2002:bool',
re.compile(
r'''^(?:yes|Yes|YES|no|No|NO
|true|True|TRUE|false|False|FALSE
|off|Off|OFF)$''',
re.X
),
list('yYnNtTfFoO')
)

# Read the workflow YAML file using the custom loader
with open(file_path, 'r') as file:
yaml_content = yaml.load(file, Loader=CustomLoader)
И я думал, что это сработает, но мой исходный файл YML

Код: Выделить всё

name: cloud
on:
push:
workflow_dispatch:
concurrency:
group: "${{ github.ref }}"
Все еще заменяется

Код: Выделить всё

name: cloud-cicd-ghc-test/diego-test-migrate-to-github-ci
True:
push: null
workflow_dispatch: null
concurrency:
group: "${{ github.ref }}"

Поэтому я не знаю, как это сделать.

Подробнее здесь: https://stackoverflow.com/questions/784 ... -in-pyyaml

Вернуться в «Python»