| 
									
										
										
										
											1999-08-03 17:54:39 +00:00
										 |  |  | #! /usr/bin/env python | 
					
						
							| 
									
										
										
										
											1998-08-28 21:16:28 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											1999-08-03 17:54:39 +00:00
										 |  |  | """Generate a page count report of the PostScript version of the manuals.""" | 
					
						
							| 
									
										
										
										
											1998-08-28 21:16:28 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											1999-08-03 17:54:39 +00:00
										 |  |  | __version__ = '$Revision$' | 
					
						
							| 
									
										
										
										
											1998-08-28 21:16:28 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2002-04-17 03:29:40 +00:00
										 |  |  | import getopt | 
					
						
							|  |  |  | import sys | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											1998-08-28 21:16:28 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											1999-08-03 17:54:39 +00:00
										 |  |  | class PageCounter: | 
					
						
							|  |  |  |     def __init__(self): | 
					
						
							|  |  |  |         self.doclist = [] | 
					
						
							|  |  |  |         self.total = 0 | 
					
						
							|  |  |  |         self.title_width = 0 | 
					
						
							| 
									
										
										
										
											2002-04-17 03:29:40 +00:00
										 |  |  |         self.version = "" | 
					
						
							| 
									
										
										
										
											1998-08-28 21:16:28 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											1999-08-03 17:54:39 +00:00
										 |  |  |     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 | 
					
						
							| 
									
										
										
										
											1998-08-28 21:16:28 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											1999-08-03 17:54:39 +00:00
										 |  |  |     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 | 
					
						
							| 
									
										
										
										
											1999-02-05 20:50:59 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2002-04-17 03:29:40 +00:00
										 |  |  |     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 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											1999-08-03 17:54:39 +00:00
										 |  |  |     def run(self): | 
					
						
							| 
									
										
										
										
											2002-04-17 03:29:40 +00:00
										 |  |  |         self.parse_options() | 
					
						
							|  |  |  |         if self.version: | 
					
						
							|  |  |  |             version = self.version[:3] | 
					
						
							|  |  |  |             self.add_document("whatsnew" + version.replace(".", ""), | 
					
						
							|  |  |  |                               "What's New in Python " + version) | 
					
						
							| 
									
										
										
										
											1999-08-03 17:54:39 +00:00
										 |  |  |         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"), | 
					
						
							| 
									
										
										
										
											2000-04-28 17:05:41 +00:00
										 |  |  |             ("inst", "Installing Python Modules"), | 
					
						
							|  |  |  |             ("dist", "Distributing Python Modules"), | 
					
						
							| 
									
										
										
										
											1999-08-03 17:54:39 +00:00
										 |  |  |             ]: | 
					
						
							|  |  |  |             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 | 
					
						
							| 
									
										
										
										
											2000-04-03 04:19:14 +00:00
										 |  |  | 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 | 
					
						
							| 
									
										
										
										
											2002-04-17 03:29:40 +00:00
										 |  |  | Python reference material, consult the Python Bookstore at: | 
					
						
							| 
									
										
										
										
											2000-04-03 04:19:14 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2005-09-22 19:37:52 +00:00
										 |  |  |     http://wiki.python.org/moin/PythonBooks | 
					
						
							| 
									
										
										
										
											2000-04-03 04:19:14 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2002-04-17 03:29:40 +00:00
										 |  |  | The following manuals are included in this package: | 
					
						
							| 
									
										
										
										
											1999-08-03 17:54:39 +00:00
										 |  |  | """ | 
					
						
							|  |  |  |     SUFFIX = """\ | 
					
						
							| 
									
										
										
										
											1999-02-05 20:50:59 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | If you have any questions, comments, or suggestions regarding these | 
					
						
							| 
									
										
										
										
											2003-07-30 02:55:28 +00:00
										 |  |  | documents, please send them via email to docs@python.org. | 
					
						
							| 
									
										
										
										
											1999-08-03 17:54:39 +00:00
										 |  |  | """ | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 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() | 
					
						
							| 
									
										
										
										
											1999-02-05 20:50:59 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											1999-08-03 17:54:39 +00:00
										 |  |  | if __name__ == "__main__": | 
					
						
							|  |  |  |     main() |