(name: str, path: Path, temp_cwd: Path)
| 16 | |
| 17 | |
| 18 | def load_module(name: str, path: Path, temp_cwd: Path): |
| 19 | fake_anthropic = types.ModuleType("anthropic") |
| 20 | |
| 21 | class FakeAnthropic: |
| 22 | def __init__(self, *args, **kwargs): |
| 23 | self.messages = types.SimpleNamespace(create=None) |
| 24 | |
| 25 | fake_dotenv = types.ModuleType("dotenv") |
| 26 | setattr(fake_anthropic, "Anthropic", FakeAnthropic) |
| 27 | setattr(fake_dotenv, "load_dotenv", lambda override=True: None) |
| 28 | |
| 29 | previous_anthropic = sys.modules.get("anthropic") |
| 30 | previous_dotenv = sys.modules.get("dotenv") |
| 31 | previous_cwd = Path.cwd() |
| 32 | previous_model = os.environ.get("MODEL_ID") |
| 33 | previous_key = os.environ.get("ANTHROPIC_API_KEY") |
| 34 | |
| 35 | spec = importlib.util.spec_from_file_location(name, path) |
| 36 | if spec is None or spec.loader is None: |
| 37 | raise RuntimeError(f"Unable to load {path}") |
| 38 | module = importlib.util.module_from_spec(spec) |
| 39 | |
| 40 | sys.modules["anthropic"] = fake_anthropic |
| 41 | sys.modules["dotenv"] = fake_dotenv |
| 42 | os.environ["MODEL_ID"] = "test-model" |
| 43 | os.environ["ANTHROPIC_API_KEY"] = "test-key" |
| 44 | try: |
| 45 | os.chdir(temp_cwd) |
| 46 | spec.loader.exec_module(module) |
| 47 | return module |
| 48 | finally: |
| 49 | os.chdir(previous_cwd) |
| 50 | if previous_anthropic is None: |
| 51 | sys.modules.pop("anthropic", None) |
| 52 | else: |
| 53 | sys.modules["anthropic"] = previous_anthropic |
| 54 | if previous_dotenv is None: |
| 55 | sys.modules.pop("dotenv", None) |
| 56 | else: |
| 57 | sys.modules["dotenv"] = previous_dotenv |
| 58 | if previous_model is None: |
| 59 | os.environ.pop("MODEL_ID", None) |
| 60 | else: |
| 61 | os.environ["MODEL_ID"] = previous_model |
| 62 | if previous_key is None: |
| 63 | os.environ.pop("ANTHROPIC_API_KEY", None) |
| 64 | else: |
| 65 | os.environ["ANTHROPIC_API_KEY"] = previous_key |
| 66 | |
| 67 | |
| 68 | def assistant_text(): |
no test coverage detected