/usr/bin/pyxbgen is in python-pyxb 1.2.4+dfsg-1.
This file is owned by root:root, with mode 0o755.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 | #!/usr/bin/python
from __future__ import print_function
import pyxb.xmlschema
import pyxb.binding.generate
import pyxb.utils.utility
import pyxb.utils.domutils
import os.path
import sys
import optparse
import logging
logging.basicConfig()
log_ = logging.getLogger(__name__)
def WSDLToSchema (generator, wsdl_uri):
"""Extract the schema element from a WSDL types document and
generate bindings for it.
This is expected to be equivalent to retrieving the WSDL,
extracting the schema part of its C{types} block to a file, and
using that file as a C{--schema-location}. Note that use of this
option may require availability of the WS-* bundle."""
import pyxb.bundles.wssplat.wsdl11 as wsdl
wsdl.ImportRelatedNamespaces()
wsdl_uri = pyxb.utils.utility.NormalizeLocation(wsdl_uri)
print('Retrieving WSDL from %s' % (wsdl_uri,))
xmld = pyxb.utils.utility.DataFromURI(wsdl_uri)
spec = wsdl.definitions.createFromDOM(pyxb.utils.domutils.StringToDOM(xmld, location_base=wsdl_uri), process_schema=True, generation_uid=generator.generationUID())
return spec.schema()
def _WSDLOptionCallback (option, opt_str, value, parser, *args, **kwargs):
assert parser.has_option('--schema-location')
if parser.values.schema_location is None:
parser.values.schema_location = []
parser.values.schema_location.append( (value, WSDLToSchema) )
generator = pyxb.binding.generate.Generator()
parser = generator.optionParser()
group = optparse.OptionGroup(parser, 'WSDL Options', 'Options relevant to generating bindings from WSDL service descriptions')
group.add_option('-W', '--wsdl-location', metavar='FILE_or_URL',
action='callback', callback=_WSDLOptionCallback, type="string",
help=\
'''Generate bindings for the C{types} element of the WSDL at this
location.''')
parser.add_option_group(group)
(options, args) = parser.parse_args()
generator.applyOptionValues(options, args)
generator.resolveExternalSchema()
if 0 == len(generator.namespaces()):
parser.print_help()
sys.exit(1)
import sys
import traceback
# Save binding source first, so name-in-binding is stored in the
# parsed schema file
try:
tns = generator.namespaces().pop()
modules = generator.bindingModules()
print('Python for %s requires %d modules' % (tns, len(modules)))
top_module = None
path_dirs = set()
for m in modules:
m.writeToModuleFile()
generator.writeNamespaceArchive()
except Exception as e:
print('Exception generating bindings: %s' % (e,))
traceback.print_exception(*sys.exc_info())
sys.exit(3)
# LocalVariables:
# mode:python
# End:
|