hoh / reloadr Goto Github PK
View Code? Open in Web Editor NEWHot code reloading tool for Python
License: GNU Lesser General Public License v3.0
Hot code reloading tool for Python
License: GNU Lesser General Public License v3.0
Seeing as this is a super early stage project, I assume you just haven't got to this yet and this exception will demonstrate the issue. I was trying to use reloadr on a class I defined in a JupyterNotebook.
---------------------------------------------------------------------------
TypeError Traceback (most recent call last)
<ipython-input-6-ba3cff0dfb1e> in <module>()
----> 1 TDAmeritradeScraper._reload()
/usr/local/lib/python3.6/site-packages/reloadr.py in _reload(self)
116 "Manually reload the class with its new code."
117 try:
--> 118 self._target = reload_class(self._target)
119 # Replace the class reference of all instances with the new class
120 for ref in self._instances:
/usr/local/lib/python3.6/site-packages/reloadr.py in reload_class(target)
56 def reload_class(target):
57 "Get the new class object corresponding to the target class."
---> 58 return reload_target(target, 'class')
59
60
/usr/local/lib/python3.6/site-packages/reloadr.py in reload_target(target, kind, filepath)
43 assert kind in ('class', 'def')
44
---> 45 source = get_new_source(target, kind, filepath)
46 module = inspect.getmodule(target)
47 # We will populate these locals using exec()
/usr/local/lib/python3.6/site-packages/reloadr.py in get_new_source(target, kind, filepath)
28 assert kind in ('class', 'def')
29
---> 30 filepath = filepath or inspect.getsourcefile(target)
31 red = redbaron.RedBaron(open(filepath).read())
32 # dumps() returns Python code as a string
/usr/local/Cellar/python3/3.6.1/Frameworks/Python.framework/Versions/3.6/lib/python3.6/inspect.py in getsourcefile(object)
652 Return None if no way can be identified to get the source.
653 """
--> 654 filename = getfile(object)
655 all_bytecode_suffixes = importlib.machinery.DEBUG_BYTECODE_SUFFIXES[:]
656 all_bytecode_suffixes += importlib.machinery.OPTIMIZED_BYTECODE_SUFFIXES[:]
/usr/local/Cellar/python3/3.6.1/Frameworks/Python.framework/Versions/3.6/lib/python3.6/inspect.py in getfile(object)
622 if hasattr(object, '__file__'):
623 return object.__file__
--> 624 raise TypeError('{!r} is a built-in class'.format(object))
625 if ismethod(object):
626 object = object.__func__
TypeError: <module '__main__'> is a built-in class
I'd like a way of triggering the reloader from somewhere else, and when the code isn't necessarily in a file.
In Shoebot we execute code once per frame that may be in a .
New code can arrive from an external editor, which we crudely swap out.
It would be good if if we could use reloadr
and call something to tell it that the new code has been updated and what it is.
We have a crude rollback system too - if the code raises and exception or has a syntax error, we roll back to the last known good code and state.
Not sure if that's in the scope of reloadr, but would be good, we use that so that the user can edit code as it's drawing animations etc.
wrapt has a convenient object proxy class that can be extended to correctly and transparently wrap any objects
I run 01_manual_reload.py in the examples directory,error is as follows:
TypeError: class must be set to a class, not 'ClassReloadr' object
python-BaseException.
I am using python3.9 on the win10 platform,What is the cause of this error?
lib/python2.7/site-packages/reloadr.py", line 61
def reload_function(target, filepath: str):
^
SyntaxError: invalid syntax
When using the following script:
from reloadr import autoreload
import time
@autoreload
def foo():
return 4
if __name__ == "__main__":
print("Here we go")
while True:
print(foo())
time.sleep(1)
I get this error when I edit and save the foo
function:
Exception in thread Thread-40:
Traceback (most recent call last):
File "/usr/lib/python3.6/threading.py", line 916, in _bootstrap_inner
self.run()
File "/usr/lib/python3.6/site-packages/watchdog/observers/api.py", line 199, in run
self.dispatch_events(self.event_queue, self.timeout)
File "/usr/lib/python3.6/site-packages/watchdog/observers/api.py", line 368, in dispatch_events
handler.dispatch(event)
File "/usr/lib/python3.6/site-packages/watchdog/events.py", line 330, in dispatch
_method_map[event_type](event)
File "/usr/lib/python3.6/site-packages/reloadr.py", line 89, in on_modified
this._reload()
File "/usr/lib/python3.6/site-packages/reloadr.py", line 146, in _reload
self._target = reload_function(self._target, self._filepath)
File "/usr/lib/python3.6/site-packages/reloadr.py", line 63, in reload_function
return reload_target(target, 'def', filepath)
File "/usr/lib/python3.6/site-packages/reloadr.py", line 45, in reload_target
source = get_new_source(target, kind, filepath)
File "/usr/lib/python3.6/site-packages/reloadr.py", line 31, in get_new_source
red = redbaron.RedBaron(open(filepath).read())
FileNotFoundError: [Errno 2] No such file or directory: '<string>'
I am executing this as python3 reloadtest.py
.
When using the following script:
import time
from reloadr import reloadr
class C:
def __init__(self, name):
print 'base C : ' + name
@reloadr
class Car(C):
def __init__(self, name):
super(Car, self).__init__(name)
self.name = name
def position(self):
return self.name, 8
if __name__ == "__main__":
print("Here we go")
car = Car('t1')
while True:
print(car.position())
time.sleep(1)
Car._reload()
got this error when run the script:
Traceback (most recent call last):
File "<input>", line 1, in <module>
File "/Applications/PyCharm.app/Contents/helpers/pydev/_pydev_bundle/pydev_umd.py", line 198, in runfile
pydev_imports.execfile(filename, global_vars, local_vars) # execute the script
File " reload_test.py", line 21, in <module>
car = Car('t1')
File "reloadr.py", line 108, in __call__
instance = self._target.__call__(*args, **kwargs)
AttributeError: class Car has no attribute '__call__'
I want to auto reload all the involved modules when the source is changed.
How can I do this?
Hello, I encounter the following error "TypeError: init() takes 2 positional arguments but 4 were given" whenever I import the classes in a package I'm coding.
I get the previous error whenever I define a Child class, which inherits form a decorated Parent Class using autoreload, regardless if the Child class is decorated or not.
In reality I would like to decorate both classes since in my project I'd be heavily adjusting both.
I was wondering if this is simply not possible, if it is a mistake on my part, or if its a fixable error?
I'm currently using reloadr-0.4.1 and python 3.8.2
Here is a simple example that reproduces the behavior.
from reloadr import autoreload
@autoreload
class Example_Parent():
def __init__(self, *args, **kwargs):
self.example_parent = "example parent"
class Example_Child(Example_Parent):
def __init__(self, *args, **kwargs):
super().__init__
self.example_child = "example child"
Environment : Linux os
Hi am trying to reload the function which is present within another function like this:
async def run():
print("RUN Component")
@reloadr
async def function2():
print("Function 2")
return 0
while True:
await function2()
sleep(5)
and calling that in while loop.
The problem here is when i change the print statement in function2 and save it am getting the following error and the value printing is still the old one.
**Error**
Exception in thread Thread-1:
Traceback (most recent call last):
File "/usr/lib/python3.6/threading.py", line 916, in _bootstrap_inner
self.run()
File "/home/pop/.local/lib/python3.6/site-packages/watchdog/observers/api.py", line 199, in run
self.dispatch_events(self.event_queue, self.timeout)
File "/home/pop/.local/lib/python3.6/site-packages/watchdog/observers/api.py", line 368, in dispatch_events
handler.dispatch(event)
File "/home/pop/.local/lib/python3.6/site-packages/watchdog/events.py", line 330, in dispatch
_method_map[event_type](event)
File "/home/pop/.local/lib/python3.6/site-packages/reloadr.py", line 89, in on_modified
this._reload()
File "/home/pop/.local/lib/python3.6/site-packages/reloadr.py", line 146, in _reload
self._target = reload_function(self._target, self._filepath)
File "/home/pop/.local/lib/python3.6/site-packages/reloadr.py", line 63, in reload_function
return reload_target(target, 'def', filepath)
File "/home/pop/.local/lib/python3.6/site-packages/reloadr.py", line 50, in reload_target
exec(source, module.__dict__, locals_)
File "<string>", line 2
def function2():
^
IndentationError: unexpected indent
It seems reloadr doesnt work with gevent patching? Is this a known limitation? Is there possibly a workaround?
from reloadr import reloadr
from gevent import monkey
monkey.patch_all()
@reloadr
class Foo:
pass
Foo._start_watch_reload() # hangs forever
print("this is never executed")
I'm running python 3.7.7, reloadr 0.4.1 and gevent 20.9.0
Edit: manual reloads (Foo._reload()
) seem to work!
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.