diff --git a/doc/func_timeout.StoppableThread.html b/doc/func_timeout.StoppableThread.html index 4880d33..a71f666 100644 --- a/doc/func_timeout.StoppableThread.html +++ b/doc/func_timeout.StoppableThread.html @@ -1,296 +1,305 @@ -Python: module func_timeout.StoppableThread - - +Python: module func_timeout.StoppableThread + + - - -
 
- 
func_timeout.StoppableThread
index
-

-

- - - +
 
-Modules
+ +
 
+ 
func_timeout.StoppableThread
index
+

Copyright (c) 2016, 2017 Tim Savannah All Rights Reserved.

+Licensed under the Lesser GNU Public License Version 3, LGPLv3. You should have recieved a copy of this with the source distribution as
+LICENSE, otherwise it is available at https://github.com/kata198/func_timeout/LICENSE

+

+ + + - -
 
+Modules
       
ctypes
-
threading
-
time
-

- - - + +
 
-Classes
       
ctypes
+
os
+
threading
+
time
+

+ + + - - +
 
+Classes
       
-
threading.Thread(builtins.object) -
-
-
JoinThread -
StoppableThread +
       
+
threading.Thread(builtins.object) +
+
+
JoinThread +
StoppableThread
-

- - - +

+

 
-class JoinThread(threading.Thread)
+ + - - - - + + +
 
+class JoinThread(threading.Thread)
   JoinThread - The workhouse that stops the StoppableThread
 
 
Method resolution order:
-
JoinThread
-
threading.Thread
-
builtins.object
+
   JoinThread - The workhouse that stops the StoppableThread
 
 
Method resolution order:
+
JoinThread
+
threading.Thread
+
builtins.object
-
-Methods defined here:
-
__init__(self, otherThread, exception)
This constructor should always be called with keyword arguments. Arguments are:

-*group* should be None; reserved for future extension when a ThreadGroup
-class is implemented.

-*target* is the callable object to be invoked by the run()
-method. Defaults to None, meaning nothing is called.

-*name* is the thread name. By default, a unique name is constructed of
-the form "Thread-N" where N is a small decimal number.

-*args* is the argument tuple for the target invocation. Defaults to ().

-*kwargs* is a dictionary of keyword arguments for the target
-invocation. Defaults to {}.

-If a subclass overrides the constructor, it must make sure to invoke
-the base class constructor (Thread.__init__()) before doing anything
+
+Methods defined here:
+
__init__(self, otherThread, exception)
This constructor should always be called with keyword arguments. Arguments are:

+*group* should be None; reserved for future extension when a ThreadGroup
+class is implemented.

+*target* is the callable object to be invoked by the run()
+method. Defaults to None, meaning nothing is called.

+*name* is the thread name. By default, a unique name is constructed of
+the form "Thread-N" where N is a small decimal number.

+*args* is the argument tuple for the target invocation. Defaults to ().

+*kwargs* is a dictionary of keyword arguments for the target
+invocation. Defaults to {}.

+If a subclass overrides the constructor, it must make sure to invoke
+the base class constructor (Thread.__init__()) before doing anything
else to the thread.
-
run(self)
Method representing the thread's activity.

-You may override this method in a subclass. The standard run() method
-invokes the callable object passed to the object's constructor as the
-target argument, if any, with sequential and keyword arguments taken
+
run(self)
Method representing the thread's activity.

+You may override this method in a subclass. The standard run() method
+invokes the callable object passed to the object's constructor as the
+target argument, if any, with sequential and keyword arguments taken
from the args and kwargs arguments, respectively.
-
-Methods inherited from threading.Thread:
-
__repr__(self)
Return repr(self).
+
+Methods inherited from threading.Thread:
+
__repr__(self)
Return repr(self).
-
getName(self)
+
getName(self)
-
isAlive = is_alive(self)
Return whether the thread is alive.

-This method returns True just before the run() method starts until just
-after the run() method terminates. The module function enumerate()
+
isAlive = is_alive(self)
Return whether the thread is alive.

+This method returns True just before the run() method starts until just
+after the run() method terminates. The module function enumerate()
returns a list of all alive threads.
-
isDaemon(self)
+
isDaemon(self)
-
is_alive(self)
Return whether the thread is alive.

-This method returns True just before the run() method starts until just
-after the run() method terminates. The module function enumerate()
+
is_alive(self)
Return whether the thread is alive.

