diff options
author | Jonah BrĂ¼chert <jbb@kaidan.im> | 2024-02-13 01:26:41 +0100 |
---|---|---|
committer | Jonah BrĂ¼chert <jbb@kaidan.im> | 2024-02-13 01:26:41 +0100 |
commit | 3ca44c6ae0bd51a2ef7a3a9a8d0aded8fc968f7f (patch) | |
tree | 96e3b2397f9b83a2792aca1bb5ac7cef66678b2c /doc | |
parent | c7b3b32e5768a165bbc156f8abb12af428152ee3 (diff) | |
download | bcfg2-3ca44c6ae0bd51a2ef7a3a9a8d0aded8fc968f7f.tar.gz bcfg2-3ca44c6ae0bd51a2ef7a3a9a8d0aded8fc968f7f.tar.bz2 bcfg2-3ca44c6ae0bd51a2ef7a3a9a8d0aded8fc968f7f.zip |
sphinx: Fix pickle
Diffstat (limited to 'doc')
-rw-r--r-- | doc/exts/xmlschema.py | 20 |
1 files changed, 17 insertions, 3 deletions
diff --git a/doc/exts/xmlschema.py b/doc/exts/xmlschema.py index 63ab6f489..3054b4dd5 100644 --- a/doc/exts/xmlschema.py +++ b/doc/exts/xmlschema.py @@ -807,6 +807,20 @@ class XMLDomain(Domain): self.object_types[dtype].attrs['searchprio']) +class XMLPickleWrapper(object): + def __init__(self, element): + self.element = element + + def __getattr__(self, name): + return getattr(self.element, name) + + def __getstate__(self): + return dict(element=lxml.etree.tostring(self.element)) + + def __setstate__(self, state): + self.element = lxml.etree.fromstring(state['element']) + + def setup(app): app.add_config_value('xmlschema_path', '.', False) app.add_config_value('xmlschema_datatype_url', @@ -858,12 +872,12 @@ def load_xml_schemas(app): # schemas don't require namespaces to be identified # uniquely, but we let the user identify them either with # or without the namespace - entities[None]['schema'][relpath] = schema - entities[ns]['schema'][relpath] = schema + entities[None]['schema'][relpath] = XMLPickleWrapper(schema) + entities[ns]['schema'][relpath] = XMLPickleWrapper(schema) for entity in schema.xpath("//xs:*[@name]", namespaces=NSMAP): tag = entity.tag[len(XS_NS):] if tag in entities[ns]: - entities[ns][tag][entity.get("name")] = entity + entities[ns][tag][entity.get("name")] = XMLPickleWrapper(entity) app.builder.env.xmlschema_namespaces = namespaces app.builder.env.xmlschema_namespaces_by_uri = namespaces_by_uri app.builder.env.xmlschema_entities = entities |