[Python-checkins] python/nondist/sandbox/csv csv.py,1.18,1.19

montanaro@users.sourceforge.net montanaro@users.sourceforge.net
Mon, 03 Feb 2003 12:25:22 -0800


Update of /cvsroot/python/python/nondist/sandbox/csv
In directory sc8-pr-cvs1:/tmp/cvs-serv18989

Modified Files:
	csv.py 
Log Message:
Rearrange the dialect code a bit.  Add a _name attribute to the Dialect
class and set it in register_dialect.  Add an unregister_dialect function.


Index: csv.py
===================================================================
RCS file: /cvsroot/python/python/nondist/sandbox/csv/csv.py,v
retrieving revision 1.18
retrieving revision 1.19
diff -C2 -d -r1.18 -r1.19
*** csv.py	3 Feb 2003 06:44:13 -0000	1.18
--- csv.py	3 Feb 2003 20:25:19 -0000	1.19
***************
*** 4,12 ****
  __all__ = [ "QUOTE_MINIMAL", "QUOTE_ALL", "QUOTE_NONNUMERIC", "QUOTE_NONE",
              "Error", "Dialect", "excel", "excel_tab", "reader", "writer",
!             "register_dialect", "get_dialect", "list_dialects"]
  
  QUOTE_MINIMAL, QUOTE_ALL, QUOTE_NONNUMERIC, QUOTE_NONE = range(4)
  
  class Dialect:
      delimiter = ','
      quotechar = '"'
--- 4,31 ----
  __all__ = [ "QUOTE_MINIMAL", "QUOTE_ALL", "QUOTE_NONNUMERIC", "QUOTE_NONE",
              "Error", "Dialect", "excel", "excel_tab", "reader", "writer",
!             "register_dialect", "get_dialect", "list_dialects",
!             "unregister_dialect" ]
  
  QUOTE_MINIMAL, QUOTE_ALL, QUOTE_NONNUMERIC, QUOTE_NONE = range(4)
  
+ _dialects = {}
+ 
+ def register_dialect(name, dialect):
+     if not issubclass(dialect, Dialect):
+         raise TypeError, "dialect not a subclass of Dialect"
+     dialect._name = name
+     _dialects[name] = dialect()
+ 
+ def get_dialect(name):
+     return _dialects[name]
+ 
+ def list_dialects():
+     return _dialects.keys()
+ 
+ def unregister_dialect(name):
+     del _dialects[name]
+ 
  class Dialect:
+     _name = ""
      delimiter = ','
      quotechar = '"'
***************
*** 19,30 ****
  class excel(Dialect):
      pass
  
  class excel_tab(excel):
      delimiter = '\t'
! 
! _dialects = {
!     'excel': excel(),
!     'excel-tab': excel_tab(),
! }
  
  class _OCcsv:
--- 38,46 ----
  class excel(Dialect):
      pass
+ register_dialect("excel", excel)
  
  class excel_tab(excel):
      delimiter = '\t'
! register_dialect("excel-tab", excel_tab)
  
  class _OCcsv:
***************
*** 81,95 ****
          for fields in lines:
              self.writerow(fields)
- 
- def register_dialect(name, dialect):
-     if not issubclass(dialect, Dialect):
-         raise TypeError, "dialect not a subclass of Dialect"
-     _dialects[name] = dialect()
- 
- def get_dialect(name):
-     return _dialects[name]
- 
- def list_dialects():
-     return _dialects.keys()
  
  # An alternate way of populating the dialects dictionary...
--- 97,100 ----