Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit 7c852f3

Browse files
committed
Attempt to deal with some obvious errors in the code. These were all
due to using a single module-level namespace where multiple namespaces were used before. There *really* need to be tests for the sniffer stuff. This could have been avoided. Skip, please review, and add sniffer tests!
1 parent 376e636 commit 7c852f3

1 file changed

Lines changed: 14 additions & 15 deletions

File tree

Lib/csv.py

Lines changed: 14 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -161,7 +161,6 @@ def sniff(self, fileobj):
161161
"""
162162
Takes a file-like object and returns a dialect (or None)
163163
"""
164-
165164
self.fileobj = fileobj
166165

167166
data = fileobj.read(self.sample)
@@ -171,26 +170,26 @@ def sniff(self, fileobj):
171170
if delimiter is None:
172171
delimiter, skipinitialspace = self._guessDelimiter(data)
173172

174-
class Dialect(csv.Dialect):
173+
class SniffedDialect(Dialect):
175174
_name = "sniffed"
176175
lineterminator = '\r\n'
177-
quoting = csv.QUOTE_MINIMAL
176+
quoting = QUOTE_MINIMAL
178177
# escapechar = ''
179178
doublequote = False
180-
Dialect.delimiter = delimiter
181-
Dialect.quotechar = quotechar
182-
Dialect.skipinitialspace = skipinitialspace
179+
SniffedDialect.delimiter = delimiter
180+
SniffedDialect.quotechar = quotechar
181+
SniffedDialect.skipinitialspace = skipinitialspace
183182

184-
self.dialect = Dialect
183+
self.dialect = SniffedDialect
185184
return self.dialect
186185

187186

188187
def hasHeaders(self):
189188
return self._hasHeaders(self.fileobj, self.dialect)
190189

191190

192-
def register_dialect(self, name = 'sniffed'):
193-
csv.register_dialect(name, self.dialect)
191+
def register_dialect(self, name='sniffed'):
192+
register_dialect(name, self.dialect)
194193

195194

196195
def _guessQuoteAndDelimiter(self, data):
@@ -378,19 +377,19 @@ def seval(item):
378377
# objects...
379378
fileobj.seek(0)
380379

381-
reader = csv.reader(fileobj,
382-
delimiter = dialect.delimiter,
383-
quotechar = dialect.quotechar,
384-
skipinitialspace = dialect.skipinitialspace)
380+
r = csv.reader(fileobj,
381+
delimiter=dialect.delimiter,
382+
quotechar=dialect.quotechar,
383+
skipinitialspace=dialect.skipinitialspace)
385384

386-
header = reader.next() # assume first row is header
385+
header = r.next() # assume first row is header
387386

388387
columns = len(header)
389388
columnTypes = {}
390389
for i in range(columns): columnTypes[i] = None
391390

392391
checked = 0
393-
for row in reader:
392+
for row in r:
394393
# arbitrary number of rows to check, to keep it sane
395394
if checked > 20:
396395
break

0 commit comments

Comments
 (0)