0

Following this nice module I've been using for at least a year with no trouble, I am doing as the doc says:

install with pip install overrides

BaseSegmenter.py

from overrides import EnforceOverrides

class BaseSegmenter(EnforceOverrides):
    def __init__(self):
        pass

    def segment_defects(self):
        pass

DefectSegmenter.py

from defect_segmentation import BaseSegmenter
from overrides import overrides


class AutoencoderSegmenter(BaseSegmenter):
    def __init__(self):
        super().__init__()

    @overrides
    def segment_defects(self, inspected, warped, warp_mask):
        pass

This gives me

Traceback (most recent call last):
  File "C:/noam/autoencoder1/Main.py", line 10, in <module>
    from defect_segmentation.DefectSegmenter import AutoencoderSegmenter
  File "C:\noam\autoencoder1\defect_segmentation\DefectSegmenter.py", line 5, in <module>
    class AutoencoderSegmenter(BaseSegmenter):
  File "C:\noam\autoencoder1\defect_segmentation\DefectSegmenter.py", line 9, in AutoencoderSegmenter
    @overrides
  File "C:\noam\autoencoder1\venv\lib\site-packages\overrides\overrides.py", line 67, in overrides
    raise AssertionError('No super class method found for "%s"' % method.__name__)
AssertionError: No super class method found for "segment_defects"

This happens when the following line executes:

from defect_segmentation.DefectSegmenter import AutoencoderSegmenter

I am probably missing something basic, but my eyes see the super class does indeed have segment_defects...

Help please :)

Gulzar
  • 23,452
  • 27
  • 113
  • 201

1 Answers1

0

The problem was in DefectSegmenter.py

from defect_segmentation import BaseSegmenter

instead of the correct

from defect_segmentation.BaseSegmenter import BaseSegmenter

Which is a module, not a class. That made the reflection fail in the @overrides module.

Gulzar
  • 23,452
  • 27
  • 113
  • 201