Vega strike Python Modules doc  0.5.1
Documentation of the " Modules " folder of Vega strike
 All Data Structures Namespaces Files Functions Variables
Pickler Class Reference

Public Member Functions

def __init__
 
def dump
 
def put
 
def get
 
def save
 
def persistent_id
 
def inst_persistent_id
 
def save_pers
 
def save_reduce
 
def save_none
 
def save_int
 
def save_long
 
def save_float
 
def save_string
 
def save_unicode
 
def save_string
 
def save_tuple
 
def save_empty_tuple
 
def save_list
 
def save_dict
 
def save_inst
 
def save_global
 

Data Fields

 write
 
 memo
 
 bin
 

Static Public Attributes

dictionary dispatch = {}
 

Detailed Description

Definition at line 107 of file pickle.py.

Constructor & Destructor Documentation

def __init__ (   self,
  file,
  bin = 0 
)

Definition at line 109 of file pickle.py.

110  def __init__(self, file, bin = 0):
111  self.write = file.write
112  self.memo = {}
113  self.bin = bin

Member Function Documentation

def dump (   self,
  object 
)

Definition at line 114 of file pickle.py.

References Pickler.save(), Pickler.write, and file_wrapper.write.

115  def dump(self, object):
116  self.save(object)
117  self.write(STOP)
def get (   self,
  i 
)

Definition at line 128 of file pickle.py.

References Pickler.bin, and pickle.mdumps.

129  def get(self, i):
130  if self.bin:
131  s = mdumps(i)[1:]
132 
133  if i < 256:
134  return BINGET + s[0]
135 
136  return LONG_BINGET + s
137 
138  return GET + `i` + '\n'
def inst_persistent_id (   self,
  object 
)

Definition at line 230 of file pickle.py.

231  def inst_persistent_id(self, object):
232  return None
def persistent_id (   self,
  object 
)

Definition at line 227 of file pickle.py.

228  def persistent_id(self, object):
229  return None
def put (   self,
  i 
)

Definition at line 118 of file pickle.py.

References Pickler.bin, and pickle.mdumps.

119  def put(self, i):
120  if self.bin:
121  s = mdumps(i)[1:]
122  if i < 256:
123  return BINPUT + s[0]
124 
125  return LONG_BINPUT + s
126 
127  return PUT + `i` + '\n'
def save (   self,
  object,
  pers_save = 0 
)

Definition at line 139 of file pickle.py.

References Pickler.bin, Pickler.dispatch, aifc.f, Pickler.get(), ConfigParser.get(), Message.get, _SpoofOut.get(), _Environ.get(), _TestClass.get(), Pickler.inst_persistent_id(), Pickler.memo, Pickler.persistent_id(), Pickler.put(), Pickler.save_empty_tuple(), Pickler.save_global(), Pickler.save_pers(), Pickler.save_reduce(), Pickler.save_tuple(), Pickler.write, and file_wrapper.write.

