summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJonah BrĂ¼chert <jbb@kaidan.im>2024-02-13 01:26:41 +0100
committerJonah BrĂ¼chert <jbb@kaidan.im>2024-02-13 01:26:41 +0100
commit3ca44c6ae0bd51a2ef7a3a9a8d0aded8fc968f7f (patch)
tree96e3b2397f9b83a2792aca1bb5ac7cef66678b2c
parentc7b3b32e5768a165bbc156f8abb12af428152ee3 (diff)
downloadbcfg2-3ca44c6ae0bd51a2ef7a3a9a8d0aded8fc968f7f.tar.gz
bcfg2-3ca44c6ae0bd51a2ef7a3a9a8d0aded8fc968f7f.tar.bz2
bcfg2-3ca44c6ae0bd51a2ef7a3a9a8d0aded8fc968f7f.zip
sphinx: Fix pickle
-rw-r--r--doc/exts/xmlschema.py20
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