From 4d48dde965a90cb67432829f0248548b49b08fa0 Mon Sep 17 00:00:00 2001 From: Basile Clement Date: Thu, 26 May 2016 22:26:03 +0200 Subject: [PATCH] Utilise unicodecsv de PyPy MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit GestioCOF utilisait une implémentation locale du module `csv` compatible avec `unicode`. Il existe un module PyPy du même nom qui fait la même chose, autant l'utiliser (par ailleurs, il fonctionne plus sainement avec Python 3). --- gestioncof/unicodecsv.py | 60 ---------------------------------------- requirements.txt | 1 + 2 files changed, 1 insertion(+), 60 deletions(-) delete mode 100644 gestioncof/unicodecsv.py diff --git a/gestioncof/unicodecsv.py b/gestioncof/unicodecsv.py deleted file mode 100644 index caa51521..00000000 --- a/gestioncof/unicodecsv.py +++ /dev/null @@ -1,60 +0,0 @@ -import csv, codecs, cStringIO - -class UTF8Recoder(object): - """ - Iterator that reads an encoded stream and reencodes the input to UTF-8 - """ - def __init__(self, f, encoding): - self.reader = codecs.getreader(encoding)(f) - - def __iter__(self): - return self - - def next(self): - return self.reader.next().encode("utf-8") - -class UnicodeReader(object): - """ - A CSV reader which will iterate over lines in the CSV file "f", - which is encoded in the given encoding. - """ - - def __init__(self, f, dialect=csv.excel, encoding="utf-8", **kwds): - f = UTF8Recoder(f, encoding) - self.reader = csv.reader(f, dialect=dialect, **kwds) - - def next(self): - row = self.reader.next() - return [unicode(s, "utf-8") for s in row] - - def __iter__(self): - return self - -class UnicodeWriter(object): - """ - A CSV writer which will write rows to CSV file "f", - which is encoded in the given encoding. - """ - - def __init__(self, f, dialect=csv.excel, encoding="utf-8", **kwds): - # Redirect output to a queue - self.queue = cStringIO.StringIO() - self.writer = csv.writer(self.queue, dialect=dialect, **kwds) - self.stream = f - self.encoder = codecs.getincrementalencoder(encoding)() - - def writerow(self, row): - self.writer.writerow([s.encode("utf-8") for s in row]) - # Fetch UTF-8 output from the queue ... - data = self.queue.getvalue() - data = data.decode("utf-8") - # ... and reencode it into the target encoding - data = self.encoder.encode(data) - # write to the target stream - self.stream.write(data) - # empty queue - self.queue.truncate(0) - - def writerows(self, rows): - for row in rows: - self.writerow(row) diff --git a/requirements.txt b/requirements.txt index fccde14c..b01213b2 100644 --- a/requirements.txt +++ b/requirements.txt @@ -9,3 +9,4 @@ MySQL-python==1.2.5 Pillow==2.9.0 simplejson==3.8.2 six==1.10.0 +unicodecsv==0.14.1