Changeset 3354

Show
Ignore:
Timestamp:
03/26/08 00:18:58 (17 years ago)
Author:
jerome
Message:

Added a function to return the default charset.

Files:
1 modified

Legend:

Unmodified
Added
Removed
  • pykota/trunk/pykota/utils.py

    r3321 r3354  
    112112        return None 
    113113             
     114def getdefaultcharset() :             
     115    """Returns the default charset to use.""" 
     116    return sys.stdout.encoding or locale.getlocale()[1] or "ANSI_X3.4-1968" 
     117     
    114118def logerr(text) : 
    115119    """Logs an unicode text to stderr.""" 
    116     sys.stderr.write(text.encode(sys.stdout.encoding \ 
    117                                      or locale.getlocale()[1] \ 
    118                                      or "ANSI_X3.4-1968", \ 
    119                                  "replace")) 
     120    sys.stderr.write(text.encode(getdefaultcharset(), "replace")) 
    120121    sys.stderr.flush() 
    121122     
    122 def loginvalidparam(opt, value, defaultvalue, additionalinfo=None) : 
     123def loginvalidparam(opt, value, defaultvalue=None, additionalinfo=None) : 
    123124    """Logs an error when an invalid parameter to a command line option 
    124125       is encountered. 
    125126    """    
    126     message = _("Invalid value '%(value)s' for the %(opt)s command line option, using default '%(defaultvalue)s' instead") \ 
     127    message = _("Invalid value '%(value)s' for the %(opt)s command line option") \ 
    127128                                % locals() 
     129    if defaultvalue is not None :                             
     130        message += ", using default '%(defaultvalue)s' instead" % locals() 
    128131    if additionalinfo : 
    129132        logerr("%s (%s)\n" % (message, additionalinfo)) 
     
    135138    import traceback 
    136139    from pykota.version import __version__ 
    137     charset = sys.stdout.encoding or locale.getlocale()[1] or "ANSI_X3.4-1968" 
    138140    lines = [] 
    139141    for line in traceback.format_exception(*sys.exc_info()) : 
    140         line = line.decode(charset, "replace") 
     142        line = line.decode(getdefaultcharset(), "replace") 
    141143        lines.extend([l for l in line.split("\n") if l]) 
    142144    msg = "ERROR: ".join(["%s\n" % l for l in (["ERROR: PyKota v%s" % __version__, message] + lines)])