mirror of
				https://github.com/python/cpython.git
				synced 2025-11-04 11:49:12 +00:00 
			
		
		
		
	The attached patches update the standard library so that all modules have docstrings beginning with one-line summaries. A new docstring was added to formatter. The docstring for os.py was updated to mention nt, os2, ce in addition to posix, dos, mac.
		
			
				
	
	
		
			95 lines
		
	
	
	
		
			2.5 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			95 lines
		
	
	
	
		
			2.5 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
"""Redo the `...` (representation) but with limits on most sizes."""
 | 
						|
 | 
						|
import string
 | 
						|
 | 
						|
class Repr:
 | 
						|
	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, '_')
 | 
						|
		if hasattr(self, 'repr_' + typename):
 | 
						|
			return getattr(self, 'repr_' + typename)(x, level)
 | 
						|
		else:
 | 
						|
			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
 | 
						|
	def repr_tuple(self, x, level):
 | 
						|
		n = len(x)
 | 
						|
		if n == 0: return '()'
 | 
						|
		if level <= 0: return '(...)'
 | 
						|
		s = ''
 | 
						|
		for i in 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 i in 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 i in 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.maxdict: 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 = `x[:i] + x[len(x)-j:]`
 | 
						|
			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
 | 
						|
	def repr_instance(self, x, level):
 | 
						|
		try:
 | 
						|
			s = `x`
 | 
						|
			# Bugs in x.__repr__() can cause arbitrary
 | 
						|
			# exceptions -- then make up something
 | 
						|
		except:
 | 
						|
			return '<' + x.__class__.__name__ + ' instance at ' + \
 | 
						|
				  hex(id(x))[2:] + '>'
 | 
						|
		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
 | 
						|
 | 
						|
aRepr = Repr()
 | 
						|
repr = aRepr.repr
 |