summaryrefslogtreecommitdiff
path: root/src/saml2/tools/parse_xsd2.py
diff options
context:
space:
mode:
Diffstat (limited to 'src/saml2/tools/parse_xsd2.py')
-rw-r--r--src/saml2/tools/parse_xsd2.py126
1 files changed, 63 insertions, 63 deletions
diff --git a/src/saml2/tools/parse_xsd2.py b/src/saml2/tools/parse_xsd2.py
index db775548..ce9f433f 100644
--- a/src/saml2/tools/parse_xsd2.py
+++ b/src/saml2/tools/parse_xsd2.py
@@ -13,7 +13,7 @@ import six
__version__ = 0.5
-from xml.etree import cElementTree as ElementTree
+from xml.etree import ElementTree as ElementTree
INDENT = 4 * " "
@@ -65,9 +65,9 @@ def def_init(imports, attributes):
_name = elem[0]
if elem[2]:
- line.append("%s%s='%s'," % (indent3, _name, elem[2]))
+ line.append(f"{indent3}{_name}='{elem[2]}',")
else:
- line.append("%s%s=%s," % (indent3, _name, elem[2]))
+ line.append(f"{indent3}{_name}={elem[2]},")
for _, elems in imports.items():
for elem in elems:
@@ -75,7 +75,7 @@ def def_init(imports, attributes):
_name = elem + "_"
else:
_name = elem
- line.append("%s%s=None," % (indent3, _name))
+ line.append(f"{indent3}{_name}=None,")
line.append("%stext=None," % indent3)
line.append("%sextension_elements=None," % indent3)
@@ -94,12 +94,12 @@ def base_init(imports):
_name = attr + "_"
else:
_name = attr
- line.append("%s%s=%s," % (indent4, _name, _name))
+ line.append(f"{indent4}{_name}={_name},")
line.append("%s)" % indent4)
else:
# TODO have to keep apart which properties come from which superior
for sup, elems in imports.items():
- line.append("%s%s.__init__(self, " % (INDENT + INDENT, sup))
+ line.append(f"{INDENT + INDENT}{sup}.__init__(self, ")
lattr = elems[:]
lattr.extend(BASE_ELEMENT)
for attr in lattr:
@@ -107,7 +107,7 @@ def base_init(imports):
_name = attr + "_"
else:
_name = attr
- line.append("%s%s=%s," % (indent4, _name, _name))
+ line.append(f"{indent4}{_name}={_name},")
line.append("%s)" % indent4)
return line
@@ -126,7 +126,7 @@ def initialize(attributes):
else:
_vname = val
- line.append("%sself.%s=%s" % (indent, _name, _vname))
+ line.append(f"{indent}self.{_name}={_vname}")
return line
@@ -211,7 +211,7 @@ def klass_namn(obj):
return obj.name
-class PyObj(object):
+class PyObj:
def __init__(self, name=None, pyname=None, root=None):
self.name = name
self.done = False
@@ -235,15 +235,15 @@ class PyObj(object):
def child_spec(self, target_namespace, prop, mod, typ, lista):
if mod:
namesp = external_namespace(self.root.modul[mod])
- pkey = "{%s}%s" % (namesp, prop.name)
- typ = "%s.%s" % (mod, typ)
+ pkey = f"{{{namesp}}}{prop.name}"
+ typ = f"{mod}.{typ}"
else:
- pkey = "{%s}%s" % (target_namespace, prop.name)
+ pkey = f"{{{target_namespace}}}{prop.name}"
if lista:
- return "c_children['%s'] = ('%s', [%s])" % (pkey, prop.pyname, typ)
+ return f"c_children['{pkey}'] = ('{prop.pyname}', [{typ}])"
else:
- return "c_children['%s'] = ('%s', %s)" % (pkey, prop.pyname, typ)
+ return f"c_children['{pkey}'] = ('{prop.pyname}', {typ})"
def knamn(self, sup, cdict):
cname = cdict[sup].class_name
@@ -251,7 +251,7 @@ class PyObj(object):
(namesp, tag) = cdict[sup].name.split(".")
if namesp:
ctag = self.root.modul[namesp].factory(tag).__class__.__name__
- cname = "%s.%s" % (namesp, ctag)
+ cname = f"{namesp}.{ctag}"
else:
cname = tag + "_"
return cname
@@ -267,7 +267,7 @@ class PyObj(object):
for prop in own:
if isinstance(prop, PyAttribute):
- line.append("%sc_attributes['%s'] = %s" % (INDENT, prop.name, prop.spec()))
+ line.append(f"{INDENT}c_attributes['{prop.name}'] = {prop.spec()}")
if prop.fixed:
args.append((prop.pyname, prop.fixed, None))
else:
@@ -290,20 +290,20 @@ class PyObj(object):
if prop.name in ignore:
pass
else:
- line.append("%s%s" % (INDENT, self.child_spec(target_namespace, prop, mod, cname, lista)))
+ line.append(f"{INDENT}{self.child_spec(target_namespace, prop, mod, cname, lista)}")
pmin = int(getattr(prop, "min", 1))
if pmax == 1 and pmin == 1:
pass
elif prop.max == "unbounded":
- line.append("%sc_cardinality['%s'] = {\"min\":%s}" % (INDENT, prop.pyname, pmin))
+ line.append(f"{INDENT}c_cardinality['{prop.pyname}'] = {{\"min\":{pmin}}}")
else:
line.append('%sc_cardinality[\'%s\'] = {"min":%s, "max":%d}' % (INDENT, prop.pyname, pmin, pmax))
child.append(prop.pyname)
if lista:
- args.append((prop.pyname, "%s or []" % (prop.pyname,), None))
+ args.append((prop.pyname, f"{prop.pyname} or []", None))
else:
args.append((prop.pyname, prop.pyname, None))
@@ -341,38 +341,38 @@ class PyObj(object):
c_name = klass_namn(self)
if not superior:
- line.append("class %s(SamlBase):" % (c_name,))
+ line.append(f"class {c_name}(SamlBase):")
else:
- line.append("class %s(%s):" % (c_name, ",".join(sups)))
+ line.append("class {}({}):".format(c_name, ",".join(sups)))
if hasattr(self, "scoped"):
pass
else:
- line.append('%s"""The %s:%s element """' % (INDENT, target_namespace, self.name))
+ line.append(f'{INDENT}"""The {target_namespace}:{self.name} element """')
line.append("")
- line.append("%sc_tag = '%s'" % (INDENT, self.name))
- line.append("%sc_namespace = NAMESPACE" % (INDENT,))
+ line.append(f"{INDENT}c_tag = '{self.name}'")
+ line.append(f"{INDENT}c_namespace = NAMESPACE")
try:
if self.value_type:
- if isinstance(self.value_type, six.string_types):
- line.append("%sc_value_type = '%s'" % (INDENT, self.value_type))
+ if isinstance(self.value_type, str):
+ line.append(f"{INDENT}c_value_type = '{self.value_type}'")
else:
- line.append("%sc_value_type = %s" % (INDENT, self.value_type))
+ line.append(f"{INDENT}c_value_type = {self.value_type}")
except AttributeError:
pass
if not superior:
for var, cps in CLASS_PROP:
- line.append("%s%s = SamlBase.%s%s" % (INDENT, var, var, cps))
+ line.append(f"{INDENT}{var} = SamlBase.{var}{cps}")
else:
for sup in sups:
for var, cps in CLASS_PROP:
- line.append("%s%s = %s.%s%s" % (INDENT, var, sup, var, cps))
+ line.append(f"{INDENT}{var} = {sup}.{var}{cps}")
(args, child, inh) = self._do_properties(line, cdict, ignore, target_namespace)
if child:
- line.append("%sc_child_order.extend([%s])" % (INDENT, "'" + "', '".join(child) + "'"))
+ line.append("{}c_child_order.extend([{}])".format(INDENT, "'" + "', '".join(child) + "'"))
if args:
if inh:
@@ -386,7 +386,7 @@ class PyObj(object):
line.append("")
if not self.abstract or not self.class_name.endswith("_"):
line.append("def %s_from_string(xml_string):" % pyify(self.class_name))
- line.append("%sreturn saml2.create_class_from_xml_string(%s, xml_string)" % (INDENT, self.class_name))
+ line.append(f"{INDENT}return saml2.create_class_from_xml_string({self.class_name}, xml_string)")
line.append("")
self.done = True
@@ -436,7 +436,7 @@ class PyElement(PyObj):
def __init__(self, name=None, pyname=None, root=None, parent=""):
PyObj.__init__(self, name, pyname, root)
if parent:
- self.class_name = "%s_%s" % (leading_uppercase(parent), self.name)
+ self.class_name = f"{leading_uppercase(parent)}_{self.name}"
else:
self.class_name = leading_uppercase(self.name)
self.ref = None
@@ -499,7 +499,7 @@ class PyElement(PyObj):
def _external_class(self, mod, typ, cdict, child, target_namespace, ignore):
# Will raise exception if class can't be found
cname = self.root.modul[mod].factory(typ).__class__.__name__
- imp_name = "%s.%s" % (mod, cname)
+ imp_name = f"{mod}.{cname}"
if imp_name not in cdict:
# create import object so I can get the properties from it
@@ -554,7 +554,7 @@ class PyElement(PyObj):
if verify_import(self.root.modul[mod], typ):
return req, text
else:
- raise Exception("Import attempted on %s from %s module failed - wasn't there" % (typ, mod))
+ raise Exception(f"Import attempted on {typ} from {mod} module failed - wasn't there")
elif not child:
self.superior = [typ]
text = self.class_definition(target_namespace, cdict, ignore=ignore)
@@ -580,7 +580,7 @@ def _do(obj, target_namespace, cdict, prep):
else:
obj.done = True
if req:
- if isinstance(req, six.string_types):
+ if isinstance(req, str):
prep.append(req)
else:
prep.extend(req)
@@ -716,12 +716,12 @@ class PyAttribute(PyObj):
def spec(self):
if isinstance(self.type, PyObj):
- return "('%s', %s, %s)" % (self.pyname, self.type.class_name, self.required)
+ return f"('{self.pyname}', {self.type.class_name}, {self.required})"
else:
if self.type:
- return "('%s', '%s', %s)" % (self.pyname, self.type, self.required)
+ return f"('{self.pyname}', '{self.type}', {self.required})"
else:
- return "('%s', '%s', %s)" % (self.pyname, self.base, self.required)
+ return f"('{self.pyname}', '{self.base}', {self.required})"
class PyAny(PyObj):
@@ -730,14 +730,14 @@ class PyAny(PyObj):
self.done = True
-class PyAttributeGroup(object):
+class PyAttributeGroup:
def __init__(self, name, root):
self.name = name
self.root = root
self.properties = []
-class PyGroup(object):
+class PyGroup:
def __init__(self, name, root):
self.name = name
self.root = root
@@ -828,7 +828,7 @@ def _spec(elem):
def _do_from_string(name):
print
print("def %s_from_string(xml_string):" % pyify(name))
- print("%sreturn saml2.create_class_from_xml_string(%s, xml_string)" % (INDENT, name))
+ print(f"{INDENT}return saml2.create_class_from_xml_string({name}, xml_string)")
def _namespace_and_tag(obj, param, top):
@@ -847,7 +847,7 @@ def _namespace_and_tag(obj, param, top):
# -----------------------------------------------------------------------------
-class Simple(object):
+class Simple:
def __init__(self, elem):
self.default = None
self.fixed = None
@@ -905,10 +905,10 @@ class Attribute(Simple):
name = tag
else:
external = True
- name = "{%s}%s" % (self.xmlns_map[namespace], tag)
+ name = f"{{{self.xmlns_map[namespace]}}}{tag}"
else:
if namespace == "xml":
- name = "{%s}%s" % (XML_NAMESPACE, tag)
+ name = f"{{{XML_NAMESPACE}}}{tag}"
except AttributeError:
name = self.name
pyname = pyify(name)
@@ -965,7 +965,7 @@ class Attribute(Simple):
pass
if DEBUG:
- print("#--ATTR py_attr:%s" % (objekt,))
+ print(f"#--ATTR py_attr:{objekt}")
return objekt
@@ -1036,7 +1036,7 @@ def name_or_ref(elem, top):
return elem.name
-class Complex(object):
+class Complex:
def __init__(self, elem):
self.value_of = ""
self.parts = []
@@ -1146,7 +1146,7 @@ def min_max(cls, objekt, argv):
class Element(Complex):
def __str__(self):
- return "%s" % (self.__dict__,)
+ return f"{self.__dict__}"
def klass(self, top):
xns = None
@@ -1187,7 +1187,7 @@ class Element(Complex):
if ctyp:
return ctyp.elements(top)
elif xns:
- return ["%s.%s" % (xns, name)]
+ return [f"{xns}.{name}"]
else:
return []
@@ -1207,7 +1207,7 @@ class Element(Complex):
myname = ""
if DEBUG:
- print("#Element.repr '%s' (child=%s) [%s]" % (myname, child, self._generated))
+ print(f"#Element.repr '{myname}' (child={child}) [{self._generated}]")
self.py_class = objekt = PyElement(myname, root=top)
min_max(self, objekt, argv)
@@ -1265,7 +1265,7 @@ class Element(Complex):
raise
if parent:
- objekt.class_name = "%s_%s" % (leading_uppercase(parent), objekt.name)
+ objekt.class_name = f"{leading_uppercase(parent)}_{objekt.name}"
objekt.scoped = True
return objekt
@@ -1409,7 +1409,7 @@ class ComplexType(Complex):
new_sup = None
value_type = name
else:
- new_sup = "%s.%s" % (namespace, name)
+ new_sup = f"{namespace}.{name}"
# print("#Superior: %s" % new_sup)
if new_sup:
@@ -1647,7 +1647,7 @@ def output(elem, target_namespace, eldict, ignore=None):
for prep in preps:
if prep:
done = 1
- if isinstance(prep, six.string_types):
+ if isinstance(prep, str):
print(prep)
else:
for item in prep:
@@ -1745,7 +1745,7 @@ class Schema(Complex):
lista = False
spec = objekt.child_spec(self.target_namespace, prop, mod, cname, lista)
- lines = ["%s.%s" % (objekt.class_name, spec)]
+ lines = [f"{objekt.class_name}.{spec}"]
tup.append((prop, lines, spec))
return tup
@@ -1796,7 +1796,7 @@ class Schema(Complex):
for sup in sups:
if sup.name == ref:
for tup in tups:
- tup[1].append("%s.%s" % (objekt.class_name, tup[2]))
+ tup[1].append(f"{objekt.class_name}.{tup[2]}")
break
else:
pass
@@ -1842,7 +1842,7 @@ class Schema(Complex):
continue
if elem.abstract:
continue
- print("%s%s.c_tag: %s_from_string," % (INDENT, elem.class_name, pyify(elem.class_name)))
+ print(f"{INDENT}{elem.class_name}.c_tag: {pyify(elem.class_name)}_from_string,")
print("}")
print()
@@ -1855,14 +1855,14 @@ class Schema(Complex):
if elem.abstract:
continue
lcen = elem.name
- print("%s'%s': %s," % (INDENT, lcen, elem.class_name))
+ print(f"{INDENT}'{lcen}': {elem.class_name},")
listed.append(lcen)
for elem in self.elems:
if isinstance(elem, PyAttribute) or isinstance(elem, PyGroup):
continue
lcen = elem.name
if elem.abstract and lcen not in listed:
- print("%s'%s': %s," % (INDENT, lcen, elem.class_name))
+ print(f"{INDENT}'{lcen}': {elem.class_name},")
listed.append(lcen)
print("}")
print
@@ -1892,7 +1892,7 @@ class Schema(Complex):
print("from %s import *" % modul)
for _namespace, (mod, namn) in self.impo.items():
if namn:
- print("import %s as %s" % (mod, namn))
+ print(f"import {mod} as {namn}")
print()
print("NAMESPACE = '%s'" % self.target_namespace)
print
@@ -1928,9 +1928,9 @@ class Schema(Complex):
print("AG_%s = [" % attrgrp.name)
for prop in attrgrp.properties[0]:
if isinstance(prop.type, PyObj):
- print("%s('%s', %s_, %s)," % (INDENT, prop.name, prop.type.name, prop.required))
+ print(f"{INDENT}('{prop.name}', {prop.type.name}_, {prop.required}),")
else:
- print("%s('%s', '%s', %s)," % (INDENT, prop.name, prop.type, prop.required))
+ print(f"{INDENT}('{prop.name}', '{prop.type}', {prop.required}),")
print("]")
print()
@@ -1982,7 +1982,7 @@ ELEMENTFUNCTION = {}
for nsp in NAMESPACE_BASE:
for nskey, func in _MAP.items():
- ELEMENTFUNCTION["{%s}%s" % (nsp, nskey)] = func
+ ELEMENTFUNCTION[f"{{{nsp}}}{nskey}"] = func
def evaluate(typ, elem):
@@ -2084,12 +2084,12 @@ def find_and_replace(base, mods):
def read_schema(doc, add, defs, impo, modul, ignore, sdir):
for path in sdir:
- fil = "%s%s" % (path, doc)
+ fil = f"{path}{doc}"
try:
fp = open(fil)
fp.close()
break
- except IOError as e:
+ except OSError as e:
if e.errno == errno.EACCES:
continue
else: