File: lazy_module.py

package info (click to toggle)
orange3 3.40.0-2
  • links: PTS, VCS
  • area: main
  • in suites: sid
  • size: 15,912 kB
  • sloc: python: 162,745; ansic: 622; makefile: 322; sh: 93; cpp: 77
file content (16 lines) | stat: -rw-r--r-- 453 bytes parent folder | download | duplicates (3)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
class _LazyModule:
    def __init__(self, name):
        self.__name = name

    def _do_import(self):
        import Orange
        from importlib import import_module
        mod = import_module('Orange.' + self.__name, package='Orange')
        setattr(Orange, self.__name, mod)
        return mod

    def __getattr__(self, key):
        return getattr(self._do_import(), key)

    def __dir__(self):
        return list(self._do_import().__dict__)