diff options
author | Gianluca Montecchi <gian@grys.it> | 2009-10-01 23:39:28 +0200 |
---|---|---|
committer | Gianluca Montecchi <gian@grys.it> | 2009-10-01 23:39:28 +0200 |
commit | ed4a943875d81732bfa3127eb252c2db2e3588f4 (patch) | |
tree | 1fa7da00b01b8807adac3f3e3231fc8a78b3a6c7 /interfaces/web/Bugs-Everywhere-Web/libbe/encoding.py | |
parent | e42729af0efc1a4c064e8875e728f9c3c1694a1d (diff) | |
download | bugseverywhere-ed4a943875d81732bfa3127eb252c2db2e3588f4.tar.gz |
Merged with head branch
Diffstat (limited to 'interfaces/web/Bugs-Everywhere-Web/libbe/encoding.py')
-rw-r--r-- | interfaces/web/Bugs-Everywhere-Web/libbe/encoding.py | 51 |
1 files changed, 51 insertions, 0 deletions
diff --git a/interfaces/web/Bugs-Everywhere-Web/libbe/encoding.py b/interfaces/web/Bugs-Everywhere-Web/libbe/encoding.py new file mode 100644 index 0000000..d603602 --- /dev/null +++ b/interfaces/web/Bugs-Everywhere-Web/libbe/encoding.py @@ -0,0 +1,51 @@ +# Bugs Everywhere, a distributed bugtracker +# Copyright (C) 2008-2009 W. Trevor King <wking@drexel.edu> +# +# 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 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., +# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. +import codecs +import locale +import sys +import doctest + +def get_encoding(): + """ + Guess a useful input/output/filesystem encoding... Maybe we need + seperate encodings for input/output and filesystem? Hmm... + """ + encoding = locale.getpreferredencoding() or sys.getdefaultencoding() + if sys.platform != 'win32' or sys.version_info[:2] > (2, 3): + encoding = locale.getlocale(locale.LC_TIME)[1] or encoding + # Python 2.3 on windows doesn't know about 'XYZ' alias for 'cpXYZ' + return encoding + +def known_encoding(encoding): + """ + >>> known_encoding("highly-unlikely-encoding") + False + >>> known_encoding(get_encoding()) + True + """ + try: + codecs.lookup(encoding) + return True + except LookupError: + return False + +def set_IO_stream_encodings(encoding): + sys.stdin = codecs.getreader(encoding)(sys.__stdin__) + sys.stdout = codecs.getwriter(encoding)(sys.__stdout__) + sys.stderr = codecs.getwriter(encoding)(sys.__stderr__) + +suite = doctest.DocTestSuite() |