Skip to content

MLR114: Literal points array is not N x 3

qual reports MLR114 when a list/tuple-of-lists literal passed to a set_points-family method (set_points, set_points_as_corners, set_points_smoothly, append_points, add_points_as_corners) on a confirmed VMobject has a row that is not 3 components wide.

  • Default severity: error
  • Minimum confidence: high
  • Implementation phase: 2
  • Fix: none

VMobject points are 3-component rows: the renderers regroup them into Bézier curves (4 points per cubic curve under Cairo, 3 per quadratic under OpenGL) by reshaping to (-1, 3), and geometry operations broadcast against 3-component direction vectors. Rows of any other length corrupt the grouping or raise at the first reshape.

Only fully literal numeric rows are judged. Names, np.array(...) wrappers, constants like UP, empty literals, receivers whose class is uncertain, and project overrides of the method all stay silent.

Wrong:

path = VMobject()
path.set_points_as_corners([[0, 0], [1, 1]])  # 2-component rows

Right:

path = VMobject()
path.set_points_as_corners([[0, 0, 0], [1, 1, 0]])