Skip to content

Commit 7f00e02

Browse files
committed
refactor: separate injection and enable/disable logic
1 parent a5b5e34 commit 7f00e02

File tree

2 files changed

+21
-19
lines changed

2 files changed

+21
-19
lines changed

mocket/inject.py

Lines changed: 1 addition & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
from __future__ import annotations
22

33
import contextlib
4-
import os
54
import socket
65
import ssl
76
from types import ModuleType
@@ -23,10 +22,7 @@ def _restore(module: ModuleType, name: str) -> None:
2322
module.__dict__[name] = original_value
2423

2524

26-
def enable(
27-
namespace: str | None = None,
28-
truesocket_recording_dir: str | None = None,
29-
) -> None:
25+
def enable() -> None:
3026
from mocket.socket import (
3127
MocketSocket,
3228
mock_create_connection,
@@ -73,14 +69,6 @@ def enable(
7369

7470
extract_from_urllib3()
7571

76-
from mocket.mocket import Mocket
77-
78-
Mocket._namespace = namespace
79-
Mocket._truesocket_recording_dir = truesocket_recording_dir
80-
if truesocket_recording_dir and not os.path.isdir(truesocket_recording_dir):
81-
# JSON dumps will be saved here
82-
raise AssertionError
83-
8472

8573
def disable() -> None:
8674
for module, name in list(_patches_restore.keys()):
@@ -90,7 +78,3 @@ def disable() -> None:
9078
from urllib3.contrib.pyopenssl import inject_into_urllib3
9179

9280
inject_into_urllib3()
93-
94-
from mocket.mocket import Mocket
95-
96-
Mocket.reset()

mocket/mocket.py

Lines changed: 20 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -23,8 +23,26 @@ class Mocket:
2323
_namespace: ClassVar[str] = str(id(_entries))
2424
_truesocket_recording_dir: ClassVar[str | None] = None
2525

26-
enable = mocket.inject.enable
27-
disable = mocket.inject.disable
26+
@classmethod
27+
def enable(
28+
cls,
29+
namespace: str | None = None,
30+
truesocket_recording_dir: str | None = None,
31+
) -> None:
32+
if truesocket_recording_dir and not os.path.isdir(truesocket_recording_dir):
33+
# JSON dumps will be saved here
34+
raise AssertionError
35+
36+
cls._namespace = namespace
37+
cls._truesocket_recording_dir = truesocket_recording_dir
38+
39+
mocket.inject.enable()
40+
41+
@classmethod
42+
def disable(cls) -> None:
43+
cls.reset()
44+
45+
mocket.inject.disable()
2846

2947
@classmethod
3048
def get_pair(cls, address: Address) -> tuple[int, int] | tuple[None, None]:

0 commit comments

Comments
 (0)