Add support for Python 3.13 by browniebroke · Pull Request #9527 · encode/django-rest-framework (original) (raw)

Description

Issues found

1. Fix view description inspection

Python 3.13 introduced docstrings for the None singletong: python/cpython#117813

In Python 3.12, this is an empty string:

 ➜ python3.12
Python 3.12.6 (main, Sep 10 2024, 19:06:17) [Clang 15.0.0 (clang-1500.3.9.4)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> d = None
>>> d.__doc__
>>>

In Python 3.13, it's no longer empty:

 ➜ python3.13
Python 3.13.0rc2+ (heads/3.13:660baa1, Sep 10 2024, 18:57:50) [Clang 15.0.0 (clang-1500.3.9.4)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> d = None
>>> d.__doc__
'The type of the None singleton.'
>>>

The fix: added a check in the inspector that get the view description out the view function docstring to catch this edge case.