| from pathlib import Path | |
| import cloudpickle | |
| import dill | |
| ROOT = Path(__file__).resolve().parent | |
| class BenignCanary: | |
| def __reduce__(self): | |
| # Relative marker path: resolves under the current working directory during load. | |
| marker = Path("logs") / "serialization_canary_loaded.txt" | |
| return (marker.write_text, ("serialization canary was loaded\n",)) | |
| obj = BenignCanary() | |
| (ROOT / "canary_cloudpickle.pkl").write_bytes(cloudpickle.dumps(obj, protocol=5)) | |
| (ROOT / "canary_dill.pkl").write_bytes(dill.dumps(obj, protocol=5)) | |
| print("rewrote portable canaries") | |
| for p in [ROOT / "canary_cloudpickle.pkl", ROOT / "canary_dill.pkl"]: | |
| print(p.name, p.stat().st_size) | |