[yum-git] progress_meter.py translate.py

James Bowes jbowes at linux.duke.edu
Sun Jan 27 23:00:34 UTC 2008


 progress_meter.py |  175 ---------------------------------
 translate.py      |  282 ------------------------------------------------------
 2 files changed, 457 deletions(-)

New commits:
commit 6282862600b06b7eb6fce37d9203cfba746c0517
Author: James Bowes <jbowes at redhat.com>
Date:   Sun Jan 27 16:53:44 2008 -0500

    Remove old and unused progress_meter and translate modules

diff --git a/progress_meter.py b/progress_meter.py
deleted file mode 100644
index e05b52d..0000000
--- a/progress_meter.py
+++ /dev/null
@@ -1,175 +0,0 @@
-#!/usr/bin/python -t
-# This program is free software; you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 2 of the License, or
-# (at your option) any later version.
-#
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-# GNU Library General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with this program; if not, write to the Free Software
-# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
-
-import sys
-import time
-
-class text_progress_meter:
-    def __init__(self, fo=sys.stderr):
-        self.fo = fo
-        self.update_period = 0.3 # seconds
-
-    def start(self, filename, url, basename, length):
-        self.filename = filename
-        self.url = url
-        self.basename = basename
-        self.length = length
-        if not length == None:
-            self.flength = self.format_number(length) + 'B'
-        self.start_time = time.time()
-        self.last_update = 0
-        self._do_start()
-
-    def _do_start(self):
-        pass
-
-    def end(self):
-        self.now = time.time()
-        self._do_end()
-
-    def _do_end(self):
-        total_time = self.format_time(self.now - self.start_time)
-        total_size = self.format_number(self.read)
-        if self.length is None:
-            out = '\r%-60.60s    %5sB %s ' % \
-                  (self.basename, total_size, total_time)
-        else:
-            bar = '='*25
-            out = '\r%-25.25s %3i%% |%-25.25s| %5sB %8s     ' % \
-                  (self.basename, 100, bar, total_size, total_time)
-        self.fo.write(out)
-        self.fo.write('\n')
-        self.fo.flush()
-        
-    def update(self, read):
-        # for a real gui, you probably want to override and put a call
-        # to your mainloop iteration function here
-        self.read = read # put this here so it's caught for self.end
-        now = time.time()
-        if (now >= self.last_update + self.update_period) or \
-               not self.last_update:
-            self.now = now
-            self._do_update(read)
-            self.last_update = now
-
-    def _do_update(self, read):
-        # elapsed time since last update
-        etime = self.now - self.start_time
-        fetime = self.format_time(etime)
-        fread = self.format_number(read)
-
-        #self.length = None
-        if self.length is None:
-            out = '\r%-60.60s    %5sB %s ' % \
-                  (self.basename, fread, fetime)
-        else:
-            rtime = self.format_time(self.project(etime, read))
-            try: frac = float(read)/self.length
-            except ZeroDivisionError: frac = 1.0
-            if frac > 1.0: frac = 1.0
-            bar = '='*int(25 * frac)
-            out = '\r%-25.25s %3i%% |%-25.25s| %5sB %8s ETA ' % \
-                  (self.basename, frac*100, bar, fread, rtime)
-        self.fo.write(out)
-        self.fo.flush()
-
-    def project(self, etime, read):
-        # get projected time for total download
-        if read == 0:
-            # if we just started this file, all bets are off
-            self.last_etime = etime
-            self.last_read  = 0
-            self.ave_rate = None
-            return None
-
-        time_diff = etime - self.last_etime
-        read_diff = read  - self.last_read
-        self.last_etime = etime
-        self.last_read  = read
-        try: rate = time_diff / read_diff  ## this is actually an inverse-rate
-        except ZeroDivisionError: return 0 ## should only happen at end of file
-
-        self._get_new_ave_rate(rate)
-        remaining_time = self.ave_rate * (self.length - read)
-        if remaining_time < 0: remaining_time = 0
-        return self._round_remaining_time(remaining_time)
-        
-    def _get_new_ave_rate(self, rate, epsilon=0.98):
-        if self.ave_rate == None:
-            self.ave_rate = rate
-        else:
-            # calculate a "rolling average" - this balances long-term behavior
-            # with short-term fluctuations
-            # epsilon = 0.0  -->  only consider most recent block
-            # epsilon = 1.0  -->  only consider first block
-            self.ave_rate = (self.ave_rate * epsilon) + (rate * (1-epsilon))
-
-    def _round_remaining_time(self, remaining_time):
-        # round to further stabilize it
-        i = 1
-        while remaining_time > 30:
-            i = i * 2
-            remaining_time = remaining_time / 2
-        remaining_time = int(remaining_time)
-        return float(remaining_time * i)
-            
-    def format_time(self, seconds):
-        if seconds is None or seconds < 0:
-            return '--:--'
-        else:
-            seconds = int(seconds)
-            minutes = seconds / 60
-            seconds = seconds % 60
-            return '%02i:%02i' % (minutes, seconds)
-        
-    def format_number(self, number, SI=0, space=' '):
-        """Turn numbers into human-readable metric-like numbers"""
-        symbols = ['',  # (none)
-                   'k', # kilo
-                   'M', # mega
-                   'G', # giga
-                   'T', # tera
-                   'P', # peta
-                   'E', # exa
-                   'Z', # zetta
-                   'Y'] # yotta
-    
-        if SI: step = 1000.0
-        else: step = 1024.0
-
-        thresh = 999
-        depth = 0
-    
-        # we want numbers between 
-        while number > thresh:
-            depth  = depth + 1
-            number = number / step
-
-        # just in case someone needs more than 1000 yottabytes!
-        diff = depth - len(symbols) + 1
-        if diff > 0:
-            depth = depth - diff
-            number = number * thresh**depth
-
-        if type(number) == type(1) or type(number) == type(1L):
-            format = '%i%s%s'
-        elif number < 9.95:
-            # must use 9.95 for proper sizing.  For example, 9.99 will be
-            # rounded to 10.0 with the .1f format string (which is too long)
-            format = '%.1f%s%s'
-        else:
-            format = '%.0f%s%s'
-    
-        return(format % (number, space, symbols[depth]))
diff --git a/translate.py b/translate.py
deleted file mode 100644
index a4ab4ea..0000000
--- a/translate.py
+++ /dev/null
@@ -1,282 +0,0 @@
-# Python module to handle translations
-#
-# Shamlessly copied from the anaconda tree.
-# $Id$
-
-import os, string
-
-prefix = '/usr'
-localedir = prefix + '/share/locale'
-_cat = None
-_cats = {}
-
-# What languages do we support?
-lang = []
-
-def _expandLang(str):
-    langs = [str]
-    # remove charset ...
-    if '.' in str:
-        langs.append(string.split(str, '.')[0])
-        # also add 2 character language code ...
-    if len(str) > 2:
-        langs.append(str[:2])
-    return langs
-
-def _readEnvironment():
-    global lang
-    for env in 'LANGUAGE', 'LC_ALL', 'LC_MESSAGES', 'LANG':
-        if os.environ.has_key(env):
-            lang = string.split(os.environ[env], ':')
-            lang = map(_expandLang, lang)
-            lang = reduce(lambda a, b: a + b, lang)
-            break
-    # remove duplicates
-    newlang = []
-    for l in lang:
-        if not l in newlang:
-            newlang.append(l)
-    lang = newlang
-    del newlang
-    
-if 'C' not in lang:
-    lang.append('C')
-
-error = 'gettext.error'
-
-def _lsbStrToInt(str):
-    return ord(str[0]) + \
-           (ord(str[1]) << 8) + \
-           (ord(str[2]) << 16) + \
-           (ord(str[3]) << 24)
-def _intToLsbStr(int):
-    return chr(int         & 0xff) + \
-           chr((int >> 8)  & 0xff) + \
-           chr((int >> 16) & 0xff) + \
-           chr((int >> 24) & 0xff)
-def _msbStrToInt(str):
-    return ord(str[3]) + \
-           (ord(str[2]) << 8) + \
-           (ord(str[1]) << 16) + \
-           (ord(str[0]) << 24)
-def _intToMsbStr(int):
-    return chr((int >> 24) & 0xff) + \
-           chr((int >> 16) & 0xff) + \
-           chr((int >> 8) & 0xff) + \
-           chr(int & 0xff)
-def _StrToInt(str):
-    if _gettext_byteorder == 'msb':
-        return _msbStrToInt(str)
-    else:
-        return _lsbStrToInt(str)
-def _intToStr(int):
-    if _gettext_byteorder == 'msb':
-        return _intToMsbStr(str)
-    else:
-        return _intToLsbStr(str)
-
-def _getpos(levels = 0):
-    """Returns the position in the code where the function was called.
-    The function uses some knowledge about python stack frames."""
-    import sys
-    # get access to the stack frame by generating an exception.
-    try:
-        raise RuntimeError
-    except RuntimeError:
-        frame = sys.exc_traceback.tb_frame
-    frame = frame.f_back # caller's frame
-    while levels > 0:
-        frame = frame.f_back
-        levels = levels - 1
-    return (frame.f_globals['__name__'],
-            frame.f_code.co_name,
-            frame.f_lineno)
-
-class Catalog:
-    def __init__(self, domain=None, localedir=localedir):
-        self.domain = domain
-        self.localedir = localedir
-        self.cat = {}
-        if not domain: return
-        for self.lang in lang:
-            if self.lang == 'C':
-                return
-            catalog = "%s/%s/LC_MESSAGES/%s.mo" % (
-                    localedir, self.lang, domain)
-            try:
-                f = open(catalog, "r")
-                buffer = f.read()
-                f.close()
-                del f
-                break
-            except IOError:
-                pass
-        else:
-            return # assume C locale
-
-        if _StrToInt(buffer[:4]) != 0x950412de:
-            # magic number doesn't match
-            raise error, 'Bad magic number in %s' % (catalog,)
-
-        self.revision = _StrToInt(buffer[4:8])
-        nstrings = _StrToInt(buffer[8:12])
-        origTabOffset  = _StrToInt(buffer[12:16])
-        transTabOffset = _StrToInt(buffer[16:20])
-        for i in range(nstrings):
-            origLength = _StrToInt(buffer[origTabOffset:
-                                          origTabOffset+4])
-            origOffset = _StrToInt(buffer[origTabOffset+4:
-                                          origTabOffset+8])
-            origTabOffset = origTabOffset + 8
-            origStr = buffer[origOffset:origOffset+origLength]
-
-            transLength = _StrToInt(buffer[transTabOffset:
-                                           transTabOffset+4])
-            transOffset = _StrToInt(buffer[transTabOffset+4:
-                                           transTabOffset+8])
-            transTabOffset = transTabOffset + 8
-            transStr = buffer[transOffset:transOffset+transLength]
-
-            self.cat[origStr] = transStr
-
-    def gettext(self, string):
-        """Get the translation of a given string"""
-        if self.cat.has_key(string):
-            return self.cat[string]
-        else:
-            return string
-    # allow catalog access as cat(str) and cat[str] and cat.gettext(str)
-    __getitem__ = gettext
-    __call__ = gettext
-
-    # this is experimental code for producing mo files from Catalog objects
-    def __setitem__(self, string, trans):
-        """Set the translation of a given string"""
-        self.cat[string] = trans
-    def save(self, file):
-        """Create a .mo file from a Catalog object"""
-        try:
-            f = open(file, "wb")
-        except IOError:
-            raise error, "can't open " + file + " for writing"
-        f.write(_intToStr(0x950412de))    # magic number
-        f.write(_intToStr(0))             # revision
-        f.write(_intToStr(len(self.cat))) # nstrings
-
-        oIndex = []; oData = ''
-        tIndex = []; tData = ''
-        for orig, trans in self.cat.items():
-            oIndex.append((len(orig), len(oData)))
-            oData = oData + orig + '\0'
-            tIndex.append((len(trans), len(tData)))
-            tData = tData + trans + '\0'
-        oIndexOfs = 20
-        tIndexOfs = oIndexOfs + 8 * len(oIndex)
-        oDataOfs = tIndexOfs + 8 * len(tIndex)
-        tDataOfs = oDataOfs + len(oData)
-        f.write(_intToStr(oIndexOfs))
-        f.write(_intToStr(tIndexOfs))
-        for length, offset in oIndex:
-            f.write(_intToStr(length))
-            f.write(_intToStr(offset + oDataOfs))
-        for length, offset in tIndex:
-            f.write(_intToStr(length))
-            f.write(_intToStr(offset + tDataOfs))
-        f.write(oData)
-        f.write(tData)
-
-def bindtextdomain(domain, localedir=localedir):
-    global _cat
-    if not _cats.has_key(domain):
-        _cats[domain] = Catalog(domain, localedir)
-    if not _cat: _cat = _cats[domain]
-
-def textdomain(domain):
-    global _cat
-    if not _cats.has_key(domain):
-        _cats[domain] = Catalog(domain)
-    _cat = _cats[domain]
-
-def gettext(string):
-    if _cat == None: raise error, "No catalog loaded"
-    return _cat.gettext(string)
-
-def dgettext(domain, string):
-    if domain is None:
-        return gettext(string)
-    if not _cats.has_key(domain):
-        raise error, "Domain '" + domain + "' not loaded"
-    return _cats[domain].gettext(string)
-
-def test():
-    import sys
-    global localedir
-    if len(sys.argv) not in (2, 3):
-        print "Usage: %s DOMAIN [LOCALEDIR]" % (sys.argv[0],)
-        sys.exit(1)
-    domain = sys.argv[1]
-    if len(sys.argv) == 3:
-        bindtextdomain(domain, sys.argv[2])
-    textdomain(domain)
-    info = gettext('')  # this is where special info is often stored
-    if info:
-        print "Info for domain %s, lang %s." % (domain, _cat.lang)
-        print info
-    else:
-        print "No info given in mo file."
-
-def getlangs():
-    global lang
-    return lang
-
-def setlangs(newlang):
-    global lang
-    lang = newlang
-    if type(newlang) == type(""):
-        lang = [ newlang ]
-    for l in lang:
-        langs = _expandLang(l)
-        for nl in langs:
-            if not nl in lang:
-                lang.append(nl)
-    return lang
-
-def getArch ():
-    arch = os.uname ()[4]
-    if (len (arch) == 4 and arch[0] == 'i' and arch[2:4] == "86"):
-        arch = "i386"
-
-    if arch == "sparc64":
-        arch = "sparc"
-
-    return arch
-
-###################################################################
-# Now the real module code
-
-if getArch() == 'sparc':
-    _gettext_byteorder = 'msb'
-else:
-    _gettext_byteorder = 'lsb'
-
-class i18n:
-    def __init__(self):
-        self.langs = lang
-        self.cat = Catalog("yum")
-
-    def getlangs(self):
-        return self.langs
-
-    def setlangs(self, langs):
-        self.langs = setlangs(langs)
-        self.cat = Catalog("yum")
-
-    def gettext(self, string):
-        return self.cat.gettext(string)
-
-def N_(str):
-    return str
-
-_readEnvironment()
-cat = i18n()
-_ = cat.gettext



More information about the Yum-cvs-commits mailing list