Skip to content

OldLiu001/iVBScript

 
 

Repository files navigation

iVBScript

Interactive VBScript

Jupyter kernel implementation for VBScript

Installation*

git clone https://github.com/ofer1katz/ivbscript.git 
cd ivbscript
git lfs pull 
python setup.py develop

*notice:

during installation registry will be edited to allow ANSI console color

[HKEY_CURRENT_USER\Console]
"VirtualTerminalLevel"=dword:00000001

during installation com dll "tlbinf32.dll" (TLI.TLIApplication) will be registered if not registered already.

%systemroot%\SysWOW64\regsvr32.exe can be used to manually register/unregister


kernel specs will be copied to os.path.join(os.path.abspath(sys.prefix), 'share', 'jupyter', 'kernels', 'vbscript')

Package Version Requirements

Newer or older versions of the packages may not be compatible. It is recommended to use the package versions listed below.

Requirement already satisfied: pygments in d:\programdata\anaconda3\lib\site-packages (from -r requirements.txt (line 1)) (2.11.2)
Requirement already satisfied: psutil in d:\programdata\anaconda3\lib\site-packages (from -r requirements.txt (line 2)) (5.9.0)
Collecting termcolor
  Downloading termcolor-3.1.0-py3-none-any.whl (7.7 kB)
Requirement already satisfied: ipykernel in d:\programdata\anaconda3\lib\site-packages (from -r requirements.txt (line 4)) (6.15.2)
Requirement already satisfied: jupyter-console in d:\programdata\anaconda3\lib\site-packages (from -r requirements.txt (line 5)) (6.4.3)
Requirement already satisfied: ipython>=7.23.1 in d:\programdata\anaconda3\lib\site-packages (from ipykernel->-r requirements.txt (line 4)) (7.31.1)
Requirement already satisfied: matplotlib-inline>=0.1 in d:\programdata\anaconda3\lib\site-packages (from ipykernel->-r requirements.txt (line 4)) (0.1.6)
Requirement already satisfied: pyzmq>=17 in d:\programdata\anaconda3\lib\site-packages (from ipykernel->-r requirements.txt (line 4)) (23.2.0)
Requirement already satisfied: jupyter-client>=6.1.12 in d:\programdata\anaconda3\lib\site-packages (from ipykernel->-r requirements.txt (line 4)) (7.3.4)
Requirement already satisfied: traitlets>=5.1.0 in d:\programdata\anaconda3\lib\site-packages (from ipykernel->-r requirements.txt (line 4)) (5.1.1)
Requirement already satisfied: packaging in d:\programdata\anaconda3\lib\site-packages (from ipykernel->-r requirements.txt (line 4)) (21.3)
Requirement already satisfied: nest-asyncio in d:\programdata\anaconda3\lib\site-packages (from ipykernel->-r requirements.txt (line 4)) (1.5.5)
Requirement already satisfied: tornado>=6.1 in d:\programdata\anaconda3\lib\site-packages (from ipykernel->-r requirements.txt (line 4)) (6.1)
Requirement already satisfied: debugpy>=1.0 in d:\programdata\anaconda3\lib\site-packages (from ipykernel->-r requirements.txt (line 4)) (1.5.1)
Requirement already satisfied: prompt-toolkit!=3.0.0,!=3.0.1,<3.1.0,>=2.0.0 in d:\programdata\anaconda3\lib\site-packages (from jupyter-console->-r requirements.txt (line 5)) (3.0.20)
Requirement already satisfied: jedi>=0.16 in d:\programdata\anaconda3\lib\site-packages (from ipython>=7.23.1->ipykernel->-r requirements.txt (line 4)) (0.18.1)
Requirement already satisfied: pickleshare in d:\programdata\anaconda3\lib\site-packages (from ipython>=7.23.1->ipykernel->-r requirements.txt (line 4)) (0.7.5)
Requirement already satisfied: backcall in d:\programdata\anaconda3\lib\site-packages (from ipython>=7.23.1->ipykernel->-r requirements.txt (line 4)) (0.2.0)
Requirement already satisfied: setuptools>=18.5 in d:\programdata\anaconda3\lib\site-packages (from ipython>=7.23.1->ipykernel->-r requirements.txt (line 4)) (63.4.1)
Requirement already satisfied: colorama in d:\programdata\anaconda3\lib\site-packages (from ipython>=7.23.1->ipykernel->-r requirements.txt (line 4)) (0.4.5)
Requirement already satisfied: decorator in d:\programdata\anaconda3\lib\site-packages (from ipython>=7.23.1->ipykernel->-r requirements.txt (line 4)) (5.1.1)
Requirement already satisfied: entrypoints in d:\programdata\anaconda3\lib\site-packages (from jupyter-client>=6.1.12->ipykernel->-r requirements.txt (line 4)) (0.4)
Requirement already satisfied: jupyter-core>=4.9.2 in d:\programdata\anaconda3\lib\site-packages (from jupyter-client>=6.1.12->ipykernel->-r requirements.txt (line 4)) (4.11.1)
Requirement already satisfied: python-dateutil>=2.8.2 in d:\programdata\anaconda3\lib\site-packages (from jupyter-client>=6.1.12->ipykernel->-r requirements.txt (line 4)) (2.8.2)
Requirement already satisfied: wcwidth in d:\programdata\anaconda3\lib\site-packages (from prompt-toolkit!=3.0.0,!=3.0.1,<3.1.0,>=2.0.0->jupyter-console->-r requirements.txt (line 5)) (0.2.5)
Requirement already satisfied: pyparsing!=3.0.5,>=2.0.2 in d:\programdata\anaconda3\lib\site-packages (from packaging->ipykernel->-r requirements.txt (line 4)) (3.0.9)
Requirement already satisfied: parso<0.9.0,>=0.8.0 in d:\programdata\anaconda3\lib\site-packages (from jedi>=0.16->ipython>=7.23.1->ipykernel->-r requirements.txt (line 4)) (0.8.3)
Requirement already satisfied: pywin32>=1.0 in d:\programdata\anaconda3\lib\site-packages (from jupyter-core>=4.9.2->jupyter-client>=6.1.12->ipykernel->-r requirements.txt (line 4)) (302)
Requirement already satisfied: six>=1.5 in d:\programdata\anaconda3\lib\site-packages (from python-dateutil>=2.8.2->jupyter-client>=6.1.12->ipykernel->-r requirements.txt (line 4)) (1.16.0)
Installing collected packages: termcolor
Successfully installed termcolor-3.1.0

