From f92e68c30a0d38d25486e3f3cfabe5dfb5961ef7 Mon Sep 17 00:00:00 2001 From: Nick Pope Date: Wed, 13 Sep 2023 15:49:10 +0100 Subject: 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. --- tests/migrations/test_writer.py | 12 ++++++++++++ 1 file changed, 12 insertions(+) (limited to 'tests') diff --git a/tests/migrations/test_writer.py b/tests/migrations/test_writer.py index e7c7917ef0..fd0e7f0fe3 100644 --- a/tests/migrations/test_writer.py +++ b/tests/migrations/test_writer.py @@ -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()) -- cgit v1.3