Exemplo n.º 1
0
    def test_lookup_value_check(self):
        func = NumexprFunction('f',
                               'coeff_a * x', ['coeff_a', 'x'],
                               param_map={
                                   'x': 'x',
                                   'coeff_a': 'coeff_a'
                               })
        func.lookup_values = ['abc123']
        test_context = ParameterContext('test',
                                        param_type=ParameterFunctionType(func))

        tm = TypesManager(None, None, None)
        self.assertTrue(tm.has_lookup_value(test_context))
        self.assertEquals(tm.get_lookup_value_ids(test_context), ['abc123'])
    def get_coverage_parameter(cls, parameter_context):
        """
        Creates a Coverage Model based Parameter Context given the 
        ParameterContext IonObject.

        Note: If the parameter is a parameter function and depends on dynamically
        created calibrations, this will fail.
        """
        # Only CF and netCDF compliant variable names
        parameter_context.name = re.sub(r'[^a-zA-Z0-9_]', '_',
                                        parameter_context.name)
        from ion.services.dm.utility.types import TypesManager
        # The TypesManager does all the parsing and converting to the coverage model instances
        tm = TypesManager(None, {}, {})
        # First thing to do is create the parameter type
        param_type = tm.get_parameter_type(
            parameter_context.parameter_type, parameter_context.value_encoding,
            parameter_context.code_report,
            parameter_context.parameter_function_id,
            parameter_context.parameter_function_map, {
                'name': parameter_context.name,
                'target_dataset': parameter_context.target_dataset,
                'target_name': parameter_context.target_name
            })
        # Ugh, I hate it but I did copy this section from
        # ion/processes/bootstrap/ion_loader.py
        context = ParameterContext(name=parameter_context.name,
                                   param_type=param_type)
        # Now copy over all the attrs
        context.uom = parameter_context.units
        try:
            if isinstance(context.uom, basestring):
                tm.get_unit(context.uom)
        except UdunitsError:
            log.warning('Parameter %s has invalid units: %s',
                        parameter_context.name, context.uom)
        # Fill values can be a bit tricky...
        context.fill_value = tm.get_fill_value(
            parameter_context.fill_value, parameter_context.value_encoding,
            param_type)
        context.reference_urls = parameter_context.reference_urls
        context.internal_name = parameter_context.name
        context.display_name = parameter_context.display_name
        context.standard_name = parameter_context.standard_name
        context.ooi_short_name = parameter_context.ooi_short_name
        context.description = parameter_context.description
        context.precision = parameter_context.precision
        context.visible = parameter_context.visible
        return context
Exemplo n.º 3
0
 def test_bad_units(self):
     tm = TypesManager(None, None, None)
     self.assertRaises(UdunitsError, tm.get_unit, 'something')
Exemplo n.º 4
0
 def setUp(self):
     PyonTestCase.setUp(self)
     self.types_manager = TypesManager(None, None, None)