Skip to content
This repository was archived by the owner on Dec 16, 2022. It is now read-only.

Fix ConfigurationError deserialization #5319

Merged
merged 5 commits into from
Jul 23, 2021
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 4 additions & 1 deletion allennlp/common/checks.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
import logging
import re
import subprocess
from typing import List, Union
from typing import List, Union, Tuple, Any

import torch
from torch import cuda
Expand All @@ -19,6 +19,9 @@ class ConfigurationError(Exception):
(e.g. missing properties, invalid properties, unknown properties).
"""

def __reduce__(self) -> Union[str, Tuple[Any, ...]]:
return type(self), (self.message,)

def __init__(self, message: str):
super().__init__()
self.message = message
Expand Down
4 changes: 4 additions & 0 deletions tests/training/util_test.py
Original file line number Diff line number Diff line change
Expand Up @@ -191,3 +191,7 @@ def forward(self, **kwargs):

assert metrics["loss"] == float(total_loss / num_batches)
assert "batch_loss" not in metrics

def test_exception_serialization(self):
e = ConfigurationError('example')
assert {'message': 'example'} == vars(pickle.loads(pickle.dumps(e)))