Skip to content

Commit 90eaf51

Browse files
authored
Update framework deprecation warnings (#7075)
- Bump version numbers for deprecation warnings - Drop deprecated features
1 parent 95d4843 commit 90eaf51

File tree

3 files changed

+6
-95
lines changed

3 files changed

+6
-95
lines changed

rest_framework/__init__.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -25,9 +25,9 @@
2525
default_app_config = 'rest_framework.apps.RestFrameworkConfig'
2626

2727

28-
class RemovedInDRF311Warning(DeprecationWarning):
28+
class RemovedInDRF312Warning(DeprecationWarning):
2929
pass
3030

3131

32-
class RemovedInDRF312Warning(PendingDeprecationWarning):
32+
class RemovedInDRF313Warning(PendingDeprecationWarning):
3333
pass

rest_framework/routers.py

Lines changed: 3 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -14,15 +14,13 @@
1414
urlpatterns = router.urls
1515
"""
1616
import itertools
17-
import warnings
1817
from collections import OrderedDict, namedtuple
1918

2019
from django.conf.urls import url
2120
from django.core.exceptions import ImproperlyConfigured
2221
from django.urls import NoReverseMatch
23-
from django.utils.deprecation import RenameMethodsBase
2422

25-
from rest_framework import RemovedInDRF311Warning, views
23+
from rest_framework import views
2624
from rest_framework.response import Response
2725
from rest_framework.reverse import reverse
2826
from rest_framework.schemas import SchemaGenerator
@@ -48,27 +46,11 @@ def flatten(list_of_lists):
4846
return itertools.chain(*list_of_lists)
4947

5048

51-
class RenameRouterMethods(RenameMethodsBase):
52-
renamed_methods = (
53-
('get_default_base_name', 'get_default_basename', RemovedInDRF311Warning),
54-
)
55-
56-
57-
class BaseRouter(metaclass=RenameRouterMethods):
49+
class BaseRouter:
5850
def __init__(self):
5951
self.registry = []
6052

61-
def register(self, prefix, viewset, basename=None, base_name=None):
62-
if base_name is not None:
63-
msg = "The `base_name` argument is pending deprecation in favor of `basename`."
64-
warnings.warn(msg, RemovedInDRF311Warning, 2)
65-
66-
assert not (basename and base_name), (
67-
"Do not provide both the `basename` and `base_name` arguments.")
68-
69-
if basename is None:
70-
basename = base_name
71-
53+
def register(self, prefix, viewset, basename=None):
7254
if basename is None:
7355
basename = self.get_default_basename(viewset)
7456
self.registry.append((prefix, viewset, basename))

tests/test_routers.py

Lines changed: 1 addition & 72 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,3 @@
1-
import warnings
21
from collections import namedtuple
32

43
import pytest
@@ -8,9 +7,7 @@
87
from django.test import TestCase, override_settings
98
from django.urls import resolve, reverse
109

11-
from rest_framework import (
12-
RemovedInDRF311Warning, permissions, serializers, viewsets
13-
)
10+
from rest_framework import permissions, serializers, viewsets
1411
from rest_framework.compat import get_regex_pattern
1512
from rest_framework.decorators import action
1613
from rest_framework.response import Response
@@ -488,71 +485,3 @@ def test_basename(self):
488485
initkwargs = match.func.initkwargs
489486

490487
assert initkwargs['basename'] == 'routertestmodel'
491-
492-
493-
class TestBaseNameRename(TestCase):
494-
495-
def test_base_name_and_basename_assertion(self):
496-
router = SimpleRouter()
497-
498-
msg = "Do not provide both the `basename` and `base_name` arguments."
499-
with warnings.catch_warnings(record=True) as w, \
500-
self.assertRaisesMessage(AssertionError, msg):
501-
warnings.simplefilter('always')
502-
router.register('mock', MockViewSet, 'mock', base_name='mock')
503-
504-
msg = "The `base_name` argument is pending deprecation in favor of `basename`."
505-
assert len(w) == 1
506-
assert str(w[0].message) == msg
507-
508-
def test_base_name_argument_deprecation(self):
509-
router = SimpleRouter()
510-
511-
with pytest.warns(RemovedInDRF311Warning) as w:
512-
warnings.simplefilter('always')
513-
router.register('mock', MockViewSet, base_name='mock')
514-
515-
msg = "The `base_name` argument is pending deprecation in favor of `basename`."
516-
assert len(w) == 1
517-
assert str(w[0].message) == msg
518-
assert router.registry == [
519-
('mock', MockViewSet, 'mock'),
520-
]
521-
522-
def test_basename_argument_no_warnings(self):
523-
router = SimpleRouter()
524-
525-
with warnings.catch_warnings(record=True) as w:
526-
warnings.simplefilter('always')
527-
router.register('mock', MockViewSet, basename='mock')
528-
529-
assert len(w) == 0
530-
assert router.registry == [
531-
('mock', MockViewSet, 'mock'),
532-
]
533-
534-
def test_get_default_base_name_deprecation(self):
535-
msg = "`CustomRouter.get_default_base_name` method should be renamed `get_default_basename`."
536-
537-
# Class definition should raise a warning
538-
with pytest.warns(RemovedInDRF311Warning) as w:
539-
warnings.simplefilter('always')
540-
541-
class CustomRouter(SimpleRouter):
542-
def get_default_base_name(self, viewset):
543-
return 'foo'
544-
545-
assert len(w) == 1
546-
assert str(w[0].message) == msg
547-
548-
# Deprecated method implementation should still be called
549-
with warnings.catch_warnings(record=True) as w:
550-
warnings.simplefilter('always')
551-
552-
router = CustomRouter()
553-
router.register('mock', MockViewSet)
554-
555-
assert len(w) == 0
556-
assert router.registry == [
557-
('mock', MockViewSet, 'foo'),
558-
]

0 commit comments

Comments
 (0)