import matplotlib.pyplot as plt
from mpl_visual_context.patheffects import (HLSModify,
                                            StrokeColorFromFillColor,
                                            FillOnly, StrokeOnly)

fig, ax = plt.subplots()

# original
p1 = plt.Circle((0.25, 0.5), 0.2, fc="r", ec="k", label="Original")
ax.add_patch(p1)

# w/ patheffects
p2 = plt.Circle((0.75, 0.5), 0.2, fc="r", ec="k", label="With PathEffects")
ax.add_patch(p2)

# 1. Modify lightness and then render with fill only (no stroke)
pe_fill = HLSModify(l=0.8) | FillOnly()
# 2. Use the original fill color for the stroke, then render with stroke only (no fill)
pe_stroke = StrokeColorFromFillColor() | StrokeOnly()

p2.set_path_effects([pe_fill, pe_stroke])
ax.legend()
plt.show()