29 lines
661 B
Markdown
29 lines
661 B
Markdown
|
|
```python title="Python"
|
||
|
|
import threading
|
||
|
|
from kreuzberg import ExtractionResult
|
||
|
|
|
||
|
|
class StatefulPlugin:
|
||
|
|
def __init__(self):
|
||
|
|
self.lock: threading.Lock = threading.Lock()
|
||
|
|
self.call_count: int = 0
|
||
|
|
self.cache: dict = {}
|
||
|
|
|
||
|
|
def name(self) -> str:
|
||
|
|
return "stateful-plugin"
|
||
|
|
|
||
|
|
def version(self) -> str:
|
||
|
|
return "1.0.0"
|
||
|
|
|
||
|
|
def process(self, result: ExtractionResult) -> ExtractionResult:
|
||
|
|
with self.lock:
|
||
|
|
self.call_count += 1
|
||
|
|
self.cache["last_mime"] = result.mime_type
|
||
|
|
return result
|
||
|
|
|
||
|
|
def initialize(self) -> None:
|
||
|
|
pass
|
||
|
|
|
||
|
|
def shutdown(self) -> None:
|
||
|
|
pass
|
||
|
|
```
|