I came across this because I was setting up a CI run against Python3.9. On Py3.9 there is a DeprecationWarning if `math.factorial` is supplied a float:

On Py3.8:
math.factorial(2.0) --> 2

On Py3.9:
math.factorial(2.0) --> 2 and emits a "DeprecationWarning: Using factorial() with floats is deprecated"

Presumably with Py >> 3.9:
math.factorial(2.0) will raise an Exception

As you say, `math.factorial` is used by `special.factorial` for `exact=True`. When Python3.9 is released various tests will start to fail because of that DeprecationWarning.
I know it's early days, I'm just trying to be proactive.

- how to modify tests to account for that DeprecationWarning when `special.factorial` is supplied a float with `exact=True`
- how test code and special.factorial code has to be modified for a post DeprecationWarning period.