1
0
mirror of https://github.com/django/django.git synced 2025-10-24 06:06:09 +00:00

Refs #33476 -- Reformatted code with Black.

This commit is contained in:
django-bot
2022-02-03 20:24:19 +01:00
committed by Mariusz Felisiak
parent f68fa8b45d
commit 9c19aff7c7
1992 changed files with 139577 additions and 96284 deletions

View File

@@ -4,7 +4,10 @@ import warnings
from datetime import datetime
from django.core.paginator import (
EmptyPage, InvalidPage, PageNotAnInteger, Paginator,
EmptyPage,
InvalidPage,
PageNotAnInteger,
Paginator,
UnorderedObjectListWarning,
)
from django.test import SimpleTestCase, TestCase
@@ -25,9 +28,9 @@ class PaginationTests(SimpleTestCase):
"""
count, num_pages, page_range = output
paginator = Paginator(*params)
self.check_attribute('count', paginator, count, params)
self.check_attribute('num_pages', paginator, num_pages, params)
self.check_attribute('page_range', paginator, page_range, params, coerce=list)
self.check_attribute("count", paginator, count, params)
self.check_attribute("num_pages", paginator, num_pages, params)
self.check_attribute("page_range", paginator, page_range, params, coerce=list)
def check_attribute(self, name, paginator, expected, params, coerce=None):
"""
@@ -38,9 +41,10 @@ class PaginationTests(SimpleTestCase):
if coerce is not None:
got = coerce(got)
self.assertEqual(
expected, got,
expected,
got,
"For '%s', expected %s but got %s. Paginator parameters were: %s"
% (name, expected, got, params)
% (name, expected, got, params),
)
def test_paginator(self):
@@ -102,10 +106,10 @@ class PaginationTests(SimpleTestCase):
(([1, 2, 3], 2, 1, True), (3, 1, [1])),
((eleven, 10, 1, True), (11, 1, [1])),
# Non-integer inputs
((ten, '4', 1, False), (10, 3, [1, 2, 3])),
((ten, '4', 1, False), (10, 3, [1, 2, 3])),
((ten, 4, '1', False), (10, 3, [1, 2, 3])),
((ten, 4, '1', False), (10, 3, [1, 2, 3])),
((ten, "4", 1, False), (10, 3, [1, 2, 3])),
((ten, "4", 1, False), (10, 3, [1, 2, 3])),
((ten, 4, "1", False), (10, 3, [1, 2, 3])),
((ten, 4, "1", False), (10, 3, [1, 2, 3])),
)
for params, output in tests:
self.check_paginator(params, output)
@@ -120,7 +124,7 @@ class PaginationTests(SimpleTestCase):
with self.assertRaises(PageNotAnInteger):
paginator.validate_number(None)
with self.assertRaises(PageNotAnInteger):
paginator.validate_number('x')
paginator.validate_number("x")
with self.assertRaises(PageNotAnInteger):
paginator.validate_number(1.2)
@@ -137,6 +141,7 @@ class PaginationTests(SimpleTestCase):
class CountContainer:
def count(self):
return 42
# Paginator can be passed other objects with a count() method.
paginator = Paginator(CountContainer(), 10)
self.assertEqual(42, paginator.count)
@@ -147,6 +152,7 @@ class PaginationTests(SimpleTestCase):
class LenContainer:
def __len__(self):
return 42
paginator = Paginator(LenContainer(), 10)
self.assertEqual(42, paginator.count)
self.assertEqual(5, paginator.num_pages)
@@ -155,17 +161,17 @@ class PaginationTests(SimpleTestCase):
def test_count_does_not_silence_attribute_error(self):
class AttributeErrorContainer:
def count(self):
raise AttributeError('abc')
raise AttributeError("abc")
with self.assertRaisesMessage(AttributeError, 'abc'):
with self.assertRaisesMessage(AttributeError, "abc"):
Paginator(AttributeErrorContainer(), 10).count
def test_count_does_not_silence_type_error(self):
class TypeErrorContainer:
def count(self):
raise TypeError('abc')
raise TypeError("abc")
with self.assertRaisesMessage(TypeError, 'abc'):
with self.assertRaisesMessage(TypeError, "abc"):
Paginator(TypeErrorContainer(), 10).count
def check_indexes(self, params, page_num, indexes):
@@ -175,15 +181,23 @@ class PaginationTests(SimpleTestCase):
page_num match those given as a 2-tuple in indexes.
"""
paginator = Paginator(*params)
if page_num == 'first':
if page_num == "first":
page_num = 1
elif page_num == 'last':
elif page_num == "last":
page_num = paginator.num_pages
page = paginator.page(page_num)
start, end = indexes
msg = ("For %s of page %s, expected %s but got %s. Paginator parameters were: %s")
self.assertEqual(start, page.start_index(), msg % ('start index', page_num, start, page.start_index(), params))
self.assertEqual(end, page.end_index(), msg % ('end index', page_num, end, page.end_index(), params))
msg = "For %s of page %s, expected %s but got %s. Paginator parameters were: %s"
self.assertEqual(
start,
page.start_index(),
msg % ("start index", page_num, start, page.start_index(), params),
)
self.assertEqual(
end,
page.end_index(),
msg % ("end index", page_num, end, page.end_index(), params),
)
def test_page_indexes(self):
"""
@@ -224,8 +238,8 @@ class PaginationTests(SimpleTestCase):
(([], 4, 2, True), (0, 0), (0, 0)),
)
for params, first, last in tests:
self.check_indexes(params, 'first', first)
self.check_indexes(params, 'last', last)
self.check_indexes(params, "first", first)
self.check_indexes(params, "last", last)
# When no items and no empty first page, we should get EmptyPage error.
with self.assertRaises(EmptyPage):
@@ -239,20 +253,20 @@ class PaginationTests(SimpleTestCase):
"""
A paginator page acts like a standard sequence.
"""
eleven = 'abcdefghijk'
eleven = "abcdefghijk"
page2 = Paginator(eleven, per_page=5, orphans=1).page(2)
self.assertEqual(len(page2), 6)
self.assertIn('k', page2)
self.assertNotIn('a', page2)
self.assertEqual(''.join(page2), 'fghijk')
self.assertEqual(''.join(reversed(page2)), 'kjihgf')
self.assertIn("k", page2)
self.assertNotIn("a", page2)
self.assertEqual("".join(page2), "fghijk")
self.assertEqual("".join(reversed(page2)), "kjihgf")
def test_get_page_hook(self):
"""
A Paginator subclass can use the ``_get_page`` hook to
return an alternative to the standard Page class.
"""
eleven = 'abcdefghijk'
eleven = "abcdefghijk"
paginator = ValidAdjacentNumsPaginator(eleven, per_page=6)
page1 = paginator.page(1)
page2 = paginator.page(2)
@@ -309,7 +323,7 @@ class PaginationTests(SimpleTestCase):
def test_get_elided_page_range(self):
# Paginator.validate_number() must be called:
paginator = Paginator([1, 2, 3], 2)
with unittest.mock.patch.object(paginator, 'validate_number') as mock:
with unittest.mock.patch.object(paginator, "validate_number") as mock:
mock.assert_not_called()
list(paginator.get_elided_page_range(2))
mock.assert_called_with(2)
@@ -347,15 +361,25 @@ class PaginationTests(SimpleTestCase):
# Range is not elided if not enough pages when using custom arguments:
tests = [
(6, 2, 1, 1), (8, 1, 3, 1), (8, 4, 0, 1), (4, 1, 1, 1),
(6, 2, 1, 1),
(8, 1, 3, 1),
(8, 4, 0, 1),
(4, 1, 1, 1),
# When on_each_side and on_ends are both <= 1 but not both == 1 it
# is a special case where the range is not elided until an extra
# page is added.
(2, 0, 1, 2), (2, 1, 0, 2), (1, 0, 0, 2),
(2, 0, 1, 2),
(2, 1, 0, 2),
(1, 0, 0, 2),
]
for pages, on_each_side, on_ends, elided_after in tests:
for offset in range(elided_after + 1):
with self.subTest(pages=pages, offset=elided_after, on_each_side=on_each_side, on_ends=on_ends):
with self.subTest(
pages=pages,
offset=elided_after,
on_each_side=on_each_side,
on_ends=on_ends,
):
paginator = Paginator(range((pages + offset) * 100), 100)
page_range = paginator.get_elided_page_range(
1,
@@ -416,7 +440,9 @@ class PaginationTests(SimpleTestCase):
]
paginator = Paginator(range(5000), 100)
for number, on_each_side, on_ends, expected in tests:
with self.subTest(number=number, on_each_side=on_each_side, on_ends=on_ends):
with self.subTest(
number=number, on_each_side=on_each_side, on_ends=on_ends
):
page_range = paginator.get_elided_page_range(
number,
on_each_side=on_each_side,
@@ -430,17 +456,18 @@ class ModelPaginationTests(TestCase):
"""
Test pagination with Django model instances
"""
@classmethod
def setUpTestData(cls):
# Prepare a list of objects for pagination.
pub_date = datetime(2005, 7, 29)
cls.articles = [
Article.objects.create(headline=f'Article {x}', pub_date=pub_date)
Article.objects.create(headline=f"Article {x}", pub_date=pub_date)
for x in range(1, 10)
]
def test_first_page(self):
paginator = Paginator(Article.objects.order_by('id'), 5)
paginator = Paginator(Article.objects.order_by("id"), 5)
p = paginator.page(1)
self.assertEqual("<Page 1 of 2>", str(p))
self.assertSequenceEqual(p.object_list, self.articles[:5])
@@ -454,7 +481,7 @@ class ModelPaginationTests(TestCase):
self.assertEqual(5, p.end_index())
def test_last_page(self):
paginator = Paginator(Article.objects.order_by('id'), 5)
paginator = Paginator(Article.objects.order_by("id"), 5)
p = paginator.page(2)
self.assertEqual("<Page 2 of 2>", str(p))
self.assertSequenceEqual(p.object_list, self.articles[5:])
@@ -472,15 +499,15 @@ class ModelPaginationTests(TestCase):
Tests proper behavior of a paginator page __getitem__ (queryset
evaluation, slicing, exception raised).
"""
paginator = Paginator(Article.objects.order_by('id'), 5)
paginator = Paginator(Article.objects.order_by("id"), 5)
p = paginator.page(1)
# Make sure object_list queryset is not evaluated by an invalid __getitem__ call.
# (this happens from the template engine when using eg: {% page_obj.has_previous %})
self.assertIsNone(p.object_list._result_cache)
msg = 'Page indices must be integers or slices, not str.'
msg = "Page indices must be integers or slices, not str."
with self.assertRaisesMessage(TypeError, msg):
p['has_previous']
p["has_previous"]
self.assertIsNone(p.object_list._result_cache)
self.assertNotIsInstance(p.object_list, list)
@@ -511,8 +538,10 @@ class ModelPaginationTests(TestCase):
Unordered object list warning with an object that has an ordered
attribute but not a model attribute.
"""
class ObjectList:
ordered = False
object_list = ObjectList()
msg = (
"Pagination may yield inconsistent results with an unordered "