diff options
Diffstat (limited to 'plugins/wedo_plugin/usb/_interop.py')
-rw-r--r-- | plugins/wedo_plugin/usb/_interop.py | 135 |
1 files changed, 0 insertions, 135 deletions
diff --git a/plugins/wedo_plugin/usb/_interop.py b/plugins/wedo_plugin/usb/_interop.py deleted file mode 100644 index 6069d5e..0000000 --- a/plugins/wedo_plugin/usb/_interop.py +++ /dev/null @@ -1,135 +0,0 @@ -# Copyright (C) 2009-2011 Wander Lairson Costa -# -# The following terms apply to all files associated -# with the software unless explicitly disclaimed in individual files. -# -# The authors hereby grant permission to use, copy, modify, distribute, -# and license this software and its documentation for any purpose, provided -# that existing copyright notices are retained in all copies and that this -# notice is included verbatim in any distributions. No written agreement, -# license, or royalty fee is required for any of the authorized uses. -# Modifications to this software may be copyrighted by their authors -# and need not follow the licensing terms described here, provided that -# the new terms are clearly indicated on the first page of each file where -# they apply. -# -# IN NO EVENT SHALL THE AUTHORS OR DISTRIBUTORS BE LIABLE TO ANY PARTY -# FOR DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES -# ARISING OUT OF THE USE OF THIS SOFTWARE, ITS DOCUMENTATION, OR ANY -# DERIVATIVES THEREOF, EVEN IF THE AUTHORS HAVE BEEN ADVISED OF THE -# POSSIBILITY OF SUCH DAMAGE. -# -# THE AUTHORS AND DISTRIBUTORS SPECIFICALLY DISCLAIM ANY WARRANTIES, -# INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY, -# FITNESS FOR A PARTICULAR PURPOSE, AND NON-INFRINGEMENT. THIS SOFTWARE -# IS PROVIDED ON AN "AS IS" BASIS, AND THE AUTHORS AND DISTRIBUTORS HAVE -# NO OBLIGATION TO PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR -# MODIFICATIONS. - -# All the hacks necessary to assure compatibility across all -# supported versions come here. -# Please, note that there is one version check for each -# hack we need to do, this makes maintenance easier... ^^ - -import sys -import array - -__all__ = ['_reduce', '_set', '_next', '_groupby', '_sorted', '_update_wrapper'] - -# we support Python >= 2.3 -assert sys.hexversion >= 0x020300f0 - -# On Python 3, reduce became a functools module function -try: - import functools - _reduce = functools.reduce -except (ImportError, AttributeError): - _reduce = reduce - -# we only have the builtin set type since 2.5 version -try: - _set = set -except NameError: - import sets - _set = sets.Set - -# On Python >= 2.6, we have the builtin next() function -# On Python 2.5 and before, we have to call the iterator method next() -def _next(iter): - try: - return next(iter) - except NameError: - return iter.next() - -# groupby is available only since 2.4 version -try: - import itertools - _groupby = itertools.groupby -except (ImportError, AttributeError): - # stolen from Python docs - class _groupby(object): - # [k for k, g in groupby('AAAABBBCCDAABBB')] --> A B C D A B - # [list(g) for k, g in groupby('AAAABBBCCD')] --> AAAA BBB CC D - def __init__(self, iterable, key=None): - if key is None: - key = lambda x: x - self.keyfunc = key - self.it = iter(iterable) - self.tgtkey = self.currkey = self.currvalue = object() - def __iter__(self): - return self - def next(self): - while self.currkey == self.tgtkey: - self.currvalue = _next(self.it) # Exit on StopIteration - self.currkey = self.keyfunc(self.currvalue) - self.tgtkey = self.currkey - return (self.currkey, self._grouper(self.tgtkey)) - def _grouper(self, tgtkey): - while self.currkey == tgtkey: - yield self.currvalue - self.currvalue = _next(self.it) # Exit on StopIteration - self.currkey = self.keyfunc(self.currvalue) - -# builtin sorted function is only availale since 2.4 version -try: - _sorted = sorted -except NameError: - def _sorted(l, key=None, reverse=False): - # sort function on Python 2.3 does not - # support 'key' parameter - class KeyToCmp(object): - def __init__(self, K): - self.key = K - def __call__(self, x, y): - kx = self.key(x) - ky = self.key(y) - if kx < ky: - return reverse and 1 or -1 - elif kx > ky: - return reverse and -1 or 1 - else: - return 0 - tmp = list(l) - tmp.sort(KeyToCmp(key)) - return tmp - -try: - import functools - _update_wrapper = functools.update_wrapper -except (ImportError, AttributeError): - def _update_wrapper(wrapper, wrapped): - wrapper.__name__ = wrapped.__name__ - wrapper.__module__ = wrapped.__module__ - wrapper.__doc__ = wrapped.__doc__ - wrapper.__dict__ = wrapped.__dict__ - -def as_array(data=None): - if data is None: - return array.array('B') - try: - return array.array('B', data) - except TypeError: - # When you pass a unicode string, you got a TypeError - # if first parameter is not 'u' - return array.array('u', data) - |