mirror of
https://github.com/django/django.git
synced 2025-10-30 00:56:09 +00:00
Fixed #18269 -- Applied unicode_literals for Python 3 compatibility.
Thanks Vinay Sajip for the support of his django3 branch and Jannis Leidel for the review.
This commit is contained in:
@@ -1,4 +1,4 @@
|
||||
from __future__ import absolute_import
|
||||
from __future__ import absolute_import, unicode_literals
|
||||
|
||||
from django import template
|
||||
from django.utils.unittest import TestCase
|
||||
@@ -11,7 +11,7 @@ class CustomFilterTests(TestCase):
|
||||
t = template.Template("{% load custom %}{{ string|trim:5 }}")
|
||||
self.assertEqual(
|
||||
t.render(template.Context({"string": "abcdefghijklmnopqrstuvwxyz"})),
|
||||
u"abcde"
|
||||
"abcde"
|
||||
)
|
||||
|
||||
|
||||
@@ -25,50 +25,50 @@ class CustomTagTests(TestCase):
|
||||
c = template.Context({'value': 42})
|
||||
|
||||
t = template.Template('{% load custom %}{% no_params %}')
|
||||
self.assertEqual(t.render(c), u'no_params - Expected result')
|
||||
self.assertEqual(t.render(c), 'no_params - Expected result')
|
||||
|
||||
t = template.Template('{% load custom %}{% one_param 37 %}')
|
||||
self.assertEqual(t.render(c), u'one_param - Expected result: 37')
|
||||
self.assertEqual(t.render(c), 'one_param - Expected result: 37')
|
||||
|
||||
t = template.Template('{% load custom %}{% explicit_no_context 37 %}')
|
||||
self.assertEqual(t.render(c), u'explicit_no_context - Expected result: 37')
|
||||
self.assertEqual(t.render(c), 'explicit_no_context - Expected result: 37')
|
||||
|
||||
t = template.Template('{% load custom %}{% no_params_with_context %}')
|
||||
self.assertEqual(t.render(c), u'no_params_with_context - Expected result (context value: 42)')
|
||||
self.assertEqual(t.render(c), 'no_params_with_context - Expected result (context value: 42)')
|
||||
|
||||
t = template.Template('{% load custom %}{% params_and_context 37 %}')
|
||||
self.assertEqual(t.render(c), u'params_and_context - Expected result (context value: 42): 37')
|
||||
self.assertEqual(t.render(c), 'params_and_context - Expected result (context value: 42): 37')
|
||||
|
||||
t = template.Template('{% load custom %}{% simple_two_params 37 42 %}')
|
||||
self.assertEqual(t.render(c), u'simple_two_params - Expected result: 37, 42')
|
||||
self.assertEqual(t.render(c), 'simple_two_params - Expected result: 37, 42')
|
||||
|
||||
t = template.Template('{% load custom %}{% simple_one_default 37 %}')
|
||||
self.assertEqual(t.render(c), u'simple_one_default - Expected result: 37, hi')
|
||||
self.assertEqual(t.render(c), 'simple_one_default - Expected result: 37, hi')
|
||||
|
||||
t = template.Template('{% load custom %}{% simple_one_default 37 two="hello" %}')
|
||||
self.assertEqual(t.render(c), u'simple_one_default - Expected result: 37, hello')
|
||||
self.assertEqual(t.render(c), 'simple_one_default - Expected result: 37, hello')
|
||||
|
||||
t = template.Template('{% load custom %}{% simple_one_default one=99 two="hello" %}')
|
||||
self.assertEqual(t.render(c), u'simple_one_default - Expected result: 99, hello')
|
||||
self.assertEqual(t.render(c), 'simple_one_default - Expected result: 99, hello')
|
||||
|
||||
self.assertRaisesRegexp(template.TemplateSyntaxError,
|
||||
"'simple_one_default' received unexpected keyword argument 'three'",
|
||||
template.Template, '{% load custom %}{% simple_one_default 99 two="hello" three="foo" %}')
|
||||
|
||||
t = template.Template('{% load custom %}{% simple_one_default 37 42 %}')
|
||||
self.assertEqual(t.render(c), u'simple_one_default - Expected result: 37, 42')
|
||||
self.assertEqual(t.render(c), 'simple_one_default - Expected result: 37, 42')
|
||||
|
||||
t = template.Template('{% load custom %}{% simple_unlimited_args 37 %}')
|
||||
self.assertEqual(t.render(c), u'simple_unlimited_args - Expected result: 37, hi')
|
||||
self.assertEqual(t.render(c), 'simple_unlimited_args - Expected result: 37, hi')
|
||||
|
||||
t = template.Template('{% load custom %}{% simple_unlimited_args 37 42 56 89 %}')
|
||||
self.assertEqual(t.render(c), u'simple_unlimited_args - Expected result: 37, 42, 56, 89')
|
||||
self.assertEqual(t.render(c), 'simple_unlimited_args - Expected result: 37, 42, 56, 89')
|
||||
|
||||
t = template.Template('{% load custom %}{% simple_only_unlimited_args %}')
|
||||
self.assertEqual(t.render(c), u'simple_only_unlimited_args - Expected result: ')
|
||||
self.assertEqual(t.render(c), 'simple_only_unlimited_args - Expected result: ')
|
||||
|
||||
t = template.Template('{% load custom %}{% simple_only_unlimited_args 37 42 56 89 %}')
|
||||
self.assertEqual(t.render(c), u'simple_only_unlimited_args - Expected result: 37, 42, 56, 89')
|
||||
self.assertEqual(t.render(c), 'simple_only_unlimited_args - Expected result: 37, 42, 56, 89')
|
||||
|
||||
self.assertRaisesRegexp(template.TemplateSyntaxError,
|
||||
"'simple_two_params' received too many positional arguments",
|
||||
@@ -79,7 +79,7 @@ class CustomTagTests(TestCase):
|
||||
template.Template, '{% load custom %}{% simple_one_default 37 42 56 %}')
|
||||
|
||||
t = template.Template('{% load custom %}{% simple_unlimited_args_kwargs 37 40|add:2 56 eggs="scrambled" four=1|add:3 %}')
|
||||
self.assertEqual(t.render(c), u'simple_unlimited_args_kwargs - Expected result: 37, 42, 56 / eggs=scrambled, four=4')
|
||||
self.assertEqual(t.render(c), 'simple_unlimited_args_kwargs - Expected result: 37, 42, 56 / eggs=scrambled, four=4')
|
||||
|
||||
self.assertRaisesRegexp(template.TemplateSyntaxError,
|
||||
"'simple_unlimited_args_kwargs' received some positional argument\(s\) after some keyword argument\(s\)",
|
||||
@@ -109,50 +109,50 @@ class CustomTagTests(TestCase):
|
||||
c = template.Context({'value': 42})
|
||||
|
||||
t = template.Template('{% load custom %}{% inclusion_no_params %}')
|
||||
self.assertEqual(t.render(c), u'inclusion_no_params - Expected result\n')
|
||||
self.assertEqual(t.render(c), 'inclusion_no_params - Expected result\n')
|
||||
|
||||
t = template.Template('{% load custom %}{% inclusion_one_param 37 %}')
|
||||
self.assertEqual(t.render(c), u'inclusion_one_param - Expected result: 37\n')
|
||||
self.assertEqual(t.render(c), 'inclusion_one_param - Expected result: 37\n')
|
||||
|
||||
t = template.Template('{% load custom %}{% inclusion_explicit_no_context 37 %}')
|
||||
self.assertEqual(t.render(c), u'inclusion_explicit_no_context - Expected result: 37\n')
|
||||
self.assertEqual(t.render(c), 'inclusion_explicit_no_context - Expected result: 37\n')
|
||||
|
||||
t = template.Template('{% load custom %}{% inclusion_no_params_with_context %}')
|
||||
self.assertEqual(t.render(c), u'inclusion_no_params_with_context - Expected result (context value: 42)\n')
|
||||
self.assertEqual(t.render(c), 'inclusion_no_params_with_context - Expected result (context value: 42)\n')
|
||||
|
||||
t = template.Template('{% load custom %}{% inclusion_params_and_context 37 %}')
|
||||
self.assertEqual(t.render(c), u'inclusion_params_and_context - Expected result (context value: 42): 37\n')
|
||||
self.assertEqual(t.render(c), 'inclusion_params_and_context - Expected result (context value: 42): 37\n')
|
||||
|
||||
t = template.Template('{% load custom %}{% inclusion_two_params 37 42 %}')
|
||||
self.assertEqual(t.render(c), u'inclusion_two_params - Expected result: 37, 42\n')
|
||||
self.assertEqual(t.render(c), 'inclusion_two_params - Expected result: 37, 42\n')
|
||||
|
||||
t = template.Template('{% load custom %}{% inclusion_one_default 37 %}')
|
||||
self.assertEqual(t.render(c), u'inclusion_one_default - Expected result: 37, hi\n')
|
||||
self.assertEqual(t.render(c), 'inclusion_one_default - Expected result: 37, hi\n')
|
||||
|
||||
t = template.Template('{% load custom %}{% inclusion_one_default 37 two="hello" %}')
|
||||
self.assertEqual(t.render(c), u'inclusion_one_default - Expected result: 37, hello\n')
|
||||
self.assertEqual(t.render(c), 'inclusion_one_default - Expected result: 37, hello\n')
|
||||
|
||||
t = template.Template('{% load custom %}{% inclusion_one_default one=99 two="hello" %}')
|
||||
self.assertEqual(t.render(c), u'inclusion_one_default - Expected result: 99, hello\n')
|
||||
self.assertEqual(t.render(c), 'inclusion_one_default - Expected result: 99, hello\n')
|
||||
|
||||
self.assertRaisesRegexp(template.TemplateSyntaxError,
|
||||
"'inclusion_one_default' received unexpected keyword argument 'three'",
|
||||
template.Template, '{% load custom %}{% inclusion_one_default 99 two="hello" three="foo" %}')
|
||||
|
||||
t = template.Template('{% load custom %}{% inclusion_one_default 37 42 %}')
|
||||
self.assertEqual(t.render(c), u'inclusion_one_default - Expected result: 37, 42\n')
|
||||
self.assertEqual(t.render(c), 'inclusion_one_default - Expected result: 37, 42\n')
|
||||
|
||||
t = template.Template('{% load custom %}{% inclusion_unlimited_args 37 %}')
|
||||
self.assertEqual(t.render(c), u'inclusion_unlimited_args - Expected result: 37, hi\n')
|
||||
self.assertEqual(t.render(c), 'inclusion_unlimited_args - Expected result: 37, hi\n')
|
||||
|
||||
t = template.Template('{% load custom %}{% inclusion_unlimited_args 37 42 56 89 %}')
|
||||
self.assertEqual(t.render(c), u'inclusion_unlimited_args - Expected result: 37, 42, 56, 89\n')
|
||||
self.assertEqual(t.render(c), 'inclusion_unlimited_args - Expected result: 37, 42, 56, 89\n')
|
||||
|
||||
t = template.Template('{% load custom %}{% inclusion_only_unlimited_args %}')
|
||||
self.assertEqual(t.render(c), u'inclusion_only_unlimited_args - Expected result: \n')
|
||||
self.assertEqual(t.render(c), 'inclusion_only_unlimited_args - Expected result: \n')
|
||||
|
||||
t = template.Template('{% load custom %}{% inclusion_only_unlimited_args 37 42 56 89 %}')
|
||||
self.assertEqual(t.render(c), u'inclusion_only_unlimited_args - Expected result: 37, 42, 56, 89\n')
|
||||
self.assertEqual(t.render(c), 'inclusion_only_unlimited_args - Expected result: 37, 42, 56, 89\n')
|
||||
|
||||
self.assertRaisesRegexp(template.TemplateSyntaxError,
|
||||
"'inclusion_two_params' received too many positional arguments",
|
||||
@@ -171,7 +171,7 @@ class CustomTagTests(TestCase):
|
||||
template.Template, '{% load custom %}{% inclusion_unlimited_args %}')
|
||||
|
||||
t = template.Template('{% load custom %}{% inclusion_unlimited_args_kwargs 37 40|add:2 56 eggs="scrambled" four=1|add:3 %}')
|
||||
self.assertEqual(t.render(c), u'inclusion_unlimited_args_kwargs - Expected result: 37, 42, 56 / eggs=scrambled, four=4\n')
|
||||
self.assertEqual(t.render(c), 'inclusion_unlimited_args_kwargs - Expected result: 37, 42, 56 / eggs=scrambled, four=4\n')
|
||||
|
||||
self.assertRaisesRegexp(template.TemplateSyntaxError,
|
||||
"'inclusion_unlimited_args_kwargs' received some positional argument\(s\) after some keyword argument\(s\)",
|
||||
@@ -191,40 +191,40 @@ class CustomTagTests(TestCase):
|
||||
c = template.Context({'value': 42})
|
||||
|
||||
t = template.Template('{% load custom %}{% inclusion_no_params_from_template %}')
|
||||
self.assertEqual(t.render(c), u'inclusion_no_params_from_template - Expected result\n')
|
||||
self.assertEqual(t.render(c), 'inclusion_no_params_from_template - Expected result\n')
|
||||
|
||||
t = template.Template('{% load custom %}{% inclusion_one_param_from_template 37 %}')
|
||||
self.assertEqual(t.render(c), u'inclusion_one_param_from_template - Expected result: 37\n')
|
||||
self.assertEqual(t.render(c), 'inclusion_one_param_from_template - Expected result: 37\n')
|
||||
|
||||
t = template.Template('{% load custom %}{% inclusion_explicit_no_context_from_template 37 %}')
|
||||
self.assertEqual(t.render(c), u'inclusion_explicit_no_context_from_template - Expected result: 37\n')
|
||||
self.assertEqual(t.render(c), 'inclusion_explicit_no_context_from_template - Expected result: 37\n')
|
||||
|
||||
t = template.Template('{% load custom %}{% inclusion_no_params_with_context_from_template %}')
|
||||
self.assertEqual(t.render(c), u'inclusion_no_params_with_context_from_template - Expected result (context value: 42)\n')
|
||||
self.assertEqual(t.render(c), 'inclusion_no_params_with_context_from_template - Expected result (context value: 42)\n')
|
||||
|
||||
t = template.Template('{% load custom %}{% inclusion_params_and_context_from_template 37 %}')
|
||||
self.assertEqual(t.render(c), u'inclusion_params_and_context_from_template - Expected result (context value: 42): 37\n')
|
||||
self.assertEqual(t.render(c), 'inclusion_params_and_context_from_template - Expected result (context value: 42): 37\n')
|
||||
|
||||
t = template.Template('{% load custom %}{% inclusion_two_params_from_template 37 42 %}')
|
||||
self.assertEqual(t.render(c), u'inclusion_two_params_from_template - Expected result: 37, 42\n')
|
||||
self.assertEqual(t.render(c), 'inclusion_two_params_from_template - Expected result: 37, 42\n')
|
||||
|
||||
t = template.Template('{% load custom %}{% inclusion_one_default_from_template 37 %}')
|
||||
self.assertEqual(t.render(c), u'inclusion_one_default_from_template - Expected result: 37, hi\n')
|
||||
self.assertEqual(t.render(c), 'inclusion_one_default_from_template - Expected result: 37, hi\n')
|
||||
|
||||
t = template.Template('{% load custom %}{% inclusion_one_default_from_template 37 42 %}')
|
||||
self.assertEqual(t.render(c), u'inclusion_one_default_from_template - Expected result: 37, 42\n')
|
||||
self.assertEqual(t.render(c), 'inclusion_one_default_from_template - Expected result: 37, 42\n')
|
||||
|
||||
t = template.Template('{% load custom %}{% inclusion_unlimited_args_from_template 37 %}')
|
||||
self.assertEqual(t.render(c), u'inclusion_unlimited_args_from_template - Expected result: 37, hi\n')
|
||||
self.assertEqual(t.render(c), 'inclusion_unlimited_args_from_template - Expected result: 37, hi\n')
|
||||
|
||||
t = template.Template('{% load custom %}{% inclusion_unlimited_args_from_template 37 42 56 89 %}')
|
||||
self.assertEqual(t.render(c), u'inclusion_unlimited_args_from_template - Expected result: 37, 42, 56, 89\n')
|
||||
self.assertEqual(t.render(c), 'inclusion_unlimited_args_from_template - Expected result: 37, 42, 56, 89\n')
|
||||
|
||||
t = template.Template('{% load custom %}{% inclusion_only_unlimited_args_from_template %}')
|
||||
self.assertEqual(t.render(c), u'inclusion_only_unlimited_args_from_template - Expected result: \n')
|
||||
self.assertEqual(t.render(c), 'inclusion_only_unlimited_args_from_template - Expected result: \n')
|
||||
|
||||
t = template.Template('{% load custom %}{% inclusion_only_unlimited_args_from_template 37 42 56 89 %}')
|
||||
self.assertEqual(t.render(c), u'inclusion_only_unlimited_args_from_template - Expected result: 37, 42, 56, 89\n')
|
||||
self.assertEqual(t.render(c), 'inclusion_only_unlimited_args_from_template - Expected result: 37, 42, 56, 89\n')
|
||||
|
||||
def test_inclusion_tag_registration(self):
|
||||
# Test that the decorators preserve the decorated function's docstring, name and attributes.
|
||||
@@ -249,10 +249,10 @@ class CustomTagTests(TestCase):
|
||||
"""
|
||||
c = template.Context({})
|
||||
t = template.Template('{% load custom %}{% inclusion_tag_current_app %}')
|
||||
self.assertEqual(t.render(c).strip(), u'None')
|
||||
self.assertEqual(t.render(c).strip(), 'None')
|
||||
|
||||
c.current_app = 'advanced'
|
||||
self.assertEqual(t.render(c).strip(), u'advanced')
|
||||
self.assertEqual(t.render(c).strip(), 'advanced')
|
||||
|
||||
def test_15070_use_l10n(self):
|
||||
"""
|
||||
@@ -261,59 +261,59 @@ class CustomTagTests(TestCase):
|
||||
"""
|
||||
c = template.Context({})
|
||||
t = template.Template('{% load custom %}{% inclusion_tag_use_l10n %}')
|
||||
self.assertEqual(t.render(c).strip(), u'None')
|
||||
self.assertEqual(t.render(c).strip(), 'None')
|
||||
|
||||
c.use_l10n = True
|
||||
self.assertEqual(t.render(c).strip(), u'True')
|
||||
self.assertEqual(t.render(c).strip(), 'True')
|
||||
|
||||
def test_assignment_tags(self):
|
||||
c = template.Context({'value': 42})
|
||||
|
||||
t = template.Template('{% load custom %}{% assignment_no_params as var %}The result is: {{ var }}')
|
||||
self.assertEqual(t.render(c), u'The result is: assignment_no_params - Expected result')
|
||||
self.assertEqual(t.render(c), 'The result is: assignment_no_params - Expected result')
|
||||
|
||||
t = template.Template('{% load custom %}{% assignment_one_param 37 as var %}The result is: {{ var }}')
|
||||
self.assertEqual(t.render(c), u'The result is: assignment_one_param - Expected result: 37')
|
||||
self.assertEqual(t.render(c), 'The result is: assignment_one_param - Expected result: 37')
|
||||
|
||||
t = template.Template('{% load custom %}{% assignment_explicit_no_context 37 as var %}The result is: {{ var }}')
|
||||
self.assertEqual(t.render(c), u'The result is: assignment_explicit_no_context - Expected result: 37')
|
||||
self.assertEqual(t.render(c), 'The result is: assignment_explicit_no_context - Expected result: 37')
|
||||
|
||||
t = template.Template('{% load custom %}{% assignment_no_params_with_context as var %}The result is: {{ var }}')
|
||||
self.assertEqual(t.render(c), u'The result is: assignment_no_params_with_context - Expected result (context value: 42)')
|
||||
self.assertEqual(t.render(c), 'The result is: assignment_no_params_with_context - Expected result (context value: 42)')
|
||||
|
||||
t = template.Template('{% load custom %}{% assignment_params_and_context 37 as var %}The result is: {{ var }}')
|
||||
self.assertEqual(t.render(c), u'The result is: assignment_params_and_context - Expected result (context value: 42): 37')
|
||||
self.assertEqual(t.render(c), 'The result is: assignment_params_and_context - Expected result (context value: 42): 37')
|
||||
|
||||
t = template.Template('{% load custom %}{% assignment_two_params 37 42 as var %}The result is: {{ var }}')
|
||||
self.assertEqual(t.render(c), u'The result is: assignment_two_params - Expected result: 37, 42')
|
||||
self.assertEqual(t.render(c), 'The result is: assignment_two_params - Expected result: 37, 42')
|
||||
|
||||
t = template.Template('{% load custom %}{% assignment_one_default 37 as var %}The result is: {{ var }}')
|
||||
self.assertEqual(t.render(c), u'The result is: assignment_one_default - Expected result: 37, hi')
|
||||
self.assertEqual(t.render(c), 'The result is: assignment_one_default - Expected result: 37, hi')
|
||||
|
||||
t = template.Template('{% load custom %}{% assignment_one_default 37 two="hello" as var %}The result is: {{ var }}')
|
||||
self.assertEqual(t.render(c), u'The result is: assignment_one_default - Expected result: 37, hello')
|
||||
self.assertEqual(t.render(c), 'The result is: assignment_one_default - Expected result: 37, hello')
|
||||
|
||||
t = template.Template('{% load custom %}{% assignment_one_default one=99 two="hello" as var %}The result is: {{ var }}')
|
||||
self.assertEqual(t.render(c), u'The result is: assignment_one_default - Expected result: 99, hello')
|
||||
self.assertEqual(t.render(c), 'The result is: assignment_one_default - Expected result: 99, hello')
|
||||
|
||||
self.assertRaisesRegexp(template.TemplateSyntaxError,
|
||||
"'assignment_one_default' received unexpected keyword argument 'three'",
|
||||
template.Template, '{% load custom %}{% assignment_one_default 99 two="hello" three="foo" as var %}')
|
||||
|
||||
t = template.Template('{% load custom %}{% assignment_one_default 37 42 as var %}The result is: {{ var }}')
|
||||
self.assertEqual(t.render(c), u'The result is: assignment_one_default - Expected result: 37, 42')
|
||||
self.assertEqual(t.render(c), 'The result is: assignment_one_default - Expected result: 37, 42')
|
||||
|
||||
t = template.Template('{% load custom %}{% assignment_unlimited_args 37 as var %}The result is: {{ var }}')
|
||||
self.assertEqual(t.render(c), u'The result is: assignment_unlimited_args - Expected result: 37, hi')
|
||||
self.assertEqual(t.render(c), 'The result is: assignment_unlimited_args - Expected result: 37, hi')
|
||||
|
||||
t = template.Template('{% load custom %}{% assignment_unlimited_args 37 42 56 89 as var %}The result is: {{ var }}')
|
||||
self.assertEqual(t.render(c), u'The result is: assignment_unlimited_args - Expected result: 37, 42, 56, 89')
|
||||
self.assertEqual(t.render(c), 'The result is: assignment_unlimited_args - Expected result: 37, 42, 56, 89')
|
||||
|
||||
t = template.Template('{% load custom %}{% assignment_only_unlimited_args as var %}The result is: {{ var }}')
|
||||
self.assertEqual(t.render(c), u'The result is: assignment_only_unlimited_args - Expected result: ')
|
||||
self.assertEqual(t.render(c), 'The result is: assignment_only_unlimited_args - Expected result: ')
|
||||
|
||||
t = template.Template('{% load custom %}{% assignment_only_unlimited_args 37 42 56 89 as var %}The result is: {{ var }}')
|
||||
self.assertEqual(t.render(c), u'The result is: assignment_only_unlimited_args - Expected result: 37, 42, 56, 89')
|
||||
self.assertEqual(t.render(c), 'The result is: assignment_only_unlimited_args - Expected result: 37, 42, 56, 89')
|
||||
|
||||
self.assertRaisesRegexp(template.TemplateSyntaxError,
|
||||
"'assignment_one_param' tag takes at least 2 arguments and the second last argument must be 'as'",
|
||||
@@ -344,7 +344,7 @@ class CustomTagTests(TestCase):
|
||||
template.Template, '{% load custom %}{% assignment_unlimited_args as var %}The result is: {{ var }}')
|
||||
|
||||
t = template.Template('{% load custom %}{% assignment_unlimited_args_kwargs 37 40|add:2 56 eggs="scrambled" four=1|add:3 as var %}The result is: {{ var }}')
|
||||
self.assertEqual(t.render(c), u'The result is: assignment_unlimited_args_kwargs - Expected result: 37, 42, 56 / eggs=scrambled, four=4')
|
||||
self.assertEqual(t.render(c), 'The result is: assignment_unlimited_args_kwargs - Expected result: 37, 42, 56 / eggs=scrambled, four=4')
|
||||
|
||||
self.assertRaisesRegexp(template.TemplateSyntaxError,
|
||||
"'assignment_unlimited_args_kwargs' received some positional argument\(s\) after some keyword argument\(s\)",
|
||||
|
||||
Reference in New Issue
Block a user