Run update-copyright.py.
[hooke.git] / hooke / driver / __init__.py
index b6324cb3370f4d92f197b42e1345d10d7a1c4796..db2cd2c3140600d9ce68f9673f3318bff355459c 100644 (file)
@@ -1,20 +1,19 @@
-# Copyright (C) 2010 W. Trevor King <wking@drexel.edu>
+# Copyright (C) 2010-2012 W. Trevor King <wking@drexel.edu>
 #
 # This file is part of Hooke.
 #
-# Hooke is free software: you can redistribute it and/or
-# modify it under the terms of the GNU Lesser General Public
-# License as published by the Free Software Foundation, either
-# version 3 of the License, or (at your option) any later version.
+# Hooke is free software: you can redistribute it and/or modify it under the
+# terms of the GNU Lesser General Public License as published by the Free
+# Software Foundation, either version 3 of the License, or (at your option) any
+# later version.
 #
-# Hooke is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-# GNU Lesser General Public License for more details.
+# Hooke is distributed in the hope that it will be useful, but WITHOUT ANY
+# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
+# A PARTICULAR PURPOSE.  See the GNU Lesser General Public License for more
+# details.
 #
-# You should have received a copy of the GNU Lesser General Public
-# License along with Hooke.  If not, see
-# <http://www.gnu.org/licenses/>.
+# You should have received a copy of the GNU Lesser General Public License
+# along with Hooke.  If not, see <http://www.gnu.org/licenses/>.
 
 """The driver module provides :class:`Driver`\s for identifying and
 reading data files.
@@ -24,6 +23,9 @@ commercial force spectroscopy microscopes are provided, and it's easy
 to write your own to handle your lab's specific format.
 """
 
+import logging
+import os.path
+
 from ..config import Setting
 from ..util.pluggable import IsSubclass, construct_graph
 
@@ -31,14 +33,14 @@ from ..util.pluggable import IsSubclass, construct_graph
 DRIVER_MODULES = [
 #    ('csvdriver', True),
 #    ('hdf5', True),
-#    ('hemingclamp', True),
-#    ('jpk', True),
+    ('hemingway', True),
+    ('jpk', True),
 #    ('mcs', True),
 #    ('mfp1dexport', True),
-#    ('mfp3d', True),
-#    ('picoforce', True),
-#    ('picoforcealt', True),
+    ('mfp3d', True),
+    ('picoforce', True),
     ('tutorial', True),
+    ('wtk', True),
 ]
 """List of driver modules and whether they should be included by
 default.  TODO: autodiscovery
@@ -49,10 +51,10 @@ DRIVER_SETTING_SECTION = 'drivers'
 """
 
 
-class Driver(object):
+class Driver (object):
     """Base class for file format drivers.
     
-    :attr:`name` identifies your driver, and should match the module
+    :attr:`name` identifies your driver and should match the module
     name.
     """
     def __init__(self, name):
@@ -79,16 +81,20 @@ class Driver(object):
         """
         return False
 
-    def read(self, path):
+    def read(self, path, info=None):
         """Read data from `path` and return a
         ([:class:`hooke.curve.Data`, ...], `info`) tuple.
 
-        The `info` :class:`dict` must contain values for the keys:
-        'filetype' and 'experiment'.  See :class:`hooke.curve.Curve`
-        for details.
+        The input `info` :class:`dict` may contain attributes read
+        from the :class:`~hooke.playlist.FilePlaylist`.
+
+        See :class:`hooke.curve.Curve` for details.
         """
         raise NotImplementedError
 
+    def logger(self):
+        return logging.getLogger('hooke')
+
 # Construct driver dependency graph and load default drivers.
 
 DRIVER_GRAPH = construct_graph(
@@ -109,7 +115,8 @@ def default_settings():
         settings.append(Setting(
                 section=DRIVER_SETTING_SECTION,
                 option=driver.name,
-                value=str(default_include),
+                value=default_include,
+                type='bool',
                 help=help,
                 ))
     for dnode in DRIVER_GRAPH: