33import time
44import collections
55
6+ try :
7+ # Python 2
8+ from urllib import quote_plus
9+ except ImportError :
10+ # Python 3
11+ from urllib .parse import quote_plus
12+
613from .version import __version__
714
815try :
@@ -56,7 +63,7 @@ def create_experiment(self, xp_name, zip_file=None):
5663
5764 def remove_experiment (self , xp_name ):
5865 assert (isinstance (xp_name , basestring ))
59- query = "/data?xp={}" .format (xp_name )
66+ query = "/data?xp={}" .format (quote_plus ( xp_name ) )
6067 r = requests .delete (self .url + query )
6168
6269 if not r .ok :
@@ -100,7 +107,7 @@ def __init_empty(self):
100107 raise ValueError (msg .format (r .text ))
101108
102109 def __init_from_existing (self ):
103- query = "/data?xp={}" .format (self .xp_name )
110+ query = "/data?xp={}" .format (quote_plus ( self .xp_name ) )
104111 r = requests .get (self .client .url + query )
105112
106113 if not r .ok :
@@ -118,7 +125,7 @@ def __init_from_existing(self):
118125
119126 def __init_from_file (self , zip_file , force = False ):
120127 query = "/backup?xp={}&force={}" .format (
121- self .xp_name , force )
128+ quote_plus ( self .xp_name ) , force )
122129 fileobj = open (zip_file , 'rb' )
123130 r = requests .post (self .client .url + query , data = {"mysubmit" : "Go" },
124131 files = {"archive" : ("backup.zip" , fileobj )})
@@ -140,7 +147,7 @@ def add_scalar_value(self, name, value, wall_time=-1, step=-1):
140147 self .scalar_steps [name ] += 1
141148 else :
142149 self .scalar_steps [name ] = step + 1
143- query = "/data/scalars?xp={}&name={}" .format (self .xp_name , name )
150+ query = "/data/scalars?xp={}&name={}" .format (quote_plus ( self .xp_name ), quote_plus ( name ) )
144151 data = [wall_time , step , value ]
145152 r = requests .post (self .client .url + query , json = data )
146153
@@ -156,7 +163,7 @@ def add_scalar_dict(self, data, wall_time=-1, step=-1):
156163 self .add_scalar_value (name , value , wall_time , step )
157164
158165 def get_scalar_values (self , name ):
159- query = "/data/scalars?xp={}&name={}" .format (self .xp_name , name )
166+ query = "/data/scalars?xp={}&name={}" .format (quote_plus ( self .xp_name ), quote_plus ( name ) )
160167
161168 r = requests .get (self .client .url + query )
162169
@@ -188,7 +195,7 @@ def add_histogram_value(self, name, hist, tobuild=False,
188195 raise ValueError ("Data was not provided in a valid format!" )
189196
190197 query = "/data/histograms?xp={}&name={}&tobuild={}" .format (
191- self .xp_name , name , tobuild )
198+ quote_plus ( self .xp_name ), quote_plus ( name ) , tobuild )
192199
193200 data = [wall_time , step , hist ]
194201 r = requests .post (self .client .url + query , json = data )
@@ -198,7 +205,7 @@ def add_histogram_value(self, name, hist, tobuild=False,
198205 )
199206
200207 def get_histogram_values (self , name ):
201- query = "/data/histograms?xp={}&name={}" .format (self .xp_name , name )
208+ query = "/data/histograms?xp={}&name={}" .format (quote_plus ( self .xp_name ), quote_plus ( name ) )
202209 r = requests .get (self .client .url + query )
203210
204211 if not r .ok :
@@ -225,7 +232,7 @@ def __check_histogram_data(self, data, tobuild):
225232
226233 # Backup methods
227234 def to_zip (self , filename = None ):
228- query = "/backup?xp={}" .format (self .xp_name )
235+ query = "/backup?xp={}" .format (quote_plus ( self .xp_name ) )
229236 r = requests .get (self .client .url + query )
230237
231238 if not r .ok :
@@ -241,7 +248,7 @@ def to_zip(self, filename=None):
241248
242249 # Helper methods
243250 def __get_name_list (self , element_type ):
244- query = "/data?xp={}" .format (self .xp_name )
251+ query = "/data?xp={}" .format (quote_plus ( self .xp_name ) )
245252 r = requests .get (self .client .url + query )
246253
247254 if not r .ok :
0 commit comments