Python - Zeep SOAP Complex Header

Me gustaría pasar el encabezado "complejo" a un servicio SOAP con la biblioteca zeep

Así es como debería verse

 <soapenv:Header>
      <something:myVar1>FOO</something:myVar1>
      <something:myVar2>JAM</something:myVar2>
 </soapenv:Header>

Supongo que logro enviar un encabezado de esta manera

header = xsd.Element(
    '{http://urlofthews}Header',
        xsd.ComplexType([
        xsd.Element(
        '{http://urlofthews}myVar1',
        xsd.String()),
        xsd.Element(
        '{http://urlofthews}myVar2',
        xsd.String())
        ])
    )

header_value = header(myVar1='FOO',myVar2='JAM')
print (header_value)
datasoap=client.service.UserRessourcesCatalog(requete,_soapheaders=[header_value])

Pero no entiendo cómo declarar y pasar el espacio de nombres "algo" en mi encabezado con el XSD.

Alguna ayuda ?

Gracias por adelantado.

Atentamente

Como se menciona en la documentación

http://docs.python-zeep.org/en/master/headers.html

"Otra opción es pasar un objeto Elemento lxml. Esto generalmente es útil si wsdl no define un encabezado de jabón pero el servidor sí lo espera".

cual es mi caso así que lo intenté

try:
        import xml.etree.cElementTree as ET
    except ImportError:
        import xml.etree.ElementTree as ET
    ET.register_namespace('something', 'http://urlofthews')

    headerXML = ET.Element("soapenv:Header")
    var1 = ET.SubElement(headerXML, "something:myVar1")
    var1.text = "FOO"
    var2 = ET.SubElement(headerXML, "something:myVar2")
    var2.text = "JAM"


headerDict=xmltodict.parse(ET.tostring(headerXML))
print (json.dumps(headerDict))

    datasoap=client.service.UserRessourcesCatalog(requete,_soapheaders=headerDict)

Pero obtengo: ComplexType () tiene un argumento de palabra clave inesperado u'soapenv: Header '. Firma: ``

Respuestas a la pregunta(2)

Su respuesta a la pregunta