From 5e715171c32e2e08a65b8e2b1da34b9147639b05 Mon Sep 17 00:00:00 2001 From: Tongzhou Wang Date: Tue, 11 Sep 2018 14:41:54 -0400 Subject: [PATCH] fix py37 warning --- torchvision/transforms/functional.py | 16 ++++++++++++---- torchvision/transforms/transforms.py | 13 +++++++++++-- 2 files changed, 23 insertions(+), 6 deletions(-) diff --git a/torchvision/transforms/functional.py b/torchvision/transforms/functional.py index 95030caede0..415c1532599 100644 --- a/torchvision/transforms/functional.py +++ b/torchvision/transforms/functional.py @@ -1,5 +1,6 @@ from __future__ import division import torch +import sys import math import random from PIL import Image, ImageOps, ImageEnhance, PILLOW_VERSION @@ -13,6 +14,13 @@ import collections import warnings +if sys.version_info < (3, 3): + Sequence = collections.Sequence + Iterable = collections.Iterable +else: + Sequence = collections.abc.Sequence + Iterable = collections.abc.Iterable + def _is_pil_image(img): if accimage is not None: @@ -191,7 +199,7 @@ def resize(img, size, interpolation=Image.BILINEAR): """ if not _is_pil_image(img): raise TypeError('img should be PIL Image. Got {}'.format(type(img))) - if not (isinstance(size, int) or (isinstance(size, collections.Iterable) and len(size) == 2)): + if not (isinstance(size, int) or (isinstance(size, Iterable) and len(size) == 2)): raise TypeError('Got inappropriate size arg: {}'.format(size)) if isinstance(size, int): @@ -258,7 +266,7 @@ def pad(img, padding, fill=0, padding_mode='constant'): if not isinstance(padding_mode, str): raise TypeError('Got inappropriate padding_mode arg') - if isinstance(padding, collections.Sequence) and len(padding) not in [2, 4]: + if isinstance(padding, Sequence) and len(padding) not in [2, 4]: raise ValueError("Padding must be an int or a 2, or 4 element tuple, not a " + "{} element tuple".format(len(padding))) @@ -270,10 +278,10 @@ def pad(img, padding, fill=0, padding_mode='constant'): else: if isinstance(padding, int): pad_left = pad_right = pad_top = pad_bottom = padding - if isinstance(padding, collections.Sequence) and len(padding) == 2: + if isinstance(padding, Sequence) and len(padding) == 2: pad_left = pad_right = padding[0] pad_top = pad_bottom = padding[1] - if isinstance(padding, collections.Sequence) and len(padding) == 4: + if isinstance(padding, Sequence) and len(padding) == 4: pad_left = padding[0] pad_top = padding[1] pad_right = padding[2] diff --git a/torchvision/transforms/transforms.py b/torchvision/transforms/transforms.py index 7c352be2f57..a640ea403f5 100644 --- a/torchvision/transforms/transforms.py +++ b/torchvision/transforms/transforms.py @@ -1,6 +1,7 @@ from __future__ import division import torch import math +import sys import random from PIL import Image, ImageOps, ImageEnhance try: @@ -15,6 +16,14 @@ from . import functional as F +if sys.version_info < (3, 3): + Sequence = collections.Sequence + Iterable = collections.Iterable +else: + Sequence = collections.abc.Sequence + Iterable = collections.abc.Iterable + + __all__ = ["Compose", "ToTensor", "ToPILImage", "Normalize", "Resize", "Scale", "CenterCrop", "Pad", "Lambda", "RandomApply", "RandomChoice", "RandomOrder", "RandomCrop", "RandomHorizontalFlip", "RandomVerticalFlip", "RandomResizedCrop", "RandomSizedCrop", "FiveCrop", "TenCrop", "LinearTransformation", @@ -163,7 +172,7 @@ class Resize(object): """ def __init__(self, size, interpolation=Image.BILINEAR): - assert isinstance(size, int) or (isinstance(size, collections.Iterable) and len(size) == 2) + assert isinstance(size, int) or (isinstance(size, Iterable) and len(size) == 2) self.size = size self.interpolation = interpolation @@ -255,7 +264,7 @@ def __init__(self, padding, fill=0, padding_mode='constant'): assert isinstance(padding, (numbers.Number, tuple)) assert isinstance(fill, (numbers.Number, str, tuple)) assert padding_mode in ['constant', 'edge', 'reflect', 'symmetric'] - if isinstance(padding, collections.Sequence) and len(padding) not in [2, 4]: + if isinstance(padding, Sequence) and len(padding) not in [2, 4]: raise ValueError("Padding must be an int or a 2, or 4 element tuple, not a " + "{} element tuple".format(len(padding)))