Movatterモバイル変換


[0]ホーム

URL:


Google Git
Sign in
chromium /external /github.com /python /cpython /refs/tags/v1.0.1 /. /Lib /repr.py
blob: 50ee6c95c79a433608bc09de10c0843a549473a6 [file] [log] [blame]
# Redo the `...` (representation) but with limits on most sizes.
import string
classRepr:
def __init__(self):
self.maxlevel=6
self.maxtuple=6
self.maxlist=6
self.maxdict=4
self.maxstring=30
self.maxlong=40
self.maxother=20
def repr(self, x):
return self.repr1(x, self.maxlevel)
def repr1(self, x, level):
typename=`type(x)`[7:-2]# "<type '......'>"
if' 'in typename:
parts= string.split(typename)
typename= string.joinfields(parts,'_')
try:
f= eval('self.repr_'+ typename)
exceptAttributeError:
s=`x`
if len(s)> self.maxother:
i= max(0,(self.maxother-3)/2)
j= max(0, self.maxother-3-i)
s= s[:i]+'...'+ s[len(s)-j:]
return s
return f(x, level)
def repr_tuple(self, x, level):
n= len(x)
if n==0:return'()'
if level<=0:return'(...)'
s=''
for iin range(min(n, self.maxtuple)):
if s: s= s+', '
s= s+ self.repr1(x[i], level-1)
if n> self.maxtuple: s= s+', ...'
elif n==1: s= s+','
return'('+ s+')'
def repr_list(self, x, level):
n= len(x)
if n==0:return'[]'
if level<=0:return'[...]'
s=''
for iin range(min(n, self.maxlist)):
if s: s= s+', '
s= s+ self.repr1(x[i], level-1)
if n> self.maxlist: s= s+', ...'
return'['+ s+']'
def repr_dictionary(self, x, level):
n= len(x)
if n==0:return'{}'
if level<=0:return'{...}'
s=''
keys= x.keys()
keys.sort()
for iin range(min(n, self.maxdict)):
if s: s= s+', '
key= keys[i]
s= s+ self.repr1(key, level-1)
s= s+': '+ self.repr1(x[key], level-1)
if n> self.maxlist: s= s+', ...'
return'{'+ s+'}'
def repr_string(self, x, level):
s=`x[:self.maxstring]`
if len(s)> self.maxstring:
i= max(0,(self.maxstring-3)/2)
j= max(0, self.maxstring-3-i)
s= s[:i]+'...'+ s[len(s)-j:]
return s
def repr_long_int(self, x, level):
s=`x`# XXX Hope this isn't too slow...
if len(s)> self.maxlong:
i= max(0,(self.maxlong-3)/2)
j= max(0, self.maxlong-3-i)
s= s[:i]+'...'+ s[len(s)-j:]
return s
aRepr=Repr()
repr= aRepr.repr

[8]ページ先頭

©2009-2025 Movatter.jp