]> granicus.if.org Git - python/commitdiff
Added docstrings excerpted from Python Library Reference.
authorRaymond Hettinger <python@rcn.com>
Wed, 15 May 2002 02:56:03 +0000 (02:56 +0000)
committerRaymond Hettinger <python@rcn.com>
Wed, 15 May 2002 02:56:03 +0000 (02:56 +0000)
Closes patch 556161.

Lib/StringIO.py
Lib/fileinput.py
Lib/tabnanny.py
Lib/tokenize.py

index 38b3e368353b77a995e8e10e8443b20178cc290b..b8cba325100bb0047a4855153c95ae37d44209ca 100644 (file)
@@ -37,6 +37,17 @@ except ImportError:
 __all__ = ["StringIO"]
 
 class StringIO:
+    """class StringIO([buffer]) 
+    
+    When a StringIO object is created, it can be initialized to an existing
+    string by passing the string to the constructor. If no string is given,
+    the StringIO will start empty. 
+
+    The StringIO object can accept either Unicode or 8-bit strings, but
+    mixing the two may take some care. If both are used, 8-bit strings that
+    cannot be interpreted as 7-bit ASCII (that use the 8th bit) will cause
+    a UnicodeError to be raised when getvalue() is called. 
+    """
     def __init__(self, buf = ''):
         # Force self.buf to be a string or unicode
         if not isinstance(buf, types.StringTypes):
@@ -52,6 +63,8 @@ class StringIO:
         return iter(self.readline, '')
 
     def close(self):
+        """Free the memory buffer. 
+        """
         if not self.closed:
             self.closed = 1
             del self.buf, self.pos
@@ -165,6 +178,16 @@ class StringIO:
             raise ValueError, "I/O operation on closed file"
 
     def getvalue(self):
+        """
+        Retrieve the entire contents of the "file" at any time before
+        the StringIO object's close() method is called.
+
+        The StringIO object can accept either Unicode or 8-bit strings,
+        but mixing the two may take some care. If both are used, 8-bit
+        strings that cannot be interpreted as 7-bit ASCII (that use the
+        8th bit) will cause a UnicodeError to be raised when getvalue()
+        is called. 
+        """
         if self.buflist:
             self.buf += ''.join(self.buflist)
             self.buflist = []
index 2f17dc8892fb09ed98da13d4a573d766341e73f2..db8ddbde1c38949007220228a415b0fa1fa0364a 100644 (file)
@@ -89,6 +89,13 @@ _state = None
 DEFAULT_BUFSIZE = 8*1024
 
 def input(files=None, inplace=0, backup="", bufsize=0):
+    """input([files[, inplace[, backup]]])
+
+    Create an instance of the FileInput class. The instance will be used
+    as global state for the functions of this module, and is also returned
+    to use during iteration. The parameters to this function will be passed
+    along to the constructor of the FileInput class. 
+    """
     global _state
     if _state and _state._file:
         raise RuntimeError, "input() already active"
@@ -96,6 +103,7 @@ def input(files=None, inplace=0, backup="", bufsize=0):
     return _state
 
 def close():
+    """Close the sequence."""
     global _state
     state = _state
     _state = None
@@ -103,36 +111,77 @@ def close():
         state.close()
 
 def nextfile():
+    """
+    Close the current file so that the next iteration will read the first
+    line from the next file (if any); lines not read from the file will
+    not count towards the cumulative line count. The filename is not
+    changed until after the first line of the next file has been read.
+    Before the first line has been read, this function has no effect;
+    it cannot be used to skip the first file. After the last line of the
+    last file has been read, this function has no effect. 
+    """
     if not _state:
         raise RuntimeError, "no active input()"
     return _state.nextfile()
 
 def filename():
+    """
+    Return the name of the file currently being read.
+    Before the first line has been read, returns None. 
+    """
     if not _state:
         raise RuntimeError, "no active input()"
     return _state.filename()
 
 def lineno():
+    """
+    Return the cumulative line number of the line that has just been read.
+    Before the first line has been read, returns 0. After the last line
+    of the last file has been read, returns the line number of that line. 
+    """
     if not _state:
         raise RuntimeError, "no active input()"
     return _state.lineno()
 
 def filelineno():
+    """
+    Return the line number in the current file. Before the first line
+    has been read, returns 0. After the last line of the last file has
+    been read, returns the line number of that line within the file. 
+    """
     if not _state:
         raise RuntimeError, "no active input()"
     return _state.filelineno()
 
 def isfirstline():
