Clarify ImageDraw2 error message when size is missing by radarhere · Pull Request #8165 · python-pillow/Pillow

When creating an ImageDraw2.Draw instance, image can be either an image or a mode string.

If you provide a mode string without a size, you get an error saying that size must be a list or a tuple.

>>> from PIL import ImageDraw2
>>> ImageDraw2.Draw("RGB", size=None)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "PIL/ImageDraw2.py", line 61, in __init__
    image = Image.new(image, size, color)
  File "PIL/Image.py", line 3061, in new
    _check_size(size)
  File "PIL/Image.py", line 3029, in _check_size
    raise ValueError(msg)
ValueError: Size must be a list or tuple

Except, if you provided an image as the first argument, then size can be None without a problem.

>>> from PIL import Image
>>> im = Image.new("RGB", (1, 1))
>>> ImageDraw2.Draw(im, size=None)
<PIL.ImageDraw2.Draw object at 0x10084cdf0>

This is conceivably confusing, so this PR clarifies the situation, by changing the error to