+This method returns True just before the run() method starts until just
+after the run() method terminates. The module function enumerate()
returns a list of all alive threads.
-
join(self, timeout=None)
Wait until the thread terminates.

-This blocks the calling thread until the thread whose join() method is
-called terminates -- either normally or through an unhandled exception
-or until the optional timeout occurs.

-When the timeout argument is present and not None, it should be a
-floating point number specifying a timeout for the operation in seconds
-(or fractions thereof). As join() always returns None, you must call
-isAlive() after join() to decide whether a timeout happened -- if the
-thread is still alive, the join() call timed out.

-When the timeout argument is not present or None, the operation will
-block until the thread terminates.

-A thread can be join()ed many times.

-join() raises a RuntimeError if an attempt is made to join the current
-thread as that would cause a deadlock. It is also an error to join() a
-thread before it has been started and attempts to do so raises the same
+
join(self, timeout=None)
Wait until the thread terminates.

+This blocks the calling thread until the thread whose join() method is
+called terminates -- either normally or through an unhandled exception
+or until the optional timeout occurs.

+When the timeout argument is present and not None, it should be a
+floating point number specifying a timeout for the operation in seconds
+(or fractions thereof). As join() always returns None, you must call
+isAlive() after join() to decide whether a timeout happened -- if the
+thread is still alive, the join() call timed out.

+When the timeout argument is not present or None, the operation will
+block until the thread terminates.

+A thread can be join()ed many times.

+join() raises a RuntimeError if an attempt is made to join the current
+thread as that would cause a deadlock. It is also an error to join() a
+thread before it has been started and attempts to do so raises the same
exception.
-
setDaemon(self, daemonic)
+
setDaemon(self, daemonic)
-
setName(self, name)
+
setName(self, name)
-
start(self)
Start the thread's activity.

-It must be called at most once per thread object. It arranges for the
-object's run() method to be invoked in a separate thread of control.

-This method will raise a RuntimeError if called more than once on the
+
start(self)
Start the thread's activity.

+It must be called at most once per thread object. It arranges for the
+object's run() method to be invoked in a separate thread of control.

+This method will raise a RuntimeError if called more than once on the
same thread object.
-
-Data descriptors inherited from threading.Thread:
-
__dict__
-
dictionary for instance variables (if defined)
+
+Data descriptors inherited from threading.Thread:
+
__dict__
+
dictionary for instance variables (if defined)
-
__weakref__
-
list of weak references to the object (if defined)
+
__weakref__
+
list of weak references to the object (if defined)
-
daemon
-
A boolean value indicating whether this thread is a daemon thread.

-This must be set before start() is called, otherwise RuntimeError is
-raised. Its initial value is inherited from the creating thread; the
-main thread is not a daemon thread and therefore all threads created in
-the main thread default to daemon = False.

-The entire Python program exits when no alive non-daemon threads are
+
daemon
+
A boolean value indicating whether this thread is a daemon thread.

+This must be set before start() is called, otherwise RuntimeError is
+raised. Its initial value is inherited from the creating thread; the
+main thread is not a daemon thread and therefore all threads created in
+the main thread default to daemon = False.

+The entire Python program exits when no alive non-daemon threads are
left.
-
ident
-
Thread identifier of this thread or None if it has not been started.

-This is a nonzero integer. See the thread.get_ident() function. Thread
-identifiers may be recycled when a thread exits and another thread is
+
ident
+
Thread identifier of this thread or None if it has not been started.

+This is a nonzero integer. See the thread.get_ident() function. Thread
+identifiers may be recycled when a thread exits and another thread is
created. The identifier is available even after the thread has exited.
-
name
-
A string used for identification purposes only.

-It has no semantics. Multiple threads may be given the same name. The
+
name
+
A string used for identification purposes only.

+It has no semantics. Multiple threads may be given the same name. The
initial name is set by the constructor.
-

- - - +
 
-class StoppableThread(threading.Thread)

+ + + - - - - + + +
 
+class StoppableThread(threading.Thread)
   StoppableThread - A thread that can be stopped by forcing an exception in the execution context.
 
 
Method resolution order:
-
StoppableThread
-
threading.Thread
-
builtins.object
+
   StoppableThread - A thread that can be stopped by forcing an exception in the execution context.
 
 
Method resolution order:
+
StoppableThread
+
threading.Thread
+
builtins.object
-
-Methods inherited from threading.Thread:
-
__init__(self, group=None, target=None, name=None, args=(), kwargs=None, *, daemon=None)
This constructor should always be called with keyword arguments. Arguments are:

