1"""This is the vtk module."""
2import sys
3
4if sys.version_info < (3,5):
5    # imp is deprecated in 3.4
6    import imp, importlib
7
8    # import vtkmodules package.
9    vtkmodules_m = importlib.import_module('vtkmodules')
10
11    # import vtkmodules.all
12    all_m = importlib.import_module('vtkmodules.all')
13
14    # create a clone of the `vtkmodules.all` module.
15    vtk_m = imp.new_module(__name__)
16    for key in dir(all_m):
17        if not hasattr(vtk_m, key):
18            setattr(vtk_m, key, getattr(all_m, key))
19
20    # make the clone of `vtkmodules.all` act as a package at the same location
21    # as vtkmodules. This ensures that importing modules from within the vtkmodules package
22    # continues to work.
23    vtk_m.__path__ = vtkmodules_m.__path__
24    # replace old `vtk` module with this new package.
25    sys.modules[__name__] = vtk_m
26
27else:
28    import importlib.util
29    # import vtkmodules.all
30    all_spec = importlib.util.find_spec('vtkmodules.all')
31    all_m = importlib.util.module_from_spec(all_spec)
32    all_spec.loader.exec_module(all_m)
33
34    # import vtkmodules
35    vtkmodules_spec = importlib.util.find_spec('vtkmodules')
36    vtkmodules_m = importlib.util.module_from_spec(vtkmodules_spec)
37    vtkmodules_spec.loader.exec_module(vtkmodules_m)
38
39    # make vtkmodules.all act as the vtkmodules package to support importing
40    # other modules from vtkmodules package via `vtk`.
41    all_m.__path__ = vtkmodules_m.__path__
42
43    del all_spec, vtkmodules_spec
44
45    # replace old `vtk` module with the `all` package.
46    sys.modules[__name__] = all_m
47