Add deterministic Python reference adapter
This commit is contained in:
parent
e6523c0c00
commit
8956c5c5f5
7 changed files with 1156 additions and 0 deletions
7
tests/fixtures/reference-python/src/sample/__init__.py
vendored
Normal file
7
tests/fixtures/reference-python/src/sample/__init__.py
vendored
Normal file
|
|
@ -0,0 +1,7 @@
|
|||
"""Small multi-file package for the Python reference adapter."""
|
||||
|
||||
from .service import Service
|
||||
|
||||
|
||||
def package_name() -> str:
|
||||
return Service.__name__
|
||||
18
tests/fixtures/reference-python/src/sample/service.py
vendored
Normal file
18
tests/fixtures/reference-python/src/sample/service.py
vendored
Normal file
|
|
@ -0,0 +1,18 @@
|
|||
"""Service behavior with class, method, function, and local import evidence."""
|
||||
|
||||
import json
|
||||
|
||||
from .shared import clamp
|
||||
|
||||
raise RuntimeError("The reference adapter must never execute project code")
|
||||
|
||||
|
||||
class Service:
|
||||
def run(self, value: int) -> int:
|
||||
return clamp(value) if json.__name__ else value
|
||||
|
||||
|
||||
async def build_service(enabled: bool) -> Service | None:
|
||||
if enabled:
|
||||
return Service()
|
||||
return None
|
||||
11
tests/fixtures/reference-python/src/sample/shared.py
vendored
Normal file
11
tests/fixtures/reference-python/src/sample/shared.py
vendored
Normal file
|
|
@ -0,0 +1,11 @@
|
|||
"""Shared values used by dependent modules."""
|
||||
|
||||
DEFAULT_LIMIT = 3
|
||||
|
||||
|
||||
def clamp(value: int, limit: int = DEFAULT_LIMIT) -> int:
|
||||
if value < 0:
|
||||
return 0
|
||||
if value > limit:
|
||||
return limit
|
||||
return value
|
||||
8
tests/fixtures/reference-python/src/sample/worker.py
vendored
Normal file
8
tests/fixtures/reference-python/src/sample/worker.py
vendored
Normal file
|
|
@ -0,0 +1,8 @@
|
|||
"""A transitive dependent used to prove reverse invalidation."""
|
||||
|
||||
from sample.service import Service
|
||||
|
||||
|
||||
def execute(value: int) -> int:
|
||||
worker = Service()
|
||||
return worker.run(value)
|
||||
Loading…
Add table
Add a link
Reference in a new issue