140  def save(self, object, pers_save = 0):
141  memo = self.memo
142 
143  if not pers_save:
144  pid = self.persistent_id(object)
145  if pid is not None:
146  self.save_pers(pid)
147  return
148 
149  d = id(object)
150 
151  t = type(object)
152 
153  if (t is TupleType) and (len(object) == 0):
154  if self.bin:
155  self.save_empty_tuple(object)
156  else:
157  self.save_tuple(object)
158  return
159 
160  if memo.has_key(d):
161  self.write(self.get(memo[d][0]))
162  return
163 
164  try:
165  f = self.dispatch[t]
166  except KeyError:
167  try:
168  issc = issubclass(t, TypeType)
169  except TypeError: # t is not a class
170  issc = 0
171  if issc:
172  self.save_global(object)
173  return
174 
175  pid = self.inst_persistent_id(object)
176  if pid is not None:
177  self.save_pers(pid)
178  return
179 
180  try:
181  reduce = dispatch_table[t]
182  except KeyError:
183  try:
184  reduce = object.__reduce__
185  except AttributeError:
186  raise PicklingError, \
187  "can't pickle %s object: %s" % (`t.__name__`,
188  `object`)
189  else:
190  tup = reduce()
191  else:
192  tup = reduce(object)
193 
194  if type(tup) is StringType:
195  self.save_global(object, tup)
196  return
197 
198  if type(tup) is not TupleType:
199  raise PicklingError, "Value returned by %s must be a " \
200  "tuple" % reduce
201 
202  l = len(tup)
203 
204  if (l != 2) and (l != 3):
205  raise PicklingError, "tuple returned by %s must contain " \
206  "only two or three elements" % reduce
207 
208  callable = tup[0]
209  arg_tup = tup[1]
210 
211  if l > 2:
212  state = tup[2]
213  else:
214  state = None
215 
216  if type(arg_tup) is not TupleType and arg_tup is not None:
217  raise PicklingError, "Second element of tuple returned " \
218  "by %s must be a tuple" % reduce
219 
220  self.save_reduce(callable, arg_tup, state)
221  memo_len = len(memo)
222  self.write(self.put(memo_len))
223  memo[d] = (memo_len, object)
224  return
225 
226  f(self, object)
def save_dict (   self,
  object 
)

Definition at line 423 of file pickle.py.

References Pickler.bin, Pickler.memo, Pickler.put(), Pickler.save(), Pickler.write, and file_wrapper.write.

424  def save_dict(self, object):
425  d = id(object)
426 
427  write = self.write
428  save = self.save
429  memo = self.memo
430 
431  if self.bin:
432  write(EMPTY_DICT)
433  else:
434  write(MARK + DICT)
435 
436  memo_len = len(memo)
437  self.write(self.put(memo_len))
438  memo[d] = (memo_len, object)
439 
440  using_setitems = (self.bin and (len(object) > 1))
441 
442  if using_setitems:
443  write(MARK)
444 
445  items = object.items()
446  for key, value in items:
447  save(key)
448  save(value)
449 
450  if not using_setitems:
451  write(SETITEM)
452 
453  if using_setitems:
454  write(SETITEMS)
def save_empty_tuple (   self,
  object 
)

Definition at line 389 of file pickle.py.

References Pickler.write, and file_wrapper.write.

390  def save_empty_tuple(self, object):
391  self.write(EMPTY_TUPLE)
def save_float (   self,
  object,
  pack = struct.pack 
)

Definition at line 285 of file pickle.py.

References Pickler.bin, Pickler.write, and file_wrapper.write.

286  def save_float(self, object, pack=struct.pack):
287  if self.bin:
288  self.write(BINFLOAT + pack('>d', object))
289  else:
self.write(FLOAT + `object` + '\n')
def save_global (   self,
  object,
  name = None 
)

Definition at line 502 of file pickle.py.

References reconvert.append, Pickler.memo, Pickler.put(), pickle.whichmodule(), Pickler.write, and file_wrapper.write.

503  def save_global(self, object, name = None):
504  write = self.write
505  memo = self.memo
506 
507  if name is None:
508  name = object.__name__
509 
510  try:
511  module = object.__module__
512  except AttributeError:
513  module = whichmodule(object, name)
514 
515  try:
516  __import__(module)
517  mod = sys.modules[module]
518  klass = getattr(mod, name)
519  except (ImportError, KeyError, AttributeError):
520  raise PicklingError(
521  "Can't pickle %r: it's not found as %s.%s" %
522  (object, module, name))
523  else:
524  if klass is not object:
525  raise PicklingError(
526  "Can't pickle %r: it's not the same object as %s.%s" %
527  (object, module, name))
528 
529  memo_len = len(memo)
530  write(GLOBAL + module + '\n' + name + '\n' +
531  self.put(memo_len))
memo[id(object)] = (memo_len, object)
def save_inst (   self,
  object 
)

Definition at line 459 of file pickle.py.

References Pickler.bin, random.getstate, Pickler.memo, Pickler.put(), Pickler.save(), Pickler.write, and file_wrapper.write.