You can install most of them via install Anaconda3-2022.10-Windows-x86-64.rar.

Usage

ivbscript

or

jupyter console --kernel vbscript

Special Commands

  • cls/clear - clear console
  • exit/exit()/quit/quit() - exit iVBScript
  • !<command> - execute a child program in a new process
  • <variable>? - inspect <variable>
  • %reset - reset console
  • %file <file_path> - read <file_path> and run the content as VBScript code
  • %paste - paste and execute

If you are having this error:

Unhandled exception in event loop:
  File "c:\users\USER\appdata\local\programs\python\python38-32\lib\asyncio\proactor_events.py", line 768, in _loop_self_reading
    f.result()  # may raise
  File "c:\users\USER\appdata\local\programs\python\python38-32\lib\asyncio\windows_events.py", line 808, in _poll
    value = callback(transferred, key, ov)
  File "c:\users\USER\appdata\local\programs\python\python38-32\lib\asyncio\windows_events.py", line 457, in finish_recv
    raise ConnectionResetError(*exc.args)

Exception [WinError 995] The I/O operation has been aborted because of either a thread exit or an application request
Press ENTER to continue...

Take a look at the following workaround: ipython/ipython#12049 (comment)

Development

Install development requirements

pip install -r requirements_dev.txt -U --upgrade-strategy eager

Tests

coverage erase
coverage run --source=. --omit="*\tests\*" -m pytest -v -s
coverage report -m

Code Analytics

prospector --strictness veryhigh
# Analyze the given Python modules and compute Cyclomatic Complexity (CC).
radon cc . --min B
# Analyze the given Python modules and compute the Maintainability Index.
radon mi . --min B
# Analyze the given Python modules and compute raw metrics.
radon raw .
# Analyze the given Python modules and compute their Halstead metrics.
radon hal .

TODO:

  • test coverage
  • using pipes instead of files for communication with vbscript
  • better implementation of exit/quit (via jupyter)
  • evaluate expressions
  • complete session's variables/functions/etc. using - Tab (do_complete)
  • use do_inspect() for inspect
  • inspect levels support - ?/??
  • paste into terminal - Ctrl + v

About

Interactive VBScript with Python & Jupyter Notebook.

Topics

Resources

Stars

Watchers

Forks

Languages

  • Python 78.7%
  • VBScript 21.3%