Example #1
0
File: csv.py Project: holdenk/blaze
def discover_dialect(sample, dialect=None, **kwargs):
    """ Discover CSV dialect from string sample

    Returns dict
    """
    if isinstance(dialect, compatibility._strtypes):
        dialect = csv.get_dialect(dialect)

    sniffer = csv.Sniffer()
    if not dialect:
        try:
            dialect = sniffer.sniff(sample)
        except:
            dialect = csv.get_dialect('excel')

    # Convert dialect to dictionary
    dialect = dict((key, getattr(dialect, key))
                   for key in dir(dialect) if not key.startswith('_'))

    # Update dialect with any keyword arguments passed in
    # E.g. allow user to override with delimiter=','
    for k, v in kwargs.items():
        if k in dialect:
            dialect[k] = v

    return dialect
Example #2
0
 def test_register_kwargs(self):
     name = 'fedcba'
     csv.register_dialect(name, delimiter=';')
     try:
         self.assertTrue(csv.get_dialect(name).delimiter, '\t')
         self.assertTrue(list(csv.reader('X;Y;Z', name)), ['X', 'Y', 'Z'])
     finally:
         csv.unregister_dialect(name)
Example #3
0
 def test_register_kwargs(self):
     name = 'fedcba'
     csv.register_dialect(name, delimiter=';')
     try:
         self.assertTrue(csv.get_dialect(name).delimiter, '\t')
         self.assertTrue(list(csv.reader('X;Y;Z', name)), ['X', 'Y', 'Z'])
     finally:
         csv.unregister_dialect(name)
Example #4
0
 def test_register_kwargs(self):
     name = 'fedcba'
     csv.register_dialect(name, delimiter=';')
     try:
         self.assertNotEqual(csv.get_dialect(name).delimiter, '\t')
         self.assertEqual(list(csv.reader([b'X;Y;Z'], name)), [[u'X', u'Y', u'Z']])
     finally:
         csv.unregister_dialect(name)
Example #5
0
 def test_registry(self):
     class myexceltsv(csv.excel):
         delimiter = "\t"
     name = "myexceltsv"
     expected_dialects = csv.list_dialects() + [name]
     expected_dialects.sort()
     csv.register_dialect(name, myexceltsv)
     try:
         self.assertTrue(csv.get_dialect(name).delimiter, '\t')
         got_dialects = csv.list_dialects()
         got_dialects.sort()
         self.assertEqual(expected_dialects, got_dialects)
     finally:
         csv.unregister_dialect(name)
Example #6
0
 def test_registry(self):
     class myexceltsv(csv.excel):
         delimiter = "\t"
     name = "myexceltsv"
     expected_dialects = csv.list_dialects() + [name]
     expected_dialects.sort()
     csv.register_dialect(name, myexceltsv)
     try:
         self.assertEqual(csv.get_dialect(name).delimiter, '\t')
         got_dialects = csv.list_dialects()
         got_dialects.sort()
         self.assertEqual(expected_dialects, got_dialects)
     finally:
         csv.unregister_dialect(name)