aboutsummaryrefslogtreecommitdiff
path: root/vim/bundle/YouCompleteMe/third_party/retries/retries.py
diff options
context:
space:
mode:
Diffstat (limited to 'vim/bundle/YouCompleteMe/third_party/retries/retries.py')
m---------vim/bundle/YouCompleteMe0
-rw-r--r--vim/bundle/YouCompleteMe/third_party/retries/retries.py79
2 files changed, 0 insertions, 79 deletions
diff --git a/vim/bundle/YouCompleteMe b/vim/bundle/YouCompleteMe
new file mode 160000
+Subproject 0de1c0c9bb13ce82172b472c676035cd47cf6a6
diff --git a/vim/bundle/YouCompleteMe/third_party/retries/retries.py b/vim/bundle/YouCompleteMe/third_party/retries/retries.py
deleted file mode 100644
index da7fa48..0000000
--- a/vim/bundle/YouCompleteMe/third_party/retries/retries.py
+++ /dev/null
@@ -1,79 +0,0 @@
-#!/usr/bin/env python
-#
-# Copyright 2012 by Jeff Laughlin Consulting LLC
-#
-# Permission is hereby granted, free of charge, to any person obtaining a copy
-# of this software and associated documentation files (the "Software"), to deal
-# in the Software without restriction, including without limitation the rights
-# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-# copies of the Software, and to permit persons to whom the Software is
-# furnished to do so, subject to the following conditions:
-#
-# The above copyright notice and this permission notice shall be included in
-# all copies or substantial portions of the Software.
-#
-# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
-# SOFTWARE.
-
-
-import sys
-from time import sleep
-
-# Source: https://gist.github.com/n1ywb/2570004
-
-def example_exc_handler(tries_remaining, exception, delay):
- """Example exception handler; prints a warning to stderr.
-
- tries_remaining: The number of tries remaining.
- exception: The exception instance which was raised.
- """
- print >> sys.stderr, "Caught '%s', %d tries remaining, sleeping for %s seconds" % (exception, tries_remaining, delay)
-
-
-def retries(max_tries, delay=1, backoff=2, exceptions=(Exception,), hook=None):
- """Function decorator implementing retrying logic.
-
- delay: Sleep this many seconds * backoff * try number after failure
- backoff: Multiply delay by this factor after each failure
- exceptions: A tuple of exception classes; default (Exception,)
- hook: A function with the signature myhook(tries_remaining, exception);
- default None
-
- The decorator will call the function up to max_tries times if it raises
- an exception.
-
- By default it catches instances of the Exception class and subclasses.
- This will recover after all but the most fatal errors. You may specify a
- custom tuple of exception classes with the 'exceptions' argument; the
- function will only be retried if it raises one of the specified
- exceptions.
-
- Additionally you may specify a hook function which will be called prior
- to retrying with the number of remaining tries and the exception instance;
- see given example. This is primarily intended to give the opportunity to
- log the failure. Hook is not called after failure if no retries remain.
- """
- def dec(func):
- def f2(*args, **kwargs):
- mydelay = delay
- tries = reversed(range(max_tries))
- for tries_remaining in tries:
- try:
- return func(*args, **kwargs)
- except exceptions as e:
- if tries_remaining > 0:
- if hook is not None:
- hook(tries_remaining, e, mydelay)
- sleep(mydelay)
- mydelay = mydelay * backoff
- else:
- raise
- else:
- break
- return f2
- return dec