STY: Use ruff instead of flake8 to lint docstring examples
`ruff` assumes you're running `black`, which we can't run easily on docstrings because of all the docstring sharing (😢 ), so it doesn't flag some things because it assumes `black` will already have formatted them for you

do we still want to do this? Ah I didn't know black was a prereq for ruff. ruff was catching errors when using our `pyproject.toml` configuration, but I realized the docstring examples were not formatted as rigorously. The main motivation for this change was the reduce the time it takes for our `docstring validation` check (12 mins vs 4 mins).  wow that's really noticeable

OK sure let's do this from the CI logs

> E           assert "flake8 error: line 1, col 33: E231 missing whitespace after ','" in 'No summary found (a short summary in a single line should be present at the beginning of the docstring) No extended summary found See Also section not found'

so this is the kind of thing which ruff would no longer be catching Ah darn. I guess this is not entirely equivalent then so closing