Changes in / [a2e980b:cfc6f3c7] in sasview


Ignore:
Location:
src/sas/sascalc
Files:
1 added
2 edited

Legend:

Unmodified
Added
Removed
  • src/sas/sascalc/data_util/registry.py

    rb699768 r270c882b  
    77""" 
    88 
    9 import os.path 
     9from sas.sascalc.dataloader.loader_exceptions import NoKnownLoaderException 
     10 
    1011 
    1112class ExtensionRegistry(object): 
     
    6162    def __init__(self, **kw): 
    6263        self.loaders = {} 
     64 
    6365    def __setitem__(self, ext, loader): 
    6466        if ext not in self.loaders: 
    6567            self.loaders[ext] = [] 
    6668        self.loaders[ext].insert(0,loader) 
     69 
    6770    def __getitem__(self, ext): 
    6871        return self.loaders[ext] 
     72 
    6973    def __contains__(self, ext): 
    7074        return ext in self.loaders 
     75 
    7176    def formats(self): 
    7277        """ 
     
    7681        names.sort() 
    7782        return names 
     83 
    7884    def extensions(self): 
    7985        """ 
     
    8389        exts.sort() 
    8490        return exts 
     91 
    8592    def lookup(self, path): 
    8693        """ 
     
    105112        # Raise an error if there are no matching extensions 
    106113        if len(loaders) == 0: 
    107             raise ValueError, "Unknown file type for "+path 
     114            raise ValueError("Unknown file type for "+path) 
    108115        # All done 
    109116        return loaders 
     117 
    110118    def load(self, path, format=None): 
    111119        """ 
     
    117125        """ 
    118126        if format is None: 
    119             loaders = self.lookup(path) 
     127            try: 
     128                loaders = self.lookup(path) 
     129            except ValueError as e: 
     130                pass 
    120131        else: 
    121             loaders = self.loaders[format] 
     132            try: 
     133                loaders = self.loaders[format] 
     134            except KeyError as e: 
     135                pass 
    122136        for fn in loaders: 
    123137            try: 
    124138                return fn(path) 
    125             except: 
    126                 pass # give other loaders a chance to succeed 
     139            except Exception as e: 
     140                pass  # give other loaders a chance to succeed 
    127141        # If we get here it is because all loaders failed 
    128         raise # reraises last exception 
     142        raise NoKnownLoaderException(e.message)  # raise generic exception 
    129143 
     144 
     145# TODO: Move this to the unit test folder 
    130146def test(): 
    131147    reg = ExtensionRegistry() 
     
    163179    try: reg.load('hello.missing') 
    164180    except ValueError,msg: 
    165         assert str(msg)=="Unknown file type for hello.missing",'Message: <%s>'%(msg) 
     181        assert str(msg)=="Unknown file type for hello.missing",\ 
     182            'Message: <%s>'%(msg) 
    166183    else: raise AssertError,"No error raised for missing extension" 
    167184    assert reg.formats() == ['new_cx'] 
  • src/sas/sascalc/dataloader/loader.py

    rb699768 r270c882b  
    11""" 
    22    File handler to support different file extensions. 
    3     Uses reflectometry's registry utility. 
     3    Uses reflectometer registry utility. 
    44 
    55    The default readers are found in the 'readers' sub-module 
     
    2929# Default readers are defined in the readers sub-module 
    3030import readers 
     31from loader_exceptions import NoKnownLoaderException, FileContentsException 
    3132from readers import ascii_reader 
    3233from readers import cansas_reader 
     34from readers import cansas_reader_HDF5 
     35 
    3336 
    3437class Registry(ExtensionRegistry): 
     
    3740    Readers and writers are supported. 
    3841    """ 
    39  
    4042    def __init__(self): 
    4143        super(Registry, self).__init__() 
    4244 
    43         ## Writers 
     45        # Writers 
    4446        self.writers = {} 
    4547 
    46         ## List of wildcards 
     48        # List of wildcards 
    4749        self.wildcards = ['All (*.*)|*.*'] 
    4850 
    49         ## Creation time, for testing 
     51        # Creation time, for testing 
    5052        self._created = time.time() 
    5153 
     
    6163            of a particular reader 
    6264 
    63         Defaults to the ascii (multi-column) reader 
    64         if no reader was registered for the file's 
    65         extension. 
     65        Defaults to the ascii (multi-column), cansas XML, and cansas NeXuS 
     66        readers if no reader was registered for the file's extension. 
    6667        """ 
    6768        try: 
    6869            return super(Registry, self).load(path, format=format) 
    69         except: 
    70             try: 
    71                 # No reader was found. Default to the ascii reader. 
    72                 ascii_loader = ascii_reader.Reader() 
    73                 return ascii_loader.read(path) 
    74             except: 
    75                 cansas_loader = cansas_reader.Reader() 
    76                 return cansas_loader.read(path) 
     70        except NoKnownLoaderException as e: 
     71            pass  # try the ASCII reader 
     72        except FileContentsException as e: 
     73            pass 
     74        try: 
     75            ascii_loader = ascii_reader.Reader() 
     76            return ascii_loader.read(path) 
     77        except FileContentsException: 
     78            pass  # try the cansas XML reader 
     79        try: 
     80            cansas_loader = cansas_reader.Reader() 
     81            return cansas_loader.read(path) 
     82        except FileContentsException: 
     83            pass  # try the cansas NeXuS reader 
     84        try: 
     85            cansas_nexus_loader = cansas_reader_HDF5.Reader() 
     86            return cansas_nexus_loader.read(path) 
     87        except FileContentsException: 
     88            # No known reader available. Give up and throw an error 
     89            msg = "\n\tUnknown data format: %s.\n\tThe file is not a " % path 
     90            msg += "known format that can be loaded by SasView." 
     91            raise NoKnownLoaderException(msg) 
    7792 
    7893    def find_plugins(self, dir): 
Note: See TracChangeset for help on using the changeset viewer.