From 3ee70beea22a8fe77c98b00888cf6846dfed99f2 Mon Sep 17 00:00:00 2001 From: allegroai <> Date: Mon, 10 Feb 2020 10:28:23 +0200 Subject: [PATCH] Fix URL for uploaded files with '%' in their name to allow proper unquote during HTTP serving --- trains/backend_interface/metrics/events.py | 14 ++++++++++++-- trains/backend_interface/metrics/reporter.py | 5 +++++ 2 files changed, 17 insertions(+), 2 deletions(-) diff --git a/trains/backend_interface/metrics/events.py b/trains/backend_interface/metrics/events.py index 110112ca..33ccd986 100644 --- a/trains/backend_interface/metrics/events.py +++ b/trains/backend_interface/metrics/events.py @@ -319,6 +319,16 @@ class ImageEvent(UploadEvent): def get_api_event(self): return events.MetricsImageEvent( - url=self._url, + # Hack: replace single '%' with quoted value '%25', + # allowing the link to be properly unquoted during http serving + url=self._url + if ( + not self._url + or self._url.startswith("file://") + or self._url.startswith("/") + or self._url.startswith("\\") + ) + else self._url.replace("%", "%25"), key=self._key, - **self._get_base_dict()) + **self._get_base_dict() + ) diff --git a/trains/backend_interface/metrics/reporter.py b/trains/backend_interface/metrics/reporter.py index acf71920..0352c30b 100644 --- a/trains/backend_interface/metrics/reporter.py +++ b/trains/backend_interface/metrics/reporter.py @@ -533,6 +533,11 @@ class Reporter(InterfaceBase, AbstractContextManager, SetupUploadMixin, AsyncMan return self.report_image_and_upload(title=title, series=series, iter=iter, path=path, image=matrix, upload_uri=upload_uri, max_image_history=max_image_history) + # Hack: replace single '%' with quoted value '%25', + # allowing the link to be properly unquoted during http serving + if url: + url = url.replace('%', '%25') + self._report(ev) plotly_dict = create_image_plot( image_src=url,