#
# LXML uses imports from C code (or actually Cython code)
# and those cannot be detected by modulegraph.
# The check function adds the hidden imports to the graph
#
# The dependency list was extracted from lxml 3.0.2
import sys


def check(cmd, mf):
    m = mf.findNode('lxml.etree')
    if m is not None and m.filename is not None:
        mf.import_hook('lxml._elementpath', m)
        mf.import_hook('os.path', m)
        mf.import_hook('re', m)
        mf.import_hook('gzip', m)

        if sys.version_info[0] == 2:
            mf.import_hook('StringIO', m)
        else:
            mf.import_hook('io', m)

    m = mf.findNode('lxml.objectify')
    if m is not None and m.filename is not None:
        if sys.version_info[0] == 2:
            mf.import_hook('copy_reg', m)
        else:
            mf.import_hook('copyreg', m)

    m = mf.findNode('lxml.isoschematron')
    if m is not None and m.filename is not None:
        # Not zip-safe (see issue 118)
        return dict(packages=['lxml'])

    if mf.findNode('lxml') is None:
        return None

    return {}
