From 5eb8e310d5ccf5b3ea3be0129e1e87a4a609b71f Mon Sep 17 00:00:00 2001 From: James Lu Date: Sun, 4 Jun 2023 19:09:43 -0700 Subject: [PATCH] Move csv.join / split definitions to src/dbi.py Monkey patching a built-in library is just plain confusing. --- src/dbi.py | 17 +++++++++++++++-- src/utils/__init__.py | 17 ----------------- 2 files changed, 15 insertions(+), 19 deletions(-) diff --git a/src/dbi.py b/src/dbi.py index 33fa90fbd..11f02244e 100644 --- a/src/dbi.py +++ b/src/dbi.py @@ -408,6 +408,19 @@ def close(self): 'flat': FlatfileMapping, } +### +# csv.{join,split} -- useful functions that should exist. +### +def csv_join(L): + fd = minisix.io.StringIO() + writer = csv.writer(fd) + writer.writerow(L) + return fd.getvalue().rstrip('\r\n') + +def csv_split(s): + fd = minisix.io.StringIO(s) + reader = csv.reader(fd) + return next(reader) class Record(object): def __init__(self, id=None, **kwargs): @@ -444,11 +457,11 @@ def __init__(self, id=None, **kwargs): setattr(self, name, default) def serialize(self): - return csv.join([repr(getattr(self, name)) for name in self.fields]) + return csv_join([repr(getattr(self, name)) for name in self.fields]) def deserialize(self, s): unseenRecords = set(self.fields) - for (name, strValue) in zip(self.fields, csv.split(s)): + for (name, strValue) in zip(self.fields, csv_split(s)): setattr(self, name, self.converters[name](strValue)) unseenRecords.remove(name) for name in unseenRecords: diff --git a/src/utils/__init__.py b/src/utils/__init__.py index 5f0cf2c8f..09453b968 100644 --- a/src/utils/__init__.py +++ b/src/utils/__init__.py @@ -31,23 +31,6 @@ from . import minisix -### -# csv.{join,split} -- useful functions that should exist. -### -import csv -def join(L): - fd = minisix.io.StringIO() - writer = csv.writer(fd) - writer.writerow(L) - return fd.getvalue().rstrip('\r\n') - -def split(s): - fd = minisix.io.StringIO(s) - reader = csv.reader(fd) - return next(reader) -csv.join = join -csv.split = split - def force(x): if callable(x): return x()