Fastai v2 transforms / pipeline / data blocks

How can I get a Dataset from the SiamesePair pipeline example in https://github.com/fastai/fastai2/blob/master/nbs/10_tutorial.pets.ipynb?

I tried:

OpenAndResize = TupleTransform(resized_image)
labeller = RegexLabeller(pat = r'/([^/]+)_\d+.jpg$')
sp = SiamesePair(items, items.map(labeller))
pipe = Pipeline([sp, OpenAndResize], as_item=True)
dsets = Datasets(items, pipe)
t = dsets[0]
type(t[0]),type(t[1])

getting error:

---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
<ipython-input-66-cab6cdc85da8> in <module>
      4 pipe = Pipeline([sp, OpenAndResize], as_item=True)
      5 dsets = Datasets(items, pipe)
----> 6 t = dsets[0]
      7 type(t[0]),type(t[1])

~/Dev/fastai2/fastai2/data/core.py in __getitem__(self, it)
    255 
    256     def __getitem__(self, it):
--> 257         res = tuple([tl[it] for tl in self.tls])
    258         return res if is_indexer(it) else list(zip(*res))
    259 

~/Dev/fastai2/fastai2/data/core.py in <listcomp>(.0)
    255 
    256     def __getitem__(self, it):
--> 257         res = tuple([tl[it] for tl in self.tls])
    258         return res if is_indexer(it) else list(zip(*res))
    259 

~/Dev/fastai2/fastai2/data/core.py in __getitem__(self, idx)
    232         res = super().__getitem__(idx)
    233         if self._after_item is None: return res
--> 234         return self._after_item(res) if is_indexer(idx) else res.map(self._after_item)
    235 
    236 # Cell

~/Dev/fastai2/fastai2/data/core.py in _after_item(self, o)
    196     def _new(self, items, **kwargs): return super()._new(items, tfms=self.tfms, do_setup=False, types=self.types, **kwargs)
    197     def subset(self, i): return self._new(self._get(self.splits[i]), split_idx=i)
--> 198     def _after_item(self, o): return self.tfms(o)
    199     def __repr__(self): return f"{self.__class__.__name__}: {self.items}\ntfms - {self.tfms.fs}"
    200     def __iter__(self): return (self[i] for i in range(len(self)))

~/Dev/fastcore/fastcore/transform.py in __call__(self, o)
    186         self.fs.append(t)
    187 
--> 188     def __call__(self, o): return compose_tfms(o, tfms=self.fs, split_idx=self.split_idx)
    189     def __repr__(self): return f"Pipeline: {' -> '.join([f.name for f in self.fs if f.name != 'noop'])}"
    190     def __getitem__(self,i): return self.fs[i]

~/Dev/fastcore/fastcore/transform.py in compose_tfms(x, tfms, is_enc, reverse, **kwargs)
    134     for f in tfms:
    135         if not is_enc: f = f.decode
--> 136         x = f(x, **kwargs)
    137     return x
    138 

~/Dev/fastcore/fastcore/transform.py in __call__(self, x, **kwargs)
     69     @property
     70     def name(self): return getattr(self, '_name', _get_name(self))
---> 71     def __call__(self, x, **kwargs): return self._call('encodes', x, **kwargs)
     72     def decode  (self, x, **kwargs): return self._call('decodes', x, **kwargs)
     73     def __repr__(self): return f'{self.name}: {self.use_as_item} {self.encodes} {self.decodes}'

~/Dev/fastcore/fastcore/transform.py in _call(self, fn, x, split_idx, **kwargs)
     80         if split_idx!=self.split_idx and self.split_idx is not None: return x
     81         f = getattr(self, fn)
---> 82         if self.use_as_item or not is_listy(x): return self._do_call(f, x, **kwargs)
     83         res = tuple(self._do_call(f, x_, **kwargs) for x_ in x)
     84         return retain_type(res, x)

~/Dev/fastcore/fastcore/transform.py in _do_call(self, f, x, **kwargs)
     85 
     86     def _do_call(self, f, x, **kwargs):
---> 87         return x if f is None else retain_type(f(x, **kwargs), x, f.returns_none(x))
     88 
     89 add_docs(Transform, decode="Delegate to `decodes` to undo transform", setup="Delegate to `setups` to set up transform")

~/Dev/fastcore/fastcore/dispatch.py in __call__(self, *args, **kwargs)
     96         if not f: return args[0]
     97         if self.inst is not None: f = MethodType(f, self.inst)
---> 98         return f(*args, **kwargs)
     99 
    100     def __get__(self, inst, owner):

<ipython-input-63-605ff57d4e17> in encodes(self, i)
     11         othercls = self.clsmap[self.labels[i]] if random.random()>0.5 else self.idxs
     12         otherit = random.choice(othercls)
---> 13         return SiameseImage(self.items[i], self.items[otherit], self.labels[otherit]==self.labels[i])

~/Dev/fastcore/fastcore/foundation.py in __getitem__(self, idx)
    314     def _xtra(self): return None
    315     def _new(self, items, *args, **kwargs): return type(self)(items, *args, use_list=None, **kwargs)
--> 316     def __getitem__(self, idx): return self._get(idx) if is_indexer(idx) else L(self._get(idx), use_list=None)
    317     def copy(self): return self._new(self.items.copy())
    318 

~/Dev/fastcore/fastcore/foundation.py in _get(self, i)
    319     def _get(self, i):
    320         if is_indexer(i) or isinstance(i,slice): return getattr(self.items,'iloc',self.items)[i]
--> 321         i = mask2idxs(i)
    322         return (self.items.iloc[list(i)] if hasattr(self.items,'iloc')
    323                 else self.items.__array__()[(i,)] if hasattr(self.items,'__array__')

~/Dev/fastcore/fastcore/foundation.py in mask2idxs(mask)
    253     "Convert bool mask or index list to index `L`"
    254     if isinstance(mask,slice): return mask
--> 255     mask = list(mask)
    256     if len(mask)==0: return []
    257     it = mask[0]

TypeError: 'PosixPath' object is not iterable