-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathsetup.py
119 lines (96 loc) · 3.4 KB
/
setup.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
import ctypes
import os
import struct
import sys
import traceback
import winreg
import termcolor
from jupyter_client.kernelspec import KernelSpecManager, NoSuchKernel
from setuptools import find_packages, setup
from iBatch import __version__
from iBatch.kernel import BatchKernel
class RegistryWrongValue(Exception):
pass
def allow_ansi_console_color_if_needed():
root = winreg.ConnectRegistry(None, winreg.HKEY_CURRENT_USER)
key = winreg.OpenKey(root, 'Console')
value_name = 'VirtualTerminalLevel'
value_type = winreg.REG_DWORD
value = 1
try:
try:
reg_value, reg_type = winreg.QueryValueEx(key, value_name)
if reg_value != value or reg_type != value_type:
winreg.DeleteValue(key, value_name)
raise RegistryWrongValue
except (FileNotFoundError, RegistryWrongValue):
winreg.SetValueEx(key, value_name, None, value_type, value)
except PermissionError as exception:
print(''.join(traceback.format_exception(None, exception, None)))
print('Allow ansi console color manually')
def is_tlbinf32_registered() -> bool:
root = winreg.ConnectRegistry(None, winreg.HKEY_CLASSES_ROOT)
try:
winreg.OpenKey(root, "TLI.TLIApplication")
return True
except FileNotFoundError:
return False
finally:
root.Close()
def register_tlbinf32():
bits = struct.calcsize('P') * 8
if bits != 32:
print(termcolor.colored('Python is 64 bit. Register tlbinf32 manually', color='red'))
else:
try:
dll_path = os.path.join(os.path.dirname(os.path.abspath(__file__)), 'tlbinf32.dll')
dll = ctypes.OleDLL(dll_path)
dll.DllRegisterServer()
except OSError as exception:
print(termcolor.colored(''.join(traceback.format_exception(None, exception, None)), color='red'))
print(termcolor.colored('check git lfs', color='red'))
raise exception
def register_tlbinf32_if_needed():
if not is_tlbinf32_registered():
register_tlbinf32()
print('tlbinf32 Installed')
else:
print('tlbinf32 Already Installed')
def is_kernel_spec_installed() -> bool:
try:
KernelSpecManager().get_kernel_spec(BatchKernel.language)
return True
except NoSuchKernel:
return False
def install_kernel_spec():
default_spec_dir = os.path.join(os.path.dirname(os.path.abspath(__file__)), 'kernelspec')
# default_spec_dir = os.path.dirname(os.path.abspath(__file__))
KernelSpecManager().install_kernel_spec(default_spec_dir, BatchKernel.language, prefix=sys.prefix)
def install_kernel_spec_if_needed():
if not is_kernel_spec_installed():
install_kernel_spec()
print('Kernel Installed')
else:
print('Kernel Already Installed')
# allow_ansi_console_color_if_needed()
#register_tlbinf32_if_needed()
# install_kernel_spec_if_needed()
install_kernel_spec()
with open('requirements.txt', 'r') as f:
REQUIREMENTS = f.readlines()
setup(
name="iBatch",
version=__version__,
packages=find_packages(),
description="Batch Jupyter Kernel",
classifiers=[
'Programming Language :: Batch',
"Programming Language :: Python :: 3"
"Operating System :: Windows"
],
entry_points={
'console_scripts': ['iBatch=iBatch.app:main']
},
install_requires=REQUIREMENTS,
python_requires='>=3.8',
)