# dbprocessing

# Inspector examples

These are some examples of Inspectors.

## Example 1

    import os
    import re
    from spacepy import pycdf
    from dbprocessing import DBlogging
    from dbprocessing import inspector
    from dbprocessing import Version

    class Inspector(inspector.inspector):

        code_name = 'ect_L2_V1.0.0.py'

        def inspect(self, kwargs):
            re1 = r'{product_name}_\d\d\d\d\d\d\d\d.*.cdf$'.format(**kwargs)
            if not re.match(re1, self.basename):
                DBlogging.dblogger.debug("Inspector {0}:  re did not match {1} {2}".format(self.code_name, re1, self.basename))
                return None
         try:
             cdf = pycdf.CDF(self.filename)
         except:
             DBlogging.dblogger.debug("Inspector {0}: error in pycdf.CDF()".format(self.code_name))
             return None # malformed file

         try:
             self.diskfile.params['utc_file_date'] = self.extract_YYYYMMDD().date()
         except:
             return None
         ## get the start time from the file
         min_time = min([v[0] for v in cdf.values() if v.type() in (pycdf.const.CDF_EPOCH.value, pycdf.const.CDF_EPOCH16.value) and v.rv() and len(v) > 0])
         max_time = max([v[-1] for v in cdf.values() if v.type() in (pycdf.const.CDF_EPOCH.value, pycdf.const.CDF_EPOCH16.value) and v.rv() and len(v) > 0])
         self.diskfile.params['utc_start_time'] = min_time
         self.diskfile.params['utc_stop_time']  = max_time
         self.diskfile.params['version'] = inspector.extract_Version(self.basename)
         return "That is not my dog." # anything that is not None is good

## Example 2

    import datetime
    import os
    import re

    from dbprocessing import DBlogging
    from dbprocessing import inspector
    from dbprocessing import Version

    class Inspector(inspector.inspector):

        code_name = 'ephem_0_insp.py'

        def inspect(self, kwargs):
            re1 = r'.*{product_name}.*'.format(**kwargs)
            if not re.match(re1, self.basename):
                DBlogging.dblogger.debug("Inspector {0}:  re did not match {1} {2}".format(self.code_name, re1, self.basename))
                return None

            try:
                dt = self.extract_YYYYMMDD()
            except:
                return None

            self.diskfile.params['utc_file_date'] = dt.date()

            ## get the start time from the file
            min_time = dt
            max_time = dt + datetime.timedelta(days=1) - datetime.timedelta(microseconds=1)
            self.diskfile.params['utc_start_time'] = min_time
            self.diskfile.params['utc_stop_time']  = max_time

            try:
                self.diskfile.params['version'] = Version.Version(1, 0, 0)
            except:
                return None

            return "That is not my dog." # anything that is not None is good

Release: 0.1.0 Doc generation date: Feb 10, 2022