1"""Lazy imports that may apply across the xonsh package."""
2import importlib
3
4from xonsh.platform import ON_WINDOWS, ON_DARWIN
5from xonsh.lazyasd import LazyObject, lazyobject
6
7pygments = LazyObject(
8    lambda: importlib.import_module("pygments"), globals(), "pygments"
9)
10pyghooks = LazyObject(
11    lambda: importlib.import_module("xonsh.pyghooks"), globals(), "pyghooks"
12)
13
14
15@lazyobject
16def pty():
17    if ON_WINDOWS:
18        return
19    else:
20        return importlib.import_module("pty")
21
22
23@lazyobject
24def termios():
25    if ON_WINDOWS:
26        return
27    else:
28        return importlib.import_module("termios")
29
30
31@lazyobject
32def fcntl():
33    if ON_WINDOWS:
34        return
35    else:
36        return importlib.import_module("fcntl")
37
38
39@lazyobject
40def tty():
41    if ON_WINDOWS:
42        return
43    else:
44        return importlib.import_module("tty")
45
46
47@lazyobject
48def _winapi():
49    if ON_WINDOWS:
50        import _winapi as m
51    else:
52        m = None
53    return m
54
55
56@lazyobject
57def msvcrt():
58    if ON_WINDOWS:
59        import msvcrt as m
60    else:
61        m = None
62    return m
63
64
65@lazyobject
66def winutils():
67    if ON_WINDOWS:
68        import xonsh.winutils as m
69    else:
70        m = None
71    return m
72
73
74@lazyobject
75def macutils():
76    if ON_DARWIN:
77        import xonsh.macutils as m
78    else:
79        m = None
80    return m
81
82
83@lazyobject
84def terminal256():
85    return importlib.import_module("pygments.formatters.terminal256")
86