Skip to content

Commit 489df3d

Browse files
authored
Fix circular imports (#244)
The type-checking hints introduced circular imports. Changed the import to minimise imported symbols and only imported Archivist when type-checking was true. Fixes AB#8292
1 parent 188887b commit 489df3d

File tree

15 files changed

+52
-38
lines changed

15 files changed

+52
-38
lines changed

archivist/access_policies.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@
3030
# pylint:disable=cyclic-import # but pylint doesn't understand this feature
3131

3232
if TYPE_CHECKING:
33-
from . import archivist
33+
from .archivist import Archivist
3434

3535
from .assets import Asset
3636
from .constants import (
@@ -63,7 +63,7 @@ class _AccessPoliciesClient:
6363
6464
"""
6565

66-
def __init__(self, archivist_instance: archivist.Archivist):
66+
def __init__(self, archivist_instance: Archivist):
6767
self._archivist = archivist_instance
6868
self._subpath = f"{archivist_instance.root}/{ACCESS_POLICIES_SUBPATH}"
6969
self._label = f"{self._subpath}/{ACCESS_POLICIES_LABEL}"

archivist/appidp.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@
3131

3232
# pylint:disable=cyclic-import # but pylint doesn't understand this feature
3333
if TYPE_CHECKING:
34-
from . import archivist
34+
from .archivist import Archivist
3535

3636
from .constants import (
3737
APPIDP_LABEL,
@@ -57,7 +57,7 @@ class _AppIDPClient:
5757
5858
"""
5959

60-
def __init__(self, archivist_instance: archivist.Archivist):
60+
def __init__(self, archivist_instance: Archivist):
6161
self._archivist = archivist_instance
6262
self._subpath = f"{archivist_instance.root}/{APPIDP_SUBPATH}"
6363
self._label = f"{self._subpath}/{APPIDP_LABEL}"

archivist/applications.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@
2828

2929
# pylint:disable=cyclic-import # but pylint doesn't understand this feature
3030
if TYPE_CHECKING:
31-
from . import archivist
31+
from .archivist import Archivist
3232

3333
from .constants import (
3434
APPLICATIONS_LABEL,
@@ -55,7 +55,7 @@ class _ApplicationsClient:
5555
5656
"""
5757

58-
def __init__(self, archivist_instance: archivist.Archivist):
58+
def __init__(self, archivist_instance: Archivist):
5959
self._archivist = archivist_instance
6060
self._subpath = f"{archivist_instance.root}/{APPLICATIONS_SUBPATH}"
6161
self._label = f"{self._subpath}/{APPLICATIONS_LABEL}"

archivist/assetattachments.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@
3535
from requests.models import Response
3636

3737
# pylint:disable=cyclic-import # but pylint doesn't understand this feature
38-
from . import archivist
38+
from .archivist import Archivist
3939

4040
from .constants import (
4141
ASSETATTACHMENTS_LABEL,
@@ -59,7 +59,7 @@ class _AssetAttachmentsClient:
5959
6060
"""
6161

62-
def __init__(self, archivist_instance: archivist.Archivist):
62+
def __init__(self, archivist_instance: Archivist):
6363
self._archivist = archivist_instance
6464
self._public = archivist_instance.public
6565
self._subpath = f"{archivist_instance.root}/{ASSETATTACHMENTS_SUBPATH}"

archivist/assets.py

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -25,10 +25,10 @@
2525

2626
from copy import deepcopy
2727
from logging import getLogger
28-
from typing import Any, Optional, Tuple
28+
from typing import TYPE_CHECKING, Any, Optional, Tuple
2929

3030
# pylint:disable=cyclic-import # but pylint doesn't understand this feature
31-
from . import archivist, confirmer
31+
from . import confirmer
3232
from .asset import Asset
3333
from .constants import (
3434
ASSET_BEHAVIOURS,
@@ -40,6 +40,9 @@
4040
from .errors import ArchivistBadFieldError, ArchivistNotFoundError
4141
from .utils import selector_signature
4242

43+
if TYPE_CHECKING:
44+
from .archivist import Archivist
45+
4346
LOGGER = getLogger(__name__)
4447

4548

@@ -54,7 +57,7 @@ class _AssetsPublic:
5457
5558
"""
5659

57-
def __init__(self, archivist_instance: archivist.Archivist):
60+
def __init__(self, archivist_instance: Archivist):
5861
self._archivist = archivist_instance
5962
self._public = archivist_instance.public
6063
self._subpath = f"{archivist_instance.root}/{ASSETS_SUBPATH}"
@@ -97,7 +100,7 @@ class _AssetsRestricted(_AssetsPublic):
97100
98101
"""
99102

100-
def __init__(self, archivist_instance: archivist.Archivist):
103+
def __init__(self, archivist_instance: Archivist):
101104
super().__init__(archivist_instance)
102105
self._label = f"{self._subpath}/{ASSETS_LABEL}"
103106
self.pending_count: int = 0

archivist/attachments.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@
3636
from requests.models import Response
3737

3838
# pylint:disable=cyclic-import # but pylint doesn't understand this feature
39-
from . import archivist
39+
from .archivist import Archivist
4040

4141
from .constants import (
4242
ATTACHMENTS_LABEL,
@@ -67,7 +67,7 @@ class _AttachmentsClient:
6767
6868
"""
6969

70-
def __init__(self, archivist_instance: archivist.Archivist):
70+
def __init__(self, archivist_instance: Archivist):
7171
self._archivist = archivist_instance
7272
self._subpath = f"{archivist_instance.root}/{ATTACHMENTS_SUBPATH}"
7373
self._label = f"{self._subpath}/{ATTACHMENTS_LABEL}"

archivist/cmds/runner/run.py

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,16 +5,21 @@
55
from logging import getLogger
66
from os import environ
77
from sys import exit as sys_exit
8+
from typing import TYPE_CHECKING
89

910
from pyaml_env import parse_config
1011

1112
# pylint:disable=cyclic-import # but pylint doesn't understand this feature
12-
from ... import about, archivist
13+
from ... import about
14+
15+
if TYPE_CHECKING:
16+
from ..archivist import Archivist
17+
1318

1419
LOGGER = getLogger(__name__)
1520

1621

17-
def run(arch: archivist.Archivist, args):
22+
def run(arch: Archivist, args):
1823
LOGGER.info("Using version %s of rkvst-archivist", about.__version__)
1924
LOGGER.info("Namespace %s", args.namespace)
2025

archivist/compliance.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@
2828

2929
if TYPE_CHECKING:
3030
# pylint:disable=cyclic-import # but pylint doesn't understand this feature
31-
from . import archivist
31+
from .archivist import Archivist
3232

3333
from .constants import (
3434
COMPLIANCE_LABEL,
@@ -58,7 +58,7 @@ class _ComplianceClient: # pylint: disable=too-few-public-methods
5858
5959
"""
6060

61-
def __init__(self, archivist_instance: archivist.Archivist):
61+
def __init__(self, archivist_instance: Archivist):
6262
self._archivist = archivist_instance
6363
self._subpath = f"{archivist_instance.root}/{COMPLIANCE_SUBPATH}"
6464
self._label = f"{self._subpath}/{COMPLIANCE_LABEL}"

archivist/compliance_policies.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@
3333

3434
if TYPE_CHECKING:
3535
# pylint:disable=cyclic-import # but pylint doesn't understand this feature
36-
from . import archivist
36+
from .archivist import Archivist
3737
from .compliance_policy_requests import (
3838
CompliancePolicyCurrentOutstanding,
3939
CompliancePolicyDynamicTolerance,
@@ -75,7 +75,7 @@ class _CompliancePoliciesClient:
7575
7676
"""
7777

78-
def __init__(self, archivist_instance: archivist.Archivist):
78+
def __init__(self, archivist_instance: Archivist):
7979
self._archivist = archivist_instance
8080
self._subpath = f"{archivist_instance.root}/{COMPLIANCE_POLICIES_SUBPATH}"
8181
self._label = f"{self._subpath}/{COMPLIANCE_POLICIES_LABEL}"

archivist/composite.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@
2828

2929
if TYPE_CHECKING:
3030
# pylint:disable=cyclic-import # but pylint doesn't understand this feature
31-
from . import archivist
31+
from .archivist import Archivist
3232

3333

3434
LOGGER = getLogger(__name__)
@@ -46,7 +46,7 @@ class _CompositeClient:
4646
These mthods are not unittested and provided as a convenience.
4747
"""
4848

49-
def __init__(self, archivist_instance: archivist.Archivist):
49+
def __init__(self, archivist_instance: Archivist):
5050
self._archivist = archivist_instance
5151

5252
def __str__(self) -> str:

0 commit comments

Comments
 (0)