示例#1
0
文件: accessor.py 项目: micder/xcube
 def _predicate(extension: Extension) -> bool:
     extension_parts = extension.name.split(':', maxsplit=4)
     if len(extension_parts) < 3:
         raise DataStoreError(
             f'Illegal data opener/writer extension name "{extension.name}"'
         )
     extension_type = TypeSpecifier.parse(extension_parts[0])
     type_ok = type_specifier is None or extension_type == TYPE_SPECIFIER_ANY or \
               extension_type == TypeSpecifier.normalize(type_specifier)
     format_ok = format_id is None or extension_parts[
         1] == '*' or extension_parts[1] == format_id
     storage_ok = storage_id is None or extension_parts[
         2] == '*' or extension_parts[2] == storage_id
     return type_ok and format_ok and storage_ok
示例#2
0
 def test_parse_exception(self):
     with self.assertRaises(SyntaxError) as cm:
         TypeSpecifier.parse('An unparseable expression[')
     self.assertEqual(
         '"An unparseable expression[" cannot be parsed: No end brackets found',
         f'{cm.exception}')
示例#3
0
 def test_parse(self):
     self.assertEqual(TypeSpecifier('*'), TypeSpecifier.parse('*'))
     self.assertEqual(TypeSpecifier('dataset'),
                      TypeSpecifier.parse('dataset'))
     self.assertEqual(TypeSpecifier('dataset', {'cube', 'multilevel'}),
                      TypeSpecifier.parse('dataset[cube,multilevel]'))