Skip to content

Commit 992ceb0

Browse files
committed
Fix, add tests
1 parent f2d6d5c commit 992ceb0

File tree

3 files changed

+22
-1
lines changed

3 files changed

+22
-1
lines changed

sdks/python/apache_beam/internal/cloudpickle_pickler.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -275,7 +275,7 @@ def load_session(file_path):
275275
registries = cloudpickle.load(file)
276276
if type(registries) != dict:
277277
raise ValueError(
278-
"Faled loading session: expected dict, get {}", type(registries))
278+
"Faled loading session: expected dict, got {}", type(registries))
279279
if "coder" in registries:
280280
typecoders.registry.load_custom_type_coder_tuples(registries["coder"])
281281
else:

sdks/python/apache_beam/internal/cloudpickle_pickler_test.py

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@
2020
# pytype: skip-file
2121

2222
import os
23+
import tempfile
2324
import threading
2425
import types
2526
import unittest
@@ -31,6 +32,7 @@
3132
from apache_beam.internal import module_test
3233
from apache_beam.internal.cloudpickle_pickler import dumps
3334
from apache_beam.internal.cloudpickle_pickler import loads
35+
from apache_beam.typehints.schemas import LogicalTypeRegistry
3436
from apache_beam.utils import shared
3537

3638
GLOBAL_DICT_REF = module_test.GLOBAL_DICT
@@ -244,6 +246,24 @@ def sample_func():
244246
unpickled_filename = os.path.abspath(unpickled_code.co_filename)
245247
self.assertEqual(unpickled_filename, original_filename)
246248

249+
@mock.patch(
250+
"apache_beam.coders.typecoders.registry.load_custom_type_coder_tuples")
251+
@mock.patch(
252+
"apache_beam.typehints.schemas.LogicalType._known_logical_types.load")
253+
def test_dump_load_session(self, logicaltype_mock, coder_mock):
254+
session_file = 'pickled'
255+
256+
with tempfile.TemporaryDirectory() as tmp_dirname:
257+
pickled_session_file = os.path.join(tmp_dirname, session_file)
258+
beam_cloudpickle.dump_session(pickled_session_file)
259+
beam_cloudpickle.load_session(pickled_session_file)
260+
load_logical_types = logicaltype_mock.call_args.args
261+
load_coders = coder_mock.call_args.args
262+
self.assertEqual(len(load_logical_types), 1)
263+
self.assertEqual(len(load_coders), 1)
264+
self.assertTrue(isinstance(load_logical_types[0], LogicalTypeRegistry))
265+
self.assertTrue(isinstance(load_coders[0], list))
266+
247267

248268
if __name__ == '__main__':
249269
unittest.main()

sdks/python/apache_beam/typehints/schemas.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -720,6 +720,7 @@ def copy_custom(self):
720720
copy.by_logical_type[logical_type] = urn
721721
copy.by_language_type[logical_type.language_type()] = logical_type
722722
copy._custom_urns.add(urn)
723+
return copy
723724

724725
def load(self, another):
725726
self.by_urn.update(another.by_urn)

0 commit comments

Comments
 (0)