Skip to content

Commit

Permalink
bpo-41720: Add "return NotImplemented" in turtle.Vec2D.__rmul__(). (p…
Browse files Browse the repository at this point in the history
  • Loading branch information
serhiy-storchaka authored Sep 7, 2020
1 parent 1baf030 commit fd4cafd
Show file tree
Hide file tree
Showing 3 changed files with 19 additions and 2 deletions.
18 changes: 16 additions & 2 deletions Lib/test/test_turtle.py
Original file line number Diff line number Diff line change
Expand Up @@ -130,6 +130,14 @@ def assertVectorsAlmostEqual(self, vec1, vec2):
self.assertAlmostEqual(
i, j, msg='values at index {} do not match'.format(idx))

class Multiplier:

def __mul__(self, other):
return f'M*{other}'

def __rmul__(self, other):
return f'{other}*M'


class TestVec2D(VectorComparisonMixin, unittest.TestCase):

Expand Down Expand Up @@ -211,9 +219,15 @@ def test_vector_multiply(self):
self.assertAlmostEqual(answer, expected)

vec = Vec2D(0.5, 3)
answer = vec * 10
expected = Vec2D(5, 30)
self.assertVectorsAlmostEqual(answer, expected)
self.assertVectorsAlmostEqual(vec * 10, expected)
self.assertVectorsAlmostEqual(10 * vec, expected)
self.assertVectorsAlmostEqual(vec * 10.0, expected)
self.assertVectorsAlmostEqual(10.0 * vec, expected)

M = Multiplier()
self.assertEqual(vec * M, Vec2D(f"{vec[0]}*M", f"{vec[1]}*M"))
self.assertEqual(M * vec, f'M*{vec}')

def test_vector_negative(self):
vec = Vec2D(10, -10)
Expand Down
1 change: 1 addition & 0 deletions Lib/turtle.py
Original file line number Diff line number Diff line change
Expand Up @@ -258,6 +258,7 @@ def __mul__(self, other):
def __rmul__(self, other):
if isinstance(other, int) or isinstance(other, float):
return Vec2D(self[0]*other, self[1]*other)
return NotImplemented
def __sub__(self, other):
return Vec2D(self[0]-other[0], self[1]-other[1])
def __neg__(self):
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
Fixed :meth:`turtle.Vec2D.__rmul__` for arguments which are not int or
float.

0 comments on commit fd4cafd

Please sign in to comment.