-*group* should be None; reserved for future extension when a ThreadGroup
-class is implemented.

-*target* is the callable object to be invoked by the run()
-method. Defaults to None, meaning nothing is called.

-*name* is the thread name. By default, a unique name is constructed of
-the form "Thread-N" where N is a small decimal number.

-*args* is the argument tuple for the target invocation. Defaults to ().

-*kwargs* is a dictionary of keyword arguments for the target
-invocation. Defaults to {}.

-If a subclass overrides the constructor, it must make sure to invoke
-the base class constructor (Thread.__init__()) before doing anything
+
+Methods inherited from threading.Thread:
+
__init__(self, group=None, target=None, name=None, args=(), kwargs=None, *, daemon=None)
This constructor should always be called with keyword arguments. Arguments are:

+*group* should be None; reserved for future extension when a ThreadGroup
+class is implemented.

+*target* is the callable object to be invoked by the run()
+method. Defaults to None, meaning nothing is called.

+*name* is the thread name. By default, a unique name is constructed of
+the form "Thread-N" where N is a small decimal number.

+*args* is the argument tuple for the target invocation. Defaults to ().

+*kwargs* is a dictionary of keyword arguments for the target
+invocation. Defaults to {}.

+If a subclass overrides the constructor, it must make sure to invoke
+the base class constructor (Thread.__init__()) before doing anything
else to the thread.
-
__repr__(self)
Return repr(self).
+
__repr__(self)
Return repr(self).
-
getName(self)
+
getName(self)
-
isAlive = is_alive(self)
Return whether the thread is alive.

-This method returns True just before the run() method starts until just
-after the run() method terminates. The module function enumerate()
+
isAlive = is_alive(self)
Return whether the thread is alive.

+This method returns True just before the run() method starts until just
+after the run() method terminates. The module function enumerate()
returns a list of all alive threads.
-
isDaemon(self)
+
isDaemon(self)
-
is_alive(self)
Return whether the thread is alive.

-This method returns True just before the run() method starts until just
-after the run() method terminates. The module function enumerate()
+
is_alive(self)
Return whether the thread is alive.

+This method returns True just before the run() method starts until just
+after the run() method terminates. The module function enumerate()
returns a list of all alive threads.
-
join(self, timeout=None)
Wait until the thread terminates.

-This blocks the calling thread until the thread whose join() method is
-called terminates -- either normally or through an unhandled exception
-or until the optional timeout occurs.

-When the timeout argument is present and not None, it should be a
-floating point number specifying a timeout for the operation in seconds
-(or fractions thereof). As join() always returns None, you must call
-isAlive() after join() to decide whether a timeout happened -- if the
-thread is still alive, the join() call timed out.

-When the timeout argument is not present or None, the operation will
-block until the thread terminates.

-A thread can be join()ed many times.

-join() raises a RuntimeError if an attempt is made to join the current
-thread as that would cause a deadlock. It is also an error to join() a
-thread before it has been started and attempts to do so raises the same
+
join(self, timeout=None)
Wait until the thread terminates.

+This blocks the calling thread until the thread whose join() method is
+called terminates -- either normally or through an unhandled exception
+or until the optional timeout occurs.

+When the timeout argument is present and not None, it should be a
+floating point number specifying a timeout for the operation in seconds
+(or fractions thereof). As join() always returns None, you must call
+isAlive() after join() to decide whether a timeout happened -- if the
+thread is still alive, the join() call timed out.

+When the timeout argument is not present or None, the operation will
+block until the thread terminates.

+A thread can be join()ed many times.

+join() raises a RuntimeError if an attempt is made to join the current
+thread as that would cause a deadlock. It is also an error to join() a
+thread before it has been started and attempts to do so raises the same
exception.
-
run(self)
Method representing the thread's activity.

-You may override this method in a subclass. The standard run() method
-invokes the callable object passed to the object's constructor as the
-target argument, if any, with sequential and keyword arguments taken
+
run(self)
Method representing the thread's activity.

+You may override this method in a subclass. The standard run() method
+invokes the callable object passed to the object's constructor as the
+target argument, if any, with sequential and keyword arguments taken
from the args and kwargs arguments, respectively.
-
setDaemon(self, daemonic)
+
setDaemon(self, daemonic)
-
setName(self, name)
+
setName(self, name)
-
start(self)
Start the thread's activity.

