A package containing many useful utilities
Project description
Vpack
A package containing a lot of useful utilities for Python developing and debugging.
Features
- Sigview: press Ctrl+C to print the current stack instead of exiting.
- Breakpt: set always-on, at-time, on-error breakpoints conveniently.
- Reload: reload modules by names.
To-do:
- Vartrace: figure out how a variable changes over time, with a statistical chart or a live counter.
Installation
pip install --upgrade vpack
Examples
Sigview
Sigview is a signal handler. It will print the current running information (e.g. file, lineno, code, stack) when Ctrl+C is pressed.
Enable sigview:
from vpack import sigview
sigview.enable()
# your code goes here
Now run your script and you will see the following output:
$ python examples/sigview_example.py
(vpack): Sigview enabled. Press ^C to see the current frame. Press ^C again to exit.
1
2
1
Press Ctrl+C to see the current frame, possible outputs:
^C(vpack): Current file:
examples/sigview_example.py:11 in main
(vpack): Current stask:
+----------------------------------------------------------+
| File "examples/sigview_example.py", line 14, in <module> |
| main() |
| |
| File "examples/sigview_example.py", line 11, in main |
| time.sleep(2) |
+----------------------------------------------------------+
Press Ctrl+C twice (in 0.5 seconds) to exit.
You can also use sigview.enable(openshell=True) to open a new shell when Ctrl+C is pressed.
See sigview_example.py and sigview_openshell_example.py.md for more details.
Breakpt
Breakpt is a convenient way to set breakpoints.
.at(n) will try to open an interactive IPython shell (or pdb) when this line has been executed n times.
.onerror() will try to open a PDB shell when an Exception is raised.
You can use breakpt.enable() and breakpt.disable() to enable and disable breakpt.
from vpack import breakpt
for i in range(10):
print(i)
breakpt.at(8) # break at i = 7
breakpt.at(5) # break at i = 4
for i in range(6):
print(i)
if i == 2: breakpt.disable() # disable breakpt
if i == 4: breakpt.enable() # enable breakpt
breakpt.always() # break at i = 0, 1, 4, 5
breakpt.onerror()
a = [1, 2, 3]
for i in range(5):
print(a[i]) # will break at i = 3
See breakpt_example.py for more details.
Reload
Reload modules by names, see reload_example.py for more details.
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file vpack-0.0.11.tar.gz.
File metadata
- Download URL: vpack-0.0.11.tar.gz
- Upload date:
- Size: 5.7 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.6.0 importlib_metadata/4.8.2 pkginfo/1.8.1 requests/2.26.0 requests-toolbelt/0.9.1 tqdm/4.62.3 CPython/3.9.9
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
4525dd068404dd67fcccda0409a549c54bc39d1cbeec0daad34d21ade76fecc2
|
|
| MD5 |
80c989517212e8c6b6fc8cbbc60cb022
|
|
| BLAKE2b-256 |
6caa8d4ce7e87f5d57e715b394cd136c4fe1726cfbcfba9cc804d01f3512c4b8
|
File details
Details for the file vpack-0.0.11-py3-none-any.whl.
File metadata
- Download URL: vpack-0.0.11-py3-none-any.whl
- Upload date:
- Size: 6.8 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.6.0 importlib_metadata/4.8.2 pkginfo/1.8.1 requests/2.26.0 requests-toolbelt/0.9.1 tqdm/4.62.3 CPython/3.9.9
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
8b2b5def5eda10c2afe4c72100709e88de4820f65b73a3f78cd86fbc208ece41
|
|
| MD5 |
c75d47772a79745bd7714ffa51f54ccc
|
|
| BLAKE2b-256 |
a608f91804a0fa033a466c1ee6016db37d0e5c18c47328723d876ec2d74854aa
|