Create a "spotlight" in an image using Python
I finally did it with ImageMagick, using Python to calculate the various coordinates, etc.
This command will create the desired circle (radius 400, centered at (600, 600):
convert -size 1024x1024 xc:none -stroke black -fill steelblue -strokewidth 1 -draw "translate 600,600 circle 0,0 400,0" drawn.png 
This command will then convert it to B/W to get a rudimentary mask:
convert drawn.png -alpha extract mask.png
This command will blur the mask (radius 180, sigma 16):
convert -channel RGBA  -blur 100x16 mask.png mask2.png
The above three commands gives me the mask I need.
This command will darken the whole image (without the mask):
convert image.jpg -level 0%,130%,0.7 dark.jpg
And this command will put all 3 images together (original image, darkened image, and mask):
composite image.jpg dark.jpg mask2.png out.jpg
Here's what I'm trying to do:
I have an image.
I want to take a circular region in the image, and have it appear as normal. 
The rest of the image should appear darker. 
This way, it will be as if the circular region is "highlighted".
I would much appreciate feedback on how to do it in Python. 
Manually, in Gimp, I would create a new layer with a color of gray (less than middle gray). I would then create a circualr region on that layer, and make it middle gray. Then I would change the blending mode to soft light. Essentially, anything that is middle gray on the top layer will show up without modification, and anything darker than middle gray would show up darker.
(Ideally, I'd also blur out the top layer so that the transition isn't abrupt). 
How can I do this algorithmically in Python? I've considered using the Pillow library, but it doesn't have these kinds of blend modes. I also considered using the Blit library, but I couldn't import (not sure it's maintained any more). Am open to scikit-image as well. I just need pointers on the library and some relevant functions. 
If there's no suitable library, I'm open to calling command line tools (e.g. imagemagick) from within the Python code.
Thanks!