diff options
Diffstat (limited to 'module/utils/__init__.py')
-rw-r--r-- | module/utils/__init__.py | 253 |
1 files changed, 0 insertions, 253 deletions
diff --git a/module/utils/__init__.py b/module/utils/__init__.py deleted file mode 100644 index ca00f9abe..000000000 --- a/module/utils/__init__.py +++ /dev/null @@ -1,253 +0,0 @@ -# -*- coding: utf-8 -*- - -""" Store all usefull functions here """ - -import os -import time -import re -from string import maketrans -from itertools import islice -from htmlentitydefs import name2codepoint - -# abstraction layer for json operations -try: # since python 2.6 - import json -except ImportError: #use system simplejson if available - import simplejson as json - -json_loads = json.loads -json_dumps = json.dumps - -def decode(string): - """ decode string with utf if possible """ - try: - if type(string) == str: - return string.decode("utf8", "replace") - else: - return string - except: - return string - -def encode(string): - """ decode string to utf if possible """ - try: - if type(string) == unicode: - return string.encode("utf8", "replace") - else: - return string - except: - return string - -def remove_chars(string, repl): - """ removes all chars in repl from string""" - if type(string) == str: - return string.translate(maketrans("", ""), repl) - elif type(string) == unicode: - return string.translate(dict([(ord(s), None) for s in repl])) - - -def get_console_encoding(enc): - if os.name == "nt": - if enc == "cp65001": # aka UTF-8 - print "WARNING: Windows codepage 65001 is not supported." - enc = "cp850" - else: - enc = "utf8" - - return enc - -def compare_time(start, end): - start = map(int, start) - end = map(int, end) - - if start == end: return True - - now = list(time.localtime()[3:5]) - if start < now < end: return True - elif start > end and (now > start or now < end): return True - elif start < now > end < start: return True - else: return False - -def to_list(value): - return value if type(value) == list else ([value] if value is not None else []) - -def formatSize(size): - print "Deprecated formatSize, use format_size" - return format_size(size) - -def format_size(bytes): - bytes = int(bytes) - steps = 0 - sizes = ("B", "KiB", "MiB", "GiB", "TiB", "PiB", "EiB") - while bytes > 1000: - bytes /= 1024.0 - steps += 1 - return "%.2f %s" % (bytes, sizes[steps]) - -def formatSpeed(speed): - print "Deprecated formatSpeed, use format_speed" - return format_speed(speed) - -def format_speed(speed): - return format_size(speed) + "/s" - -def format_time(seconds): - if seconds < 0: return "00:00:00" - hours, seconds = divmod(seconds, 3600) - minutes, seconds = divmod(seconds, 60) - return "%.2i:%.2i:%.2i" % (hours, minutes, seconds) - -def uniqify(seq): #by Dave Kirby - """ removes duplicates from list, preserve order """ - seen = set() - return [x for x in seq if x not in seen and not seen.add(x)] - -def bits_set(bits, compare): - """ checks if all bits are set in compare, or bits is 0 """ - return bits == (bits & compare) - -def parseFileSize(string, unit=None): #returns bytes - if not unit: - m = re.match(r"([\d.,]+) *([a-zA-Z]*)", string.strip().lower()) - if m: - traffic = float(m.group(1).replace(",", ".")) - unit = m.group(2) - else: - return 0 - else: - if isinstance(string, basestring): - traffic = float(string.replace(",", ".")) - else: - traffic = string - - #ignore case - unit = unit.lower().strip() - - if unit in ("gb", "gig", "gbyte", "gigabyte", "gib", "g"): - traffic *= 1 << 30 - elif unit in ("mb", "mbyte", "megabyte", "mib", "m"): - traffic *= 1 << 20 - elif unit in ("kb", "kib", "kilobyte", "kbyte", "k"): - traffic *= 1 << 10 - - return traffic - - -def lock(func): - def new(*args, **kwargs): - #print "Handler: %s args: %s" % (func,args[1:]) - args[0].lock.acquire() - try: - return func(*args, **kwargs) - finally: - args[0].lock.release() - - return new - -def read_lock(func): - def new(*args, **kwargs): - args[0].lock.acquire(shared=True) - try: - return func(*args, **kwargs) - finally: - args[0].lock.release() - - return new - -def chunks(iterable, size): - it = iter(iterable) - item = list(islice(it, size)) - while item: - yield item - item = list(islice(it, size)) - - -def fixup(m): - text = m.group(0) - if text[:2] == "&#": - # character reference - try: - if text[:3] == "&#x": - return unichr(int(text[3:-1], 16)) - else: - return unichr(int(text[2:-1])) - except ValueError: - pass - else: - # named entity - try: - name = text[1:-1] - text = unichr(name2codepoint[name]) - except KeyError: - pass - - return text # leave as is - - -def has_method(obj, name): - """ checks if 'name' was defined in obj, (false if it was inhereted) """ - return name in obj.__dict__ - -def accumulate(it, inv_map=None): - """ accumulate (key, value) data to {value : [keylist]} dictionary """ - if not inv_map: - inv_map = {} - - for key, value in it: - if value in inv_map: - inv_map[value].append(key) - else: - inv_map[value] = [key] - - return inv_map - -def to_string(value): - return str(value) if not isinstance(value, basestring) else value - -def to_int(string, default=0): - """ return int from string or default """ - try: - return int(string) - except ValueError: - return default - -def from_string(value, typ=None): - """ cast value to given type, unicode for strings """ - - # value is no string - if not isinstance(value, basestring): - return value - - value = decode(value) - - if typ == "int": - return int(value) - elif typ == "bool": - return True if value.lower() in ("1", "true", "on", "an", "yes") else False - elif typ == "time": - if not value: value = "0:00" - if not ":" in value: value += ":00" - return value - else: - return value - -def get_index(l, value): - """ .index method that also works on tuple and python 2.5 """ - for pos, t in enumerate(l): - if t == value: - return pos - - # Matches behavior of list.index - raise ValueError("list.index(x): x not in list") - -def primary_uid(user): - """ Gets primary user id for user instances or ints """ - if type(user) == int: return user - return user.primary if user else None - -def html_unescape(text): - """Removes HTML or XML character references and entities from a text string""" - return re.sub("&#?\w+;", fixup, text) - -if __name__ == "__main__": - print remove_chars("ab'cdgdsf''ds'", "'ghd") |