460  def save_inst(self, object):
461  d = id(object)
462  cls = object.__class__
463 
464  memo = self.memo
465  write = self.write
466  save = self.save
467 
468  if hasattr(object, '__getinitargs__'):
469  args = object.__getinitargs__()
470  len(args) # XXX Assert it's a sequence
471  _keep_alive(args, memo)
472  else:
473  args = ()
474 
475  write(MARK)
476 
477  if self.bin:
478  save(cls)
479 
480  for arg in args:
481  save(arg)
482 
483  memo_len = len(memo)
484  if self.bin:
485  write(OBJ + self.put(memo_len))
486  else:
487  write(INST + cls.__module__ + '\n' + cls.__name__ + '\n' +
488  self.put(memo_len))
489 
490  memo[d] = (memo_len, object)
491 
492  try:
493  getstate = object.__getstate__
494  except AttributeError:
495  stuff = object.__dict__
496  else:
497  stuff = getstate()
498  _keep_alive(stuff, memo)
499  save(stuff)
write(BUILD)
def save_int (   self,
  object 
)

Definition at line 258 of file pickle.py.

References Pickler.bin, pickle.mdumps, Pickler.write, and file_wrapper.write.

259  def save_int(self, object):
260  if self.bin:
261  # If the int is small enough to fit in a signed 4-byte 2's-comp
262  # format, we can store it more efficiently than the general
263  # case.
264  high_bits = object >> 31 # note that Python shift sign-extends
265  if high_bits == 0 or high_bits == -1:
266  # All high bits are copies of bit 2**31, so the value
267  # fits in a 4-byte signed int.
268  i = mdumps(object)[1:]
269  assert len(i) == 4
270  if i[-2:] == '\000\000': # fits in 2-byte unsigned int
271  if i[-3] == '\000': # fits in 1-byte unsigned int
272  self.write(BININT1 + i[0])
273  else:
274  self.write(BININT2 + i[:2])
275  else:
276  self.write(BININT + i)
277  return
278  # Text pickle, or int too big to fit in signed 4-byte format.
self.write(INT + `object` + '\n')
def save_list (   self,
  object 
)

Definition at line 392 of file pickle.py.

References Pickler.bin, Pickler.memo, Pickler.put(), Pickler.save(), Pickler.write, and file_wrapper.write.

393  def save_list(self, object):
394  d = id(object)
395 
396  write = self.write
397  save = self.save
398  memo = self.memo
399 
400  if self.bin:
401  write(EMPTY_LIST)
402  else:
403  write(MARK + LIST)
404 
405  memo_len = len(memo)
406  write(self.put(memo_len))
407  memo[d] = (memo_len, object)
408 
409  using_appends = (self.bin and (len(object) > 1))
410 
411  if using_appends:
412  write(MARK)
413 
414  for element in object:
415  save(element)
416 
417  if not using_appends:
418  write(APPEND)
419 
420  if using_appends:
write(APPENDS)
def save_long (   self,
  object 
)

Definition at line 281 of file pickle.py.

References Pickler.write, and file_wrapper.write.

282  def save_long(self, object):
self.write(LONG + `object` + '\n')
def save_none (   self,
  object 
)

Definition at line 254 of file pickle.py.

References Pickler.write, and file_wrapper.write.

255  def save_none(self, object):
self.write(NONE)
def save_pers (   self,
  pid 
)

Definition at line 233 of file pickle.py.

References Pickler.bin, Pickler.save(), locale.str(), Pickler.write, and file_wrapper.write.

234  def save_pers(self, pid):
235  if not self.bin:
236  self.write(PERSID + str(pid) + '\n')
237  else:
238  self.save(pid, 1)
239  self.write(BINPERSID)
def save_reduce (   self,
  callable,
  arg_tup,
  state = None 
)

Definition at line 240 of file pickle.py.

References Pickler.save(), Pickler.write, and file_wrapper.write.

