mirror of
				https://github.com/python/cpython.git
				synced 2025-10-31 13:41:24 +00:00 
			
		
		
		
	 bab5aa0039
			
		
	
	
		bab5aa0039
		
	
	
	
	
		
			
			Add a -r option; if given with a release number, the "What's New" document is included with the relevant version number. Update the text of the README distributed with the PostScript files to reflect the changes in the user organizations in the Python community.
		
			
				
	
	
		
			97 lines
		
	
	
	
		
			2.8 KiB
		
	
	
	
		
			Python
		
	
	
		
			Executable file
		
	
	
	
	
			
		
		
	
	
			97 lines
		
	
	
	
		
			2.8 KiB
		
	
	
	
		
			Python
		
	
	
		
			Executable file
		
	
	
	
	
| #! /usr/bin/env python
 | |
| 
 | |
| """Generate a page count report of the PostScript version of the manuals."""
 | |
| 
 | |
| __version__ = '$Revision$'
 | |
| 
 | |
| import getopt
 | |
| import sys
 | |
| 
 | |
| 
 | |
| class PageCounter:
 | |
|     def __init__(self):
 | |
|         self.doclist = []
 | |
|         self.total = 0
 | |
|         self.title_width = 0
 | |
|         self.version = ""
 | |
| 
 | |
|     def add_document(self, prefix, title):
 | |
|         count = count_pages(prefix + ".ps")
 | |
|         self.doclist.append((title, prefix, count))
 | |
|         self.title_width = max(self.title_width, len(title))
 | |
|         self.total = self.total + count
 | |
| 
 | |
|     def dump(self):
 | |
|         fmt = "%%-%ds  (%%s.ps, %%d pages)" % self.title_width
 | |
|         for item in self.doclist:
 | |
|             print fmt % item
 | |
|         print
 | |
|         print "  Total page count:  %d" % self.total
 | |
| 
 | |
|     def parse_options(self):
 | |
|         opts, args = getopt.getopt(sys.argv[1:], "r:", ["release="])
 | |
|         assert not args
 | |
|         for opt, arg in opts:
 | |
|             if opt in ("-r", "--release"):
 | |
|                 self.version = arg
 | |
| 
 | |
|     def run(self):
 | |
|         self.parse_options()
 | |
|         if self.version:
 | |
|             version = self.version[:3]
 | |
|             self.add_document("whatsnew" + version.replace(".", ""),
 | |
|                               "What's New in Python " + version)
 | |
|         for prefix, title in [
 | |
|             ("api", "Python/C API"),
 | |
|             ("ext", "Extending and Embedding the Python Interpreter"),
 | |
|             ("lib", "Python Library Reference"),
 | |
|             ("mac", "Macintosh Module Reference"),
 | |
|             ("ref", "Python Reference Manual"),
 | |
|             ("tut", "Python Tutorial"),
 | |
|             ("doc", "Documenting Python"),
 | |
|             ("inst", "Installing Python Modules"),
 | |
|             ("dist", "Distributing Python Modules"),
 | |
|             ]:
 | |
|             self.add_document(prefix, title)
 | |
|         print self.PREFIX
 | |
|         self.dump()
 | |
|         print self.SUFFIX
 | |
| 
 | |
|     PREFIX = """\
 | |
| This is the PostScript version of the standard Python documentation.
 | |
| If you plan to print this, be aware that some of the documents are
 | |
| long.  It is formatted for printing on two-sided paper; if you do plan
 | |
| to print this, *please* print two-sided if you have a printer capable
 | |
| of it!  To locate published copies of the larger manuals, or other
 | |
| Python reference material, consult the Python Bookstore at:
 | |
| 
 | |
|              http://www.amk.ca/bookstore/
 | |
| 
 | |
| The following manuals are included in this package:
 | |
| """
 | |
|     SUFFIX = """\
 | |
| 
 | |
| 
 | |
| If you have any questions, comments, or suggestions regarding these
 | |
| documents, please send them via email to python-docs@python.org.
 | |
| """
 | |
| 
 | |
| def count_pages(filename):
 | |
|     fp = open(filename)
 | |
|     count = 0
 | |
|     while 1:
 | |
|         lines = fp.readlines(1024*40)
 | |
|         if not lines:
 | |
|             break
 | |
|         for line in lines:
 | |
|             if line[:7] == "%%Page:":
 | |
|                 count = count + 1
 | |
|     fp.close()
 | |
|     return count
 | |
| 
 | |
| 
 | |
| def main():
 | |
|     PageCounter().run()
 | |
| 
 | |
| if __name__ == "__main__":
 | |
|     main()
 |