-It must be called at most once per thread object. It arranges for the
-object's run() method to be invoked in a separate thread of control.

-This method will raise a RuntimeError if called more than once on the
+
start(self)
Start the thread's activity.

+It must be called at most once per thread object. It arranges for the
+object's run() method to be invoked in a separate thread of control.

+This method will raise a RuntimeError if called more than once on the
same thread object.
-
-Data descriptors inherited from threading.Thread:
-
__dict__
-
dictionary for instance variables (if defined)
+
+Data descriptors inherited from threading.Thread:
+
__dict__
+
dictionary for instance variables (if defined)
-
__weakref__
-
list of weak references to the object (if defined)
+
__weakref__
+
list of weak references to the object (if defined)
-
daemon
-
A boolean value indicating whether this thread is a daemon thread.

-This must be set before start() is called, otherwise RuntimeError is
-raised. Its initial value is inherited from the creating thread; the
-main thread is not a daemon thread and therefore all threads created in
-the main thread default to daemon = False.

-The entire Python program exits when no alive non-daemon threads are
+
daemon
+
A boolean value indicating whether this thread is a daemon thread.

+This must be set before start() is called, otherwise RuntimeError is
+raised. Its initial value is inherited from the creating thread; the
+main thread is not a daemon thread and therefore all threads created in
+the main thread default to daemon = False.

+The entire Python program exits when no alive non-daemon threads are
left.
-
ident
-
Thread identifier of this thread or None if it has not been started.

-This is a nonzero integer. See the thread.get_ident() function. Thread
-identifiers may be recycled when a thread exits and another thread is
+
ident
+
Thread identifier of this thread or None if it has not been started.

+This is a nonzero integer. See the thread.get_ident() function. Thread
+identifiers may be recycled when a thread exits and another thread is
created. The identifier is available even after the thread has exited.
-
name
-
A string used for identification purposes only.

-It has no semantics. Multiple threads may be given the same name. The
+
name
+
A string used for identification purposes only.

+It has no semantics. Multiple threads may be given the same name. The
initial name is set by the constructor.
-

- +

+ + + + + +
 
+Data
       __all__ = ('StoppableThread', 'JoinThread')
+

\ No newline at end of file diff --git a/doc/func_timeout.dafunc.html b/doc/func_timeout.dafunc.html index a7ef7ea..8da7e2a 100644 --- a/doc/func_timeout.dafunc.html +++ b/doc/func_timeout.dafunc.html @@ -1,59 +1,116 @@ -Python: module func_timeout.dafunc - - +Python: module func_timeout.dafunc + + - - -
 
- 
func_timeout.dafunc
index
-

Copyright (c) 2016 Tim Savannah All Rights Reserved.

-Licensed under the Lesser GNU Public License Version 3, LGPLv3. You should have recieved a copy of this with the source distribution as
+ + +
 
+ 
func_timeout.dafunc
index
+

Copyright (c) 2016, 2017 Tim Savannah All Rights Reserved.

+Licensed under the Lesser GNU Public License Version 3, LGPLv3. You should have recieved a copy of this with the source distribution as
LICENSE, otherwise it is available at https://github.com/kata198/func_timeout/LICENSE

-

- - - +

+

 
-Modules
+ + - -
 
+Modules
       
threading
-
time
-

- - - + +
 
-Functions
       
copy
+inspect
+
threading
+time
+
types
+

+ + + - - +
 
+Functions
       
func_timeout(timeout, func, args=(), kwargs=None)
func_timeout - Runs the given function for up to #timeout# seconds.

-Raises any exceptions #func# would raise, returns what #func# would return (unless timeout is exceeded), in which case it raises FunctionTimedOut

-@param timeout <float> - Maximum number of seconds to run #func# before terminating
-@param func <function> - The function to call
-@param args    <tuple> - Any ordered arguments to pass to the function
-@param kwargs  <dict/None> - Keyword arguments to pass to the function.

-@raises - FunctionTimedOut if #timeout# is exceeded, otherwise anything #func# could raise will be raised

-If the timeout is exceeded, FunctionTimedOut will be raised within the context of the called function every two seconds until it terminates,
-but will not block the calling thread (a new thread will be created to perform the join). If possible, you should try/except FunctionTimedOut
-to return cleanly, but in most cases it will 'just work'.

-Be careful of code like:
-def myfunc():
-    while True:
-        try:
-            dosomething()
-        except Exception:
-            continue

