I've tried adjusting parameters and changing the order in which these circles are added. I can't get the interior circle, or "hole", to remain transparent. The outer circle always predominates.
m = folium.Map(tiles="cartodbpositron", location=xy, zoom_start=14, attr="CartoDB")
folium.Circle(xy, radius=1800, fill=True, fill_opacity=.5, fill_color='black').add_to(m)
folium.Circle(xy, radius=1000, fill=False, fill_opacity=0, fill_color=None).add_to(m)
m
In effect, I'm trying to do what Shapely does:
donut = Point(0, 0).buffer(2.0).difference(Point(0, 0).buffer(1.0))
But I want to do it with Folium because projecting a circle made with Shapely yields an object that's rough, even elliptical.