#!/usr/bin/env python

from __future__ import print_function
import pyxb.namespace
import sys
import traceback
import pyxb.xmlschema.structures
import logging

logging.basicConfig(level=logging.INFO, format="%(levelname)s: %(message)s")

pyxb.namespace.archive.NamespaceArchive.PreLoadArchives()
ans = pyxb.namespace.AvailableNamespaces()
print('%d available namespaces' % (len(ans),))
for ns in ans:
    for mr in ns.moduleRecords():
        mp = mr.modulePath()
        if mp is None:
            mp = '<builtin>'
        fp = '<builtin>'
        uid = 'N/A'
        if mr.archive() is not None:
            fp = mr.archive().archivePath()
            uid = mr.archive().generationUID()
        print("%s\t%s\t%s\t%s %s" % (ns, mp, fp, (mr.isPublic() and 'Public') or 'private', uid))

sys.exit(0)
for fn in sys.argv[1:]:
    nsa = None
    try:
        nsa = pyxb.namespace.archive.NamespaceArchive.ForPath(fn)
    except pyxb.NamespaceArchiveError as e:
        print('%s: %s' % (fn, e))
        continue
    print('%s : %d namespaces:' % (fn, len(nsa.namespaces())))
    nsa.readNamespaces()
    for mr in nsa.moduleRecords():
        print(' %s : %s, module-path=%s, %s' % (mr.namespace(), mr.generationUID(), mr.modulePath(), (mr.isPublic() and 'public') or 'private'))
        for origin in mr.origins():
            print('  + %s' % (origin,))
            for (c, k) in six.iteritems(origin.categoryMembers()):
                print('   - %s %d items' % (c, len(k)))

# LocalVariables:
# mode:python
# End:

