diff options
author | Dmitry Teselkin <dteselkin@mirantis.com> | 2020-06-04 15:14:07 +0300 |
---|---|---|
committer | Dmitry Teselkin <dteselkin@mirantis.com> | 2020-06-04 15:21:31 +0300 |
commit | 82a05614637d3c5ecbdcb662326e666424007cd5 (patch) | |
tree | c23e1edd37dfb847291d7d3d11d5610acfe37a5c | |
parent | 6c55bc78212536a9fe59f35b4c199ebe2c305844 (diff) | |
download | python-jenkins-job-builder-82a05614637d3c5ecbdcb662326e666424007cd5.tar.gz python-jenkins-job-builder-82a05614637d3c5ecbdcb662326e666424007cd5.tar.xz python-jenkins-job-builder-82a05614637d3c5ecbdcb662326e666424007cd5.zip |
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
-rw-r--r-- | jenkins_jobs/local_yaml.py | 6 |
1 files changed, 6 insertions, 0 deletions
diff --git a/jenkins_jobs/local_yaml.py b/jenkins_jobs/local_yaml.py index c22fc3c6..9aeeb9af 100644 --- a/jenkins_jobs/local_yaml.py +++ b/jenkins_jobs/local_yaml.py @@ -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) |