An enhanced reload module from PyDev
Project description
This is a reload library based on pydevd_reload.py from https://github.com/fabioz/PyDev.Debugger. The original library is used in PyDev & PyCharm.
Installation
If you don’t have much time, just perform
$ pip install pydevd_reload
which will install the module(without tests) on your system.
Also, you can just copy & paste the pydevd_reload.py which require no third-party dependency.
Usage
Just import pydevd_reload and use pydevd_reload.xreload as the reload built-in function.
import pydevd_reload
pydevd_reload.xreload(module_instance)
pydevd_reload reload code objects in a module by default, and provide __xreload_old_new__ and __xreload_after_reload_update__ custom hooks which allow user to update data in a module:
Original module:
class B(object):
CONSTANT = 1
def foo(self):
return self.CONSTANT
Updated module:
class B(object):
CONSTANT = 2
# Custom hooks can be added in a reload.
def __xreload_old_new__(cls, name, old, new):
if name == 'CONSTANT':
cls.CONSTANT = new
__xreload_old_new__ = classmethod(__xreload_old_new__)
def foo(self):
return self.CONSTANT
Improvements
This standalone pydevd_reload library has following improvements than original pydevd_reload.py:
Removed pydevd dependency.
Removed limitation that functions with decorators cannot be handled. *
Added support to update function closure. *
Added code object name check to avoid update monkey patched code. *
Refined reload hooks. (eg, __xreload_old_new__ and __xreload_after_reload_update__)
Fixed __file__ attribute in namespace so they will be updated.
Fixed compiled python file support.
Fixed reload failed when python code compiled from different paths.
Testing
If you have the source code you can run the tests with
$ python pydevd_reload/tests/test_pydevd_reload.py
Repository
The project is hosted on GitHub. You can look at the source here:
Project details
Release history Release notifications | RSS feed
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
Hashes for pydevd_reload-1.0-py2.py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | ed529aa0d30743e19ad924c4f66983071ab83b3fe2876e04c5d12e90b315f10b |
|
MD5 | 9bf9f32b853d3d2debe5592d01cad800 |
|
BLAKE2b-256 | 584ebcf358e9f6e7f432ad5494196e7216e93a14a64c8246f4b979cb48785d95 |