Custom __deepcopy__ for LazyLoader
When running JJB under py3 (py3.6) it started to fail with exception TypeError: cannot serialize '_io.BufferedReader' object This is happens when doing deepcopy of a LazyLoader object which contains an instance of BufferedReader object. Under py2 this works but under py3 it is not. This commit adds custom __deepcopy__ method to LazyLoader that avoids deepcopy of a self._loader. Change-Id: I00844fc06ebf84538d557c33f1179a26cb18202f Story: 2007227
This commit is contained in:
parent
6c55bc7821
commit
82a0561463
@ -203,6 +203,7 @@ import io
|
||||
import logging
|
||||
import os
|
||||
import re
|
||||
import copy
|
||||
|
||||
import jinja2
|
||||
import yaml
|
||||
@ -598,6 +599,11 @@ class LazyLoader(CustomLoader):
|
||||
def __repr__(self):
|
||||
return "%s %s" % (self._cls.yaml_tag, self._node.value)
|
||||
|
||||
def __deepcopy__(self, memodict={}):
|
||||
return LazyLoader(
|
||||
(copy.deepcopy(self._cls), self._loader, copy.deepcopy(self._node))
|
||||
)
|
||||
|
||||
def format(self, *args, **kwargs):
|
||||
node = yaml.ScalarNode(
|
||||
tag=self._node.tag, value=self._node.value.format(*args, **kwargs)
|
||||
|
Loading…
x
Reference in New Issue
Block a user