summaryrefslogtreecommitdiff
path: root/libmat2/parser_factory.py
diff options
context:
space:
mode:
Diffstat (limited to 'libmat2/parser_factory.py')
-rw-r--r--libmat2/parser_factory.py8
1 files changed, 5 insertions, 3 deletions
diff --git a/libmat2/parser_factory.py b/libmat2/parser_factory.py
index 2f6acc1..42d20de 100644
--- a/libmat2/parser_factory.py
+++ b/libmat2/parser_factory.py
@@ -2,10 +2,12 @@ import glob
2import os 2import os
3import mimetypes 3import mimetypes
4import importlib 4import importlib
5from typing import TypeVar, List 5from typing import TypeVar, List, Tuple, Optional
6 6
7from . import abstract, unsupported_extensions 7from . import abstract, unsupported_extensions
8 8
9assert Tuple # make pyflakes happy
10
9T = TypeVar('T', bound='abstract.AbstractParser') 11T = TypeVar('T', bound='abstract.AbstractParser')
10 12
11def __load_all_parsers(): 13def __load_all_parsers():
@@ -28,14 +30,14 @@ def _get_parsers() -> List[T]:
28 return __get_parsers(abstract.AbstractParser) 30 return __get_parsers(abstract.AbstractParser)
29 31
30 32
31def get_parser(filename: str) -> (T, str): 33def get_parser(filename: str) -> Tuple[Optional[T], Optional[str]]:
32 mtype, _ = mimetypes.guess_type(filename) 34 mtype, _ = mimetypes.guess_type(filename)
33 35
34 _, extension = os.path.splitext(filename) 36 _, extension = os.path.splitext(filename)
35 if extension in unsupported_extensions: 37 if extension in unsupported_extensions:
36 return None, mtype 38 return None, mtype
37 39
38 for c in _get_parsers(): 40 for c in _get_parsers(): # type: ignore
39 if mtype in c.mimetypes: 41 if mtype in c.mimetypes:
40 try: 42 try:
41 return c(filename), mtype 43 return c(filename), mtype