-because it will never terminate.

+
       
func_set_timeout(timeout, allowOverride=False)
set_timeout - Wrapper to run a function with a given/calculated timeout (max execution time).
+    Optionally (if #allowOverride is True), adds a paramater, "forceTimeout", to the
+    function which, if provided, will override the default timeout for that invocation.

+    If #timeout is provided as a lambda/function, it will be called
+      prior to each invocation of the decorated function to calculate the timeout to be used
+      for that call, based on the arguments passed to the decorated function.
+      
+      For example, you may have a "processData" function whose execution time
+      depends on the number of "data" elements, so you may want a million elements to have a 
+      much higher timeout than seven elements.)

+    If #allowOverride is True AND a kwarg of "forceTimeout" is passed to the wrapped function, that timeout
+     will be used for that single call.

+@param timeout <float OR lambda/function> - 

+    **If float:**
+        Default number of seconds max to allow function to execute
+          before throwing FunctionTimedOut
+    
+    **If lambda/function:

+         If a function/lambda is provided, it will be called for every
+          invocation of the decorated function (unless #allowOverride=True and "forceTimeout" was passed) 
+          to determine the timeout to use based on the arguments to the decorated function.

+            The arguments as passed into the decorated function will be passed to this function.
+             They either must match exactly to what the decorated function has, OR
+              if you prefer to get the *args (list of ordered args) and **kwargs ( key : value  keyword args form),
+              define your calculate function like:
+                
+                def calculateTimeout(*args, **kwargs):
+                    ...
+            
+              or lambda like:

+                calculateTimeout = lambda *args, **kwargs : ...

+            otherwise the args to your calculate function should match exactly the decorated function.


+@param allowOverride <bool> Default False, if True adds a keyword argument to the decorated function,
+    "forceTimeout" which, if provided, will override the #timeout. If #timeout was provided as a lambda / function, it
+     will not be called.

+@throws FunctionTimedOut If time alloted passes without function returning naturally

+@see func_timeout
+
func_timeout(timeout, func, args=(), kwargs=None)
func_timeout - Runs the given function for up to #timeout# seconds.

+Raises any exceptions #func# would raise, returns what #func# would return (unless timeout is exceeded), in which case it raises FunctionTimedOut

+@param timeout <float> - Maximum number of seconds to run #func# before terminating
+@param func <function> - The function to call
+@param args    <tuple> - Any ordered arguments to pass to the function
+@param kwargs  <dict/None> - Keyword arguments to pass to the function.

+@raises - FunctionTimedOut if #timeout# is exceeded, otherwise anything #func# could raise will be raised

+If the timeout is exceeded, FunctionTimedOut will be raised within the context of the called function every two seconds until it terminates,
+but will not block the calling thread (a new thread will be created to perform the join). If possible, you should try/except FunctionTimedOut
+to return cleanly, but in most cases it will 'just work'.

+Be careful of code like:
+def myfunc():
+    while True:
+        try:
+            dosomething()
+        except Exception:
+            continue

+because it will never terminate.

@return - The return value that #func# gives
-
- +

+ + + + + +
 
+Data
       __all__ = ('func_timeout', 'func_set_timeout')
+

\ No newline at end of file diff --git a/doc/func_timeout.exceptions.html b/doc/func_timeout.exceptions.html index b8036f9..1480418 100644 --- a/doc/func_timeout.exceptions.html +++ b/doc/func_timeout.exceptions.html @@ -1,87 +1,120 @@ -Python: module func_timeout.exceptions - - +Python: module func_timeout.exceptions + + - - -
 
- 
func_timeout.exceptions
index
-

-

- - - +
 
-Classes
+ +
 
+ 
func_timeout.exceptions
index
+

Copyright (c) 2016 Tim Savannah All Rights Reserved.

+Licensed under the Lesser GNU Public License Version 3, LGPLv3. You should have recieved a copy of this with the source distribution as
+LICENSE, otherwise it is available at https://github.com/kata198/func_timeout/LICENSE

+

+ + + - - +
 
+Classes
       
-
builtins.BaseException(builtins.object) -
-
-
FunctionTimedOut +
       
+
builtins.BaseException(builtins.object) +
+
+
FunctionTimedOut
-

- - - +

+

 
-class FunctionTimedOut(builtins.BaseException)
+ + - - - - + + +
 
+class FunctionTimedOut(builtins.BaseException)
   Common base class for all exceptions
 
 
Method resolution order:
-
FunctionTimedOut
-
builtins.BaseException
-
builtins.object
+
   FunctionTimedOut - Exception raised when a function times out

+@property timedOutAfter - Number of seconds before timeout was triggered

+@property timedOutFunction - Function called which timed out
+@property timedOutArgs - Ordered args to function
+@property timedOutKwargs - Keyword args to function

+@method retry - R
 
 
Method resolution order:
+
FunctionTimedOut
+
builtins.BaseException
+
builtins.object
-
-Data descriptors defined here:
-
__weakref__
-
list of weak references to the object (if defined)
+
+Methods defined here:
+
__init__(self, msg='', timedOutAfter=None, timedOutFunction=None, timedOutArgs=None, timedOutKwargs=None)
Initialize self.  See help(type(self)) for accurate signature.
+ +
getMsg(self)
getMsg - Generate a default message based on parameters to FunctionTimedOut exception'

+@return <str> - Message
+ +
retry(self, timeout='__rst')
retry - Retry the timed-out function with same arguments.

+@param timeout <float/RETRY_SAME_TIMEOUT/None> Default RETRY_SAME_TIMEOUT
+    
+    If RETRY_SAME_TIMEOUT : Will retry the function same args, sane timeout
+    If a float/int : Will retry the function same args with provided timeout
+    If None : Will retry function same args no timeout

+@return - Returnval from function
+ +
+Data descriptors defined here:
+
__weakref__
+
list of weak references to the object (if defined)
-
-Methods inherited from builtins.BaseException:
-
__delattr__(self, name, /)
Implement delattr(self, name).
+
+Methods inherited from builtins.BaseException:
+
__delattr__(self, name, /)
Implement delattr(self, name).
-
__getattribute__(self, name, /)
Return getattr(self, name).
+
__getattribute__(self, name, /)
Return getattr(self, name).
-
__init__(self, /, *args, **kwargs)
Initialize self.  See help(type(self)) for accurate signature.
+
__new__(*args, **kwargs) from builtins.type
Create and return a new object.  See help(type) for accurate signature.
-
__new__(*args, **kwargs) from builtins.type
Create and return a new object.  See help(type) for accurate signature.
+
__reduce__(...)
helper for pickle
-
__reduce__(...)
helper for pickle
+
__repr__(self, /)
Return repr(self).
-
__repr__(self, /)
Return repr(self).
+
__setattr__(self, name, value, /)
Implement setattr(self, name, value).
-
__setattr__(self, name, value, /)
Implement setattr(self, name, value).
+
__setstate__(...)
-
__setstate__(...)
+
__str__(self, /)
Return str(self).
-
__str__(self, /)
Return str(self).
+
with_traceback(...)
Exception.with_traceback(tb) --
+set self.__traceback__ to tb and return self.
-
with_traceback(...)
Exception.with_traceback(tb) --
-set self.__traceback__ to tb and return self.
- -
-Data descriptors inherited from builtins.BaseException:
-
__cause__
-
exception cause
+
+Data descriptors inherited from builtins.BaseException:
+
__cause__
+
exception cause
-
__context__
-
exception context
+
__context__
+
exception context
-
__dict__
+
__dict__
-
__suppress_context__
+
__suppress_context__
-
__traceback__
+
__traceback__
-
args
+
args
-

- +

+ + + + + +
 
+Data
       RETRY_SAME_TIMEOUT = '__rst'
+__all__ = ('FunctionTimedOut', 'RETRY_SAME_TIMEOUT')
+

\ No newline at end of file diff --git a/doc/func_timeout.html b/doc/func_timeout.html index 61b5745..1966139 100644 --- a/doc/func_timeout.html +++ b/doc/func_timeout.html @@ -1,141 +1,212 @@ -Python: package func_timeout - - +Python: package func_timeout + + - - -
 
- 
func_timeout (version 3.1.0)
index
-

Copyright (c) 2016 Tim Savannah All Rights Reserved.

-Licensed under the Lesser GNU Public License Version 3, LGPLv3. You should have recieved a copy of this with the source distribution as
+ + +
 
+ 
func_timeout (version 4.0.0)
index
+

Copyright (c) 2016, 2017 Tim Savannah All Rights Reserved.

+Licensed under the Lesser GNU Public License Version 3, LGPLv3. You should have recieved a copy of this with the source distribution as
LICENSE, otherwise it is available at https://github.com/kata198/func_timeout/LICENSE

-

- - - +

+

 
-Package Contents
+ + - -
 
+Package Contents
       
StoppableThread
-
dafunc
-
exceptions
-

- - - + +
 
-Classes
       
StoppableThread
+
dafunc
+
exceptions
+

+ + + - - +
 
+Classes
       
-
builtins.BaseException(builtins.object) -
-
-
func_timeout.exceptions.FunctionTimedOut +
       
+
builtins.BaseException(builtins.object) +
+
+
func_timeout.exceptions.FunctionTimedOut
-

- - - +

+

 
-class FunctionTimedOut(builtins.BaseException)
+ + - - - - + + +
 
+class FunctionTimedOut(builtins.BaseException)
   FunctionTimedOut - Exception raised when a function times out
 
 
Method resolution order:
-
FunctionTimedOut
-
builtins.BaseException
-
builtins.object
+
   FunctionTimedOut - Exception raised when a function times out

+@property timedOutAfter - Number of seconds before timeout was triggered

+@property timedOutFunction - Function called which timed out
+@property timedOutArgs - Ordered args to function
+@property timedOutKwargs - Keyword args to function

+@method retry - R
 
 
Method resolution order:
+
FunctionTimedOut
+
builtins.BaseException
+
builtins.object
-
-Data descriptors defined here:
-
__weakref__
-
list of weak references to the object (if defined)
+
+Methods defined here:
+
__init__(self, msg='', timedOutAfter=None, timedOutFunction=None, timedOutArgs=None, timedOutKwargs=None)
Initialize self.  See help(type(self)) for accurate signature.
+ +
getMsg(self)
getMsg - Generate a default message based on parameters to FunctionTimedOut exception'

+@return <str> - Message
+ +
retry(self, timeout='__rst')
retry - Retry the timed-out function with same arguments.

+@param timeout <float/RETRY_SAME_TIMEOUT/None> Default RETRY_SAME_TIMEOUT
+    
+    If RETRY_SAME_TIMEOUT : Will retry the function same args, sane timeout
+    If a float/int : Will retry the function same args with provided timeout
+    If None : Will retry function same args no timeout

+@return - Returnval from function
+ +
+Data descriptors defined here:
+
__weakref__
+
list of weak references to the object (if defined)
-
-Methods inherited from builtins.BaseException:
-
__delattr__(self, name, /)
Implement delattr(self, name).
+
+Methods inherited from builtins.BaseException:
+
__delattr__(self, name, /)
Implement delattr(self, name).
-
__getattribute__(self, name, /)
Return getattr(self, name).
+
__getattribute__(self, name, /)
Return getattr(self, name).
-
__init__(self, /, *args, **kwargs)
Initialize self.  See help(type(self)) for accurate signature.
+
__new__(*args, **kwargs) from builtins.type
Create and return a new object.  See help(type) for accurate signature.
-
__new__(*args, **kwargs) from builtins.type
Create and return a new object.  See help(type) for accurate signature.
+
__reduce__(...)
helper for pickle
-
__reduce__(...)
helper for pickle
+
__repr__(self, /)
Return repr(self).
-
__repr__(self, /)
Return repr(self).
+
__setattr__(self, name, value, /)
Implement setattr(self, name, value).
-
__setattr__(self, name, value, /)
Implement setattr(self, name, value).
+
__setstate__(...)
-
__setstate__(...)
+
__str__(self, /)
Return str(self).
-
__str__(self, /)
Return str(self).
+
with_traceback(...)
Exception.with_traceback(tb) --
+set self.__traceback__ to tb and return self.
-
with_traceback(...)
Exception.with_traceback(tb) --
-set self.__traceback__ to tb and return self.
- -
-Data descriptors inherited from builtins.BaseException:
-
__cause__
-
exception cause
+
+Data descriptors inherited from builtins.BaseException:
+
__cause__
+
exception cause
-
__context__
-
exception context
+
__context__
+
exception context
-
__dict__
+
__dict__
-
__suppress_context__
+
__suppress_context__
-
__traceback__
+
__traceback__
-
args
+
args
-

- - - +
 
-Functions

+ + + - - +
 
+Functions
       
func_timeout(timeout, func, args=(), kwargs=None)
func_timeout - Runs the given function for up to #timeout# seconds.

-Raises any exceptions #func# would raise, returns what #func# would return (unless timeout is exceeded), in which case it raises FunctionTimedOut

-@param timeout <float> - Maximum number of seconds to run #func# before terminating
-@param func <function> - The function to call
-@param args    <tuple> - Any ordered arguments to pass to the function
-@param kwargs  <dict/None> - Keyword arguments to pass to the function.

-@raises - FunctionTimedOut if #timeout# is exceeded, otherwise anything #func# could raise will be raised

-If the timeout is exceeded, FunctionTimedOut will be raised within the context of the called function every two seconds until it terminates,
-but will not block the calling thread (a new thread will be created to perform the join). If possible, you should try/except FunctionTimedOut
-to return cleanly, but in most cases it will 'just work'.

-Be careful of code like:
-def myfunc():
-    while True:
-        try:
-            dosomething()
-        except Exception:
-            continue

-because it will never terminate.

+
       
func_set_timeout(timeout, allowOverride=False)
set_timeout - Wrapper to run a function with a given/calculated timeout (max execution time).
+    Optionally (if #allowOverride is True), adds a paramater, "forceTimeout", to the
+    function which, if provided, will override the default timeout for that invocation.

+    If #timeout is provided as a lambda/function, it will be called
+      prior to each invocation of the decorated function to calculate the timeout to be used
+      for that call, based on the arguments passed to the decorated function.
+      
+      For example, you may have a "processData" function whose execution time
+      depends on the number of "data" elements, so you may want a million elements to have a 
+      much higher timeout than seven elements.)

+    If #allowOverride is True AND a kwarg of "forceTimeout" is passed to the wrapped function, that timeout
+     will be used for that single call.

+@param timeout <float OR lambda/function> - 

+    **If float:**
+        Default number of seconds max to allow function to execute
+          before throwing FunctionTimedOut
+    
+    **If lambda/function:

+         If a function/lambda is provided, it will be called for every
+          invocation of the decorated function (unless #allowOverride=True and "forceTimeout" was passed) 
+          to determine the timeout to use based on the arguments to the decorated function.

+            The arguments as passed into the decorated function will be passed to this function.
+             They either must match exactly to what the decorated function has, OR
+              if you prefer to get the *args (list of ordered args) and **kwargs ( key : value  keyword args form),
+              define your calculate function like:
+                
+                def calculateTimeout(*args, **kwargs):
+                    ...
+            
+              or lambda like:

+                calculateTimeout = lambda *args, **kwargs : ...

+            otherwise the args to your calculate function should match exactly the decorated function.


+@param allowOverride <bool> Default False, if True adds a keyword argument to the decorated function,
+    "forceTimeout" which, if provided, will override the #timeout. If #timeout was provided as a lambda / function, it
+     will not be called.

+@throws FunctionTimedOut If time alloted passes without function returning naturally

+@see func_timeout
+
func_timeout(timeout, func, args=(), kwargs=None)
func_timeout - Runs the given function for up to #timeout# seconds.

+Raises any exceptions #func# would raise, returns what #func# would return (unless timeout is exceeded), in which case it raises FunctionTimedOut

+@param timeout <float> - Maximum number of seconds to run #func# before terminating
+@param func <function> - The function to call
+@param args    <tuple> - Any ordered arguments to pass to the function
+@param kwargs  <dict/None> - Keyword arguments to pass to the function.

+@raises - FunctionTimedOut if #timeout# is exceeded, otherwise anything #func# could raise will be raised

+If the timeout is exceeded, FunctionTimedOut will be raised within the context of the called function every two seconds until it terminates,
+but will not block the calling thread (a new thread will be created to perform the join). If possible, you should try/except FunctionTimedOut
+to return cleanly, but in most cases it will 'just work'.

+Be careful of code like:
+def myfunc():
+    while True:
+        try:
+            dosomething()
+        except Exception:
+            continue

+because it will never terminate.

@return - The return value that #func# gives
-

- - - +
 
-Data

+ + + - -
 
+Data
       __all__ = ('func_timeout', 'FunctionTimedOut')
-__version_tuple__ = (3, 0, 1)
- +        +__all__ = ('func_timeout', 'func_set_timeout', 'FunctionTimedOut')
+__version_tuple__ = (4, 0, 0) +

\ No newline at end of file diff --git a/doc/index.html b/doc/index.html new file mode 120000 index 0000000..3ee7a08 --- /dev/null +++ b/doc/index.html @@ -0,0 +1 @@ +func_timeout.html \ No newline at end of file