Skip to content

Commit 160f04a

Browse files
authored
Merge pull request #250 from ap--/fix-lazy-exception-2
fix via common base class
2 parents bb50065 + 87b297d commit 160f04a

File tree

4 files changed

+12
-26
lines changed

4 files changed

+12
-26
lines changed

src/seabreeze/_exc.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
class SeaBreezeError(Exception):
2+
pass

src/seabreeze/cseabreeze/c_seabreeze_wrapper.pyx

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,8 @@ from collections import namedtuple
1616

1717
import numpy as np
1818

19+
from seabreeze._exc import SeaBreezeError as _SeaBreezeError
20+
1921

2022
# from libseabreeze api/SeaBreezeConstants.h
2123
class _ErrorCode(object):
@@ -58,7 +60,7 @@ SpectrumMetadata = namedtuple(
5860

5961
# DO NOT DIRECTLY IMPORT EXCEPTIONS FROM HERE!
6062
# ALWAYS IMPORT FROM `seabreeze.spectrometers`
61-
class SeaBreezeError(Exception):
63+
class SeaBreezeError(_SeaBreezeError):
6264

6365
_error_msgs = (
6466
"Success",

src/seabreeze/pyseabreeze/exceptions.py

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,10 +2,13 @@
22

33
# DO NOT DIRECTLY IMPORT EXCEPTIONS FROM HERE!
44
# ALWAYS IMPORT FROM `seabreeze.spectrometers`
5+
from seabreeze._exc import SeaBreezeError as SeaBreezeError
56

6-
7-
class SeaBreezeError(Exception):
8-
"""SeaBreezeError base class"""
7+
__all__ = [
8+
"SeaBreezeError",
9+
"SeaBreezeNumFeaturesError",
10+
"SeaBreezeNotSupported",
11+
]
912

1013

1114
class SeaBreezeNumFeaturesError(SeaBreezeError):

src/seabreeze/spectrometers.py

Lines changed: 1 addition & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -9,13 +9,12 @@
99

1010
from __future__ import annotations
1111

12-
import operator
13-
import sys
1412
from typing import TYPE_CHECKING
1513

1614
import numpy
1715

1816
import seabreeze.backends
17+
from seabreeze._exc import SeaBreezeError
1918
from seabreeze.types import SeaBreezeAPI
2019
from seabreeze.types import SeaBreezeBackend
2120
from seabreeze.types import SeaBreezeFeatureAccessor
@@ -38,26 +37,6 @@ def __dir__() -> list[str]:
3837
return __all__
3938

4039

41-
def _load_seabreeze_error_cls() -> type[SeaBreezeError]:
42-
# lazy load the SeaBreezeException
43-
cls = operator.attrgetter("_lib.SeaBreezeError")(sys.modules[__name__])
44-
globals()["SeaBreezeError"] = cls
45-
return cls # type: ignore[no-any-return]
46-
47-
48-
class _LazyMeta(type):
49-
def __instancecheck__(cls, instance: object) -> bool:
50-
return isinstance(instance, _load_seabreeze_error_cls())
51-
52-
def __subclasscheck__(cls, __subclass: type) -> bool:
53-
return issubclass(__subclass, _load_seabreeze_error_cls())
54-
55-
56-
class SeaBreezeError(Exception, metaclass=_LazyMeta):
57-
def __new__(cls, *args: str) -> SeaBreezeError:
58-
return _load_seabreeze_error_cls()(*args)
59-
60-
6140
# get the backend and add some functions/classes to this module
6241
_lib: SeaBreezeBackend
6342

0 commit comments

Comments
 (0)