{"record":{"id":"746e5639f3df8373","repo":"aosabook/500lines","slug":"undefined-method","errorCode":null,"errorMessage":"Undefined method","messagePattern":"Undefined method","errorType":"exception","errorClass":"NotImplementedError","httpStatus":null,"severity":"error","filePath":"incomplete/rasterizer/rasterizer/shape.py","lineNumber":8,"sourceCode":"from color import Color\nfrom itertools import product\nfrom geometry import Vector\nimport random\n\nclass SceneObject:\n    def draw(self, image):\n        raise NotImplementedError(\"Undefined method\")\n\nclass Shape(SceneObject):\n    def __init__(self, color=None):\n        self.color = color if color is not None else Color()\n        self.bound = None\n    def contains(self, p):\n        raise NotImplementedError(\"Undefined method\")\n    def signed_distance_bound(self, p):\n        raise NotImplementedError(\"Undefined method\")\n    def draw(self, image, super_sampling = 6):\n        if not self.bound.overlaps(image.bounds()):\n            return\n        color = self.color\n        r = float(image.resolution)\n        jitter = [Vector((x + random.random()) / super_sampling / r,\n                         (y + random.random()) / super_sampling / r)\n                  for (x, y) in product(xrange(super_sampling), repeat=2)]\n        lj = len(jitter)","sourceCodeStart":1,"sourceCodeEnd":26,"githubUrl":"https://github.com/aosabook/500lines/blob/fba689d101eb5600f5c8f4d7fd79912498e950e2/incomplete/rasterizer/rasterizer/shape.py#L1-L26","documentation":"Error \"Undefined method\" thrown in aosabook/500lines.","triggerScenarios":"Thrown at incomplete/rasterizer/rasterizer/shape.py:8 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["Override draw(self, image) in the SceneObject subclass you are rendering.","Do not call draw on SceneObject itself; it is an abstract base class.","Check for typos in the subclass method name so the override actually replaces draw."],"exampleFix":"class MyShape(SceneObject):\n    def draw(self, image):\n        ...  # concrete implementation","handlingStrategy":null,"validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"fba689d101eb5600f5c8f4d7fd79912498e950e2","analyzedAt":"2026-08-13T06:26:32.792Z","schemaVersion":2},"datasetVersion":"2026-08-13T09:17:06.757Z"}