241  def save_reduce(self, callable, arg_tup, state = None):
242  write = self.write
243  save = self.save
244 
245  save(callable)
246  save(arg_tup)
247  write(REDUCE)
248 
249  if state is not None:
250  save(state)
251  write(BUILD)
def save_string (   self,
  object 
)

Definition at line 292 of file pickle.py.

References Pickler.bin, pickle.mdumps, Pickler.memo, Pickler.put(), Pickler.write, and file_wrapper.write.

293  def save_string(self, object):
294  d = id(object)
295  memo = self.memo
296 
297  if self.bin:
298  l = len(object)
299  s = mdumps(l)[1:]
300  if l < 256:
301  self.write(SHORT_BINSTRING + s[0] + object)
302  else:
303  self.write(BINSTRING + s + object)
304  else:
305  self.write(STRING + `object` + '\n')
306 
307  memo_len = len(memo)
308  self.write(self.put(memo_len))
memo[d] = (memo_len, object)
def save_string (   self,
  object 
)

Definition at line 332 of file pickle.py.

References Pickler.bin, pickle.mdumps, Pickler.memo, Pickler.put(), Pickler.save_string(), Pickler.write, and file_wrapper.write.

333  def save_string(self, object):
334  d = id(object)
335  memo = self.memo
336  unicode = object.isunicode()
337 
338  if self.bin:
339  if unicode:
340  object = object.encode("utf-8")
341  l = len(object)
342  s = mdumps(l)[1:]
343  if l < 256 and not unicode:
344  self.write(SHORT_BINSTRING + s[0] + object)
345  else:
346  if unicode:
347  self.write(BINUNICODE + s + object)
348  else:
349  self.write(BINSTRING + s + object)
350  else:
351  if unicode:
352  object = object.replace("\\", "\\u005c")
353  object = object.replace("\n", "\\u000a")
354  object = object.encode('raw-unicode-escape')
355  self.write(UNICODE + object + '\n')
356  else:
357  self.write(STRING + `object` + '\n')
358 
359  memo_len = len(memo)
360  self.write(self.put(memo_len))
memo[d] = (memo_len, object)
def save_tuple (   self,
  object 
)

Definition at line 363 of file pickle.py.

References Pickler.bin, Pickler.get(), ConfigParser.get(), Message.get, _SpoofOut.get(), _Environ.get(), _TestClass.get(), Pickler.memo, Pickler.put(), Pickler.save(), Pickler.write, and file_wrapper.write.

364  def save_tuple(self, object):
365 
366  write = self.write
367  save = self.save
368  memo = self.memo
369 
370  d = id(object)
371 
372  write(MARK)
373 
374  for element in object:
375  save(element)
376 
377  if len(object) and memo.has_key(d):
378  if self.bin:
379  write(POP_MARK + self.get(memo[d][0]))
380  return
381 
382  write(POP * (len(object) + 1) + self.get(memo[d][0]))
383  return
384 
385  memo_len = len(memo)
386  self.write(TUPLE + self.put(memo_len))
memo[d] = (memo_len, object)
def save_unicode (   self,
  object 
)

Definition at line 311 of file pickle.py.

References Pickler.bin, pickle.mdumps, Pickler.memo, Pickler.put(), Pickler.write, and file_wrapper.write.

312  def save_unicode(self, object):
313  d = id(object)
314  memo = self.memo
315 
316  if self.bin:
317  encoding = object.encode('utf-8')
318  l = len(encoding)
319  s = mdumps(l)[1:]
320  self.write(BINUNICODE + s + encoding)
321  else:
322  object = object.replace("\\", "\\u005c")
323  object = object.replace("\n", "\\u000a")
324  self.write(UNICODE + object.encode('raw-unicode-escape') + '\n')
325 
326  memo_len = len(memo)
327  self.write(self.put(memo_len))
memo[d] = (memo_len, object)

Field Documentation

bin

Definition at line 112 of file pickle.py.

dictionary dispatch = {}
static

Definition at line 252 of file pickle.py.

memo

Definition at line 111 of file pickle.py.

write

Definition at line 110 of file pickle.py.


The documentation for this class was generated from the following file: