mirror of
				https://github.com/django/django.git
				synced 2025-10-31 01:25:32 +00:00 
			
		
		
		
	Refs #35844 -- Fixed copying BaseContext and its subclasses on Python 3.14+.
super objects are copyable on Python 3.14+:
5ca4e34bc1
and can no longer be used in BaseContext.__copy__().
			
			
This commit is contained in:
		
				
					committed by
					
						 Sarah Boyce
						Sarah Boyce
					
				
			
			
				
	
			
			
			
						parent
						
							e035db1bc3
						
					
				
				
					commit
					8d7b1423f8
				
			| @@ -37,7 +37,9 @@ class BaseContext: | ||||
|             self.dicts.append(value) | ||||
|  | ||||
|     def __copy__(self): | ||||
|         duplicate = copy(super()) | ||||
|         duplicate = BaseContext() | ||||
|         duplicate.__class__ = self.__class__ | ||||
|         duplicate.__dict__ = copy(self.__dict__) | ||||
|         duplicate.dicts = self.dicts[:] | ||||
|         return duplicate | ||||
|  | ||||
|   | ||||
| @@ -1,3 +1,4 @@ | ||||
| from copy import copy | ||||
| from unittest import mock | ||||
|  | ||||
| from django.http import HttpRequest | ||||
| @@ -314,3 +315,10 @@ class RequestContextTests(SimpleTestCase): | ||||
|         with self.assertRaisesMessage(TypeError, msg): | ||||
|             with request_context.bind_template(Template("")): | ||||
|                 pass | ||||
|  | ||||
|     def test_context_copyable(self): | ||||
|         request_context = RequestContext(HttpRequest()) | ||||
|         request_context_copy = copy(request_context) | ||||
|         self.assertIsInstance(request_context_copy, RequestContext) | ||||
|         self.assertEqual(request_context_copy.dicts, request_context.dicts) | ||||
|         self.assertIsNot(request_context_copy.dicts, request_context.dicts) | ||||
|   | ||||
		Reference in New Issue
	
	Block a user