diff --git a/test/py/explicit_module/EnumSerializationTest.py b/test/py/explicit_module/EnumSerializationTest.py
index 8d82708..5f6944f 100644
--- a/test/py/explicit_module/EnumSerializationTest.py
+++ b/test/py/explicit_module/EnumSerializationTest.py
@@ -27,13 +27,15 @@
 from thrift.protocol import TBinaryProtocol
 from thrift.transport import TTransport
 
+
 def deserialize_immutable(base,
-                buf,
-                protocol_factory=TBinaryProtocol.TBinaryProtocolFactory()):
+                          buf,
+                          protocol_factory=TBinaryProtocol.TBinaryProtocolFactory()):
     transport = TTransport.TMemoryBuffer(buf)
     protocol = protocol_factory.getProtocol(transport)
     return base.read(protocol)
 
+
 def serialization_deserialization_struct_enum_test():
     test_obj = TestStruct(param1="test_string", param2=TestEnum.TestEnum1, param3=SharedEnum.SharedEnum1)
     test_obj_serialized = serialize(test_obj)
@@ -42,6 +44,7 @@
     assert test_obj.param2 == test_obj2.param2
     assert test_obj.param3 == test_obj2.param3
 
+
 def serialization_deserialization_struct_enum_as_string_test():
     test_obj = TestStruct(param1="test_string", param2=TestEnum.TestEnum1.name, param3=SharedEnum.SharedEnum1.name)
     test_obj_serialized = serialize(test_obj)
@@ -50,6 +53,7 @@
     assert test_obj.param2 == test_obj2.param2
     assert test_obj.param3 == test_obj2.param3
 
+
 def serialization_deserialization_exception_enum_as_string_test():
     test_obj = TestException(whatOp=0, why=SharedEnum.SharedEnum0.name, who=TestEnum.TestEnum0.name)
     test_obj_serialized = serialize(test_obj)
@@ -58,6 +62,7 @@
     assert test_obj.why == test_obj2.why
     assert test_obj.who == test_obj2.who
 
+
 def serialization_deserialization_exception_enum_test():
     test_obj = TestException(whatOp=0, why=SharedEnum.SharedEnum0, who=TestEnum.TestEnum0)
     test_obj_serialized = serialize(test_obj)
@@ -67,7 +72,6 @@
     assert test_obj.who == test_obj2.who
 
 
-
 if __name__ == "__main__":
     args = sys.argv[1:]
     if args:
@@ -77,4 +81,4 @@
     serialization_deserialization_struct_enum_test()
     serialization_deserialization_struct_enum_as_string_test()
     serialization_deserialization_exception_enum_as_string_test()
-    serialization_deserialization_exception_enum_test()
\ No newline at end of file
+    serialization_deserialization_exception_enum_test()
