#!/usr/bin/env python

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 origin.categoryMembers().iteritems():
                print '   - %s %d items' % (c, len(k))

# LocalVariables:
# mode:python
# End:

