summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDmitry Teselkin <dteselkin@mirantis.com>2020-06-04 15:14:07 +0300
committerDmitry Teselkin <dteselkin@mirantis.com>2020-06-04 15:21:31 +0300
commit82a05614637d3c5ecbdcb662326e666424007cd5 (patch)
treec23e1edd37dfb847291d7d3d11d5610acfe37a5c
parent6c55bc78212536a9fe59f35b4c199ebe2c305844 (diff)
downloadpython-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.py6
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)