Add support for Python 3.13 by browniebroke · Pull Request #9527 · encode/django-rest-framework (original) (raw)
Description
- Add Python 3.13-dev to the CI
- Declare support in the docs and in package metadata
- Fix issue(s)
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.