[Python-checkins] r54831 - sandbox/trunk/pep0/TODO sandbox/trunk/pep0/pep0.py

brett.cannon python-checkins at python.org
Sun Apr 15 04:15:05 CEST 2007


Author: brett.cannon
Date: Sun Apr 15 04:15:01 2007
New Revision: 54831
Modified:
 sandbox/trunk/pep0/TODO
 sandbox/trunk/pep0/pep0.py
Log:
Get the index to output by category.
Modified: sandbox/trunk/pep0/TODO
==============================================================================
--- sandbox/trunk/pep0/TODO	(original)
+++ sandbox/trunk/pep0/TODO	Sun Apr 15 04:15:01 2007
@@ -3,23 +3,15 @@
 
 * Read PEPs as UTF-8.
 
-* Output static text for PEP 0.
- + Author/email list.
- - names
- - emails
- - Column headers.
- * Underline to length of author name or just column header like in
- rest of doc?
-
-* Index by Category.
- + Sort PEPs and output
- + Section info.
+* Author/email list.
+ + names
+ + emails
+ + Column headers.
+ - Underline to length of author name or just column header like in
+ rest of doc?
 
 * Make sure that it is easy to identify which PEP triggered an error.
- + Has all expected fields.
 + Values in fields correct.
- - Type
- - Status
 - All authors declared in authors.py.
 + Formatting correct.
 - Plaintext.
@@ -41,8 +33,6 @@
 - Meta-PEPs are not delineated as such.
 
 + Status field.
- - Not all PEPs use consistent names (e.g., some just say "Standard" instead
- of "Standard Track").
 - Empty PEPs are not specified as such.
 
 * In the index:
@@ -61,5 +51,7 @@
 - Just deal with some being longer than expected?
 
 * Type/Status field.
- + Informational PEPs inconsistenty leave out Status.
+ + Active and Draft status is not listed in index.
+ - Conflicts with Accepted and Deferred initials, respectively.
+ - Worth using other letters?
 
Modified: sandbox/trunk/pep0/pep0.py
==============================================================================
--- sandbox/trunk/pep0/pep0.py	(original)
+++ sandbox/trunk/pep0/pep0.py	Sun Apr 15 04:15:01 2007
@@ -47,7 +47,9 @@
 
 
 type_values = ("Standards Track", "Informational", "Process")
-status_values = ("Accepted", "Rejected", "Withdrawn", "Deferred", "Final")
+# Active and Draft are not listed in the index.
+status_values = ("Accepted", "Rejected", "Withdrawn", "Deferred", "Final",
+ "Active", "Draft")
 
 def consume_headers(directory='.'):
 """Pull out metadata for every PEP in the specified directory and return
@@ -74,6 +76,19 @@
 except Exception:
 print "In", pep_file
 raise
+ if not 'PEP' in pep_info:
+ raise ValueError("PEP at file %s lacks a PEP number" % path)
+ if not 'Author' in pep_info:
+ raise ValueError("PEP %s is missing the Author field" %
+ pep_info['PEP'])
+ if len(pep_info['Author']) < 1:
+ raise ValueError("PEP %s is lacking authors" % pep_info['PEP'])
+ if pep_info['Type'] not in type_values:
+ raise ValueError("%s is an invalid Type value for PEP %s" %
+ (pep_info['Type'], pep_info['PEP']))
+ if pep_info['Status'] not in status_values:
+ raise ValueError("%s is an invalid Status value for PEP %s" %
+ (pep_info['Status'], pep_info['PEP']))
 return pep_info
 
 def parse_metadata(pep_info, line, previous_type=None):
@@ -176,28 +191,28 @@
 empty = []
 dead = []
 for pep in peps:
- # XXX not all meta PEPs are process PEPs.
- if pep['Type'] == 'Process':
+ # Order of 'if' statement important. Key Status values take precedence
+ # over Type value, and vice-versa.
+ if pep['Status'] == 'Draft':
+ open_.append(pep)
+ elif pep['Status'] in ('Rejected', 'Withdrawn', 'Deferred',
+ 'Incomplete'):
+ dead.append(pep)
+ elif pep['Type'] == 'Process':
 meta.append(pep)
 elif pep['Type'] == 'Informational':
 info.append(pep)
 elif pep['Status'] == 'Accepted':
 accepted.append(pep)
- elif pep['Status'] == 'Draft':
- open_.append(pep)
 elif pep['Status'] == 'Final':
 finished.append(pep)
- # XXX empty
- elif pep['Status'] in ('Rejected', 'Withdrawn', 'Deferred',
- 'Incomplete'):
- dead.append(pep)
- return meta, info, accepted, open_, finished, empty, dead
+ return meta, info, accepted, open_, finished, empty, dead
 
 def write_pep(pep, output):
 """Write PEP info to 'output'."""
 type_abbr = pep['Type'][0].upper()
 status = pep['Status']
- if status == 'Draft':
+ if status in ('Draft', 'Active'):
 status_abbr = ' '
 else:
 status_abbr = status[0].upper()
@@ -238,11 +253,45 @@
 print "Index by Category"
 print
 write_column_headers(stdout)
- #XXX meta, info, accepted, open_, done, empty, dead = sort_peps(peps)
- print ' XXX'
+ meta, info, accepted, open_, done, empty, dead = sort_peps(peps)
+ print
+ print " Meta-PEPs (PEPs about PEPs or Processs)"
+ print
+ for pep in meta:
+ write_pep(pep, stdout)
+ print
+ print " Other Informational PEPs"
+ print
+ for pep in info:
+ write_pep(pep, stdout)
+ print
+ print " Accepted PEPs (accepted; may not be implemented yet)"
+ print
+ for pep in accepted:
+ write_pep(pep, stdout)
+ print
+ print " Open PEPs (under consideration)"
+ print
+ for pep in open_:
+ write_pep(pep, stdout)
+ print
+ print " Finished PEPs (done, implemented in code repository)"
+ print
+ for pep in done:
+ write_pep(pep, stdout)
+ print
+ print " Empty PEPs (or containing only abstract)"
+ print
+ for pep in empty:
+ write_pep(pep, stdout)
+ print
+ print " Deferred, Abandoned, Withdrawn, and Rejected PEPs"
+ print
+ for pep in dead:
+ write_pep(pep, stdout)
 print
 print
- print "Numerical Index"
+ print " Numerical Index"
 print
 write_column_headers(stdout)
 prev_pep = 0


More information about the Python-checkins mailing list

AltStyle によって変換されたページ (->オリジナル) /