+    """
+    Returns true the line just read is the first line of its file,
+    otherwise returns false. 
+    """
     if not _state:
         raise RuntimeError, "no active input()"
     return _state.isfirstline()
 
 def isstdin():
+    """
+    Returns true if the last line was read from sys.stdin,
+    otherwise returns false. 
+    """
     if not _state:
         raise RuntimeError, "no active input()"
     return _state.isstdin()
 
 class FileInput:
+    """class FileInput([files[, inplace[, backup]]])
+    
+    Class FileInput is the implementation of the module; its methods
+    filename(), lineno(), fileline(), isfirstline(), isstdin(), nextfile()
+    and close() correspond to the functions of the same name in the module.
+    In addition it has a readline() method which returns the next
+    input line, and a __getitem__() method which implements the
+    sequence behavior. The sequence must be accessed in strictly
+    sequential order; random access and readline() cannot be mixed. 
+    """
 
     def __init__(self, files=None, inplace=0, backup="", bufsize=0):
         if type(files) == type(''):
index 25955400bff6f671d687d901236ca963c0429f54..5b10474f8634dc6b7edc715345923617b23938f0 100755 (executable)
@@ -1,6 +1,16 @@
 #! /usr/bin/env python
 
-"""The Tab Nanny despises ambiguous indentation.  She knows no mercy."""
+"""The Tab Nanny despises ambiguous indentation.  She knows no mercy.
+
+tabnanny -- Detection of ambiguous indentation 
+
+For the time being this module is intended to be called as a script.
+However it is possible to import it into an IDE and use the function
+check() described below. 
+
+Warning: The API provided by this module is likely to change in future
+releases; such changes may not be backward compatible. 
+"""
 
 # Released to the public domain, by Tim Peters, 15 April 1998.
 
@@ -48,6 +58,10 @@ def main():
         check(arg)
 
 class NannyNag(Exception):
+    """
+    Raised by tokeneater() if detecting an ambiguous indent.
+    Captured and handled in check(). 
+    """
     def __init__(self, lineno, msg, line):
         self.lineno, self.msg, self.line = lineno, msg, line
     def get_lineno(self):
@@ -58,6 +72,15 @@ class NannyNag(Exception):
         return self.line
 
 def check(file):
+    """check(file_or_dir)
+    
+    If file_or_dir is a directory and not a symbolic link, then recursively
+    descend the directory tree named by file_or_dir, checking all .py files
+    along the way. If file_or_dir is an ordinary Python source file, it is
+    checked for whitespace related problems. The diagnostic messages are
+    written to standard output using the print statement.     
+    """
+    
     if os.path.isdir(file) and not os.path.islink(file):
         if verbose:
             print "%s: listing directory" % `file`
index 27ee1bc6fae204682aa7976bc128eef89660a008..42aafe47239adf7674c7fd71b5cb5de56a080722 100644 (file)
@@ -121,6 +121,18 @@ def printtoken(type, token, (srow, scol), (erow, ecol), line): # for testing
         (srow, scol, erow, ecol, tok_name[type], repr(token))
 
 def tokenize(readline, tokeneater=printtoken):
+    """
+    The tokenize() function accepts two parameters: one representing the
+    input stream, and one providing an output mechanism for tokenize().
+    
+    The first parameter, readline, must be a callable object which provides
+    the same interface as the readline() method of built-in file objects.
+    Each call to the function should return one line of input as a string. 
+
+    The second parameter, tokeneater, must also be a callable object. It is
+    called once for each token, with five arguments, corresponding to the
+    tuples generated by generate_tokens(). 
+    """
     try:
         tokenize_loop(readline, tokeneater)
     except StopTokenizing:
@@ -132,6 +144,19 @@ def tokenize_loop(readline, tokeneater):
         apply(tokeneater, token_info)
 
 def generate_tokens(readline):
+    """
+    The generate_tokens() generator requires one argment, readline, which
+    must be a callable object which provides the same interface as the
+    readline() method of built-in file objects. Each call to the function
+    should return one line of input as a string.
+    
+    The generator produces 5-tuples with these members: the token type; the
+    token string; a 2-tuple (srow, scol) of ints specifying the row and
+    column where the token begins in the source; a 2-tuple (erow, ecol) of
+    ints specifying the row and column where the token ends in the source;
+    and the line on which the token was found. The line passed is the
+    logical line; continuation lines are included. 
+    """
     lnum = parenlev = continued = 0
     namechars, numchars = string.ascii_letters + '_', '0123456789'
     contstr, needcont = '', 0