source: sasview/src/sas/sascalc/dataloader/readers/associations.py @ a8e6394

ESS_GUIESS_GUI_bumps_abstractionESS_GUI_iss1116ESS_GUI_openclESS_GUI_sync_sascalc
Last change on this file since a8e6394 was b8080e1, checked in by Piotr Rozyczko <rozyczko@…>, 6 years ago

cherry picking sascalc changes from master SASVIEW-996
minor unit test fixes

  • Property mode set to 100644
File size: 2.3 KB
Line 
1"""
2Module to associate default readers to file extensions.
3The module reads an xml file to get the readers for each file extension.
4The readers are tried in order they appear when reading a file.
5"""
6############################################################################
7#This software was developed by the University of Tennessee as part of the
8#Distributed Data Analysis of Neutron Scattering Experiments (DANSE)
9#project funded by the US National Science Foundation.
10#If you use DANSE applications to do scientific research that leads to
11#publication, we ask that you acknowledge the use of the software with the
12#following sentence:
13#This work benefited from DANSE software developed under NSF award DMR-0520547.
14#copyright 2009, University of Tennessee
15#############################################################################
16import sys
17import logging
18
19logger = logging.getLogger(__name__)
20
21FILE_ASSOCIATIONS = {
22    ".xml": "cansas_reader",
23    ".ses": "sesans_reader",
24    ".h5": "cansas_reader_HDF5",
25    ".txt": "ascii_reader",
26    ".dat": "red2d_reader",
27    ".abs": "abs_reader",
28    ".cor": "abs_reader",
29    ".sans": "danse_reader",
30    ".pdh": "anton_paar_saxs_reader"
31}
32
33
34def read_associations(loader, settings=FILE_ASSOCIATIONS):
35    """
36    Read the specified settings file to associate
37    default readers to file extension.
38
39    :param loader: Loader object
40    :param settings: path to the json settings file [string]
41    """
42    # For each FileType entry, get the associated reader and extension
43    for ext, reader in settings.items():
44        if reader is not None and ext is not None:
45            # Associate the extension with a particular reader
46            # TODO: Modify the Register code to be case-insensitive
47            # FIXME: Remove exec statements
48            # and remove the extra line below.
49            try:
50                exec("from . import %s" % reader)
51                exec("loader.associate_file_type('%s', %s)"
52                     % (ext.lower(), reader))
53                exec("loader.associate_file_type('%s', %s)"
54                     % (ext.upper(), reader))
55            except:
56                msg = "read_associations: skipping association"
57                msg += " for %s\n  %s" % (ext.lower(), sys.exc_value)
58                logger.error(msg)
Note: See TracBrowser for help on using the repository browser.