diff options
Diffstat (limited to 'libmat2/parser_factory.py')
| -rw-r--r-- | libmat2/parser_factory.py | 8 |
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 | |||
| 2 | import os | 2 | import os |
| 3 | import mimetypes | 3 | import mimetypes |
| 4 | import importlib | 4 | import importlib |
| 5 | from typing import TypeVar, List | 5 | from typing import TypeVar, List, Tuple, Optional |
| 6 | 6 | ||
| 7 | from . import abstract, unsupported_extensions | 7 | from . import abstract, unsupported_extensions |
| 8 | 8 | ||
| 9 | assert Tuple # make pyflakes happy | ||
| 10 | |||
| 9 | T = TypeVar('T', bound='abstract.AbstractParser') | 11 | T = TypeVar('T', bound='abstract.AbstractParser') |
| 10 | 12 | ||
| 11 | def __load_all_parsers(): | 13 | def __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 | ||
| 31 | def get_parser(filename: str) -> (T, str): | 33 | def 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 |
