Strange error coming out of fastcore.basics

I am seeing:

Traceback (most recent call last):
  File "/Users/free-soellingeraj/code/shoebox-ml/shoebox_ml/grading/deploy/touch_server.py", line 446, in process_batch
    grade_card(
  File "/Users/free-soellingeraj/code/shoebox-ml/shoebox_ml/grading/deploy/touch_server.py", line 235, in grade_card
    raise e
  File "/Users/free-soellingeraj/code/shoebox-ml/shoebox_ml/grading/deploy/touch_server.py", line 177, in grade_card
    grade_side(final, request_outcome_messages, inner_card_seg_model, outer_card_seg_model,
  File "/Users/free-soellingeraj/code/shoebox-ml/shoebox_ml/grading/deploy/touch_server.py", line 286, in grade_side
    final[side] = inference_centering(
  File "/Users/free-soellingeraj/code/shoebox-ml/shoebox_ml/grading/card/centering.py", line 101, in inference_centering
    get_inner_card_segmentation(model=inner_card_seg_model, img=img, outer_poly=outer_poly)
  File "/Users/free-soellingeraj/code/shoebox-ml/shoebox_ml/grading/card/inner_border_seg.py", line 86, in get_inner_card_segmentation
    prompt_points, mask = model.predict_inner_card_seg(image=img)
  File "/Users/free-soellingeraj/code/shoebox-ml/shoebox_ml/grading/card/inner_border_seg.py", line 66, in predict_inner_card_seg
    ex_pred = self.predictor.predict(image) # downscaling is built into .predict
  File "/Users/free-soellingeraj/miniconda3/lib/python3.8/site-packages/fastai/learner.py", line 321, in predict
    inp,preds,_,dec_preds = self.get_preds(dl=dl, with_input=True, with_decoded=True)
  File "/Users/free-soellingeraj/miniconda3/lib/python3.8/site-packages/fastai/learner.py", line 308, in get_preds
    self._do_epoch_validate(dl=dl)
  File "/Users/free-soellingeraj/miniconda3/lib/python3.8/site-packages/fastai/learner.py", line 244, in _do_epoch_validate
    with torch.no_grad(): self._with_events(self.all_batches, 'validate', CancelValidException)
  File "/Users/free-soellingeraj/miniconda3/lib/python3.8/site-packages/fastai/learner.py", line 199, in _with_events
    try: self(f'before_{event_type}');  f()
  File "/Users/free-soellingeraj/miniconda3/lib/python3.8/site-packages/fastai/learner.py", line 205, in all_batches
    for o in enumerate(self.dl): self.one_batch(*o)
  File "/Users/free-soellingeraj/miniconda3/lib/python3.8/site-packages/fastai/data/load.py", line 127, in __iter__
    for b in _loaders[self.fake_l.num_workers==0](self.fake_l):
  File "/Users/free-soellingeraj/miniconda3/lib/python3.8/site-packages/torch/utils/data/dataloader.py", line 530, in __next__
    data = self._next_data()
  File "/Users/free-soellingeraj/miniconda3/lib/python3.8/site-packages/torch/utils/data/dataloader.py", line 570, in _next_data
    data = self._dataset_fetcher.fetch(index)  # may raise StopIteration
  File "/Users/free-soellingeraj/miniconda3/lib/python3.8/site-packages/torch/utils/data/_utils/fetch.py", line 39, in fetch
    data = next(self.dataset_iter)
  File "/Users/free-soellingeraj/miniconda3/lib/python3.8/site-packages/fastai/data/load.py", line 138, in create_batches
    yield from map(self.do_batch, self.chunkify(res))
  File "/Users/free-soellingeraj/miniconda3/lib/python3.8/site-packages/fastcore/basics.py", line 230, in chunked
    res = list(itertools.islice(it, chunk_sz))
  File "/Users/free-soellingeraj/miniconda3/lib/python3.8/site-packages/fastai/data/load.py", line 153, in do_item
    try: return self.after_item(self.create_item(s))
  File "/Users/free-soellingeraj/miniconda3/lib/python3.8/site-packages/fastai/data/load.py", line 160, in create_item
    if self.indexed: return self.dataset[s or 0]
  File "/Users/free-soellingeraj/miniconda3/lib/python3.8/site-packages/fastai/data/core.py", line 458, in __getitem__
    res = tuple([tl[it] for tl in self.tls])
  File "/Users/free-soellingeraj/miniconda3/lib/python3.8/site-packages/fastai/data/core.py", line 458, in <listcomp>
    res = tuple([tl[it] for tl in self.tls])
  File "/Users/free-soellingeraj/miniconda3/lib/python3.8/site-packages/fastai/data/core.py", line 417, in __getitem__
    return self._after_item(res) if is_indexer(idx) else res.map(self._after_item)
  File "/Users/free-soellingeraj/miniconda3/lib/python3.8/site-packages/fastai/data/core.py", line 377, in _after_item
    def _after_item(self, o): return self.tfms(o)
  File "/Users/free-soellingeraj/miniconda3/lib/python3.8/site-packages/fastcore/transform.py", line 208, in __call__
    def __call__(self, o): return compose_tfms(o, tfms=self.fs, split_idx=self.split_idx)
  File "/Users/free-soellingeraj/miniconda3/lib/python3.8/site-packages/fastcore/transform.py", line 158, in compose_tfms
    x = f(x, **kwargs)
  File "/Users/free-soellingeraj/miniconda3/lib/python3.8/site-packages/fastcore/transform.py", line 81, in __call__
    def __call__(self, x, **kwargs): return self._call('encodes', x, **kwargs)
  File "/Users/free-soellingeraj/miniconda3/lib/python3.8/site-packages/fastcore/transform.py", line 91, in _call
    return self._do_call(getattr(self, fn), x, **kwargs)
  File "/Users/free-soellingeraj/miniconda3/lib/python3.8/site-packages/fastcore/transform.py", line 96, in _do_call
    ret = f.returns(x) if hasattr(f,'returns') else None
  File "/Users/free-soellingeraj/miniconda3/lib/python3.8/site-packages/fastcore/dispatch.py", line 104, in returns
    return anno_ret(self[type(x)])
  File "/Users/free-soellingeraj/miniconda3/lib/python3.8/site-packages/fastcore/basics.py", line 333, in anno_ret
    return annotations(func).get('return', None) if func else None
  File "/Users/free-soellingeraj/miniconda3/lib/python3.8/site-packages/fastcore/basics.py", line 325, in annotations
    res = type_hints(o)
  File "/Users/free-soellingeraj/miniconda3/lib/python3.8/site-packages/fastcore/basics.py", line 318, in type_hints
    return {k:_eval_type(v,glb,loc) for k,v in ann.items()}
  File "/Users/free-soellingeraj/miniconda3/lib/python3.8/site-packages/fastcore/basics.py", line 318, in <dictcomp>
    return {k:_eval_type(v,glb,loc) for k,v in ann.items()}
  File "/Users/free-soellingeraj/miniconda3/lib/python3.8/site-packages/fastcore/basics.py", line 311, in _eval_type
    res = eval_type(t, glb, loc)
  File "/Users/free-soellingeraj/miniconda3/lib/python3.8/site-packages/fastcore/basics.py", line 304, in eval_type
    if '|' in t: return Union[eval_type(tuple(t.split('|')), glb, loc)]
  File "/Users/free-soellingeraj/miniconda3/lib/python3.8/site-packages/fastcore/basics.py", line 306, in eval_type
    if isinstance(t,(tuple,list)): return type(t)([eval_type(c, glb, loc) for c in t])
  File "/Users/free-soellingeraj/miniconda3/lib/python3.8/site-packages/fastcore/basics.py", line 306, in <listcomp>
    if isinstance(t,(tuple,list)): return type(t)([eval_type(c, glb, loc) for c in t])
  File "/Users/free-soellingeraj/miniconda3/lib/python3.8/site-packages/fastcore/basics.py", line 305, in eval_type
    return eval(t, glb, loc)
  File "<string>", line 1, in <module>
NameError: name 'Path' is not defined

First of all, I see the line from .imports import * in fastcore/basics.py. Second, I don’t even see why the Path comes into play here since I am passing an image into the predict function on the learner.

thanks

Hey @asoellinger,

Can you share some code or the notebook etc that is being run? The traceback is helpful but it doesn’t tell the full story.

Happy to help if I can get more context!