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

Fixed #34822 -- Added support for serializing functions decorated with functools.lru_cache in migrations.

`@functools.cache` and `@functools.lru_cache` return an object of type
`functools._lru_cache_wrapper` which prevented the migrations serializer from
working. Simply using the existing `FunctionTypeSerializer` for this additional
type works as expected.
This commit is contained in:
Nick Pope
2023-09-13 15:49:10 +01:00
committed by Natalia
parent c131949e3e
commit f92e68c30a
4 changed files with 23 additions and 1 deletions

View File

@@ -90,6 +90,16 @@ def function_with_decorator():
pass
@functools.cache
def function_with_cache():
pass
@functools.lru_cache(maxsize=10)
def function_with_lru_cache():
pass
class OperationWriterTests(SimpleTestCase):
def test_empty_signature(self):
operation = custom_migration_operations.operations.TestOperation()
@@ -581,6 +591,8 @@ class WriterTests(SimpleTestCase):
def test_serialize_decorated_functions(self):
self.assertSerializedEqual(function_with_decorator)
self.assertSerializedEqual(function_with_cache)
self.assertSerializedEqual(function_with_lru_cache)
def test_serialize_datetime(self):
self.assertSerializedEqual(datetime.datetime.now())