mirror of https://github.com/python/cpython
Relocating file to Lib/lib-old.
This commit is contained in:
parent
46e1a32edf
commit
4f298695be
63
Lib/dump.py
63
Lib/dump.py
|
@ -1,63 +0,0 @@
|
||||||
# Module 'dump'
|
|
||||||
#
|
|
||||||
# Print python code that reconstructs a variable.
|
|
||||||
# This only works in certain cases.
|
|
||||||
#
|
|
||||||
# It works fine for:
|
|
||||||
# - ints and floats (except NaNs and other weird things)
|
|
||||||
# - strings
|
|
||||||
# - compounds and lists, provided it works for all their elements
|
|
||||||
# - imported modules, provided their name is the module name
|
|
||||||
#
|
|
||||||
# It works for top-level dictionaries but not for dictionaries
|
|
||||||
# contained in other objects (could be made to work with some hassle
|
|
||||||
# though).
|
|
||||||
#
|
|
||||||
# It does not work for functions (all sorts), classes, class objects,
|
|
||||||
# windows, files etc.
|
|
||||||
#
|
|
||||||
# Finally, objects referenced by more than one name or contained in more
|
|
||||||
# than one other object lose their sharing property (this is bad for
|
|
||||||
# strings used as exception identifiers, for instance).
|
|
||||||
|
|
||||||
# Dump a whole symbol table
|
|
||||||
#
|
|
||||||
def dumpsymtab(dict):
|
|
||||||
for key in dict.keys():
|
|
||||||
dumpvar(key, dict[key])
|
|
||||||
|
|
||||||
# Dump a single variable
|
|
||||||
#
|
|
||||||
def dumpvar(name, x):
|
|
||||||
import sys
|
|
||||||
t = type(x)
|
|
||||||
if t == type({}):
|
|
||||||
print name, '= {}'
|
|
||||||
for key in x.keys():
|
|
||||||
item = x[key]
|
|
||||||
if not printable(item):
|
|
||||||
print '#',
|
|
||||||
print name, '[', `key`, '] =', `item`
|
|
||||||
elif t in (type(''), type(0), type(0.0), type([]), type(())):
|
|
||||||
if not printable(x):
|
|
||||||
print '#',
|
|
||||||
print name, '=', `x`
|
|
||||||
elif t == type(sys):
|
|
||||||
print 'import', name, '#', x
|
|
||||||
else:
|
|
||||||
print '#', name, '=', x
|
|
||||||
|
|
||||||
# check if a value is printable in a way that can be read back with input()
|
|
||||||
#
|
|
||||||
def printable(x):
|
|
||||||
t = type(x)
|
|
||||||
if t in (type(''), type(0), type(0.0)):
|
|
||||||
return 1
|
|
||||||
if t in (type([]), type(())):
|
|
||||||
for item in x:
|
|
||||||
if not printable(item):
|
|
||||||
return 0
|
|
||||||
return 1
|
|
||||||
if x == {}:
|
|
||||||
return 1
|
|
||||||
return 0
|
|
Loading…
Reference in New Issue