|
5 | 5 | import itertools |
6 | 6 | import os |
7 | 7 | import pathlib |
| 8 | +import pickle |
8 | 9 | import random |
9 | 10 | import shutil |
10 | 11 | import string |
@@ -572,35 +573,42 @@ def test_transforms_v2_wrapper(self, config): |
572 | 573 |
|
573 | 574 | try: |
574 | 575 | with self.create_dataset(config) as (dataset, info): |
575 | | - for target_keys in [None, "all"]: |
576 | | - if target_keys is not None and self.DATASET_CLASS not in { |
577 | | - torchvision.datasets.CocoDetection, |
578 | | - torchvision.datasets.VOCDetection, |
579 | | - torchvision.datasets.Kitti, |
580 | | - torchvision.datasets.WIDERFace, |
581 | | - }: |
582 | | - with self.assertRaisesRegex(ValueError, "`target_keys` is currently only supported for"): |
583 | | - wrap_dataset_for_transforms_v2(dataset, target_keys=target_keys) |
584 | | - continue |
585 | | - |
586 | | - wrapped_dataset = wrap_dataset_for_transforms_v2(dataset, target_keys=target_keys) |
587 | | - assert isinstance(wrapped_dataset, self.DATASET_CLASS) |
588 | | - assert len(wrapped_dataset) == info["num_examples"] |
589 | | - |
590 | | - wrapped_sample = wrapped_dataset[0] |
591 | | - assert tree_any( |
592 | | - lambda item: isinstance(item, (datapoints.Datapoint, PIL.Image.Image)), wrapped_sample |
593 | | - ) |
| 576 | + wrap_dataset_for_transforms_v2(dataset) |
594 | 577 | except TypeError as error: |
595 | 578 | msg = f"No wrapper exists for dataset class {type(dataset).__name__}" |
596 | 579 | if str(error).startswith(msg): |
597 | | - pytest.skip(msg) |
| 580 | + return |
598 | 581 | raise error |
599 | 582 | except RuntimeError as error: |
600 | 583 | if "currently not supported by this wrapper" in str(error): |
601 | | - pytest.skip("Config is currently not supported by this wrapper") |
| 584 | + return |
602 | 585 | raise error |
603 | 586 |
|
| 587 | + for target_keys, de_serialize in itertools.product( |
| 588 | + [None, "all"], [lambda d: d, lambda d: pickle.loads(pickle.dumps(d))] |
| 589 | + ): |
| 590 | + |
| 591 | + with self.create_dataset(config) as (dataset, info): |
| 592 | + if target_keys is not None and self.DATASET_CLASS not in { |
| 593 | + torchvision.datasets.CocoDetection, |
| 594 | + torchvision.datasets.VOCDetection, |
| 595 | + torchvision.datasets.Kitti, |
| 596 | + torchvision.datasets.WIDERFace, |
| 597 | + }: |
| 598 | + with self.assertRaisesRegex(ValueError, "`target_keys` is currently only supported for"): |
| 599 | + wrap_dataset_for_transforms_v2(dataset, target_keys=target_keys) |
| 600 | + continue |
| 601 | + |
| 602 | + wrapped_dataset = de_serialize(wrap_dataset_for_transforms_v2(dataset, target_keys=target_keys)) |
| 603 | + |
| 604 | + assert isinstance(wrapped_dataset, self.DATASET_CLASS) |
| 605 | + assert len(wrapped_dataset) == info["num_examples"] |
| 606 | + |
| 607 | + wrapped_sample = wrapped_dataset[0] |
| 608 | + assert tree_any( |
| 609 | + lambda item: isinstance(item, (datapoints.Image, datapoints.Video, PIL.Image.Image)), wrapped_sample |
| 610 | + ) |
| 611 | + |
604 | 612 |
|
605 | 613 | class ImageDatasetTestCase(DatasetTestCase): |
606 | 614 | """Abstract base class for image dataset testcases. |
|
0 commit comments