|
Server : Apache System : Linux ecngx264.inmotionhosting.com 4.18.0-553.77.1.lve.el8.x86_64 #1 SMP Wed Oct 8 14:21:00 UTC 2025 x86_64 User : lonias5 ( 3576) PHP Version : 7.3.33 Disable Function : NONE Directory : /usr/lib/imh-whmapi/venv/lib/python3.13/site-packages/rads/ |
Upload File : |
"""Helpers for yaml parsing"""
import yaml
class DumbYamlConstructor(yaml.constructor.SafeConstructor):
"""Subclass of SafeYamlConstructor that leaves bool/null/int as strs"""
ignored_tags = [
'tag:yaml.org,2002:bool',
'tag:yaml.org,2002:null',
'tag:yaml.org,2002:int',
]
def __init__(self):
super().__init__()
for tag in self.ignored_tags:
self.add_constructor(tag, DumbYamlConstructor.return_unchanged)
def return_unchanged(self, node):
"""Handler for scalars that shouldn't be converted"""
return self.construct_scalar(node)
class DumbYamlLoader(
yaml.reader.Reader,
yaml.scanner.Scanner,
yaml.parser.Parser,
yaml.composer.Composer,
DumbYamlConstructor,
yaml.resolver.Resolver,
):
"""Custom YAML loader that leaves bool/null/int as strs, for use
parsing cPanel's /etc/ YAML files
Example:
yaml.load(file_handle, rads.DumbYamlLoader)
"""
__module__ = 'rads'
def __init__(self, stream):
yaml.reader.Reader.__init__(self, stream)
yaml.scanner.Scanner.__init__(self)
yaml.parser.Parser.__init__(self)
yaml.composer.Composer.__init__(self)
DumbYamlConstructor.__init__(self)
yaml.resolver.Resolver.__init__(self)