Metadata-Version: 2.0
Name: pydevd-reload
Version: 1.0
Summary: An enhanced reload module from pydev
Home-page: https://github.com/fyrestone/pydevd_reload
Author: fyrestone
Author-email: fyrestone@outlook.com
License: Eclipse Public License
Keywords: reload generic utility
Platform: All
Classifier: Development Status :: 5 - Production/Stable
Classifier: Intended Audience :: Developers
Classifier: License :: OSI Approved :: Eclipse Public License 1.0 (EPL-1.0)
Classifier: Natural Language :: English
Classifier: Operating System :: OS Independent
Classifier: Programming Language :: Python :: 2
Classifier: Programming Language :: Python :: 3
Classifier: Topic :: Software Development :: Libraries
Classifier: Topic :: Utilities

pydevd_reload
==============

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.

.. code-block:: python

    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:

.. code-block:: python

	class B(object):
		CONSTANT = 1

		def foo(self):
			return self.CONSTANT


Updated module:

.. code-block:: python

	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:

 https://github.com/fyrestone/pydevd_reload


