diff options
Diffstat (limited to 'test/scanners/python/pleac.expected.raydebug')
-rw-r--r-- | test/scanners/python/pleac.expected.raydebug | 11119 |
1 files changed, 0 insertions, 11119 deletions
diff --git a/test/scanners/python/pleac.expected.raydebug b/test/scanners/python/pleac.expected.raydebug deleted file mode 100644 index ec76207..0000000 --- a/test/scanners/python/pleac.expected.raydebug +++ /dev/null @@ -1,11119 +0,0 @@ -comment(# -*- python -*-) -comment(# vim:set ft=python:) - -comment(# @@PLEAC@@_NAME) -comment(# @@SKIP@@ Python) - -comment(# @@PLEAC@@_WEB) -comment(# @@SKIP@@ http://www.python.org) - -comment(# @@PLEAC@@_INTRO) -comment(# @@SKIP@@ The latest version of Python is 2.4 but users of 2.3 and 2.2 (and) -comment(# @@SKIP@@ in some cases earlier versions\) can use the code herein.) -comment(# @@SKIP@@ Users of 2.2 and 2.3 should install or copy code from utils.py ) -comment(# @@SKIP@@ (http://aima.cs.berkeley.edu/python/utils.py\)) -comment(# @@SKIP@@ [the first section provides compatability code with 2.4]) -comment(# @@SKIP@@ Users of 2.2 should install optik (http://optik.sourceforge.com\) ) -comment(# @@SKIP@@ [for optparse and textwrap]) -comment(# @@SKIP@@ Where a 2.3 or 2.4 feature is unable to be replicated, an effort) -comment(# @@SKIP@@ has been made to provide a backward-compatible version in addition) -comment(# @@SKIP@@ to one using modern idioms.) -comment(# @@SKIP@@ Examples which translate the original Perl closely but which are) -comment(# @@SKIP@@ unPythonic are prefixed with a comment stating "DON'T DO THIS".) -comment(# @@SKIP@@ In some cases, it may be useful to know the techniques in these, ) -comment(# @@SKIP@@ though it's a bad solution for the specific problem.) - -comment(# @@PLEAC@@_1.0) -comment(#-----------------------------) -ident(mystr) operator(=) string<delimiter(")char(\\n)delimiter(")> comment(# a newline character) -ident(mystr) operator(=) string<modifier(r)delimiter(")content(\\n)delimiter(")> comment(# two characters, \\ and n) -comment(#-----------------------------) -ident(mystr) operator(=) string<delimiter(")content(Jon 'Maddog' Orwant)delimiter(")> comment(# literal single quote inside double quotes) -ident(mystr) operator(=) string<delimiter(')content(Jon "Maddog" Orwant)delimiter(')> comment(# literal double quote inside single quotes) -comment(#-----------------------------) -ident(mystr) operator(=) string<delimiter(')content(Jon )char(\\')content(Maddog)char(\\')content( Orwant)delimiter(')> comment(# escaped single quote) -ident(mystr) operator(=) string<delimiter(")content(Jon )char(\\")content(Maddog)char(\\")content( Orwant)delimiter(")> comment(# escaped double quote) -comment(#-----------------------------) -ident(mystr) operator(=) string<delimiter(""")content( -)content(This is a multiline string literal)content( -)content(enclosed in triple double quotes.)content( -)delimiter(""")> -ident(mystr) operator(=) string<delimiter(''')content( -)content(And this is a multiline string literal)content( -)content(enclosed in triple single quotes.)content( -)delimiter(''')> -comment(#-----------------------------) - -comment(# @@PLEAC@@_1.1) -comment(#-----------------------------) - -comment(# get a 5-char string, skip 3, then grab 2 8-char strings, then the rest) -comment(# Note that struct.unpack cannot use * for an unknown length.) -comment(# See http://aspn.activestate.com/ASPN/Cookbook/Python/Recipe/65224) -keyword(import) include(struct) -operator(()ident(lead)operator(,) ident(s1)operator(,) ident(s2)operator(\))operator(,) ident(tail) operator(=) ident(struct)operator(.)ident(unpack)operator(()string<delimiter(")content(5s 3x 8s 8s)delimiter(")>operator(,) ident(data)operator([)operator(:)integer(24)operator(])operator(\))operator(,) ident(data)operator([)integer(24)operator(:)operator(]) - -comment(# split at five-char boundaries) -ident(fivers) operator(=) ident(struct)operator(.)ident(unpack)operator(()string<delimiter(")content(5s)delimiter(")> operator(*) operator(()predefined(len)operator(()ident(data)operator(\))operator(//)integer(5)operator(\))operator(,) ident(data)operator(\)) -ident(fivers) operator(=) keyword(print) operator([)ident(x)operator([)ident(i)operator(*)integer(5)operator(:)ident(i)operator(*)integer(5)operator(+)integer(5)operator(]) keyword(for) ident(i) keyword(in) predefined(range)operator(()predefined(len)operator(()ident(x)operator(\))operator(/)integer(5)operator(\))operator(]) - -comment(# chop string into individual characters) -ident(chars) operator(=) predefined(list)operator(()ident(data)operator(\)) -comment(#-----------------------------) -ident(mystr) operator(=) string<delimiter(")content(This is what you have)delimiter(")> -comment(# +012345678901234567890 Indexing forwards (left to right\)) -comment(# 109876543210987654321- Indexing backwards (right to left\)) -comment(# note that 0 means 10 or 20, etc. above) - -ident(first) operator(=) ident(mystr)operator([)integer(0)operator(]) comment(# "T") -ident(start) operator(=) ident(mystr)operator([)integer(5)operator(:)integer(7)operator(]) comment(# "is") -ident(rest) operator(=) ident(mystr)operator([)integer(13)operator(:)operator(]) comment(# "you have") -ident(last) operator(=) ident(mystr)operator([)operator(-)integer(1)operator(]) comment(# "e") -ident(end) operator(=) ident(mystr)operator([)operator(-)integer(4)operator(:)operator(]) comment(# "have") -ident(piece) operator(=) ident(mystr)operator([)operator(-)integer(8)operator(:)operator(-)integer(5)operator(]) comment(# "you") -comment(#-----------------------------) -comment(# Python strings are immutable.) -comment(# In general, you should just do piecemeal reallocation:) -ident(mystr) operator(=) string<delimiter(")content(This is what you have)delimiter(")> -ident(mystr) operator(=) ident(mystr)operator([)operator(:)integer(5)operator(]) operator(+) string<delimiter(")content(wasn't)delimiter(")> operator(+) ident(mystr)operator([)integer(7)operator(:)operator(]) - -comment(# Or replace and reallocate) -ident(mystr) operator(=) string<delimiter(")content(This is what you have)delimiter(")> -ident(mystr) operator(=) ident(mystr)operator(.)ident(replace)operator(()string<delimiter(")content( is )delimiter(")>operator(,) string<delimiter(")content( wasn't )delimiter(")>operator(\)) - -comment(# DON'T DO THIS: In-place modification could be done using character arrays) -keyword(import) include(array) -ident(mystr) operator(=) ident(array)operator(.)ident(array)operator(()string<delimiter(")content(c)delimiter(")>operator(,) string<delimiter(")content(This is what you have)delimiter(")>operator(\)) -ident(mystr)operator([)integer(5)operator(:)integer(7)operator(]) operator(=) ident(array)operator(.)ident(array)operator(()string<delimiter(")content(c)delimiter(")>operator(,) string<delimiter(")content(wasn't)delimiter(")>operator(\)) -comment(# mystr is now array('c', "This wasn't what you have"\)) - -comment(# DON'T DO THIS: It could also be done using MutableString ) -keyword(from) include(UserString) keyword(import) include(MutableString) -ident(mystr) operator(=) ident(MutableString)operator(()string<delimiter(")content(This is what you have)delimiter(")>operator(\)) -ident(mystr)operator([)operator(-)integer(12)operator(:)operator(]) operator(=) string<delimiter(")content(ondrous)delimiter(")> -comment(# mystr is now "This is wondrous") -comment(#-----------------------------) -comment(# you can test simple substrings with "in" (for regex matching see ch.6\):) -keyword(if) ident(txt) keyword(in) ident(mystr)operator([)operator(-)integer(10)operator(:)operator(])operator(:) - keyword(print) string<delimiter(")content('%s' found in last 10 characters)delimiter(")>operator(%)ident(txt) - -comment(# Or use the startswith(\) and endswith(\) string methods:) -keyword(if) ident(mystr)operator(.)ident(startswith)operator(()ident(txt)operator(\))operator(:) - keyword(print) string<delimiter(")content(%s starts with %s.)delimiter(")>operator(%)operator(()ident(mystr)operator(,) ident(txt)operator(\)) -keyword(if) ident(mystr)operator(.)ident(endswith)operator(()ident(txt)operator(\))operator(:) - keyword(print) string<delimiter(")content(%s ends with %s.)delimiter(")>operator(%)operator(()ident(mystr)operator(,) ident(txt)operator(\)) - -comment(#-----------------------------) - -comment(# @@PLEAC@@_1.2) -comment(#-----------------------------) -comment(# Introductory Note: quite a bit of this section is not terribly Pythonic) -comment(# as names must be set before being used. For instance, unless myvar has ) -comment(# been previously defined, these next lines will all raise NameError:) -ident(myvar) operator(=) ident(myvar) keyword(or) ident(some_default) -ident(myvar2) operator(=) ident(myvar) keyword(or) ident(some_default) -ident(myvar) operator(|=) ident(some_default) comment(# bitwise-or, not logical-or - for demo) - -comment(# The standard way of setting a default is often:) -ident(myvar) operator(=) ident(default_value) -keyword(if) ident(some_condition)operator(:) - keyword(pass) comment(# code which may set myvar to something else) - -comment(# if myvar is returned from a function and may be empty/None, then use:) -ident(myvar) operator(=) ident(somefunc)operator(()operator(\)) -keyword(if) keyword(not) ident(myvar)operator(:) - ident(myvar) operator(=) ident(default_value) - -comment(# If you want a default value that can be overridden by the person calling ) -comment(# your code, you can often wrap it in a function with a named parameter:) -keyword(def) method(myfunc)operator(()ident(myvar)operator(=)string<delimiter(")content(a)delimiter(")>operator(\))operator(:) - keyword(return) ident(myvar) operator(+) string<delimiter(")content(b)delimiter(")> -keyword(print) ident(myfunc)operator(()operator(\))operator(,) ident(myfunc)operator(()string<delimiter(")content(c)delimiter(")>operator(\)) -comment(#=> ab cb) - -comment(# Note, though, that this won't work for mutable objects such as lists or) -comment(# dicts that are mutated in the function as the object is only created once ) -comment(# and repeated calls to the same function will return the same object. This) -comment(# can be desired behaviour however - see section 10.3, for instance.) -keyword(def) method(myfunc)operator(()ident(myvar)operator(=)operator([)operator(])operator(\))operator(:) - ident(myvar)operator(.)ident(append)operator(()string<delimiter(")content(x)delimiter(")>operator(\)) - keyword(return) ident(myvar) -keyword(print) ident(myfunc)operator(()operator(\))operator(,) ident(myfunc)operator(()operator(\)) -comment(#=> ['x'] ['x', 'x']) - -comment(# You need to do:) -keyword(def) method(myfunc)operator(()ident(myvar)operator(=)pre_constant(None)operator(\))operator(:) - keyword(if) ident(myvar) keyword(is) pre_constant(None)operator(:) - ident(myvar) operator(=) operator([)operator(]) - ident(myvar)operator(.)ident(append)operator(()string<delimiter(")content(x)delimiter(")>operator(\)) - keyword(return) ident(myvar) -keyword(print) ident(myfunc)operator(()operator(\))operator(,) ident(myfunc)operator(()operator(\)) -comment(#=> ['x'] ['x']) - -comment(#=== Perl Equivalencies start here) -comment(# use b if b is true, otherwise use c) -ident(a) operator(=) ident(b) keyword(or) ident(c) - -comment(# as that is a little tricksy, the following may be preferred:) -keyword(if) ident(b)operator(:) - ident(a) operator(=) ident(b) -keyword(else)operator(:) - ident(a) operator(=) ident(c) - -comment(# set x to y unless x is already true) -keyword(if) keyword(not) ident(x)operator(:) - ident(x) operator(=) ident(y) -comment(#-----------------------------) -comment(# use b if b is defined, else c) -keyword(try)operator(:) - ident(a) operator(=) ident(b) -keyword(except) exception(NameError)operator(:) - ident(a) operator(=) ident(c) -comment(#-----------------------------) -ident(foo) operator(=) ident(bar) keyword(or) string<delimiter(")content(DEFAULT VALUE)delimiter(")> -comment(#-----------------------------) -comment(# To get a user (for both UNIX and Windows\), use:) -keyword(import) include(getpass) -ident(user) operator(=) ident(getpass)operator(.)ident(getuser)operator(()operator(\)) - -comment(# DON'T DO THIS: find the user name on Unix systems ) -keyword(import) include(os) -ident(user) operator(=) ident(os)operator(.)ident(environ)operator(.)ident(get)operator(()string<delimiter(")content(USER)delimiter(")>operator(\)) -keyword(if) ident(user) keyword(is) pre_constant(None)operator(:) - ident(user) operator(=) ident(os)operator(.)ident(environ)operator(.)ident(get)operator(()string<delimiter(")content(LOGNAME)delimiter(")>operator(\)) -comment(#-----------------------------) -keyword(if) keyword(not) ident(starting_point)operator(:) - ident(starting_point) operator(=) string<delimiter(")content(Greenwich)delimiter(")> -comment(#-----------------------------) -keyword(if) keyword(not) ident(a)operator(:) comment(# copy only if empty) - ident(a) operator(=) ident(b) - -keyword(if) ident(b)operator(:) comment(# assign b if nonempty, else c) - ident(a) operator(=) ident(b) -keyword(else)operator(:) - ident(a) operator(=) ident(c) -comment(#-----------------------------) - -comment(# @@PLEAC@@_1.3) -comment(#-----------------------------) -ident(v1)operator(,) ident(v2) operator(=) ident(v2)operator(,) ident(v1) -comment(#-----------------------------) -comment(# DON'T DO THIS:) -ident(temp) operator(=) ident(a) -ident(a) operator(=) ident(b) -ident(b) operator(=) ident(temp) -comment(#-----------------------------) -ident(a) operator(=) string<delimiter(")content(alpha)delimiter(")> -ident(b) operator(=) string<delimiter(")content(omega)delimiter(")> -ident(a)operator(,) ident(b) operator(=) ident(b)operator(,) ident(a) comment(# the first shall be last -- and versa vice ) -comment(#-----------------------------) -ident(alpha)operator(,) ident(beta)operator(,) ident(production) operator(=) string<delimiter(")content(January March August)delimiter(")>operator(.)ident(split)operator(()operator(\)) -ident(alpha)operator(,) ident(beta)operator(,) ident(production) operator(=) ident(beta)operator(,) ident(production)operator(,) ident(alpha) -comment(#-----------------------------) - -comment(# @@PLEAC@@_1.4) -comment(#-----------------------------) -ident(num) operator(=) predefined(ord)operator(()ident(char)operator(\)) -ident(char) operator(=) predefined(chr)operator(()ident(num)operator(\)) -comment(#-----------------------------) -ident(char) operator(=) string<delimiter(")content(%c)delimiter(")> operator(%) ident(num) -keyword(print) string<delimiter(")content(Number %d is character %c)delimiter(")> operator(%) operator(()ident(num)operator(,) ident(num)operator(\)) -keyword(print) string<delimiter(")content(Number %(n\)d is character %(n\)c)delimiter(")> operator(%) operator({)string<delimiter(")content(n)delimiter(")>operator(:) ident(num)operator(}) -keyword(print) string<delimiter(")content(Number %(num\)d is character %(num\)c)delimiter(")> operator(%) predefined(locals)operator(()operator(\)) -comment(#=> Number 101 is character e) -comment(#-----------------------------) -ident(ascii_character_numbers) operator(=) operator([)predefined(ord)operator(()ident(c)operator(\)) keyword(for) ident(c) keyword(in) string<delimiter(")content(sample)delimiter(")>operator(]) -keyword(print) ident(ascii_character_numbers) -comment(#=> [115, 97, 109, 112, 108, 101]) - -ident(word) operator(=) string<delimiter(")delimiter(")>operator(.)ident(join)operator(()operator([)predefined(chr)operator(()ident(n)operator(\)) keyword(for) ident(n) keyword(in) ident(ascii_character_numbers)operator(])operator(\)) -ident(word) operator(=) string<delimiter(")delimiter(")>operator(.)ident(join)operator(()operator([)predefined(chr)operator(()ident(n)operator(\)) keyword(for) ident(n) keyword(in) operator([)integer(115)operator(,) integer(97)operator(,) integer(109)operator(,) integer(112)operator(,) integer(108)operator(,) integer(101)operator(])operator(])operator(\)) -keyword(print) ident(word) -comment(#=> sample) -comment(#-----------------------------) -ident(hal) operator(=) string<delimiter(")content(HAL)delimiter(")> -ident(ibm) operator(=) string<delimiter(")delimiter(")>operator(.)ident(join)operator(()operator([)predefined(chr)operator(()predefined(ord)operator(()ident(c)operator(\))operator(+)integer(1)operator(\)) keyword(for) ident(c) keyword(in) ident(hal)operator(])operator(\)) comment(# add one to each ASCII value) -keyword(print) ident(ibm) -comment(#=> IBM) -comment(#-----------------------------) - -comment(# @@PLEAC@@_1.5) -comment(#-----------------------------) -ident(mylist) operator(=) predefined(list)operator(()ident(mystr)operator(\)) -comment(#-----------------------------) -keyword(for) ident(char) keyword(in) ident(mystr)operator(:) - keyword(pass) comment(# do something with char) -comment(#-----------------------------) -ident(mystr) operator(=) string<delimiter(")content(an apple a day)delimiter(")> -ident(uniq) operator(=) predefined(sorted)operator(()predefined(set)operator(()ident(mystr)operator(\))operator(\)) -keyword(print) string<delimiter(")content(unique chars are: '%s')delimiter(")> operator(%) string<delimiter(")delimiter(")>operator(.)ident(join)operator(()ident(uniq)operator(\)) -comment(#=> unique chars are: ' adelnpy') -comment(#-----------------------------) -ident(ascvals) operator(=) operator([)predefined(ord)operator(()ident(c)operator(\)) keyword(for) ident(c) keyword(in) ident(mystr)operator(]) -keyword(print) string<delimiter(")content(total is %s for '%s'.)delimiter(")>operator(%)operator(()predefined(sum)operator(()ident(ascvals)operator(\))operator(,) ident(mystr)operator(\)) -comment(#=> total is 1248 for 'an apple a day'.) -comment(#-----------------------------) -comment(# sysv checksum) -keyword(def) method(checksum)operator(()ident(myfile)operator(\))operator(:) - ident(values) operator(=) operator([)predefined(ord)operator(()ident(c)operator(\)) keyword(for) ident(line) keyword(in) ident(myfile) keyword(for) ident(c) keyword(in) ident(line)operator(]) - keyword(return) predefined(sum)operator(()ident(values)operator(\))operator(%)operator(()integer(2)operator(**)integer(16)operator(\)) operator(-) integer(1) - -keyword(import) include(fileinput) -keyword(print) ident(checksum)operator(()ident(fileinput)operator(.)ident(input)operator(()operator(\))operator(\)) comment(# data from sys.stdin) - -comment(# Using a function means any iterable can be checksummed:) -keyword(print) ident(checksum)operator(()predefined(open)operator(()string<delimiter(")content(C:/test.txt)delimiter(")>operator(\)) comment(# data from file) -keyword(print) ident(checksum)operator(()string<delimiter(")content(sometext)delimiter(")>operator(\)) comment(# data from string) -comment(#-----------------------------) -comment(#!/usr/bin/python) -comment(# slowcat - emulate a s l o w line printer) -comment(# usage: slowcat [- DELAY] [files ...]) -keyword(import) include(sys)operator(,) include(select) -keyword(import) include(re) -ident(DELAY) operator(=) integer(1) -keyword(if) ident(re)operator(.)ident(match)operator(()string<delimiter(")content(^-)content(\\d)content(+$)delimiter(")>operator(,)ident(sys)operator(.)ident(argv)operator([)integer(1)operator(])operator(\))operator(:) - ident(DELAY)operator(=)operator(-)predefined(int)operator(()ident(sys)operator(.)ident(argv)operator([)integer(1)operator(])operator(\)) - keyword(del) ident(sys)operator(.)ident(argv)operator([)integer(1)operator(]) -keyword(for) ident(ln) keyword(in) ident(fileinput)operator(.)ident(input)operator(()operator(\))operator(:) - keyword(for) ident(c) keyword(in) ident(ln)operator(:) - ident(sys)operator(.)ident(stdout)operator(.)ident(write)operator(()ident(c)operator(\)) - ident(sys)operator(.)ident(stdout)operator(.)ident(flush)operator(()operator(\)) - ident(select)operator(.)ident(select)operator(()operator([)operator(])operator(,)operator([)operator(])operator(,)operator([)operator(])operator(,) float(0.005) operator(*) ident(DELAY)operator(\)) -comment(#-----------------------------) - -comment(# @@PLEAC@@_1.6) -comment(#-----------------------------) -comment(# 2.3+ only) -ident(revchars) operator(=) ident(mystr)operator([)operator(:)operator(:)operator(-)integer(1)operator(]) comment(# extended slice - step is -1) -ident(revwords) operator(=) string<delimiter(")content( )delimiter(")>operator(.)ident(join)operator(()ident(mystr)operator(.)ident(split)operator(()string<delimiter(")content( )delimiter(")>operator(\))operator([)operator(:)operator(:)operator(-)integer(1)operator(])operator(\)) - -comment(# pre 2.3 version:) -ident(mylist) operator(=) predefined(list)operator(()ident(mystr)operator(\)) -ident(mylist)operator(.)ident(reverse)operator(()operator(\)) -ident(revbytes) operator(=) string<delimiter(")delimiter(")>operator(.)ident(join)operator(()ident(mylist)operator(\)) - -ident(mylist) operator(=) ident(mystr)operator(.)ident(split)operator(()operator(\)) -ident(mylist)operator(.)ident(reverse)operator(()operator(\)) -ident(revwords) operator(=) string<delimiter(')content( )delimiter(')>operator(.)ident(join)operator(()ident(mylist)operator(\)) - -comment(# Alternative version using reversed(\):) -ident(revchars) operator(=) string<delimiter(")delimiter(")>operator(.)ident(join)operator(()predefined(reversed)operator(()ident(mystr)operator(\))operator(\)) -ident(revwords) operator(=) string<delimiter(")content( )delimiter(")>operator(.)ident(join)operator(()predefined(reversed)operator(()ident(mystr)operator(.)ident(split)operator(()string<delimiter(")content( )delimiter(")>operator(\))operator(\))operator(\)) - -comment(# reversed(\) makes an iterator, which means that the reversal) -comment(# happens as it is consumed. This means that "print reversed(mystr\)" is not) -comment(# the same as mystr[::-1]. Standard usage is:) -keyword(for) ident(char) keyword(in) predefined(reversed)operator(()ident(mystr)operator(\))operator(:) - keyword(pass) comment(# ... do something) -comment(#-----------------------------) -comment(# 2.3+ only) -ident(word) operator(=) string<delimiter(")content(reviver)delimiter(")> -ident(is_palindrome) operator(=) operator(()ident(word) operator(==) ident(word)operator([)operator(:)operator(:)operator(-)integer(1)operator(])operator(\)) -comment(#-----------------------------) -comment(# Generator version) -keyword(def) method(get_palindromes)operator(()ident(fname)operator(\))operator(:) - keyword(for) ident(line) keyword(in) predefined(open)operator(()ident(fname)operator(\))operator(:) - ident(word) operator(=) ident(line)operator(.)ident(rstrip)operator(()operator(\)) - keyword(if) predefined(len)operator(()ident(word)operator(\)) operator(>) integer(5) keyword(and) ident(word) operator(==) ident(word)operator([)operator(:)operator(:)operator(-)integer(1)operator(])operator(:) - keyword(yield) ident(word) -ident(long_palindromes) operator(=) predefined(list)operator(()ident(get_palindromes)operator(()string<delimiter(")content(/usr/share/dict/words)delimiter(")>operator(\))operator(\)) - -comment(# Simpler old-style version using 2.2 string reversal) -keyword(def) method(rev_string)operator(()ident(mystr)operator(\))operator(:) - ident(mylist) operator(=) predefined(list)operator(()ident(mystr)operator(\)) - ident(mylist)operator(.)ident(reverse)operator(()operator(\)) - keyword(return) string<delimiter(")delimiter(")>operator(.)ident(join)operator(()ident(mylist)operator(\)) - -ident(long_palindromes)operator(=)operator([)operator(]) -keyword(for) ident(line) keyword(in) predefined(open)operator(()string<delimiter(")content(/usr/share/dict/words)delimiter(")>operator(\))operator(:) - ident(word) operator(=) ident(line)operator(.)ident(rstrip)operator(()operator(\)) - keyword(if) predefined(len)operator(()ident(word)operator(\)) operator(>) integer(5) keyword(and) ident(word) operator(==) ident(rev_string)operator(()ident(word)operator(\))operator(:) - ident(long_palindromes)operator(.)ident(append)operator(()ident(word)operator(\)) -keyword(print) ident(long_palindromes) -comment(#-----------------------------) - -comment(# @@PLEAC@@_1.7) -comment(#-----------------------------) -ident(mystr)operator(.)ident(expandtabs)operator(()operator(\)) -ident(mystr)operator(.)ident(expandtabs)operator(()integer(4)operator(\)) -comment(#-----------------------------) - -comment(# @@PLEAC@@_1.8) -comment(#-----------------------------) -ident(text) operator(=) string<delimiter(")content(I am %(rows\)s high and %(cols\)s long)delimiter(")>operator(%)operator({)string<delimiter(")content(rows)delimiter(")>operator(:)integer(24)operator(,) string<delimiter(")content(cols)delimiter(")>operator(:)integer(80)operator(\)) -keyword(print) ident(text) -comment(#=> I am 24 high and 80 long) - -ident(rows)operator(,) ident(cols) operator(=) integer(24)operator(,) integer(80) -ident(text) operator(=) string<delimiter(")content(I am %(rows\)s high and %(cols\)s long)delimiter(")>operator(%)predefined(locals)operator(()operator(\)) -keyword(print) ident(text) -comment(#=> I am 24 high and 80 long) -comment(#-----------------------------) -keyword(import) include(re) -keyword(print) ident(re)operator(.)ident(sub)operator(()string<delimiter(")content(\\d)content(+)delimiter(")>operator(,) keyword(lambda) ident(i)operator(:) predefined(str)operator(()integer(2) operator(*) predefined(int)operator(()ident(i)operator(.)ident(group)operator(()integer(0)operator(\))operator(\))operator(\))operator(,) string<delimiter(")content(I am 17 years old)delimiter(")>operator(\)) -comment(#=> I am 34 years old) -comment(#-----------------------------) -comment(# expand variables in text, but put an error message in) -comment(# if the variable isn't defined) -keyword(class) class(SafeDict)operator(()predefined(dict)operator(\))operator(:) - keyword(def) method(__getitem__)operator(()pre_constant(self)operator(,) ident(key)operator(\))operator(:) - keyword(return) pre_constant(self)operator(.)ident(get)operator(()ident(key)operator(,) string<delimiter(")content([No Variable: %s])delimiter(")>operator(%)ident(key)operator(\)) - -ident(hi) operator(=) string<delimiter(")content(Hello)delimiter(")> -ident(text) operator(=) string<delimiter(")content(%(hi\)s and %(bye\)s!)delimiter(")>operator(%)ident(SafeDict)operator(()predefined(locals)operator(()operator(\))operator(\)) -keyword(print) ident(text) -comment(#=> Hello and [No Variable: bye]!) - -comment(#If you don't need a particular error message, just use the Template class:) -keyword(from) include(string) keyword(import) include(Template) -ident(x) operator(=) ident(Template)operator(()string<delimiter(")content($hi and $bye!)delimiter(")>operator(\)) -ident(hi) operator(=) string<delimiter(")content(Hello)delimiter(")> -keyword(print) ident(x)operator(.)ident(safe_substitute)operator(()predefined(locals)operator(()operator(\))operator(\)) -comment(#=> Hello and $bye!) -keyword(print) ident(x)operator(.)ident(substitute)operator(()predefined(locals)operator(()operator(\))operator(\)) comment(# will throw a KeyError) - -comment(#-----------------------------) - -comment(# @@PLEAC@@_1.9) -comment(#-----------------------------) -ident(mystr) operator(=) string<delimiter(")content(bo peep)delimiter(")>operator(.)ident(upper)operator(()operator(\)) comment(# BO PEEP) -ident(mystr) operator(=) ident(mystr)operator(.)ident(lower)operator(()operator(\)) comment(# bo peep) -ident(mystr) operator(=) ident(mystr)operator(.)ident(capitalize)operator(()operator(\)) comment(# Bo peep) -comment(#-----------------------------) -ident(beast) operator(=) string<delimiter(")content(python)delimiter(")> -ident(caprest) operator(=) ident(beast)operator(.)ident(capitalize)operator(()operator(\))operator(.)ident(swapcase)operator(()operator(\)) comment(# pYTHON) -comment(#-----------------------------) -keyword(print) string<delimiter(")content(thIS is a loNG liNE)delimiter(")>operator(.)ident(title)operator(()operator(\)) -comment(#=> This Is A Long Line) -comment(#-----------------------------) -keyword(if) ident(a)operator(.)ident(upper)operator(()operator(\)) operator(==) ident(b)operator(.)ident(upper)operator(()operator(\))operator(:) - keyword(print) string<delimiter(")content(a and b are the same)delimiter(")> -comment(#-----------------------------) -keyword(import) include(random) -keyword(def) method(randcase_one)operator(()ident(letter)operator(\))operator(:) - keyword(if) ident(random)operator(.)ident(randint)operator(()integer(0)operator(,)integer(5)operator(\))operator(:) comment(# True on 1, 2, 3, 4) - keyword(return) ident(letter)operator(.)ident(lower)operator(()operator(\)) - keyword(else)operator(:) - keyword(return) ident(letter)operator(.)ident(upper)operator(()operator(\)) - -keyword(def) method(randcase)operator(()ident(myfile)operator(\))operator(:) - keyword(for) ident(line) keyword(in) ident(myfile)operator(:) - keyword(yield) string<delimiter(")delimiter(")>operator(.)ident(join)operator(()ident(randcase_one)operator(()ident(letter)operator(\)) keyword(for) ident(letter) keyword(in) ident(line)operator([)operator(:)operator(-)integer(1)operator(])operator(\)) - -keyword(for) ident(line) keyword(in) ident(randcase)operator(()ident(myfile)operator(\))operator(:) - keyword(print) ident(line) -comment(#-----------------------------) - -comment(# @@PLEAC@@_1.10) -comment(#-----------------------------) -string<delimiter(")content(I have %d guanacos.)delimiter(")> operator(%) operator(()ident(n) operator(+) integer(1)operator(\)) -keyword(print) string<delimiter(")content(I have)delimiter(")>operator(,) ident(n)operator(+)integer(1)operator(,) string<delimiter(")content(guanacos.)delimiter(")> -comment(#-----------------------------) -comment(#Python templates disallow in-string calculations (see PEP 292\)) -keyword(from) include(string) keyword(import) include(Template) - -ident(email_template) operator(=) ident(Template)operator(()string<delimiter(""")char(\\ -)content(To: $address)content( -)content(From: Your Bank)content( -)content(CC: $cc_number)content( -)content(Date: $date)content( -)content( -)content(Dear $name,)content( -)content( -)content(Today you bounced check number $checknum to us.)content( -)content(Your account is now closed.)content( -)content( -)content(Sincerely,)content( -)content(the management)content( -)delimiter(""")>operator(\)) - -keyword(import) include(random) -keyword(import) include(datetime) - -ident(person) operator(=) operator({)string<delimiter(")content(address)delimiter(")>operator(:)string<delimiter(")content(Joe@somewhere.com)delimiter(")>operator(,) - string<delimiter(")content(name)delimiter(")>operator(:) string<delimiter(")content(Joe)delimiter(")>operator(,) - string<delimiter(")content(cc_number)delimiter(")> operator(:) integer(1234567890)operator(,) - string<delimiter(")content(checknum)delimiter(")> operator(:) integer(500)operator(+)ident(random)operator(.)ident(randint)operator(()integer(0)operator(,)integer(99)operator(\))operator(}) - -keyword(print) ident(email_template)operator(.)ident(substitute)operator(()ident(person)operator(,) ident(date)operator(=)ident(datetime)operator(.)ident(date)operator(.)ident(today)operator(()operator(\))operator(\)) -comment(#-----------------------------) - -comment(# @@PLEAC@@_1.11) -comment(#-----------------------------) -comment(# indenting here documents) -comment(#) -comment(# in python multiline strings can be used as here documents) -ident(var) operator(=) string<delimiter(""")content( -)content( your text)content( -)content( goes here)content( -)content( )delimiter(""")> - -comment(# using regular expressions) -keyword(import) include(re) -ident(re_leading_blanks) operator(=) ident(re)operator(.)ident(compile)operator(()string<delimiter(")content(^)content(\\s)content(+)delimiter(")>operator(,)ident(re)operator(.)ident(MULTILINE)operator(\)) -ident(var1) operator(=) ident(re_leading_blanks)operator(.)ident(sub)operator(()string<delimiter(")delimiter(")>operator(,)ident(var)operator(\))operator([)operator(:)operator(-)integer(1)operator(]) - -comment(# using string methods ) -comment(# split into lines, use every line except first and last, left strip and rejoin.) -ident(var2) operator(=) string<delimiter(")char(\\n)delimiter(")>operator(.)ident(join)operator(()operator([)ident(line)operator(.)ident(lstrip)operator(()operator(\)) keyword(for) ident(line) keyword(in) ident(var)operator(.)ident(split)operator(()string<delimiter(")char(\\n)delimiter(")>operator(\))operator([)integer(1)operator(:)operator(-)integer(1)operator(])operator(])operator(\)) - -ident(poem) operator(=) string<delimiter(""")content( -)content( Here's your poem:)content( -)content( Now far ahead the Road has gone,)content( -)content( And I must follow, if I can,)content( -)content( Pursuing it with eager feet,)content( -)content( Until it joins some larger way)content( -)content( Where many paths and errand meet.)content( -)content( And whither then? I cannot say.)content( -)content( --Bilbo in /usr/src/perl/pp_ctl.c )content( -)content( )delimiter(""")> - -keyword(import) include(textwrap) -keyword(print) ident(textwrap)operator(.)ident(dedent)operator(()ident(poem)operator(\))operator([)integer(1)operator(:)operator(-)integer(1)operator(]) -comment(#-----------------------------) - - -comment(# @@PLEAC@@_1.12) -comment(#-----------------------------) -keyword(from) include(textwrap) keyword(import) include(wrap) -ident(output) operator(=) ident(wrap)operator(()ident(para)operator(,) - ident(initial_indent)operator(=)ident(leadtab) - ident(subsequent_indent)operator(=)ident(nexttab)operator(\)) -comment(#-----------------------------) -comment(#!/usr/bin/env python) -comment(# wrapdemo - show how textwrap works) - -ident(txt) operator(=) string<delimiter(""")char(\\ -)content(Folding and splicing is the work of an editor,)content( -)content(not a mere collection of silicon)content( -)content(and)content( -)content(mobile electrons!)content( -)delimiter(""")> - -keyword(from) include(textwrap) keyword(import) include(TextWrapper) - -ident(wrapper) operator(=) ident(TextWrapper)operator(()ident(width)operator(=)integer(20)operator(,) - ident(initial_indent)operator(=)string<delimiter(")content( )delimiter(")>operator(*)integer(4)operator(,) - ident(subsequent_indent)operator(=)string<delimiter(")content( )delimiter(")>operator(*)integer(2)operator(\)) - -keyword(print) string<delimiter(")content(0123456789)delimiter(")> operator(*) integer(2) -keyword(print) ident(wrapper)operator(.)ident(fill)operator(()ident(txt)operator(\)) - -comment(#-----------------------------) -docstring<delimiter(""")content(Expected result:)content( -)content( -)content(01234567890123456789)content( -)content( Folding and)content( -)content( splicing is the)content( -)content( work of an editor,)content( -)content( not a mere)content( -)content( collection of)content( -)content( silicon and mobile)content( -)content( electrons!)content( -)delimiter(""")> - -comment(#-----------------------------) -comment(# merge multiple lines into one, then wrap one long line) - -keyword(from) include(textwrap) keyword(import) include(fill) -keyword(import) include(fileinput) - -keyword(print) ident(fill)operator(()string<delimiter(")delimiter(")>operator(.)ident(join)operator(()ident(fileinput)operator(.)ident(input)operator(()operator(\))operator(\))operator(\)) - -comment(#-----------------------------) -comment(# Term::ReadKey::GetTerminalSize(\) isn't in the Perl standard library. ) -comment(# It isn't in the Python standard library either. Michael Hudson's ) -comment(# recipe from python-list #530228 is shown here.) -comment(# (http://aspn.activestate.com/ASPN/Mail/Message/python-list/530228\)) -comment(# Be aware that this will work on Unix but not on Windows.) - -keyword(from) include(termwrap) keyword(import) include(wrap) -keyword(import) include(struct)operator(,) include(fcntl) -keyword(def) method(getheightwidth)operator(()operator(\))operator(:) - ident(height)operator(,) ident(width) operator(=) ident(struct)operator(.)ident(unpack)operator(() - string<delimiter(")content(hhhh)delimiter(")>operator(,) ident(fcntl)operator(.)ident(ioctl)operator(()integer(0)operator(,) ident(TERMIOS)operator(.)ident(TIOCGWINSZ) operator(,)string<delimiter(")char(\\000)delimiter(")>operator(*)integer(8)operator(\))operator(\))operator([)integer(0)operator(:)integer(2)operator(]) - keyword(return) ident(height)operator(,) ident(width) - -comment(# PERL <>, $/, $\\ emulation) -keyword(import) include(fileinput) -keyword(import) include(re) - -ident(_)operator(,) ident(width) operator(=) ident(getheightwidth)operator(()operator(\)) -keyword(for) ident(para) keyword(in) ident(re)operator(.)ident(split)operator(()string<modifier(r)delimiter(")content(\\n)content({2,})delimiter(")>operator(,) string<delimiter(")delimiter(")>operator(.)ident(join)operator(()ident(fileinput)operator(.)ident(input)operator(()operator(\))operator(\))operator(\))operator(:) - keyword(print) ident(fill)operator(()ident(para)operator(,) ident(width)operator(\)) - - -comment(# @@PLEAC@@_1.13) -comment(#-----------------------------) -ident(mystr) operator(=) string<delimiter(''')content(Mom said, "Don't do that.")delimiter(''')> comment(#") -ident(re)operator(.)ident(sub)operator(()string<delimiter(")content([')char(\\")content(])delimiter(")>operator(,) keyword(lambda) ident(i)operator(:) string<delimiter(")char(\\\\)delimiter(")> operator(+) ident(i)operator(.)ident(group)operator(()integer(0)operator(\))operator(,) ident(mystr)operator(\)) -ident(re)operator(.)ident(sub)operator(()string<delimiter(")content([A-Z])delimiter(")>operator(,) keyword(lambda) ident(i)operator(:) string<delimiter(")char(\\\\)delimiter(")> operator(+) ident(i)operator(.)ident(group)operator(()integer(0)operator(\))operator(,) ident(mystr)operator(\)) -ident(re)operator(.)ident(sub)operator(()string<delimiter(")content(\\W)delimiter(")>operator(,) keyword(lambda) ident(i)operator(:) string<delimiter(")char(\\\\)delimiter(")> operator(+) ident(i)operator(.)ident(group)operator(()integer(0)operator(\))operator(,) string<delimiter(")content(is a test!)delimiter(")>operator(\)) comment(# no function like quotemeta?) - - -comment(# @@PLEAC@@_1.14) -comment(#-----------------------------) -ident(mystr) operator(=) ident(mystr)operator(.)ident(lstrip)operator(()operator(\)) comment(# left) -ident(mystr) operator(=) ident(mystr)operator(.)ident(rstrip)operator(()operator(\)) comment(# right) -ident(mystr) operator(=) ident(mystr)operator(.)ident(strip)operator(()operator(\)) comment(# both ends) - - -comment(# @@PLEAC@@_1.15) -comment(#-----------------------------) -keyword(import) include(csv) -keyword(def) method(parse_csv)operator(()ident(line)operator(\))operator(:) - ident(reader) operator(=) ident(csv)operator(.)ident(reader)operator(()operator([)ident(line)operator(])operator(,) ident(escapechar)operator(=)string<delimiter(')char(\\\\)delimiter(')>operator(\)) - keyword(return) ident(reader)operator(.)ident(next)operator(()operator(\)) - -ident(line) operator(=) string<delimiter(''')content(XYZZY,"","O'Reilly, Inc","Wall, Larry","a )char(\\\\)content("glug)char(\\\\)content(" bit,",5,"Error, Core Dumped,",)delimiter(''')> comment(#") - -ident(fields) operator(=) ident(parse_csv)operator(()ident(line)operator(\)) - -keyword(for) ident(i)operator(,) ident(field) keyword(in) predefined(enumerate)operator(()ident(fields)operator(\))operator(:) - keyword(print) string<delimiter(")content(%d : %s)delimiter(")> operator(%) operator(()ident(i)operator(,) ident(field)operator(\)) - -comment(# pre-2.3 version of parse_csv) -keyword(import) include(re) -keyword(def) method(parse_csv)operator(()ident(text)operator(\))operator(:) - ident(pattern) operator(=) ident(re)operator(.)ident(compile)operator(()string<delimiter(''')content("([^")char(\\\\)content(\\])content(*(?:)char(\\\\)content(\\.)content([^")char(\\\\)content(\\])content(*\)*\)",?|([^,]+\),?|,)delimiter(''')>operator(\)) - ident(mylist) operator(=) operator([)string<delimiter(")delimiter(")>operator(.)ident(join)operator(()ident(elem)operator(\)) - keyword(for) ident(elem) keyword(in) ident(re)operator(.)ident(findall)operator(()ident(pattern)operator(,) ident(text)operator(\))operator(]) - keyword(if) ident(text)operator([)operator(-)integer(1)operator(]) operator(==) string<delimiter(")content(,)delimiter(")>operator(:) - ident(mylist) operator(+=) operator([)string<delimiter(')delimiter(')>operator(]) - keyword(return) ident(mylist) - -comment(# cvs.reader is meant to work for many lines, something like:) -comment(# (NB: in Python default, quotechar is *not* escaped by backslash,) -comment(# but doubled instead. That's what Excel does.\)) -keyword(for) ident(fields) keyword(in) ident(cvs)operator(.)ident(reader)operator(()ident(lines)operator(,) ident(dialect)operator(=)string<delimiter(")content(some)delimiter(")>operator(\))operator(:) - keyword(for) ident(num)operator(,) ident(field) keyword(in) predefined(enumerate)operator(()ident(fields)operator(\))operator(:) - keyword(print) ident(num)operator(,) string<delimiter(")content(:)delimiter(")>operator(,) ident(field) -comment(#-----------------------------) - -comment(# @@PLEAC@@_1.16) -comment(#-----------------------------) -keyword(def) method(soundex)operator(()ident(name)operator(,) ident(len)operator(=)integer(4)operator(\))operator(:) - docstring<delimiter(""")content( soundex module conforming to Knuth's algorithm)content( -)content( implementation 2000-12-24 by Gregory Jorgensen)content( -)content( public domain)content( -)content( )delimiter(""")> - - comment(# digits holds the soundex values for the alphabet) - ident(digits) operator(=) string<delimiter(')content(01230120022455012623010202)delimiter(')> - ident(sndx) operator(=) string<delimiter(')delimiter(')> - ident(fc) operator(=) string<delimiter(')delimiter(')> - - comment(# translate alpha chars in name to soundex digits) - keyword(for) ident(c) keyword(in) ident(name)operator(.)ident(upper)operator(()operator(\))operator(:) - keyword(if) ident(c)operator(.)ident(isalpha)operator(()operator(\))operator(:) - keyword(if) keyword(not) ident(fc)operator(:) - ident(fc) operator(=) ident(c) comment(# remember first letter) - ident(d) operator(=) ident(digits)operator([)predefined(ord)operator(()ident(c)operator(\))operator(-)predefined(ord)operator(()string<delimiter(')content(A)delimiter(')>operator(\))operator(]) - comment(# duplicate consecutive soundex digits are skipped) - keyword(if) keyword(not) ident(sndx) keyword(or) operator(()ident(d) operator(!=) ident(sndx)operator([)operator(-)integer(1)operator(])operator(\))operator(:) - ident(sndx) operator(+=) ident(d) - - comment(# replace first digit with first alpha character) - ident(sndx) operator(=) ident(fc) operator(+) ident(sndx)operator([)integer(1)operator(:)operator(]) - - comment(# remove all 0s from the soundex code) - ident(sndx) operator(=) ident(sndx)operator(.)ident(replace)operator(()string<delimiter(')content(0)delimiter(')>operator(,)string<delimiter(')delimiter(')>operator(\)) - - comment(# return soundex code padded to len characters) - keyword(return) operator(()ident(sndx) operator(+) operator(()predefined(len) operator(*) string<delimiter(')content(0)delimiter(')>operator(\))operator(\))operator([)operator(:)predefined(len)operator(]) - -ident(user) operator(=) predefined(raw_input)operator(()string<delimiter(")content(Lookup user: )delimiter(")>operator(\)) -keyword(if) ident(user) operator(==) string<delimiter(")delimiter(")>operator(:) - keyword(raise) exception(SystemExit) - -ident(name_code) operator(=) ident(soundex)operator(()ident(user)operator(\)) -keyword(for) ident(line) keyword(in) predefined(open)operator(()string<delimiter(")content(/etc/passwd)delimiter(")>operator(\))operator(:) - ident(line) operator(=) ident(line)operator(.)ident(split)operator(()string<delimiter(")content(:)delimiter(")>operator(\)) - keyword(for) ident(piece) keyword(in) ident(line)operator([)integer(4)operator(])operator(.)ident(split)operator(()operator(\))operator(:) - keyword(if) ident(name_code) operator(==) ident(soundex)operator(()ident(piece)operator(\))operator(:) - keyword(print) string<delimiter(")content(%s: %s)char(\\n)delimiter(")> operator(%) ident(line)operator([)integer(0)operator(])operator(,) ident(line)operator([)integer(4)operator(])operator(\)) -comment(#-----------------------------) - -comment(# @@PLEAC@@_1.17) -comment(#-----------------------------) -keyword(import) include(sys)operator(,) include(fileinput)operator(,) include(re) - -ident(data) operator(=) string<delimiter(""")char(\\ -)content(analysed => analyzed)content( -)content(built-in => builtin)content( -)content(chastized => chastised)content( -)content(commandline => command-line)content( -)content(de-allocate => deallocate)content( -)content(dropin => drop-in)content( -)content(hardcode => hard-code)content( -)content(meta-data => metadata)content( -)content(multicharacter => multi-character)content( -)content(multiway => multi-way)content( -)content(non-empty => nonempty)content( -)content(non-profit => nonprofit)content( -)content(non-trappable => nontrappable)content( -)content(pre-define => predefine)content( -)content(preextend => pre-extend)content( -)content(re-compiling => recompiling)content( -)content(reenter => re-enter)content( -)content(turnkey => turn-key)content( -)delimiter(""")> -ident(mydict) operator(=) operator({)operator(}) -keyword(for) ident(line) keyword(in) ident(data)operator(.)ident(split)operator(()string<delimiter(")char(\\n)delimiter(")>operator(\))operator(:) - keyword(if) keyword(not) ident(line)operator(.)ident(strip)operator(()operator(\))operator(:) - keyword(continue) - ident(k)operator(,) ident(v) operator(=) operator([)ident(word)operator(.)ident(strip)operator(()operator(\)) keyword(for) ident(word) keyword(in) ident(line)operator(.)ident(split)operator(()string<delimiter(")content(=>)delimiter(")>operator(\))operator(]) - ident(mydict)operator([)ident(k)operator(]) operator(=) ident(v) -ident(pattern_text) operator(=) string<delimiter(")content(()delimiter(")> operator(+) string<delimiter(")content(|)delimiter(")>operator(.)ident(join)operator(()operator([)ident(re)operator(.)ident(escape)operator(()ident(word)operator(\)) keyword(for) ident(word) keyword(in) ident(mydict)operator(.)ident(keys)operator(()operator(\))operator(])operator(\)) operator(+) string<delimiter(")content(\))delimiter(")> -ident(pattern) operator(=) ident(re)operator(.)ident(compile)operator(()ident(pattern_text)operator(\)) - -ident(args) operator(=) ident(sys)operator(.)ident(argv)operator([)integer(1)operator(:)operator(]) -ident(verbose) operator(=) integer(0) -keyword(if) ident(args) keyword(and) ident(args)operator([)integer(0)operator(]) operator(==) string<delimiter(")content(-v)delimiter(")>operator(:) - ident(verbose) operator(=) integer(1) - ident(args) operator(=) ident(args)operator([)integer(1)operator(:)operator(]) - -keyword(if) keyword(not) ident(args)operator(:) - ident(sys)operator(.)ident(stderr)operator(.)ident(write)operator(()string<delimiter(")content(%s: Reading from stdin)char(\\n)delimiter(")> operator(%) ident(sys)operator(.)ident(argv)operator([)integer(0)operator(])operator(\)) - -keyword(for) ident(line) keyword(in) ident(fileinput)operator(.)ident(input)operator(()ident(args)operator(,) ident(inplace)operator(=)integer(1)operator(,) ident(backup)operator(=)string<delimiter(")content(.orig)delimiter(")>operator(\))operator(:) - ident(output) operator(=) string<delimiter(")delimiter(")> - ident(pos) operator(=) integer(0) - keyword(while) pre_constant(True)operator(:) - ident(match) operator(=) ident(pattern)operator(.)ident(search)operator(()ident(line)operator(,) ident(pos)operator(\)) - keyword(if) keyword(not) ident(match)operator(:) - ident(output) operator(+=) ident(line)operator([)ident(pos)operator(:)operator(]) - keyword(break) - ident(output) operator(+=) ident(line)operator([)ident(pos)operator(:)ident(match)operator(.)ident(start)operator(()integer(0)operator(\))operator(]) operator(+) ident(mydict)operator([)ident(match)operator(.)ident(group)operator(()integer(1)operator(\))operator(]) - ident(pos) operator(=) ident(match)operator(.)ident(end)operator(()integer(0)operator(\)) - ident(sys)operator(.)ident(stdout)operator(.)ident(write)operator(()ident(output)operator(\)) -comment(#-----------------------------) - -comment(# @@PLEAC@@_1.18) -comment(#-----------------------------) -comment(#!/usr/bin/python) -comment(# psgrep - print selected lines of ps output by) -comment(# compiling user queries into code.) -comment(#) -comment(# examples :) -comment(# psgrep "uid<10") -keyword(import) include(sys)operator(,) include(os)operator(,) include(re) - -keyword(class) class(PsLineMatch)operator(:) - comment(# each field from the PS header) - ident(fieldnames) operator(=) operator(()string<delimiter(")content(flags)delimiter(")>operator(,)string<delimiter(")content(uid)delimiter(")>operator(,)string<delimiter(")content(pid)delimiter(")>operator(,)string<delimiter(")content(ppid)delimiter(")>operator(,)string<delimiter(")content(pri)delimiter(")>operator(,)string<delimiter(")content(nice)delimiter(")>operator(,)string<delimiter(")content(size)delimiter(")>operator(,) \ - string<delimiter(")content(rss)delimiter(")>operator(,)string<delimiter(")content(wchan)delimiter(")>operator(,)string<delimiter(")content(stat)delimiter(")>operator(,)string<delimiter(")content(tty)delimiter(")>operator(,)string<delimiter(")content(time)delimiter(")>operator(,)string<delimiter(")content(command)delimiter(")>operator(\)) - ident(numeric_fields) operator(=) operator(()string<delimiter(")content(flags)delimiter(")>operator(,)string<delimiter(")content(uid)delimiter(")>operator(,)string<delimiter(")content(pid)delimiter(")>operator(,)string<delimiter(")content(ppid)delimiter(")>operator(,)string<delimiter(")content(pri)delimiter(")>operator(,)string<delimiter(")content(nice)delimiter(")>operator(,)string<delimiter(")content(size)delimiter(")>operator(,)string<delimiter(")content(rss)delimiter(")>operator(\)) - keyword(def) method(__init__)operator(()pre_constant(self)operator(\))operator(:) - pre_constant(self)operator(.)ident(_fields) operator(=) operator({)operator(}) - - keyword(def) method(new_line)operator(()pre_constant(self)operator(,) ident(ln)operator(\))operator(:) - pre_constant(self)operator(.)ident(_ln) operator(=) ident(ln)operator(.)ident(rstrip)operator(()operator(\)) - comment(# ps header for option "wwaxl" (different than in the perl code\)) - docstring<delimiter(""")content( -)content( F UID PID PPID PRI NI VSZ RSS WCHAN STAT TTY TIME COMMAND")content( -)content( 004 0 1 0 15 0 448 236 schedu S ? 0:07 init")content( -)content( . . . . . . . . . . . . .)content( -)content( )delimiter(""")> - comment(# because only the last entry might contain blanks, splitting) - comment(# is safe) - ident(data) operator(=) pre_constant(self)operator(.)ident(_ln)operator(.)ident(split)operator(()pre_constant(None)operator(,)integer(12)operator(\)) - keyword(for) ident(fn)operator(,) ident(elem) keyword(in) predefined(zip)operator(()pre_constant(self)operator(.)ident(fieldnames)operator(,) ident(data)operator(\))operator(:) - keyword(if) ident(fn) keyword(in) pre_constant(self)operator(.)ident(numeric_fields)operator(:) comment(# make numbers integer ) - pre_constant(self)operator(.)ident(_fields)operator([)ident(fn)operator(]) operator(=) predefined(int)operator(()ident(elem)operator(\)) - keyword(else)operator(:) - pre_constant(self)operator(.)ident(_fields)operator([)ident(fn)operator(]) operator(=) ident(elem) - - keyword(def) method(set_query)operator(()pre_constant(self)operator(,) ident(args)operator(\))operator(:) - comment(# assume args: "uid==500", "command ~ ^wm") - ident(conds)operator(=)operator([)operator(]) - ident(m) operator(=) ident(re)operator(.)ident(compile)operator(()string<delimiter(")content(()content(\\w)content(+\)([=<>]+\)(.+\))delimiter(")>operator(\)) - keyword(for) ident(a) keyword(in) ident(args)operator(:) - keyword(try)operator(:) - operator(()ident(field)operator(,)ident(op)operator(,)ident(val)operator(\)) operator(=) ident(m)operator(.)ident(match)operator(()ident(a)operator(\))operator(.)ident(groups)operator(()operator(\)) - keyword(except)operator(:) - keyword(print) string<delimiter(")content(can't understand query )char(\\")content(%s)char(\\")delimiter(")> operator(%) operator(()ident(a)operator(\)) - keyword(raise) exception(SystemExit) - keyword(if) ident(field) keyword(in) pre_constant(self)operator(.)ident(numeric_fields)operator(:) - ident(conds)operator(.)ident(append)operator(()ident(a)operator(\)) - keyword(else)operator(:) - ident(conds)operator(.)ident(append)operator(()string<delimiter(")content(%s%s'%s')delimiter(")>operator(,)operator(()ident(field)operator(,)ident(op)operator(,)ident(val)operator(\))operator(\)) - pre_constant(self)operator(.)ident(_desirable) operator(=) predefined(compile)operator(()string<delimiter(")content((()delimiter(")>operator(+)string<delimiter(")content(\)and()delimiter(")>operator(.)ident(join)operator(()ident(conds)operator(\))operator(+)string<delimiter(")content(\)\))delimiter(")>operator(,) string<delimiter(")content(<string>)delimiter(")>operator(,)string<delimiter(")content(eval)delimiter(")>operator(\)) - - keyword(def) method(is_desirable)operator(()pre_constant(self)operator(\))operator(:) - keyword(return) predefined(eval)operator(()pre_constant(self)operator(.)ident(_desirable)operator(,) operator({)operator(})operator(,) pre_constant(self)operator(.)ident(_fields)operator(\)) - - keyword(def) method(__str__)operator(()pre_constant(self)operator(\))operator(:) - comment(# to allow "print".) - keyword(return) pre_constant(self)operator(.)ident(_ln) - -keyword(if) predefined(len)operator(()ident(sys)operator(.)ident(argv)operator(\))operator(<=)integer(1)operator(:) - keyword(print) string<delimiter(""")content(usage: %s criterion ...)content( -)content( Each criterion is a Perl expression involving: )content( -)content( %s)content( -)content( All criteria must be met for a line to be printed.)delimiter(""")> \ - operator(%) operator(()ident(sys)operator(.)ident(argv)operator([)integer(0)operator(])operator(,) string<delimiter(")content( )delimiter(")>operator(.)ident(join)operator(()ident(PsLineMatch)operator(()operator(\))operator(.)ident(fieldnames)operator(\))operator(\)) - keyword(raise) exception(SystemExit) - -ident(psln) operator(=) ident(PsLineMatch)operator(()operator(\)) -ident(psln)operator(.)ident(set_query)operator(()ident(sys)operator(.)ident(argv)operator([)integer(1)operator(:)operator(])operator(\)) -ident(p) operator(=) ident(os)operator(.)ident(popen)operator(()string<delimiter(")content(ps wwaxl)delimiter(")>operator(\)) -keyword(print) ident(p)operator(.)ident(readline)operator(()operator(\))operator([)operator(:)operator(-)integer(1)operator(]) comment(# emit header line) -keyword(for) ident(ln) keyword(in) ident(p)operator(.)ident(readlines)operator(()operator(\))operator(:) - ident(psln)operator(.)ident(new_line)operator(()ident(ln)operator(\)) - keyword(if) ident(psln)operator(.)ident(is_desirable)operator(()operator(\))operator(:) - keyword(print) ident(psln) -ident(p)operator(.)ident(close)operator(()operator(\)) - -comment(# alternatively one could consider every argument being a string and) -comment(# support wildcards: "uid==500" "command~^wm" by means of re, but this) -comment(# does not show dynamic python code generation, although re.compile) -comment(# also precompiles.) -comment(#-----------------------------) - - -comment(# @@PLEAC@@_2.1) -comment(#-----------------------------) -comment(# The standard way of validating numbers is to convert them and catch) -comment(# an exception on failure) - -keyword(try)operator(:) - ident(myfloat) operator(=) predefined(float)operator(()ident(mystr)operator(\)) - keyword(print) string<delimiter(")content(is a decimal number)delimiter(")> -keyword(except) exception(TypeError)operator(:) - keyword(print) string<delimiter(")content(is not a decimal number)delimiter(")> - -keyword(try)operator(:) - ident(myint) operator(=) predefined(int)operator(()ident(mystr)operator(\)) - keyword(print) string<delimiter(")content(is an integer)delimiter(")> -keyword(except) exception(TypeError)operator(:) - keyword(print) string<delimiter(")content(is not an integer)delimiter(")> - -comment(# DON'T DO THIS. Explicit checking is prone to errors:) -keyword(if) ident(mystr)operator(.)ident(isdigit)operator(()operator(\))operator(:) comment(# Fails on "+4") - keyword(print) string<delimiter(')content(is a positive integer)delimiter(')> -keyword(else)operator(:) - keyword(print) string<delimiter(')content(is not)delimiter(')> - -keyword(if) ident(re)operator(.)ident(match)operator(()string<delimiter(")content([+-]?)content(\\d)content(+$)delimiter(")>operator(,) ident(mystr)operator(\))operator(:) comment(# Fails on "- 1" ) - keyword(print) string<delimiter(')content(is an integer)delimiter(')> -keyword(else)operator(:) - keyword(print) string<delimiter(')content(is not)delimiter(')> - -keyword(if) ident(re)operator(.)ident(match)operator(()string<delimiter(")content(-?(?:)content(\\d)content(+(?:)content(\\.)content(\\d)content(*\)?|)content(\\.)content(\\d)content(+\)$)delimiter(")>operator(,) ident(mystr)operator(\))operator(:) comment(# Opaque, and fails on "- 1") - keyword(print) string<delimiter(')content(is a decimal number)delimiter(')> -keyword(else)operator(:) - keyword(print) string<delimiter(')content(is not)delimiter(')> - -comment(#-----------------------------) - -comment(# @@PLEAC@@_2.2) -comment(#-----------------------------) -comment(# equal(num1, num2, accuracy\) : returns true if num1 and num2 are) -comment(# equal to accuracy number of decimal places) - -keyword(def) method(equal)operator(()ident(num1)operator(,) ident(num2)operator(,) ident(accuracy)operator(\))operator(:) - keyword(return) predefined(abs)operator(()ident(num1) operator(-) ident(num2)operator(\)) operator(<) integer(10)operator(**)operator(()operator(-)ident(accuracy)operator(\)) -comment(#-----------------------------) -keyword(from) include(__future__) keyword(import) include(division) comment(# use / for float div and // for int div) - -ident(wage) operator(=) integer(536) comment(# $5.36/hour) -ident(week) operator(=) integer(40) operator(*) ident(wage) comment(# $214.40) -keyword(print) string<delimiter(")content(One week's wage is: $%.2f)delimiter(")> operator(%) operator(()ident(week)operator(/)integer(100)operator(\)) -comment(#=> One week's wage is: $214.40) -comment(#-----------------------------) - -comment(# @@PLEAC@@_2.3) -comment(#-----------------------------) -ident(rounded) operator(=) predefined(round)operator(()ident(num)operator(\)) comment(# rounds to integer) -comment(#-----------------------------) -ident(a) operator(=) float(0.255) -ident(b) operator(=) string<delimiter(")content(%.2f)delimiter(")> operator(%) ident(a) -keyword(print) string<delimiter(")content(Unrounded: %f)char(\\n)content(Rounded: %s)delimiter(")> operator(%) operator(()ident(a)operator(,) ident(b)operator(\)) -keyword(print) string<delimiter(")content(Unrounded: %f)char(\\n)content(Rounded: %.2f)delimiter(")> operator(%) operator(()ident(a)operator(,) ident(a)operator(\)) -comment(#=> Unrounded: 0.255000) -comment(#=> Rounded: 0.26) -comment(#=> Unrounded: 0.255000) -comment(#=> Rounded: 0.26) -comment(#-----------------------------) -keyword(from) include(math) keyword(import) include(floor)operator(,) include(ceil) - -keyword(print) string<delimiter(")content(number)char(\\t)content(int)char(\\t)content(floor)char(\\t)content(ceil)delimiter(")> -ident(a) operator(=) operator([)float(3.3)operator(,) float(3.5)operator(,) float(3.7)operator(,) operator(-)float(3.3)operator(]) -keyword(for) ident(n) keyword(in) ident(a)operator(:) - keyword(print) string<delimiter(")content(% .1f)char(\\t)content(% .1f)char(\\t)content(% .1f)char(\\t)content(% .1f)delimiter(")> operator(%) operator(()ident(n)operator(,) predefined(int)operator(()ident(n)operator(\))operator(,) ident(floor)operator(()ident(n)operator(\))operator(,) ident(ceil)operator(()ident(n)operator(\))operator(\)) -comment(#=> number int floor ceil) -comment(#=> 3.3 3.0 3.0 4.0) -comment(#=> 3.5 3.0 3.0 4.0) -comment(#=> 3.7 3.0 3.0 4.0) -comment(#=> -3.3 -3.0 -4.0 -3.0) -comment(#-----------------------------) - -comment(# @@PLEAC@@_2.4) -comment(#-----------------------------) -comment(# To convert a string in any base up to base 36, use the optional arg to int(\):) -ident(num) operator(=) predefined(int)operator(()string<delimiter(')content(0110110)delimiter(')>operator(,) integer(2)operator(\)) comment(# num is 54) - -comment(# To convert an int to an string representation in another base, you could use) -comment(# <http://aspn.activestate.com/ASPN/Cookbook/Python/Recipe/111286>:) -keyword(import) include(baseconvert) -keyword(def) method(dec2bin)operator(()ident(i)operator(\))operator(:) - keyword(return) ident(baseconvert)operator(.)ident(baseconvert)operator(()ident(i)operator(,) ident(baseconvert)operator(.)ident(BASE10)operator(,) ident(baseconvert)operator(.)ident(BASE2)operator(\)) - -ident(binstr) operator(=) ident(dec2bin)operator(()integer(54)operator(\)) comment(# binstr is 110110) -comment(#-----------------------------) - -comment(# @@PLEAC@@_2.5) -comment(#-----------------------------) -keyword(for) ident(i) keyword(in) predefined(range)operator(()ident(x)operator(,)ident(y)operator(\))operator(:) - keyword(pass) comment(# i is set to every integer from x to y, excluding y) - -keyword(for) ident(i) keyword(in) predefined(range)operator(()ident(x)operator(,) ident(y)operator(,) integer(7)operator(\))operator(:) - keyword(pass) comment(# i is set to every integer from x to y, stepsize = 7) - -keyword(print) string<delimiter(")content(Infancy is:)delimiter(")>operator(,) -keyword(for) ident(i) keyword(in) predefined(range)operator(()integer(0)operator(,)integer(3)operator(\))operator(:) - keyword(print) ident(i)operator(,) -keyword(print) - -keyword(print) string<delimiter(")content(Toddling is:)delimiter(")>operator(,) -keyword(for) ident(i) keyword(in) predefined(range)operator(()integer(3)operator(,)integer(5)operator(\))operator(:) - keyword(print) ident(i)operator(,) -keyword(print) - -comment(# DON'T DO THIS:) -keyword(print) string<delimiter(")content(Childhood is:)delimiter(")>operator(,) -ident(i) operator(=) integer(5) -keyword(while) ident(i) operator(<=) integer(12)operator(:) - keyword(print) ident(i) - ident(i) operator(+=) integer(1) - -comment(#=> Infancy is: 0 1 2) -comment(#=> Toddling is: 3 4) -comment(#=> Childhood is: 5 6 7 8 9 10 11 12) -comment(#-----------------------------) - -comment(# @@PLEAC@@_2.6) -comment(#-----------------------------) -comment(# See http://www.faqts.com/knowledge_base/view.phtml/aid/4442) -comment(# for a module that does this) -comment(#-----------------------------) - -comment(# @@PLEAC@@_2.7) -comment(#-----------------------------) -keyword(import) include(random) comment(# use help(random\) to see the (large\) list of funcs) - -ident(rand) operator(=) ident(random)operator(.)ident(randint)operator(()ident(x)operator(,) ident(y)operator(\)) -comment(#-----------------------------) -ident(rand) operator(=) ident(random)operator(.)ident(randint)operator(()integer(25)operator(,) integer(76)operator(\)) -keyword(print) ident(rand) -comment(#-----------------------------) -ident(elt) operator(=) ident(random)operator(.)ident(choice)operator(()ident(mylist)operator(\)) -comment(#-----------------------------) -keyword(import) include(string) -ident(chars) operator(=) ident(string)operator(.)ident(letters) operator(+) ident(string)operator(.)ident(digits) operator(+) string<delimiter(")content(!@$%^&*)delimiter(")> -ident(password) operator(=) string<delimiter(")delimiter(")>operator(.)ident(join)operator(()operator([)ident(random)operator(.)ident(choice)operator(()ident(chars)operator(\)) keyword(for) ident(i) keyword(in) predefined(range)operator(()integer(8)operator(\))operator(])operator(\)) -comment(#-----------------------------) - -comment(# @@PLEAC@@_2.8) -comment(#-----------------------------) -comment(# Changes the default RNG) -ident(random)operator(.)ident(seed)operator(()operator(\)) - -comment(# Or you can create independent RNGs) -ident(gen1) operator(=) ident(random)operator(.)ident(Random)operator(()integer(6)operator(\)) -ident(gen2) operator(=) ident(random)operator(.)ident(Random)operator(()integer(6)operator(\)) -ident(gen3) operator(=) ident(random)operator(.)ident(Random)operator(()integer(10)operator(\)) -ident(a1)operator(,) ident(b1) operator(=) ident(gen1)operator(.)ident(random)operator(()operator(\))operator(,) ident(gen1)operator(.)ident(random)operator(()operator(\)) -ident(a2)operator(,) ident(b2) operator(=) ident(gen2)operator(.)ident(random)operator(()operator(\))operator(,) ident(gen2)operator(.)ident(random)operator(()operator(\)) -ident(a3)operator(,) ident(b3) operator(=) ident(gen3)operator(.)ident(random)operator(()operator(\))operator(,) ident(gen3)operator(.)ident(random)operator(()operator(\)) -comment(# a1 == a2 and b1 == b2) -comment(#-----------------------------) - -comment(# @@PLEAC@@_2.9) -comment(#-----------------------------) -comment(# see http://www.sbc.su.se/~per/crng/ or http://www.frohne.westhost.com/rv11reference.htm) -comment(#-----------------------------) - -comment(# @@PLEAC@@_2.10) -comment(#-----------------------------) -keyword(import) include(random) -ident(mean) operator(=) integer(25) -ident(sdev) operator(=) integer(2) -ident(salary) operator(=) ident(random)operator(.)ident(gauss)operator(()ident(mean)operator(,) ident(sdev)operator(\)) -keyword(print) string<delimiter(")content(You have been hired at %.2f)delimiter(")> operator(%) ident(salary) -comment(#-----------------------------) - -comment(# @@PLEAC@@_2.11) -comment(#-----------------------------) -ident(radians) operator(=) ident(math)operator(.)ident(radians)operator(()ident(degrees)operator(\)) -ident(degrees) operator(=) ident(math)operator(.)ident(degrees)operator(()ident(radians)operator(\)) - -comment(# pre-2.3:) -keyword(from) include(__future__) keyword(import) include(division) -keyword(import) include(math) -keyword(def) method(deg2rad)operator(()ident(degrees)operator(\))operator(:) - keyword(return) operator(()ident(degrees) operator(/) integer(180)operator(\)) operator(*) ident(math)operator(.)ident(pi) -keyword(def) method(rad2deg)operator(()ident(radians)operator(\))operator(:) - keyword(return) operator(()ident(radians) operator(/) ident(math)operator(.)ident(pi)operator(\)) operator(*) integer(180) -comment(#-----------------------------) -comment(# Use deg2rad instead of math.radians if you have pre-2.3 Python.) -keyword(import) include(math) -keyword(def) method(degree_sine)operator(()ident(degrees)operator(\))operator(:) - ident(radians) operator(=) ident(math)operator(.)ident(radians)operator(()ident(degrees)operator(\)) - keyword(return) ident(math)operator(.)ident(sin)operator(()ident(radians)operator(\)) -comment(#-----------------------------) - -comment(# @@PLEAC@@_2.12) -comment(#-----------------------------) -keyword(import) include(math) - -comment(# DON'T DO THIS. Use math.tan(\) instead.) -keyword(def) method(tan)operator(()ident(theta)operator(\))operator(:) - keyword(return) ident(math)operator(.)ident(sin)operator(()ident(theta)operator(\)) operator(/) ident(math)operator(.)ident(cos)operator(()ident(theta)operator(\)) -comment(#----------------) -comment(# NOTE: this sets y to 16331239353195370.0) -keyword(try)operator(:) - ident(y) operator(=) ident(math)operator(.)ident(tan)operator(()ident(math)operator(.)ident(pi)operator(/)integer(2)operator(\)) -keyword(except) exception(ValueError)operator(:) - ident(y) operator(=) pre_constant(None) -comment(#-----------------------------) - -comment(# @@PLEAC@@_2.13) -comment(#-----------------------------) -keyword(import) include(math) -ident(log_e) operator(=) ident(math)operator(.)ident(log)operator(()ident(VALUE)operator(\)) -comment(#-----------------------------) -ident(log_10) operator(=) ident(math)operator(.)ident(log10)operator(()ident(VALUE)operator(\)) -comment(#-----------------------------) -keyword(def) method(log_base)operator(()ident(base)operator(,) ident(value)operator(\))operator(:) - keyword(return) ident(math)operator(.)ident(log)operator(()ident(value)operator(\)) operator(/) ident(math)operator(.)ident(log)operator(()ident(base)operator(\)) -comment(#-----------------------------) -comment(# log_base defined as above) -ident(answer) operator(=) ident(log_base)operator(()integer(10)operator(,) integer(10000)operator(\)) -keyword(print) string<delimiter(")content(log10(10,000\) =)delimiter(")>operator(,) ident(answer) -comment(#=> log10(10,000\) = 4.0) -comment(#-----------------------------) - -comment(# @@PLEAC@@_2.14) -comment(#-----------------------------) -comment(# NOTE: must have NumPy installed. See) -comment(# http://www.pfdubois.com/numpy/) - -keyword(import) include(Numeric) -ident(a) operator(=) ident(Numeric)operator(.)ident(array)operator(() operator(()operator(()integer(3)operator(,) integer(2)operator(,) integer(3)operator(\))operator(,) - operator(()integer(5)operator(,) integer(9)operator(,) integer(8)operator(\)) operator(\))operator(,) string<delimiter(")content(d)delimiter(")>operator(\)) -ident(b) operator(=) ident(Numeric)operator(.)ident(array)operator(() operator(()operator(()integer(4)operator(,) integer(7)operator(\))operator(,) - operator(()integer(9)operator(,) integer(3)operator(\))operator(,) - operator(()integer(8)operator(,) integer(1)operator(\)) operator(\))operator(,) string<delimiter(")content(d)delimiter(")>operator(\)) -ident(c) operator(=) ident(Numeric)operator(.)ident(matrixmultiply)operator(()ident(a)operator(,) ident(b)operator(\)) - -keyword(print) ident(c) -comment(#=> [[ 54. 30.]) -comment(#=> [ 165. 70.]]) - -keyword(print) ident(a)operator(.)ident(shape)operator(,) ident(b)operator(.)ident(shape)operator(,) ident(c)operator(.)ident(shape) -comment(#=> (2, 3\) (3, 2\) (2, 2\)) -comment(#-----------------------------) - -comment(# @@PLEAC@@_2.15) -comment(#-----------------------------) -ident(a) operator(=) integer(3)operator(+)imaginary(5j) -ident(b) operator(=) integer(2)operator(-)imaginary(2j) -ident(c) operator(=) ident(a) operator(*) ident(b) -keyword(print) string<delimiter(")content(c =)delimiter(")>operator(,) ident(c) -comment(#=> c = (16+4j\)) - -keyword(print) ident(c)operator(.)ident(real)operator(,) ident(c)operator(.)ident(imag)operator(,) ident(c)operator(.)ident(conjugate)operator(()operator(\)) -comment(#=> 16.0 4.0 (16-4j\)) -comment(#-----------------------------) -keyword(import) include(cmath) -keyword(print) ident(cmath)operator(.)ident(sqrt)operator(()integer(3)operator(+)imaginary(4j)operator(\)) -comment(#=> (2+1j\)) -comment(#-----------------------------) - -comment(# @@PLEAC@@_2.16) -comment(#-----------------------------) -ident(number) operator(=) predefined(int)operator(()ident(hexadecimal)operator(,) integer(16)operator(\)) -ident(number) operator(=) predefined(int)operator(()ident(octal)operator(,) integer(8)operator(\)) -ident(s) operator(=) predefined(hex)operator(()ident(number)operator(\)) -ident(s) operator(=) predefined(oct)operator(()ident(number)operator(\)) - -ident(num) operator(=) predefined(raw_input)operator(()string<delimiter(")content(Gimme a number in decimal, octal, or hex: )delimiter(")>operator(\))operator(.)ident(rstrip)operator(()operator(\)) -keyword(if) ident(num)operator(.)ident(startswith)operator(()string<delimiter(")content(0x)delimiter(")>operator(\))operator(:) - ident(num) operator(=) predefined(int)operator(()ident(num)operator([)integer(2)operator(:)operator(])operator(,) integer(16)operator(\)) -keyword(elif) ident(num)operator(.)ident(startswith)operator(()string<delimiter(")content(0)delimiter(")>operator(\))operator(:) - ident(num) operator(=) predefined(int)operator(()ident(num)operator([)integer(1)operator(:)operator(])operator(,) integer(8)operator(\)) -keyword(else)operator(:) - ident(num) operator(=) predefined(int)operator(()ident(num)operator(\)) -keyword(print) string<delimiter(")content(%(num\)d %(num\)x %(num\)o)char(\\n)delimiter(")> operator(%) operator({) string<delimiter(")content(num)delimiter(")>operator(:) ident(num) operator(}) -comment(#-----------------------------) - - -comment(# @@PLEAC@@_2.17) -comment(#-----------------------------) -keyword(def) method(commify)operator(()ident(amount)operator(\))operator(:) - ident(amount) operator(=) predefined(str)operator(()ident(amount)operator(\)) - ident(firstcomma) operator(=) predefined(len)operator(()ident(amount)operator(\))operator(%)integer(3) keyword(or) integer(3) comment(# set to 3 if would make a leading comma) - ident(first)operator(,) ident(rest) operator(=) ident(amount)operator([)operator(:)ident(firstcomma)operator(])operator(,) ident(amount)operator([)ident(firstcomma)operator(:)operator(]) - ident(segments) operator(=) operator([)ident(first)operator(]) operator(+) operator([)ident(rest)operator([)ident(i)operator(:)ident(i)operator(+)integer(3)operator(]) keyword(for) ident(i) keyword(in) predefined(range)operator(()integer(0)operator(,) predefined(len)operator(()ident(rest)operator(\))operator(,) integer(3)operator(\))operator(]) - keyword(return) string<delimiter(")content(,)delimiter(")>operator(.)ident(join)operator(()ident(segments)operator(\)) - -keyword(print) ident(commify)operator(()integer(12345678)operator(\)) -comment(#=> 12,345,678) - -comment(# DON'T DO THIS. It works on 2.3+ only and is slower and less straightforward) -comment(# than the non-regex version above.) -keyword(import) include(re) -keyword(def) method(commify)operator(()ident(amount)operator(\))operator(:) - ident(amount) operator(=) predefined(str)operator(()ident(amount)operator(\)) - ident(amount) operator(=) ident(amount)operator([)operator(:)operator(:)operator(-)integer(1)operator(]) - ident(amount) operator(=) ident(re)operator(.)ident(sub)operator(()string<modifier(r)delimiter(")content(()content(\\d)content(\\d)content(\\d)content(\)(?=)content(\\d)content(\)(?!)content(\\d)content(*)content(\\.)content(\))delimiter(")>operator(,) string<modifier(r)delimiter(")content(\\1)content(,)delimiter(")>operator(,) ident(amount)operator(\)) - keyword(return) ident(amount)operator([)operator(:)operator(:)operator(-)integer(1)operator(]) - -comment(# @@PLEAC@@_2.18) -comment(# Printing Correct Plurals) -comment(#-----------------------------) -keyword(def) method(pluralise)operator(()ident(value)operator(,) ident(root)operator(,) ident(singular)operator(=)string<delimiter(")delimiter(")>operator(,) ident(plural)operator(=)string<delimiter(")content(s)delimiter(")>operator(\))operator(:) - keyword(if) ident(value) operator(==) integer(1)operator(:) - keyword(return) ident(root) operator(+) ident(singular) - keyword(else)operator(:) - keyword(return) ident(root) operator(+) ident(plural) - -keyword(print) string<delimiter(")content(It took)delimiter(")>operator(,) ident(duration)operator(,) ident(pluralise)operator(()ident(duration)operator(,) string<delimiter(')content(hour)delimiter(')>operator(\)) - -keyword(print) string<delimiter(")content(%d %s %s enough.)delimiter(")> operator(%) operator(()ident(duration)operator(,) - ident(pluralise)operator(()ident(duration)operator(,) string<delimiter(')content(hour)delimiter(')>operator(\))operator(,) - ident(pluralise)operator(()ident(duration)operator(,) string<delimiter(')delimiter(')>operator(,) string<delimiter(')content(is)delimiter(')>operator(,) string<delimiter(')content(are)delimiter(')>operator(\))operator(\)) -comment(#-----------------------------) -keyword(import) include(re) -keyword(def) method(noun_plural)operator(()ident(word)operator(\))operator(:) - ident(endings) operator(=) operator([)operator(()string<delimiter(")content(ss)delimiter(")>operator(,) string<delimiter(")content(sses)delimiter(")>operator(\))operator(,) - operator(()string<delimiter(")content(([psc]h\))delimiter(")>operator(,) string<modifier(r)delimiter(")content(\\1)content(es)delimiter(")>operator(\))operator(,) - operator(()string<delimiter(")content(z)delimiter(")>operator(,) string<delimiter(")content(zes)delimiter(")>operator(\))operator(,) - operator(()string<delimiter(")content(ff)delimiter(")>operator(,) string<delimiter(")content(ffs)delimiter(")>operator(\))operator(,) - operator(()string<delimiter(")content(f)delimiter(")>operator(,) string<delimiter(")content(ves)delimiter(")>operator(\))operator(,) - operator(()string<delimiter(")content(ey)delimiter(")>operator(,) string<delimiter(")content(eys)delimiter(")>operator(\))operator(,) - operator(()string<delimiter(")content(y)delimiter(")>operator(,) string<delimiter(")content(ies)delimiter(")>operator(\))operator(,) - operator(()string<delimiter(")content(ix)delimiter(")>operator(,) string<delimiter(")content(ices)delimiter(")>operator(\))operator(,) - operator(()string<delimiter(")content(([sx]\))delimiter(")>operator(,) string<modifier(r)delimiter(")content(\\1)content(es)delimiter(")>operator(\))operator(,) - operator(()string<delimiter(")delimiter(")>operator(,) string<delimiter(")content(s)delimiter(")>operator(\))operator(]) - keyword(for) ident(singular)operator(,) ident(plural) keyword(in) ident(endings)operator(:) - ident(ret)operator(,) ident(found) operator(=) ident(re)operator(.)ident(subn)operator(()string<delimiter(")content(%s$)delimiter(")>operator(%)ident(singular)operator(,) ident(plural)operator(,) ident(word)operator(\)) - keyword(if) ident(found)operator(:) - keyword(return) ident(ret) - -ident(verb_singular) operator(=) ident(noun_plural)operator(;) comment(# make function alias) -comment(#-----------------------------) - -comment(# @@PLEAC@@_2.19) -comment(# Program: Calculating Prime Factors) -comment(#-----------------------------) -comment(#% bigfact 8 9 96 2178) -comment(#8 2**3) -comment(#) -comment(#9 3**2) -comment(#) -comment(#96 2**5 3) -comment(#) -comment(#2178 2 3**2 11**2) -comment(#-----------------------------) -comment(#% bigfact 239322000000000000000000) -comment(#239322000000000000000000 2**19 3 5**18 39887 ) -comment(#) -comment(#) -comment(#% bigfact 25000000000000000000000000) -comment(#25000000000000000000000000 2**24 5**26) -comment(#-----------------------------) -keyword(import) include(sys) - -keyword(def) method(factorise)operator(()ident(num)operator(\))operator(:) - ident(factors) operator(=) operator({)operator(}) - ident(orig) operator(=) ident(num) - keyword(print) ident(num)operator(,) string<delimiter(')char(\\t)delimiter(')>operator(,) - - comment(# we take advantage of the fact that (i +1\)**2 = i**2 + 2*i +1) - ident(i)operator(,) ident(sqi) operator(=) integer(2)operator(,) integer(4) - keyword(while) ident(sqi) operator(<=) ident(num)operator(:) - keyword(while) keyword(not) ident(num)operator(%)ident(i)operator(:) - ident(num) operator(/=) ident(i) - ident(factors)operator([)ident(i)operator(]) operator(=) ident(factors)operator(.)ident(get)operator(()ident(i)operator(,) integer(0)operator(\)) operator(+) integer(1) - - ident(sqi) operator(+=) integer(2)operator(*)ident(i) operator(+) integer(1) - ident(i) operator(+=) integer(1) - - keyword(if) ident(num) operator(!=) integer(1) keyword(and) ident(num) operator(!=) ident(orig)operator(:) - ident(factors)operator([)ident(num)operator(]) operator(=) ident(factors)operator(.)ident(get)operator(()ident(num)operator(,) integer(0)operator(\)) operator(+) integer(1) - - keyword(if) keyword(not) ident(factors)operator(:) - keyword(print) string<delimiter(")content(PRIME)delimiter(")> - - keyword(for) ident(factor) keyword(in) predefined(sorted)operator(()ident(factors)operator(\))operator(:) - keyword(if) ident(factor)operator(:) - ident(tmp) operator(=) predefined(str)operator(()ident(factor)operator(\)) - keyword(if) ident(factors)operator([)ident(factor)operator(])operator(>)integer(1)operator(:) ident(tmp) operator(+=) string<delimiter(")content(**)delimiter(")> operator(+) predefined(str)operator(()ident(factors)operator([)ident(factor)operator(])operator(\)) - keyword(print) ident(tmp)operator(,) - keyword(print) - -comment(#--------) -keyword(if) ident(__name__) operator(==) string<delimiter(')content(__main__)delimiter(')>operator(:) - keyword(if) predefined(len)operator(()ident(sys)operator(.)ident(argv)operator(\)) operator(==) integer(1)operator(:) - keyword(print) string<delimiter(")content(Usage:)delimiter(")>operator(,) ident(sys)operator(.)ident(argv)operator([)integer(0)operator(])operator(,) string<delimiter(")content( number [number, ])delimiter(")> - keyword(else)operator(:) - keyword(for) ident(strnum) keyword(in) ident(sys)operator(.)ident(argv)operator([)integer(1)operator(:)operator(])operator(:) - keyword(try)operator(:) - ident(num) operator(=) predefined(int)operator(()ident(strnum)operator(\)) - ident(factorise)operator(()ident(num)operator(\)) - keyword(except) exception(ValueError)operator(:) - keyword(print) ident(strnum)operator(,) string<delimiter(")content(is not an integer)delimiter(")> -comment(#-----------------------------) -comment(# A more Pythonic variant (which separates calculation from printing\):) -keyword(def) method(format_factor)operator(()ident(base)operator(,) ident(exponent)operator(\))operator(:) - keyword(if) ident(exponent) operator(>) integer(1)operator(:) - keyword(return) string<delimiter(")content(%s**%s)delimiter(")>operator(%)operator(()ident(base)operator(,) ident(exponent)operator(\)) - keyword(return) predefined(str)operator(()ident(base)operator(\)) - -keyword(def) method(factorise)operator(()ident(num)operator(\))operator(:) - ident(factors) operator(=) operator({)operator(}) - ident(orig) operator(=) ident(num) - - comment(# we take advantage of the fact that (i+1\)**2 = i**2 + 2*i +1) - ident(i)operator(,) ident(sqi) operator(=) integer(2)operator(,) integer(4) - keyword(while) ident(sqi) operator(<=) ident(num)operator(:) - keyword(while) keyword(not) ident(num)operator(%)ident(i)operator(:) - ident(num) operator(/=) ident(i) - ident(factors)operator([)ident(i)operator(]) operator(=) ident(factors)operator(.)ident(get)operator(()ident(i)operator(,) integer(0)operator(\)) operator(+) integer(1) - ident(sqi) operator(+=) integer(2)operator(*)ident(i) operator(+) integer(1) - ident(i) operator(+=) integer(1) - - keyword(if) ident(num) keyword(not) keyword(in) operator(()integer(1)operator(,) ident(orig)operator(\))operator(:) - ident(factors)operator([)ident(num)operator(]) operator(=) ident(factors)operator(.)ident(get)operator(()ident(num)operator(,) integer(0)operator(\)) operator(+) integer(1) - - keyword(if) keyword(not) ident(factors)operator(:) - keyword(return) operator([)string<delimiter(")content(PRIME)delimiter(")>operator(]) - - ident(out) operator(=) operator([)ident(format_factor)operator(()ident(base)operator(,) ident(exponent)operator(\)) - keyword(for) ident(base)operator(,) ident(exponent) keyword(in) predefined(sorted)operator(()ident(factors)operator(.)ident(items)operator(()operator(\))operator(\))operator(]) - keyword(return) ident(out) - -keyword(def) method(print_factors)operator(()ident(value)operator(\))operator(:) - keyword(try)operator(:) - ident(num) operator(=) predefined(int)operator(()ident(value)operator(\)) - keyword(if) ident(num) operator(!=) predefined(float)operator(()ident(value)operator(\))operator(:) - keyword(raise) exception(ValueError) - keyword(except) operator(()exception(ValueError)operator(,) exception(TypeError)operator(\))operator(:) - keyword(raise) exception(ValueError)operator(()string<delimiter(")content(Can only factorise an integer)delimiter(")>operator(\)) - ident(factors) operator(=) ident(factorise)operator(()ident(num)operator(\)) - keyword(print) ident(num)operator(,) string<delimiter(")char(\\t)delimiter(")>operator(,) string<delimiter(")content( )delimiter(")>operator(.)ident(join)operator(()ident(factors)operator(\)) - -comment(# @@PLEAC@@_3.0) -comment(#----------------------------- ) -comment(#introduction) -comment(# There are three common ways of manipulating dates in Python) -comment(# mxDateTime - a popular third-party module (not discussed here\) ) -comment(# time - a fairly low-level standard library module ) -comment(# datetime - a new library module for Python 2.3 and used for most of these samples ) -comment(# (I will use full names to show which module they are in, but you can also use) -comment(# from datetime import datetime, timedelta and so on for convenience\) ) - -keyword(import) include(time) -keyword(import) include(datetime) - -keyword(print) string<delimiter(")content(Today is day)delimiter(")>operator(,) ident(time)operator(.)ident(localtime)operator(()operator(\))operator([)integer(7)operator(])operator(,) string<delimiter(")content(of the current year)delimiter(")> -comment(# Today is day 218 of the current year) - -ident(today) operator(=) ident(datetime)operator(.)ident(date)operator(.)ident(today)operator(()operator(\)) -keyword(print) string<delimiter(")content(Today is day)delimiter(")>operator(,) ident(today)operator(.)ident(timetuple)operator(()operator(\))operator([)integer(7)operator(])operator(,) string<delimiter(")content(of )delimiter(")>operator(,) ident(today)operator(.)ident(year) -comment(# Today is day 218 of 2003) - -keyword(print) string<delimiter(")content(Today is day)delimiter(")>operator(,) ident(today)operator(.)ident(strftime)operator(()string<delimiter(")content(%j)delimiter(")>operator(\))operator(,) string<delimiter(")content(of the current year)delimiter(")> -comment(# Today is day 218 of the current year) - - -comment(# @@PLEAC@@_3.1) -comment(#----------------------------- ) -comment(# Finding todays date) - -ident(today) operator(=) ident(datetime)operator(.)ident(date)operator(.)ident(today)operator(()operator(\)) -keyword(print) string<delimiter(")content(The date is)delimiter(")>operator(,) ident(today) -comment(#=> The date is 2003-08-06) - -comment(# the function strftime(\) (string-format time\) produces nice formatting) -comment(# All codes are detailed at http://www.python.org/doc/current/lib/module-time.html) -keyword(print) ident(t)operator(.)ident(strftime)operator(()string<delimiter(")content(four-digit year: %Y, two-digit year: %y, month: %m, day: %d)delimiter(")>operator(\)) -comment(#=> four-digit year: 2003, two-digit year: 03, month: 08, day: 06) - - -comment(# @@PLEAC@@_3.2) -comment(#----------------------------- ) -comment(# Converting DMYHMS to Epoch Seconds) -comment(# To work with Epoch Seconds, you need to use the time module) - -comment(# For the local timezone) -ident(t) operator(=) ident(datetime)operator(.)ident(datetime)operator(.)ident(now)operator(()operator(\)) -keyword(print) string<delimiter(")content(Epoch Seconds:)delimiter(")>operator(,) ident(time)operator(.)ident(mktime)operator(()ident(t)operator(.)ident(timetuple)operator(()operator(\))operator(\)) -comment(#=> Epoch Seconds: 1060199000.0) - -comment(# For UTC) -ident(t) operator(=) ident(datetime)operator(.)ident(datetime)operator(.)ident(utcnow)operator(()operator(\)) -keyword(print) string<delimiter(")content(Epoch Seconds:)delimiter(")>operator(,) ident(time)operator(.)ident(mktime)operator(()ident(t)operator(.)ident(timetuple)operator(()operator(\))operator(\)) -comment(#=> Epoch Seconds: 1060195503.0) - - -comment(# @@PLEAC@@_3.3) -comment(#----------------------------- ) -comment(# Converting Epoch Seconds to DMYHMS) - -ident(now) operator(=) ident(datetime)operator(.)ident(datetime)operator(.)ident(fromtimestamp)operator(()ident(EpochSeconds)operator(\)) -comment(#or use datetime.datetime.utcfromtimestamp(\)) -keyword(print) ident(now) -comment(#=> datetime.datetime(2003, 8, 6, 20, 43, 20\)) -keyword(print) ident(now)operator(.)ident(ctime)operator(()operator(\)) -comment(#=> Wed Aug 6 20:43:20 2003) - -comment(# or with the time module) -ident(oldtimetuple) operator(=) ident(time)operator(.)ident(localtime)operator(()ident(EpochSeconds)operator(\)) -comment(# oldtimetuple contains (year, month, day, hour, minute, second, weekday, yearday, daylightSavingAdjustment\) ) -keyword(print) ident(oldtimetuple) -comment(#=> (2003, 8, 6, 20, 43, 20, 2, 218, 1\)) - - -comment(# @@PLEAC@@_3.4) -comment(#----------------------------- ) -comment(# Adding to or Subtracting from a Date) -comment(# Use the rather nice datetime.timedelta objects) - -ident(now) operator(=) ident(datetime)operator(.)ident(date)operator(()integer(2003)operator(,) integer(8)operator(,) integer(6)operator(\)) -ident(difference1) operator(=) ident(datetime)operator(.)ident(timedelta)operator(()ident(days)operator(=)integer(1)operator(\)) -ident(difference2) operator(=) ident(datetime)operator(.)ident(timedelta)operator(()ident(weeks)operator(=)operator(-)integer(2)operator(\)) - -keyword(print) string<delimiter(")content(One day in the future is:)delimiter(")>operator(,) ident(now) operator(+) ident(difference1) -comment(#=> One day in the future is: 2003-08-07) - -keyword(print) string<delimiter(")content(Two weeks in the past is:)delimiter(")>operator(,) ident(now) operator(+) ident(difference2) -comment(#=> Two weeks in the past is: 2003-07-23) - -keyword(print) ident(datetime)operator(.)ident(date)operator(()integer(2003)operator(,) integer(8)operator(,) integer(6)operator(\)) operator(-) ident(datetime)operator(.)ident(date)operator(()integer(2000)operator(,) integer(8)operator(,) integer(6)operator(\)) -comment(#=> 1095 days, 0:00:00) - -comment(#----------------------------- ) -ident(birthtime) operator(=) ident(datetime)operator(.)ident(datetime)operator(()integer(1973)operator(,) oct(01)operator(,) integer(18)operator(,) integer(3)operator(,) integer(45)operator(,) integer(50)operator(\)) comment(# 1973-01-18 03:45:50) - -ident(interval) operator(=) ident(datetime)operator(.)ident(timedelta)operator(()ident(seconds)operator(=)integer(5)operator(,) ident(minutes)operator(=)integer(17)operator(,) ident(hours)operator(=)integer(2)operator(,) ident(days)operator(=)integer(55)operator(\)) -ident(then) operator(=) ident(birthtime) operator(+) ident(interval) - -keyword(print) string<delimiter(")content(Then is)delimiter(")>operator(,) ident(then)operator(.)ident(ctime)operator(()operator(\)) -comment(#=> Then is Wed Mar 14 06:02:55 1973) - -keyword(print) string<delimiter(")content(Then is)delimiter(")>operator(,) ident(then)operator(.)ident(strftime)operator(()string<delimiter(")content(%A %B %d %I:%M:%S %p %Y)delimiter(")>operator(\)) -comment(#=> Then is Wednesday March 14 06:02:55 AM 1973) - -comment(#-----------------------------) -ident(when) operator(=) ident(datetime)operator(.)ident(datetime)operator(()integer(1973)operator(,) integer(1)operator(,) integer(18)operator(\)) operator(+) ident(datetime)operator(.)ident(timedelta)operator(()ident(days)operator(=)integer(55)operator(\)) -keyword(print) string<delimiter(")content(Nat was 55 days old on:)delimiter(")>operator(,) ident(when)operator(.)ident(strftime)operator(()string<delimiter(")content(%m/%d/%Y)delimiter(")>operator(\))operator(.)ident(lstrip)operator(()string<delimiter(")content(0)delimiter(")>operator(\)) -comment(#=> Nat was 55 days old on: 3/14/1973) - - -comment(# @@PLEAC@@_3.5) -comment(#----------------------------- ) -comment(# Dates produce timedeltas when subtracted.) - -ident(diff) operator(=) ident(date2) operator(-) ident(date1) -ident(diff) operator(=) ident(datetime)operator(.)ident(date)operator(()ident(year1)operator(,) ident(month1)operator(,) ident(day1)operator(\)) operator(-) ident(datetime)operator(.)ident(date)operator(()ident(year2)operator(,) ident(month2)operator(,) ident(day2)operator(\)) -comment(#----------------------------- ) - -ident(bree) operator(=) ident(datetime)operator(.)ident(datetime)operator(()integer(1981)operator(,) integer(6)operator(,) integer(16)operator(,) integer(4)operator(,) integer(35)operator(,) integer(25)operator(\)) -ident(nat) operator(=) ident(datetime)operator(.)ident(datetime)operator(()integer(1973)operator(,) integer(1)operator(,) integer(18)operator(,) integer(3)operator(,) integer(45)operator(,) integer(50)operator(\)) - -ident(difference) operator(=) ident(bree) operator(-) ident(nat) -keyword(print) string<delimiter(")content(There were)delimiter(")>operator(,) ident(difference)operator(,) string<delimiter(")content(minutes between Nat and Bree)delimiter(")> -comment(#=> There were 3071 days, 0:49:35 between Nat and Bree) - -ident(weeks)operator(,) ident(days) operator(=) predefined(divmod)operator(()ident(difference)operator(.)ident(days)operator(,) integer(7)operator(\)) - -ident(minutes)operator(,) ident(seconds) operator(=) predefined(divmod)operator(()ident(difference)operator(.)ident(seconds)operator(,) integer(60)operator(\)) -ident(hours)operator(,) ident(minutes) operator(=) predefined(divmod)operator(()ident(minutes)operator(,) integer(60)operator(\)) - -keyword(print) string<delimiter(")content(%d weeks, %d days, %d:%d:%d)delimiter(")> operator(%) operator(()ident(weeks)operator(,) ident(days)operator(,) ident(hours)operator(,) ident(minutes)operator(,) ident(seconds)operator(\)) -comment(#=> 438 weeks, 5 days, 0:49:35) - -comment(#----------------------------- ) -keyword(print) string<delimiter(")content(There were)delimiter(")>operator(,) ident(difference)operator(.)ident(days)operator(,) string<delimiter(")content(days between Bree and Nat.)delimiter(")> -comment(#=> There were 3071 days between bree and nat) - - -comment(# @@PLEAC@@_3.6) -comment(#----------------------------- ) -comment(# Day in a Week/Month/Year or Week Number) - -ident(when) operator(=) ident(datetime)operator(.)ident(date)operator(()integer(1981)operator(,) integer(6)operator(,) integer(16)operator(\)) - -keyword(print) string<delimiter(")content(16/6/1981 was:)delimiter(")> -keyword(print) ident(when)operator(.)ident(strftime)operator(()string<delimiter(")content(Day %w of the week (a %A\). Day %d of the month (%B\).)delimiter(")>operator(\)) -keyword(print) ident(when)operator(.)ident(strftime)operator(()string<delimiter(")content(Day %j of the year (%Y\), in week %W of the year.)delimiter(")>operator(\)) - -comment(#=> 16/6/1981 was:) -comment(#=> Day 2 of the week (a Tuesday\). Day 16 of the month (June\).) -comment(#=> Day 167 of the year (1981\), in week 24 of the year.) - - -comment(# @@PLEAC@@_3.7) -comment(#----------------------------- ) -comment(# Parsing Dates and Times from Strings) - -ident(time)operator(.)ident(strptime)operator(()string<delimiter(")content(Tue Jun 16 20:18:03 1981)delimiter(")>operator(\)) -comment(# (1981, 6, 16, 20, 18, 3, 1, 167, -1\)) - -ident(time)operator(.)ident(strptime)operator(()string<delimiter(")content(16/6/1981)delimiter(")>operator(,) string<delimiter(")content(%d/%m/%Y)delimiter(")>operator(\)) -comment(# (1981, 6, 16, 0, 0, 0, 1, 167, -1\)) -comment(# strptime(\) can use any of the formatting codes from time.strftime(\)) - -comment(# The easiest way to convert this to a datetime seems to be; ) -ident(now) operator(=) ident(datetime)operator(.)ident(datetime)operator(()operator(*)ident(time)operator(.)ident(strptime)operator(()string<delimiter(")content(16/6/1981)delimiter(")>operator(,) string<delimiter(")content(%d/%m/%Y)delimiter(")>operator(\))operator([)integer(0)operator(:)integer(5)operator(])operator(\)) -comment(# the '*' operator unpacks the tuple, producing the argument list.) - - -comment(# @@PLEAC@@_3.8) -comment(#----------------------------- ) -comment(# Printing a Date) -comment(# Use datetime.strftime(\) - see helpfiles in distro or at python.org) - -keyword(print) ident(datetime)operator(.)ident(datetime)operator(.)ident(now)operator(()operator(\))operator(.)ident(strftime)operator(()string<delimiter(")content(The date is %A (%a\) %d/%m/%Y)delimiter(")>operator(\)) -comment(#=> The date is Friday (Fri\) 08/08/2003) - -comment(# @@PLEAC@@_3.9) -comment(#----------------------------- ) -comment(# High Resolution Timers) - -ident(t1) operator(=) ident(time)operator(.)ident(clock)operator(()operator(\)) -comment(# Do Stuff Here) -ident(t2) operator(=) ident(time)operator(.)ident(clock)operator(()operator(\)) -keyword(print) ident(t2) operator(-) ident(t1) - -comment(# 2.27236813618) -comment(# Accuracy will depend on platform and OS,) -comment(# but time.clock(\) uses the most accurate timer it can) - -ident(time)operator(.)ident(clock)operator(()operator(\))operator(;) ident(time)operator(.)ident(clock)operator(()operator(\)) -comment(# 174485.51365466841) -comment(# 174485.55702610247) - -comment(#----------------------------- ) -comment(# Also useful;) -keyword(import) include(timeit) -ident(code) operator(=) string<delimiter(')content([x for x in range(10\) if x % 2 == 0])delimiter(')> -predefined(eval)operator(()ident(code)operator(\)) -comment(# [0, 2, 4, 6, 8]) - -ident(t) operator(=) ident(timeit)operator(.)ident(Timer)operator(()ident(code)operator(\)) -keyword(print) string<delimiter(")content(10,000 repeats of that code takes:)delimiter(")>operator(,) ident(t)operator(.)ident(timeit)operator(()integer(10000)operator(\))operator(,) string<delimiter(")content(seconds)delimiter(")> -keyword(print) string<delimiter(")content(1,000,000 repeats of that code takes:)delimiter(")>operator(,) ident(t)operator(.)ident(timeit)operator(()operator(\))operator(,) string<delimiter(")content(seconds)delimiter(")> - -comment(# 10,000 repeats of that code takes: 0.128238644856 seconds) -comment(# 1,000,000 repeats of that code takes: 12.5396490336 seconds) - -comment(#----------------------------- ) -keyword(import) include(timeit) -ident(code) operator(=) string<delimiter(')content(import random; l = random.sample(xrange(10000000\), 1000\); l.sort(\))delimiter(')> -ident(t) operator(=) ident(timeit)operator(.)ident(Timer)operator(()ident(code)operator(\)) - -keyword(print) string<delimiter(")content(Create a list of a thousand random numbers. Sort the list. Repeated a thousand times.)delimiter(")> -keyword(print) string<delimiter(")content(Average Time:)delimiter(")>operator(,) ident(t)operator(.)ident(timeit)operator(()integer(1000)operator(\)) operator(/) integer(1000) -comment(# Time taken: 5.24391507859) - - -comment(# @@PLEAC@@_3.10) -comment(#----------------------------- ) -comment(# Short Sleeps) - -ident(seconds) operator(=) float(3.1) -ident(time)operator(.)ident(sleep)operator(()ident(seconds)operator(\)) -keyword(print) string<delimiter(")content(boo)delimiter(")> - -comment(# @@PLEAC@@_3.11) -comment(#----------------------------- ) -comment(# Program HopDelta) -comment(# Save a raw email to disk and run "python hopdelta.py FILE") -comment(# and it will process the headers and show the time taken) -comment(# for each server hop (nb: if server times are wrong, negative dates) -comment(# might appear in the output\).) - -keyword(import) include(datetime)operator(,) include(email)operator(,) include(email.Utils) -keyword(import) include(os)operator(,) include(sys)operator(,) include(time) - -keyword(def) method(extract_date)operator(()ident(hop)operator(\))operator(:) - comment(# According to RFC822, the date will be prefixed with) - comment(# a semi-colon, and is the last part of a received) - comment(# header.) - ident(date_string) operator(=) ident(hop)operator([)ident(hop)operator(.)ident(find)operator(()string<delimiter(')content(;)delimiter(')>operator(\))operator(+)integer(2)operator(:)operator(]) - ident(date_string) operator(=) ident(date_string)operator(.)ident(strip)operator(()operator(\)) - ident(time_tuple) operator(=) ident(email)operator(.)ident(Utils)operator(.)ident(parsedate)operator(()ident(date_string)operator(\)) - - comment(# convert time_tuple to datetime) - ident(EpochSeconds) operator(=) ident(time)operator(.)ident(mktime)operator(()ident(time_tuple)operator(\)) - ident(dt) operator(=) ident(datetime)operator(.)ident(datetime)operator(.)ident(fromtimestamp)operator(()ident(EpochSeconds)operator(\)) - keyword(return) ident(dt) - -keyword(def) method(process)operator(()ident(filename)operator(\))operator(:) - comment(# Main email file processing) - comment(# read the headers and process them) - ident(f) operator(=) predefined(file)operator(()ident(filename)operator(,) string<delimiter(')content(rb)delimiter(')>operator(\)) - ident(msg) operator(=) ident(email)operator(.)ident(message_from_file)operator(()ident(f)operator(\)) - - ident(hops) operator(=) ident(msg)operator(.)ident(get_all)operator(()string<delimiter(')content(received)delimiter(')>operator(\)) - - comment(# in reverse order, get the server(s\) and date/time involved) - ident(hops)operator(.)ident(reverse)operator(()operator(\)) - ident(results) operator(=) operator([)operator(]) - keyword(for) ident(hop) keyword(in) ident(hops)operator(:) - ident(hop) operator(=) ident(hop)operator(.)ident(lower)operator(()operator(\)) - - keyword(if) ident(hop)operator(.)ident(startswith)operator(()string<delimiter(')content(by)delimiter(')>operator(\))operator(:) comment(# 'Received: by' line) - ident(sender) operator(=) string<delimiter(")content(start)delimiter(")> - ident(receiver) operator(=) ident(hop)operator([)integer(3)operator(:)ident(hop)operator(.)ident(find)operator(()string<delimiter(')content( )delimiter(')>operator(,)integer(3)operator(\))operator(]) - ident(date) operator(=) ident(extract_date)operator(()ident(hop)operator(\)) - - keyword(else)operator(:) comment(# 'Received: from' line) - ident(sender) operator(=) ident(hop)operator([)integer(5)operator(:)ident(hop)operator(.)ident(find)operator(()string<delimiter(')content( )delimiter(')>operator(,)integer(5)operator(\))operator(]) - ident(by) operator(=) ident(hop)operator(.)ident(find)operator(()string<delimiter(')content(by )delimiter(')>operator(\))operator(+)integer(3) - ident(receiver) operator(=) ident(hop)operator([)ident(by)operator(:)ident(hop)operator(.)ident(find)operator(()string<delimiter(')content( )delimiter(')>operator(,) ident(by)operator(\))operator(]) - ident(date) operator(=) ident(extract_date)operator(()ident(hop)operator(\)) - - ident(results)operator(.)ident(append)operator(()operator(()ident(sender)operator(,) ident(receiver)operator(,) ident(date)operator(\))operator(\)) - ident(output)operator(()ident(results)operator(\)) - -keyword(def) method(output)operator(()ident(results)operator(\))operator(:) - keyword(print) string<delimiter(")content(Sender, Recipient, Time, Delta)delimiter(")> - keyword(print) - ident(previous_dt) operator(=) ident(delta) operator(=) integer(0) - keyword(for) operator(()ident(sender)operator(,) ident(receiver)operator(,) ident(date)operator(\)) keyword(in) ident(results)operator(:) - keyword(if) ident(previous_dt)operator(:) - ident(delta) operator(=) ident(date) operator(-) ident(previous_dt) - - keyword(print) string<delimiter(")content(%s, %s, %s, %s)delimiter(")> operator(%) operator(()ident(sender)operator(,) - ident(receiver)operator(,) - ident(date)operator(.)ident(strftime)operator(()string<delimiter(")content(%Y/%d/%m %H:%M:%S)delimiter(")>operator(\))operator(,) - ident(delta)operator(\)) - keyword(print) - ident(previous_dt) operator(=) ident(date) - -keyword(def) method(main)operator(()operator(\))operator(:) - comment(# Perform some basic argument checking) - keyword(if) predefined(len)operator(()ident(sys)operator(.)ident(argv)operator(\)) operator(!=) integer(2)operator(:) - keyword(print) string<delimiter(")content(Usage: mailhop.py FILENAME)delimiter(")> - - keyword(else)operator(:) - ident(filename) operator(=) ident(sys)operator(.)ident(argv)operator([)integer(1)operator(]) - keyword(if) ident(os)operator(.)ident(path)operator(.)ident(isfile)operator(()ident(filename)operator(\))operator(:) - ident(process)operator(()ident(filename)operator(\)) - keyword(else)operator(:) - keyword(print) ident(filename)operator(,) string<delimiter(")content(doesn't seem to be a valid file.)delimiter(")> - -keyword(if) ident(__name__) operator(==) string<delimiter(')content(__main__)delimiter(')>operator(:) - ident(main)operator(()operator(\)) - - -comment(# @@PLEAC@@_4.0) -comment(#-----------------------------) -comment(# Python does not automatically flatten lists, in other words) -comment(# in the following, non-nested contains four elements and) -comment(# nested contains three elements, the third element of which) -comment(# is itself a list containing two elements:) -ident(non_nested) operator(=) operator([)string<delimiter(")content(this)delimiter(")>operator(,) string<delimiter(")content(that)delimiter(")>operator(,) string<delimiter(")content(the)delimiter(")>operator(,) string<delimiter(")content(other)delimiter(")>operator(]) -ident(nested) operator(=) operator([)string<delimiter(")content(this)delimiter(")>operator(,) string<delimiter(")content(that)delimiter(")>operator(,) operator([)string<delimiter(")content(the)delimiter(")>operator(,) string<delimiter(")content(other)delimiter(")>operator(])operator(]) -comment(#-----------------------------) -ident(tune) operator(=) operator([)string<delimiter(")content(The)delimiter(")>operator(,) string<delimiter(")content(Star-Spangled)delimiter(")>operator(,) string<delimiter(")content(Banner)delimiter(")>operator(]) -comment(#-----------------------------) - -comment(# @@PLEAC@@_4.1) -comment(#-----------------------------) -ident(a) operator(=) operator([)string<delimiter(")content(quick)delimiter(")>operator(,) string<delimiter(")content(brown)delimiter(")>operator(,) string<delimiter(")content(fox)delimiter(")>operator(]) -ident(a) operator(=) string<delimiter(")content(Why are you teasing me?)delimiter(")>operator(.)ident(split)operator(()operator(\)) - -ident(text) operator(=) string<delimiter(""")content( -)content( The boy stood on the burning deck,)content( -)content( It was as hot as glass.)content( -)delimiter(""")> -ident(lines) operator(=) operator([)ident(line)operator(.)ident(lstrip)operator(()operator(\)) keyword(for) ident(line) keyword(in) ident(text)operator(.)ident(strip)operator(()operator(\))operator(.)ident(split)operator(()string<delimiter(")char(\\n)delimiter(")>operator(\))operator(]) -comment(#-----------------------------) -ident(biglist) operator(=) operator([)ident(line)operator(.)ident(rstrip)operator(()operator(\)) keyword(for) ident(line) keyword(in) predefined(open)operator(()string<delimiter(")content(mydatafile)delimiter(")>operator(\))operator(]) -comment(#-----------------------------) -ident(banner) operator(=) string<delimiter(")content(The Mines of Moria)delimiter(")> -ident(banner) operator(=) string<delimiter(')content(The Mines of Moria)delimiter(')> -comment(#-----------------------------) -ident(name) operator(=) string<delimiter(")content(Gandalf)delimiter(")> -ident(banner) operator(=) string<delimiter(")content(Speak, )delimiter(")> operator(+) ident(name) operator(+) string<delimiter(")content(, and enter!)delimiter(")> -ident(banner) operator(=) string<delimiter(")content(Speak, %s, and welcome!)delimiter(")> operator(%) ident(name) -comment(#-----------------------------) -ident(his_host) operator(=) string<delimiter(")content(www.python.org)delimiter(")> -keyword(import) include(os) -ident(host_info) operator(=) ident(os)operator(.)ident(popen)operator(()string<delimiter(")content(nslookup )delimiter(")> operator(+) ident(his_host)operator(\))operator(.)ident(read)operator(()operator(\)) - -comment(# NOTE: not really relevant to Python (no magic '$$' variable\)) -ident(python_info) operator(=) ident(os)operator(.)ident(popen)operator(()string<delimiter(")content(ps %d)delimiter(")> operator(%) ident(os)operator(.)ident(getpid)operator(()operator(\))operator(\))operator(.)ident(read)operator(()operator(\)) -ident(shell_info) operator(=) ident(os)operator(.)ident(popen)operator(()string<delimiter(")content(ps $$)delimiter(")>operator(\))operator(.)ident(read)operator(()operator(\)) -comment(#-----------------------------) -comment(# NOTE: not really relevant to Python (no automatic interpolation\)) -ident(banner) operator(=) operator([)string<delimiter(")content(Costs)delimiter(")>operator(,) string<delimiter(")content(only)delimiter(")>operator(,) string<delimiter(")content($4.95)delimiter(")>operator(]) -ident(banner) operator(=) string<delimiter(")content(Costs only $4.95)delimiter(")>operator(.)ident(split)operator(()operator(\)) -comment(#-----------------------------) -ident(brax) operator(=) string<delimiter(""")content( ' " ( \) < > { } [ ] )delimiter(""")>operator(.)ident(split)operator(()operator(\)) comment(#""") -ident(brax) operator(=) predefined(list)operator(()string<delimiter(""")content('"(\)<>{}[])delimiter(""")>operator(\)) comment(#""") -ident(rings) operator(=) string<delimiter(''')content(They're "Nenya Narya Vilya")delimiter(''')>operator(.)ident(split)operator(()operator(\)) comment(#''') -ident(tags) operator(=) string<delimiter(')content(LI TABLE TR TD A IMG H1 P)delimiter(')>operator(.)ident(split)operator(()operator(\)) -ident(sample) operator(=) string<modifier(r)delimiter(')content(The backslash ()content(\\\))content( is often used in regular expressions.)delimiter(')>operator(.)ident(split)operator(()operator(\)) - -comment(#-----------------------------) -ident(banner) operator(=) string<delimiter(")content(The backslash ()char(\\\\)content(\) is often used in regular expressions.)delimiter(")>operator(.)ident(split)operator(()operator(\)) -comment(#-----------------------------) -ident(ships) operator(=) string<modifier(u)delimiter(")content(Niña Pinta Santa MarÃa)delimiter(")>operator(.)ident(split)operator(()operator(\)) comment(# WRONG (only three ships\)) -ident(ships) operator(=) operator([)string<modifier(u)delimiter(")content(Niña)delimiter(")>operator(,) string<modifier(u)delimiter(")content(Pinta)delimiter(")>operator(,) string<modifier(u)delimiter(")content(Santa MarÃa)delimiter(")>operator(]) comment(# right) -comment(#-----------------------------) - -comment(# @@PLEAC@@_4.2) -comment(#-----------------------------) -keyword(def) method(commify_series)operator(()ident(args)operator(\))operator(:) - ident(n) operator(=) predefined(len)operator(()ident(args)operator(\)) - keyword(if) ident(n) operator(==) integer(0)operator(:) - keyword(return) string<delimiter(")delimiter(")> - keyword(elif) ident(n) operator(==) integer(1)operator(:) - keyword(return) ident(args)operator([)integer(0)operator(]) - keyword(elif) ident(n) operator(==) integer(2)operator(:) - keyword(return) ident(args)operator([)integer(0)operator(]) operator(+) string<delimiter(")content( and )delimiter(")> operator(+) ident(args)operator([)integer(1)operator(]) - keyword(return) string<delimiter(")content(, )delimiter(")>operator(.)ident(join)operator(()ident(args)operator([)operator(:)operator(-)integer(1)operator(])operator(\)) operator(+) string<delimiter(")content(, and )delimiter(")> operator(+) ident(args)operator([)operator(-)integer(1)operator(]) - -ident(commify_series)operator(()operator([)operator(])operator(\)) -ident(commify_series)operator(()operator([)string<delimiter(")content(red)delimiter(")>operator(])operator(\)) -ident(commify_series)operator(()operator([)string<delimiter(")content(red)delimiter(")>operator(,) string<delimiter(")content(yellow)delimiter(")>operator(])operator(\)) -ident(commify_series)operator(()operator([)string<delimiter(")content(red)delimiter(")>operator(,) string<delimiter(")content(yellow)delimiter(")>operator(,) string<delimiter(")content(green)delimiter(")>operator(])operator(\)) -comment(#-----------------------------) -ident(mylist) operator(=) operator([)string<delimiter(")content(red)delimiter(")>operator(,) string<delimiter(")content(yellow)delimiter(")>operator(,) string<delimiter(")content(green)delimiter(")>operator(]) -keyword(print) string<delimiter(")content(I have)delimiter(")>operator(,) ident(mylist)operator(,) string<delimiter(")content(marbles.)delimiter(")> -keyword(print) string<delimiter(")content(I have)delimiter(")>operator(,) string<delimiter(")content( )delimiter(")>operator(.)ident(join)operator(()ident(mylist)operator(\))operator(,) string<delimiter(")content(marbles.)delimiter(")> -comment(#=> I have ['red', 'yellow', 'green'] marbles.) -comment(#=> I have red yellow green marbles.) - -comment(#-----------------------------) -comment(#!/usr/bin/env python) -comment(# commify_series - show proper comma insertion in list output) -ident(data) operator(=) operator(() - operator(() string<delimiter(')content(just one thing)delimiter(')>operator(,) operator(\))operator(,) - operator(() string<delimiter(')content(Mutt Jeff)delimiter(')>operator(.)ident(split)operator(()operator(\)) operator(\))operator(,) - operator(() string<delimiter(')content(Peter Paul Mary)delimiter(')>operator(.)ident(split)operator(()operator(\)) operator(\))operator(,) - operator(() string<delimiter(')content(To our parents)delimiter(')>operator(,) string<delimiter(')content(Mother Theresa)delimiter(')>operator(,) string<delimiter(')content(God)delimiter(')> operator(\))operator(,) - operator(() string<delimiter(')content(pastrami)delimiter(')>operator(,) string<delimiter(')content(ham and cheese)delimiter(')>operator(,) string<delimiter(')content(peanut butter and jelly)delimiter(')>operator(,) string<delimiter(')content(tuna)delimiter(')> operator(\))operator(,) - operator(() string<delimiter(')content(recycle tired, old phrases)delimiter(')>operator(,) string<delimiter(')content(ponder big, happy thoughts)delimiter(')> operator(\))operator(,) - operator(() string<delimiter(')content(recycle tired, old phrases)delimiter(')>operator(,) - string<delimiter(')content(ponder big, happy thoughts)delimiter(')>operator(,) - string<delimiter(')content(sleep and dream peacefully)delimiter(')> operator(\))operator(,) - operator(\)) - -keyword(def) method(commify_series)operator(()ident(terms)operator(\))operator(:) - keyword(for) ident(term) keyword(in) ident(terms)operator(:) - keyword(if) string<delimiter(")content(,)delimiter(")> keyword(in) ident(term)operator(:) - ident(sepchar) operator(=) string<delimiter(")content(; )delimiter(")> - keyword(break) - keyword(else)operator(:) - ident(sepchar) operator(=) string<delimiter(")content(, )delimiter(")> - - ident(n) operator(=) predefined(len)operator(()ident(terms)operator(\)) - keyword(if) ident(n) operator(==) integer(0)operator(:) - keyword(return) string<delimiter(")delimiter(")> - keyword(elif) ident(n) operator(==) integer(1)operator(:) - keyword(return) ident(terms)operator([)integer(0)operator(]) - keyword(elif) ident(n) operator(==) integer(2)operator(:) - keyword(return) string<delimiter(")content( and )delimiter(")>operator(.)ident(join)operator(()ident(terms)operator(\)) - keyword(return) string<delimiter(")content(%s%sand %s)delimiter(")> operator(%) operator(()ident(sepchar)operator(.)ident(join)operator(()ident(terms)operator([)operator(:)operator(-)integer(1)operator(])operator(\))operator(,) ident(sepchar)operator(,) ident(terms)operator([)operator(-)integer(1)operator(])operator(\)) - -keyword(for) ident(item) keyword(in) ident(data)operator(:) - keyword(print) string<delimiter(")content(The list is: %s.)delimiter(")> operator(%) ident(commify_series)operator(()ident(item)operator(\)) - -comment(#=> The list is: just one thing.) -comment(#=> The list is: Mutt and Jeff.) -comment(#=> The list is: Peter, Paul, and Mary.) -comment(#=> The list is: To our parents, Mother Theresa, and God.) -comment(#=> The list is: pastrami, ham and cheese, peanut butter and jelly, and tuna.) -comment(#=> The list is: recycle tired, old phrases and ponder big, happy thoughts.) -comment(#=> The list is: recycle tired, old phrases; ponder big, happy thoughts; and) -comment(# sleep and dream peacefully.) -comment(#-----------------------------) - -comment(# @@PLEAC@@_4.3) -comment(#-----------------------------) -comment(# Python allocates more space than is necessary every time a list needs to) -comment(# grow and only shrinks lists when more than half the available space is) -comment(# unused. This means that adding or removing an element will in most cases) -comment(# not force a reallocation.) - -keyword(del) ident(mylist)operator([)ident(size)operator(:)operator(]) comment(# shrink mylist) -ident(mylist) operator(+=) operator([)pre_constant(None)operator(]) operator(*) ident(size) comment(# grow mylist by appending 'size' None elements) - -comment(# To add an element to the end of a list, use the append method:) -ident(mylist)operator(.)ident(append)operator(()integer(4)operator(\)) - -comment(# To insert an element, use the insert method:) -ident(mylist)operator(.)ident(insert)operator(()integer(0)operator(,) integer(10)operator(\)) comment(# Insert 10 at the beginning of the list) - -comment(# To extend one list with the contents of another, use the extend method:) -ident(list2) operator(=) operator([)integer(1)operator(,)integer(2)operator(,)integer(3)operator(]) -ident(mylist)operator(.)ident(extend)operator(()ident(list2)operator(\)) - -comment(# To insert the contents of one list into another, overwriting zero or ) -comment(# more elements, specify a slice:) -ident(mylist)operator([)integer(1)operator(:)integer(1)operator(]) operator(=) ident(list2) comment(# Don't overwrite anything; grow mylist if needed) -ident(mylist)operator([)integer(2)operator(:)integer(3)operator(]) operator(=) ident(list2) comment(# Overwrite mylist[2] and grow mylist if needed) - -comment(# To remove one element from the middle of a list:) -comment(# To remove elements from the middle of a list:) -keyword(del) ident(mylist)operator([)ident(idx1)operator(:)ident(idx2)operator(]) comment(# 0 or more) -ident(x) operator(=) ident(mylist)operator(.)ident(pop)operator(()ident(idx)operator(\)) comment(# remove mylist[idx] and assign it to x) - -comment(# You cannot assign to or get a non-existent element:) -comment(# >>> x = []) -comment(# >>> x[4] = 5) -comment(#) -comment(# Traceback (most recent call last\):) -comment(# File "<pyshell#1>", line 1, in -toplevel-) -comment(# x[4] = 5) -comment(# IndexError: list assignment index out of range) -comment(#) -comment(# >>> print x[1000]) -comment(#) -comment(# Traceback (most recent call last\):) -comment(# File "<pyshell#16>", line 1, in -toplevel-) -comment(# print x[1000]) -comment(# IndexError: list index out of range) -comment(#-----------------------------) -keyword(def) method(what_about_that_list)operator(()ident(terms)operator(\))operator(:) - keyword(print) string<delimiter(")content(The list now has)delimiter(")>operator(,) predefined(len)operator(()ident(terms)operator(\))operator(,) string<delimiter(")content(elements.)delimiter(")> - keyword(print) string<delimiter(")content(The index of the last element is)delimiter(")>operator(,) predefined(len)operator(()ident(terms)operator(\))operator(-)integer(1)operator(,) string<delimiter(")content((or -1\).)delimiter(")> - keyword(print) string<delimiter(")content(Element #3 is %s.)delimiter(")> operator(%) ident(terms)operator([)integer(3)operator(]) - -ident(people) operator(=) string<delimiter(")content(Crosby Stills Nash Young)delimiter(")>operator(.)ident(split)operator(()operator(\)) -ident(what_about_that_list)operator(()ident(people)operator(\)) -comment(#-----------------------------) -comment(#=> The list now has 4 elements.) -comment(#=> The index of the last element is 3 (or -1\).) -comment(#=> Element #3 is Young.) -comment(#-----------------------------) -ident(people)operator(.)ident(pop)operator(()operator(\)) -ident(what_about_that_list)operator(()ident(people)operator(\)) -comment(#-----------------------------) -ident(people) operator(+=) operator([)pre_constant(None)operator(]) operator(*) operator(()integer(10000) operator(-) predefined(len)operator(()ident(people)operator(\))operator(\)) -comment(#-----------------------------) -comment(#>>> people += [None] * (10000 - len(people\)\)) -comment(#>>> what_about_that_list(people\)) -comment(#The list now has 10000 elements.) -comment(#The index of the last element is 9999 (or -1\).) -comment(#Element #3 is None.) -comment(#-----------------------------) - -comment(# @@PLEAC@@_4.4) -comment(#-----------------------------) -keyword(for) ident(item) keyword(in) ident(mylist)operator(:) - keyword(pass) comment(# do something with item) -comment(#-----------------------------) -keyword(for) ident(user) keyword(in) ident(bad_users)operator(:) - ident(complain)operator(()ident(user)operator(\)) -comment(#-----------------------------) -keyword(import) include(os) -keyword(for) operator(()ident(key)operator(,) ident(val)operator(\)) keyword(in) predefined(sorted)operator(()ident(os)operator(.)ident(environ)operator(.)ident(items)operator(()operator(\))operator(\))operator(:) - keyword(print) string<delimiter(")content(%s=%s)delimiter(")> operator(%) operator(()ident(key)operator(,) ident(val)operator(\)) -comment(#-----------------------------) -keyword(for) ident(user) keyword(in) ident(all_users)operator(:) - ident(disk_space) operator(=) ident(get_usage)operator(()ident(user)operator(\)) comment(# find out how much disk space in use) - keyword(if) ident(disk_space) operator(>) ident(MAX_QUOTA)operator(:) comment(# if it's more than we want ...) - ident(complain)operator(()ident(user)operator(\)) comment(# ... then object vociferously) -comment(#-----------------------------) -keyword(import) include(os) -keyword(for) ident(line) keyword(in) ident(os)operator(.)ident(popen)operator(()string<delimiter(")content(who)delimiter(")>operator(\))operator(:) - keyword(if) string<delimiter(")content(dalke)delimiter(")> keyword(in) ident(line)operator(:) - keyword(print) ident(line)operator(,) comment(# or print line[:-1]) - -comment(# or:) -keyword(print) string<delimiter(")delimiter(")>operator(.)ident(join)operator(()operator([)ident(line) keyword(for) ident(line) keyword(in) ident(os)operator(.)ident(popen)operator(()string<delimiter(")content(who)delimiter(")>operator(\)) - keyword(if) string<delimiter(")content(dalke)delimiter(")> keyword(in) ident(line)operator(])operator(\))operator(,) - -comment(#-----------------------------) -keyword(for) ident(line) keyword(in) ident(myfile)operator(:) - keyword(for) ident(word) keyword(in) ident(line)operator(.)ident(split)operator(()operator(\))operator(:) comment(# Split on whitespace) - keyword(print) ident(word)operator([)operator(:)operator(:)operator(-)integer(1)operator(])operator(,) comment(# reverse word) - keyword(print) - -comment(# pre 2.3:) -keyword(for) ident(line) keyword(in) ident(myfile)operator(:) - keyword(for) ident(word) keyword(in) ident(line)operator(.)ident(split)operator(()operator(\))operator(:) comment(# Split on whitespace) - ident(chars) operator(=) predefined(list)operator(()ident(word)operator(\)) comment(# Turn the string into a list of characters) - ident(chars)operator(.)ident(reverse)operator(()operator(\)) - keyword(print) string<delimiter(")delimiter(")>operator(.)ident(join)operator(()ident(chars)operator(\))operator(,) - keyword(print) -comment(#-----------------------------) -keyword(for) ident(item) keyword(in) ident(mylist)operator(:) - keyword(print) string<delimiter(")content(i =)delimiter(")>operator(,) ident(item) -comment(#-----------------------------) -comment(# NOTE: you can't modify in place the way Perl does:) -comment(# data = [1, 2, 3]) -comment(# for elem in data:) -comment(# elem -= 1) -comment(#print data) -comment(#=>[1, 2, 3]) - -ident(data) operator(=) operator([)integer(1)operator(,) integer(2)operator(,) integer(3)operator(]) -ident(data) operator(=) operator([)ident(i)operator(-)integer(1) keyword(for) ident(i) keyword(in) ident(data)operator(]) -keyword(print) ident(data) -comment(#=>[0, 1, 2]) - -comment(# or) -keyword(for) ident(i)operator(,) ident(elem) keyword(in) predefined(enumerate)operator(()ident(data)operator(\))operator(:) - ident(data)operator([)ident(i)operator(]) operator(=) ident(elem) operator(-) integer(1) -comment(#-----------------------------) -comment(# NOTE: strings are immutable in Python so this doesn't translate well.) -ident(s) operator(=) ident(s)operator(.)ident(strip)operator(()operator(\)) -ident(data) operator(=) operator([)ident(s)operator(.)ident(strip)operator(()operator(\)) keyword(for) ident(s) keyword(in) ident(data)operator(]) -keyword(for) ident(k)operator(,) ident(v) keyword(in) ident(mydict)operator(.)ident(items)operator(()operator(\))operator(:) - ident(mydict)operator([)ident(k)operator(]) operator(=) ident(v)operator(.)ident(strip)operator(()operator(\)) -comment(#-----------------------------) - -comment(# @@PLEAC@@_4.5) -comment(#-----------------------------) -ident(fruits) operator(=) operator([)string<delimiter(")content(Apple)delimiter(")>operator(,) string<delimiter(")content(Blackberry)delimiter(")>operator(]) -keyword(for) ident(fruit) keyword(in) ident(fruits)operator(:) - keyword(print) ident(fruit)operator(,) string<delimiter(")content(tastes good in a pie.)delimiter(")> -comment(#=> Apple tastes good in a pie.) -comment(#=> Blackberry tastes good in a pie.) -comment(#-----------------------------) -comment(# DON'T DO THIS:) -keyword(for) ident(i) keyword(in) predefined(range)operator(()predefined(len)operator(()ident(fruits)operator(\))operator(\))operator(:) - keyword(print) ident(fruits)operator([)ident(i)operator(])operator(,) string<delimiter(")content(tastes good in a pie.)delimiter(")> - -comment(# If you must explicitly index, use enumerate(\):) -keyword(for) ident(i)operator(,) ident(fruit) keyword(in) predefined(enumerate)operator(()ident(fruits)operator(\))operator(:) - keyword(print) string<delimiter(")content(%s\) %s tastes good in a pie.)delimiter(")>operator(%)operator(()ident(i)operator(+)integer(1)operator(,) ident(fruit)operator(\)) -comment(#-----------------------------) -ident(rogue_cats) operator(=) operator([)string<delimiter(")content(Morris)delimiter(")>operator(,) string<delimiter(")content(Felix)delimiter(")>operator(]) -ident(namedict) operator(=) operator({) string<delimiter(")content(felines)delimiter(")>operator(:) ident(rogue_cats) operator(}) -keyword(for) ident(cat) keyword(in) ident(namedict)operator([)string<delimiter(")content(felines)delimiter(")>operator(])operator(:) - keyword(print) ident(cat)operator(,) string<delimiter(")content(purrs hypnotically.)delimiter(")> -keyword(print) string<delimiter(")content(--More--)char(\\n)content(You are controlled.)delimiter(")> -comment(#-----------------------------) -comment(# As noted before, if you need an index, use enumerate(\) and not this:) -keyword(for) ident(i) keyword(in) predefined(range)operator(()predefined(len)operator(()ident(namedict)operator([)string<delimiter(")content(felines)delimiter(")>operator(])operator(\))operator(\))operator(:) - keyword(print) ident(namedict)operator([)string<delimiter(")content(felines)delimiter(")>operator(])operator([)ident(i)operator(])operator(,) string<delimiter(")content(purrs hypnotically.)delimiter(")> -comment(#-----------------------------) - -comment(# @@PLEAC@@_4.6) -comment(#-----------------------------) -ident(uniq) operator(=) predefined(list)operator(()predefined(set)operator(()ident(mylist)operator(\))operator(\)) -comment(#-----------------------------) -comment(# See http://aspn.activestate.com/ASPN/Cookbook/Python/Recipe/259174) -comment(# for a more heavyweight version of a bag) -ident(seen) operator(=) operator({)operator(}) -keyword(for) ident(item) keyword(in) ident(mylist)operator(:) - ident(seen)operator([)ident(item)operator(]) operator(=) ident(seen)operator(.)ident(get)operator(()ident(item)operator(,) integer(0)operator(\)) operator(+) integer(1) - -ident(uniq) operator(=) ident(seen)operator(.)ident(keys)operator(()operator(\)) -comment(#-----------------------------) -ident(seen) operator(=) operator({)operator(}) -ident(uniq) operator(=) operator([)operator(]) -keyword(for) ident(item) keyword(in) ident(mylist)operator(:) - ident(count) operator(=) ident(seen)operator(.)ident(get)operator(()ident(item)operator(,) integer(0)operator(\)) - keyword(if) ident(count) operator(==) integer(0)operator(:) - ident(uniq)operator(.)ident(append)operator(()ident(item)operator(\)) - ident(seen)operator([)ident(item)operator(]) operator(=) ident(count) operator(+) integer(1) -comment(#-----------------------------) -comment(# generate a list of users logged in, removing duplicates) -keyword(import) include(os) -ident(usernames) operator(=) operator([)ident(line)operator(.)ident(split)operator(()operator(\))operator([)integer(0)operator(]) keyword(for) ident(line) keyword(in) ident(os)operator(.)ident(popen)operator(()string<delimiter(")content(who)delimiter(")>operator(\))operator(]) -ident(uniq) operator(=) predefined(sorted)operator(()predefined(set)operator(()ident(usernames)operator(\))operator(\)) -keyword(print) string<delimiter(")content(users logged in:)delimiter(")>operator(,) string<delimiter(")content( )delimiter(")>operator(.)ident(join)operator(()ident(uniq)operator(\)) - -comment(# DON'T DO THIS:) -keyword(import) include(os) -ident(ucnt) operator(=) operator({)operator(}) -keyword(for) ident(line) keyword(in) ident(os)operator(.)ident(popen)operator(()string<delimiter(")content(who)delimiter(")>operator(\))operator(:) - ident(username) operator(=) ident(line)operator(.)ident(split)operator(()operator(\))operator([)integer(0)operator(]) comment(# Get the first word) - ident(ucnt)operator([)ident(username)operator(]) operator(=) ident(ucnt)operator(.)ident(get)operator(()ident(username)operator(,) integer(0)operator(\)) operator(+) integer(1) comment(# record the users' presence) - -comment(# extract and print unique keys) -ident(users) operator(=) ident(ucnt)operator(.)ident(keys)operator(()operator(\)) -ident(users)operator(.)ident(sort)operator(()operator(\)) -keyword(print) string<delimiter(")content(users logged in:)delimiter(")>operator(,) string<delimiter(")content( )delimiter(")>operator(.)ident(join)operator(()ident(users)operator(\)) -comment(#-----------------------------) - -comment(# @@PLEAC@@_4.7) -comment(#-----------------------------) -comment(# assume a_list and b_list are already loaded) -ident(aonly) operator(=) operator([)ident(item) keyword(for) ident(item) keyword(in) ident(a_list) keyword(if) ident(item) keyword(not) keyword(in) ident(b_list)operator(]) - -comment(# A slightly more complex Pythonic version using sets - if you had a few) -comment(# lists, subtracting sets would be clearer than the listcomp version above) -ident(a_set) operator(=) predefined(set)operator(()ident(a_list)operator(\)) -ident(b_set) operator(=) predefined(set)operator(()ident(b_list)operator(\)) -ident(aonly) operator(=) predefined(list)operator(()ident(a_set) operator(-) ident(b_set)operator(\)) comment(# Elements in a_set but not in b_set) - -comment(# DON'T DO THIS.) -ident(seen) operator(=) operator({)operator(}) comment(# lookup table to test membership of B) -ident(aonly) operator(=) operator([)operator(]) comment(# answer) - -comment(# build lookup table) -keyword(for) ident(item) keyword(in) ident(b_list)operator(:) - ident(seen)operator([)ident(item)operator(]) operator(=) integer(1) - -comment(# find only elements in a_list and not in b_list) -keyword(for) ident(item) keyword(in) ident(a_list)operator(:) - keyword(if) keyword(not) ident(item) keyword(not) keyword(in) ident(seen)operator(:) - comment(# it's not in 'seen', so add to 'aonly') - ident(aonly)operator(.)ident(append)operator(()ident(item)operator(\)) -comment(#-----------------------------) -comment(# DON'T DO THIS. There's lots of ways not to do it.) -ident(seen) operator(=) operator({)operator(}) comment(# lookup table) -ident(aonly) operator(=) operator([)operator(]) comment(# answer) - -comment(# build lookup table - unnecessary and poor Python style) -operator([)ident(seen)operator(.)ident(update)operator(()operator({)ident(x)operator(:) integer(1)operator(})operator(\)) keyword(for) ident(x) keyword(in) ident(b_list)operator(]) - -ident(aonly) operator(=) operator([)ident(item) keyword(for) ident(item) keyword(in) ident(a_list) keyword(if) ident(item) keyword(not) keyword(in) ident(seen)operator(]) - -comment(#-----------------------------) -ident(aonly) operator(=) predefined(list)operator(()predefined(set)operator(()ident(a_list)operator(\))operator(\)) - -comment(# DON'T DO THIS.) -ident(seen) operator(=) operator({)operator(}) -ident(aonly) operator(=) operator([)operator(]) -keyword(for) ident(item) keyword(in) ident(a_list)operator(:) - keyword(if) ident(item) keyword(not) keyword(in) ident(seen)operator(:) - ident(aonly)operator(.)ident(append)operator(()ident(item)operator(\)) - ident(seen)operator([)ident(item)operator(]) operator(=) integer(1) comment(# mark as seen) -comment(#-----------------------------) -ident(mydict)operator([)string<delimiter(")content(key1)delimiter(")>operator(]) operator(=) integer(1) -ident(mydict)operator([)string<delimiter(")content(key2)delimiter(")>operator(]) operator(=) integer(2) -comment(#-----------------------------) -ident(mydict)operator([)operator(()string<delimiter(")content(key1)delimiter(")>operator(,) string<delimiter(")content(key2)delimiter(")>operator(\))operator(]) operator(=) operator(()integer(1)operator(,)integer(2)operator(\)) -comment(#-----------------------------) -comment(# DON'T DO THIS:) -ident(seen) operator(=) predefined(dict)operator(.)ident(fromkeys)operator(()ident(B)operator(.)ident(keys)operator(()operator(\))operator(\)) - -comment(# DON'T DO THIS pre-2.3:) -ident(seen) operator(=) operator({)operator(}) -keyword(for) ident(term) keyword(in) ident(B)operator(:) - ident(seen)operator([)ident(term)operator(]) operator(=) pre_constant(None) -comment(#-----------------------------) -comment(# DON'T DO THIS:) -ident(seen) operator(=) operator({)operator(}) -keyword(for) ident(k)operator(,) ident(v) keyword(in) ident(B)operator(:) - ident(seen)operator([)ident(k)operator(]) operator(=) integer(1) -comment(#-----------------------------) - -comment(# @@PLEAC@@_4.8) -comment(#-----------------------------) -ident(a) operator(=) operator(()integer(1)operator(,) integer(3)operator(,) integer(5)operator(,) integer(6)operator(,) integer(7)operator(,) integer(8)operator(\)) -ident(b) operator(=) operator(()integer(2)operator(,) integer(3)operator(,) integer(5)operator(,) integer(7)operator(,) integer(9)operator(\)) - -ident(a_set) operator(=) predefined(set)operator(()ident(a)operator(\)) -ident(b_set) operator(=) predefined(set)operator(()ident(b)operator(\)) - -ident(union) operator(=) ident(a_set) operator(|) ident(b_set) comment(# or a_set.union(b_set\)) -ident(isect) operator(=) ident(a_set) operator(&) ident(b_set) comment(# or a_set.intersection(b_set\) ) -ident(diff) operator(=) ident(a_set) operator(^) ident(b_set) comment(# or a_set.symmetric_difference(b_set\)) - - -comment(# DON'T DO THIS:) -ident(union_list) operator(=) operator([)operator(])operator(;) ident(isect_list) operator(=) operator([)operator(])operator(;) ident(diff) operator(=) operator([)operator(]) -ident(union_dict) operator(=) operator({)operator(})operator(;) ident(isect_dict) operator(=) operator({)operator(}) -ident(count) operator(=) operator({)operator(}) -comment(#-----------------------------) -comment(# DON'T DO THIS:) -keyword(for) ident(e) keyword(in) ident(a)operator(:) - ident(union_dict)operator([)ident(e)operator(]) operator(=) integer(1) - -keyword(for) ident(e) keyword(in) ident(b)operator(:) - keyword(if) ident(union_dict)operator(.)ident(has_key)operator(()ident(e)operator(\))operator(:) - ident(isect_dict)operator([)ident(e)operator(]) operator(=) integer(1) - ident(union_dict)operator([)ident(e)operator(]) operator(=) integer(1) - -ident(union_list) operator(=) ident(union_dict)operator(.)ident(keys)operator(()operator(\)) -ident(isect_list) operator(=) ident(isect_dict)operator(.)ident(keys)operator(()operator(\)) -comment(#-----------------------------) -comment(# DON'T DO THIS:) -keyword(for) ident(e) keyword(in) ident(a) operator(+) ident(b)operator(:) - keyword(if) ident(union)operator(.)ident(get)operator(()ident(e)operator(,) integer(0)operator(\)) operator(==) integer(0)operator(:) - ident(isect)operator([)ident(e)operator(]) operator(=) integer(1) - ident(union)operator([)ident(e)operator(]) operator(=) integer(1) - -ident(union) operator(=) ident(union)operator(.)ident(keys)operator(()operator(\)) -ident(isect) operator(=) ident(isect)operator(.)ident(keys)operator(()operator(\)) -comment(#-----------------------------) -comment(# DON'T DO THIS:) -ident(count) operator(=) operator({)operator(}) -keyword(for) ident(e) keyword(in) ident(a) operator(+) ident(b)operator(:) - ident(count)operator([)ident(e)operator(]) operator(=) ident(count)operator(.)ident(get)operator(()ident(e)operator(,) integer(0)operator(\)) operator(+) integer(1) - -ident(union) operator(=) operator([)operator(])operator(;) ident(isect) operator(=) operator([)operator(])operator(;) ident(diff) operator(=) operator([)operator(]) - -keyword(for) ident(e) keyword(in) ident(count)operator(.)ident(keys)operator(()operator(\))operator(:) - ident(union)operator(.)ident(append)operator(()ident(e)operator(\)) - keyword(if) ident(count)operator([)ident(e)operator(]) operator(==) integer(2)operator(:) - ident(isect)operator(.)ident(append)operator(()ident(e)operator(\)) - keyword(else)operator(:) - ident(diff)operator(.)ident(append)operator(()ident(e)operator(\)) -comment(#-----------------------------) -comment(# DON'T DO THIS:) -ident(isect) operator(=) operator([)operator(])operator(;) ident(diff) operator(=) operator([)operator(])operator(;) ident(union) operator(=) operator([)operator(]) -ident(count) operator(=) operator({)operator(}) -keyword(for) ident(e) keyword(in) ident(a) operator(+) ident(b)operator(:) - ident(count)operator([)ident(e)operator(]) operator(=) ident(count)operator(.)ident(get)operator(()ident(e)operator(,) integer(0)operator(\)) operator(+) integer(1) - -keyword(for) ident(e)operator(,) ident(num) keyword(in) ident(count)operator(.)ident(items)operator(()operator(\))operator(:) - ident(union)operator(.)ident(append)operator(()ident(e)operator(\)) - operator([)pre_constant(None)operator(,) ident(diff)operator(,) ident(isect)operator(])operator([)ident(num)operator(])operator(.)ident(append)operator(()ident(e)operator(\)) -comment(#-----------------------------) - -comment(# @@PLEAC@@_4.9) -comment(#-----------------------------) -comment(# "append" for a single term and) -comment(# "extend" for many terms) -ident(mylist1)operator(.)ident(extend)operator(()ident(mylist2)operator(\)) -comment(#-----------------------------) -ident(mylist1) operator(=) ident(mylist1) operator(+) ident(mylist2) -ident(mylist1) operator(+=) ident(mylist2) -comment(#-----------------------------) -ident(members) operator(=) operator([)string<delimiter(")content(Time)delimiter(")>operator(,) string<delimiter(")content(Flies)delimiter(")>operator(]) -ident(initiates) operator(=) operator([)string<delimiter(")content(An)delimiter(")>operator(,) string<delimiter(")content(Arrow)delimiter(")>operator(]) -ident(members)operator(.)ident(extend)operator(()ident(initiates)operator(\)) -comment(# members is now ["Time", "Flies", "An", "Arrow"]) -comment(#-----------------------------) -ident(members)operator([)integer(2)operator(:)operator(]) operator(=) operator([)string<delimiter(")content(Like)delimiter(")>operator(]) operator(+) ident(initiates) -keyword(print) string<delimiter(")content( )delimiter(")>operator(.)ident(join)operator(()ident(members)operator(\)) -ident(members)operator([)operator(:)integer(1)operator(]) operator(=) operator([)string<delimiter(")content(Fruit)delimiter(")>operator(]) comment(# or members[1] = "Fruit") -ident(members)operator([)operator(-)integer(2)operator(:)operator(]) operator(=) operator([)string<delimiter(")content(A)delimiter(")>operator(,) string<delimiter(")content(Banana)delimiter(")>operator(]) -keyword(print) string<delimiter(")content( )delimiter(")>operator(.)ident(join)operator(()ident(members)operator(\)) -comment(#-----------------------------) -comment(#=> Time Flies Like An Arrow) -comment(#=> Fruit Flies Like A Banana) -comment(#-----------------------------) - -comment(# @@PLEAC@@_4.10) -comment(#-----------------------------) -comment(# reverse mylist into revlist) - -ident(revlist) operator(=) ident(mylist)operator([)operator(:)operator(:)operator(-)integer(1)operator(]) - -comment(# or) -ident(revlist) operator(=) predefined(list)operator(()predefined(reversed)operator(()ident(mylist)operator(\))operator(\)) - -comment(# or pre-2.3) -ident(revlist) operator(=) ident(mylist)operator([)operator(:)operator(]) comment(# shallow copy) -ident(revlist)operator(.)ident(reverse)operator(()operator(\)) -comment(#-----------------------------) -keyword(for) ident(elem) keyword(in) predefined(reversed)operator(()ident(mylist)operator(\))operator(:) - keyword(pass) comment(# do something with elem) - -comment(# or) -keyword(for) ident(elem) keyword(in) ident(mylist)operator([)operator(:)operator(:)operator(-)integer(1)operator(])operator(:) - keyword(pass) comment(# do something with elem) - -comment(# if you need the index and the list won't take too much memory:) -keyword(for) ident(i)operator(,) ident(elem) keyword(in) predefined(reversed)operator(()predefined(list)operator(()predefined(enumerate)operator(()ident(mylist)operator(\))operator(\))operator(\))operator(:) - keyword(pass) - -comment(# If you absolutely must explicitly index:) -keyword(for) ident(i) keyword(in) predefined(range)operator(()predefined(len)operator(()ident(mylist)operator(\))operator(-)integer(1)operator(,) operator(-)integer(1)operator(,) operator(-)integer(1)operator(\))operator(:) - keyword(pass) -comment(#-----------------------------) -ident(descending) operator(=) predefined(sorted)operator(()ident(users)operator(,) ident(reverse)operator(=)pre_constant(True)operator(\)) -comment(#-----------------------------) - -comment(# @@PLEAC@@_4.11) -comment(#-----------------------------) -comment(# remove n elements from the front of mylist) -ident(mylist)operator([)operator(:)ident(n)operator(]) operator(=) operator([)operator(]) comment(# or del mylist[:n]) - -comment(# remove n elements from front of mylist, saving them into front) -ident(front)operator(,) ident(mylist)operator([)operator(:)ident(n)operator(]) operator(=) ident(mylist)operator([)operator(:)ident(n)operator(])operator(,) operator([)operator(]) - -comment(# remove 1 element from the front of mylist, saving it in front:) -ident(front) operator(=) ident(mylist)operator(.)ident(pop)operator(()integer(0)operator(\)) - -comment(# remove n elements from the end of mylist) -ident(mylist)operator([)operator(-)ident(n)operator(:)operator(]) operator(=) operator([)operator(]) comment(# or del mylist[-n:]) - -comment(# remove n elements from the end of mylist, saving them in end) -ident(end)operator(,) ident(mylist)operator([)operator(-)ident(n)operator(:)operator(]) operator(=) ident(mylist)operator([)operator(-)ident(n)operator(:)operator(])operator(,) operator([)operator(]) - -comment(# remove 1 element from the end of mylist, saving it in end:) -ident(end) operator(=) ident(mylist)operator(.)ident(pop)operator(()operator(\)) - -comment(#-----------------------------) -keyword(def) method(shift2)operator(()ident(terms)operator(\))operator(:) - ident(front) operator(=) ident(terms)operator([)operator(:)integer(2)operator(]) - ident(terms)operator([)operator(:)integer(2)operator(]) operator(=) operator([)operator(]) - keyword(return) ident(front) - -keyword(def) method(pop2)operator(()ident(terms)operator(\))operator(:) - ident(back) operator(=) ident(terms)operator([)operator(-)integer(2)operator(:)operator(]) - ident(terms)operator([)operator(-)integer(2)operator(:)operator(]) operator(=) operator([)operator(]) - keyword(return) ident(back) -comment(#-----------------------------) -ident(friends) operator(=) string<delimiter(")content(Peter Paul Mary Jim Tim)delimiter(")>operator(.)ident(split)operator(()operator(\)) -ident(this)operator(,) ident(that) operator(=) ident(shift2)operator(()ident(friends)operator(\)) -comment(# 'this' contains Peter, 'that' has Paul, and) -comment(# 'friends' has Mary, Jim, and Tim) - -ident(beverages) operator(=) string<delimiter(")content(Dew Jolt Cola Sprite Fresca)delimiter(")>operator(.)ident(split)operator(()operator(\)) -ident(pair) operator(=) ident(pop2)operator(()ident(beverages)operator(\)) -comment(# pair[0] contains Sprite, pair[1] has Fresca,) -comment(# and 'beverages' has (Dew, Jolt, Cola\)) - -comment(# In general you probably shouldn't do things that way because it's ) -comment(# not clear from these calls that the lists are modified.) -comment(#-----------------------------) - -comment(# @@PLEAC@@_4.12) -keyword(for) ident(item) keyword(in) ident(mylist)operator(:) - keyword(if) ident(criterion)operator(:) - keyword(pass) comment(# do something with matched item) - keyword(break) -keyword(else)operator(:) - keyword(pass) comment(# unfound) -comment(#-----------------------------) -keyword(for) ident(idx)operator(,) ident(elem) keyword(in) predefined(enumerate)operator(()ident(mylist)operator(\))operator(:) - keyword(if) ident(criterion)operator(:) - keyword(pass) comment(# do something with elem found at mylist[idx]) - keyword(break) -keyword(else)operator(:) - keyword(pass) comment(## unfound) -comment(#-----------------------------) -comment(# Assuming employees are sorted high->low by wage.) -keyword(for) ident(employee) keyword(in) ident(employees)operator(:) - keyword(if) ident(employee)operator(.)ident(category) operator(==) string<delimiter(')content(engineer)delimiter(')>operator(:) - ident(highest_engineer) operator(=) ident(employee) - keyword(break) - -keyword(print) string<delimiter(")content(Highest paid engineer is:)delimiter(")>operator(,) ident(highest_engineer)operator(.)ident(name) -comment(#-----------------------------) -comment(# If you need the index, use enumerate:) -keyword(for) ident(i)operator(,) ident(employee) keyword(in) predefined(enumerate)operator(()ident(employees)operator(\))operator(:) - keyword(if) ident(employee)operator(.)ident(category) operator(==) string<delimiter(')content(engineer)delimiter(')>operator(:) - ident(highest_engineer) operator(=) ident(employee) - keyword(break) -keyword(print) string<delimiter(")content(Highest paid engineer is: #%s - %s)delimiter(")> operator(%) operator(()ident(i)operator(,) ident(highest_engineer)operator(.)ident(name)operator(\)) - - -comment(# The following is rarely appropriate:) -keyword(for) ident(i) keyword(in) predefined(range)operator(()predefined(len)operator(()ident(mylist)operator(\))operator(\))operator(:) - keyword(if) ident(criterion)operator(:) - keyword(pass) comment(# do something) - keyword(break) -keyword(else)operator(:) - keyword(pass) comment(## not found) -comment(#-----------------------------) - - -comment(# @@PLEAC@@_4.13) -ident(matching) operator(=) operator([)ident(term) keyword(for) ident(term) keyword(in) ident(mylist) keyword(if) ident(test)operator(()ident(term)operator(\))operator(]) -comment(#-----------------------------) -ident(matching) operator(=) operator([)operator(]) -keyword(for) ident(term) keyword(in) ident(mylist)operator(:) - keyword(if) ident(test)operator(()ident(term)operator(\))operator(:) - ident(matching)operator(.)ident(append)operator(()ident(term)operator(\)) -comment(#-----------------------------) -ident(bigs) operator(=) operator([)ident(num) keyword(for) ident(num) keyword(in) ident(nums) keyword(if) ident(num) operator(>) integer(1000000)operator(]) -ident(pigs) operator(=) operator([)ident(user) keyword(for) operator(()ident(user)operator(,) ident(val)operator(\)) keyword(in) ident(users)operator(.)ident(items)operator(()operator(\)) keyword(if) ident(val) operator(>) float(1e7)operator(]) -comment(#-----------------------------) -keyword(import) include(os) -ident(matching) operator(=) operator([)ident(line) keyword(for) ident(line) keyword(in) ident(os)operator(.)ident(popen)operator(()string<delimiter(")content(who)delimiter(")>operator(\)) - keyword(if) ident(line)operator(.)ident(startswith)operator(()string<delimiter(")content(gnat )delimiter(")>operator(\))operator(]) -comment(#-----------------------------) -ident(engineers) operator(=) operator([)ident(employee) keyword(for) ident(employee) keyword(in) ident(employees) - keyword(if) ident(employee)operator(.)ident(position) operator(==) string<delimiter(")content(Engineer)delimiter(")>operator(]) -comment(#-----------------------------) -ident(secondary_assistance) operator(=) operator([)ident(applicant) keyword(for) ident(applicant) keyword(in) ident(applicants) - keyword(if) integer(26000) operator(<=) ident(applicant)operator(.)ident(income) operator(<) integer(30000)operator(]) -comment(#-----------------------------) - -comment(# @@PLEAC@@_4.14) -ident(sorted_list) operator(=) predefined(sorted)operator(()ident(unsorted_list)operator(\)) -comment(#-----------------------------) -comment(# pids is an unsorted list of process IDs) -keyword(import) include(os)operator(,) include(signal)operator(,) include(time) -keyword(for) ident(pid) keyword(in) predefined(sorted)operator(()ident(pids)operator(\))operator(:) - keyword(print) ident(pid) - -ident(pid) operator(=) predefined(raw_input)operator(()string<delimiter(")content(Select a process ID to kill: )delimiter(")>operator(\)) -keyword(try)operator(:) - ident(pid) operator(=) predefined(int)operator(()ident(pid)operator(\)) -keyword(except) exception(ValueError)operator(:) - keyword(raise) exception(SystemExit)operator(()string<delimiter(")content(Exiting ... )delimiter(")>operator(\)) -ident(os)operator(.)ident(kill)operator(()ident(pid)operator(,) ident(signal)operator(.)ident(SIGTERM)operator(\)) -ident(time)operator(.)ident(sleep)operator(()integer(2)operator(\)) -keyword(try)operator(:) - ident(os)operator(.)ident(kill)operator(()ident(pid)operator(,) ident(signal)operator(.)ident(SIGKILL)operator(\)) -keyword(except) exception(OSError)operator(,) ident(err)operator(:) - keyword(if) ident(err)operator(.)ident(errno) operator(!=) integer(3)operator(:) comment(# was it already killed?) - keyword(raise) -comment(#-----------------------------) -ident(descending) operator(=) predefined(sorted)operator(()ident(unsorted_list)operator(,) ident(reverse)operator(=)pre_constant(True)operator(\)) -comment(#-----------------------------) -ident(allnums) operator(=) operator([)integer(4)operator(,) integer(19)operator(,) integer(8)operator(,) integer(3)operator(]) -ident(allnums)operator(.)ident(sort)operator(()ident(reverse)operator(=)pre_constant(True)operator(\)) comment(# inplace) -comment(#-----------------------------) -comment(# pre 2.3) -ident(allnums)operator(.)ident(sort)operator(()operator(\)) comment(# inplace) -ident(allnums)operator(.)ident(reverse)operator(()operator(\)) comment(# inplace) -comment(#or) -ident(allnums) operator(=) predefined(sorted)operator(()ident(allnums)operator(,) ident(reverse)operator(=)pre_constant(True)operator(\)) comment(# reallocating) -comment(#-----------------------------) - -comment(# @@PLEAC@@_4.15) -ident(ordered) operator(=) predefined(sorted)operator(()ident(unordered)operator(,) ident(cmp)operator(=)ident(compare)operator(\)) -comment(#-----------------------------) -ident(ordered) operator(=) predefined(sorted)operator(()ident(unordered)operator(,) ident(key)operator(=)ident(compute)operator(\)) - -comment(# ...which is somewhat equivalent to: ) -ident(precomputed) operator(=) operator([)operator(()ident(compute)operator(()ident(x)operator(\))operator(,) ident(x)operator(\)) keyword(for) ident(x) keyword(in) ident(unordered)operator(]) -ident(precomputed)operator(.)ident(sort)operator(()keyword(lambda) ident(a)operator(,) ident(b)operator(:) predefined(cmp)operator(()ident(a)operator([)integer(0)operator(])operator(,) ident(b)operator([)integer(0)operator(])operator(\))operator(\)) -ident(ordered) operator(=) operator([)ident(v) keyword(for) ident(k)operator(,)ident(v) keyword(in) ident(precomputed)operator(.)ident(items)operator(()operator(\))operator(]) -comment(#-----------------------------) -comment(# DON'T DO THIS.) -keyword(def) method(functional_sort)operator(()ident(mylist)operator(,) ident(function)operator(\))operator(:) - ident(mylist)operator(.)ident(sort)operator(()ident(function)operator(\)) - keyword(return) ident(mylist) - -ident(ordered) operator(=) operator([)ident(v) keyword(for) ident(k)operator(,)ident(v) keyword(in) ident(functional_sort)operator(()operator([)operator(()ident(compute)operator(()ident(x)operator(\))operator(,) ident(x)operator(\)) keyword(for) ident(x) keyword(in) ident(unordered)operator(])operator(,) - keyword(lambda) ident(a)operator(,) ident(b)operator(:) predefined(cmp)operator(()ident(a)operator([)integer(0)operator(])operator(,) ident(b)operator([)integer(0)operator(])operator(\))operator(\))operator(]) -comment(#-----------------------------) -ident(ordered) operator(=) predefined(sorted)operator(()ident(employees)operator(,) ident(key)operator(=)keyword(lambda) ident(x)operator(:) ident(x)operator(.)ident(name)operator(\)) -comment(#-----------------------------) -keyword(for) ident(employee) keyword(in) predefined(sorted)operator(()ident(employees)operator(,) ident(key)operator(=)keyword(lambda) ident(x)operator(:) ident(x)operator(.)ident(name)operator(\))operator(:) - keyword(print) string<delimiter(")content(%s earns $%s)delimiter(")> operator(%) operator(()ident(employee)operator(.)ident(name)operator(,) ident(employee)operator(.)ident(salary)operator(\)) -comment(#-----------------------------) -ident(sorted_employees) operator(=) predefined(sorted)operator(()ident(employees)operator(,) ident(key)operator(=)keyword(lambda) ident(x)operator(:) ident(x)operator(.)ident(name)operator(\))operator(:) -keyword(for) ident(employee) keyword(in) ident(sorted_employees)operator(:) - keyword(print) string<delimiter(")content(%s earns $%s)delimiter(")> operator(%) operator(()ident(employee)operator(.)ident(name)operator(,) ident(employee)operator(.)ident(salary)operator(\)) - -comment(# load bonus) -keyword(for) ident(employee) keyword(in) ident(sorted_employees)operator(:) - keyword(if) ident(bonus)operator(()ident(employee)operator(.)ident(ssn)operator(\))operator(:) - keyword(print) ident(employee)operator(.)ident(name)operator(,) string<delimiter(")content(got a bonus!)delimiter(")> -comment(#-----------------------------) -ident(sorted_employees) operator(=) predefined(sorted)operator(()ident(employees)operator(,) ident(key)operator(=)keyword(lambda) ident(x)operator(:) operator(()ident(x)operator(.)ident(name)operator(,) ident(x)operator(.)ident(age)operator(\))operator(\))operator(:) -comment(#-----------------------------) -comment(# NOTE: Python should allow access to the pwd fields by name) -comment(# as well as by position.) -keyword(import) include(pwd) -comment(# fetch all users) -ident(users) operator(=) ident(pwd)operator(.)ident(getpwall)operator(()operator(\)) -keyword(for) ident(user) keyword(in) predefined(sorted)operator(()ident(users)operator(,) ident(key)operator(=)keyword(lambda) ident(x)operator(:) ident(x)operator([)integer(0)operator(])operator(\))operator(:) - keyword(print) ident(user)operator([)integer(0)operator(]) -comment(#-----------------------------) -ident(sorted_list) operator(=) predefined(sorted)operator(()ident(names)operator(,) ident(key)operator(=)keyword(lambda) ident(x)operator(:) ident(x)operator([)operator(:)integer(1)operator(])operator(\)) -comment(#-----------------------------) -ident(sorted_list) operator(=) predefined(sorted)operator(()ident(strings)operator(,) ident(key)operator(=)predefined(len)operator(\)) -comment(#-----------------------------) -comment(# DON'T DO THIS.) -ident(temp) operator(=) operator([)operator(()predefined(len)operator(()ident(s)operator(\))operator(,) ident(s)operator(\)) keyword(for) ident(s) keyword(in) ident(strings)operator(]) -ident(temp)operator(.)ident(sort)operator(()keyword(lambda) ident(a)operator(,) ident(b)operator(:) predefined(cmp)operator(()ident(a)operator([)integer(0)operator(])operator(,) ident(b)operator([)integer(0)operator(])operator(\))operator(\)) -ident(sorted_list) operator(=) operator([)ident(x)operator([)integer(1)operator(]) keyword(for) ident(x) keyword(in) ident(temp)operator(]) -comment(#-----------------------------) -comment(# DON'T DO THIS.) -keyword(def) method(functional_sort)operator(()ident(mylist)operator(,) ident(function)operator(\))operator(:) - ident(mylist)operator(.)ident(sort)operator(()ident(function)operator(\)) - keyword(return) ident(mylist) - -ident(sorted_fields) operator(=) operator([)ident(v) keyword(for) ident(k)operator(,)ident(v) keyword(in) ident(functional_sort)operator(() - operator([)operator(()predefined(int)operator(()ident(re)operator(.)ident(search)operator(()string<modifier(r)delimiter(")content(()content(\\d)content(+\))delimiter(")>operator(,) ident(x)operator(\))operator(.)ident(group)operator(()integer(1)operator(\))operator(\))operator(,) ident(x)operator(\)) keyword(for) ident(x) keyword(in) ident(fields)operator(])operator(,) - keyword(lambda) ident(a)operator(,) ident(b)operator(:) predefined(cmp)operator(()ident(a)operator([)integer(0)operator(])operator(,) ident(b)operator([)integer(0)operator(])operator(\))operator(\))operator(]) -comment(#-----------------------------) -ident(entries) operator(=) operator([)ident(line)operator([)operator(:)operator(-)integer(1)operator(])operator(.)ident(split)operator(()operator(\)) keyword(for) ident(line) keyword(in) predefined(open)operator(()string<delimiter(")content(/etc/passwd)delimiter(")>operator(\))operator(]) - -keyword(for) ident(entry) keyword(in) predefined(sorted)operator(()ident(entries)operator(,) ident(key)operator(=)keyword(lambda) ident(x)operator(:) operator(()ident(x)operator([)integer(3)operator(])operator(,) ident(x)operator([)integer(2)operator(])operator(,) ident(x)operator([)integer(0)operator(])operator(\))operator(\))operator(:) - keyword(print) ident(entry) -comment(#-----------------------------) - -comment(# @@PLEAC@@_4.16) -comment(#-----------------------------) -keyword(import) include(itertools) -keyword(for) ident(process) keyword(in) ident(itertools)operator(.)ident(cycle)operator(()operator([)integer(1)operator(,) integer(2)operator(,) integer(3)operator(,) integer(4)operator(,) integer(5)operator(])operator(\))operator(:) - keyword(print) string<delimiter(")content(Handling process)delimiter(")>operator(,) ident(process) - ident(time)operator(.)ident(sleep)operator(()integer(1)operator(\)) - -comment(# pre 2.3:) -keyword(import) include(time) -keyword(class) class(Circular)operator(()predefined(object)operator(\))operator(:) - keyword(def) method(__init__)operator(()pre_constant(self)operator(,) ident(data)operator(\))operator(:) - keyword(assert) predefined(len)operator(()ident(data)operator(\)) operator(>=) integer(1)operator(,) string<delimiter(")content(Cannot use an empty list)delimiter(")> - pre_constant(self)operator(.)ident(data) operator(=) ident(data) - - keyword(def) method(__iter__)operator(()pre_constant(self)operator(\))operator(:) - keyword(while) pre_constant(True)operator(:) - keyword(for) ident(elem) keyword(in) pre_constant(self)operator(.)ident(data)operator(:) - keyword(yield) ident(elem) - -ident(circular) operator(=) ident(Circular)operator(()operator([)integer(1)operator(,) integer(2)operator(,) integer(3)operator(,) integer(4)operator(,) integer(5)operator(])operator(\)) - -keyword(for) ident(process) keyword(in) ident(circular)operator(:) - keyword(print) string<delimiter(")content(Handling process)delimiter(")>operator(,) ident(process) - ident(time)operator(.)ident(sleep)operator(()integer(1)operator(\)) - -comment(# DON'T DO THIS. All those pops and appends mean that the list needs to be ) -comment(# constantly reallocated. This is rather bad if your list is large:) -keyword(import) include(time) -keyword(class) class(Circular)operator(()predefined(object)operator(\))operator(:) - keyword(def) method(__init__)operator(()pre_constant(self)operator(,) ident(data)operator(\))operator(:) - keyword(assert) predefined(len)operator(()ident(data)operator(\)) operator(>=) integer(1)operator(,) string<delimiter(")content(Cannot use an empty list)delimiter(")> - pre_constant(self)operator(.)ident(data) operator(=) ident(data) - - keyword(def) method(next)operator(()pre_constant(self)operator(\))operator(:) - ident(head) operator(=) pre_constant(self)operator(.)ident(data)operator(.)ident(pop)operator(()integer(0)operator(\)) - pre_constant(self)operator(.)ident(data)operator(.)ident(append)operator(()ident(head)operator(\)) - keyword(return) ident(head) - -ident(circular) operator(=) ident(Circular)operator(()operator([)integer(1)operator(,) integer(2)operator(,) integer(3)operator(,) integer(4)operator(,) integer(5)operator(])operator(\)) -keyword(while) pre_constant(True)operator(:) - ident(process) operator(=) ident(circular)operator(.)ident(next)operator(()operator(\)) - keyword(print) string<delimiter(")content(Handling process)delimiter(")>operator(,) ident(process) - ident(time)operator(.)ident(sleep)operator(()integer(1)operator(\)) -comment(#-----------------------------) - -comment(# @@PLEAC@@_4.17) -comment(#-----------------------------) -comment(# generate a random permutation of mylist in place) -keyword(import) include(random) -ident(random)operator(.)ident(shuffle)operator(()ident(mylist)operator(\)) -comment(#-----------------------------) - -comment(# @@PLEAC@@_4.18) -comment(#-----------------------------) -keyword(import) include(sys) - -keyword(def) method(make_columns)operator(()ident(mylist)operator(,) ident(screen_width)operator(=)integer(78)operator(\))operator(:) - keyword(if) ident(mylist)operator(:) - ident(maxlen) operator(=) predefined(max)operator(()operator([)predefined(len)operator(()ident(elem)operator(\)) keyword(for) ident(elem) keyword(in) ident(mylist)operator(])operator(\)) - ident(maxlen) operator(+=) integer(1) comment(# to make extra space) - - ident(cols) operator(=) predefined(max)operator(()integer(1)operator(,) ident(screen_width)operator(/)ident(maxlen)operator(\)) - ident(rows) operator(=) integer(1) operator(+) predefined(len)operator(()ident(mylist)operator(\))operator(/)ident(cols) - - comment(# pre-create mask for faster computation) - ident(mask) operator(=) string<delimiter(")content(%%-%ds )delimiter(")> operator(%) operator(()ident(maxlen)operator(-)integer(1)operator(\)) - - keyword(for) ident(n) keyword(in) predefined(range)operator(()ident(rows)operator(\))operator(:) - ident(row) operator(=) operator([)ident(mask)operator(%)ident(elem) - keyword(for) ident(elem) keyword(in) ident(mylist)operator([)ident(n)operator(:)operator(:)ident(rows)operator(])operator(]) - keyword(yield) string<delimiter(")delimiter(")>operator(.)ident(join)operator(()ident(row)operator(\))operator(.)ident(rstrip)operator(()operator(\)) - -keyword(for) ident(row) keyword(in) ident(make_columns)operator(()ident(sys)operator(.)ident(stdin)operator(.)ident(readlines)operator(()operator(\))operator(,) ident(screen_width)operator(=)integer(50)operator(\))operator(:) - keyword(print) ident(row) - - -comment(# A more literal translation) -keyword(import) include(sys) - -comment(# subroutine to check whether at last item on line) -keyword(def) method(EOL)operator(()ident(item)operator(\))operator(:) - keyword(return) operator(()ident(item)operator(+)integer(1)operator(\)) operator(%) ident(cols) operator(==) integer(0) - -comment(# Might not be portable to non-linux systems) -keyword(def) method(getwinsize)operator(()operator(\))operator(:) - comment(# Use the curses module if installed) - keyword(try)operator(:) - keyword(import) include(curses) - ident(stdscr) operator(=) ident(curses)operator(.)ident(initscr)operator(()operator(\)) - ident(rows)operator(,) ident(cols) operator(=) ident(stdscr)operator(.)ident(getmaxyx)operator(()operator(\)) - keyword(return) ident(cols) - keyword(except) exception(ImportError)operator(:) - keyword(pass) - - comment(# Nope, so deal with ioctl directly. What value for TIOCGWINSZ?) - keyword(try)operator(:) - keyword(import) include(termios) - ident(TIOCGWINSZ) operator(=) ident(termios)operator(.)ident(TIOCGWINSZ) - keyword(except) exception(ImportError)operator(:) - ident(TIOCGWINSZ) operator(=) hex(0x40087468) comment(# This is Linux specific) - - keyword(import) include(struct)operator(,) include(fcntl) - ident(s) operator(=) ident(struct)operator(.)ident(pack)operator(()string<delimiter(")content(HHHH)delimiter(")>operator(,) integer(0)operator(,) integer(0)operator(,) integer(0)operator(,) integer(0)operator(\)) - keyword(try)operator(:) - ident(x) operator(=) ident(fcntl)operator(.)ident(ioctl)operator(()ident(sys)operator(.)ident(stdout)operator(.)ident(fileno)operator(()operator(\))operator(,) ident(TIOCGWINSZ)operator(,) ident(s)operator(\)) - keyword(except) exception(IOError)operator(:) - keyword(return) integer(80) - ident(rows)operator(,) ident(cols) operator(=) ident(struct)operator(.)ident(unpack)operator(()string<delimiter(")content(HHHH)delimiter(")>operator(,) ident(x)operator(\))operator([)operator(:)integer(2)operator(]) - keyword(return) ident(cols) - -ident(cols) operator(=) ident(getwinsize)operator(()operator(\)) - -ident(data) operator(=) operator([)ident(s)operator(.)ident(rstrip)operator(()operator(\)) keyword(for) ident(s) keyword(in) ident(sys)operator(.)ident(stdin)operator(.)ident(readlines)operator(()operator(\))operator(]) -keyword(if) keyword(not) ident(data)operator(:) - ident(maxlen) operator(=) integer(1) -keyword(else)operator(:) - ident(maxlen) operator(=) predefined(max)operator(()predefined(map)operator(()predefined(len)operator(,) ident(data)operator(\))operator(\)) - -ident(maxlen) operator(+=) integer(1) comment(# to make extra space) - -comment(# determine boundaries of screen) -ident(cols) operator(=) operator(()ident(cols) operator(/) ident(maxlen)operator(\)) keyword(or) integer(1) -ident(rows) operator(=) operator(()predefined(len)operator(()ident(data)operator(\))operator(+)ident(cols)operator(\)) operator(/) ident(cols) - -comment(# pre-create mask for faster computation) -ident(mask) operator(=) string<delimiter(")content(%%-%ds )delimiter(")> operator(%) operator(()ident(maxlen)operator(-)integer(1)operator(\)) - -comment(# now process each item, picking out proper piece for this position) -keyword(for) ident(item) keyword(in) predefined(range)operator(()ident(rows) operator(*) ident(cols)operator(\))operator(:) - ident(target) operator(=) operator(()ident(item) operator(%) ident(cols)operator(\)) operator(*) ident(rows) operator(+) operator(()ident(item)operator(/)ident(cols)operator(\)) - keyword(if) ident(target) operator(<) predefined(len)operator(()ident(data)operator(\))operator(:) - ident(piece) operator(=) ident(mask) operator(%) ident(data)operator([)ident(target)operator(]) - keyword(else)operator(:) - ident(piece) operator(=) ident(mask) operator(%) string<delimiter(")delimiter(")> - keyword(if) ident(EOL)operator(()ident(item)operator(\))operator(:) - ident(piece) operator(=) ident(piece)operator(.)ident(rstrip)operator(()operator(\)) comment(# don't blank-pad to EOL) - ident(sys)operator(.)ident(stdout)operator(.)ident(write)operator(()ident(piece)operator(\)) - keyword(if) ident(EOL)operator(()ident(item)operator(\))operator(:) - ident(sys)operator(.)ident(stdout)operator(.)ident(write)operator(()string<delimiter(")char(\\n)delimiter(")>operator(\)) - -keyword(if) ident(EOL)operator(()ident(item)operator(\))operator(:) - ident(sys)operator(.)ident(stdout)operator(.)ident(write)operator(()string<delimiter(")char(\\n)delimiter(")>operator(\)) -comment(#-----------------------------) - -comment(# @@PLEAC@@_4.19) -comment(#-----------------------------) -keyword(def) method(factorial)operator(()ident(n)operator(\))operator(:) - ident(s) operator(=) integer(1) - keyword(while) ident(n)operator(:) - ident(s) operator(*=) ident(n) - ident(n) operator(-=) integer(1) - keyword(return) ident(s) -comment(#-----------------------------) -keyword(def) method(permute)operator(()ident(alist)operator(,) ident(blist)operator(=)operator([)operator(])operator(\))operator(:) - keyword(if) keyword(not) ident(alist)operator(:) - keyword(yield) ident(blist) - keyword(for) ident(i)operator(,) ident(elem) keyword(in) predefined(enumerate)operator(()ident(alist)operator(\))operator(:) - keyword(for) ident(elem) keyword(in) ident(permute)operator(()ident(alist)operator([)operator(:)ident(i)operator(]) operator(+) ident(alist)operator([)ident(i)operator(+)integer(1)operator(:)operator(])operator(,) ident(blist) operator(+) operator([)ident(elem)operator(])operator(\))operator(:) - keyword(yield) ident(elem) - -keyword(for) ident(permutation) keyword(in) ident(permute)operator(()predefined(range)operator(()integer(4)operator(\))operator(\))operator(:) - keyword(print) ident(permutation) -comment(#-----------------------------) -comment(# DON'T DO THIS) -keyword(import) include(fileinput) - -comment(# Slightly modified from) -comment(# http://aspn.activestate.com/ASPN/Cookbook/Python/Recipe/66463) -keyword(def) method(print_list)operator(()ident(alist)operator(,) ident(blist)operator(=)operator([)operator(])operator(\))operator(:) - keyword(if) keyword(not) ident(alist)operator(:) - keyword(print) string<delimiter(')content( )delimiter(')>operator(.)ident(join)operator(()ident(blist)operator(\)) - keyword(for) ident(i) keyword(in) predefined(range)operator(()predefined(len)operator(()ident(alist)operator(\))operator(\))operator(:) - ident(blist)operator(.)ident(append)operator(()ident(alist)operator(.)ident(pop)operator(()ident(i)operator(\))operator(\)) - ident(print_list)operator(()ident(alist)operator(,) ident(blist)operator(\)) - ident(alist)operator(.)ident(insert)operator(()ident(i)operator(,) ident(blist)operator(.)ident(pop)operator(()operator(\))operator(\)) - -keyword(for) ident(line) keyword(in) ident(fileinput)operator(.)ident(input)operator(()operator(\))operator(:) - ident(words) operator(=) ident(line)operator(.)ident(split)operator(()operator(\)) - ident(print_list)operator(()ident(words)operator(\)) -comment(#-----------------------------) -keyword(class) class(FactorialMemo)operator(()predefined(list)operator(\))operator(:) - keyword(def) method(__init__)operator(()pre_constant(self)operator(\))operator(:) - pre_constant(self)operator(.)ident(append)operator(()integer(1)operator(\)) - - keyword(def) method(__call__)operator(()pre_constant(self)operator(,) ident(n)operator(\))operator(:) - keyword(try)operator(:) - keyword(return) pre_constant(self)operator([)ident(n)operator(]) - keyword(except) exception(IndexError)operator(:) - ident(ret) operator(=) ident(n) operator(*) pre_constant(self)operator(()ident(n)operator(-)integer(1)operator(\)) - pre_constant(self)operator(.)ident(append)operator(()ident(ret)operator(\)) - keyword(return) ident(ret) - -ident(factorial) operator(=) ident(FactorialMemo)operator(()operator(\)) - -keyword(import) include(sys) -keyword(import) include(time) -ident(sys)operator(.)ident(setrecursionlimit)operator(()integer(10000)operator(\)) - -ident(start) operator(=) ident(time)operator(.)ident(time)operator(()operator(\)) -ident(factorial)operator(()integer(2000)operator(\)) -ident(f1) operator(=) ident(time)operator(.)ident(time)operator(()operator(\)) operator(-) ident(start) -ident(factorial)operator(()integer(2100)operator(\)) comment(# First 2000 values are cached already) -ident(f2) operator(=) ident(time)operator(.)ident(time)operator(()operator(\)) operator(-) ident(f1) operator(-) ident(start) -keyword(print) string<delimiter(")content(Slow first time:)delimiter(")>operator(,) ident(f1) -keyword(print) string<delimiter(")content(Quicker the second time:)delimiter(")>operator(,) ident(f2) -comment(#-----------------------------) - -keyword(class) class(MemoizedPermutations)operator(()predefined(list)operator(\))operator(:) - keyword(def) method(__init__)operator(()pre_constant(self)operator(,) ident(alist)operator(\))operator(:) - pre_constant(self)operator(.)ident(permute)operator(()ident(alist)operator(,) operator([)operator(])operator(\)) - - keyword(def) method(permute)operator(()pre_constant(self)operator(,) ident(alist)operator(,) ident(blist)operator(\))operator(:) - keyword(if) keyword(not) ident(alist)operator(:) - pre_constant(self)operator(.)ident(append)operator(()ident(blist)operator(\)) - keyword(for) ident(i)operator(,) ident(elem) keyword(in) predefined(enumerate)operator(()ident(alist)operator(\))operator(:) - pre_constant(self)operator(.)ident(permute)operator(()ident(alist)operator([)operator(:)ident(i)operator(]) operator(+) ident(alist)operator([)ident(i)operator(+)integer(1)operator(:)operator(])operator(,) ident(blist) operator(+) operator([)ident(elem)operator(])operator(\)) - - keyword(def) method(__call__)operator(()pre_constant(self)operator(,) ident(seq)operator(,) ident(idx)operator(\))operator(:) - keyword(return) operator([)ident(seq)operator([)ident(n)operator(]) keyword(for) ident(n) keyword(in) pre_constant(self)operator([)ident(idx)operator(])operator(]) - - -ident(p5) operator(=) ident(MemoizedPermutations)operator(()predefined(range)operator(()integer(5)operator(\))operator(\)) - -ident(words) operator(=) string<delimiter(")content(This sentence has five words)delimiter(")>operator(.)ident(split)operator(()operator(\)) -keyword(print) ident(p5)operator(()ident(words)operator(,) integer(17)operator(\)) -keyword(print) ident(p5)operator(()ident(words)operator(,) integer(81)operator(\)) -comment(#-----------------------------) - -comment(# @@PLEAC@@_5.0) -comment(#-----------------------------) -comment(# dictionaries) -ident(age) operator(=) operator({)string<delimiter(")content(Nat)delimiter(")>operator(:) integer(24)operator(,) - string<delimiter(")content(Jules)delimiter(")>operator(:) integer(24)operator(,) - string<delimiter(")content(Josh)delimiter(")>operator(:) integer(17)operator(}) -comment(#-----------------------------) -ident(age) operator(=) operator({)operator(}) -ident(age)operator([)string<delimiter(")content(Nat)delimiter(")>operator(]) operator(=) integer(24) -ident(age)operator([)string<delimiter(")content(Jules)delimiter(")>operator(]) operator(=) integer(25) -ident(age)operator([)string<delimiter(")content(Josh)delimiter(")>operator(]) operator(=) integer(17) -comment(#-----------------------------) -ident(food_color) operator(=) operator({)string<delimiter(")content(Apple)delimiter(")>operator(:) string<delimiter(")content(red)delimiter(")>operator(,) - string<delimiter(")content(Banana)delimiter(")>operator(:) string<delimiter(")content(yellow)delimiter(")>operator(,) - string<delimiter(")content(Lemon)delimiter(")>operator(:) string<delimiter(")content(yellow)delimiter(")>operator(,) - string<delimiter(")content(Carrot)delimiter(")>operator(:) string<delimiter(")content(orange)delimiter(")> - operator(}) -comment(#-----------------------------) -comment(# NOTE: keys must be quoted in Python) - - -comment(# @@PLEAC@@_5.1) -ident(mydict)operator([)ident(key)operator(]) operator(=) ident(value) -comment(#-----------------------------) -comment(# food_color defined per the introduction) -ident(food_color)operator([)string<delimiter(")content(Raspberry)delimiter(")>operator(]) operator(=) string<delimiter(")content(pink)delimiter(")> -keyword(print) string<delimiter(")content(Known foods:)delimiter(")> -keyword(for) ident(food) keyword(in) ident(food_color)operator(:) - keyword(print) ident(food) - -comment(#=> Known foods:) -comment(#=> Raspberry) -comment(#=> Carrot) -comment(#=> Lemon) -comment(#=> Apple) -comment(#=> Banana) -comment(#-----------------------------) - -comment(# @@PLEAC@@_5.2) -comment(# does mydict have a value for key?) -keyword(if) ident(key) keyword(in) ident(mydict)operator(:) - keyword(pass) comment(# it exists) -keyword(else)operator(:) - keyword(pass) comment(# it doesn't) - -comment(#-----------------------------) -comment(# food_color per the introduction) -keyword(for) ident(name) keyword(in) operator(()string<delimiter(")content(Banana)delimiter(")>operator(,) string<delimiter(")content(Martini)delimiter(")>operator(\))operator(:) - keyword(if) ident(name) keyword(in) ident(food_color)operator(:) - keyword(print) ident(name)operator(,) string<delimiter(")content(is a food.)delimiter(")> - keyword(else)operator(:) - keyword(print) ident(name)operator(,) string<delimiter(")content(is a drink.)delimiter(")> - -comment(#=> Banana is a food.) -comment(#=> Martini is a drink.) -comment(#-----------------------------) -ident(age) operator(=) operator({)operator(}) -ident(age)operator([)string<delimiter(")content(Toddler)delimiter(")>operator(]) operator(=) integer(3) -ident(age)operator([)string<delimiter(")content(Unborn)delimiter(")>operator(]) operator(=) integer(0) -ident(age)operator([)string<delimiter(")content(Phantasm)delimiter(")>operator(]) operator(=) pre_constant(None) - -keyword(for) ident(thing) keyword(in) operator(()string<delimiter(")content(Toddler)delimiter(")>operator(,) string<delimiter(")content(Unborn)delimiter(")>operator(,) string<delimiter(")content(Phantasm)delimiter(")>operator(,) string<delimiter(")content(Relic)delimiter(")>operator(\))operator(:) - keyword(print) operator(()string<delimiter(")content(%s:)delimiter(")>operator(%)ident(thing)operator(\))operator(,) - keyword(if) ident(thing) keyword(in) ident(age)operator(:) - keyword(print) string<delimiter(")content(Exists)delimiter(")>operator(,) - keyword(if) ident(age)operator([)ident(thing)operator(]) keyword(is) keyword(not) pre_constant(None)operator(:) - keyword(print) string<delimiter(")content(Defined)delimiter(")>operator(,) - keyword(if) ident(age)operator([)ident(thing)operator(])operator(:) - keyword(print) string<delimiter(")content(True)delimiter(")>operator(,) - keyword(print) -comment(#=> Toddler: Exists Defined True) -comment(#=> Unborn: Exists Defined) -comment(#=> Phantasm: Exists) -comment(#=> Relic:) -comment(#-----------------------------) -comment(# Get file sizes for the requested filenames) -keyword(import) include(fileinput)operator(,) include(os) -ident(size) operator(=) operator({)operator(}) -keyword(for) ident(line) keyword(in) ident(fileinput)operator(.)ident(input)operator(()operator(\))operator(:) - ident(filename) operator(=) ident(line)operator(.)ident(rstrip)operator(()operator(\)) - keyword(if) ident(filename) keyword(in) ident(size)operator(:) - keyword(continue) - ident(size)operator([)ident(filename)operator(]) operator(=) ident(os)operator(.)ident(path)operator(.)ident(getsize)operator(()ident(filename)operator(\)) - - -comment(# @@PLEAC@@_5.3) -comment(# remove key and its value from mydict) -keyword(del) ident(mydict)operator([)ident(key)operator(]) -comment(#-----------------------------) -comment(# food_color as per Introduction) -keyword(def) method(print_foods)operator(()operator(\))operator(:) - ident(foods) operator(=) ident(food_color)operator(.)ident(keys)operator(()operator(\)) - - keyword(print) string<delimiter(")content(Keys:)delimiter(")>operator(,) string<delimiter(")content( )delimiter(")>operator(.)ident(join)operator(()ident(foods)operator(\)) - keyword(print) string<delimiter(")content(Values:)delimiter(")>operator(,) - - keyword(for) ident(food) keyword(in) ident(foods)operator(:) - ident(color) operator(=) ident(food_color)operator([)ident(food)operator(]) - keyword(if) ident(color) keyword(is) keyword(not) pre_constant(None)operator(:) - keyword(print) ident(color)operator(,) - keyword(else)operator(:) - keyword(print) string<delimiter(")content((undef\))delimiter(")>operator(,) - keyword(print) - -keyword(print) string<delimiter(")content(Initially:)delimiter(")> -ident(print_foods)operator(()operator(\)) - -keyword(print) string<delimiter(")char(\\n)content(With Banana set to None)delimiter(")> -ident(food_color)operator([)string<delimiter(")content(Banana)delimiter(")>operator(]) operator(=) pre_constant(None) -ident(print_foods)operator(()operator(\)) - -keyword(print) string<delimiter(")char(\\n)content(With Banana deleted)delimiter(")> -keyword(del) ident(food_color)operator([)string<delimiter(")content(Banana)delimiter(")>operator(]) -ident(print_foods)operator(()operator(\)) - -comment(#=> Initially:) -comment(#=> Keys: Carrot Lemon Apple Banana) -comment(#=> Values: orange yellow red yellow) -comment(#=> ) -comment(#=> With Banana set to None) -comment(#=> Keys: Carrot Lemon Apple Banana) -comment(#=> Values: orange yellow red (undef\)) -comment(#=> ) -comment(#=> With Banana deleted) -comment(#=> Keys: Carrot Lemon Apple) -comment(#=> Values: orange yellow red) -comment(#-----------------------------) -keyword(for) ident(key) keyword(in) operator([)string<delimiter(")content(Banana)delimiter(")>operator(,) string<delimiter(")content(Apple)delimiter(")>operator(,) string<delimiter(")content(Cabbage)delimiter(")>operator(])operator(:) - keyword(del) ident(food_color)operator([)ident(key)operator(]) -comment(#-----------------------------) - - -comment(# @@PLEAC@@_5.4) -comment(#-----------------------------) -keyword(for) ident(key)operator(,) ident(value) keyword(in) ident(mydict)operator(.)ident(items)operator(()operator(\))operator(:) - keyword(pass) comment(# do something with key and value) - -comment(# If mydict is large, use iteritems(\) instead) -keyword(for) ident(key)operator(,) ident(value) keyword(in) ident(mydict)operator(.)ident(iteritems)operator(()operator(\))operator(:) - keyword(pass) comment(# do something with key and value) - -comment(#-----------------------------) -comment(# DON'T DO THIS:) -keyword(for) ident(key) keyword(in) ident(mydict)operator(.)ident(keys)operator(()operator(\))operator(:) - ident(value) operator(=) ident(mydict)operator([)ident(key)operator(]) - comment(# do something with key and value) -comment(#-----------------------------) -comment(# food_color per the introduction) -keyword(for) ident(food)operator(,) ident(color) keyword(in) ident(food_color)operator(.)ident(items)operator(()operator(\))operator(:) - keyword(print) string<delimiter(")content(%s is %s.)delimiter(")> operator(%) operator(()ident(food)operator(,) ident(color)operator(\)) - -comment(# DON'T DO THIS:) -keyword(for) ident(food) keyword(in) ident(food_color)operator(:) - ident(color) operator(=) ident(food_color)operator([)ident(food)operator(]) - keyword(print) string<delimiter(")content(%s is %s.)delimiter(")> operator(%) operator(()ident(food)operator(,) ident(color)operator(\)) - -comment(#-----------------------------) -keyword(print) string<delimiter(""")content(%(food\)s)content( -)content( -)content(is)content( -)content( -)content(%(color\)s.)content( -)delimiter(""")> operator(%) predefined(vars)operator(()operator(\)) -comment(#-----------------------------) -keyword(for) ident(food)operator(,) ident(color) keyword(in) predefined(sorted)operator(()ident(food_color)operator(.)ident(items)operator(()operator(\))operator(\))operator(:) - keyword(print) string<delimiter(")content(%s is %s.)delimiter(")> operator(%) operator(()ident(food)operator(,) ident(color)operator(\)) - -comment(#-----------------------------) -comment(#!/usr/bin/env python) -comment(# countfrom - count number of messages from each sender) - -keyword(import) include(sys) -keyword(if) predefined(len)operator(()ident(sys)operator(.)ident(argv)operator(\)) operator(>) integer(1)operator(:) - ident(infile) operator(=) predefined(open)operator(()ident(sys)operator(.)ident(argv)operator([)integer(1)operator(])operator(\)) -keyword(else)operator(:) - ident(infile) operator(=) ident(sys)operator(.)ident(stdin) - -ident(counts) operator(=) operator({)operator(}) -keyword(for) ident(line) keyword(in) ident(infile)operator(:) - keyword(if) ident(line)operator(.)ident(startswith)operator(()string<delimiter(")content(From: )delimiter(")>operator(\))operator(:) - ident(name) operator(=) ident(line)operator([)integer(6)operator(:)operator(-)integer(1)operator(]) - ident(counts)operator([)ident(name)operator(]) operator(=) ident(counts)operator(.)ident(get)operator(()ident(name)operator(,) integer(0)operator(\)) operator(+) integer(1) - -keyword(for) operator(()ident(name)operator(,) ident(count)operator(\)) keyword(in) predefined(sorted)operator(()ident(counts)operator(.)ident(items)operator(()operator(\))operator(\))operator(:) - keyword(print) string<delimiter(")content(%s: %s)delimiter(")> operator(%) operator(()ident(name)operator(,) ident(count)operator(\)) - -comment(#-----------------------------) - - -comment(# @@PLEAC@@_5.5) -keyword(for) ident(key)operator(,) ident(val) keyword(in) ident(mydict)operator(.)ident(items)operator(()operator(\))operator(:) - keyword(print) ident(key)operator(,) string<delimiter(")content(=>)delimiter(")>operator(,) ident(val) -comment(#-----------------------------) -keyword(print) string<delimiter(")char(\\n)delimiter(")>operator(.)ident(join)operator(()operator([)operator(()string<delimiter(")content(%s => %s)delimiter(")> operator(%) ident(item)operator(\)) keyword(for) ident(item) keyword(in) ident(mydict)operator(.)ident(items)operator(()operator(\))operator(])operator(\)) -comment(#-----------------------------) -keyword(print) ident(mydict) -comment(#=> {'firstname': 'Andrew', 'login': 'dalke', 'state': 'New Mexico', 'lastname': 'Dalke'}) -comment(#-----------------------------) -keyword(import) include(pprint) -ident(pprint)operator(.)ident(pprint)operator(()predefined(dict)operator(\)) -comment(#=> {'firstname': 'Andrew',) -comment(#=> 'lastname': 'Dalke',) -comment(#=> 'login': 'dalke',) -comment(#=> 'state': 'New Mexico'}) -comment(#-----------------------------) - - -comment(# @@PLEAC@@_5.6) -comment(#-----------------------------) -keyword(class) class(SequenceDict)operator(()predefined(dict)operator(\))operator(:) - docstring<delimiter(""")content( -)content( Dictionary that remembers the insertion order.)content( -)content( The lists returned by keys(\), values(\) and items(\) are)content( -)content( in the insertion order.)content( -)content( )delimiter(""")> - keyword(def) method(__init__)operator(()pre_constant(self)operator(,) operator(*)ident(args)operator(\))operator(:) - pre_constant(self)operator(.)ident(_keys)operator(=)operator({)operator(}) comment(# key --> id) - pre_constant(self)operator(.)ident(_ids)operator(=)operator({)operator(}) comment(# id --> key) - pre_constant(self)operator(.)ident(_next_id)operator(=)integer(0) - - keyword(def) method(__setitem__)operator(()pre_constant(self)operator(,) ident(key)operator(,) ident(value)operator(\))operator(:) - pre_constant(self)operator(.)ident(_keys)operator([)ident(key)operator(])operator(=)pre_constant(self)operator(.)ident(_next_id) - pre_constant(self)operator(.)ident(_ids)operator([)pre_constant(self)operator(.)ident(_next_id)operator(])operator(=)ident(key) - pre_constant(self)operator(.)ident(_next_id)operator(+=)integer(1) - keyword(return) predefined(dict)operator(.)ident(__setitem__)operator(()pre_constant(self)operator(,) ident(key)operator(,) ident(value)operator(\)) - - keyword(def) method(__delitem__)operator(()pre_constant(self)operator(,) ident(key)operator(\))operator(:) - ident(id)operator(=)pre_constant(self)operator(.)ident(_keys)operator([)ident(key)operator(]) - keyword(del)operator(()pre_constant(self)operator(.)ident(_keys)operator([)ident(key)operator(])operator(\)) - keyword(del)operator(()pre_constant(self)operator(.)ident(_ids)operator([)predefined(id)operator(])operator(\)) - keyword(return) predefined(dict)operator(.)ident(__delitem__)operator(()pre_constant(self)operator(,) ident(key)operator(\)) - - keyword(def) method(values)operator(()pre_constant(self)operator(\))operator(:) - ident(values)operator(=)operator([)operator(]) - ident(ids)operator(=)predefined(list)operator(()pre_constant(self)operator(.)ident(_ids)operator(.)ident(items)operator(()operator(\))operator(\)) - ident(ids)operator(.)ident(sort)operator(()operator(\)) - keyword(for) predefined(id)operator(,) ident(key) keyword(in) ident(ids)operator(:) - ident(values)operator(.)ident(append)operator(()pre_constant(self)operator([)ident(key)operator(])operator(\)) - keyword(return) ident(values) - - keyword(def) method(items)operator(()pre_constant(self)operator(\))operator(:) - ident(items)operator(=)operator([)operator(]) - ident(ids)operator(=)predefined(list)operator(()pre_constant(self)operator(.)ident(_ids)operator(.)ident(items)operator(()operator(\))operator(\)) - ident(ids)operator(.)ident(sort)operator(()operator(\)) - keyword(for) predefined(id)operator(,) ident(key) keyword(in) ident(ids)operator(:) - ident(items)operator(.)ident(append)operator(()operator(()ident(key)operator(,) pre_constant(self)operator([)ident(key)operator(])operator(\))operator(\)) - keyword(return) ident(items) - - keyword(def) method(keys)operator(()pre_constant(self)operator(\))operator(:) - ident(ids)operator(=)predefined(list)operator(()pre_constant(self)operator(.)ident(_ids)operator(.)ident(items)operator(()operator(\))operator(\)) - ident(ids)operator(.)ident(sort)operator(()operator(\)) - ident(keys)operator(=)operator([)operator(]) - keyword(for) predefined(id)operator(,) ident(key) keyword(in) ident(ids)operator(:) - ident(keys)operator(.)ident(append)operator(()ident(key)operator(\)) - keyword(return) ident(keys) - - keyword(def) method(update)operator(()pre_constant(self)operator(,) ident(d)operator(\))operator(:) - keyword(for) ident(key)operator(,) ident(value) keyword(in) ident(d)operator(.)ident(items)operator(()operator(\))operator(:) - pre_constant(self)operator([)ident(key)operator(])operator(=)ident(value) - - keyword(def) method(clear)operator(()pre_constant(self)operator(\))operator(:) - predefined(dict)operator(.)ident(clear)operator(()pre_constant(self)operator(\)) - pre_constant(self)operator(.)ident(_keys)operator(=)operator({)operator(}) - pre_constant(self)operator(.)ident(_ids)operator(=)operator({)operator(}) - pre_constant(self)operator(.)ident(_next_id)operator(=)integer(0) - -keyword(def) method(testSequenceDict)operator(()operator(\))operator(:) - ident(sd)operator(=)ident(SequenceDict)operator(()operator(\)) - - comment(# First Test) - ident(sd)operator([)integer(3)operator(])operator(=)string<delimiter(")content(first)delimiter(")> - ident(sd)operator([)integer(2)operator(])operator(=)string<delimiter(")content(second)delimiter(")> - ident(sd)operator([)integer(1)operator(])operator(=)string<delimiter(")content(third)delimiter(")> - keyword(print) ident(sd)operator(.)ident(keys)operator(()operator(\)) - keyword(print) ident(sd)operator(.)ident(items)operator(()operator(\)) - keyword(print) ident(sd)operator(.)ident(values)operator(()operator(\)) - - keyword(del)operator(()ident(sd)operator([)integer(1)operator(])operator(\)) - keyword(del)operator(()ident(sd)operator([)integer(2)operator(])operator(\)) - keyword(del)operator(()ident(sd)operator([)integer(3)operator(])operator(\)) - - keyword(print) ident(sd)operator(.)ident(keys)operator(()operator(\))operator(,) ident(sd)operator(.)ident(items)operator(()operator(\))operator(,) ident(sd)operator(.)ident(values)operator(()operator(\)) - keyword(print) ident(sd)operator(.)ident(_ids)operator(,) ident(sd)operator(.)ident(_keys) - - keyword(print) string<delimiter(")content(---------------)delimiter(")> - comment(# Second Test) - ident(sd)operator([)string<delimiter(")content(b)delimiter(")>operator(])operator(=)string<delimiter(")content(first)delimiter(")> - ident(sd)operator([)string<delimiter(")content(a)delimiter(")>operator(])operator(=)string<delimiter(")content(second)delimiter(")> - ident(sd)operator(.)ident(update)operator(()operator({)string<delimiter(")content(c)delimiter(")>operator(:) string<delimiter(")content(third)delimiter(")>operator(})operator(\)) - keyword(print) ident(sd)operator(.)ident(keys)operator(()operator(\)) - keyword(print) ident(sd)operator(.)ident(items)operator(()operator(\)) - keyword(print) ident(sd)operator(.)ident(values)operator(()operator(\)) - - keyword(del)operator(()ident(sd)operator([)string<delimiter(")content(b)delimiter(")>operator(])operator(\)) - keyword(del)operator(()ident(sd)operator([)string<delimiter(")content(a)delimiter(")>operator(])operator(\)) - keyword(del)operator(()ident(sd)operator([)string<delimiter(")content(c)delimiter(")>operator(])operator(\)) - - keyword(print) ident(sd)operator(.)ident(keys)operator(()operator(\))operator(,) ident(sd)operator(.)ident(items)operator(()operator(\))operator(,) ident(sd)operator(.)ident(values)operator(()operator(\)) - keyword(print) ident(sd)operator(.)ident(_ids)operator(,) ident(sd)operator(.)ident(_keys) - -keyword(def) method(likePerlCookbook)operator(()operator(\))operator(:) - ident(food_color)operator(=)ident(SequenceDict)operator(()operator(\)) - ident(food_color)operator([)string<delimiter(")content(Banana)delimiter(")>operator(])operator(=)string<delimiter(")content(Yellow)delimiter(")>operator(;) - ident(food_color)operator([)string<delimiter(")content(Apple)delimiter(")>operator(])operator(=)string<delimiter(")content(Green)delimiter(")>operator(;) - ident(food_color)operator([)string<delimiter(")content(Lemon)delimiter(")>operator(])operator(=)string<delimiter(")content(Yellow)delimiter(")> - keyword(print) string<delimiter(")content(In insertion order, the foods' color are:)delimiter(")> - keyword(for) ident(food)operator(,) ident(color) keyword(in) ident(food_color)operator(.)ident(items)operator(()operator(\))operator(:) - keyword(print) string<delimiter(")content(%s is colored %s)delimiter(")> operator(%) operator(()ident(food)operator(,) ident(color)operator(\)) - -keyword(if) ident(__name__)operator(==)string<delimiter(")content(__main__)delimiter(")>operator(:) - comment(#testSequenceDict(\)) - ident(likePerlCookbook)operator(()operator(\)) - - -comment(# @@PLEAC@@_5.7) -keyword(import) include(os) -ident(ttys) operator(=) operator({)operator(}) - -ident(who) operator(=) ident(os)operator(.)ident(popen)operator(()string<delimiter(")content(who)delimiter(")>operator(\)) - -keyword(for) ident(line) keyword(in) ident(who)operator(:) - ident(user)operator(,) ident(tty) operator(=) ident(line)operator(.)ident(split)operator(()operator(\))operator([)operator(:)integer(2)operator(]) - ident(ttys)operator(.)ident(setdefault)operator(()ident(user)operator(,) operator([)operator(])operator(\))operator(.)ident(append)operator(()ident(tty)operator(\)) - -keyword(for) operator(()ident(user)operator(,) ident(tty_list)operator(\)) keyword(in) predefined(sorted)operator(()ident(ttys)operator(.)ident(items)operator(()operator(\))operator(\))operator(:) - keyword(print) ident(user) operator(+) string<delimiter(")content(: )delimiter(")> operator(+) string<delimiter(")content( )delimiter(")>operator(.)ident(join)operator(()ident(tty_list)operator(\)) -comment(#-----------------------------) -keyword(import) include(pwd) -keyword(for) operator(()ident(user)operator(,) ident(tty_list)operator(\)) keyword(in) ident(ttys)operator(.)ident(items)operator(()operator(\))operator(:) - keyword(print) ident(user) operator(+) string<delimiter(")content(:)delimiter(")>operator(,) predefined(len)operator(()ident(tty_list)operator(\))operator(,) string<delimiter(")content(ttys.)delimiter(")> - keyword(for) ident(tty) keyword(in) predefined(sorted)operator(()ident(tty_list)operator(\))operator(:) - keyword(try)operator(:) - ident(uid) operator(=) ident(os)operator(.)ident(stat)operator(()string<delimiter(")content(/dev/)delimiter(")> operator(+) ident(tty)operator(\))operator(.)ident(st_uid) - ident(user) operator(=) ident(pwd)operator(.)ident(getpwuid)operator(()ident(uid)operator(\))operator([)integer(0)operator(]) - keyword(except) ident(os)operator(.)ident(error)operator(:) - ident(user) operator(=) string<delimiter(")content((not available\))delimiter(")> - keyword(print) string<delimiter(")char(\\t)content(%s (owned by %s\))delimiter(")> operator(%) operator(()ident(tty)operator(,) ident(user)operator(\)) - -comment(# @@PLEAC@@_5.8) -comment(# lookup_dict maps keys to values) -ident(reverse) operator(=) predefined(dict)operator(()operator([)operator(()ident(val)operator(,) ident(key)operator(\)) keyword(for) operator(()ident(key)operator(,) ident(val)operator(\)) keyword(in) ident(lookup_dict)operator(.)ident(items)operator(()operator(\))operator(])operator(\)) -comment(#-----------------------------) -ident(surname) operator(=) operator({)string<delimiter(")content(Mickey)delimiter(")>operator(:) string<delimiter(")content(Mantle)delimiter(")>operator(,) string<delimiter(")content(Babe)delimiter(")>operator(:) string<delimiter(")content(Ruth)delimiter(")>operator(}) -ident(first_name) operator(=) predefined(dict)operator(()operator([)operator(()ident(last)operator(,) ident(first)operator(\)) keyword(for) operator(()ident(first)operator(,) ident(last)operator(\)) keyword(in) ident(surname)operator(.)ident(items)operator(()operator(\))operator(])operator(\)) - -keyword(print) ident(first_name)operator([)string<delimiter(")content(Mantle)delimiter(")>operator(]) -comment(#=> Mickey) -comment(#-----------------------------) -comment(#!/usr/bin/perl -w) -comment(# foodfind - find match for food or color) - -keyword(import) include(sys) -keyword(if) keyword(not) ident(sys)operator(.)ident(argv)operator([)integer(1)operator(:)operator(])operator(:) - keyword(raise) exception(SystemExit)operator(()string<delimiter(")content(usage: foodfind food_or_color)delimiter(")>operator(\)) -ident(given) operator(=) ident(sys)operator(.)ident(argv)operator([)integer(1)operator(]) - -ident(color_dict) operator(=) operator({)string<delimiter(")content(Apple)delimiter(")>operator(:) string<delimiter(")content(red)delimiter(")>operator(,) - string<delimiter(")content(Banana)delimiter(")>operator(:) string<delimiter(")content(yellow)delimiter(")>operator(,) - string<delimiter(")content(Lemon)delimiter(")>operator(:) string<delimiter(")content(yellow)delimiter(")>operator(,) - string<delimiter(")content(Carrot)delimiter(")>operator(:) string<delimiter(")content(orange)delimiter(")>operator(,) - operator(}) -ident(food_dict) operator(=) predefined(dict)operator(()operator([)operator(()ident(color)operator(,) ident(food)operator(\)) keyword(for) operator(()ident(food)operator(,) ident(color)operator(\)) keyword(in) ident(color_dict)operator(.)ident(items)operator(()operator(\))operator(])operator(\)) - -keyword(if) ident(given) keyword(in) ident(color_dict)operator(:) - keyword(print) ident(given)operator(,) string<delimiter(")content(is a food with color)delimiter(")>operator(,) ident(color_dict)operator([)ident(given)operator(]) -keyword(elif) ident(given) keyword(in) ident(food_dict)operator(:) - keyword(print) ident(food_dict)operator([)ident(given)operator(])operator(,) string<delimiter(")content(is a food with color)delimiter(")>operator(,) ident(given) -comment(#-----------------------------) -comment(# food_color as per the introduction) -ident(foods_with_color) operator(=) operator({)operator(}) -keyword(for) ident(food)operator(,) ident(color) keyword(in) ident(food_color)operator(.)ident(items)operator(()operator(\))operator(:) - ident(foods_with_color)operator(.)ident(setdefault)operator(()ident(color)operator(,) operator([)operator(])operator(\))operator(.)ident(append)operator(()ident(food)operator(\)) - -keyword(print) string<delimiter(")content( )delimiter(")>operator(.)ident(join)operator(()ident(foods_with_color)operator([)string<delimiter(")content(yellow)delimiter(")>operator(])operator(\))operator(,) string<delimiter(")content(were yellow foods.)delimiter(")> -comment(#-----------------------------) - -comment(# @@PLEAC@@_5.9) -comment(#-----------------------------) -comment(# mydict is the hash to sort) -keyword(for) ident(key)operator(,) ident(value) keyword(in) predefined(sorted)operator(()ident(mydict)operator(.)ident(items)operator(()operator(\))operator(\))operator(:) - comment(# do something with key, value) -comment(#-----------------------------) -comment(# food_color as per section 5.8) -keyword(for) ident(food)operator(,) ident(color) keyword(in) predefined(sorted)operator(()ident(food_color)operator(.)ident(items)operator(()operator(\))operator(\))operator(:) - keyword(print) string<delimiter(")content(%s is %s.)delimiter(")> operator(%) operator(()ident(food)operator(,) ident(color)operator(\)) -comment(#-----------------------------) -comment(# NOTE: alternative version) -keyword(for) ident(item) keyword(in) predefined(sorted)operator(()ident(food_color)operator(.)ident(items)operator(()operator(\))operator(\))operator(:) - keyword(print) string<delimiter(")content(%s is %s.)delimiter(")> operator(%) ident(item) -comment(#-----------------------------) -comment(# NOTE: alternative version showing a user-defined function) -keyword(def) method(food_cmp)operator(()ident(x)operator(,) ident(y)operator(\))operator(:) - keyword(return) predefined(cmp)operator(()ident(x)operator(,) ident(y)operator(\)) - -keyword(for) ident(food)operator(,) ident(color) keyword(in) predefined(sorted)operator(()ident(food_color)operator(,) ident(cmp)operator(=)ident(food_cmp)operator(\))operator(:) - keyword(print) string<delimiter(")content(%s is %s.)delimiter(")> operator(%) operator(()ident(food)operator(,) ident(color)operator(\)) -comment(#-----------------------------) -keyword(def) method(food_len_cmp)operator(()ident(x)operator(,) ident(y)operator(\))operator(:) - keyword(return) predefined(cmp)operator(()predefined(len)operator(()ident(x)operator(\))operator(,) predefined(len)operator(()ident(y)operator(\))operator(\)) - -keyword(for) ident(food) keyword(in) predefined(sorted)operator(()ident(food_color)operator(,) ident(cmp)operator(=)ident(food_len_cmp)operator(\))operator(:) - keyword(print) string<delimiter(")content(%s is %s.)delimiter(")> operator(%) operator(()ident(food)operator(,) ident(food_color)operator([)ident(food)operator(])operator(\)) - -comment(# In this instance, however, the following is both simpler and faster:) -keyword(for) ident(food) keyword(in) predefined(sorted)operator(()ident(food_color)operator(,) ident(key)operator(=)predefined(len)operator(\))operator(:) - keyword(print) string<delimiter(")content(%s is %s.)delimiter(")> operator(%) operator(()ident(food)operator(,) ident(food_color)operator([)ident(food)operator(])operator(\)) -comment(#-----------------------------) - - -comment(# @@PLEAC@@_5.10) -comment(#-----------------------------) -ident(merged) operator(=) operator({)operator(}) -ident(merged)operator(.)ident(update)operator(()ident(a_dict)operator(\)) -ident(merged)operator(.)ident(update)operator(()ident(b_dict)operator(\)) - -comment(#-----------------------------) -comment(# NOTE: alternative version) -ident(merged) operator(=) ident(a_dict)operator(.)ident(copy)operator(()operator(\)) -ident(merged)operator(.)ident(update)operator(()ident(b_dict)operator(\)) -comment(#-----------------------------) -comment(# DON'T DO THIS:) - -ident(merged) operator(=) operator({)operator(}) -keyword(for) ident(k)operator(,) ident(v) keyword(in) ident(a_dict)operator(.)ident(items)operator(()operator(\))operator(:) - ident(merged)operator([)ident(k)operator(]) operator(=) ident(v) -keyword(for) ident(k)operator(,) ident(v) keyword(in) ident(b_dict)operator(.)ident(items)operator(()operator(\))operator(:) - ident(merged)operator([)ident(k)operator(]) operator(=) ident(v) -comment(#-----------------------------) -comment(# food_color as per section 5.8) -ident(drink_color) operator(=) operator({)string<delimiter(")content(Galliano)delimiter(")>operator(:) string<delimiter(")content(yellow)delimiter(")>operator(,) - string<delimiter(")content(Mai Tai)delimiter(")>operator(:) string<delimiter(")content(blue)delimiter(")>operator(}) - -ident(ingested_color) operator(=) ident(drink_color)operator(.)ident(copy)operator(()operator(\)) -ident(ingested_color)operator(.)ident(update)operator(()ident(food_color)operator(\)) -comment(#-----------------------------) -comment(# DON'T DO THIS:) -ident(drink_color) operator(=) operator({)string<delimiter(")content(Galliano)delimiter(")>operator(:) string<delimiter(")content(yellow)delimiter(")>operator(,) - string<delimiter(")content(Mai Tai)delimiter(")>operator(:) string<delimiter(")content(blue)delimiter(")>operator(}) - -ident(substance_color) operator(=) operator({)operator(}) -keyword(for) ident(k)operator(,) ident(v) keyword(in) ident(food_color)operator(.)ident(items)operator(()operator(\))operator(:) - ident(substance_color)operator([)ident(k)operator(]) operator(=) ident(v) -keyword(for) ident(k)operator(,) ident(v) keyword(in) ident(drink_color)operator(.)ident(items)operator(()operator(\))operator(:) - ident(substance_color)operator([)ident(k)operator(]) operator(=) ident(v) -comment(#-----------------------------) -comment(# DON'T DO THIS:) -ident(substance_color) operator(=) operator({)operator(}) -keyword(for) ident(mydict) keyword(in) operator(()ident(food_color)operator(,) ident(drink_color)operator(\))operator(:) - keyword(for) ident(k)operator(,) ident(v) keyword(in) ident(mydict)operator(:) - ident(substance_color)operator([)ident(k)operator(]) operator(=) ident(v) -comment(#-----------------------------) -comment(# DON'T DO THIS:) -ident(substance_color) operator(=) operator({)operator(}) -keyword(for) ident(item) keyword(in) ident(food_color)operator(.)ident(items)operator(()operator(\)) operator(+) ident(drink_color)operator(.)ident(items)operator(()operator(\))operator(:) - keyword(for) ident(k)operator(,) ident(v) keyword(in) ident(mydict)operator(:) - ident(substance_color)operator([)ident(k)operator(]) operator(=) ident(v) -comment(#-----------------------------) -ident(substance_color) operator(=) operator({)operator(}) -keyword(for) ident(mydict) keyword(in) operator(()ident(food_color)operator(,) ident(drink_color)operator(\))operator(:) - keyword(for) ident(k)operator(,) ident(v) keyword(in) ident(mydict)operator(.)ident(items)operator(()operator(\))operator(:) - keyword(if) ident(substance_color)operator(.)ident(has_key)operator(()ident(k)operator(\))operator(:) - keyword(print) string<delimiter(")content(Warning:)delimiter(")>operator(,) ident(k)operator(,) string<delimiter(")content(seen twice. Using the first definition.)delimiter(")> - keyword(continue) - ident(substance_color)operator([)ident(k)operator(]) operator(=) ident(v) - -comment(# I think it's a copy, in which case) -ident(all_colors) operator(=) ident(new_colors)operator(.)ident(copy)operator(()operator(\)) - - -comment(# @@PLEAC@@_5.11) -ident(common) operator(=) operator([)ident(k) keyword(for) ident(k) keyword(in) ident(dict1) keyword(if) ident(k) keyword(in) ident(dict2)operator(]) -comment(#-----------------------------) -ident(this_not_that) operator(=) operator([)ident(k) keyword(for) ident(k) keyword(in) ident(dict1) keyword(if) ident(k) keyword(not) keyword(in) ident(dict2)operator(]) -comment(#-----------------------------) -comment(# citrus_color is a dict mapping citrus food name to its color.) -ident(citrus_color) operator(=) operator({)string<delimiter(")content(Lemon)delimiter(")>operator(:) string<delimiter(")content(yellow)delimiter(")>operator(,) - string<delimiter(")content(Orange)delimiter(")>operator(:) string<delimiter(")content(orange)delimiter(")>operator(,) - string<delimiter(")content(Lime)delimiter(")>operator(:) string<delimiter(")content(green)delimiter(")>operator(}) - -comment(# build up a list of non-citrus foods) -ident(non_citrus) operator(=) operator([)ident(k) keyword(for) ident(k) keyword(in) ident(food_color) keyword(if) ident(k) keyword(not) keyword(in) ident(citruscolor)operator(]) -comment(#-----------------------------) - -comment(# @@PLEAC@@_5.12) -comment(#-----------------------------) -comment(# references as keys of dictionaries is no pb in python) - -ident(name) operator(=) operator({)operator(}) -keyword(for) ident(filename) keyword(in) operator(()string<delimiter(")content(/etc/termcap)delimiter(")>operator(,) string<delimiter(")content(/vmunix)delimiter(")>operator(,) string<delimiter(")content(/bin/cat)delimiter(")>operator(\))operator(:) - keyword(try)operator(:) - ident(myfile) operator(=) predefined(open)operator(()ident(filename)operator(\)) - keyword(except) exception(IOError)operator(:) - keyword(pass) - keyword(else)operator(:) - ident(names)operator([)ident(myfile)operator(]) operator(=) ident(filename) - -keyword(print) string<delimiter(")content(open files:)delimiter(")>operator(,) string<delimiter(")content(, )delimiter(")>operator(.)ident(join)operator(()ident(name)operator(.)ident(values)operator(()operator(\))operator(\)) -keyword(for) ident(f)operator(,) ident(fname) keyword(in) ident(name)operator(.)ident(items)operator(()operator(\))operator(:) - ident(f)operator(.)ident(seek)operator(()integer(0)operator(,) integer(2)operator(\)) comment(# seek to the end) - keyword(print) string<delimiter(")content(%s is %d bytes long.)delimiter(")> operator(%) operator(()ident(fname)operator(,) ident(f)operator(.)ident(tell)operator(()operator(\))operator(\)) -comment(#-----------------------------) - -comment(# @@PLEAC@@_5.13) -comment(# Python doesn't allow presizing of dicts, but hashing is efficient -) -comment(# it only re-sizes at intervals, not every time an item is added.) - -comment(# @@PLEAC@@_5.14) -ident(count) operator(=) operator({)operator(}) -keyword(for) ident(element) keyword(in) ident(mylist)operator(:) - ident(count)operator([)ident(element)operator(]) operator(=) ident(count)operator(.)ident(get)operator(()ident(element)operator(,) integer(0)operator(\)) operator(+) integer(1) - -comment(# @@PLEAC@@_5.15) -comment(#-----------------------------) -keyword(import) include(fileinput) - -ident(father) operator(=) operator({)string<delimiter(')content(Cain)delimiter(')>operator(:) string<delimiter(')content(Adam)delimiter(')>operator(,) - string<delimiter(')content(Abel)delimiter(')>operator(:) string<delimiter(')content(Adam)delimiter(')>operator(,) - string<delimiter(')content(Seth)delimiter(')>operator(:) string<delimiter(')content(Adam)delimiter(')>operator(,) - string<delimiter(')content(Enoch)delimiter(')>operator(:) string<delimiter(')content(Cain)delimiter(')>operator(,) - string<delimiter(')content(Irad)delimiter(')>operator(:) string<delimiter(')content(Enoch)delimiter(')>operator(,) - string<delimiter(')content(Mehujael)delimiter(')>operator(:) string<delimiter(')content(Irad)delimiter(')>operator(,) - string<delimiter(')content(Methusael)delimiter(')>operator(:) string<delimiter(')content(Mehujael)delimiter(')>operator(,) - string<delimiter(')content(Lamech)delimiter(')>operator(:) string<delimiter(')content(Methusael)delimiter(')>operator(,) - string<delimiter(')content(Jabal)delimiter(')>operator(:) string<delimiter(')content(Lamech)delimiter(')>operator(,) - string<delimiter(')content(Tubalcain)delimiter(')>operator(:) string<delimiter(')content(Lamech)delimiter(')>operator(,) - string<delimiter(')content(Enos)delimiter(')>operator(:) string<delimiter(')content(Seth)delimiter(')>operator(,) - operator(}) - -keyword(for) ident(line) keyword(in) ident(fileinput)operator(.)ident(input)operator(()operator(\))operator(:) - ident(person) operator(=) ident(line)operator(.)ident(rstrip)operator(()operator(\)) - keyword(while) ident(person)operator(:) comment(# as long as we have people,) - keyword(print) ident(person)operator(,) comment(# print the current name) - ident(person) operator(=) ident(father)operator(.)ident(get)operator(()ident(person)operator(\)) comment(# set the person to the person's father) - keyword(print) - -comment(#-----------------------------) -keyword(import) include(fileinput) - -ident(children) operator(=) operator({)operator(}) -keyword(for) ident(k)operator(,) ident(v) keyword(in) ident(father)operator(.)ident(items)operator(()operator(\))operator(:) - ident(children)operator(.)ident(setdefault)operator(()ident(v)operator(,) operator([)operator(])operator(\))operator(.)ident(append)operator(()ident(k)operator(\)) - -keyword(for) ident(line) keyword(in) ident(fileinput)operator(.)ident(input)operator(()operator(\))operator(:) - ident(person) operator(=) ident(line)operator(.)ident(rstrip)operator(()operator(\)) - ident(kids) operator(=) ident(children)operator(.)ident(get)operator(()ident(person)operator(,) operator([)string<delimiter(")content(nobody)delimiter(")>operator(])operator(\)) - keyword(print) ident(person)operator(,) string<delimiter(")content(begat)delimiter(")>operator(,) string<delimiter(")content(, )delimiter(")>operator(.)ident(join)operator(()ident(kids)operator(\)) - -comment(#-----------------------------) -keyword(import) include(sys)operator(,) include(re) -ident(pattern) operator(=) ident(re)operator(.)ident(compile)operator(()string<modifier(r)delimiter(')content(^)content(\\s)content(*#)content(\\s)content(*include)content(\\s)content(*<([^>]+\))delimiter(')>operator(\)) -ident(includes) operator(=) operator({)operator(}) -keyword(for) ident(filename) keyword(in) ident(filenames)operator(:) - keyword(try)operator(:) - ident(infile) operator(=) predefined(open)operator(()ident(filename)operator(\)) - keyword(except) exception(IOError)operator(,) ident(err)operator(:) - keyword(print)operator(>>)ident(sys)operator(.)ident(stderr)operator(,) ident(err) - keyword(continue) - keyword(for) ident(line) keyword(in) ident(infile)operator(:) - ident(match) operator(=) ident(pattern)operator(.)ident(match)operator(()ident(line)operator(\)) - keyword(if) ident(match)operator(:) - ident(includes)operator(.)ident(setdefault)operator(()ident(match)operator(.)ident(group)operator(()integer(1)operator(\))operator(,) operator([)operator(])operator(\))operator(.)ident(append)operator(()ident(filename)operator(\)) -comment(#-----------------------------) -comment(# list of files that don't include others) -ident(mydict) operator(=) operator({)operator(}) -keyword(for) ident(e) keyword(in) predefined(reduce)operator(()keyword(lambda) ident(a)operator(,)ident(b)operator(:) ident(a) operator(+) ident(b)operator(,) ident(includes)operator(.)ident(values)operator(()operator(\))operator(\))operator(:) - keyword(if) keyword(not) ident(includes)operator(.)ident(has_key)operator(()ident(e)operator(\))operator(:) - ident(mydict)operator([)ident(e)operator(]) operator(=) integer(1) -ident(include_free) operator(=) ident(mydict)operator(.)ident(keys)operator(()operator(\)) -ident(include_free)operator(.)ident(sort)operator(()operator(\)) - -comment(# @@PLEAC@@_5.16) -comment(#-----------------------------) -comment(#!/usr/bin/env python -w) -comment(# dutree - print sorted indented rendition of du output) -keyword(import) include(os)operator(,) include(sys) - -keyword(def) method(get_input)operator(()ident(args)operator(\))operator(:) - comment(# NOTE: This is insecure - use only from trusted code!) - ident(cmd) operator(=) string<delimiter(")content(du )delimiter(")> operator(+) string<delimiter(")content( )delimiter(")>operator(.)ident(join)operator(()ident(args)operator(\)) - ident(infile) operator(=) ident(os)operator(.)ident(popen)operator(()ident(cmd)operator(\)) - - ident(dirsize) operator(=) operator({)operator(}) - ident(kids) operator(=) operator({)operator(}) - keyword(for) ident(line) keyword(in) ident(infile)operator(:) - ident(size)operator(,) ident(name) operator(=) ident(line)operator([)operator(:)operator(-)integer(1)operator(])operator(.)ident(split)operator(()string<delimiter(")char(\\t)delimiter(")>operator(,) integer(1)operator(\)) - ident(dirsize)operator([)ident(name)operator(]) operator(=) predefined(int)operator(()ident(size)operator(\)) - ident(parent) operator(=) ident(os)operator(.)ident(path)operator(.)ident(dirname)operator(()ident(name)operator(\)) - ident(kids)operator(.)ident(setdefault)operator(()ident(parent)operator(,) operator([)operator(])operator(\))operator(.)ident(append)operator(()ident(name)operator(\)) - comment(# Remove the last field added, which is the root) - ident(kids)operator([)ident(parent)operator(])operator(.)ident(pop)operator(()operator(\)) - keyword(if) keyword(not) ident(kids)operator([)ident(parent)operator(])operator(:) - keyword(del) ident(kids)operator([)ident(parent)operator(]) - - keyword(return) ident(name)operator(,) ident(dirsize)operator(,) ident(kids) - -keyword(def) method(getdots)operator(()ident(root)operator(,) ident(dirsize)operator(,) ident(kids)operator(\))operator(:) - ident(size) operator(=) ident(cursize) operator(=) ident(dirsize)operator([)ident(root)operator(]) - keyword(if) ident(kids)operator(.)ident(has_key)operator(()ident(root)operator(\))operator(:) - keyword(for) ident(kid) keyword(in) ident(kids)operator([)ident(root)operator(])operator(:) - ident(cursize) operator(-=) ident(dirsize)operator([)ident(kid)operator(]) - ident(getdots)operator(()ident(kid)operator(,) ident(dirsize)operator(,) ident(kids)operator(\)) - keyword(if) ident(size) operator(!=) ident(cursize)operator(:) - ident(dot) operator(=) ident(root) operator(+) string<delimiter(")content(/.)delimiter(")> - ident(dirsize)operator([)ident(dot)operator(]) operator(=) ident(cursize) - ident(kids)operator([)ident(root)operator(])operator(.)ident(append)operator(()ident(dot)operator(\)) - -keyword(def) method(output)operator(()ident(root)operator(,) ident(dirsize)operator(,) ident(kids)operator(,) ident(prefix) operator(=) string<delimiter(")delimiter(")>operator(,) ident(width) operator(=) integer(0)operator(\))operator(:) - ident(path) operator(=) ident(os)operator(.)ident(path)operator(.)ident(basename)operator(()ident(root)operator(\)) - ident(size) operator(=) ident(dirsize)operator([)ident(root)operator(]) - ident(fmt) operator(=) string<delimiter(")content(%)delimiter(")> operator(+) predefined(str)operator(()ident(width)operator(\)) operator(+) string<delimiter(")content(d %s)delimiter(")> - ident(line) operator(=) ident(fmt) operator(%) operator(()ident(size)operator(,) ident(path)operator(\)) - keyword(print) ident(prefix) operator(+) ident(line) - - ident(prefix) operator(+=) operator(()string<delimiter(")content( )delimiter(")> operator(*) operator(()ident(width)operator(-)integer(1)operator(\))operator(\)) operator(+) string<delimiter(")content(| )delimiter(")> operator(+) operator(()string<delimiter(")content( )delimiter(")> operator(*) predefined(len)operator(()ident(path)operator(\))operator(\)) - - keyword(if) ident(kids)operator(.)ident(has_key)operator(()ident(root)operator(\))operator(:) - ident(kid_list) operator(=) ident(kids)operator([)ident(root)operator(]) - ident(kid_list)operator(.)ident(sort)operator(()keyword(lambda) ident(x)operator(,) ident(y)operator(,) ident(dirsize)operator(=)ident(dirsize)operator(:) - predefined(cmp)operator(()ident(dirsize)operator([)ident(x)operator(])operator(,) ident(dirsize)operator([)ident(y)operator(])operator(\))operator(\)) - ident(width) operator(=) predefined(len)operator(()predefined(str)operator(()ident(dirsize)operator([)ident(kid_list)operator([)operator(-)integer(1)operator(])operator(])operator(\))operator(\)) - keyword(for) ident(kid) keyword(in) ident(kid_list)operator(:) - ident(output)operator(()ident(kid)operator(,) ident(dirsize)operator(,) ident(kids)operator(,) ident(prefix)operator(,) ident(width)operator(\)) - -keyword(def) method(main)operator(()operator(\))operator(:) - ident(root)operator(,) ident(dirsize)operator(,) ident(kids) operator(=) ident(get_input)operator(()ident(sys)operator(.)ident(argv)operator([)integer(1)operator(:)operator(])operator(\)) - ident(getdots)operator(()ident(root)operator(,) ident(dirsize)operator(,) ident(kids)operator(\)) - ident(output)operator(()ident(root)operator(,) ident(dirsize)operator(,) ident(kids)operator(\)) - -keyword(if) ident(__name__) operator(==) string<delimiter(")content(__main__)delimiter(")>operator(:) - ident(main)operator(()operator(\)) - - -comment(# @@PLEAC@@_6.0) -comment(# Note: regexes are used less often in Python than in Perl as tasks are often) -comment(# covered by string methods, or specialised objects, modules, or packages.) - -keyword(import) include(re) comment(# "re" is the regular expression module.) -ident(re)operator(.)ident(search)operator(()string<delimiter(")content(sheep)delimiter(")>operator(,)ident(meadow)operator(\)) comment(# returns a MatchObject is meadow contains "sheep".) -keyword(if) keyword(not) ident(re)operator(.)ident(search)operator(()string<delimiter(")content(sheep)delimiter(")>operator(,)ident(meadow)operator(\))operator(:) - keyword(print) string<delimiter(")content(no sheep on this meadow only a fat python.)delimiter(")> -comment(# replacing strings is not done by "re"gular expressions.) -ident(meadow) operator(=) ident(meadow)operator(.)ident(replace)operator(()string<delimiter(")content(old)delimiter(")>operator(,)string<delimiter(")content(new)delimiter(")>operator(\)) comment(# replace "old" with "new" and assign result.) -comment(#-----------------------------) -ident(re)operator(.)ident(search)operator(()string<delimiter(")content(ovine)delimiter(")>operator(,)ident(meadow)operator(\)) - -ident(meadow) operator(=) string<delimiter(""")content(Fine bovines demand fine toreadors.)content( -)content(Muskoxen are polar ovibovine species.)content( -)content(Grooviness went out of fashion decades ago.)delimiter(""")> - -ident(meadow) operator(=) string<delimiter(")content(Ovines are found typically in ovaries.)delimiter(")> - -keyword(if) ident(re)operator(.)ident(search)operator(()string<modifier(r)delimiter(")content(\\b)content(ovines)content(\\b)delimiter(")>operator(,)ident(meadow)operator(,)ident(re)operator(.)ident(I)operator(\)) operator(:) keyword(print) string<delimiter(")content(Here be sheep!)delimiter(")> -comment(#-----------------------------) -comment(# The tricky bit) -ident(mystr) operator(=) string<delimiter(")content(good food)delimiter(")> -ident(re)operator(.)ident(sub)operator(()string<delimiter(")content(o*)delimiter(")>operator(,)string<delimiter(")content(e)delimiter(")>operator(,)ident(mystr)operator(,)integer(1)operator(\)) comment(# gives 'egood food') - -ident(echo) ident(ababacaca) operator(|) ident(python) operator(-)ident(c) string<delimiter(")content(import sys,re; print re.search('(a|ba|b\)+(a|ac\)+',sys.stdin.read(\)\).group(\))delimiter(")> -comment(#-----------------------------) -comment(# pattern matching modifiers) -comment(# assume perl code iterates over some file) -keyword(import) include(re)operator(,) include(fileinput) -keyword(for) ident(ln) operator(=) ident(fileinput)operator(.)ident(input)operator(()operator(\))operator(:) - ident(fnd) operator(=) ident(re)operator(.)ident(findall)operator(()string<delimiter(")content(()content(\\d)content(+\))delimiter(")>operator(,)ident(ln)operator(\)) - keyword(if) predefined(len)operator(()ident(fnd)operator(\)) operator(>) integer(0)operator(:) - keyword(print) string<delimiter(")content(Found number %s)delimiter(")> operator(%) operator(()ident(fnd)operator([)integer(0)operator(])operator(\)) -comment(# ----------------------------) -ident(digits) operator(=) string<delimiter(")content(123456789)delimiter(")> -ident(nonlap) operator(=) ident(re)operator(.)ident(findall)operator(()string<delimiter(")content(()content(\\d)content(\\d)content(\\d)content(\))delimiter(")>operator(,) ident(digits)operator(\)) -ident(yeslap) operator(=) operator([)string<delimiter(")content(not yet)delimiter(")>operator(]) -keyword(print) string<delimiter(")content(Non-overlapping:)delimiter(")>operator(,)string<delimiter(")content(,)delimiter(")>operator(.)ident(join)operator(()ident(nonlap)operator(\)) -keyword(print) string<delimiter(")content(Overlapping :)delimiter(")>operator(,)string<delimiter(")content(,)delimiter(")>operator(.)ident(join)operator(()ident(yeslap)operator(\)) -comment(# ----------------------------) -ident(mystr) operator(=) string<delimiter(")content(And little lambs eat ivy)delimiter(")> -ident(fnd) operator(=) ident(re)operator(.)ident(search)operator(()string<delimiter(")content((l[^s]*s\))delimiter(")>operator(,) ident(mystr)operator(\)) -keyword(print) string<delimiter(")content((%s\) (%s\) (%s\))delimiter(")> operator(%) operator(()ident(mystr)operator([)operator(:)ident(fnd)operator(.)ident(start)operator(()operator(\))operator(])operator(,) ident(fnd)operator(.)ident(group)operator(()operator(\))operator(,) ident(mystr)operator([)ident(fnd)operator(.)ident(end)operator(()operator(\))operator(:)operator(])operator(\)) -comment(# (And \) (little lambs\) ( eat ivy\)) - - -comment(# @@PLEAC@@_6.1) -keyword(import) include(re) -ident(dst) operator(=) ident(re)operator(.)ident(sub)operator(()string<delimiter(")content(this)delimiter(")>operator(,)string<delimiter(")content(that)delimiter(")>operator(,)ident(src)operator(\)) -comment(#-----------------------------) -comment(# strip to basename) -ident(basename) operator(=) ident(re)operator(.)ident(sub)operator(()string<delimiter(")content(.*/(?=[^/]+\))delimiter(")>operator(,)string<delimiter(")delimiter(")>operator(,)ident(progname)operator(\)) - -comment(# Make All Words Title-Cased) -comment(# DON'T DO THIS - use str.title(\) instead) -keyword(def) method(cap)operator(()ident(mo)operator(\))operator(:) keyword(return) ident(mo)operator(.)ident(group)operator(()operator(\))operator(.)ident(capitalize)operator(()operator(\)) -ident(re)operator(.)ident(sub)operator(()string<delimiter(")content((?P<n>)content(\\w)content(+\))delimiter(")>operator(,)ident(cap)operator(,)string<delimiter(")content(make all words title-cased)delimiter(")>operator(\)) - -comment(# /usr/man/man3/foo.1 changes to /usr/man/cat3/foo.1) -ident(manpage) operator(=) string<delimiter(")content(/usr/man/man3/foo.1)delimiter(")> -ident(catpage) operator(=) ident(re)operator(.)ident(sub)operator(()string<delimiter(")content(man(?=)content(\\d)content(\))delimiter(")>operator(,)string<delimiter(")content(cat)delimiter(")>operator(,)ident(manpage)operator(\)) -comment(#-----------------------------) -ident(bindirs) operator(=) string<delimiter(")content(/usr/bin /bin /usr/local/bin)delimiter(")>operator(.)ident(split)operator(()operator(\)) -ident(libdirs) operator(=) operator([)ident(d)operator(.)ident(replace)operator(()string<delimiter(")content(bin)delimiter(")>operator(,) string<delimiter(")content(lib)delimiter(")>operator(\)) keyword(for) ident(d) keyword(in) ident(bindirs)operator(]) - -keyword(print) string<delimiter(")content( )delimiter(")>operator(.)ident(join)operator(()ident(libdirs)operator(\)) -comment(#=> /usr/lib /lib /usr/local/lib) -comment(#-----------------------------) -comment(# strings are never modified in place.) -comment(#-----------------------------) - -comment(# @@PLEAC@@_6.2) -comment(##---------------------------) - -comment(# DON'T DO THIS. use line[:-1].isalpha(\) [this probably goes for the) -comment(# remainder of this section too!]) -keyword(import) include(re) -keyword(if) ident(re)operator(.)ident(match)operator(()string<delimiter(")content(^[A-Za-z]+$)delimiter(")>operator(,)ident(line)operator(\))operator(:) - keyword(print) string<delimiter(")content(pure alphabetic)delimiter(")> -comment(##---------------------------) -keyword(if) ident(re)operator(.)ident(match)operator(()string<modifier(r)delimiter(")content(^[^)content(\\W)content(\\d)content(_]+$)delimiter(")>operator(,) ident(line)operator(,) ident(re)operator(.)ident(LOCALE)operator(\))operator(:) - keyword(print) string<delimiter(")content(pure alphabetic)delimiter(")> -comment(##---------------------------) -keyword(import) include(re) -keyword(import) include(locale) - -keyword(try)operator(:) - ident(locale)operator(.)ident(setlocale)operator(()ident(locale)operator(.)ident(LC_ALL)operator(,) string<delimiter(')content(fr_CA.ISO8859-1)delimiter(')>operator(\)) -keyword(except)operator(:) - keyword(print) string<delimiter(")content(couldn't set locale to French Cnadian)delimiter(")> - keyword(raise) exception(SystemExit) - -ident(DATA)operator(=)string<delimiter(""")content( -)content(silly)content( -)content(façade)content( -)content(coöperate)content( -)content(niño)content( -)content(Renée)content( -)content(Molière )content( -)content(hæmoglobin)content( -)content(naïve)content( -)content(tschüß)content( -)content(random!stuff#here)content( -)delimiter(""")> - -keyword(for) ident(ln) keyword(in) ident(DATA)operator(.)ident(split)operator(()operator(\))operator(:) - ident(ln) operator(=) ident(ln)operator(.)ident(rstrip)operator(()operator(\)) - keyword(if) ident(re)operator(.)ident(match)operator(()string<modifier(r)delimiter(")content(^[^)content(\\W)content(\\d)content(_]+$)delimiter(")>operator(,)ident(ln)operator(,)ident(re)operator(.)ident(LOCALE)operator(\))operator(:) - keyword(print) string<delimiter(")content(%s: alphabetic)delimiter(")> operator(%) operator(()ident(ln)operator(\)) - keyword(else)operator(:) - keyword(print) string<delimiter(")content(%s: line noise)delimiter(")> operator(%) operator(()ident(ln)operator(\)) -comment(# although i dont think "coöperate" should be in canadian) -comment(##---------------------------) - -comment(# @@PLEAC@@_6.3) -comment(# Matching Words) -string<delimiter(")content(\\S)content(+)delimiter(")> comment(# as many non-whitespace bytes as possible) -string<delimiter(")content([A-Za-z'-]+)delimiter(")> comment(# as many letters, apostrophes, and hyphens) - -comment(# string split is similar to splitting on "\\s+") -string<delimiter(")content(A text with some)char(\\t)content(separator)delimiter(")>operator(.)ident(split)operator(()operator(\)) - -string<delimiter(")char(\\b)content(*([A-Za-z]+\))char(\\b)content(*)delimiter(")> comment(# word boundaries ) -string<delimiter(")content(\\s)content(*([A-Za-z]+\))content(\\s)content(*)delimiter(")> comment(# might work too as on letters are allowed.) - -ident(re)operator(.)ident(search)operator(()string<delimiter(")content(\\B)content(is)content(\\B)delimiter(")>operator(,)string<delimiter(")content(this thistle)delimiter(")>operator(\)) comment(# matches on thistle not on this) -ident(re)operator(.)ident(search)operator(()string<delimiter(")content(\\B)content(is)content(\\B)delimiter(")>operator(,)string<delimiter(")content(vis-a-vis)delimiter(")>operator(\)) comment(# does not match) - -comment(# @@PLEAC@@_6.4) -comment(#-----------------------------) -comment(#!/usr/bin/python) -comment(# resname - change all "foo.bar.com" style names in the input stream) -comment(# into "foo.bar.com [204.148.40.9]" (or whatever\) instead) - -keyword(import) include(socket) comment(# load inet_addr) -keyword(import) include(fileinput) -keyword(import) include(re) - -ident(match) operator(=) ident(re)operator(.)ident(compile)operator(()string<delimiter(""")content((?P<hostname> # capture hostname)content( -)content( (?: # these parens for grouping only)content( -)content( [)content(\\w)content(-]+ # hostname component)content( -)content( )content(\\.)content( # ant the domain dot)content( -)content( \) + # now repeat that whole thing a bunch of times)content( -)content( [A-Za-z] # next must be a letter)content( -)content( [)content(\\w)content(-] + # now trailing domain part)content( -)content( \) # end of hostname capture)content( -)content( )delimiter(""")>operator(,)ident(re)operator(.)ident(VERBOSE)operator(\)) comment(# for nice formatting) - -keyword(def) method(repl)operator(()ident(match_obj)operator(\))operator(:) - ident(orig_hostname) operator(=) ident(match_obj)operator(.)ident(group)operator(()string<delimiter(")content(hostname)delimiter(")>operator(\)) - keyword(try)operator(:) - ident(addr) operator(=) ident(socket)operator(.)ident(gethostbyname)operator(()ident(orig_hostname)operator(\)) - keyword(except) ident(socket)operator(.)ident(gaierror)operator(:) - ident(addr) operator(=) string<delimiter(")content(???)delimiter(")> - keyword(return) string<delimiter(")content(%s [%s])delimiter(")> operator(%) operator(()ident(orig_hostname)operator(,) ident(addr)operator(\)) - -keyword(for) ident(ln) keyword(in) ident(fileinput)operator(.)ident(input)operator(()operator(\))operator(:) - keyword(print) ident(match)operator(.)ident(sub)operator(()ident(repl)operator(,) ident(ln)operator(\)) -comment(#-----------------------------) -ident(re)operator(.)ident(sub)operator(()string<delimiter(""")content((?x\) # nicer formatting)content( -)content( )content(\\#)content( # a pound sign)content( -)content( ()content(\\w)content(+\) # the variable name)content( -)content( )content(\\#)content( # another pound sign)content( -)content( )delimiter(""")>operator(,) - keyword(lambda) ident(m)operator(:) predefined(eval)operator(()ident(m)operator(.)ident(group)operator(()integer(1)operator(\))operator(\))operator(,) comment(# replace with the value of the global variable) - ident(line) - operator(\)) -comment(##-----------------------------) -ident(re)operator(.)ident(sub)operator(()string<delimiter(""")content((?x\) # nicer formatting)content( -)content( )content(\\#)content( # a pound sign)content( -)content( ()content(\\w)content(+\) # the variable name)content( -)content( )content(\\#)content( # another pound sign)content( -)content( )delimiter(""")>operator(,) - keyword(lambda) ident(m)operator(:) predefined(eval)operator(()predefined(eval)operator(()ident(m)operator(.)ident(group)operator(()integer(1)operator(\))operator(\))operator(\))operator(,) comment(# replace with the value of *any* variable) - ident(line) - operator(\)) -comment(##-----------------------------) - -comment(# @@PLEAC@@_6.5) -keyword(import) include(re) -ident(pond) operator(=) string<delimiter(")content(one fish two fish red fish blue fish)delimiter(")> -ident(fishes) operator(=) ident(re)operator(.)ident(findall)operator(()string<modifier(r)delimiter(")content((?i\)()content(\\w)content(+\))content(\\s)content(+fish)content(\\b)delimiter(")>operator(,)ident(pond)operator(\)) -keyword(if) predefined(len)operator(()ident(fishes)operator(\))operator(>)integer(2)operator(:) - keyword(print) string<delimiter(")content(The third fish is a %s one.)delimiter(")> operator(%) operator(()ident(fishes)operator([)integer(2)operator(])operator(\)) -comment(##-----------------------------) -ident(re)operator(.)ident(findall)operator(()string<modifier(r)delimiter(")content((?i\)(?:)content(\\w)content(+)content(\\s)content(+fish)content(\\s)content(+\){2}()content(\\w)content(+\))content(\\s)content(+fish)delimiter(")>operator(,)ident(pond)operator(\)) -comment(##-----------------------------) -ident(count) operator(=) integer(0) -keyword(for) ident(match_object) keyword(in) ident(re)operator(.)ident(finditer)operator(()string<modifier(r)delimiter(")content(PAT)delimiter(")>operator(,) ident(mystr)operator(\))operator(:) - ident(count) operator(+=) integer(1) comment(# or whatever you want to do here) - -comment(# "progressive" matching might be better if one wants match 5 from 50.) -comment(# to count use) -ident(count) operator(=) predefined(len)operator(()ident(re)operator(.)ident(findall)operator(()string<modifier(r)delimiter(")content(PAT)delimiter(")>operator(,)ident(mystr)operator(\))operator(\)) -ident(count) operator(=) predefined(len)operator(()ident(re)operator(.)ident(findall)operator(()string<modifier(r)delimiter(")content(aba)delimiter(")>operator(,)string<delimiter(")content(abaababa)delimiter(")>operator(\))operator(\)) - -comment(# "count" overlapping matches) -ident(count) operator(=) predefined(len)operator(()ident(re)operator(.)ident(findall)operator(()string<modifier(r)delimiter(")content((?=aba\))delimiter(")>operator(,)string<delimiter(")content(abaababa)delimiter(")>operator(\))operator(\)) - -comment(# FASTEST non-overlapping might be str.count) -string<delimiter(")content(abaababa)delimiter(")>operator(.)ident(count)operator(()string<delimiter(")content(aba)delimiter(")>operator(\)) -comment(##-----------------------------) -ident(pond) operator(=) string<delimiter(")content(one fish two fish red fish blue fish)delimiter(")> -ident(colors) operator(=) ident(re)operator(.)ident(findall)operator(()string<modifier(r)delimiter(")content((?i\)()content(\\w)content(+\))content(\\s)content(+fish)content(\\b)delimiter(")>operator(,)ident(pond)operator(\)) comment(# get all matches) -ident(color) operator(=) ident(colors)operator([)integer(2)operator(]) comment(# then the one we want) - -comment(# or without a temporary list) -ident(color) operator(=) ident(re)operator(.)ident(findall)operator(()string<modifier(r)delimiter(")content((?i\)()content(\\w)content(+\))content(\\s)content(+fish)content(\\b)delimiter(")>operator(,)ident(pond)operator(\))operator([)integer(2)operator(]) comment(# just grab element 3) - -keyword(print) string<delimiter(")content(The third fish in the pond is %s.)delimiter(")> operator(%) operator(()ident(color)operator(\)) -comment(##-----------------------------) -keyword(import) include(re) - -ident(pond) operator(=) string<delimiter(")content(one fish two fish red fish blue fish)delimiter(")> -ident(matches) operator(=) ident(re)operator(.)ident(findall)operator(()string<modifier(r)delimiter(")content(()content(\\w)content(+\))content(\\s)content(+fish)content(\\b)delimiter(")>operator(,)ident(pond)operator(\)) -ident(evens) operator(=) operator([)ident(fish) keyword(for) operator(()ident(i)operator(,) ident(fish)operator(\)) keyword(in) predefined(enumerate)operator(()ident(matches)operator(\)) keyword(if) ident(i)operator(%)integer(2)operator(]) -keyword(print) string<delimiter(")content(Even numbered fish are %s.)delimiter(")> operator(%) operator(()string<delimiter(")content( )delimiter(")>operator(.)ident(join)operator(()ident(evens)operator(\))operator(\)) -comment(##-----------------------------) -ident(count) operator(=) integer(0) -keyword(def) method(four_is_sushi)operator(()ident(match_obj)operator(\))operator(:) - keyword(global) ident(count) - ident(count) operator(+=) integer(1) - keyword(if) ident(count)operator(==)integer(4)operator(:) - keyword(return) string<delimiter(")content(sushi%s)delimiter(")> operator(%) operator(()ident(match_obj)operator(.)ident(group)operator(()integer(2)operator(\))operator(\)) - keyword(return) string<delimiter(")delimiter(")>operator(.)ident(join)operator(()ident(match_obj)operator(.)ident(groups)operator(()operator(\))operator(\)) - -ident(re)operator(.)ident(sub)operator(()string<modifier(r)delimiter(""")content((?x\) # VERBOSE)content( -)content( )content(\\b)content( # makes next )content(\\w)content( more efficient)content( -)content( ( )content(\\w)content(+ \) # this is what we'll be changing)content( -)content( ()content( -)content( )content(\\s)content(+ fish )content(\\b)content( -)content( \))delimiter(""")>operator(,) - ident(four_is_sushi)operator(,) - ident(pond)operator(\)) -comment(# one fish two fish red fish sushi fish) -comment(##-----------------------------) -comment(# greedily) -ident(last_fish) operator(=) ident(re)operator(.)ident(findall)operator(()string<modifier(r)delimiter(")content((?i\).*)content(\\b)content(()content(\\w)content(+\))content(\\s)content(+fish)content(\\b)delimiter(")>operator(,)ident(pond)operator(\)) -comment(##-----------------------------) -ident(pond) operator(=) string<delimiter(")content(One fish two fish red fish blue fish swim here)delimiter(")> -ident(color) operator(=) ident(re)operator(.)ident(findall)operator(()string<modifier(r)delimiter(")content((?i\))content(\\b)content(()content(\\w)content(+\))content(\\s)content(+fish)content(\\b)delimiter(")>operator(,)ident(pond)operator(\))operator([)operator(-)integer(1)operator(]) -keyword(print) string<delimiter(")content(Last fish is )delimiter(")>operator(+)ident(color)operator(+)string<delimiter(")content(.)delimiter(")> -comment(# FASTER using string.) -ident(lastfish) operator(=) ident(pond)operator(.)ident(rfind)operator(()string<delimiter(")content(fish)delimiter(")>operator(\)) -ident(color) operator(=) ident(pond)operator([)operator(:)ident(lastfish)operator(])operator(.)ident(split)operator(()operator(\))operator([)operator(-)integer(1)operator(]) -comment(##-----------------------------) -docstring<modifier(r)delimiter(""")content((?x\))content( -)content( A # find some pattern A)content( -)content( (?! # mustn't be able to find)content( -)content( .* # something)content( -)content( A # and A)content( -)content( \))content( -)content( $ # through the end of string)content( -)content( )delimiter(""")> - -ident(pond) operator(=) string<delimiter(")content(One fish two fish red fish blue fish swim here)delimiter(")> -ident(fnd) operator(=) ident(re)operator(.)ident(findall)operator(()string<modifier(r)delimiter(""")content((?xis\) # VERBOSE, CASEINSENSITIVE, DOTALL)content( -)content( )content(\\b)content( ( )content(\\w)content(+ \) )content(\\s)content(+ fish )content(\\b)content( -)content( (?! .* )content(\\b)content( fish )content(\\b)content( \))delimiter(""")>operator(,) - ident(pond)operator(\)) -keyword(if) predefined(len)operator(()ident(fnd)operator(\))operator(:) - keyword(print) string<delimiter(")content(Last fish is %s.)delimiter(")> operator(%) operator(()ident(fnd)operator([)integer(0)operator(])operator(\)) -keyword(else)operator(:) - keyword(print) string<delimiter(")content(Failed!)delimiter(")> - - -comment(# @@PLEAC@@_6.6) -comment(# Matching Multiple Lines) -comment(#) -comment(#!/usr/bin/python) -comment(# killtags - very bad html tag killer) -keyword(import) include(re) -keyword(import) include(sys) - -ident(text) operator(=) predefined(open)operator(()ident(sys)operator(.)ident(argv)operator([)integer(1)operator(])operator(\))operator(.)ident(read)operator(()operator(\)) comment(# read the whole file) -ident(text) operator(=) ident(re)operator(.)ident(sub)operator(()string<delimiter(")content((?ms\)<.*?>)delimiter(")>operator(,)string<delimiter(")delimiter(")>operator(,)ident(text)operator(\)) comment(# strip tags (terrible) -keyword(print) ident(text) -comment(## ----------------------------) -comment(#!/usr/bin/python) -comment(# headerfy: change certain chapter headers to html) -keyword(import) include(sys)operator(,) include(re) - -ident(match) operator(=) ident(re)operator(.)ident(compile)operator(()string<modifier(r)delimiter(""")content((?xms\) # re.VERBOSE, re.MULTILINE, and re.DOTALL)content( -)content( )content(\\A)content( # start of the string)content( -)content( (?P<chapter> # capture in g<chapter>)content( -)content( Chapter # literal string)content( -)content( )content(\\s)content(+ # mandatory whitespace)content( -)content( )content(\\d)content(+ # decimal number)content( -)content( )content(\\s)content(* # optional whitespace)content( -)content( : # a real colon)content( -)content( . * # anything not a newline till end of line)content( -)content( \))content( -)content( )delimiter(""")>operator(\)) -ident(text) operator(=) predefined(open)operator(()ident(sys)operator(.)ident(argv)operator([)integer(1)operator(])operator(\))operator(.)ident(read)operator(()operator(\)) comment(# read the whole file) -keyword(for) ident(paragraph) keyword(in) ident(text)operator(.)ident(split)operator(()string<delimiter(")char(\\n)delimiter(")>operator(\))operator(:) comment(# split on unix end of lines) - ident(p) operator(=) ident(match)operator(.)ident(sub)operator(()string<delimiter(")content(<h1>)content(\\g)content(<chapter></h1>)delimiter(")>operator(,)ident(paragraph)operator(\)) - keyword(print) ident(p) -comment(## ----------------------------) -comment(# the one liner does not run.) -comment(# python -c 'import sys,re; for p in open(sys.argv[1]\).read(\).split("\\n\\n"\): print re.sub(r"(?ms\)\\A(Chapter\\s+\\d+\\s*:.*\)","<h1>\\g0</h1>",p\)') -comment(## ----------------------------) -ident(match) operator(=) ident(re)operator(.)ident(compile)operator(()string<modifier(r)delimiter(")content((?ms\)^START(.*?\)^END)delimiter(")>operator(\)) - comment(# s makes . span line boundaries) - comment(# m makes ^ match at the beginning of the string and at the beginning of each line) - -ident(chunk) operator(=) integer(0) -keyword(for) ident(paragraph) keyword(in) predefined(open)operator(()ident(sys)operator(.)ident(argv)operator([)integer(1)operator(])operator(\))operator(.)ident(read)operator(()operator(\))operator(.)ident(split)operator(()string<delimiter(")char(\\n)char(\\n)delimiter(")>operator(\))operator(:) - ident(chunk) operator(+=) integer(1) - ident(fnd) operator(=) ident(match)operator(.)ident(findall)operator(()ident(paragraph)operator(\)) - keyword(if) ident(fnd)operator(:) - keyword(print) string<delimiter(")content(chunk %d in %s has <<%s>>)delimiter(")> operator(%) operator(()ident(chunk)operator(,)ident(sys)operator(.)ident(argv)operator([)integer(1)operator(])operator(,)string<delimiter(")content(>>,<<)delimiter(")>operator(.)ident(join)operator(()ident(fnd)operator(\))operator(\)) -comment(## ----------------------------) - -comment(# @@PLEAC@@_6.7) -keyword(import) include(sys) -comment(# Read the whole file and split) -ident(chunks) operator(=) predefined(open)operator(()ident(sys)operator(.)ident(argv)operator([)integer(1)operator(])operator(\))operator(.)ident(read)operator(()operator(\))operator(.)ident(split)operator(()operator(\)) comment(# on whitespace) -ident(chunks) operator(=) predefined(open)operator(()ident(sys)operator(.)ident(argv)operator([)integer(1)operator(])operator(\))operator(.)ident(read)operator(()operator(\))operator(.)ident(split)operator(()string<delimiter(")char(\\n)delimiter(")>operator(\)) comment(# on line ends) - -comment(# splitting on pattern) -keyword(import) include(re) -ident(pattern) operator(=) string<modifier(r)delimiter(")content(x)delimiter(")> -ident(chunks) operator(=) ident(re)operator(.)ident(split)operator(()ident(pattern)operator(,) predefined(open)operator(()ident(sys)operator(.)ident(argv)operator([)integer(1)operator(])operator(\))operator(.)ident(read)operator(()operator(\))operator(\)) -comment(##-----------------------------) -ident(chunks) operator(=) ident(re)operator(.)ident(split)operator(()string<modifier(r)delimiter(")content((?m\)^)content(\\.)content((Ch|Se|Ss\)$)delimiter(")>operator(,)predefined(open)operator(()ident(sys)operator(.)ident(argv)operator([)integer(1)operator(])operator(\))operator(.)ident(read)operator(()operator(\))operator(\)) -keyword(print) string<delimiter(")content(I read %d chunks.)delimiter(")> operator(%) operator(()predefined(len)operator(()ident(chunks)operator(\))operator(\)) -comment(# without delimiters) -ident(chunks) operator(=) ident(re)operator(.)ident(split)operator(()string<modifier(r)delimiter(")content((?m\)^)content(\\.)content((?:Ch|Se|Ss\)$)delimiter(")>operator(,)predefined(open)operator(()ident(sys)operator(.)ident(argv)operator([)integer(1)operator(])operator(\))operator(.)ident(read)operator(()operator(\))operator(\)) - -comment(# with delimiters) -ident(chunks) operator(=) ident(re)operator(.)ident(split)operator(()string<modifier(r)delimiter(")content((?m\)^()content(\\.)content((?:Ch|Se|Ss\)\)$)delimiter(")>operator(,)predefined(open)operator(()ident(sys)operator(.)ident(argv)operator([)integer(1)operator(])operator(\))operator(.)ident(read)operator(()operator(\))operator(\)) - -comment(# with delimiters at chunkstart) -ident(chunks) operator(=) ident(re)operator(.)ident(findall)operator(()string<modifier(r)delimiter(""")content((?xms\) # multiline, dot matches lineend, allow comments)content( -)content( ((?:^)content(\\.)content(\)? # consume the separator if present)content( -)content( .*?\) # match everything but not greedy)content( -)content( (?= # end the match on this but dont consume it)content( -)content( (?: # dont put into group [1])content( -)content( ^)content(\\.)content((?:Ch|Se|Ss\)$ # either end on one of the roff commands)content( -)content( |)content(\\Z)content( # or end of text)content( -)content( \))content( -)content( \))delimiter(""")>operator(,) - predefined(open)operator(()ident(sys)operator(.)ident(argv)operator([)integer(1)operator(])operator(\))operator(.)ident(read)operator(()operator(\))operator(\)) -comment(# [1] if "?:" is removed the result holds tuples: ('.Ch\\nchapter x','.Ch'\)) -comment(# which might be more usefull. ) - -comment(# @@PLEAC@@_6.8) -comment(##-----------------------------) -comment(# Python doesn't have perl's range operators) -comment(# If you want to only use a selected line range, use enumerate) -comment(# (though note that indexing starts at zero:) -keyword(for) ident(i)operator(,) ident(line) keyword(in) predefined(enumerate)operator(()ident(myfile)operator(\))operator(:) - keyword(if) ident(firstlinenum) operator(<=) ident(i) operator(<) ident(lastlinenum)operator(:) - ident(dosomethingwith)operator(()ident(line)operator(\)) - -comment(# Using patterned ranges is slightly trickier -) -comment(# You need to search for the first pattern then) -comment(# search for the next pattern:) -keyword(import) include(re) -keyword(for) ident(line) keyword(in) ident(myfile)operator(:) - keyword(if) ident(re)operator(.)ident(match)operator(()ident(pat1)operator(,) ident(line)operator(\))operator(:) - keyword(break) - -ident(dosomethingwith)operator(()ident(line)operator(\)) comment(# Only if pat1 can be on same line as pat2) - -keyword(for) ident(line) keyword(in) ident(myfile)operator(:) - keyword(if) ident(re)operator(.)ident(match)operator(()ident(pat2)operator(,) ident(line)operator(\))operator(:) - keyword(break) - ident(dosomethingwith)operator(()ident(line)operator(\)) -comment(##-----------------------------) -comment(# If you need to extract ranges a lot, the following generator funcs) -comment(# may be useful:) -keyword(def) method(extract_range)operator(()ident(myfile)operator(,) ident(start)operator(,) ident(finish)operator(\))operator(:) - keyword(for) ident(i)operator(,) ident(line) keyword(in) predefined(enumerate)operator(()ident(myfile)operator(\))operator(:) - keyword(if) ident(start) operator(<=) ident(i) operator(<) ident(finish)operator(:) - keyword(yield) ident(line) - keyword(elif) ident(i) operator(==) ident(finish)operator(:) - keyword(break) - -keyword(for) ident(line) keyword(in) ident(extract_range)operator(()predefined(open)operator(()string<delimiter(")content(/etc/passwd)delimiter(")>operator(\))operator(,) integer(3)operator(,) integer(5)operator(\))operator(:) - keyword(print) ident(line) - -keyword(def) method(patterned_range)operator(()ident(myfile)operator(,) ident(startpat)operator(,) ident(endpat)operator(=)pre_constant(None)operator(\))operator(:) - ident(startpat) operator(=) ident(re)operator(.)ident(compile)operator(()ident(startpat)operator(\)) - keyword(if) ident(endpat) keyword(is) keyword(not) pre_constant(None)operator(:) - ident(endpat) operator(=) ident(re)operator(.)ident(compile)operator(()ident(endpat)operator(\)) - ident(in_range) operator(=) pre_constant(False) - keyword(for) ident(line) keyword(in) ident(myfile)operator(:) - keyword(if) ident(re)operator(.)ident(match)operator(()ident(startpat)operator(,) ident(line)operator(\))operator(:) - ident(in_range) operator(=) pre_constant(True) - keyword(if) ident(in_range)operator(:) - keyword(yield) ident(line) - keyword(if) ident(endpat) keyword(is) keyword(not) pre_constant(None) keyword(and) ident(re)operator(.)ident(match)operator(()ident(endpat)operator(,) ident(line)operator(\))operator(:) - keyword(break) - -comment(# DO NOT DO THIS. Use the email module instead) -keyword(for) ident(line) keyword(in) ident(patterned_range)operator(()ident(msg)operator(,) string<delimiter(")content(^From:?)delimiter(")>operator(,) string<delimiter(")content(^$)delimiter(")>operator(\))operator(:) - keyword(pass) comment(#...) - - -comment(# @@PLEAC@@_6.9) -ident(tests) operator(=) operator(()operator(()string<delimiter(")content(list.?)delimiter(")>operator(,)string<modifier(r)delimiter(")content(^list)content(\\.)content(.$)delimiter(")>operator(\))operator(,) - operator(()string<delimiter(")content(project.*)delimiter(")>operator(,)string<modifier(r)delimiter(")content(^project)content(\\.)content(.*$)delimiter(")>operator(\))operator(,) - operator(()string<delimiter(")content(*old)delimiter(")>operator(,)string<modifier(r)delimiter(")content(^.*old$)delimiter(")>operator(\))operator(,) - operator(()string<delimiter(")content(type*.[ch])delimiter(")>operator(,)string<modifier(r)delimiter(")content(^type.*)content(\\.)content([ch]$)delimiter(")>operator(\))operator(,) - operator(()string<delimiter(")content(*.*)delimiter(")>operator(,)string<modifier(r)delimiter(")content(^.*)content(\\.)content(.*$)delimiter(")>operator(\))operator(,) - operator(()string<delimiter(")content(*)delimiter(")>operator(,)string<modifier(r)delimiter(")content(^.*$)delimiter(")>operator(\))operator(,) - operator(\)) - -comment(# The book says convert "*","?","[","]" all other characters will be quoted.) -comment(# The book uses "\\Q" which escapes any characters that would otherwise be) -comment(# treated as regular expression.) -comment(# Escaping every char fails as "\\s" is not "s" in a regex.) - -keyword(def) method(glob2pat)operator(()ident(globstr)operator(\))operator(:) - ident(pat) operator(=) ident(globstr)operator(.)ident(replace)operator(()string<delimiter(")char(\\\\)delimiter(")>operator(,)string<modifier(r)delimiter(")content(\\\\)delimiter(")>operator(\)) - ident(pat) operator(=) ident(pat)operator(.)ident(replace)operator(()string<delimiter(")content(.)delimiter(")>operator(,)string<modifier(r)delimiter(")content(\\.)delimiter(")>operator(\))operator(.)ident(replace)operator(()string<delimiter(")content(?)delimiter(")>operator(,)string<modifier(r)delimiter(")content(.)delimiter(")>operator(\))operator(.)ident(replace)operator(()string<delimiter(")content(*)delimiter(")>operator(,)string<modifier(r)delimiter(")content(.*)delimiter(")>operator(\)) - - keyword(return) string<delimiter(")content(^)delimiter(")>operator(+)ident(pat)operator(+)string<delimiter(")content($)delimiter(")> - -keyword(for) ident(globstr)operator(,) ident(patstr) keyword(in) ident(tests)operator(:) - ident(g2p) operator(=) ident(glob2pat)operator(()ident(globstr)operator(\)) - keyword(if) ident(g2p) operator(!=) ident(patstr)operator(:) - keyword(print) ident(globstr)operator(,) string<delimiter(")content(failed! Should be)delimiter(")>operator(,) ident(patstr)operator(,) string<delimiter(")content(but was)delimiter(")>operator(,) ident(g2p) - - -comment(# @@PLEAC@@_6.10) - -comment(# download the following standalone program) -comment(#!/usr/bin/python) -comment(# popgrep1 - grep for abbreviations of places that say "pop") -comment(# version 1: slow but obvious way) -keyword(import) include(fileinput) -keyword(import) include(re) -ident(popstates) operator(=) operator([)string<delimiter(")content(CO)delimiter(")>operator(,)string<delimiter(")content(ON)delimiter(")>operator(,)string<delimiter(")content(MI)delimiter(")>operator(,)string<delimiter(")content(WI)delimiter(")>operator(,)string<delimiter(")content(MN)delimiter(")>operator(]) -keyword(for) ident(line) keyword(in) ident(fileinput)operator(.)ident(input)operator(()operator(\))operator(:) - keyword(for) ident(state) keyword(in) ident(popstates)operator(:) - keyword(if) ident(re)operator(.)ident(search)operator(()string<modifier(r)delimiter(")content(\\b)delimiter(")>operator(+)ident(state)operator(+)string<modifier(r)delimiter(")content(\\b)delimiter(")>operator(,)ident(line)operator(\))operator(:) - keyword(print) ident(line) - - - -comment(#-----------------------------) -comment(# download the following standalone program) -comment(#!/usr/bin/python) -comment(# popgrep2 - grep for abbreviations of places that say "pop") -comment(# version 2: compile the patterns) -keyword(import) include(fileinput) -keyword(import) include(re) -ident(popstates) operator(=) operator([)string<delimiter(")content(CO)delimiter(")>operator(,)string<delimiter(")content(ON)delimiter(")>operator(,)string<delimiter(")content(MI)delimiter(")>operator(,)string<delimiter(")content(WI)delimiter(")>operator(,)string<delimiter(")content(MN)delimiter(")>operator(]) -ident(state_re) operator(=) operator([)operator(]) -keyword(for) ident(state) keyword(in) ident(popstates)operator(:) - ident(state_re)operator(.)ident(append)operator(()ident(re)operator(.)ident(compile)operator(()string<modifier(r)delimiter(")content(\\b)delimiter(")>operator(+)ident(state)operator(+)string<modifier(r)delimiter(")content(\\b)delimiter(")>operator(\))operator(\)) -keyword(for) ident(line) keyword(in) ident(fileinput)operator(.)ident(input)operator(()operator(\))operator(:) - keyword(for) ident(state) keyword(in) ident(state_re)operator(:) - keyword(if) ident(state)operator(.)ident(search)operator(()ident(line)operator(\))operator(:) - keyword(print) ident(line) - - -comment(#-----------------------------) -comment(# download the following standalone program) -comment(#!/usr/bin/python) -comment(# popgrep3 - grep for abbreviations of places that say "pop") -comment(# version 3: compile a single pattern) -keyword(import) include(fileinput) -keyword(import) include(re) -ident(popstates) operator(=) operator([)string<delimiter(")content(CO)delimiter(")>operator(,)string<delimiter(")content(ON)delimiter(")>operator(,)string<delimiter(")content(MI)delimiter(")>operator(,)string<delimiter(")content(WI)delimiter(")>operator(,)string<delimiter(")content(MN)delimiter(")>operator(]) -ident(state_re) operator(=) ident(re)operator(.)ident(compile)operator(()string<modifier(r)delimiter(")content(\\b)content((?:)delimiter(")>operator(+)string<delimiter(")content(|)delimiter(")>operator(.)ident(join)operator(()ident(popstates)operator(\))operator(+)string<modifier(r)delimiter(")content(\))content(\\b)delimiter(")>operator(\)) -keyword(for) ident(line) keyword(in) ident(fileinput)operator(.)ident(input)operator(()operator(\))operator(:) - keyword(if) ident(state_re)operator(.)ident(search)operator(()ident(line)operator(\))operator(:) - keyword(print) ident(line) - - -comment(#-----------------------------) -comment(# download the following standalone program) -comment(#!/usr/bin/python) -comment(# grepauth - print lines that mention both Tom and Nat) -keyword(import) include(fileinput) -keyword(import) include(re) - -keyword(def) method(build_match_any)operator(()ident(words)operator(\))operator(:) - keyword(return) ident(re)operator(.)ident(compile)operator(()string<delimiter(")content(|)delimiter(")>operator(.)ident(join)operator(()ident(words)operator(\))operator(\)) -keyword(def) method(uniq)operator(()ident(arr)operator(\))operator(:) - ident(seen) operator(=) operator({)operator(}) - keyword(for) ident(item) keyword(in) ident(arr)operator(:) - ident(seen)operator([)ident(item)operator(]) operator(=) ident(seen)operator(.)ident(get)operator(()ident(item)operator(,) integer(0)operator(\)) operator(+) integer(1) - keyword(return) ident(seen)operator(.)ident(keys)operator(()operator(\)) -keyword(def) method(build_match_all)operator(()ident(words)operator(\))operator(:) - ident(r) operator(=) ident(re)operator(.)ident(compile)operator(()string<delimiter(")content(|)delimiter(")>operator(.)ident(join)operator(()ident(words)operator(\))operator(\)) - ident(c) operator(=) keyword(lambda) ident(line)operator(:) predefined(len)operator(()ident(uniq)operator(()ident(r)operator(.)ident(findall)operator(()ident(line)operator(\))operator(\))operator(\))operator(>=)predefined(len)operator(()ident(words)operator(\)) - keyword(return) ident(c) - -ident(any) operator(=) ident(build_match_any)operator(()operator(()string<delimiter(")content(Tom)delimiter(")>operator(,)string<delimiter(")content(Nat)delimiter(")>operator(\))operator(\)) -ident(all) operator(=) ident(build_match_all)operator(()operator(()string<delimiter(")content(Tom)delimiter(")>operator(,)string<delimiter(")content(Nat)delimiter(")>operator(\))operator(\)) -keyword(for) ident(line) keyword(in) ident(fileinput)operator(.)ident(input)operator(()operator(\))operator(:) - keyword(if) predefined(any)operator(.)ident(search)operator(()ident(line)operator(\))operator(:) - keyword(print) string<delimiter(")content(any:)delimiter(")>operator(,) ident(line) - keyword(if) predefined(all)operator(()ident(line)operator(\))operator(:) - keyword(print) string<delimiter(")content(all:)delimiter(")>operator(,) ident(line) - - - -comment(#-----------------------------) - - -comment(# @@PLEAC@@_6.11) -comment(# Testing for a Valid Pattern) - -keyword(import) include(re) -keyword(while) pre_constant(True)operator(:) - ident(pat) operator(=) predefined(raw_input)operator(()string<delimiter(")content(Pattern? )delimiter(")>operator(\)) - keyword(try)operator(:) - ident(re)operator(.)ident(compile)operator(()ident(pat)operator(\)) - keyword(except) ident(re)operator(.)ident(error)operator(,) ident(err)operator(:) - keyword(print) string<delimiter(")content(INVALID PATTERN)delimiter(")>operator(,) ident(err) - keyword(continue) - keyword(break) - -comment(# ----) -keyword(def) method(is_valid_pattern)operator(()ident(pat)operator(\))operator(:) - keyword(try)operator(:) - ident(re)operator(.)ident(compile)operator(()ident(pat)operator(\)) - keyword(except) ident(re)operator(.)ident(error)operator(:) - keyword(return) pre_constant(False) - keyword(return) pre_constant(True) - -comment(# ----) - -comment(# download the following standalone program) -comment(#!/usr/bin/python) -comment(# paragrep - trivial paragraph grepper) -comment(#) -comment(# differs from perl version in parano.) -comment(# python version displays paragraph in current file.) - -keyword(import) include(sys)operator(,) include(os.path)operator(,) include(re) -keyword(if) predefined(len)operator(()ident(sys)operator(.)ident(argv)operator(\))operator(<=)integer(1)operator(:) - keyword(print) string<delimiter(")content(usage: %s pat [files])char(\\n)delimiter(")> operator(%) ident(sys)operator(.)ident(argv)operator([)integer(0)operator(]) - ident(sys)operator(.)ident(exit)operator(()integer(1)operator(\)) - -ident(pat) operator(=) ident(sys)operator(.)ident(argv)operator([)integer(1)operator(]) -keyword(try)operator(:) - ident(pat_re) operator(=) ident(re)operator(.)ident(compile)operator(()ident(pat)operator(\)) -keyword(except)operator(:) - keyword(print) string<delimiter(")content(%s: bad pattern %s: %s)delimiter(")> operator(%) operator(()ident(sys)operator(.)ident(argv)operator([)integer(1)operator(])operator(,) ident(pat)operator(,) ident(sys)operator(.)ident(exc_info)operator(()operator(\))operator([)integer(1)operator(])operator(\)) - ident(sys)operator(.)ident(exit)operator(()integer(1)operator(\)) -keyword(for) ident(filename) keyword(in) predefined(filter)operator(()ident(os)operator(.)ident(path)operator(.)ident(isfile)operator(,)ident(sys)operator(.)ident(argv)operator([)integer(2)operator(:)operator(])operator(\))operator(:) - ident(parano) operator(=) integer(0) - keyword(for) ident(para) keyword(in) predefined(open)operator(()ident(filename)operator(\))operator(.)ident(read)operator(()operator(\))operator(.)ident(split)operator(()string<delimiter(")char(\\n)char(\\n)delimiter(")>operator(\))operator(:) - ident(parano) operator(+=) integer(1) - keyword(if) ident(pat_re)operator(.)ident(search)operator(()ident(para)operator(\))operator(:) - keyword(print) ident(filename)operator(,) ident(parano)operator(,) ident(para)operator(,) string<delimiter(")char(\\n)delimiter(")> - - - -comment(# ----) - -comment(# as we dont evaluate patterns the attack ::) -comment(#) -comment(# $pat = "You lose @{[ system('rm -rf *']} big here";) -comment(#) -comment(# does not work.) - - -comment(# @@PLEAC@@_6.12) - -comment(# download the following standalone program) -comment(#!/usr/bin/python) -comment(# localeg - demonstrates locale effects) -comment(#) -comment(# re must be told to respect locale either in the regexp) -comment(# "(?L\)" or as flag to the call (python 2.4\) "re.LOCALE".) - -keyword(import) include(sys) -keyword(import) include(re)operator(,) include(string) -keyword(from) include(locale) keyword(import) include(LC_CTYPE)operator(,) include(setlocale)operator(,) include(getlocale) - -ident(name) operator(=) string<delimiter(")content(andreas k)char(\\xF6)content(nig)delimiter(")> -ident(locale) operator(=) operator({)string<delimiter(")content(German)delimiter(")> operator(:) string<delimiter(")content(de_DE.ISO_8859-1)delimiter(")>operator(,) string<delimiter(")content(English)delimiter(")> operator(:) string<delimiter(")content(en_US)delimiter(")>operator(}) -comment(# us-ascii is not supported on linux py23) -comment(# none works in activestate py24) - -keyword(try)operator(:) - ident(setlocale)operator(()ident(LC_CTYPE)operator(,) ident(locale)operator([)string<delimiter(")content(English)delimiter(")>operator(])operator(\)) -keyword(except)operator(:) - keyword(print) string<delimiter(")content(Invalid locale %s)delimiter(")> operator(%) ident(locale)operator([)string<delimiter(")content(English)delimiter(")>operator(]) - ident(sys)operator(.)ident(exit)operator(()integer(1)operator(\)) -ident(english_names) operator(=) operator([)operator(]) -keyword(for) ident(n) keyword(in) ident(re)operator(.)ident(findall)operator(()string<modifier(r)delimiter(")content((?L\))content(\\b)content(()content(\\w)content(+\))content(\\b)delimiter(")>operator(,)ident(name)operator(\))operator(:) - ident(english_names)operator(.)ident(append)operator(()ident(n)operator(.)ident(capitalize)operator(()operator(\))operator(\)) - -keyword(try)operator(:) - ident(setlocale)operator(()ident(LC_CTYPE)operator(,) ident(locale)operator([)string<delimiter(")content(German)delimiter(")>operator(])operator(\)) -keyword(except)operator(:) - keyword(print) string<delimiter(")content(Invalid locale %s)delimiter(")> operator(%) ident(locale)operator([)string<delimiter(")content(German)delimiter(")>operator(]) - ident(sys)operator(.)ident(exit)operator(()integer(1)operator(\)) -ident(german_names) operator(=) predefined(map)operator(()ident(string)operator(.)ident(capitalize)operator(,) ident(re)operator(.)ident(findall)operator(()string<modifier(r)delimiter(")content((?L\))content(\\b)content(()content(\\w)content(+\))content(\\b)delimiter(")>operator(,)ident(name)operator(\))operator(\)) - -keyword(print) string<delimiter(")content(English names: %s)delimiter(")> operator(%) string<delimiter(")content( )delimiter(")>operator(.)ident(join)operator(()ident(english_names)operator(\)) -keyword(print) string<delimiter(")content(German names: %s)delimiter(")> operator(%) string<delimiter(")content( )delimiter(")>operator(.)ident(join)operator(()ident(german_names)operator(\)) - - -comment(# @@PLEAC@@_6.13) -comment(##-----------------------------) -keyword(import) include(difflib) -ident(matchlist) operator(=) operator([)string<delimiter(")content(ape)delimiter(")>operator(,) string<delimiter(")content(apple)delimiter(")>operator(,) string<delimiter(")content(lapel)delimiter(")>operator(,) string<delimiter(")content(peach)delimiter(")>operator(,) string<delimiter(")content(puppy)delimiter(")>operator(]) -keyword(print) ident(difflib)operator(.)ident(get_close_matches)operator(()string<delimiter(")content(appel)delimiter(")>operator(,) ident(matchlist)operator(\)) -comment(#=> ['lapel', 'apple', 'ape']) -comment(##-----------------------------) -comment(# Also see:) -comment(# http://www.personal.psu.edu/staff/i/u/iua1/python/apse/) -comment(# http://www.bio.cam.ac.uk/~mw263/pyagrep.html) - -comment(# @@PLEAC@@_6.14) -comment(##-----------------------------) -comment(# To search (potentially\) repeatedly for a pattern, use re.finditer(\):) - -comment(# DO NOT DO THIS. Split on commas and convert elems using int(\)) -ident(mystr) operator(=) string<delimiter(")content(3,4,5,9,120)delimiter(")> -keyword(for) ident(match) keyword(in) ident(re)operator(.)ident(finditer)operator(()string<delimiter(")content(()content(\\d)content(+\))delimiter(")>operator(,) ident(mystr)operator(\))operator(:) - ident(n) operator(=) ident(match)operator(.)ident(group)operator(()integer(0)operator(\)) - keyword(if) ident(n) operator(==) string<delimiter(")content(9)delimiter(")>operator(:) - keyword(break) comment(# '120' will never be matched) - keyword(print) string<delimiter(")content(Found number)delimiter(")>operator(,) ident(n) - -comment(# matches know their end position) -ident(mystr) operator(=) string<delimiter(")content(The year 1752 lost 10 days on the 3rd of September)delimiter(")> -ident(x) operator(=) ident(re)operator(.)ident(finditer)operator(()string<delimiter(")content(()content(\\d)content(+\))delimiter(")>operator(,) ident(mystr)operator(\)) -keyword(for) ident(match) keyword(in) ident(x)operator(:) - ident(n) operator(=) ident(match)operator(.)ident(group)operator(()integer(0)operator(\)) - keyword(print) string<delimiter(")content(Found number)delimiter(")>operator(,) ident(n) - -ident(tail) operator(=) ident(re)operator(.)ident(match)operator(()string<delimiter(")content(()content(\\S)content(+\))delimiter(")>operator(,) ident(mystr)operator([)ident(match)operator(.)ident(end)operator(()operator(\))operator(:)operator(])operator(\)) -keyword(if) ident(tail)operator(:) - keyword(print) string<delimiter(")content(Found %s after the last number.)delimiter(")>operator(%)ident(tail)operator(.)ident(group)operator(()integer(0)operator(\)) - - -comment(# @@PLEAC@@_6.15) -comment(# Python's regexes are based on Perl's, so it has the non-greedy ) -comment(# '*?', '+?', and '??' versions of '*', '+', and '?'.) -comment(# DO NOT DO THIS. import htmllib, formatter, etc, instead) -comment(#-----------------------------) -comment(# greedy pattern) -ident(txt) operator(=) ident(re)operator(.)ident(sub)operator(()string<delimiter(")content(<.*>)delimiter(")>operator(,) string<delimiter(")delimiter(")>operator(,) ident(txt)operator(\)) comment(# try to remove tags, very badly) - -comment(# non-greedy pattern) -ident(txt) operator(=) ident(re)operator(.)ident(sub)operator(()string<delimiter(")content(<.*?>)delimiter(")>operator(,) string<delimiter(")delimiter(")>operator(,) ident(txt)operator(\)) comment(# try to remove tags, still rather badly) -comment(#-----------------------------) -ident(txt) operator(=) string<delimiter(")content(<b><i>this</i> and <i>that</i> are important</b> Oh, <b><i>me too!</i></b>)delimiter(")> - -keyword(print) ident(re)operator(.)ident(findall)operator(()string<delimiter(")content(<b><i>(.*?\)</i></b>)delimiter(")>operator(,) ident(txt) -comment(##-----------------------------) -keyword(print) ident(re)operator(.)ident(findall)operator(()string<delimiter(")content(/BEGIN((?:(?!BEGIN\).\)*\)END/)delimiter(")>operator(,) ident(txt)operator(\)) -comment(##-----------------------------) -keyword(print) ident(re)operator(.)ident(findall)operator(()string<delimiter(")content(<b><i>((?:(?!<b>|<i>\).\)*\)</i></b>)delimiter(")>operator(,) ident(txt)operator(\)) -comment(##-----------------------------) -keyword(print) ident(re)operator(.)ident(findall)operator(()string<delimiter(")content(<b><i>((?:(?!<[ib]>\).\)*\)</i></b>)delimiter(")>operator(,) ident(txt)operator(\)) -comment(##-----------------------------) -keyword(print) ident(re)operator(.)ident(findall)operator(()string<delimiter(""")content( -)content( <b><i> )content( -)content( [^<]* # stuff not possibly bad, and not possibly the end.)content( -)content( (?: # at this point, we can have '<' if not part of something bad)content( -)content( (?! </?[ib]> \) # what we can't have)content( -)content( < # okay, so match the '<')content( -)content( [^<]* # and continue with more safe stuff)content( -)content( \) *)content( -)content( </i></b>)content( -)content( )delimiter(""")>operator(,) ident(re)operator(.)ident(VERBOSE)operator(,) ident(txt)operator(\)) -comment(##-----------------------------) - -comment(# @@PLEAC@@_6.16) -comment(##-----------------------------) -ident(text) operator(=) string<delimiter(""")content( -)content(This is a test)content( -)content(test of the duplicate word finder.)content( -)delimiter(""")> -ident(words) operator(=) ident(text)operator(.)ident(split)operator(()operator(\)) -keyword(for) ident(curr)operator(,) predefined(next) keyword(in) predefined(zip)operator(()ident(words)operator([)operator(:)operator(-)integer(1)operator(])operator(,) ident(words)operator([)integer(1)operator(:)operator(])operator(\))operator(:) - keyword(if) ident(curr)operator(.)ident(upper)operator(()operator(\)) operator(==) predefined(next)operator(.)ident(upper)operator(()operator(\))operator(:) - keyword(print) string<delimiter(")content(Duplicate word '%s' found.)delimiter(")> operator(%) ident(curr) - -comment(# DON'T DO THIS) -keyword(import) include(re) -ident(pat) operator(=) string<modifier(r)delimiter(""")content( -)content( )content(\\b)content( # start at a word boundary (begin letters\))content( -)content( ()content(\\S)content(+\) # find chunk of non-whitespace)content( -)content( )content(\\b)content( # until another word boundary (end letters\))content( -)content( ()content( -)content( )content(\\s)content(+ # separated by some whitespace)content( -)content( )content(\\1)content( # and that very same chunk again)content( -)content( )content(\\b)content( # until another word boundary)content( -)content( \) + # one or more sets of those)content( -)content( )delimiter(""")> -keyword(for) ident(match) keyword(in) ident(re)operator(.)ident(finditer)operator(()ident(pat)operator(,) ident(text)operator(,) ident(flags)operator(=)ident(re)operator(.)ident(VERBOSE)operator(|)ident(re)operator(.)ident(IGNORECASE)operator(\))operator(:) - keyword(print) string<delimiter(")content(Duplicate word '%s' found.)delimiter(")> operator(%) ident(match)operator(.)ident(group)operator(()integer(1)operator(\)) -comment(##-----------------------------) -ident(a) operator(=) string<delimiter(')content(nobody)delimiter(')>operator(;) -ident(b) operator(=) string<delimiter(')content(bodysnatcher)delimiter(')>operator(;) - -ident(text) operator(=) ident(a)operator(+)string<delimiter(")content( )delimiter(")>operator(+)ident(b) -ident(pat) operator(=) string<modifier(r)delimiter(")content(^()content(\\w)content(+\)()content(\\w)content(+\) )content(\\2)content(()content(\\w)content(+\)$)delimiter(")> -keyword(for) ident(match) keyword(in) ident(re)operator(.)ident(finditer)operator(()ident(pat)operator(,) ident(text)operator(\))operator(:) - ident(m1)operator(,) ident(m2)operator(,) ident(m3) operator(=) ident(match)operator(.)ident(groups)operator(()operator(\)) - keyword(print) ident(m2)operator(,) string<delimiter(")content(overlaps in %s-%s-%s)delimiter(")>operator(%)operator(()ident(m1)operator(,) ident(m2)operator(,) ident(m3)operator(\)) -comment(##-----------------------------) -ident(pat) operator(=) string<modifier(r)delimiter(")content(^()content(\\w)content(+?\)()content(\\w)content(+\) )content(\\2)content(()content(\\w)content(+\)$)delimiter(")> -comment(##-----------------------------) -keyword(try)operator(:) - keyword(while) pre_constant(True)operator(:) - ident(factor) operator(=) ident(re)operator(.)ident(match)operator(()string<modifier(r)delimiter(")content(^(oo+?\))content(\\1)content(+$)delimiter(")>operator(,) ident(n)operator(\))operator(.)ident(group)operator(()integer(1)operator(\)) - ident(n) operator(=) ident(re)operator(.)ident(sub)operator(()ident(factor)operator(,) string<delimiter(")content(o)delimiter(")>operator(,) ident(n)operator(\)) - keyword(print) predefined(len)operator(()ident(factor)operator(\)) -keyword(except) exception(AttributeError)operator(:) - keyword(print) predefined(len)operator(()ident(n)operator(\)) -comment(##-----------------------------) -keyword(def) method(diaphantine)operator(()ident(n)operator(,) ident(x)operator(,) ident(y)operator(,) ident(z)operator(\))operator(:) - ident(pat) operator(=) string<modifier(r)delimiter(")content(^(o*\))content(\\1)content({%s}(o*\))content(\\2)content({%s}(o*\))content(\\3)content({%s}$)delimiter(")>operator(%)operator(()ident(x)operator(-)integer(1)operator(,) ident(y)operator(-)integer(1)operator(,) ident(z)operator(-)integer(1)operator(\)) - ident(text) operator(=) string<delimiter(")content(o)delimiter(")>operator(*)ident(n) - keyword(try)operator(:) - ident(vals) operator(=) operator([)predefined(len)operator(()ident(v)operator(\)) keyword(for) ident(v) keyword(in) ident(re)operator(.)ident(match)operator(()ident(pat)operator(,) ident(text)operator(\))operator(.)ident(groups)operator(()operator(\))operator(]) - keyword(except) exception(ValueError)operator(:) - keyword(print) string<delimiter(")content(No solutions.)delimiter(")> - keyword(else)operator(:) - keyword(print) string<delimiter(")content(One solution is: x=%s, y=%s, z=%s.)delimiter(")>operator(%)predefined(tuple)operator(()ident(vals)operator(\)) - -ident(diaphantine)operator(()ident(n)operator(=)integer(281)operator(,) ident(x)operator(=)integer(12)operator(,) ident(y)operator(=)integer(15)operator(,) ident(z)operator(=)integer(16)operator(\)) - -comment(# @@PLEAC@@_6.17) -comment(##-----------------------------) -comment(# Pass any of the following patterns to re.match(\), etc) -ident(pat) operator(=) string<delimiter(")content(ALPHA|BETA)delimiter(")> -ident(pat) operator(=) string<delimiter(")content(^(?=.*ALPHA\)(?=.*BETA\))delimiter(")> -ident(pat) operator(=) string<delimiter(")content(ALPHA.*BETA|BETA.*ALPHA)delimiter(")> -ident(pat) operator(=) string<delimiter(")content(^(?:(?!PAT\).\)*$)delimiter(")> -ident(pat) operator(=) string<delimiter(")content((?=^(?:(?!BAD\).\)*$\)GOOD)delimiter(")> -comment(##-----------------------------) -keyword(if) keyword(not) ident(re)operator(.)ident(match)operator(()ident(pattern)operator(,) ident(text)operator(\))operator(:) - ident(something)operator(()operator(\)) -comment(##-----------------------------) -keyword(if) ident(re)operator(.)ident(match)operator(()ident(pat1)operator(,) ident(text)operator(\)) keyword(and) ident(re)operator(.)ident(match)operator(()ident(pat2)operator(,) ident(text)operator(\))operator(:) - ident(something)operator(()operator(\)) -comment(##-----------------------------) -keyword(if) ident(re)operator(.)ident(match)operator(()ident(pat1)operator(,) ident(text)operator(\)) keyword(or) ident(re)operator(.)ident(match)operator(()ident(pat2)operator(,) ident(text)operator(\))operator(:) - ident(something)operator(()operator(\)) -comment(##-----------------------------) -comment(# DON'T DO THIS.) -docstring<delimiter(""")content(minigrep - trivial grep)delimiter(""")> -keyword(import) include(sys)operator(,) include(re) - -ident(pat) operator(=) ident(sys)operator(.)ident(argv)operator([)integer(1)operator(]) -keyword(for) ident(line) keyword(in) ident(sys)operator(.)ident(stdin)operator(:) - keyword(if) ident(re)operator(.)ident(match)operator(()ident(pat)operator(,) ident(line)operator(\))operator(:) - keyword(print) ident(line)operator([)operator(:)operator(-)integer(1)operator(]) -comment(##-----------------------------) -keyword(if) ident(re)operator(.)ident(match)operator(()string<modifier(r)delimiter(")content(^(?=.*bell\)(?=.*lab\))delimiter(")>operator(,) string<delimiter(")content(labelled)delimiter(")>operator(\))operator(:) - ident(something)operator(()operator(\)) -comment(##-----------------------------) -keyword(if) ident(re)operator(.)ident(search)operator(()string<delimiter(")content(bell)delimiter(")>operator(,) ident(s)operator(\)) keyword(and) ident(re)operator(.)ident(search)operator(()string<delimiter(")content(lab)delimiter(")>operator(,) ident(s)operator(\))operator(:) - ident(something)operator(()operator(\)) -comment(##-----------------------------) -keyword(if) ident(re)operator(.)ident(match)operator(()string<delimiter(""")content( -)content( ^ # start of string)content( -)content( (?= # zero-width lookahead)content( -)content( .* # any amount of intervening stuff)content( -)content( bell # the desired bell string)content( -)content( \) # rewind, since we were only looking)content( -)content( (?= # and do the same thing)content( -)content( .* # any amount of intervening stuff)content( -)content( lab # and the lab part)content( -)content( \))content( -)content( )delimiter(""")>operator(,) - ident(murray_hill)operator(,) - ident(re)operator(.)ident(DOTALL) operator(|) ident(re)operator(.)ident(VERBOSE)operator(\))operator(:) - keyword(print) string<delimiter(")content(Looks like Bell Labs might be in Murray Hill!)delimiter(")> -comment(##-----------------------------) -keyword(if) ident(re)operator(.)ident(match)operator(()string<modifier(r)delimiter(")content((?:^.*bell.*lab\)|(?:^.*lab.*bell\))delimiter(")>operator(,) string<delimiter(")content(labelled)delimiter(")>operator(\))operator(:) - ident(something)operator(()operator(\)) -comment(##-----------------------------) -ident(brand) operator(=) string<delimiter(")content(labelled)delimiter(")> -keyword(if) ident(re)operator(.)ident(match)operator(()string<delimiter(""")content( -)content( (?: # non-capturing grouper)content( -)content( ^ .*? # any amount of stuff at the front)content( -)content( bell # look for a bell)content( -)content( .*? # followed by any amount of anything)content( -)content( lab # look for a lab)content( -)content( \) # end grouper)content( -)content( | # otherwise, try the other direction)content( -)content( (?: # non-capturing grouper)content( -)content( ^ .*? # any amount of stuff at the front)content( -)content( lab # look for a lab)content( -)content( .*? # followed by any amount of anything)content( -)content( bell # followed by a bell)content( -)content( \) # end grouper)content( -)content( )delimiter(""")>operator(,) - ident(brand)operator(,) - ident(re)operator(.)ident(DOTALL) operator(|) ident(re)operator(.)ident(VERBOSE)operator(\))operator(:) - keyword(print) string<delimiter(")content(Our brand has bell and lab separate.)delimiter(")> -comment(##-----------------------------) -ident(x) operator(=) string<delimiter(")content(odlaw)delimiter(")> -keyword(if) ident(re)operator(.)ident(match)operator(()string<delimiter(")content(^(?:(?!waldo\).\)*$)delimiter(")>operator(,) ident(x)operator(\))operator(:) - keyword(print) string<delimiter(")content(There's no waldo here!)delimiter(")> -comment(##-----------------------------) -keyword(if) ident(re)operator(.)ident(match)operator(()string<delimiter(""")content( -)content( ^ # start of string)content( -)content( (?: # non-capturing grouper)content( -)content( (?! # look ahead negation)content( -)content( waldo # is he ahead of us now?)content( -)content( \) # is so, the negation failed)content( -)content( . # any character (cuzza /s\))content( -)content( \) * # repeat that grouping 0 or more)content( -)content( $ # through the end of the string)content( -)content( )delimiter(""")>operator(,) - ident(x)operator(,) - ident(re)operator(.)ident(VERBOSE) operator(|) ident(re)operator(.)ident(DOTALL)operator(\))operator(:) - keyword(print) string<delimiter(")content(There's no waldo here!)char(\\n)delimiter(")>operator(;) -comment(##-----------------------------) - -comment(# @@PLEAC@@_6.18) -comment(# @@INCOMPLETE@@) -comment(# @@INCOMPLETE@@) - -comment(# @@PLEAC@@_6.19) -comment(##-----------------------------) -keyword(from) include(email._parseaddr) keyword(import) include(AddressList) - -keyword(print) ident(AddressList)operator(()string<delimiter(")content(fred&barney@stonehenge.com)delimiter(")>operator(\))operator(.)ident(addresslist)operator([)integer(0)operator(]) - -keyword(print) ident(AddressList)operator(()string<delimiter(")content(fred&barney@stonehenge.com (Hanna Barbara\))delimiter(")>operator(\))operator(.)ident(addresslist)operator([)integer(0)operator(]) - -ident(name)operator(,) ident(address) operator(=) ident(AddressList)operator(()string<delimiter(")content(Mr Fooby Blah <me@nowhere.com>)delimiter(")>operator(\))operator(.)ident(addresslist)operator([)integer(0)operator(]) -keyword(print) string<delimiter(")content(%s's address is '%s')delimiter(")>operator(%)operator(()ident(name)operator(,) ident(address)operator(\)) - -comment(# @@PLEAC@@_6.20) -comment(##-----------------------------) -comment(# Assuming the strings all start with different letters, or you don't) -comment(# mind there being precedence, use the startswith string method:) - -keyword(def) method(get_action)operator(()ident(answer)operator(\))operator(:) - ident(answer) operator(=) ident(answer)operator(.)ident(lower)operator(()operator(\)) - ident(actions) operator(=) operator([)string<delimiter(")content(send)delimiter(")>operator(,) string<delimiter(")content(stop)delimiter(")>operator(,) string<delimiter(")content(abort)delimiter(")>operator(,) string<delimiter(")content(list)delimiter(")>operator(,) string<delimiter(")content(end)delimiter(")>operator(]) - keyword(for) ident(action) keyword(in) ident(actions)operator(:) - keyword(if) ident(action)operator(.)ident(startswith)operator(()ident(answer)operator(\))operator(:) - keyword(return) ident(action) - -keyword(print) string<delimiter(")content(Action is %s.)delimiter(")>operator(%)ident(get_action)operator(()string<delimiter(")content(L)delimiter(")>operator(\)) -comment(#=> Action is list.) -comment(##-----------------------------) -comment(#DON'T DO THIS:) -keyword(import) include(re) -ident(answer) operator(=) string<delimiter(")content(ab)delimiter(")> -ident(answer) operator(=) ident(re)operator(.)ident(escape)operator(()ident(answer)operator(.)ident(strip)operator(()operator(\))operator(\)) -keyword(for) ident(action) keyword(in) operator(()string<delimiter(")content(SEND)delimiter(")>operator(,) string<delimiter(")content(STOP)delimiter(")>operator(,) string<delimiter(")content(ABORT)delimiter(")>operator(,) string<delimiter(")content(LIST)delimiter(")>operator(,) string<delimiter(")content(EDIT)delimiter(")>operator(\))operator(:) - keyword(if) ident(re)operator(.)ident(match)operator(()ident(answer)operator(,) ident(action)operator(,) ident(flags)operator(=)ident(re)operator(.)ident(IGNORECASE)operator(\))operator(:) - keyword(print) string<delimiter(")content(Action is %s.)delimiter(")>operator(%)ident(action)operator(.)ident(lower)operator(()operator(\)) -comment(##-----------------------------) -keyword(import) include(re)operator(,) include(sys) -keyword(def) method(handle_cmd)operator(()ident(cmd)operator(\))operator(:) - ident(cmd) operator(=) ident(re)operator(.)ident(escape)operator(()ident(cmd)operator(.)ident(strip)operator(()operator(\))operator(\)) - keyword(for) ident(name)operator(,) ident(action) keyword(in) operator({)string<delimiter(")content(edit)delimiter(")>operator(:) ident(invoke_editor)operator(,) - string<delimiter(")content(send)delimiter(")>operator(:) ident(deliver_message)operator(,) - string<delimiter(")content(list)delimiter(")>operator(:) keyword(lambda)operator(:) ident(system)operator(()ident(pager)operator(,) ident(myfile)operator(\))operator(,) - string<delimiter(")content(abort)delimiter(")>operator(:) ident(sys)operator(.)ident(exit)operator(,) - operator(}) - keyword(if) ident(re)operator(.)ident(match)operator(()ident(cmd)operator(,) ident(name)operator(,) ident(flags)operator(=)ident(re)operator(.)ident(IGNORECASE)operator(\))operator(:) - ident(action)operator(()operator(\)) - keyword(break) - keyword(else)operator(:) - keyword(print) string<delimiter(")content(Unknown command:)delimiter(")>operator(,) ident(cmd) -ident(handle_cmd)operator(()string<delimiter(")content(ab)delimiter(")>operator(\)) - -comment(# @@PLEAC@@_6.21) -comment(##-----------------------------) -comment(# urlify - wrap HTML links around URL-like constructs) -keyword(import) include(re)operator(,) include(sys)operator(,) include(fileinput) - -keyword(def) method(urlify_string)operator(()ident(s)operator(\))operator(:) - ident(urls) operator(=) string<modifier(r)delimiter(')content((http|telnet|gopher|file|wais|ftp\))delimiter(')> - - ident(ltrs) operator(=) string<modifier(r)delimiter(')content(\\w)delimiter(')>operator(;) - ident(gunk) operator(=) string<modifier(r)delimiter(')content(/#~:.?+=&%@!)content(\\-)delimiter(')> - ident(punc) operator(=) string<modifier(r)delimiter(')content(.:?)content(\\-)delimiter(')> - ident(any) operator(=) ident(ltrs) operator(+) ident(gunk) operator(+) ident(punc) - - ident(pat) operator(=) ident(re)operator(.)ident(compile)operator(()string<modifier(r)delimiter(""")content( -)content( )content(\\b)content( # start at word boundary)content( -)content( ( # begin )content(\\1)content( {)content( -)content( %(urls\)s : # need resource and a colon)content( -)content( [%(any\)s] +? # followed by one or more)content( -)content( # of any valid character, but)content( -)content( # be conservative and take only)content( -)content( # what you need to....)content( -)content( \) # end )content(\\1)content( })content( -)content( (?= # look-ahead non-consumptive assertion)content( -)content( [%(punc\)s]* # either 0 or more punctuation)content( -)content( [^%(any\)s] # followed by a non-url char)content( -)content( | # or else)content( -)content( $ # then end of the string)content( -)content( \))content( -)content( )delimiter(""")>operator(%)predefined(locals)operator(()operator(\))operator(,) ident(re)operator(.)ident(VERBOSE) operator(|) ident(re)operator(.)ident(IGNORECASE)operator(\)) - keyword(return) ident(re)operator(.)ident(sub)operator(()ident(pat)operator(,) string<modifier(r)delimiter(")content(<A HREF=)content(\\1)content(>)content(\\1)content(</A>)delimiter(")>operator(,) ident(s)operator(\)) - -keyword(if) ident(__name__) operator(==) string<delimiter(")content(__main__)delimiter(")>operator(:) - keyword(for) ident(line) keyword(in) ident(fileinput)operator(.)ident(input)operator(()operator(\))operator(:) - keyword(print) ident(urlify_string)operator(()ident(line)operator(\)) - - -comment(# @@PLEAC@@_6.22) -comment(##-----------------------------) -comment(# @@INCOMPLETE@@) -comment(# @@INCOMPLETE@@) - -comment(# @@PLEAC@@_6.23) -comment(# The majority of regexes in this section are either partially) -comment(# or completely The Wrong Thing to Do.) -comment(##-----------------------------) -comment(# DON'T DO THIS. Use a Roman Numeral module, etc. (since) -comment(# you need one anyway to calculate values\)) -ident(pat) operator(=) string<modifier(r)delimiter(")content(^m*(d?c{0,3}|c[dm]\)(l?x{0,3}|x[lc]\)(v?i{0,3}|i[vx]\)$)delimiter(")> -ident(re)operator(.)ident(match)operator(()ident(pat)operator(,) string<delimiter(")content(mcmlxcvii)delimiter(")>operator(\)) -comment(##-----------------------------) -ident(txt) operator(=) string<delimiter(")content(one two three four five)delimiter(")> - -comment(# If the words are cleanly delimited just split and rejoin:) -ident(word1)operator(,) ident(word2)operator(,) ident(rest) operator(=) ident(txt)operator(.)ident(split)operator(()string<delimiter(")content( )delimiter(")>operator(,) integer(2)operator(\)) -keyword(print) string<delimiter(")content( )delimiter(")>operator(.)ident(join)operator(()operator([)ident(word2)operator(,) ident(word1)operator(,) ident(rest)operator(])operator(\)) - -comment(# Otherwise:) -ident(frompat) operator(=) string<modifier(r)delimiter(")content(()content(\\S)content(+\)()content(\\s)content(+\)()content(\\S)content(+\))delimiter(")> -ident(topat) operator(=) string<modifier(r)delimiter(")content(\\3)content(\\2)content(\\1)delimiter(")> -keyword(print) ident(re)operator(.)ident(sub)operator(()ident(frompat)operator(,) ident(topat)operator(,) ident(txt)operator(\)) - -comment(##-----------------------------) -keyword(print) predefined(str)operator(.)ident(split)operator(()string<delimiter(")content(=)delimiter(")>operator(\)) - -comment(# DON'T DO THIS) -ident(pat) operator(=) string<modifier(r)delimiter(")content(()content(\\w)content(+\))content(\\s)content(*=)content(\\s)content(*(.*\))content(\\s)content(*$)delimiter(")> -keyword(print) ident(re)operator(.)ident(match)operator(()ident(pat)operator(,) string<delimiter(")content(key=val)delimiter(")>operator(\))operator(.)ident(groups)operator(()operator(\)) -comment(##-----------------------------) -ident(line) operator(=) string<delimiter(")content(such a very very very very very very very very very very very very very long line)delimiter(")> -keyword(if) predefined(len)operator(()ident(line)operator(\)) operator(>) integer(80)operator(:) - ident(process)operator(()ident(line)operator(\)) - -comment(# DON'T DO THIS) -ident(pat) operator(=) string<delimiter(")content(.{80,})delimiter(")> -keyword(if) ident(re)operator(.)ident(match)operator(()ident(pat)operator(,) ident(line)operator(\))operator(:) - ident(process)operator(()ident(line)operator(\)) -comment(##-----------------------------) -ident(dt) operator(=) ident(time)operator(.)ident(strptime)operator(()string<delimiter(")content(12/11/05 12:34:56)delimiter(")>operator(,) string<delimiter(")content(%d/%m/%y %H:%M:%S)delimiter(")>operator(\)) - -comment(# DON'T DO THIS) -ident(pat) operator(=) string<modifier(r)delimiter(")content(()content(\\d)content(+\)/()content(\\d)content(+\)/()content(\\d)content(+\) ()content(\\d)content(+\):()content(\\d)content(+\):()content(\\d)content(+\))delimiter(")> -ident(dt) operator(=) ident(re)operator(.)ident(match)operator(()ident(pat)operator(,) string<delimiter(")content(12/11/05 12:34:56)delimiter(")>operator(\))operator(.)ident(groups)operator(()operator(\)) -comment(##-----------------------------) -ident(txt) operator(=) string<delimiter(")content(/usr/bin/python)delimiter(")> -keyword(print) ident(txt)operator(.)ident(replace)operator(()string<delimiter(")content(/usr/bin)delimiter(")>operator(,) string<delimiter(")content(/usr/local/bin)delimiter(")>operator(\)) -comment(# Alternatively for file operations use os.path, shutil, etc.) - -comment(# DON'T DO THIS) -keyword(print) ident(re)operator(.)ident(sub)operator(()string<delimiter(")content(/usr/bin)delimiter(")>operator(,) string<delimiter(")content(/usr/local/bin)delimiter(")>operator(,) ident(txt)operator(\)) -comment(##-----------------------------) -keyword(import) include(re) - -keyword(def) method(unescape_hex)operator(()ident(matchobj)operator(\))operator(:) - keyword(return) predefined(chr)operator(()predefined(int)operator(()ident(matchobj)operator(.)ident(groups)operator(()integer(0)operator(\))operator([)integer(0)operator(])operator(,) integer(16)operator(\))operator(\)) -ident(txt) operator(=) ident(re)operator(.)ident(sub)operator(()string<modifier(r)delimiter(")content(%([0-9A-Fa-f][0-9A-Fa-f]\))delimiter(")>operator(,) ident(unescape_hex)operator(,) ident(txt)operator(\)) - -comment(# Assuming that the hex escaping is well-behaved, an alternative is:) -keyword(def) method(unescape_hex)operator(()ident(seg)operator(\))operator(:) - keyword(return) predefined(chr)operator(()predefined(int)operator(()ident(seg)operator([)operator(:)integer(2)operator(])operator(,) integer(16)operator(\))operator(\)) operator(+) ident(seg)operator([)integer(2)operator(:)operator(]) - -ident(segs) operator(=) ident(txt)operator(.)ident(split)operator(()string<delimiter(")content(%)delimiter(")>operator(\)) -ident(txt) operator(=) ident(segs)operator([)integer(0)operator(]) operator(+) string<delimiter(")delimiter(")>operator(.)ident(join)operator(()ident(unescape_hex)operator(()ident(seg)operator(\)) keyword(for) ident(seg) keyword(in) ident(segs)operator([)integer(1)operator(:)operator(])operator(\)) -comment(##-----------------------------) -ident(txt) operator(=) ident(re)operator(.)ident(sub)operator(()string<modifier(r)delimiter(""")content( -)content( /)content(\\*)content( # Match the opening delimiter)content( -)content( .*? # Match a minimal number of characters)content( -)content( )content(\\*)content(/ # Match the closing delimiter)content( -)content( )delimiter(""")>operator(,) string<delimiter(")delimiter(")>operator(,) ident(txt)operator(,) ident(re)operator(.)ident(VERBOSE)operator(\)) -comment(##-----------------------------) -ident(txt)operator(.)ident(strip)operator(()operator(\)) - -comment(# DON'T DO THIS) -ident(txt) operator(=) ident(re)operator(.)ident(sub)operator(()string<modifier(r)delimiter(")content(^)content(\\s)content(+)delimiter(")>operator(,) string<delimiter(")delimiter(")>operator(,) ident(txt)operator(\)) -ident(txt) operator(=) ident(re)operator(.)ident(sub)operator(()string<modifier(r)delimiter(")content(\\s)content(+$)delimiter(")>operator(,) string<delimiter(")delimiter(")>operator(,) ident(txt)operator(\)) -comment(##-----------------------------) -ident(txt)operator(.)ident(replace)operator(()string<delimiter(")char(\\\\)content(n)delimiter(")>operator(,) string<delimiter(")char(\\n)delimiter(")>operator(\)) - -comment(# DON'T DO THIS) -ident(txt) operator(=) ident(re)operator(.)ident(sub)operator(()string<delimiter(")char(\\\\)content(n)delimiter(")>operator(,) string<delimiter(")char(\\n)delimiter(")>operator(,) ident(txt)operator(\)) -comment(##-----------------------------) -ident(txt) operator(=) ident(re)operator(.)ident(sub)operator(()string<delimiter(")content(^.*::)delimiter(")>operator(,) string<delimiter(")delimiter(")>operator(\)) -comment(##-----------------------------) -keyword(import) include(socket) -ident(socket)operator(.)ident(inet_aton)operator(()ident(txt)operator(\)) comment(# Will raise an error if incorrect) - -comment(# DON'T DO THIS.) -ident(octseg) operator(=)string<modifier(r)delimiter(")content(([01]?)content(\\d)content(\\d)content(|2[0-4])content(\\d)content(|25[0-5]\))delimiter(")> -ident(dot) operator(=) string<modifier(r)delimiter(")content(\\.)delimiter(")> -ident(pat) operator(=) string<delimiter(")content(^)delimiter(")> operator(+) ident(octseg) operator(+) ident(dot) operator(+) ident(octseg) operator(+) ident(dot) operator(+) ident(octseg) operator(+) ident(dot) operator(+) ident(octseg) operator(+) string<delimiter(")content($)delimiter(")> - -keyword(if) keyword(not) ident(re)operator(.)ident(match)operator(()ident(pat)operator(,) ident(txt)operator(,) ident(re)operator(.)ident(VERBOSE)operator(\)) - keyword(raise) exception(ValueError) - -comment(# Defitely DON'T DO THIS.) -ident(pat) operator(=) string<modifier(r)delimiter(""")content(^([01]?)content(\\d)content(\\d)content(|2[0-4])content(\\d)content(|25[0-5]\))content(\\.)content(([01]?)content(\\d)content(\\d)content(|2[0-4])content(\\d)content(|25[0-5]\))content(\\.)content( -)content( ([01]?)content(\\d)content(\\d)content(|2[0-4])content(\\d)content(|25[0-5]\))content(\\.)content(([01]?)content(\\d)content(\\d)content(|2[0-4])content(\\d)content(|25[0-5]\)$)delimiter(""")> -comment(##-----------------------------) -ident(fname) operator(=) ident(os)operator(.)ident(path)operator(.)ident(basename)operator(()ident(path)operator(\)) - -comment(# DON'T DO THIS.) -ident(fname) operator(=) ident(re)operator(.)ident(sub)operator(()string<delimiter(")content(^.*/)delimiter(")>operator(,) string<delimiter(")delimiter(")>operator(,) ident(path)operator(\)) -comment(##-----------------------------) -keyword(import) include(os) -keyword(try)operator(:) - ident(tc) operator(=) ident(os)operator(.)ident(environ)operator([)string<delimiter(")content(TERMCAP)delimiter(")>operator(]) -keyword(except) exception(KeyError)operator(:) - ident(cols) operator(=) integer(80) -keyword(else)operator(:) - ident(cols) operator(=) ident(re)operator(.)ident(match)operator(()string<delimiter(")content(:co#()content(\\d)content(+\):)delimiter(")>operator(\))operator(.)ident(groups)operator(()integer(1)operator(\)) -comment(##-----------------------------) -comment(# (not quite equivalent to the Perl version\)) -ident(name) operator(=) ident(os)operator(.)ident(path)operator(.)ident(basename)operator(()ident(sys)operator(.)ident(argv)operator([)integer(0)operator(])operator(\)) - -comment(# DON'T DO THIS.) -ident(name) operator(=) ident(re)operator(.)ident(sub)operator(()string<delimiter(")content(^.*/)delimiter(")>operator(,) string<delimiter(")delimiter(")>operator(,) ident(sys)operator(.)ident(argv)operator([)integer(0)operator(])operator(\)) -comment(##-----------------------------) -keyword(if) ident(sys)operator(.)ident(platform) operator(!=) string<delimiter(")content(linux)delimiter(")>operator(:) - keyword(raise) exception(SystemExit)operator(()string<delimiter(")content(This isn't Linux)delimiter(")>operator(\)) -comment(##-----------------------------) -ident(txt) operator(=) ident(re)operator(.)ident(sub)operator(()string<modifier(r)delimiter(")content(\\n)content(\\s)content(+)delimiter(")>operator(,) string<delimiter(")content( )delimiter(")>operator(,) ident(txt)operator(\)) - -comment(# In many cases you could just use:) -ident(txt) operator(=) ident(txt)operator(.)ident(replace)operator(()string<delimiter(")char(\\n)delimiter(")>operator(,) string<delimiter(")content( )delimiter(")>operator(\)) -comment(##-----------------------------) -ident(nums) operator(=) ident(re)operator(.)ident(findall)operator(()string<modifier(r)delimiter(")content(\\d)content(+)content(\\.)content(?)content(\\d)content(*|)content(\\.)content(\\d)content(+)delimiter(")>operator(,) ident(txt)operator(\)) -comment(##-----------------------------) -comment(# If the words are clearly delimited just use:) -ident(capwords) operator(=) operator([)ident(word) keyword(for) ident(word) keyword(in) ident(txt)operator(.)ident(split)operator(()operator(\)) keyword(if) ident(word)operator(.)ident(isupper)operator(()operator(\))operator(]) - -comment(# Otherwise) -ident(capwords) operator(=) operator([)ident(word) keyword(for) ident(word) keyword(in) ident(re)operator(.)ident(findall)operator(()string<modifier(r)delimiter(")content(\\b)content(()content(\\S)content(+\))content(\\b)delimiter(")>operator(,) ident(txt)operator(\)) keyword(if) ident(word)operator(.)ident(isupper)operator(()operator(\))operator(]) - -comment(# (probably\) DON'T DO THIS. ) -ident(capwords) operator(=) ident(re)operator(.)ident(findall)operator(()string<modifier(r)delimiter(")content(()content(\\b)content([^)content(\\W)content(a-z0-9_]+)content(\\b)content(\))delimiter(")>operator(,) ident(txt)operator(\)) -comment(##-----------------------------) -comment(# If the words are clearly delimited just use:) -ident(lowords) operator(=) operator([)ident(word) keyword(for) ident(word) keyword(in) ident(txt)operator(.)ident(split)operator(()operator(\)) keyword(if) ident(word)operator(.)ident(islower)operator(()operator(\))operator(]) - -comment(# Otherwise) -ident(lowords) operator(=) operator([)ident(word) keyword(for) ident(word) keyword(in) ident(re)operator(.)ident(findall)operator(()string<modifier(r)delimiter(")content(\\b)content(()content(\\S)content(+\))content(\\b)delimiter(")>operator(,) ident(txt)operator(\)) keyword(if) ident(word)operator(.)ident(islower)operator(()operator(\))operator(]) - -comment(# (probably\) DON'T DO THIS. ) -ident(lowords) operator(=) ident(re)operator(.)ident(findall)operator(()string<modifier(r)delimiter(")content(()content(\\b)content([^)content(\\W)content(A-Z0-9_]+)content(\\b)content(\))delimiter(")>operator(,) ident(txt)operator(\)) -comment(##-----------------------------) -comment(# If the words are clearly delimited just use:) -ident(icwords) operator(=) operator([)ident(word) keyword(for) ident(word) keyword(in) ident(txt)operator(.)ident(split)operator(()operator(\)) keyword(if) ident(word)operator(.)ident(istitle)operator(()operator(\))operator(]) - -comment(# Otherwise) -ident(icwords) operator(=) operator([)ident(word) keyword(for) ident(word) keyword(in) ident(re)operator(.)ident(finditer)operator(()string<modifier(r)delimiter(")content(\\b)content(()content(\\S)content(+\))content(\\b)delimiter(")>operator(\)) keyword(if) ident(word)operator(.)ident(istitle)operator(()operator(\))operator(]) - -comment(# DON'T DO THIS. ) -ident(icwords) operator(=) ident(re)operator(.)ident(findall)operator(()string<modifier(r)delimiter(")content(()content(\\b)content([^)content(\\W)content(a-z0-9_][^)content(\\W)content(A-Z0-9_]*)content(\\b)content(\))delimiter(")>operator(,) ident(txt)operator(\)) -comment(##-----------------------------) -comment(# DON'T DO THIS - use HTMLParser, etc.) -ident(links) operator(=) ident(re)operator(.)ident(findall)operator(()string<modifier(r)delimiter(""")content(<A[^>]+?HREF)content(\\s)content(*=)content(\\s)content(*["']?([^'" >]+?\)[ '"]?>)delimiter(""")>operator(,) ident(txt)operator(\)) -comment(##-----------------------------) -ident(names) operator(=) ident(txt)operator(.)ident(split)operator(()operator(\)) -keyword(if) predefined(len)operator(()ident(names)operator(\)) operator(==) integer(3)operator(:) - ident(initial) operator(=) ident(names)operator([)integer(1)operator(])operator([)integer(0)operator(]) -keyword(else)operator(:) - ident(initial) operator(=) string<delimiter(")delimiter(")> - -comment(# DON'T DO THIS. ) -ident(pat) operator(=) string<delimiter(")content(^)content(\\S)content(+)content(\\s)content(+()content(\\S)content(\))content(\\S)content(*)content(\\s)content(+)content(\\S)delimiter(")> -keyword(try)operator(:) - ident(initial) operator(=) ident(re)operator(.)ident(match)operator(()ident(pat)operator(,) ident(txt)operator(\))operator(.)ident(group)operator(()integer(1)operator(\)) -keyword(except) exception(AttributeError)operator(:) - ident(initial) operator(=) string<delimiter(")delimiter(")> -comment(##-----------------------------) -ident(txt) operator(=) ident(re)operator(.)ident(sub)operator(()string<delimiter(')content("([^"]*\)")delimiter(')>operator(,) string<delimiter(")content(``)char(\\1)content('')delimiter(")>operator(,) ident(txt)operator(\)) -comment(##-----------------------------) -ident(sentences) operator(=) operator([)ident(elem)operator([)integer(0)operator(]) keyword(for) ident(elem) keyword(in) ident(re)operator(.)ident(findall)operator(()string<modifier(r)delimiter(")content((.*?[!?.]\)( |)content(\\Z)content(\))delimiter(")>operator(,) ident(s)operator(\))operator(]) -comment(##-----------------------------) -keyword(import) include(time) -ident(dt) operator(=) ident(time)operator(.)ident(strptime)operator(()ident(txt)operator(,) string<delimiter(")content(%Y-%m-%d)delimiter(")>operator(\)) - -comment(# DON'T DO THIS.) -ident(year)operator(,) ident(month)operator(,) ident(day) operator(=) ident(re)operator(.)ident(match)operator(()string<modifier(r)delimiter(")content(()content(\\d)content({4}\)-()content(\\d)content(\\d)content(\)-()content(\\d)content(\\d)content(\))delimiter(")>operator(,) ident(txt)operator(\))operator(.)ident(groups)operator(()operator(\)) -comment(##-----------------------------) -ident(pat) operator(=) string<modifier(r)delimiter(""")content( -)content( ^)content( -)content( (?:)content( -)content( 1 )content(\\s)content( (?: )content(\\d)content(\\d)content(\\d)content( )content(\\s)content(\)? # 1, or 1 and area code)content( -)content( | # ... or ...)content( -)content( )content(\\()content(\\d)content(\\d)content(\\d)content(\\\))content( )content(\\s)content( # area code with parens)content( -)content( | # ... or ...)content( -)content( (?: )content(\\+)content(\\d)content(\\d)content(?)content(\\d)content(? )content(\\s)content(\)? # optional +country code)content( -)content( )content(\\d)content(\\d)content(\\d)content( ([)content(\\s)content(\\-)content(]\) # and area code)content( -)content( \))content( -)content( )content(\\d)content(\\d)content(\\d)content( ()content(\\s)content(|)content(\\1)content(\) # prefix (and area code separator\))content( -)content( )content(\\d)content(\\d)content(\\d)content(\\d)content( # exchange)content( -)content( $)content( -)content( )delimiter(""")> -ident(re)operator(.)ident(match)operator(()ident(pat)operator(,) ident(txt)operator(,) ident(re)operator(.)ident(VERBOSE)operator(\)) -comment(##-----------------------------) -ident(re)operator(.)ident(match)operator(()string<modifier(r)delimiter(")content(\\b)content(oh)content(\\s)content(+my)content(\\s)content(+gh?o(d(dess(es\)?|s?\)|odness|sh\))content(\\b)delimiter(")>operator(,) ident(txt)operator(,) ident(re)operator(.)ident(IGNORECASE)operator(\)) -comment(##-----------------------------) -keyword(for) ident(line) keyword(in) predefined(file)operator(()ident(fname)operator(,) string<delimiter(")content(Ur)delimiter(")>operator(\))operator(:) comment(#Universal newlines) - ident(process)operator(()ident(line)operator(\)) - -comment(# DON'T DO THIS) -ident(lines) operator(=) operator([)ident(re)operator(.)ident(sub)operator(()string<modifier(r)delimiter(")content(^([^)content(\\0)content(12)content(\\0)content(15]*\)()content(\\0)content(12)content(\\0)content(15?|)content(\\0)content(15)content(\\0)content(12?\))delimiter(")>operator(,) string<delimiter(")delimiter(")>operator(,) ident(line)operator(\)) - keyword(for) ident(line) keyword(in) predefined(file)operator(()ident(fname)operator(\))operator(]) -comment(##-----------------------------) - - -comment(# @@PLEAC@@_7.0) -keyword(for) ident(line) keyword(in) predefined(open)operator(()string<delimiter(")content(/usr/local/widgets/data)delimiter(")>operator(\))operator(:) - keyword(if) ident(blue) keyword(in) ident(line)operator(:) - keyword(print) ident(line)operator([)operator(:)operator(-)integer(1)operator(]) -comment(#---------) -keyword(import) include(sys)operator(,) include(re) -ident(pattern) operator(=) ident(re)operator(.)ident(compile)operator(()string<modifier(r)delimiter(")content(\\d)delimiter(")>operator(\)) -keyword(for) ident(line) keyword(in) ident(sys)operator(.)ident(stdin)operator(:) - keyword(if) keyword(not) ident(pattern)operator(.)ident(search)operator(()ident(line)operator(\))operator(:) - ident(sys)operator(.)ident(stderr)operator(.)ident(write)operator(()string<delimiter(")content(No digit found.)char(\\n)delimiter(")>operator(\)) - ident(sys)operator(.)ident(stdout)operator(.)ident(write)operator(()string<delimiter(")content(Read: )delimiter(")> operator(+) ident(line)operator(\)) -ident(sys)operator(.)ident(stdout)operator(.)ident(close)operator(()operator(\)) -comment(#---------) -ident(logfile) operator(=) predefined(open)operator(()string<delimiter(")content(/tmp/log)delimiter(")>operator(,) string<delimiter(")content(w)delimiter(")>operator(\)) -comment(#---------) -ident(logfile)operator(.)ident(close)operator(()operator(\)) -comment(#---------) -keyword(print)operator(>>)ident(logfile)operator(,) string<delimiter(")content(Countdown initiated ...)delimiter(")> -keyword(print) string<delimiter(")content(You have 30 seconds to reach minimum safety distance.)delimiter(")> - -comment(# DONT DO THIS) -keyword(import) include(sys) -ident(old_output)operator(,) ident(sys)operator(.)ident(stdout) operator(=) ident(sys)operator(.)ident(stdout)operator(,) ident(logfile) -keyword(print) string<delimiter(")content(Countdown initiated ...)delimiter(")> -ident(sys)operator(.)ident(stdout) operator(=) ident(old_output) -keyword(print) string<delimiter(")content(You have 30 seconds to reach minimum safety distance.)delimiter(")> -comment(#---------) - -comment(# @@PLEAC@@_7.1) -comment(# Python's open(\) function somewhat covers both perl's open(\) and ) -comment(# sysopen(\) as it has optional arguments for mode and buffering.) -ident(source) operator(=) predefined(open)operator(()ident(path)operator(\)) -ident(sink) operator(=) predefined(open)operator(()ident(path)operator(,) string<delimiter(")content(w)delimiter(")>operator(\)) -comment(#---------) -comment(# NOTE: almost no one uses the low-level os.open and os.fdopen) -comment(# commands, so their inclusion here is just silly. If ) -comment(# os.fdopen(os.open(...\)\) were needed often, it would be turned) -comment(# into its own function. Instead, I'll use 'fd' to hint that) -comment(# os.open returns a file descriptor) -keyword(import) include(os) -ident(source_fd) operator(=) ident(os)operator(.)ident(open)operator(()ident(path)operator(,) ident(os)operator(.)ident(O_RDONLY)operator(\)) -ident(source) operator(=) ident(os)operator(.)ident(fdopen)operator(()ident(fd)operator(\)) -ident(sink_fd) operator(=) ident(os)operator(.)ident(open)operator(()ident(path)operator(,) ident(os)operator(.)ident(O_WRONLY)operator(\)) -ident(sink) operator(=) ident(os)operator(.)ident(fdopen)operator(()ident(sink_fd)operator(\)) -comment(#---------) -ident(myfile) operator(=) predefined(open)operator(()ident(filename)operator(,) string<delimiter(")content(w)delimiter(")>operator(\)) -ident(fd) operator(=) ident(os)operator(.)ident(open)operator(()ident(filename)operator(,) ident(os)operator(.)ident(O_WRONLY) operator(|) ident(os)operator(.)ident(O_CREAT)operator(\)) -ident(myfile) operator(=) predefined(open)operator(()ident(filename)operator(,) string<delimiter(")content(r+)delimiter(")>operator(\)) -comment(#---------) -ident(fd) operator(=) ident(os)operator(.)ident(open)operator(()ident(name)operator(,) ident(flags)operator(\)) -ident(fd) operator(=) ident(os)operator(.)ident(open)operator(()ident(name)operator(,) ident(flags)operator(,) ident(mode)operator(\)) -comment(#---------) -ident(myfile) operator(=) predefined(open)operator(()ident(path)operator(\)) -ident(fd) operator(=) ident(os)operator(.)ident(open)operator(()ident(path)operator(,) ident(os)operator(.)ident(O_RDONLY)operator(\)) -comment(#-----------------------------) -ident(myfile) operator(=) predefined(open)operator(()ident(path)operator(,) string<delimiter(")content(w)delimiter(")>operator(\)) -ident(fd) operator(=) ident(os)operator(.)ident(open)operator(()ident(path)operator(,) ident(os)operator(.)ident(O_WRONLY)operator(|)ident(os)operator(.)ident(O_TRUNC)operator(|)ident(os)operator(.)ident(O_CREAT)operator(\)) -ident(fd) operator(=) ident(os)operator(.)ident(open)operator(()ident(path)operator(,) ident(os)operator(.)ident(O_WRONLY)operator(|)ident(os)operator(.)ident(O_TRUNC)operator(|)ident(os)operator(.)ident(O_CREAT)operator(,) oct(0600)operator(\)) -comment(#-----------------------------) -ident(fd) operator(=) ident(os)operator(.)ident(open)operator(()ident(path)operator(,) ident(os)operator(.)ident(O_WRONLY)operator(|)ident(os)operator(.)ident(O_EXCL)operator(|)ident(os)operator(.)ident(O_CREAT)operator(\)) -ident(fd) operator(=) ident(os)operator(.)ident(open)operator(()ident(path)operator(,) ident(os)operator(.)ident(O_WRONLY)operator(|)ident(os)operator(.)ident(O_EXCL)operator(|)ident(os)operator(.)ident(O_CREAT)operator(,) oct(0600)operator(\)) -comment(#-----------------------------) -ident(myfile) operator(=) predefined(open)operator(()ident(path)operator(,) string<delimiter(")content(a)delimiter(")>operator(\)) -ident(fd) operator(=) ident(os)operator(.)ident(open)operator(()ident(path)operator(,) ident(os)operator(.)ident(O_WRONLY)operator(|)ident(os)operator(.)ident(O_APPEND)operator(|)ident(os)operator(.)ident(O_CREAT)operator(\)) -ident(fd) operator(=) ident(os)operator(.)ident(open)operator(()ident(path)operator(,) ident(os)operator(.)ident(O_WRONLY)operator(|)ident(os)operator(.)ident(O_APPEND)operator(|)ident(s)operator(.)ident(O_CREAT)operator(,) oct(0600)operator(\)) -comment(#-----------------------------) -ident(fd) operator(=) ident(os)operator(.)ident(open)operator(()ident(path)operator(,) ident(os)operator(.)ident(O_WRONLY)operator(|)ident(os)operator(.)ident(O_APPEND)operator(\)) -comment(#-----------------------------) -ident(myfile) operator(=) predefined(open)operator(()ident(path)operator(,) string<delimiter(")content(rw)delimiter(")>operator(\)) -ident(fd) operator(=) ident(os)operator(.)ident(open)operator(()ident(path)operator(,) ident(os)operator(.)ident(O_RDWR)operator(\)) -comment(#-----------------------------) -ident(fd) operator(=) ident(os)operator(.)ident(open)operator(()ident(path)operator(,) ident(os)operator(.)ident(O_RDWR)operator(|)ident(os)operator(.)ident(O_CREAT)operator(\)) -ident(fd) operator(=) ident(os)operator(.)ident(open)operator(()ident(path)operator(,) ident(os)operator(.)ident(O_RDWR)operator(|)ident(os)operator(.)ident(O_CREAT)operator(,) oct(0600)operator(\)) -comment(#-----------------------------) -ident(fd) operator(=) ident(os)operator(.)ident(open)operator(()ident(path)operator(,) ident(os)operator(.)ident(O_RDWR)operator(|)ident(os)operator(.)ident(O_EXCL)operator(|)ident(os)operator(.)ident(O_CREAT)operator(\)) -ident(fd) operator(=) ident(os)operator(.)ident(open)operator(()ident(path)operator(,) ident(os)operator(.)ident(O_RDWR)operator(|)ident(os)operator(.)ident(O_EXCL)operator(|)ident(os)operator(.)ident(O_CREAT)operator(,) oct(0600)operator(\)) -comment(#-----------------------------) - -comment(# @@PLEAC@@_7.2) -comment(# Nothing different needs to be done with Python) - -comment(# @@PLEAC@@_7.3) -keyword(import) include(os) -ident(filename) operator(=) ident(os)operator(.)ident(path)operator(.)ident(expanduser)operator(()ident(filename)operator(\)) - -comment(# @@PLEAC@@_7.4) -ident(myfile) operator(=) predefined(open)operator(()ident(filename)operator(\)) comment(# raise an exception on error) - -keyword(try)operator(:) - ident(myfile) operator(=) predefined(open)operator(()ident(filename)operator(\)) -keyword(except) exception(IOError)operator(,) ident(err)operator(:) - keyword(raise) exception(AssertionError)operator(()string<delimiter(")content(Couldn't open %s for reading : %s)delimiter(")> operator(%) - operator(()ident(filename)operator(,) ident(err)operator(.)ident(strerror)operator(\))operator(\)) - -comment(# @@PLEAC@@_7.5) -keyword(import) include(tempfile) - -ident(myfile) operator(=) ident(tempfile)operator(.)ident(TemporaryFile)operator(()operator(\)) - -comment(#-----------------------------) -comment(# NOTE: The TemporaryFile(\) call is much more appropriate) -comment(# I would not suggest using this code for real work.) -keyword(import) include(os)operator(,) include(tempfile) - -keyword(while) pre_constant(True)operator(:) - ident(name) operator(=) ident(os)operator(.)ident(tmpnam)operator(()operator(\)) - keyword(try)operator(:) - ident(fd) operator(=) ident(os)operator(.)ident(open)operator(()ident(name)operator(,) ident(os)operator(.)ident(O_RDWR)operator(|)ident(os)operator(.)ident(O_CREAT)operator(|)ident(os)operator(.)ident(O_EXCL)operator(\)) - keyword(break) - keyword(except) ident(os)operator(.)ident(error)operator(:) - keyword(pass) -ident(myfile) operator(=) ident(tempfile)operator(.)ident(TemporaryFileWrapper)operator(()ident(os)operator(.)ident(fdopen)operator(()ident(fd)operator(\))operator(,) ident(name)operator(\)) - -comment(# now go on to use the file ...) -comment(#-----------------------------) -keyword(import) include(os) -keyword(while) pre_constant(True)operator(:) - ident(tmpname) operator(=) ident(os)operator(.)ident(tmpnam)operator(()operator(\)) - ident(fd) operator(=) ident(os)operator(.)ident(open)operator(()ident(tmpnam)operator(,) ident(os)operator(.)ident(O_RDWR) operator(|) ident(os)operator(.)ident(O_CREAT) operator(|) ident(os)operator(.)ident(O_EXCL)operator(\)) - keyword(if) ident(fd)operator(:) - ident(tmpfile) operator(=) ident(os)operator(.)ident(fdopen)operator(()ident(fd)operator(\)) - keyword(break) - -ident(os)operator(.)ident(remove)operator(()ident(tmpnam)operator(\)) - -comment(#-----------------------------) -keyword(import) include(tempfile) - -ident(myfile) operator(=) ident(tempfile)operator(.)ident(TemporaryFile)operator(()ident(bufsize) operator(=) integer(0)operator(\)) -keyword(for) ident(i) keyword(in) predefined(range)operator(()integer(10)operator(\))operator(:) - keyword(print)operator(>>)ident(myfile)operator(,) ident(i) -ident(myfile)operator(.)ident(seek)operator(()integer(0)operator(\)) -keyword(print) string<delimiter(")content(Tmp file has:)delimiter(")>operator(,) ident(myfile)operator(.)ident(read)operator(()operator(\)) -comment(#-----------------------------) - -comment(# @@PLEAC@@_7.6) -ident(DATA) operator(=) string<delimiter(""")char(\\ -)content(your data goes here)content( -)delimiter(""")> -keyword(for) ident(line) keyword(in) ident(DATA)operator(.)ident(split)operator(()string<delimiter(")char(\\n)delimiter(")>operator(\))operator(:) - keyword(pass) comment(# process the line) - -comment(# @@PLEAC@@_7.7) - -keyword(for) ident(line) keyword(in) ident(sys)operator(.)ident(stdin)operator(:) - keyword(pass) comment(# do something with the line) - -comment(# processing a list of files from commandline) -keyword(import) include(fileinput) -keyword(for) ident(line) keyword(in) ident(fileinput)operator(.)ident(input)operator(()operator(\))operator(:) - ident(do) ident(something) keyword(with) ident(the) ident(line) - -comment(#-----------------------------) -keyword(import) include(sys) - -keyword(def) method(do_with)operator(()ident(myfile)operator(\))operator(:) - keyword(for) ident(line) keyword(in) ident(myfile)operator(:) - keyword(print) ident(line)operator([)operator(:)operator(-)integer(1)operator(]) - -ident(filenames) operator(=) ident(sys)operator(.)ident(argv)operator([)integer(1)operator(:)operator(]) -keyword(if) ident(filenames)operator(:) - keyword(for) ident(filename) keyword(in) ident(filenames)operator(:) - keyword(try)operator(:) - ident(do_with)operator(()predefined(open)operator(()ident(filename)operator(\))operator(\)) - keyword(except) exception(IOError)operator(,) ident(err)operator(:) - ident(sys)operator(.)ident(stderr)operator(.)ident(write)operator(()string<delimiter(")content(Can't open %s: %s)char(\\n)delimiter(")> operator(%) operator(()ident(filename)operator(,) ident(err)operator(.)ident(strerror)operator(\))operator(\)) - keyword(continue) -keyword(else)operator(:) - ident(do_with)operator(()ident(sys)operator(.)ident(stdin)operator(\)) - -comment(#-----------------------------) -keyword(import) include(sys)operator(,) include(glob) -ident(ARGV) operator(=) ident(sys)operator(.)ident(argv)operator([)integer(1)operator(:)operator(]) keyword(or) ident(glob)operator(.)ident(glob)operator(()string<delimiter(")content(*.[Cch])delimiter(")>operator(\)) -comment(#-----------------------------) -comment(# NOTE: the getopt module is the prefered mechanism for reading) -comment(# command line arguments) -keyword(import) include(sys) -ident(args) operator(=) ident(sys)operator(.)ident(argv)operator([)integer(1)operator(:)operator(]) -ident(chop_first) operator(=) integer(0) - -keyword(if) ident(args) keyword(and) ident(args)operator([)integer(0)operator(]) operator(==) string<delimiter(")content(-c)delimiter(")>operator(:) - ident(chop_first) operator(+=) integer(1) - ident(args) operator(=) ident(args)operator([)integer(1)operator(:)operator(]) - -comment(# arg demo 2: Process optional -NUMBER flag) - -comment(# NOTE: You just wouldn't process things this way for Python,) -comment(# but I'm trying to preserve the same semantics.) - -keyword(import) include(sys)operator(,) include(re) -ident(digit_pattern) operator(=) ident(re)operator(.)ident(compile)operator(()string<modifier(r)delimiter(")content(-()content(\\d)content(+\)$)delimiter(")>operator(\)) - -ident(args) operator(=) ident(sys)operator(.)ident(argv)operator([)integer(1)operator(:)operator(]) -keyword(if) ident(args)operator(:) - ident(match) operator(=) ident(digit_pattern)operator(.)ident(match)operator(()ident(args)operator([)integer(0)operator(])operator(\)) - keyword(if) ident(match)operator(:) - ident(columns) operator(=) predefined(int)operator(()ident(match)operator(.)ident(group)operator(()integer(1)operator(\))operator(\)) - ident(args) operator(=) ident(args)operator([)integer(1)operator(:)operator(]) - -comment(# NOTE: here's the more idiomatic way, which also checks) -comment(# for the "--" or a non "-" argument to stop processing) - -ident(args) operator(=) ident(sys)operator(.)ident(argv)operator([)integer(1)operator(:)operator(]) -keyword(for) ident(i) keyword(in) predefined(range)operator(()predefined(len)operator(()ident(args)operator(\))operator(\))operator(:) - ident(arg) operator(=) ident(args)operator([)ident(i)operator(]) - keyword(if) ident(arg) operator(==) string<delimiter(")content(--)delimiter(")> keyword(or) keyword(not) ident(arg)operator(.)ident(startwith)operator(()string<delimiter(")content(-)delimiter(")>operator(\))operator(:) - keyword(break) - keyword(if) ident(arg)operator([)integer(1)operator(:)operator(])operator(.)ident(isdigit)operator(()operator(\))operator(:) - ident(columns) operator(=) predefined(int)operator(()ident(arg)operator([)integer(1)operator(:)operator(])operator(\)) - keyword(continue) - - - -comment(# arg demo 3: Process clustering -a, -i, -n, or -u flags) -keyword(import) include(sys)operator(,) include(getopt) -keyword(try)operator(:) - ident(args)operator(,) ident(filenames) operator(=) ident(getopt)operator(.)ident(getopt)operator(()ident(sys)operator(.)ident(argv)operator([)integer(1)operator(:)operator(])operator(,) string<delimiter(")content(ainu)delimiter(")>operator(\)) -keyword(except) ident(getopt)operator(.)ident(error)operator(:) - keyword(raise) exception(SystemExit)operator(()string<delimiter(")content(usage: %s [-ainu] [filenames] ...)delimiter(")> operator(%) ident(sys)operator(.)ident(argv)operator([)integer(0)operator(])operator(\)) - -ident(append) operator(=) ident(ignore_ints) operator(=) ident(nostdout) operator(=) ident(unbuffer) operator(=) integer(0) -keyword(for) ident(k)operator(,) ident(v) keyword(in) ident(args)operator(:) - keyword(if) ident(k) operator(==) string<delimiter(")content(-a)delimiter(")>operator(:) ident(append) operator(+=) integer(1) - keyword(elif) ident(k) operator(==) string<delimiter(")content(-i)delimiter(")>operator(:) ident(ignore_ints) operator(+=) integer(1) - keyword(elif) ident(k) operator(==) string<delimiter(")content(-n)delimiter(")>operator(:) ident(nostdout) operator(+=) integer(1) - keyword(elif) ident(k) operator(==) string<delimiter(")content(-u)delimiter(")>operator(:) ident(unbuffer) operator(+=) integer(1) - keyword(else)operator(:) - keyword(raise) exception(AssertionError)operator(()string<delimiter(")content(Unexpected argument: %s)delimiter(")> operator(%) ident(k)operator(\)) - -comment(#-----------------------------) -comment(# Note: Idiomatic Perl get translated to idiomatic Python) -keyword(import) include(fileinput) -keyword(for) ident(line) keyword(in) ident(fileinput)operator(.)ident(input)operator(()operator(\))operator(:) - ident(sys)operator(.)ident(stdout)operator(.)ident(write)operator(()string<delimiter(")content(%s:%s:%s)delimiter(")> operator(%) - operator(()ident(fileinput)operator(.)ident(filename)operator(()operator(\))operator(,) ident(fileinput)operator(.)ident(filelineno)operator(()operator(\))operator(,) ident(line)operator(\))operator(\)) -comment(#-----------------------------) -comment(#!/usr/bin/env python) -comment(# findlogin1 - print all lines containing the string "login") -keyword(for) ident(line) keyword(in) ident(fileinput)operator(.)ident(input)operator(()operator(\))operator(:) comment(# loop over files on command line) - keyword(if) ident(line)operator(.)ident(find)operator(()string<delimiter(")content(login)delimiter(")>operator(\)) operator(!=) operator(-)integer(1)operator(:) - ident(sys)operator(.)ident(stdout)operator(.)ident(write)operator(()ident(line)operator(\)) - -comment(#-----------------------------) -comment(#!/usr/bin/env python) -comment(# lowercase - turn all lines into lowercase) -comment(### NOTE: I don't know how to do locales in Python) -keyword(for) ident(line) keyword(in) ident(fileinput)operator(.)ident(input)operator(()operator(\))operator(:) comment(# loop over files on command line) - ident(sys)operator(.)ident(stdout)operator(.)ident(write)operator(()ident(line)operator(.)ident(lower)operator(()operator(\))operator(\)) - -comment(#-----------------------------) -comment(#!/usr/bin/env python) -comment(# NOTE: The Perl code appears buggy, in that "Q__END__W" is considered) -comment(# to be a __END__ and words after the __END__ on the same line) -comment(# are included in the count!!!) -comment(# countchunks - count how many words are used.) -comment(# skip comments, and bail on file if __END__) -comment(# or __DATA__ seen.) -ident(chunks) operator(=) integer(0) -keyword(for) ident(line) keyword(in) ident(fileinput)operator(.)ident(input)operator(()operator(\))operator(:) - keyword(for) ident(word) keyword(in) ident(line)operator(.)ident(split)operator(()operator(\))operator(:) - keyword(if) ident(word)operator(.)ident(startswith)operator(()string<delimiter(")content(#)delimiter(")>operator(\))operator(:) - keyword(continue) - keyword(if) ident(word) keyword(in) operator(()string<delimiter(")content(__DATA__)delimiter(")>operator(,) string<delimiter(")content(__END__)delimiter(")>operator(\))operator(:) - ident(fileinput)operator(.)ident(close)operator(()operator(\)) - keyword(break) - ident(chunks) operator(+=) integer(1) -keyword(print) string<delimiter(")content(Found)delimiter(")>operator(,) ident(chunks)operator(,) string<delimiter(")content(chunks)delimiter(")> - - -comment(# @@PLEAC@@_7.8) -keyword(import) include(shutil) - -ident(old) operator(=) predefined(open)operator(()string<delimiter(")content(old)delimiter(")>operator(\)) -ident(new) operator(=) predefined(open)operator(()string<delimiter(")content(new)delimiter(")>operator(,)string<delimiter(")content(w)delimiter(")>operator(\)) - -keyword(for) ident(line) keyword(in) ident(old)operator(:) - ident(new)operator(.)ident(writeline)operator(()ident(line)operator(\)) -ident(new)operator(.)ident(close)operator(()operator(\)) -ident(old)operator(.)ident(close)operator(()operator(\)) - -ident(shutil)operator(.)ident(copyfile)operator(()string<delimiter(")content(old)delimiter(")>operator(,) string<delimiter(")content(old.orig)delimiter(")>operator(\)) -ident(shutil)operator(.)ident(copyfile)operator(()string<delimiter(")content(new)delimiter(")>operator(,) string<delimiter(")content(old)delimiter(")>operator(\)) - -comment(# insert lines at line 20:) -keyword(for) ident(i)operator(,) ident(line) keyword(in) predefined(enumerate)operator(()ident(old)operator(\))operator(:) - keyword(if) ident(i) operator(==) integer(20)operator(:) - keyword(print)operator(>>)ident(new)operator(,) string<delimiter(")content(Extra line 1)char(\\n)delimiter(")> - keyword(print)operator(>>)ident(new)operator(,) string<delimiter(")content(Extra line 2)char(\\n)delimiter(")> - keyword(print)operator(>>)ident(new)operator(,) ident(line) - - -comment(# or delete lines 20 through 30:) -keyword(for) ident(i)operator(,) ident(line) keyword(in) predefined(enumerate)operator(()ident(old)operator(\))operator(:) - keyword(if) integer(20) operator(<=) ident(i) operator(<=) integer(30)operator(:) - keyword(continue) - keyword(print)operator(>>)ident(new)operator(,) ident(line) - - -comment(# @@PLEAC@@_7.9) -comment(# modifying with "-i" commandline switch is a perl feature) -comment(# python has fileinput) -keyword(import) include(fileinput)operator(,) include(sys)operator(,) include(time) -ident(today) operator(=) ident(time)operator(.)ident(strftime)operator(()string<delimiter(")content(%Y-%m-%d)delimiter(")>operator(,)ident(time)operator(.)ident(localtime)operator(()operator(\))operator(\)) -keyword(for) ident(line) keyword(in) ident(fileinput)operator(.)ident(input)operator(()ident(inplace)operator(=)integer(1)operator(,) ident(backup)operator(=)string<delimiter(")content(.orig)delimiter(")>operator(\))operator(:) - ident(sys)operator(.)ident(stdout)operator(.)ident(write)operator(()ident(line)operator(.)ident(replace)operator(()string<delimiter(")content(DATE)delimiter(")>operator(,)ident(today)operator(\))operator(\)) - -comment(# set up to iterate over the *.c files in the current directory,) -comment(# editing in place and saving the old file with a .orig extension.) -keyword(import) include(glob)operator(,) include(re) -ident(match) operator(=) ident(re)operator(.)ident(compile)operator(()string<delimiter(")content((?<=[pP]\)earl)delimiter(")>operator(\)) -ident(files) operator(=) ident(fileinput)operator(.)ident(FileInput)operator(()ident(glob)operator(.)ident(glob)operator(()string<delimiter(")content(*.c)delimiter(")>operator(\))operator(,) ident(inplace)operator(=)integer(1)operator(,) ident(backup)operator(=)string<delimiter(")content(.orig)delimiter(")>operator(\)) -keyword(while) pre_constant(True)operator(:) - ident(line) operator(=) ident(files)operator(.)ident(readline)operator(()operator(\)) - ident(sys)operator(.)ident(stderr)operator(.)ident(write)operator(()ident(line)operator(\)) - keyword(if) keyword(not) ident(line)operator(:) - keyword(break) - keyword(if) ident(files)operator(.)ident(isfirstline)operator(()operator(\))operator(:) - ident(sys)operator(.)ident(stdout)operator(.)ident(write)operator(()string<delimiter(")content(This line should appear at the top of each file)char(\\n)delimiter(")>operator(\)) - ident(sys)operator(.)ident(stdout)operator(.)ident(write)operator(()ident(match)operator(.)ident(sub)operator(()string<delimiter(")content(erl)delimiter(")>operator(,)ident(line)operator(\))operator(\)) - - -comment(# @@PLEAC@@_7.10) -comment(#-----------------------------) -ident(myfile) operator(=) predefined(open)operator(()ident(filename)operator(,) string<delimiter(")content(r+)delimiter(")>operator(\)) -ident(data) operator(=) ident(myfile)operator(.)ident(read)operator(()operator(\)) -comment(# change data here) -ident(myfile)operator(.)ident(seek)operator(()integer(0)operator(,) integer(0)operator(\)) -ident(myfile)operator(.)ident(write)operator(()ident(data)operator(\)) -ident(myfile)operator(.)ident(truncate)operator(()ident(myfile)operator(.)ident(tell)operator(()operator(\))operator(\)) -ident(myfile)operator(.)ident(close)operator(()operator(\)) -comment(#-----------------------------) -ident(myfile) operator(=) predefined(open)operator(()ident(filename)operator(,) string<delimiter(")content(r+)delimiter(")>operator(\)) -ident(data) operator(=) operator([)ident(process)operator(()ident(line)operator(\)) keyword(for) ident(line) keyword(in) ident(myfile)operator(]) -ident(myfile)operator(.)ident(seek)operator(()integer(0)operator(,) integer(0)operator(\)) -ident(myfile)operator(.)ident(writelines)operator(()ident(data)operator(\)) -ident(myfile)operator(.)ident(truncate)operator(()ident(myfile)operator(.)ident(tell)operator(()operator(\))operator(\)) -ident(myfile)operator(.)ident(close)operator(()operator(\)) -comment(#-----------------------------) - -comment(# @@PLEAC@@_7.11) - -keyword(import) include(fcntl) -ident(myfile) operator(=) predefined(open)operator(()ident(somepath)operator(,) string<delimiter(')content(r+)delimiter(')>operator(\)) -ident(fcntl)operator(.)ident(flock)operator(()ident(myfile)operator(,) ident(fcntl)operator(.)ident(LOCK_EX)operator(\)) -comment(# update file, then...) -ident(myfile)operator(.)ident(close)operator(()operator(\)) -comment(#-----------------------------) -ident(fcntl)operator(.)ident(LOCK_SH) -ident(fcntl)operator(.)ident(LOCK_EX) -ident(fcntl)operator(.)ident(LOCK_NB) -ident(fcntl)operator(.)ident(LOCK_UN) -comment(#-----------------------------) -keyword(import) include(warnings) -keyword(try)operator(:) - ident(fcntl)operator(.)ident(flock)operator(()ident(myfile)operator(,) ident(fcntl)operator(.)ident(LOCK_EX)operator(|)ident(fcntl)operator(.)ident(LOCK_NB)operator(\)) -keyword(except) exception(IOError)operator(:) - ident(warnings)operator(.)ident(warn)operator(()string<delimiter(")content(can't immediately write-lock the file ($!\), blocking ...)delimiter(")>operator(\)) - ident(fcntl)operator(.)ident(flock)operator(()ident(myfile)operator(,) ident(fcntl)operator(.)ident(LOCK_EX)operator(\)) -comment(#-----------------------------) -ident(fcntl)operator(.)ident(flock)operator(()ident(myfile)operator(,) ident(fcntl)operator(.)ident(LOCK_UN)operator(\)) -comment(#-----------------------------) -comment(# option "r+" instead "w+" stops python from truncating the file on opening) -comment(# when another process might well hold an advisory exclusive lock on it.) -ident(myfile) operator(=) predefined(open)operator(()ident(somepath)operator(,) string<delimiter(")content(r+)delimiter(")>operator(\)) -ident(fcntl)operator(.)ident(flock)operator(()ident(myfile)operator(,) ident(fcntl)operator(.)ident(LOCK_EX)operator(\)) -ident(myfile)operator(.)ident(seek)operator(()integer(0)operator(,) integer(0)operator(\)) -ident(myfile)operator(.)ident(truncate)operator(()integer(0)operator(\)) -keyword(print)operator(>>)ident(myfile)operator(,) string<delimiter(")char(\\n)delimiter(")> comment(# or myfile.write("\\n"\)) -ident(myfile)operator(.)ident(close)operator(()operator(\)) -comment(#-----------------------------) - -comment(# @@PLEAC@@_7.12) -comment(# Python doesn't have command buffering. Files can have buffering set,) -comment(# when opened:) -ident(myfile) operator(=) predefined(open)operator(()ident(filename)operator(,) string<delimiter(")content(r)delimiter(")>operator(,) ident(buffering)operator(=)integer(0)operator(\)) comment(#Unbuffered) -ident(myfile) operator(=) predefined(open)operator(()ident(filename)operator(,) string<delimiter(")content(r)delimiter(")>operator(,) ident(buffering)operator(=)integer(1)operator(\)) comment(#Line buffered) -ident(myfile) operator(=) predefined(open)operator(()ident(filename)operator(,) string<delimiter(")content(r)delimiter(")>operator(,) ident(buffering)operator(=)integer(100)operator(\)) comment(#Use buffer of (approx\) 100 bytes) -ident(myfile) operator(=) predefined(open)operator(()ident(filename)operator(,) string<delimiter(")content(r)delimiter(")>operator(,) ident(buffering)operator(=)operator(-)integer(1)operator(\)) comment(#Use system default) - -ident(myfile)operator(.)ident(flush)operator(()operator(\)) comment(# Flush the I/O buffer) - -comment(# stdout is treated as a file. If you ever need to flush it, do so:) -keyword(import) include(sys) -ident(sys)operator(.)ident(stdout)operator(.)ident(flush)operator(()operator(\)) - -comment(# DON'T DO THIS. Use urllib, etc.) -keyword(import) include(socket) -ident(mysock) operator(=) ident(socket)operator(.)ident(socket)operator(()operator(\)) -ident(mysock)operator(.)ident(connect)operator(()operator(()string<delimiter(')content(www.perl.com)delimiter(')>operator(,) integer(80)operator(\))operator(\)) -comment(# mysock.setblocking(True\)) -ident(mysock)operator(.)ident(send)operator(()string<delimiter(")content(GET /index.html http/1.1)char(\\n)char(\\n)delimiter(")>operator(\)) -ident(f) operator(=) ident(mysock)operator(.)ident(makefile)operator(()operator(\)) -keyword(print) string<delimiter(")content(Doc is:)delimiter(")> -keyword(for) ident(line) keyword(in) ident(f)operator(:) - keyword(print) ident(line)operator([)operator(:)operator(-)integer(1)operator(]) - -comment(# @@PLEAC@@_7.13) -keyword(import) include(select) -keyword(while) pre_constant(True)operator(:) - ident(rlist)operator(,) ident(wlist)operator(,) ident(xlist) operator(=) ident(select)operator(.)ident(select)operator(()operator([)ident(file1)operator(,) ident(file2)operator(,) ident(file3)operator(])operator(,) operator([)operator(])operator(,) operator([)operator(])operator(,) integer(0)operator(\)) - keyword(for) ident(r) keyword(in) ident(rlist)operator(:) - keyword(pass) comment(# Do something with the file handle) - -comment(# @@PLEAC@@_7.14) -comment(# @@SKIP@@ Use select.poll(\) on Unix systems.) -comment(# @@INCOMPLETE@@) -comment(# @@INCOMPLETE@@) - -comment(# @@PLEAC@@_7.15) -comment(# @@INCOMPLETE@@) -comment(# @@INCOMPLETE@@) - -comment(# @@PLEAC@@_7.16) -comment(# NOTE: this is all much easier in Python) -keyword(def) method(subroutine)operator(()ident(myfile)operator(\))operator(:) - keyword(print)operator(>>)ident(myfile)operator(,) string<delimiter(")content(Hello, file)delimiter(")> - -ident(variable) operator(=) ident(myfile) -ident(subroutine)operator(()ident(variable)operator(\)) - -comment(# @@PLEAC@@_7.17) -comment(# @@INCOMPLETE@@) -comment(# @@INCOMPLETE@@) - -comment(# @@PLEAC@@_7.18) -keyword(for) ident(myfile) keyword(in) ident(files)operator(:) - keyword(print)operator(>>)ident(myfile)operator(,) ident(stuff_to_print) - -comment(# NOTE: This is unix specific) -keyword(import) include(os) -ident(file) operator(=) ident(os)operator(.)ident(popen)operator(()string<delimiter(")content(tee file1 file2 file3 >/dev/null)delimiter(")>operator(,) string<delimiter(")content(w)delimiter(")>operator(\)) -keyword(print)operator(>>)ident(myfile)operator(,) string<delimiter(")content(whatever)delimiter(")> - -comment(# NOTE: the "make STDOUT go to three files" is bad programming style) -keyword(import) include(os)operator(,) include(sys) -ident(sys)operator(.)ident(stdout)operator(.)ident(file) operator(=) ident(os)operator(.)ident(popen)operator(()string<delimiter(")content(tee file1 file2 file3)delimiter(")>operator(,) string<delimiter(")content(w)delimiter(")>operator(\)) -keyword(print) string<delimiter(")content(whatever)delimiter(")> -ident(sys)operator(.)ident(stdout)operator(.)ident(close)operator(()operator(\)) - -comment(# You could use a utility object to redirect writes:) -keyword(class) class(FileDispatcher)operator(()predefined(object)operator(\))operator(:) - keyword(def) method(__init__)operator(()pre_constant(self)operator(,) operator(*)ident(files)operator(\))operator(:) - pre_constant(self)operator(.)ident(files) operator(=) ident(files) - - keyword(def) method(write)operator(()pre_constant(self)operator(,) ident(msg)operator(\))operator(:) - keyword(for) ident(f) keyword(in) pre_constant(self)operator(.)ident(files)operator(:) - ident(f)operator(.)ident(write)operator(()ident(msg)operator(\)) - - keyword(def) method(close)operator(()pre_constant(self)operator(\))operator(:) - keyword(for) ident(f) keyword(in) pre_constant(self)operator(.)ident(files)operator(:) - ident(f)operator(.)ident(close)operator(()operator(\)) - -ident(x) operator(=) predefined(open)operator(()string<delimiter(")content(C:/test1.txt)delimiter(")>operator(,) string<delimiter(")content(w)delimiter(")>operator(\)) -ident(y) operator(=) predefined(open)operator(()string<delimiter(")content(C:/test2.txt)delimiter(")>operator(,) string<delimiter(")content(w)delimiter(")>operator(\)) -ident(z) operator(=) predefined(open)operator(()string<delimiter(")content(C:/test3.txt)delimiter(")>operator(,) string<delimiter(")content(w)delimiter(")>operator(\)) - -ident(fd) operator(=) ident(FileDispatcher)operator(()ident(x)operator(,) ident(y)operator(,) ident(z)operator(\)) -keyword(print)operator(>>)ident(fd)operator(,) string<delimiter(")content(Foo)delimiter(")> comment(# equiv to fd.write("Foo"\); fd.write("\\n"\)) -keyword(print)operator(>>)ident(fd)operator(,) string<delimiter(")content(Testing)delimiter(")> -ident(fd)operator(.)ident(close)operator(()operator(\)) - -comment(# @@PLEAC@@_7.19) -keyword(import) include(os) -ident(myfile) operator(=) ident(os)operator(.)ident(fdopen)operator(()ident(fdnum)operator(\)) comment(# open the descriptor itself) -ident(myfile) operator(=) ident(os)operator(.)ident(fdopen)operator(()ident(os)operator(.)ident(dup)operator(()ident(fdnum)operator(\))operator(\)) comment(# open to a copy of the descriptor) - -comment(###) -ident(outcopy) operator(=) ident(os)operator(.)ident(fdopen)operator(()ident(os)operator(.)ident(dup)operator(()ident(sys)operator(.)ident(stdin)operator(.)ident(fileno)operator(()operator(\))operator(\))operator(,) string<delimiter(")content(w)delimiter(")>operator(\)) -ident(incopy) operator(=) ident(os)operator(.)ident(fdopen)operator(()ident(os)operator(.)ident(dup)operator(()ident(sys)operator(.)ident(stdin)operator(.)ident(fileno)operator(()operator(\))operator(\))operator(,) string<delimiter(")content(r)delimiter(")>operator(\)) - -comment(# @@PLEAC@@_7.20) -ident(original) operator(=) predefined(open)operator(()string<delimiter(")content(C:/test.txt)delimiter(")>operator(\)) -ident(alias) operator(=) ident(original) -ident(alias)operator(.)ident(close)operator(()operator(\)) -keyword(print) ident(original)operator(.)ident(closed) -comment(#=>True) - -keyword(import) include(copy) - -ident(original) operator(=) predefined(open)operator(()string<delimiter(")content(C:/test.txt)delimiter(")>operator(\)) -ident(dupe) operator(=) ident(copy)operator(.)ident(copy)operator(()ident(original)operator(\)) -ident(dupe)operator(.)ident(close)operator(()operator(\)) -keyword(print) ident(original)operator(.)ident(closed) -comment(#=>False) - -comment(# DON'T DO THIS.) -keyword(import) include(sys) -ident(oldstderr) operator(=) ident(sys)operator(.)ident(stderr) -ident(oldstdout) operator(=) ident(sys)operator(.)ident(stdout) - -ident(sys)operator(.)ident(stderr) operator(=) predefined(open)operator(()string<delimiter(")content(C:/stderrfile.txt)delimiter(")>operator(\)) -ident(sys)operator(.)ident(stdout) operator(=) predefined(open)operator(()string<delimiter(")content(C:/stdoutfile.txt)delimiter(")>operator(\)) - -keyword(print) string<delimiter(")content(Blah)delimiter(")> comment(# Will be written to C:/stdoutfile.txt) -ident(sys)operator(.)ident(stdout)operator(.)ident(close)operator(()operator(\)) - -ident(sys)operator(.)ident(stdout) operator(=) ident(oldstdout) -ident(sys)operator(.)ident(stderr) operator(=) ident(oldstderr) - - -comment(# @@PLEAC@@_7.21) -comment(# @@INCOMPLETE@@) -comment(# @@INCOMPLETE@@) - -comment(# @@PLEAC@@_7.22) -comment(# On Windows:) -keyword(import) include(msvcrt) -ident(myfile)operator(.)ident(seek)operator(()integer(5)operator(,) integer(0)operator(\)) -ident(msvcrt)operator(.)ident(locking)operator(()ident(myfile)operator(.)ident(fileno)operator(()operator(\))operator(,) ident(msvcrt)operator(.)ident(LK_NBLCK)operator(,) integer(3)operator(\)) - -comment(# On Unix:) -keyword(import) include(fcntl) -ident(fcntl)operator(.)ident(lockf)operator(()ident(myfile)operator(.)ident(fileno)operator(()operator(\))operator(,) ident(fcntl)operator(.)ident(LOCK_EX) operator(|) ident(fcntl)operator(.)ident(LOCK_NB)operator(,) integer(3)operator(,) integer(5)operator(\)) - - -comment(# ^^PLEAC^^_8.0) -comment(#-----------------------------) -keyword(for) ident(line) keyword(in) ident(DATAFILE)operator(:) - ident(line) operator(=) ident(line)operator(.)ident(rstrip)operator(()operator(\)) - ident(size) operator(=) predefined(len)operator(()ident(line)operator(\)) - keyword(print) ident(size) comment(# output size of line) - -comment(#-----------------------------) -keyword(for) ident(line) keyword(in) ident(datafile)operator(:) - keyword(print) ident(length)operator(()ident(line)operator(.)ident(rstrip)operator(()operator(\))operator(\)) comment(# output size of line) -comment(#-----------------------------) -ident(lines) operator(=) ident(datafile)operator(.)ident(readlines)operator(()operator(\)) -comment(#-----------------------------) -ident(whole_file) operator(=) ident(myfile)operator(.)ident(read)operator(()operator(\)) -comment(#-----------------------------) -comment(## No direct equivalent in Python) -comment(#% perl -040 -e '$word = <>; print "First word is $word\\n";') -comment(#-----------------------------) -comment(## No direct equivalent in Python) -comment(#% perl -ne 'BEGIN { $/="%%\\n" } chomp; print if /Unix/i' fortune.dat) -comment(#-----------------------------) -keyword(print)operator(>>)ident(myfile)operator(,) string<delimiter(")content(One)delimiter(")>operator(,) string<delimiter(")content(two)delimiter(")>operator(,) string<delimiter(")content(three)delimiter(")> comment(# "One two three") -keyword(print) string<delimiter(")content(Baa baa black sheep.)delimiter(")> comment(# Sent to default output file) -comment(#-----------------------------) -ident(buffer) operator(=) ident(myfile)operator(.)ident(read)operator(()integer(4096)operator(\)) -ident(rv) operator(=) predefined(len)operator(()predefined(buffer)operator(\)) -comment(#-----------------------------) -ident(myfile)operator(.)ident(truncate)operator(()ident(length)operator(\)) -predefined(open)operator(()string<delimiter(")content(/tmp/%d.pid)delimiter(")> operator(%) ident(os)operator(.)ident(getpid)operator(()operator(\))operator(,) string<delimiter(")content(a)delimiter(")>operator(\))operator(.)ident(truncate)operator(()ident(length)operator(\)) -comment(#-----------------------------) -ident(pos) operator(=) ident(myfile)operator(.)ident(tell)operator(()operator(\)) -keyword(print) string<delimiter(")content(I'm)delimiter(")>operator(,) ident(pos)operator(,) string<delimiter(")content(bytes from the start of DATAFILE.)delimiter(")> -comment(#-----------------------------) -ident(logfile)operator(.)ident(seek)operator(()integer(0)operator(,) integer(2)operator(\)) comment(# Seek to the end) -ident(datafile)operator(.)ident(seek)operator(()ident(pos)operator(\)) comment(# Seek to a given byte) -ident(outfile)operator(.)ident(seek)operator(()operator(-)integer(20)operator(,) integer(1)operator(\)) comment(# Seek back 20 bytes) -comment(#-----------------------------) -ident(written) operator(=) ident(os)operator(.)ident(write)operator(()ident(datafile)operator(.)ident(fileno)operator(()operator(\))operator(,) ident(mystr)operator(\)) -keyword(if) ident(written) operator(!=) predefined(len)operator(()ident(mystr)operator(\))operator(:) - ident(warnings)operator(.)ident(warn)operator(()string<delimiter(")content(only read %s bytes, not %s)delimiter(")> operator(%) operator(()ident(written)operator(,) predefined(len)operator(()ident(mystr)operator(\))operator(\))operator(\)) -comment(#-----------------------------) -ident(pos) operator(=) ident(os)operator(.)ident(lseek)operator(()ident(myfile)operator(.)ident(fileno)operator(()operator(\))operator(,) integer(0)operator(,) integer(1)operator(\)) comment(# don't change position) -comment(#-----------------------------) - - -comment(# ^^PLEAC^^_8.1) -keyword(def) method(ContReader)operator(()ident(infile)operator(\))operator(:) - ident(lines) operator(=) operator([)operator(]) - keyword(for) ident(line) keyword(in) ident(infile)operator(:) - ident(line) operator(=) ident(line)operator(.)ident(rstrip)operator(()operator(\)) - keyword(if) ident(line)operator(.)ident(endswith)operator(()string<delimiter(")char(\\\\)delimiter(")>operator(\))operator(:) - ident(lines)operator(.)ident(append)operator(()ident(line)operator([)operator(:)operator(-)integer(1)operator(])operator(\)) - keyword(continue) - ident(lines)operator(.)ident(append)operator(()ident(line)operator(\)) - keyword(yield) string<delimiter(")delimiter(")>operator(.)ident(join)operator(()ident(lines)operator(\)) - ident(lines) operator(=) operator([)operator(]) - keyword(if) ident(lines)operator(:) - keyword(yield) string<delimiter(")delimiter(")>operator(.)ident(join)operator(()ident(lines)operator(\)) - -keyword(for) ident(line) keyword(in) ident(ContReader)operator(()ident(datafile)operator(\))operator(:) - keyword(pass) comment(# process full record in 'line' here) - -comment(# ^^PLEAC^^_8.2) -keyword(import) include(os) -ident(count) operator(=) predefined(int)operator(()ident(os)operator(.)ident(popen)operator(()string<delimiter(")content(wc -l < )delimiter(")> operator(+) ident(filename)operator(\))operator(.)ident(read)operator(()operator(\))operator(\)) -comment(#-----------------------------) -keyword(for) ident(count)operator(,) ident(line) keyword(in) predefined(enumerate)operator(()predefined(open)operator(()ident(filename)operator(\))operator(\))operator(:) - keyword(pass) -ident(count) operator(+=) integer(1) comment(# indexing is zero based) -comment(#-----------------------------) -ident(myfile) operator(=) predefined(open)operator(()ident(filename)operator(\)) -ident(count) operator(=) integer(0) -keyword(for) ident(line) keyword(in) ident(myfile)operator(:) - ident(count) operator(+=) integer(1) -comment(# 'count' now holds the number of lines read) -comment(#-----------------------------) -ident(myfile) operator(=) predefined(open)operator(()ident(filename)operator(\)) -ident(count) operator(=) integer(0) -keyword(while) pre_constant(True)operator(:) - ident(line) operator(=) ident(myfile)operator(.)ident(readline)operator(()operator(\)) - keyword(if) keyword(not) ident(line)operator(:) - keyword(break) - ident(count) operator(+=) integer(1) -comment(#-----------------------------) -ident(count) operator(=) integer(0) -keyword(while) pre_constant(True)operator(:) - ident(s) operator(=) ident(myfile)operator(.)ident(read)operator(()integer(2)operator(**)integer(16)operator(\)) - ident(count) operator(+=) ident(s)operator(.)ident(count)operator(()string<delimiter(")char(\\n)delimiter(")>operator(\)) -comment(#-----------------------------) -keyword(for) ident(line)operator(,) ident(count) keyword(in) predefined(zip)operator(()predefined(open)operator(()ident(filename)operator(\))operator(,) predefined(xrange)operator(()integer(1)operator(,) ident(sys)operator(.)ident(maxint)operator(\))operator(\))operator(:) - keyword(pass) -comment(# 'count' now holds the number of lines read) -comment(#-----------------------------) -keyword(import) include(fileinput) -ident(fi) operator(=) ident(fileinput)operator(.)ident(FileInput)operator(()ident(filename)operator(\)) -keyword(while) ident(fi)operator(.)ident(readline)operator(()operator(\))operator(:) keyword(pass) - -ident(count) operator(=) ident(fi)operator(.)ident(lineno)operator(()operator(\)) -comment(#-----------------------------) -keyword(def) method(SepReader)operator(()ident(infile)operator(,) ident(sep) operator(=) string<delimiter(")char(\\n)char(\\n)delimiter(")>operator(\))operator(:) - ident(text) operator(=) ident(infile)operator(.)ident(read)operator(()integer(10000)operator(\)) - keyword(if) keyword(not) ident(text)operator(:) - keyword(return) - keyword(while) pre_constant(True)operator(:) - ident(fields) operator(=) ident(text)operator(.)ident(split)operator(()ident(sep)operator(\)) - keyword(for) ident(field) keyword(in) ident(fields)operator([)operator(:)operator(-)integer(1)operator(])operator(:) - keyword(yield) ident(field) - ident(text) operator(=) ident(fields)operator([)operator(-)integer(1)operator(]) - ident(new_text) operator(=) ident(infile)operator(.)ident(read)operator(()integer(10000)operator(\)) - keyword(if) keyword(not) ident(new_text)operator(:) - keyword(yield) ident(text) - keyword(break) - ident(text) operator(+=) ident(new_text) - -ident(para_count) operator(=) integer(0) -keyword(for) ident(para) keyword(in) ident(SepReader)operator(()predefined(open)operator(()ident(filename)operator(\))operator(\))operator(:) - ident(para_count) operator(+=) integer(1) -comment(# FIXME: For my test case (Python-pre2.2 README from CVS\) this) -comment(# returns 175 paragraphs while Perl returns 174.) -comment(#-----------------------------) - - -comment(# ^^PLEAC^^_8.3) -keyword(for) ident(line) keyword(in) ident(sys)operator(.)ident(stdin)operator(:) - keyword(for) ident(word) keyword(in) ident(line)operator(.)ident(split)operator(()operator(\))operator(:) - keyword(pass) comment(# do something with 'chunk') -comment(#-----------------------------) -ident(pat) operator(=) ident(re)operator(.)ident(compile)operator(()string<modifier(r)delimiter(")content(()content(\\w)content([)content(\\w)content('-]*\))delimiter(")>operator(\)) -keyword(for) ident(line) keyword(in) ident(sys)operator(.)ident(stdin)operator(:) - ident(pos) operator(=) integer(0) - keyword(while) pre_constant(True)operator(:) - ident(match) operator(=) ident(pat)operator(.)ident(search)operator(()ident(line)operator(,) ident(pos)operator(\)) - keyword(if) keyword(not) ident(match)operator(:) - keyword(break) - ident(pos) operator(=) ident(match)operator(.)ident(end)operator(()integer(1)operator(\)) - comment(# do something with match.group(1\)) - -comment(# EXPERIMENTAL in the sre implementation but) -comment(# likely to be included in future (post-2.2\) releases.) -ident(pat) operator(=) ident(re)operator(.)ident(compile)operator(()string<modifier(r)delimiter(")content(()content(\\w)content([)content(\\w)content('-]*\))delimiter(")>operator(\)) -keyword(for) ident(line) keyword(in) ident(sys)operator(.)ident(stdin)operator(:) - ident(scanner) operator(=) ident(pat)operator(.)ident(scanner)operator(()ident(line)operator(\)) - keyword(while) pre_constant(True)operator(:) - ident(match) operator(=) ident(scanner)operator(.)ident(search)operator(()operator(\)) - keyword(if) keyword(not) ident(match)operator(:) - keyword(break) - comment(# do something with match.group(1\)) - - -comment(#-----------------------------) -comment(# Make a word frequency count) -keyword(import) include(fileinput)operator(,) include(re) -ident(pat) operator(=) ident(re)operator(.)ident(compile)operator(()string<modifier(r)delimiter(")content(()content(\\w)content([)content(\\w)content('-]*\))delimiter(")>operator(\)) -ident(seen) operator(=) operator({)operator(}) -keyword(for) ident(line) keyword(in) ident(fileinput)operator(.)ident(input)operator(()operator(\))operator(:) - ident(pos) operator(=) integer(0) - keyword(while) pre_constant(True)operator(:) - ident(match) operator(=) ident(pat)operator(.)ident(search)operator(()ident(line)operator(,) ident(pos)operator(\)) - keyword(if) keyword(not) ident(match)operator(:) - keyword(break) - ident(pos) operator(=) ident(match)operator(.)ident(end)operator(()integer(1)operator(\)) - ident(text) operator(=) ident(match)operator(.)ident(group)operator(()integer(1)operator(\))operator(.)ident(lower)operator(()operator(\)) - ident(seen)operator([)ident(text)operator(]) operator(=) ident(seen)operator(.)ident(get)operator(()ident(text)operator(,) integer(0)operator(\)) operator(+) integer(1) - -comment(# output dict in a descending numeric sort of its values) -keyword(for) ident(text)operator(,) ident(count) keyword(in) predefined(sorted)operator(()ident(seen)operator(.)ident(items)operator(,) ident(key)operator(=)keyword(lambda) ident(item)operator(:) ident(item)operator([)integer(1)operator(])operator(\))operator(:) - keyword(print) string<delimiter(")content(%5d %s)delimiter(")> operator(%) operator(()ident(count)operator(,) ident(text)operator(\)) - -comment(#-----------------------------) -comment(# Line frequency count) -keyword(import) include(fileinput)operator(,) include(sys) -ident(seen) operator(=) operator({)operator(}) -keyword(for) ident(line) keyword(in) ident(fileinput)operator(.)ident(input)operator(()operator(\))operator(:) - ident(text) operator(=) ident(line)operator(.)ident(lower)operator(()operator(\)) - ident(seen)operator([)ident(text)operator(]) operator(=) ident(seen)operator(.)ident(get)operator(()ident(text)operator(,) integer(0)operator(\)) operator(+) integer(1) - -keyword(for) ident(text)operator(,) ident(count) keyword(in) predefined(sorted)operator(()ident(seen)operator(.)ident(items)operator(,) ident(key)operator(=)keyword(lambda) ident(item)operator(:) ident(item)operator([)integer(1)operator(])operator(\))operator(:) - ident(sys)operator(.)ident(stdout)operator(.)ident(write)operator(()string<delimiter(")content(%5d %s)delimiter(")> operator(%) operator(()ident(count)operator(,) ident(text)operator(\))operator(\)) - -comment(#-----------------------------) - - -comment(# ^^PLEAC^^_8.4) -ident(lines) operator(=) ident(myfile)operator(.)ident(readlines)operator(()operator(\)) -keyword(while) ident(lines)operator(:) - ident(line) operator(=) ident(lines)operator(.)ident(pop)operator(()operator(\)) - comment(# do something with 'line') - -comment(#-----------------------------) -keyword(for) ident(line) keyword(in) predefined(reversed)operator(()ident(myfile)operator(\))operator(:) - keyword(pass) comment(# do something with line) -comment(#-----------------------------) -keyword(for) ident(i) keyword(in) predefined(range)operator(()predefined(len)operator(()ident(lines)operator(\))operator(\))operator(:) - ident(line) operator(=) ident(lines)operator([)operator(-)ident(i)operator(]) -comment(#-----------------------------) -keyword(for) ident(paragraph) keyword(in) predefined(sorted)operator(()ident(SepReader)operator(()ident(infile)operator(\))operator(\))operator(:) - keyword(pass) comment(# do something) -comment(#-----------------------------) - - - -comment(# ^^PLEAC^^_8.5) -keyword(import) include(time) -keyword(while) pre_constant(True)operator(:) - keyword(for) ident(line) keyword(in) ident(infile)operator(:) - keyword(pass) comment(# do something with the line) - ident(time)operator(.)ident(sleep)operator(()ident(SOMETIME)operator(\)) - ident(infile)operator(.)ident(seek)operator(()integer(0)operator(,) integer(1)operator(\)) -comment(#-----------------------------) -keyword(import) include(time) -ident(naptime) operator(=) integer(1) - -ident(logfile) operator(=) predefined(open)operator(()string<delimiter(")content(/tmp/logfile)delimiter(")>operator(\)) -keyword(while) pre_constant(True)operator(:) - keyword(for) ident(line) keyword(in) ident(logfile)operator(:) - keyword(print) ident(line)operator(.)ident(rstrip)operator(()operator(\)) - ident(time)operator(.)ident(sleep)operator(()ident(naptime)operator(\)) - ident(infile)operator(.)ident(seek)operator(()integer(0)operator(,) integer(1)operator(\)) -comment(#-----------------------------) -keyword(while) pre_constant(True)operator(:) - ident(curpos) operator(=) ident(logfile)operator(.)ident(tell)operator(()operator(\)) - keyword(while) pre_constant(True)operator(:) - ident(line) operator(=) ident(logfile)operator(.)ident(readline)operator(()operator(\)) - keyword(if) keyword(not) ident(line)operator(:) - keyword(break) - ident(curpos) operator(=) ident(logfile)operator(.)ident(tell)operator(()operator(\)) - ident(sleep)operator(()ident(naptime)operator(\)) - ident(logfile)operator(.)ident(seek)operator(()ident(curpos)operator(,) integer(0)operator(\)) comment(# seek to where we had been) -comment(#-----------------------------) -keyword(import) include(os) -keyword(if) ident(os)operator(.)ident(stat)operator(()ident(LOGFILENAME)operator(\))operator(.)ident(st_nlink) operator(==) integer(0)operator(:) - keyword(raise) exception(SystemExit) -comment(#-----------------------------) - - -comment(# ^^PLEAC^^_8.6) -keyword(import) include(random)operator(,) include(fileinput) -ident(text) operator(=) pre_constant(None) -keyword(for) ident(line) keyword(in) ident(fileinput)operator(.)ident(input)operator(()operator(\))operator(:) - keyword(if) ident(random)operator(.)ident(randrange)operator(()ident(fileinput)operator(.)ident(lineno)operator(()operator(\))operator(\)) operator(==) integer(0)operator(:) - ident(text) operator(=) ident(line) -comment(# 'text' is the random line) -comment(#-----------------------------) -comment(# XXX is the perl code correct? Where is the fortunes file opened?) -keyword(import) include(sys) -ident(adage) operator(=) pre_constant(None) -keyword(for) ident(i)operator(,) ident(rec) keyword(in) predefined(enumerate)operator(()ident(SepReader)operator(()predefined(open)operator(()string<delimiter(")content(/usr/share/games/fortunes)delimiter(")>operator(\))operator(,) string<delimiter(")content(%)char(\\n)delimiter(")>operator(\))operator(\))operator(:) - keyword(if) ident(random)operator(.)ident(randrange)operator(()ident(i)operator(+)integer(1)operator(\)) operator(==) integer(0)operator(:) - ident(adage) operator(=) ident(rec) -keyword(print) ident(adage) -comment(#-----------------------------) - - -comment(# ^^PLEAC^^_8.7) -keyword(import) include(random) -ident(lines) operator(=) ident(data)operator(.)ident(readlines)operator(()operator(\)) -ident(random)operator(.)ident(shuffle)operator(()ident(lines)operator(\)) -keyword(for) ident(line) keyword(in) ident(lines)operator(:) - keyword(print) ident(line)operator(.)ident(rstrip)operator(()operator(\)) -comment(#-----------------------------) - - - -comment(# ^^PLEAC^^_8.8) -comment(# using efficient caching system) -keyword(import) include(linecache) -ident(linecache)operator(.)ident(getline)operator(()ident(filename)operator(,) ident(DESIRED_LINE_NUMBER)operator(\)) - -comment(# or doing it more oldskool) -ident(lineno) operator(=) integer(0) -keyword(while) pre_constant(True)operator(:) - ident(line) operator(=) ident(infile)operator(.)ident(readline)operator(()operator(\)) - keyword(if) keyword(not) ident(line) keyword(or) ident(lineno) operator(==) ident(DESIRED_LINE_NUMBER)operator(:) - keyword(break) - ident(lineno) operator(+=) integer(1) -comment(#-----------------------------) -ident(lines) operator(=) ident(infile)operator(.)ident(readlines)operator(()operator(\)) -ident(line) operator(=) ident(lines)operator([)ident(DESIRED_LINE_NUMBER)operator(]) -comment(#-----------------------------) -keyword(for) ident(i) keyword(in) predefined(range)operator(()ident(DESIRED_LINE_NUMBER)operator(\))operator(:) - ident(line) operator(=) ident(infile)operator(.)ident(readline)operator(()operator(\)) - keyword(if) keyword(not) ident(line)operator(:) - keyword(break) -comment(#-----------------------------) - -comment(## Not sure what this thing is doing. Allow fast access to a given) -comment(## line number?) - -comment(# usage: build_index(*DATA_HANDLE, *INDEX_HANDLE\)) - -comment(# ^^PLEAC^^_8.9) -comment(# given $RECORD with field separated by PATTERN,) -comment(# extract @FIELDS.) -ident(fields) operator(=) ident(re)operator(.)ident(split)operator(()ident(pattern_string)operator(,) ident(text)operator(\)) -comment(#-----------------------------) -ident(pat) operator(=) ident(re)operator(.)ident(compile)operator(()ident(pattern_string)operator(\)) -ident(fields) operator(=) ident(pat)operator(.)ident(split)operator(()ident(text)operator(\)) -comment(#-----------------------------) -ident(re)operator(.)ident(split)operator(()string<modifier(r)delimiter(")content(([+-]\))delimiter(")>operator(,) string<delimiter(")content(3+5-2)delimiter(")>operator(\)) -comment(#-----------------------------) -operator([)integer(3)operator(,) string<delimiter(')content(+)delimiter(')>operator(,) integer(5)operator(,) string<delimiter(')content(-)delimiter(')>operator(,) integer(2)operator(]) -comment(#-----------------------------) -ident(fields) operator(=) ident(record)operator(.)ident(split)operator(()string<delimiter(")content(:)delimiter(")>operator(\)) -comment(#-----------------------------) -ident(fields) operator(=) ident(re)operator(.)ident(split)operator(()string<modifier(r)delimiter(")content(:)delimiter(")>operator(,) ident(record)operator(\)) -comment(#-----------------------------) -ident(fields) operator(=) ident(re)operator(.)ident(split)operator(()string<modifier(r)delimiter(")content(\\s)content(+)delimiter(")>operator(,) ident(record)operator(\)) -comment(#-----------------------------) -ident(fields) operator(=) ident(record)operator(.)ident(split)operator(()string<delimiter(")content( )delimiter(")>operator(\)) -comment(#-----------------------------) - - -comment(# ^^PLEAC^^_8.10) -ident(myfile) operator(=) predefined(open)operator(()ident(filename)operator(,) string<delimiter(")content(r)delimiter(")>operator(\)) -ident(prev_pos) operator(=) ident(pos) operator(=) integer(0) -keyword(while) pre_constant(True)operator(:) - ident(line) operator(=) ident(myfile)operator(.)ident(readline)operator(()operator(\)) - keyword(if) keyword(not) ident(line)operator(:) - keyword(break) - ident(prev_pos) operator(=) ident(pos) - ident(pos) operator(=) ident(myfile)operator(.)ident(tell)operator(()operator(\)) -ident(myfile) operator(=) predefined(open)operator(()ident(filename)operator(,) string<delimiter(")content(a)delimiter(")>operator(\)) -ident(myfile)operator(.)ident(truncate)operator(()ident(prev_pos)operator(\)) -comment(#-----------------------------) - - - -comment(# ^^PLEAC^^_8.11) -predefined(open)operator(()ident(filename)operator(,) string<delimiter(")content(rb)delimiter(")>operator(\)) -predefined(open)operator(()ident(filename)operator(,) string<delimiter(")content(wb)delimiter(")>operator(\)) -comment(#-----------------------------) -ident(gifname) operator(=) string<delimiter(")content(picture.gif)delimiter(")> -ident(gif_file) operator(=) predefined(open)operator(()ident(gifname)operator(,) string<delimiter(")content(rb)delimiter(")>operator(\)) - -comment(# Don't think there's an equivalent for these in Python) -comment(#binmode(GIF\); # now DOS won't mangle binary input from GIF) -comment(#binmode(STDOUT\); # now DOS won't mangle binary output to STDOUT) - -comment(#-----------------------------) -keyword(while) pre_constant(True)operator(:) - ident(buff) operator(=) ident(gif)operator(.)ident(read)operator(()integer(8) operator(*) integer(2)operator(**)integer(10)operator(\)) - keyword(if) keyword(not) ident(buff)operator(:) - keyword(break) - ident(sys)operator(.)ident(stdout)operator(.)ident(write)operator(()ident(buff)operator(\)) -comment(#-----------------------------) - - - -comment(# ^^PLEAC^^_8.12) -ident(address) operator(=) ident(recsize) operator(*) ident(recno) -ident(myfile)operator(.)ident(seek)operator(()ident(address)operator(,) integer(0)operator(\)) -ident(buffer) operator(=) ident(myfile)operator(.)ident(read)operator(()ident(recsize)operator(\)) -comment(#-----------------------------) -ident(address) operator(=) ident(recsize) operator(*) operator(()ident(recno)operator(-)integer(1)operator(\)) -comment(#-----------------------------) - - - -comment(# ^^PLEAC^^_8.13) -keyword(import) include(posixfile) -ident(address) operator(=) ident(recsize) operator(*) ident(recno) -ident(myfile)operator(.)ident(seek)operator(()ident(address)operator(\)) -ident(buffer) operator(=) ident(myfile)operator(.)ident(read)operator(()ident(recsize)operator(\)) -comment(# ... work with the buffer, then turn it back into a string and ...) -ident(myfile)operator(.)ident(seek)operator(()operator(-)ident(recsize)operator(,) ident(posixfile)operator(.)ident(SEEK_CUR)operator(\)) -ident(myfile)operator(.)ident(write)operator(()predefined(buffer)operator(\)) -ident(myfile)operator(.)ident(close)operator(()operator(\)) -comment(#-----------------------------) -comment(## Not yet implemented) -comment(# weekearly -- set someone's login date back a week) -comment(# @@INCOMPLETE@@) - - -comment(# ^^PLEAC^^_8.14) -comment(## Note: this isn't optimal -- the 's+=c' may go O(N**2\) so don't) -comment(## use for large strings.) -ident(myfile)operator(.)ident(seek)operator(()ident(addr)operator(\)) -ident(s) operator(=) string<delimiter(")delimiter(")> -keyword(while) pre_constant(True)operator(:) - ident(c) operator(=) ident(myfile)operator(.)ident(read)operator(()integer(1)operator(\)) - keyword(if) keyword(not) ident(c) keyword(or) ident(c) operator(==) string<delimiter(")char(\\0)delimiter(")>operator(:) - keyword(break) - ident(s) operator(+=) ident(c) -comment(#-----------------------------) -ident(myfile)operator(.)ident(seek)operator(()ident(addr)operator(\)) -ident(offset) operator(=) integer(0) -keyword(while) pre_constant(True)operator(:) - ident(s) operator(=) ident(myfile)operator(.)ident(read)operator(()integer(1000)operator(\)) - ident(x) operator(=) ident(s)operator(.)ident(find)operator(()string<delimiter(")char(\\0)delimiter(")>operator(\)) - keyword(if) ident(x) operator(!=) operator(-)integer(1)operator(:) - ident(offset) operator(+=) ident(x) - keyword(break) - ident(offset) operator(+=) predefined(len)operator(()ident(s)operator(\)) - keyword(if) predefined(len)operator(()ident(s)operator(\)) operator(!=) integer(1000)operator(:) comment(# EOF) - keyword(break) -ident(myfile)operator(.)ident(seek)operator(()ident(addr)operator(\)) -ident(s) operator(=) ident(myfile)operator(.)ident(read)operator(()ident(offset) operator(-) integer(1)operator(\)) -ident(myfile)operator(.)ident(read)operator(()integer(1)operator(\)) - -comment(#-----------------------------) -comment(## Not Implemented) -comment(# bgets - get a string from an address in a binary file) -comment(#-----------------------------) -comment(#!/usr/bin/perl) -comment(# strings - pull strings out of a binary file) -keyword(import) include(re)operator(,) include(sys) - -comment(## Assumes SepReader from above) - -ident(pat) operator(=) ident(re)operator(.)ident(compile)operator(()string<modifier(r)delimiter(")content(([)content(\\0)content(40-)content(\\1)content(76)content(\\s)content(]{4,}\))delimiter(")>operator(\)) -keyword(for) ident(block) keyword(in) ident(SepReader)operator(()ident(sys)operator(.)ident(stdin)operator(,) string<delimiter(")char(\\0)delimiter(")>operator(\))operator(:) - ident(pos) operator(=) integer(0) - keyword(while) pre_constant(True)operator(:) - ident(match) operator(=) ident(pat)operator(.)ident(search)operator(()ident(block)operator(,) ident(pos)operator(\)) - keyword(if) keyword(not) ident(match)operator(:) - keyword(break) - keyword(print) ident(match)operator(.)ident(group)operator(()integer(1)operator(\)) - ident(pos) operator(=) ident(match)operator(.)ident(end)operator(()integer(1)operator(\)) -comment(#-----------------------------) - - -comment(# @@PLEAC@@_8.15) - -comment(# RECORDSIZE is the length of a record, in bytes.) -comment(# TEMPLATE is the unpack template for the record) -comment(# FILE is the file to read from) -comment(# FIELDS is a tuple, one element per field) -keyword(import) include(struct) -ident(RECORDSIZE)operator(=) ident(struct)operator(.)ident(calcsize)operator(()ident(TEMPLATE)operator(\)) -keyword(while) pre_constant(True)operator(:) - ident(record) operator(=) ident(FILE)operator(.)ident(read)operator(()ident(RECORDSIZE)operator(\))operator(:) - keyword(if) predefined(len)operator(()ident(record)operator(\))operator(!=)ident(RECORDSIZE)operator(:) - keyword(raise) string<delimiter(")content(short read)delimiter(")> - ident(FIELDS) operator(=) ident(struct)operator(.)ident(unpack)operator(()ident(TEMPLATE)operator(,) ident(record)operator(\)) -comment(# ----) - - -comment(# ^^PLEAC^^_8.16) -comment(# NOTE: to parse INI file, see the stanard ConfigParser module.) -keyword(import) include(re) -ident(pat) operator(=) ident(re)operator(.)ident(compile)operator(()string<modifier(r)delimiter(")content(\\s)content(*=)content(\\s)content(*)delimiter(")>operator(\)) -keyword(for) ident(line) keyword(in) ident(config_file)operator(:) - keyword(if) string<delimiter(")content(#)delimiter(")> keyword(in) ident(line)operator(:) comment(# no comments) - ident(line) operator(=) ident(line)operator([)operator(:)ident(line)operator(.)ident(index)operator(()string<delimiter(")content(#)delimiter(")>operator(\))operator(]) - ident(line) operator(=) ident(line)operator(.)ident(strip)operator(()operator(\)) comment(# no leading or trailing white) - keyword(if) keyword(not) ident(line)operator(:) comment(# anything left?) - keyword(continue) - ident(m) operator(=) ident(pat)operator(.)ident(search)operator(()ident(line)operator(\)) - ident(var) operator(=) ident(line)operator([)operator(:)ident(m)operator(.)ident(start)operator(()operator(\))operator(]) - ident(value) operator(=) ident(line)operator([)ident(m)operator(.)ident(end)operator(()operator(\))operator(:)operator(]) - ident(User_Preferences)operator([)ident(var)operator(]) operator(=) ident(value) - - -comment(# ^^PLEAC^^_8.17) -keyword(import) include(os) - -ident(mode)operator(,) ident(ino)operator(,) ident(dev)operator(,) ident(nlink)operator(,) ident(uid)operator(,) ident(gid)operator(,) ident(size)operator(,) \ -ident(atime)operator(,) ident(mtime)operator(,) ident(ctime) operator(=) ident(os)operator(.)ident(stat)operator(()ident(filename)operator(\)) - -ident(mode) operator(&=) oct(07777) comment(# discard file type info) - -comment(#-----------------------------) -ident(info) operator(=) ident(os)operator(.)ident(stat)operator(()ident(filename)operator(\)) -keyword(if) ident(info)operator(.)ident(st_uid) operator(==) integer(0)operator(:) - keyword(print) string<delimiter(")content(Superuser owns)delimiter(")>operator(,) ident(filename) -keyword(if) ident(info)operator(.)ident(st_atime) operator(>) ident(info)operator(.)ident(st_mtime)operator(:) - keyword(print) ident(filename)operator(,) string<delimiter(")content(has been read since it was written.)delimiter(")> -comment(#-----------------------------) -keyword(import) include(os) -keyword(def) method(is_safe)operator(()ident(path)operator(\))operator(:) - ident(info) operator(=) ident(os)operator(.)ident(stat)operator(()ident(path)operator(\)) - - comment(# owner neither superuser nor me ) - comment(# the real uid is in stored in the $< variable) - keyword(if) ident(info)operator(.)ident(st_uid) keyword(not) keyword(in) operator(()integer(0)operator(,) ident(os)operator(.)ident(getuid)operator(()operator(\))operator(\))operator(:) - keyword(return) pre_constant(False) - - comment(# check whether group or other can write file.) - comment(# use 066 to detect either reading or writing) - keyword(if) ident(info)operator(.)ident(st_mode) operator(&) oct(022)operator(:) comment(# someone else can write this) - keyword(if) keyword(not) ident(os)operator(.)ident(path)operator(.)ident(isdir)operator(()ident(path)operator(\))operator(:) comment(# non-directories aren't safe) - keyword(return) pre_constant(False) - comment(# but directories with the sticky bit (01000\) are) - keyword(if) keyword(not) operator(()ident(info)operator(.)ident(st_mode) operator(&) oct(01000)operator(\))operator(:) - keyword(return) pre_constant(False) - keyword(return) pre_constant(True) -comment(#-----------------------------) -comment(## XXX What is '_PC_CHOWN_RESTRICTED'?) - -keyword(def) method(is_verysafe)operator(()ident(path)operator(\))operator(:) - ident(terms) operator(=) operator([)operator(]) - keyword(while) pre_constant(True)operator(:) - ident(path)operator(,) ident(ending) operator(=) ident(os)operator(.)ident(path)operator(.)ident(split)operator(()ident(path)operator(\)) - keyword(if) keyword(not) ident(ending)operator(:) - keyword(break) - ident(terms)operator(.)ident(insert)operator(()integer(0)operator(,) ident(ending)operator(\)) - keyword(for) ident(term) keyword(in) ident(terms)operator(:) - ident(path) operator(=) ident(os)operator(.)ident(path)operator(.)ident(join)operator(()ident(path)operator(,) ident(term)operator(\)) - keyword(if) keyword(not) ident(is_safe)operator(()ident(path)operator(\))operator(:) - keyword(return) pre_constant(False) - keyword(return) pre_constant(True) -comment(#-----------------------------) - -comment(# Program: tctee) -comment(# Not Implemented (requires reimplementing Perl's builtin '>>', '|',) -comment(# etc. semantics\)) - -comment(# @@PLEAC@@_8.18) -comment(#!/usr/bin/python) -comment(# tailwtmp - watch for logins and logouts;) -comment(# uses linux utmp structure, from /usr/include/bits/utmp.h) - -comment(# /* The structure describing an entry in the user accounting database. */) -comment(# struct utmp) -comment(# {) -comment(# short int ut_type; /* Type of login. */) -comment(# pid_t ut_pid; /* Process ID of login process. */) -comment(# char ut_line[UT_LINESIZE]; /* Devicename. */) -comment(# char ut_id[4]; /* Inittab ID. */) -comment(# char ut_user[UT_NAMESIZE]; /* Username. */) -comment(# char ut_host[UT_HOSTSIZE]; /* Hostname for remote login. */) -comment(# struct exit_status ut_exit; /* Exit status of a process marked) -comment(# as DEAD_PROCESS. */) -comment(# long int ut_session; /* Session ID, used for windowing. */) -comment(# struct timeval ut_tv; /* Time entry was made. */) -comment(# int32_t ut_addr_v6[4]; /* Internet address of remote host. */) -comment(# char __unused[20]; /* Reserved for future use. */) -comment(# };) - -comment(# /* Values for the `ut_type' field of a `struct utmp'. */) -comment(# #define EMPTY 0 /* No valid user accounting information. */) -comment(# ) -comment(# #define RUN_LVL 1 /* The system's runlevel. */) -comment(# #define BOOT_TIME 2 /* Time of system boot. */) -comment(# #define NEW_TIME 3 /* Time after system clock changed. */) -comment(# #define OLD_TIME 4 /* Time when system clock changed. */) -comment(# ) -comment(# #define INIT_PROCESS 5 /* Process spawned by the init process. */) -comment(# #define LOGIN_PROCESS 6 /* Session leader of a logged in user. */) -comment(# #define USER_PROCESS 7 /* Normal process. */) -comment(# #define DEAD_PROCESS 8 /* Terminated process. */) -comment(# ) -comment(# #define ACCOUNTING 9) - -keyword(import) include(time) -keyword(import) include(struct) -keyword(import) include(os) - -keyword(class) class(WTmpRecord)operator(:) - ident(fmt) operator(=) string<delimiter(")content(hI32s4s32s256siili4l20s)delimiter(")>operator(;) - ident(_fieldnames) operator(=) operator([)string<delimiter(")content(type)delimiter(")>operator(,)string<delimiter(")content(PID)delimiter(")>operator(,)string<delimiter(")content(Line)delimiter(")>operator(,)string<delimiter(")content(inittab)delimiter(")>operator(,)string<delimiter(")content(User)delimiter(")>operator(,)string<delimiter(")content(Hostname)delimiter(")>operator(,) - string<delimiter(")content(exit_status)delimiter(")>operator(,) string<delimiter(")content(session)delimiter(")>operator(,) string<delimiter(")content(time)delimiter(")>operator(,) string<delimiter(")content(addr)delimiter(")> operator(]) - keyword(def) method(__init__)operator(()pre_constant(self)operator(\))operator(:) - pre_constant(self)operator(.)ident(_rec_size) operator(=) ident(struct)operator(.)ident(calcsize)operator(()pre_constant(self)operator(.)ident(fmt)operator(\)) - keyword(def) method(size)operator(()pre_constant(self)operator(\))operator(:) - keyword(return) pre_constant(self)operator(.)ident(_rec_size) - keyword(def) method(unpack)operator(()pre_constant(self)operator(,) ident(bin_data)operator(\))operator(:) - ident(rec) operator(=) ident(struct)operator(.)ident(unpack)operator(()pre_constant(self)operator(.)ident(fmt)operator(,) ident(bin_data)operator(\)) - pre_constant(self)operator(.)ident(_rec) operator(=) operator([)operator(]) - keyword(for) ident(i) keyword(in) predefined(range)operator(()predefined(len)operator(()ident(rec)operator(\))operator(\))operator(:) - keyword(if) ident(i) keyword(in) operator(()integer(2)operator(,)integer(3)operator(,)integer(4)operator(,)integer(5)operator(\))operator(:) - comment(# remove character zeros from strings) - pre_constant(self)operator(.)ident(_rec)operator(.)ident(append)operator(() ident(rec)operator([)ident(i)operator(])operator(.)ident(split)operator(()string<delimiter(")char(\\0)delimiter(")>operator(\))operator([)integer(0)operator(]) operator(\)) - keyword(else)operator(:) - pre_constant(self)operator(.)ident(_rec)operator(.)ident(append)operator(()ident(rec)operator([)ident(i)operator(])operator(\)) - keyword(return) pre_constant(self)operator(.)ident(_rec) - keyword(def) method(fieldnames)operator(()pre_constant(self)operator(\))operator(:) - keyword(return) pre_constant(self)operator(.)ident(_fieldnames) - keyword(def) method(__getattr__)operator(()pre_constant(self)operator(,)ident(name)operator(\))operator(:) - keyword(return) pre_constant(self)operator(.)ident(_rec)operator([)pre_constant(self)operator(.)ident(_fieldnames)operator(.)ident(index)operator(()ident(name)operator(\))operator(]) - -ident(rec) operator(=) ident(WTmpRecord)operator(()operator(\)) -ident(f) operator(=) predefined(open)operator(()string<delimiter(")content(/var/log/wtmp)delimiter(")>operator(,)string<delimiter(")content(rb)delimiter(")>operator(\)) -ident(f)operator(.)ident(seek)operator(()integer(0)operator(,)integer(2)operator(\)) -keyword(while) pre_constant(True)operator(:) - keyword(while) pre_constant(True)operator(:) - ident(bin) operator(=) ident(f)operator(.)ident(read)operator(()ident(rec)operator(.)ident(size)operator(()operator(\))operator(\)) - keyword(if) predefined(len)operator(()predefined(bin)operator(\)) operator(!=) ident(rec)operator(.)ident(size)operator(()operator(\))operator(:) - keyword(break) - ident(rec)operator(.)ident(unpack)operator(()predefined(bin)operator(\)) - keyword(if) ident(rec)operator(.)ident(type) operator(!=) integer(0)operator(:) - keyword(print) string<delimiter(")content( %1d %-8s %-12s %-24s %-20s %5d %08x)delimiter(")> operator(%) \ - operator(()ident(rec)operator(.)ident(type)operator(,) ident(rec)operator(.)ident(User)operator(,) ident(rec)operator(.)ident(Line)operator(,) - ident(time)operator(.)ident(strftime)operator(()string<delimiter(")content(%a %Y-%m-%d %H:%M:%S)delimiter(")>operator(,)ident(time)operator(.)ident(localtime)operator(()ident(rec)operator(.)ident(time)operator(\))operator(\))operator(,) - ident(rec)operator(.)ident(Hostname)operator(,) ident(rec)operator(.)ident(PID)operator(,) ident(rec)operator(.)ident(addr)operator(\)) - ident(time)operator(.)ident(sleep)operator(()integer(1)operator(\)) -ident(f)operator(.)ident(close)operator(()operator(\)) - -comment(# @@PLEAC@@_8.19) -comment(# @@INCOMPLETE@@) -comment(# @@INCOMPLETE@@) - -comment(# @@PLEAC@@_8.20) -comment(#!/usr/bin/python) -comment(# laston - find out when given user last logged on) -keyword(import) include(sys) -keyword(import) include(struct) -keyword(import) include(pwd) -keyword(import) include(time) -keyword(import) include(re) - -ident(f) operator(=) predefined(open)operator(()string<delimiter(")content(/var/log/lastlog)delimiter(")>operator(,)string<delimiter(")content(rb)delimiter(")>operator(\)) - -ident(fmt) operator(=) string<delimiter(")content(L32s256s)delimiter(")> -ident(rec_size) operator(=) ident(struct)operator(.)ident(calcsize)operator(()ident(fmt)operator(\)) - -keyword(for) ident(user) keyword(in) ident(sys)operator(.)ident(argv)operator([)integer(1)operator(:)operator(])operator(:) - keyword(if) ident(re)operator(.)ident(match)operator(()string<modifier(r)delimiter(")content(^)content(\\d)content(+$)delimiter(")>operator(,) ident(user)operator(\))operator(:) - ident(user_id) operator(=) predefined(int)operator(()ident(user)operator(\)) - keyword(else)operator(:) - keyword(try)operator(:) - ident(user_id) operator(=) ident(pwd)operator(.)ident(getpwnam)operator(()ident(user)operator(\))operator([)integer(2)operator(]) - keyword(except)operator(:) - keyword(print) string<delimiter(")content(no such uid %s)delimiter(")> operator(%) operator(()ident(user)operator(\)) - keyword(continue) - ident(f)operator(.)ident(seek)operator(()ident(rec_size) operator(*) ident(user_id)operator(\)) - ident(bin) operator(=) ident(f)operator(.)ident(read)operator(()ident(rec_size)operator(\)) - keyword(if) predefined(len)operator(()predefined(bin)operator(\)) operator(==) ident(rec_size)operator(:) - ident(data) operator(=) ident(struct)operator(.)ident(unpack)operator(()ident(fmt)operator(,) predefined(bin)operator(\)) - keyword(if) ident(data)operator([)integer(0)operator(])operator(:) - ident(logged_in) operator(=) string<delimiter(")content(at %s)delimiter(")> operator(%) operator(()ident(time)operator(.)ident(strftime)operator(()string<delimiter(")content(%a %H:%M:%S %Y-%m-%d)delimiter(")>operator(,) - ident(time)operator(.)ident(localtime)operator(()ident(data)operator([)integer(0)operator(])operator(\))operator(\))operator(\)) - ident(line) operator(=) string<delimiter(")content( on %s)delimiter(")> operator(%) operator(()ident(data)operator([)integer(1)operator(])operator(\)) - ident(host) operator(=) string<delimiter(")content( from %s)delimiter(")> operator(%) operator(()ident(data)operator([)integer(2)operator(])operator(\)) - keyword(else)operator(:) - ident(logged_in) operator(=) string<delimiter(")content(never logged in)delimiter(")> - ident(line) operator(=) string<delimiter(")delimiter(")> - ident(host) operator(=) string<delimiter(")delimiter(")> - keyword(print) string<delimiter(")content(%-8s UID %5d %s%s%s)delimiter(")> operator(%) operator(()ident(user)operator(,) ident(user_id)operator(,) ident(logged_in)operator(,) ident(line)operator(,) ident(host)operator(\)) - keyword(else)operator(:) - keyword(print) string<delimiter(")content(Read failed.)delimiter(")> -ident(f)operator(.)ident(close)operator(()operator(\)) - - -comment(# ^^PLEAC^^_9.0) -comment(#-----------------------------) -ident(entry) operator(=) ident(os)operator(.)ident(stat)operator(()string<delimiter(")content(/usr/bin/vi)delimiter(")>operator(\)) -comment(#-----------------------------) -ident(entry) operator(=) ident(os)operator(.)ident(stat)operator(()string<delimiter(")content(/usr/bin)delimiter(")>operator(\)) -comment(#-----------------------------) -ident(entry) operator(=) ident(os)operator(.)ident(stat)operator(()ident(INFILE)operator(.)ident(name)operator(\)) -comment(#-----------------------------) -ident(entry) operator(=) ident(os)operator(.)ident(stat)operator(()string<delimiter(")content(/usr/bin/vi)delimiter(")>operator(\)) -ident(ctime) operator(=) ident(entry)operator(.)ident(st_ino) -ident(size) operator(=) ident(entry)operator(.)ident(st_size) -comment(#-----------------------------) -ident(f) operator(=) predefined(open)operator(()ident(filename)operator(\)) - -ident(f)operator(.)ident(seek)operator(()integer(0)operator(,) integer(2)operator(\)) -keyword(if) keyword(not) ident(f)operator(.)ident(tell)operator(()operator(\))operator(:) - keyword(raise) exception(SystemExit)operator(()string<delimiter(")content(%s doesn't have text in it.)delimiter(")>operator(%)ident(filename)operator(\)) -comment(#-----------------------------) - -keyword(for) ident(filename) keyword(in) ident(os)operator(.)ident(listdir)operator(()string<delimiter(")content(/usr/bin)delimiter(")>operator(\))operator(:) - keyword(print) string<delimiter(")content(Inside /usr/bin is something called)delimiter(")>operator(,) ident(filename) -comment(#-----------------------------) - -comment(# ^^PLEAC^^_9.1) -comment(#-----------------------------) -ident(fstat) operator(=) ident(os)operator(.)ident(stat)operator(()ident(filename)operator(\)) -ident(readtime) operator(=) ident(fstat)operator(.)ident(st_atime) -ident(writetime) operator(=) ident(fstat)operator(.)ident(st_mtime) - -ident(os)operator(.)ident(utime)operator(()ident(filename)operator(,) operator(()ident(newreadtime)operator(,) ident(newwritetime)operator(\))operator(\)) - -comment(#DON'T DO THIS:) -ident(readtime)operator(,) ident(writetime) operator(=) ident(os)operator(.)ident(stat)operator(()ident(filename)operator(\))operator([)integer(7)operator(:)integer(9)operator(]) -comment(#-----------------------------) -ident(SECONDS_PER_DAY) operator(=) integer(60) operator(*) integer(60) operator(*) integer(24) -ident(fstat) operator(=) ident(os)operator(.)ident(stat)operator(()ident(filename)operator(\)) -ident(atime) operator(=) ident(fstat)operator(.)ident(st_atime) operator(-) integer(7) operator(*) ident(SECONDS_PER_DAY) -ident(mtime) operator(=) ident(fstat)operator(.)ident(st_mtime) operator(-) integer(7) operator(*) ident(SECONDS_PER_DAY) - -ident(os)operator(.)ident(utime)operator(()ident(filename)operator(,) operator(()ident(atime)operator(,) ident(mtime)operator(\))operator(\)) -comment(#-----------------------------) -ident(mtime) operator(=) ident(os)operator(.)ident(stat)operator(()ident(filename)operator(\))operator(.)ident(st_mtime) -ident(utime)operator(()ident(filename)operator(,) operator(()ident(time)operator(.)ident(time)operator(()operator(\))operator(,) ident(mtime)operator(\))operator(\)) -comment(#-----------------------------) -comment(#!/usr/bin/perl -w) -comment(# uvi - vi a file without changing its access times) - -keyword(import) include(sys)operator(,) include(os) -keyword(if) predefined(len)operator(()ident(sys)operator(.)ident(argv)operator(\)) operator(!=) integer(2)operator(:) - keyword(raise) exception(SystemExit)operator(()string<delimiter(")content(usage: uvi filename)delimiter(")>operator(\)) -ident(filename) operator(=) ident(argv)operator([)integer(1)operator(]) -ident(fstat) operator(=) ident(os)operator(.)ident(stat)operator(()ident(filename)operator(\)) -comment(# WARNING: potential security risk) -ident(os)operator(.)ident(system)operator(() operator(()ident(os)operator(.)ident(environ)operator(.)ident(get)operator(()string<delimiter(")content(EDITOR)delimiter(")>operator(\)) keyword(or) string<delimiter(")content(vi)delimiter(")>operator(\)) operator(+) string<delimiter(")content( )delimiter(")> operator(+) ident(filename)operator(\)) -ident(os)operator(.)ident(utime)operator(()ident(filename)operator(,) operator(()ident(fstat)operator(.)ident(st_atime)operator(,) ident(fstat)operator(.)ident(st_mtime)operator(\))operator(\)) -comment(#-----------------------------) - -comment(# ^^PLEAC^^_9.2) -comment(#-----------------------------) -ident(os)operator(.)ident(remove)operator(()ident(filename)operator(\)) - -ident(err_flg) operator(=) integer(0) -keyword(for) ident(filename) keyword(in) ident(filenames)operator(:) - keyword(try)operator(:) - ident(os)operator(.)ident(remove)operator(()ident(filename)operator(\)) - keyword(except) exception(OSError)operator(,) ident(err)operator(:) - ident(err_flg) operator(=) integer(1) -keyword(if) ident(err_flg)operator(:) - keyword(raise) exception(OSError)operator(()string<delimiter(")content(Couldn't remove all of %s: %s)delimiter(")> operator(%) operator(()ident(filenames)operator(,) ident(err)operator(\))operator(\)) -comment(#-----------------------------) -ident(os)operator(.)ident(remove)operator(()ident(filename)operator(\)) -comment(#-----------------------------) -ident(success) operator(=) integer(0) -keyword(for) ident(filename) keyword(in) ident(filenames)operator(:) - keyword(try)operator(:) - ident(os)operator(.)ident(remove)operator(()ident(filename)operator(\)) - ident(success) operator(+=) integer(1) - keyword(except) exception(OSError)operator(,) ident(err)operator(:) - keyword(pass) -keyword(if) ident(success) operator(!=) predefined(len)operator(()ident(filenames)operator(\))operator(:) - ident(sys)operator(.)ident(stderr)operator(.)ident(write)operator(()string<delimiter(")content(could only delete %d of %d files)delimiter(")> operator(%) \ - operator(()ident(success)operator(,) predefined(len)operator(()ident(filenames)operator(\))operator(\))operator(\)) - -comment(#-----------------------------) - -comment(# ^^PLEAC^^_9.3) -comment(#-----------------------------) -keyword(import) include(shutil) -ident(shutil)operator(.)ident(copy)operator(()ident(oldfile)operator(,) ident(newfile)operator(\)) -comment(#-----------------------------) -comment(## NOTE: this doesn't do the same thing as the Perl code,) -comment(## eg, handling of partial writes.) -ident(infile) operator(=) predefined(open)operator(()ident(oldfile)operator(\)) -ident(outfile) operator(=) predefined(open)operator(()ident(newfile)operator(,) string<delimiter(")content(w)delimiter(")>operator(\)) - -ident(blksize) operator(=) integer(16384) comment(# preferred block size?) - -keyword(while) pre_constant(True)operator(:) - ident(buf) operator(=) ident(infile)operator(.)ident(read)operator(()ident(blksize)operator(\)) - keyword(if) keyword(not) ident(buf)operator(:) - keyword(break) - ident(outfile)operator(.)ident(write)operator(()ident(buf)operator(\)) - -ident(infile)operator(.)ident(close)operator(()operator(\)) -ident(outfile)operator(.)ident(close)operator(()operator(\)) -comment(#-----------------------------) -comment(# WARNING: these are insecure - do not use in hostile environments) -ident(os)operator(.)ident(system)operator(()string<delimiter(")content(cp %s %s)delimiter(")> operator(%) operator(()ident(oldfile)operator(,) ident(newfile)operator(\))operator(\)) comment(# unix) -ident(os)operator(.)ident(system)operator(()string<delimiter(")content(copy %s %s)delimiter(")> operator(%) operator(()ident(oldfile)operator(,) ident(newfile)operator(\))operator(\)) comment(# dos, vms) -comment(#-----------------------------) -keyword(import) include(shutil) - -ident(shutil)operator(.)ident(copy)operator(()string<delimiter(")content(datafile.dat)delimiter(")>operator(,) string<delimiter(")content(datafile.bak)delimiter(")>operator(\)) - -ident(shutil)operator(.)ident(copy)operator(()string<delimiter(")content(datafile.new)delimiter(")>operator(,) string<delimiter(")content(datafile.dat)delimiter(")>operator(\)) -ident(os)operator(.)ident(remove)operator(()string<delimiter(")content(datafile.new)delimiter(")>operator(\)) - -comment(#-----------------------------) - -comment(# ^^PLEAC^^_9.4) -comment(#-----------------------------) -keyword(import) include(os) -ident(seen) operator(=) operator({)operator(}) - -keyword(def) method(do_my_thing)operator(()ident(filename)operator(\))operator(:) - ident(fstat) operator(=) ident(os)operator(.)ident(stat)operator(()ident(filename)operator(\)) - ident(key) operator(=) operator(()ident(fstat)operator(.)ident(st_ino)operator(,) ident(fstat)operator(.)ident(st_dev)operator(\)) - keyword(if) keyword(not) ident(seen)operator(.)ident(get)operator(()ident(key)operator(\))operator(:) - comment(# do something with filename because we haven't) - comment(# seen it before) - keyword(pass) - ident(seen)operator([)ident(key)operator(]) operator(=) ident(seen)operator(.)ident(get)operator(()ident(key)operator(,) integer(0) operator(\)) operator(+) integer(1) - -comment(#-----------------------------) -keyword(for) ident(filename) keyword(in) ident(files)operator(:) - ident(fstat) operator(=) ident(os)operator(.)ident(stat)operator(()ident(filename)operator(\)) - ident(key) operator(=) operator(()ident(fstat)operator(.)ident(st_ino)operator(,) ident(fstat)operator(.)ident(st_dev)operator(\)) - ident(seen)operator(.)ident(setdefault)operator(()ident(key)operator(,) operator([)operator(])operator(\))operator(.)ident(append)operator(()ident(filename)operator(\)) - -ident(keys) operator(=) ident(seen)operator(.)ident(keys)operator(()operator(\)) -ident(keys)operator(.)ident(sort)operator(()operator(\)) -keyword(for) ident(inodev) keyword(in) ident(keys)operator(:) - ident(ino)operator(,) ident(dev) operator(=) ident(inodev) - ident(filenames) operator(=) ident(seen)operator([)ident(inodev)operator(]) - keyword(if) predefined(len)operator(()ident(filenames)operator(\)) operator(>) integer(1)operator(:) - comment(# 'filenames' is a list of filenames for the same file) - keyword(pass) -comment(#-----------------------------) - -comment(# ^^PLEAC^^_9.5) -comment(#-----------------------------) -keyword(for) ident(filename) keyword(in) ident(os)operator(.)ident(listdir)operator(()ident(dirname)operator(\))operator(:) - comment(# do something with "$dirname/$file") - keyword(pass) -comment(#-----------------------------) -comment(# XXX No -T equivalent in Python) -comment(#-----------------------------) -comment(# 'readir' always skipes '.' and '..' on OSes where those are) -comment(# standard directory names) -keyword(for) ident(filename) keyword(in) ident(os)operator(.)ident(listdir)operator(()ident(dirname)operator(\))operator(:) - keyword(pass) -comment(#-----------------------------) -comment(# XX Not Implemented -- need to know what DirHandle does) -comment(# use DirHandle;) - -comment(#-----------------------------) - -comment(# ^^PLEAC^^_9.6) -comment(#-----------------------------) -keyword(import) include(glob) -ident(filenames) operator(=) ident(glob)operator(.)ident(glob)operator(()string<delimiter(")content(*.c)delimiter(")>operator(\)) -comment(#-----------------------------) -ident(filenames) operator(=) operator([)ident(filename) keyword(for) ident(filename) keyword(in) ident(os)operator(.)ident(listdir)operator(()ident(path)operator(\)) keyword(if) ident(filename)operator(.)ident(endswith)operator(()string<delimiter(")content(.c)delimiter(")>operator(\))operator(]) -comment(#-----------------------------) -keyword(import) include(re) -ident(allowed_name) operator(=) ident(re)operator(.)ident(compile)operator(()string<modifier(r)delimiter(")content(\\.)content([ch]$)delimiter(")>operator(,) ident(re)operator(.)ident(I)operator(\))operator(.)ident(search) -ident(filenames) operator(=) operator([)ident(f) keyword(for) ident(f) keyword(in) ident(os)operator(.)ident(listdir)operator(()ident(path)operator(\)) keyword(if) ident(allowed_name)operator(()ident(f)operator(\))operator(]) -comment(#-----------------------------) -keyword(import) include(re)operator(,) include(os) -ident(allowed_name) operator(=) ident(re)operator(.)ident(compile)operator(()string<modifier(r)delimiter(")content(\\.)content([ch]$)delimiter(")>operator(,) ident(re)operator(.)ident(I)operator(\))operator(.)ident(search) - -ident(fnames) operator(=) operator([)ident(os)operator(.)ident(path)operator(.)ident(join)operator(()ident(dirname)operator(,) ident(fname)operator(\)) - keyword(for) ident(fname) keyword(in) ident(os)operator(.)ident(listdir)operator(()ident(dirname)operator(\)) - keyword(if) ident(allowed_name)operator(()ident(fname)operator(\))operator(]) -comment(#-----------------------------) -ident(dirs) operator(=) operator([)ident(os)operator(.)ident(path)operator(.)ident(join)operator(()ident(path)operator(,) ident(f)operator(\)) - keyword(for) ident(f) keyword(in) ident(os)operator(.)ident(listdir)operator(()ident(path)operator(\)) keyword(if) ident(f)operator(.)ident(isdigit)operator(()operator(\))operator(]) -ident(dirs) operator(=) operator([)ident(d) keyword(for) ident(d) keyword(in) ident(dirs) keyword(if) ident(os)operator(.)ident(path)operator(.)ident(isdir)operator(()ident(d)operator(\))operator(]) -ident(dirs) operator(=) predefined(sorted)operator(()ident(dirs)operator(,) ident(key)operator(=)predefined(int)operator(\)) comment(# Sort by numeric value - "9" before "11") -comment(#-----------------------------) - -comment(# @@PLEAC@@_9.7) -comment(# Processing All Files in a Directory Recursively) - -comment(# os.walk is new in 2.3.) - -comment(# For pre-2.3 code, there is os.path.walk, which is) -comment(# little harder to use.) - -comment(#-----------------------------) -keyword(import) include(os) -keyword(for) ident(root)operator(,) ident(dirs)operator(,) ident(files) keyword(in) ident(os)operator(.)ident(walk)operator(()ident(top)operator(\))operator(:) - keyword(pass) comment(# do whatever) - -comment(#-----------------------------) -keyword(import) include(os)operator(,) include(os.path) -keyword(for) ident(root)operator(,) ident(dirs)operator(,) ident(files) keyword(in) ident(os)operator(.)ident(walk)operator(()ident(top)operator(\))operator(:) - keyword(for) ident(name) keyword(in) ident(dirs)operator(:) - keyword(print) ident(os)operator(.)ident(path)operator(.)ident(join)operator(()ident(root)operator(,) ident(name)operator(\)) operator(+) string<delimiter(')content(/)delimiter(')> - keyword(for) ident(name) keyword(in) ident(files)operator(:) - keyword(print) ident(os)operator(.)ident(path)operator(.)ident(join)operator(()ident(root)operator(,) ident(name)operator(\)) - -comment(#-----------------------------) -keyword(import) include(os)operator(,) include(os.path) -ident(numbytes) operator(=) integer(0) -keyword(for) ident(root)operator(,) ident(dirs)operator(,) ident(files) keyword(in) ident(os)operator(.)ident(walk)operator(()ident(top)operator(\))operator(:) - keyword(for) ident(name) keyword(in) ident(files)operator(:) - ident(path) operator(=) ident(os)operator(.)ident(path)operator(.)ident(join)operator(()ident(root)operator(,) ident(name)operator(\)) - ident(numbytes) operator(+=) ident(os)operator(.)ident(path)operator(.)ident(getsize)operator(()ident(path)operator(\)) -keyword(print) string<delimiter(")content(%s contains %s bytes)delimiter(")> operator(%) operator(()ident(top)operator(,) ident(numbytes)operator(\)) - -comment(#-----------------------------) -keyword(import) include(os)operator(,) include(os.path) -ident(saved_size)operator(,) ident(saved_name) operator(=) operator(-)integer(1)operator(,) string<delimiter(')delimiter(')> -keyword(for) ident(root)operator(,) ident(dirs)operator(,) ident(files) keyword(in) ident(os)operator(.)ident(walk)operator(()ident(top)operator(\))operator(:) - keyword(for) ident(name) keyword(in) ident(files)operator(:) - ident(path) operator(=) ident(os)operator(.)ident(path)operator(.)ident(join)operator(()ident(root)operator(,) ident(name)operator(\)) - ident(size) operator(=) ident(os)operator(.)ident(path)operator(.)ident(getsize)operator(()ident(path)operator(\)) - keyword(if) ident(size) operator(>) ident(saved_size)operator(:) - ident(saved_size) operator(=) ident(size) - ident(saved_name) operator(=) ident(path) -keyword(print) string<delimiter(")content(Biggest file %s in %s is %s bytes long)delimiter(")> operator(%) operator(() - ident(saved_name)operator(,) ident(top)operator(,) ident(saved_size)operator(\)) - -comment(#-----------------------------) -keyword(import) include(os)operator(,) include(os.path)operator(,) include(time) -ident(saved_age)operator(,) ident(saved_name) operator(=) pre_constant(None)operator(,) string<delimiter(')delimiter(')> -keyword(for) ident(root)operator(,) ident(dirs)operator(,) ident(files) keyword(in) ident(os)operator(.)ident(walk)operator(()ident(top)operator(\))operator(:) - keyword(for) ident(name) keyword(in) ident(files)operator(:) - ident(path) operator(=) ident(os)operator(.)ident(path)operator(.)ident(join)operator(()ident(root)operator(,) ident(name)operator(\)) - ident(age) operator(=) ident(os)operator(.)ident(path)operator(.)ident(getmtime)operator(()ident(path)operator(\)) - keyword(if) ident(saved_age) keyword(is) pre_constant(None) keyword(or) ident(age) operator(>) ident(saved_age)operator(:) - ident(saved_age) operator(=) ident(age) - ident(saved_name) operator(=) ident(path) -keyword(print) string<delimiter(")content(%s %s)delimiter(")> operator(%) operator(()ident(saved_name)operator(,) ident(time)operator(.)ident(ctime)operator(()ident(saved_age)operator(\))operator(\)) - -comment(#-----------------------------) -comment(#!/usr/bin/env python) -comment(# fdirs - find all directories) -keyword(import) include(sys)operator(,) include(os)operator(,) include(os.path) -ident(argv) operator(=) ident(sys)operator(.)ident(argv)operator([)integer(1)operator(:)operator(]) keyword(or) operator([)string<delimiter(')content(.)delimiter(')>operator(]) -keyword(for) ident(top) keyword(in) ident(argv)operator(:) - keyword(for) ident(root)operator(,) ident(dirs)operator(,) ident(files) keyword(in) ident(os)operator(.)ident(walk)operator(()ident(top)operator(\))operator(:) - keyword(for) ident(name) keyword(in) ident(dirs)operator(:) - ident(path) operator(=) ident(os)operator(.)ident(path)operator(.)ident(join)operator(()ident(root)operator(,) ident(name)operator(\)) - keyword(print) ident(path) - - -comment(# ^^PLEAC^^_9.8) -comment(#-----------------------------) -comment(# DeleteDir - remove whole directory trees like rm -r) -keyword(import) include(shutil) -ident(shutil)operator(.)ident(rmtree)operator(()ident(path)operator(\)) - -comment(# DON'T DO THIS:) -keyword(import) include(os)operator(,) include(sys) -keyword(def) method(DeleteDir)operator(()predefined(dir)operator(\))operator(:) - keyword(for) ident(name) keyword(in) ident(os)operator(.)ident(listdir)operator(()predefined(dir)operator(\))operator(:) - ident(file) operator(=) ident(os)operator(.)ident(path)operator(.)ident(join)operator(()predefined(dir)operator(,) ident(name)operator(\)) - keyword(if) keyword(not) ident(os)operator(.)ident(path)operator(.)ident(islink)operator(()predefined(file)operator(\)) keyword(and) ident(os)operator(.)ident(path)operator(.)ident(isdir)operator(()predefined(file)operator(\))operator(:) - ident(DeleteDir)operator(()predefined(file)operator(\)) - keyword(else)operator(:) - ident(os)operator(.)ident(remove)operator(()predefined(file)operator(\)) - ident(os)operator(.)ident(rmdir)operator(()predefined(dir)operator(\)) - -comment(# @@PLEAC@@_9.9) -comment(# Renaming Files) - -comment(# code sample one to one from my perlcookbook) -comment(# looks strange to me.) -keyword(import) include(os) -keyword(for) ident(fname) keyword(in) ident(fnames)operator(:) - ident(newname) operator(=) ident(fname) - comment(# change the file's name) - keyword(try)operator(:) - ident(os)operator(.)ident(rename)operator(()ident(fname)operator(,) ident(newname)operator(\)) - keyword(except) exception(OSError)operator(,) ident(err)operator(:) - keyword(print) string<delimiter(")content(Couldn't rename %s to %s: %s!)delimiter(")> operator(%) \ - operator(()ident(fname)operator(,) ident(newfile)operator(,) ident(err)operator(\)) - -comment(# use os.renames if newname needs directory creation.) - -comment(#A vaguely Pythonic solution is:) -keyword(import) include(glob) -keyword(def) method(rename)operator(()ident(files)operator(,) ident(transfunc)operator(\)) - keyword(for) ident(fname) keyword(in) ident(fnames)operator(:) - ident(newname) operator(=) ident(transfunc)operator(()ident(fname)operator(\)) - keyword(try)operator(:) - ident(os)operator(.)ident(rename)operator(()ident(fname)operator(,) ident(newname)operator(\)) - keyword(except) exception(OSError)operator(,) ident(err)operator(:) - keyword(print) string<delimiter(")content(Couldn't rename %s to %s: %s!)delimiter(")> operator(%) \ - operator(()ident(fname)operator(,) ident(newfile)operator(,) ident(err)operator(\)) - -keyword(def) method(transfunc)operator(()ident(fname)operator(\))operator(:) - keyword(return) ident(fname)operator([)operator(:)operator(-)integer(5)operator(]) -ident(rename)operator(()ident(glob)operator(.)ident(glob)operator(()string<delimiter(")content(*.orig)delimiter(")>operator(\))operator(,) ident(transfunc)operator(\)) - -keyword(def) method(transfunc)operator(()ident(fname)operator(\))operator(:) - keyword(return) ident(fname)operator(.)ident(lower)operator(()operator(\)) -ident(rename)operator(()operator([)ident(f) keyword(for) ident(f) keyword(in) ident(glob)operator(.)ident(glob)operator(()string<delimiter(")content(*)delimiter(")>operator(\)) keyword(if) keyword(not) ident(f)operator(.)ident(startswith)operator(()string<delimiter(")content(Make\)], transfunc\) )>error() - -keyword(def) method(transfunc)operator(()ident(fname)operator(\))operator(:) - keyword(return) ident(fname) operator(+) string<delimiter(")content(.bad)delimiter(")> -ident(rename)operator(()ident(glob)operator(.)ident(glob)operator(()string<delimiter(")content(*.f)delimiter(")>operator(\))operator(,) ident(transfunc)operator(\)) - -keyword(def) method(transfunc)operator(()ident(fname)operator(\))operator(:) - ident(answer) operator(=) predefined(raw_input)operator(()ident(fname) operator(+) string<delimiter(")content(: )delimiter(")>operator(\)) - keyword(if) ident(answer)operator(.)ident(upper)operator(()operator(\))operator(.)ident(startswith)operator(()string<delimiter(")content(Y)delimiter(")>operator(\))operator(:) - keyword(return) ident(fname)operator(.)ident(replace)operator(()string<delimiter(")content(foo)delimiter(")>operator(,) string<delimiter(")content(bar)delimiter(")>operator(\)) -ident(rename)operator(()ident(glob)operator(.)ident(glob)operator(()string<delimiter(")content(*)delimiter(")>operator(\))operator(,) ident(transfunc)operator(\)) - -keyword(def) method(transfunc)operator(()ident(fname)operator(\))operator(:) - keyword(return) string<delimiter(")content(.#)delimiter(")> operator(+) ident(fname)operator([)operator(:)operator(-)integer(1)operator(]) -ident(rename)operator(()ident(glob)operator(.)ident(glob)operator(()string<delimiter(")content(/tmp/*~)delimiter(")>operator(\))operator(,) ident(transfunc)operator(\)) - -comment(# This _could_ be made to eval code taken directly from the command line, ) -comment(# but it would be fragile) -comment(#-----------------------------) - -comment(# ^^PLEAC^^_9.10) -comment(#-----------------------------) -keyword(import) include(os) - -ident(base) operator(=) ident(os)operator(.)ident(path)operator(.)ident(basename)operator(()ident(path)operator(\)) -ident(dirname) operator(=) ident(os)operator(.)ident(path)operator(.)ident(dirname)operator(()ident(path)operator(\)) -ident(dirname)operator(,) ident(filename) operator(=) ident(os)operator(.)ident(path)operator(.)ident(split)operator(()ident(path)operator(\)) -ident(base)operator(,) ident(ext) operator(=) ident(os)operator(.)ident(path)operator(.)ident(splitext)operator(()ident(filename)operator(\)) - -comment(#-----------------------------) -ident(path) operator(=) string<delimiter(')content(/usr/lib/libc.a)delimiter(')> -ident(filename) operator(=) ident(os)operator(.)ident(path)operator(.)ident(basename)operator(()ident(path)operator(\)) -ident(dirname) operator(=) ident(os)operator(.)ident(path)operator(.)ident(dirname)operator(()ident(path)operator(\)) - -keyword(print) string<delimiter(")content(dir is %s, file is %s)delimiter(")> operator(%) operator(()ident(dirname)operator(,) ident(filename)operator(\)) -comment(# dir is /usr/lib, file is libc.a) -comment(#-----------------------------) -ident(path) operator(=) string<delimiter(')content(/usr/lib/libc.a)delimiter(')> -ident(dirname)operator(,) ident(filename) operator(=) ident(os)operator(.)ident(path)operator(.)ident(split)operator(()ident(path)operator(\)) -ident(name)operator(,) ident(ext) operator(=) ident(os)operator(.)ident(path)operator(.)ident(splitext)operator(()ident(filename)operator(\)) - -keyword(print) string<delimiter(")content(dir is %s, name is %s, extension is %s)delimiter(")> operator(%) operator(()ident(dirname)operator(,) ident(name)operator(,) ident(ext)operator(\)) -comment(# NOTE: The Python code prints) -comment(# dir is /usr/lib, name is libc, extension is .a) -comment(# while the Perl code prints a '/' after the directory name) -comment(# dir is /usr/lib/, name is libc, extension is .a) -comment(#-----------------------------) -keyword(import) include(macpath) -ident(path) operator(=) string<delimiter(")content(Hard%20Drive:System%20Folder:README.txt)delimiter(")> -ident(dirname)operator(,) ident(base) operator(=) ident(macpath)operator(.)ident(split)operator(()ident(path)operator(\)) -ident(name)operator(,) ident(ext) operator(=) ident(macpath)operator(.)ident(splitext)operator(()ident(base)operator(\)) - -keyword(print) string<delimiter(")content(dir is %s, name is %s, extension is %s)delimiter(")> operator(%) operator(()ident(dirname)operator(,) ident(name)operator(,) ident(ext)operator(\)) -comment(# dir is Hard%20Drive:System%20Folder, name is README, extension is .txt) -comment(#-----------------------------) -comment(# DON'T DO THIS - it's not portable.) -keyword(def) method(extension)operator(()ident(path)operator(\))operator(:) - ident(pos) operator(=) ident(path)operator(.)ident(find)operator(()string<delimiter(")content(.)delimiter(")>operator(\)) - keyword(if) ident(pos) operator(==) operator(-)integer(1)operator(:) - keyword(return) string<delimiter(")delimiter(")> - ident(ext) operator(=) ident(path)operator([)ident(pos)operator(+)integer(1)operator(:)operator(]) - keyword(if) string<delimiter(")content(/)delimiter(")> keyword(in) ident(ext)operator(:) - comment(# wasn't passed a basename -- this is of the form 'x.y/z') - keyword(return) string<delimiter(")delimiter(")> - keyword(return) ident(ext) -comment(#-----------------------------) - -comment(# @@PLEAC@@_9.11) - -comment(#!/usr/bin/python) -comment(# sysmirror - build spectral forest of symlinks) -keyword(import) include(sys)operator(,) include(os)operator(,) include(os.path) - -ident(pgmname) operator(=) ident(sys)operator(.)ident(argv)operator([)integer(0)operator(]) -keyword(if) predefined(len)operator(()ident(sys)operator(.)ident(argv)operator(\))operator(!=)integer(3)operator(:) - keyword(print) string<delimiter(")content(usage: %s realdir mirrordir)delimiter(")> operator(%) ident(pgmname) - keyword(raise) exception(SystemExit) - -operator(()ident(srcdir)operator(,) ident(dstdir)operator(\)) operator(=) ident(sys)operator(.)ident(argv)operator([)integer(1)operator(:)integer(3)operator(]) -keyword(if) keyword(not) ident(os)operator(.)ident(path)operator(.)ident(isdir)operator(()ident(srcdir)operator(\))operator(:) - keyword(print) string<delimiter(")content(%s: %s is not a directory)delimiter(")> operator(%) operator(()ident(pgmname)operator(,)ident(srcdir)operator(\)) - keyword(raise) exception(SystemExit) -keyword(if) keyword(not) ident(os)operator(.)ident(path)operator(.)ident(isdir)operator(()ident(dstdir)operator(\))operator(:) - keyword(try)operator(:) - ident(os)operator(.)ident(mkdir)operator(()ident(dstdir)operator(\)) - keyword(except) exception(OSError)operator(:) - keyword(print) string<delimiter(")content(%s: can't make directory %s)delimiter(")> operator(%) operator(()ident(pgmname)operator(,)ident(dstdir)operator(\)) - keyword(raise) exception(SystemExit) - -comment(# fix relative paths) -ident(srcdir) operator(=) ident(os)operator(.)ident(path)operator(.)ident(abspath)operator(()ident(srcdir)operator(\)) -ident(dstdir) operator(=) ident(os)operator(.)ident(path)operator(.)ident(abspath)operator(()ident(dstdir)operator(\)) - -keyword(def) method(wanted)operator(()ident(arg)operator(,) ident(dirname)operator(,) ident(names)operator(\))operator(:) - keyword(for) ident(direntry) keyword(in) ident(names)operator(:) - ident(relname) operator(=) string<delimiter(")content(%s/%s)delimiter(")> operator(%) operator(()ident(dirname)operator(,) ident(direntry)operator(\)) - keyword(if) ident(os)operator(.)ident(path)operator(.)ident(isdir)operator(()ident(relname)operator(\))operator(:) - ident(mode) operator(=) ident(os)operator(.)ident(stat)operator(()ident(relname)operator(\))operator(.)ident(st_mode) - keyword(try)operator(:) - ident(os)operator(.)ident(mkdir)operator(()string<delimiter(")content(%s/%s)delimiter(")> operator(%) operator(()ident(dstdir)operator(,)ident(relname)operator(\))operator(,) ident(mode)operator(\)) - keyword(except)operator(:) - keyword(print) string<delimiter(")content(can't mkdir %s/%s)delimiter(")> operator(%) operator(()ident(dstdir)operator(,)ident(relname)operator(\)) - keyword(raise) exception(SystemExit) - keyword(else)operator(:) - keyword(if) ident(relname)operator([)operator(:)integer(2)operator(]) operator(==) string<delimiter(")content(./)delimiter(")>operator(:) - ident(relname) operator(=) ident(relname)operator([)integer(2)operator(:)operator(]) - ident(os)operator(.)ident(symlink)operator(()string<delimiter(")content(%s/%s)delimiter(")> operator(%) operator(()ident(srcdir)operator(,) ident(relname)operator(\))operator(,) string<delimiter(")content(%s/%s)delimiter(")> operator(%) operator(()ident(dstdir)operator(,)ident(relname)operator(\))operator(\)) - -ident(os)operator(.)ident(chdir)operator(()ident(srcdir)operator(\)) -ident(os)operator(.)ident(path)operator(.)ident(walk)operator(()string<delimiter(")content(.)delimiter(")>operator(,)ident(wanted)operator(,)pre_constant(None)operator(\)) - -comment(# @@PLEAC@@_9.12) -comment(# @@INCOMPLETE@@) -comment(# @@INCOMPLETE@@) - - -comment(# ^^PLEAC^^_10.0) -comment(#-----------------------------) -comment(# DO NOT DO THIS...) -ident(greeted) operator(=) integer(0) -keyword(def) method(hello)operator(()operator(\))operator(:) - keyword(global) ident(greeted) - ident(greeted) operator(+=) integer(1) - keyword(print) string<delimiter(")content(hi there)delimiter(")> - -comment(#... as using a callable object to save state is cleaner) -comment(# class hello) -comment(# def __init__(self\):) -comment(# self.greeted = 0) -comment(# def __call__(self\):) -comment(# self.greeted += 1) -comment(# print "hi there") -comment(# hello = hello(\)) -comment(#-----------------------------) -ident(hello)operator(()operator(\)) comment(# call subroutine hello with no arguments/parameters) -comment(#-----------------------------) - -comment(# ^^PLEAC^^_10.1) -comment(#-----------------------------) -keyword(import) include(math) -comment(# Provided for demonstration purposes only. Use math.hypot(\) instead.) -keyword(def) method(hypotenuse)operator(()ident(side1)operator(,) ident(side2)operator(\))operator(:) - keyword(return) ident(math)operator(.)ident(sqrt)operator(()ident(side1)operator(**)integer(2) operator(+) ident(side2)operator(**)integer(2)operator(\)) - -ident(diag) operator(=) ident(hypotenuse)operator(()integer(3)operator(,) integer(4)operator(\)) comment(# diag is 5.0) -comment(#-----------------------------) -keyword(print) ident(hypotenuse)operator(()integer(3)operator(,) integer(4)operator(\)) comment(# prints 5.0) - -ident(a) operator(=) operator(()integer(3)operator(,) integer(4)operator(\)) -keyword(print) ident(hypotenuse)operator(()operator(*)ident(a)operator(\)) comment(# prints 5.0) -comment(#-----------------------------) -ident(both) operator(=) ident(men) operator(+) ident(women) -comment(#-----------------------------) -ident(nums) operator(=) operator([)float(1.4)operator(,) float(3.5)operator(,) float(6.7)operator(]) -comment(# Provided for demonstration purposes only. Use:) -comment(# ints = [int(num\) for num in nums] ) -keyword(def) method(int_all)operator(()ident(nums)operator(\))operator(:) - ident(retlist) operator(=) operator([)operator(]) comment(# make new list for return) - keyword(for) ident(n) keyword(in) ident(nums)operator(:) - ident(retlist)operator(.)ident(append)operator(()predefined(int)operator(()ident(n)operator(\))operator(\)) - keyword(return) ident(retlist) -ident(ints) operator(=) ident(int_all)operator(()ident(nums)operator(\)) comment(# nums unchanged) -comment(#-----------------------------) -ident(nums) operator(=) operator([)float(1.4)operator(,) float(3.5)operator(,) float(6.7)operator(]) - -keyword(def) method(trunc_em)operator(()ident(nums)operator(\))operator(:) - keyword(for) ident(i)operator(,)ident(elem) keyword(in) predefined(enumerate)operator(()ident(nums)operator(\))operator(:) - ident(nums)operator([)ident(i)operator(]) operator(=) predefined(int)operator(()ident(elem)operator(\)) -ident(trunc_em)operator(()ident(nums)operator(\)) comment(# nums now [1,3,6]) - -comment(#-----------------------------) -comment(# By convention, if a method (or function\) modifies an object) -comment(# in-place, it returns None rather than the modified object.) -comment(# None of Python's built-in functions modify in-place; methods) -comment(# such as list.sort(\) are somewhat more common.) -ident(mylist) operator(=) operator([)integer(3)operator(,)integer(2)operator(,)integer(1)operator(]) -ident(mylist) operator(=) ident(mylist)operator(.)ident(sort)operator(()operator(\)) comment(# incorrect - returns None) -ident(mylist) operator(=) predefined(sorted)operator(()ident(mylist)operator(\)) comment(# correct - returns sorted copy) -ident(mylist)operator(.)ident(sort)operator(()operator(\)) comment(# correct - sorts in-place) -comment(#-----------------------------) - -comment(# ^^PLEAC^^_10.2) -comment(#-----------------------------) -comment(# Using global variables is discouraged - by default variables) -comment(# are visible only at and below the scope at which they are declared.) -comment(# Global variables modified by a function or method must be declared ) -comment(# using the "global" keyword if they are modified) -keyword(def) method(somefunc)operator(()operator(\))operator(:) - ident(variable) operator(=) ident(something) comment(# variable is invisible outside of somefunc) -comment(#-----------------------------) -keyword(import) include(sys) -ident(name)operator(,) ident(age) operator(=) ident(sys)operator(.)ident(args)operator([)integer(1)operator(:)operator(]) comment(# assumes two and only two command line parameters) -ident(start) operator(=) ident(fetch_time)operator(()operator(\)) -comment(#-----------------------------) -ident(a)operator(,) ident(b) operator(=) ident(pair) -ident(c) operator(=) ident(fetch_time)operator(()operator(\)) - -keyword(def) method(check_x)operator(()ident(x)operator(\))operator(:) - ident(y) operator(=) string<delimiter(")content(whatever)delimiter(")> - ident(run_check)operator(()operator(\)) - keyword(if) ident(condition)operator(:) - keyword(print) string<delimiter(")content(got)delimiter(")>operator(,) ident(x) -comment(#-----------------------------) -keyword(def) method(save_list)operator(()operator(*)ident(args)operator(\))operator(:) - ident(Global_List)operator(.)ident(extend)operator(()ident(args)operator(\)) -comment(#-----------------------------) - -comment(# ^^PLEAC^^_10.3) -comment(#-----------------------------) -comment(## Python allows static nesting of scopes for reading but not writing,) -comment(## preferring to use objects. The closest equivalent to:) -comment(#{) -comment(# my $counter;) -comment(# sub next_counter { return ++$counter }) -comment(#}) -comment(## is:) -keyword(def) method(next_counter)operator(()ident(counter)operator(=)operator([)integer(0)operator(])operator(\))operator(:) comment(# default lists are created once only.) - ident(counter)operator([)integer(0)operator(]) operator(+=) integer(1) - keyword(return) ident(counter)operator([)integer(0)operator(]) - -comment(# As that's a little tricksy (and can't make more than one counter\),) -comment(# many Pythonistas would prefer either:) -keyword(def) method(make_counter)operator(()operator(\))operator(:) - ident(counter) operator(=) integer(0) - keyword(while) pre_constant(True)operator(:) - ident(counter) operator(+=) integer(1) - keyword(yield) ident(counter) -ident(next_counter) operator(=) ident(make_counter)operator(()operator(\))operator(.)ident(next) - -comment(# Or:) -keyword(class) class(Counter)operator(:) - keyword(def) method(__init__)operator(()pre_constant(self)operator(\))operator(:) - pre_constant(self)operator(.)ident(counter) operator(=) integer(0) - keyword(def) method(__call__)operator(()pre_constant(self)operator(\))operator(:) - pre_constant(self)operator(.)ident(counter) operator(+=) integer(1) - keyword(return) pre_constant(self)operator(.)ident(counter) -ident(next_counter) operator(=) ident(Counter)operator(()operator(\)) - -comment(#-----------------------------) -comment(## A close equivalent of) -comment(#BEGIN {) -comment(# my $counter = 42;) -comment(# sub next_counter { return ++$counter }) -comment(# sub prev_counter { return --$counter }) -comment(#}) -comment(## is to use a list (to save the counter\) and closured functions:) -keyword(def) method(make_counter)operator(()ident(start)operator(=)integer(0)operator(\))operator(:) - ident(counter) operator(=) operator([)ident(start)operator(]) - keyword(def) method(next_counter)operator(()operator(\))operator(:) - ident(counter)operator([)integer(0)operator(]) operator(+=) integer(1) - keyword(return) ident(counter)operator([)integer(0)operator(]) - keyword(def) method(prev_counter)operator(()operator(\))operator(:) - ident(counter)operator([)integer(0)operator(]) operator(-=) integer(1) - keyword(return) ident(counter)operator([)integer(0)operator(]) - keyword(return) ident(next_counter)operator(,) ident(prev_counter) -ident(next_counter)operator(,) ident(prev_counter) operator(=) ident(make_counter)operator(()operator(\)) - -comment(## A clearer way uses a class:) -keyword(class) class(Counter)operator(:) - keyword(def) method(__init__)operator(()pre_constant(self)operator(,) ident(start)operator(=)integer(0)operator(\))operator(:) - pre_constant(self)operator(.)ident(value) operator(=) ident(start) - keyword(def) method(next)operator(()pre_constant(self)operator(\))operator(:) - pre_constant(self)operator(.)ident(value) operator(+=) integer(1) - keyword(return) pre_constant(self)operator(.)ident(value) - keyword(def) method(prev)operator(()pre_constant(self)operator(\))operator(:) - pre_constant(self)operator(.)ident(value) operator(-=) integer(1) - keyword(return) pre_constant(self)operator(.)ident(value) - keyword(def) method(__int__)operator(()pre_constant(self)operator(\))operator(:) - keyword(return) pre_constant(self)operator(.)ident(value) - -ident(counter) operator(=) ident(Counter)operator(()integer(42)operator(\)) -ident(next_counter) operator(=) ident(counter)operator(.)ident(next) -ident(prev_counter) operator(=) ident(counter)operator(.)ident(prev) -comment(#-----------------------------) - -comment(# ^^PLEAC^^_10.4) -comment(## This sort of code inspection is liable to change as) -comment(## Python evolves. There may be cleaner ways to do this.) -comment(## This also may not work for code called from functions) -comment(## written in C.) -comment(#-----------------------------) -keyword(import) include(sys) -ident(this_function) operator(=) ident(sys)operator(.)ident(_getframe)operator(()integer(0)operator(\))operator(.)ident(f_code)operator(.)ident(co_name) -comment(#-----------------------------) -ident(i) operator(=) integer(0) comment(# how far up the call stack to look) -ident(module) operator(=) ident(sys)operator(.)ident(_getframe)operator(()ident(i)operator(\))operator(.)ident(f_globals)operator([)string<delimiter(")content(__name__)delimiter(")>operator(]) -ident(filename) operator(=) ident(sys)operator(.)ident(_getframe)operator(()ident(i)operator(\))operator(.)ident(f_code)operator(.)ident(co_filename) -ident(line) operator(=) ident(sys)operator(.)ident(_getframe)operator(()ident(i)operator(\))operator(.)ident(f_lineno) -ident(subr) operator(=) ident(sys)operator(.)ident(_getframe)operator(()ident(i)operator(\))operator(.)ident(f_code)operator(.)ident(co_name) -ident(has_args) operator(=) predefined(bool)operator(()ident(sys)operator(.)ident(_getframe)operator(()ident(i)operator(+)integer(1)operator(\))operator(.)ident(f_code)operator(.)ident(co_argcount)operator(\)) - -comment(# 'wantarray' is Perl specific) - -comment(#-----------------------------) -ident(me) operator(=) ident(whoami)operator(()operator(\)) -ident(him) operator(=) ident(whowasi)operator(()operator(\)) - -keyword(def) method(whoami)operator(()operator(\))operator(:) - ident(sys)operator(.)ident(_getframe)operator(()integer(1)operator(\))operator(.)ident(f_code)operator(.)ident(co_name) -keyword(def) method(whowasi)operator(()operator(\))operator(:) - ident(sys)operator(.)ident(_getframe)operator(()integer(2)operator(\))operator(.)ident(f_code)operator(.)ident(co_name) -comment(#-----------------------------) - -comment(# ^^PLEAC^^_10.5) -comment(#-----------------------------) -comment(# Every variable name is a reference to an object, thus nothing special) -comment(# needs to be done to pass a list or a dict as a parameter.) -ident(list_diff)operator(()ident(list1)operator(,) ident(list2)operator(\)) -comment(#-----------------------------) -comment(# Note: if one parameter to zip(\) is longer it will be truncated) -keyword(def) method(add_vecpair)operator(()ident(x)operator(,) ident(y)operator(\))operator(:) - keyword(return) operator([)ident(x1)operator(+)ident(y1) keyword(for) ident(x1)operator(,) ident(y1) keyword(in) predefined(zip)operator(()ident(x)operator(,) ident(y)operator(\))operator(]) - -ident(a) operator(=) operator([)integer(1)operator(,) integer(2)operator(]) -ident(b) operator(=) operator([)integer(5)operator(,) integer(8)operator(]) -keyword(print) string<delimiter(")content( )delimiter(")>operator(.)ident(join)operator(()operator([)predefined(str)operator(()ident(n)operator(\)) keyword(for) ident(n) keyword(in) ident(add_vecpair)operator(()ident(a)operator(,) ident(b)operator(\))operator(])operator(\)) -comment(#=> 6 10) -comment(#-----------------------------) -comment(# DO NOT DO THIS:) -keyword(assert) predefined(isinstance)operator(()ident(x)operator(,) predefined(type)operator(()operator([)operator(])operator(\))operator(\)) keyword(and) predefined(isinstance)operator(()ident(y)operator(,) predefined(type)operator(()operator([)operator(])operator(\))operator(\))operator(,) \ - string<delimiter(")content(usage: add_vecpair(list1, list2\))delimiter(")> -comment(#-----------------------------) - -comment(# ^^PLEAC^^_10.6) -comment(#-----------------------------) -comment(# perl return context is not something standard in python...) -comment(# but still you can achieve something alike if you really need it) -comment(# (but you must really need it badly since you should never use this!!\)) -comment(#) -comment(# see http://aspn.activestate.com/ASPN/Cookbook/Python/Recipe/284742 for more) -comment(#) -comment(# NB: it has been tested under Python 2.3.x and no guarantees can be given) -comment(# that it works under any future Python version.) -keyword(import) include(inspect)operator(,)include(dis) - -keyword(def) method(expecting)operator(()operator(\))operator(:) - docstring<delimiter(""")content(Return how many values the caller is expecting)delimiter(""")> - ident(f) operator(=) ident(inspect)operator(.)ident(currentframe)operator(()operator(\))operator(.)ident(f_back)operator(.)ident(f_back) - ident(bytecode) operator(=) ident(f)operator(.)ident(f_code)operator(.)ident(co_code) - ident(i) operator(=) ident(f)operator(.)ident(f_lasti) - ident(instruction) operator(=) predefined(ord)operator(()ident(bytecode)operator([)ident(i)operator(+)integer(3)operator(])operator(\)) - keyword(if) ident(instruction) operator(==) ident(dis)operator(.)ident(opmap)operator([)string<delimiter(')content(UNPACK_SEQUENCE)delimiter(')>operator(])operator(:) - ident(howmany) operator(=) predefined(ord)operator(()ident(bytecode)operator([)ident(i)operator(+)integer(4)operator(])operator(\)) - keyword(return) ident(howmany) - keyword(elif) ident(instruction) operator(==) ident(dis)operator(.)ident(opmap)operator([)string<delimiter(')content(POP_TOP)delimiter(')>operator(])operator(:) - keyword(return) integer(0) - keyword(return) integer(1) - -keyword(def) method(cleverfunc)operator(()operator(\))operator(:) - ident(howmany) operator(=) ident(expecting)operator(()operator(\)) - keyword(if) ident(howmany) operator(==) integer(0)operator(:) - keyword(print) string<delimiter(")content(return value discarded)delimiter(")> - keyword(if) ident(howmany) operator(==) integer(2)operator(:) - keyword(return) integer(1)operator(,)integer(2) - keyword(elif) ident(howmany) operator(==) integer(3)operator(:) - keyword(return) integer(1)operator(,)integer(2)operator(,)integer(3) - keyword(return) integer(1) - -ident(cleverfunc)operator(()operator(\)) -ident(x) operator(=) ident(cleverfunc)operator(()operator(\)) -keyword(print) ident(x) -ident(x)operator(,)ident(y) operator(=) ident(cleverfunc)operator(()operator(\)) -keyword(print) ident(x)operator(,)ident(y) -ident(x)operator(,)ident(y)operator(,)ident(z) operator(=) ident(cleverfunc)operator(()operator(\)) -keyword(print) ident(x)operator(,)ident(y)operator(,)ident(z) - -comment(# ^^PLEAC^^_10.7) -comment(#-----------------------------) -ident(thefunc)operator(()ident(increment)operator(=) string<delimiter(")content(20s)delimiter(")>operator(,) ident(start)operator(=)string<delimiter(")content(+5m)delimiter(")>operator(,) ident(finish)operator(=)string<delimiter(")content(+30m)delimiter(")>operator(\)) -ident(thefunc)operator(()ident(start)operator(=) string<delimiter(")content(+5m)delimiter(")>operator(,)ident(finish)operator(=)string<delimiter(")content(+30m)delimiter(")>operator(\)) -ident(thefunc)operator(()ident(finish)operator(=) string<delimiter(")content(+30m)delimiter(")>operator(\)) -ident(thefunc)operator(()ident(start)operator(=)string<delimiter(")content(+5m)delimiter(")>operator(,) ident(increment)operator(=)string<delimiter(")content(15s)delimiter(")>operator(\)) -comment(#-----------------------------) -keyword(def) method(thefunc)operator(()ident(increment)operator(=)string<delimiter(')content(10s)delimiter(')>operator(,) - ident(finish)operator(=)string<delimiter(')content(0)delimiter(')>operator(,) - ident(start)operator(=)string<delimiter(')content(0)delimiter(')>operator(\))operator(:) - keyword(if) ident(increment)operator(.)ident(endswith)operator(()string<delimiter(")content(m)delimiter(")>operator(\))operator(:) - keyword(pass) -comment(#-----------------------------) - -comment(# ^^PLEAC^^_10.8) -comment(#-----------------------------) -ident(a)operator(,) ident(_)operator(,) ident(c) operator(=) ident(func)operator(()operator(\)) comment(# Use _ as a placeholder...) -ident(a)operator(,) ident(ignore)operator(,) ident(c) operator(=) ident(func)operator(()operator(\)) comment(# ...or assign to an otherwise unused variable) -comment(#-----------------------------) - -comment(# ^^PLEAC^^_10.9) -comment(#-----------------------------) -keyword(def) method(somefunc)operator(()operator(\))operator(:) - ident(mylist) operator(=) operator([)operator(]) - ident(mydict) operator(=) operator({)operator(}) - comment(# ...) - keyword(return) ident(mylist)operator(,) ident(mydict) - -ident(mylist)operator(,) ident(mydict) operator(=) ident(somefunc)operator(()operator(\)) -comment(#-----------------------------) -keyword(def) method(fn)operator(()operator(\))operator(:) - keyword(return) ident(a)operator(,) ident(b)operator(,) ident(c) - -comment(#-----------------------------) -ident(h0)operator(,) ident(h1)operator(,) ident(h2) operator(=) ident(fn)operator(()operator(\)) -ident(tuple_of_dicts) operator(=) ident(fn)operator(()operator(\)) comment(# eg: tuple_of_dicts[2]["keystring"]) -ident(r0)operator(,) ident(r1)operator(,) ident(r2) operator(=) ident(fn)operator(()operator(\)) comment(# eg: r2["keystring"]) - -comment(#-----------------------------) - -comment(# ^^PLEAC^^_10.10) -comment(#-----------------------------) -comment(# Note: Exceptions are almost always preferred to error values) -keyword(return) -comment(#-----------------------------) -keyword(def) method(empty_retval)operator(()operator(\))operator(:) - keyword(return) pre_constant(None) - -keyword(def) method(empty_retval)operator(()operator(\))operator(:) - keyword(return) comment(# identical to return None) - -keyword(def) method(empty_retval)operator(()operator(\))operator(:) - keyword(pass) comment(# None returned by default (empty func needs pass\)) -comment(#-----------------------------) -ident(a) operator(=) ident(yourfunc)operator(()operator(\)) -keyword(if) ident(a)operator(:) - keyword(pass) -comment(#-----------------------------) -ident(a) operator(=) ident(sfunc)operator(()operator(\)) -keyword(if) keyword(not) ident(a)operator(:) - keyword(raise) exception(AssertionError)operator(()string<delimiter(")content(sfunc failed)delimiter(")>operator(\)) - -keyword(assert) ident(sfunc)operator(()operator(\))operator(,) string<delimiter(")content(sfunc failed)delimiter(")> -comment(#-----------------------------) - -comment(# ^^PLEAC^^_10.11) -comment(# Prototypes are inapplicable to Python as Python disallows calling) -comment(# functions without using brackets, and user functions are able to) -comment(# mimic built-in functions with no special actions required as they) -comment(# only flatten lists (and convert dicts to named arguments\) if) -comment(# explicitly told to do so. Python functions use named parameters) -comment(# rather than shifting arguments:) - -keyword(def) method(myfunc)operator(()ident(a)operator(,) ident(b)operator(,) ident(c)operator(=)integer(4)operator(\))operator(:) - keyword(print) ident(a)operator(,) ident(b)operator(,) ident(c) - -ident(mylist) operator(=) operator([)integer(1)operator(,)integer(2)operator(]) - -ident(mydict1) operator(=) operator({)string<delimiter(")content(b)delimiter(")>operator(:) integer(2)operator(,) string<delimiter(")content(c)delimiter(")>operator(:) integer(3)operator(}) -ident(mydict2) operator(=) operator({)string<delimiter(")content(b)delimiter(")>operator(:) integer(2)operator(}) - -ident(myfunc)operator(()integer(1)operator(,)integer(2)operator(,)integer(3)operator(\)) -comment(#=> 1 2 3) - -ident(myfunc)operator(()integer(1)operator(,)integer(2)operator(\)) -comment(#=> 1 2 4) - -ident(myfunc)operator(()operator(*)ident(mylist)operator(\)) -comment(#=> 1 2 4) - -ident(myfunc)operator(()integer(5)operator(,) operator(*)ident(mylist)operator(\)) -comment(#=> 5, 1, 2) - -ident(myfunc)operator(()integer(5)operator(,) operator(**)ident(mydict1)operator(\)) -comment(#=> 5, 2, 3) - -ident(myfunc)operator(()integer(5)operator(,) operator(**)ident(mydict2)operator(\)) -comment(#=> 5, 2, 4) - -ident(myfunc)operator(()ident(c)operator(=)integer(3)operator(,) ident(b)operator(=)integer(2)operator(,) ident(a)operator(=)integer(1)operator(\)) -comment(#=> 1, 2, 3) - -ident(myfunc)operator(()ident(b)operator(=)integer(2)operator(,) ident(a)operator(=)integer(1)operator(\)) -comment(#=> 1, 2, 4) - -ident(myfunc)operator(()ident(mylist)operator(,) ident(mydict1)operator(\)) -comment(#=> [1, 2] {'c': 3, 'b': 2} 4) - -comment(# For demonstration purposes only - don't do this) -keyword(def) method(mypush)operator(()ident(mylist)operator(,) operator(*)ident(vals)operator(\))operator(:) - ident(mylist)operator(.)ident(extend)operator(()ident(vals)operator(\)) - -ident(mylist) operator(=) operator([)operator(]) -ident(mypush)operator(()ident(mylist)operator(,) integer(1)operator(,) integer(2)operator(,) integer(3)operator(,) integer(4)operator(,) integer(5)operator(\)) -keyword(print) ident(mylist) -comment(#=> [1, 2, 3, 4, 5]) - -comment(# ^^PLEAC^^_10.12) -comment(#-----------------------------) -keyword(raise) exception(ValueError)operator(()string<delimiter(")content(some message)delimiter(")>operator(\)) comment(# specific exception class) -keyword(raise) exception(Exception)operator(()string<delimiter(")content(use me rarely)delimiter(")>operator(\)) comment(# general exception) -keyword(raise) string<delimiter(")content(don't use me)delimiter(")> comment(# string exception (deprecated\)) -comment(#-----------------------------) -comment(# Note that bare excepts are considered bad style. Normally you should) -comment(# trap specific exceptions. For instance these bare excepts will) -comment(# catch KeyboardInterrupt, SystemExit, and MemoryError as well as) -comment(# more common errors. In addition they force you to import sys to) -comment(# get the error message.) -keyword(import) include(warnings)operator(,) include(sys) -keyword(try)operator(:) - ident(func)operator(()operator(\)) -keyword(except)operator(:) - ident(warnings)operator(.)ident(warn)operator(()string<delimiter(")content(func raised an exception: )delimiter(")> operator(+) predefined(str)operator(()ident(sys)operator(.)ident(exc_info)operator(()operator(\))operator([)integer(1)operator(])operator(\))operator(\)) -comment(#-----------------------------) -keyword(try)operator(:) - ident(func)operator(()operator(\)) -keyword(except)operator(:) - ident(warnings)operator(.)ident(warn)operator(()string<delimiter(")content(func blew up: )delimiter(")> operator(+) predefined(str)operator(()ident(sys)operator(.)ident(exc_info)operator(()operator(\))operator([)integer(1)operator(])operator(\))operator(\)) -comment(#-----------------------------) -keyword(class) class(MoonPhaseError)operator(()exception(Exception)operator(\))operator(:) - keyword(def) method(__init__)operator(()pre_constant(self)operator(,) ident(phase)operator(\))operator(:) - pre_constant(self)operator(.)ident(phase) operator(=) ident(phase) -keyword(class) class(FullMoonError)operator(()ident(MoonPhaseError)operator(\))operator(:) - keyword(def) method(__init__)operator(()pre_constant(self)operator(\))operator(:) - ident(MoonPhaseError)operator(.)ident(__init__)operator(()string<delimiter(")content(full moon)delimiter(")>operator(\)) - -keyword(def) method(func)operator(()operator(\))operator(:) - keyword(raise) ident(FullMoonError)operator(()operator(\)) - -comment(# Ignore only FullMoonError exceptions) -keyword(try)operator(:) - ident(func)operator(()operator(\)) -keyword(except) ident(FullMoonError)operator(:) - keyword(pass) -comment(#-----------------------------) -comment(# Ignore only MoonPhaseError for a full moon) -keyword(try)operator(:) - ident(func)operator(()operator(\)) -keyword(except) ident(MoonPhaseError)operator(,) ident(err)operator(:) - keyword(if) ident(err)operator(.)ident(phase) operator(!=) string<delimiter(")content(full moon)delimiter(")>operator(:) - keyword(raise) -comment(#-----------------------------) - -comment(# ^^PLEAC^^_10.13) -comment(# There is no direct equivalent to 'local' in Python, and) -comment(# it's impossible to write your own. But then again, even in) -comment(# Perl it's considered poor style.) - -comment(# DON'T DO THIS (You probably shouldn't use global variables anyway\):) -keyword(class) class(Local)operator(()predefined(object)operator(\))operator(:) - keyword(def) method(__init__)operator(()pre_constant(self)operator(,) ident(globalname)operator(,) ident(val)operator(\))operator(:) - pre_constant(self)operator(.)ident(globalname) operator(=) ident(globalname) - pre_constant(self)operator(.)ident(globalval) operator(=) predefined(globals)operator(()operator(\))operator([)ident(globalname)operator(]) - predefined(globals)operator(()operator(\))operator([)ident(globalname)operator(]) operator(=) ident(val) - - keyword(def) method(__del__)operator(()pre_constant(self)operator(\))operator(:) - predefined(globals)operator(()operator(\))operator([)pre_constant(self)operator(.)ident(globalname)operator(]) operator(=) pre_constant(self)operator(.)ident(globalval) - -ident(foo) operator(=) integer(4) - -keyword(def) method(blah)operator(()operator(\))operator(:) - keyword(print) ident(foo) - -keyword(def) method(blech)operator(()operator(\))operator(:) - ident(temp) operator(=) ident(Local)operator(()string<delimiter(")content(foo)delimiter(")>operator(,) integer(6)operator(\)) - ident(blah)operator(()operator(\)) - -ident(blah)operator(()operator(\)) -ident(blech)operator(()operator(\)) -ident(blah)operator(()operator(\)) - -comment(#-----------------------------) - -comment(# ^^PLEAC^^_10.14) -comment(#-----------------------------) -ident(grow) operator(=) ident(expand) -ident(grow)operator(()operator(\)) comment(# calls expand(\)) - -comment(#-----------------------------) -ident(one)operator(.)ident(var) operator(=) ident(two)operator(.)ident(table) comment(# make one.var the same as two.table) -ident(one)operator(.)ident(big) operator(=) ident(two)operator(.)ident(small) comment(# make one.big the same as two.small) -comment(#-----------------------------) -ident(fred) operator(=) ident(barney) comment(# alias fred to barney) -comment(#-----------------------------) -ident(s) operator(=) ident(red)operator(()string<delimiter(")content(careful here)delimiter(")>operator(\)) -keyword(print) ident(s) -comment(#> <FONT COLOR='red'>careful here</FONT>) -comment(#-----------------------------) -comment(# Note: the 'text' should be HTML escaped if it can contain) -comment(# any of the characters '<', '>' or '&') -keyword(def) method(red)operator(()ident(text)operator(\))operator(:) - keyword(return) string<delimiter(")content(<FONT COLOR='red'>)delimiter(")> operator(+) ident(text) operator(+) string<delimiter(")content(</FONT>)delimiter(")> -comment(#-----------------------------) -keyword(def) method(color_font)operator(()ident(color)operator(,) ident(text)operator(\))operator(:) - keyword(return) string<delimiter(")content(<FONT COLOR='%s'>%s</FONT>)delimiter(")> operator(%) operator(()ident(color)operator(,) ident(text)operator(\)) - -keyword(def) method(red)operator(()ident(text)operator(\))operator(:) keyword(return) ident(color_font)operator(()string<delimiter(")content(red)delimiter(")>operator(,) ident(text)operator(\)) -keyword(def) method(green)operator(()ident(text)operator(\))operator(:) keyword(return) ident(color_font)operator(()string<delimiter(")content(green)delimiter(")>operator(,) ident(text)operator(\)) -keyword(def) method(blue)operator(()ident(text)operator(\))operator(:) keyword(return) ident(color_font)operator(()string<delimiter(")content(blue)delimiter(")>operator(,) ident(text)operator(\)) -keyword(def) method(purple)operator(()ident(text)operator(\))operator(:) keyword(return) ident(color_font)operator(()string<delimiter(")content(purple)delimiter(")>operator(,) ident(text)operator(\)) -comment(# etc) -comment(#-----------------------------) -comment(# This is done in Python by making an object, instead of) -comment(# saving state in a local anonymous context.) -keyword(class) class(ColorFont)operator(:) - keyword(def) method(__init__)operator(()pre_constant(self)operator(,) ident(color)operator(\))operator(:) - pre_constant(self)operator(.)ident(color) operator(=) ident(color) - keyword(def) method(__call__)operator(()pre_constant(self)operator(,) ident(text)operator(\))operator(:) - keyword(return) string<delimiter(")content(<FONT COLOR='%s'>%s</FONT>)delimiter(")> operator(%) operator(()pre_constant(self)operator(.)ident(color)operator(,) ident(text)operator(\)) - -ident(colors) operator(=) string<delimiter(")content(red blue green yellow orange purple violet)delimiter(")>operator(.)ident(split)operator(()string<delimiter(")content( )delimiter(")>operator(\)) -keyword(for) ident(name) keyword(in) ident(colors)operator(:) - predefined(globals)operator(()operator(\))operator([)ident(name)operator(]) operator(=) ident(ColorFont)operator(()ident(name)operator(\)) -comment(#-----------------------------) -comment(# If you really don't want to make a new class, you can) -comment(# fake it somewhat by passing in default args.) -ident(colors) operator(=) string<delimiter(")content(red blue green yellow orange purple violet)delimiter(")>operator(.)ident(split)operator(()string<delimiter(")content( )delimiter(")>operator(\)) -keyword(for) ident(name) keyword(in) ident(colors)operator(:) - keyword(def) method(temp)operator(()ident(text)operator(,) ident(color) operator(=) ident(name)operator(\))operator(:) - keyword(return) string<delimiter(")content(<FONT COLOR='%s'>%s</FONT>)delimiter(")> operator(%) operator(()ident(color)operator(,) ident(text)operator(\)) - predefined(globals)operator(()operator(\))operator([)ident(name)operator(]) operator(=) ident(temp) - -comment(#-----------------------------) - -comment(# ^^PLEAC^^_10.15) - -comment(# Python has the ability to derive from ModuleType and add) -comment(# new __getattr__ and __setattr__ methods. I don't know the) -comment(# expected way to use them to emulate Perl's AUTOLOAD. Instead,) -comment(# here's how something similar would be done in Python. This) -comment(# uses the ColorFont defined above.) - -comment(#-----------------------------) -keyword(class) class(AnyColor)operator(:) - keyword(def) method(__getattr__)operator(()pre_constant(self)operator(,) ident(name)operator(\))operator(:) - keyword(return) ident(ColorFont)operator(()ident(name)operator(\)) - -ident(colors) operator(=) ident(AnyColor)operator(()operator(\)) - -keyword(print) ident(colors)operator(.)ident(chartreuse)operator(()string<delimiter(")content(stuff)delimiter(")>operator(\)) - -comment(#-----------------------------) -comment(## Skipping this translation because 'local' is too Perl) -comment(## specific, and there isn't enough context to figure out) -comment(## what this is supposed to do.) -comment(#{) -comment(# local *yellow = \\&violet;) -comment(# local (*red, *green\) = (\\&green, \\&red\);) -comment(# print_stuff(\);) -comment(#}) -comment(#-----------------------------) - -comment(# ^^PLEAC^^_10.16) -comment(#-----------------------------) -keyword(def) method(outer)operator(()ident(arg1)operator(\))operator(:) - ident(x) operator(=) ident(arg1) operator(+) integer(35) - keyword(def) method(inner)operator(()operator(\))operator(:) - keyword(return) ident(x) operator(*) integer(19) - keyword(return) ident(x) operator(+) ident(inner)operator(()operator(\)) -comment(#-----------------------------) - -comment(# ^^PLEAC^^_10.17) -comment(#-----------------------------) -keyword(import) include(mailbox)operator(,) include(sys) -ident(mbox) operator(=) ident(mailbox)operator(.)ident(PortableUnixMailbox)operator(()ident(sys)operator(.)ident(stdin)operator(\)) - -keyword(def) method(extract_data)operator(()ident(msg)operator(,) ident(idx)operator(\))operator(:) - ident(subject) operator(=) ident(msg)operator(.)ident(getheader)operator(()string<delimiter(")content(Subject)delimiter(")>operator(,) string<delimiter(")delimiter(")>operator(\))operator(.)ident(strip)operator(()operator(\)) - keyword(if) ident(subject)operator([)operator(:)integer(3)operator(])operator(.)ident(lower)operator(()operator(\)) operator(==) string<delimiter(")content(re:)delimiter(")>operator(:) - ident(subject) operator(=) ident(subject)operator([)integer(3)operator(:)operator(])operator(.)ident(lstrip)operator(()operator(\)) - ident(text) operator(=) ident(msg)operator(.)ident(fp)operator(.)ident(read)operator(()operator(\)) - keyword(return) ident(subject)operator(,) ident(idx)operator(,) ident(msg)operator(,) ident(text) -ident(messages) operator(=) operator([)ident(extract_data)operator(()ident(idx)operator(,) ident(msg)operator(\)) keyword(for) ident(idx)operator(,) ident(msg) keyword(in) predefined(enumerate)operator(()ident(mbox)operator(\))operator(]) - -comment(#-----------------------------) -comment(# Sorts by subject then by original position in the list) -keyword(for) ident(subject)operator(,) ident(pos)operator(,) ident(msg)operator(,) ident(text) keyword(in) predefined(sorted)operator(()ident(messages)operator(\))operator(:) - keyword(print) string<delimiter(")content(%s)char(\\n)content(%s)delimiter(")>operator(%)operator(()ident(msg)operator(,) ident(text)operator(\)) - -comment(#-----------------------------) -comment(# Sorts by subject then date then original position) -keyword(def) method(subject_date_position)operator(()ident(elem)operator(\))operator(:) - keyword(return) operator(()ident(elem)operator([)integer(0)operator(])operator(,) ident(elem)operator([)integer(2)operator(])operator(.)ident(getdate)operator(()string<delimiter(")content(Date)delimiter(")>operator(\))operator(,) ident(elem)operator([)integer(1)operator(])operator(\)) -ident(messages)operator(.)ident(sort)operator(()ident(key)operator(=)ident(subject_date_position)operator(\)) - -comment(# Pre 2.4:) -ident(messages) operator(=) predefined(sorted)operator(()ident(messages)operator(,) ident(key)operator(=)ident(subject_date_position)operator(\)) -comment(#-----------------------------) - -comment(# @@PLEAC@@_11.0) -comment(#Introduction.) -comment(# In Python, all names are references.) -comment(# All objects are inherently anonymous, they don't know what names refer to them.) -keyword(print) ident(ref) comment(# prints the value that the name ref refers to. ) -ident(ref) operator(=) integer(3) comment(# assigns the name ref to the value 3.) -comment(#-----------------------------) -ident(aref) operator(=) ident(mylist) -comment(#-----------------------------) -ident(aref) operator(=) operator([)integer(3)operator(,) integer(4)operator(,) integer(5)operator(]) comment(# aref is a name for this list) -ident(href) operator(=) operator({)string<delimiter(")content(How)delimiter(")>operator(:) string<delimiter(")content(Now)delimiter(")>operator(,) string<delimiter(")content(Brown)delimiter(")>operator(:) string<delimiter(")content(Cow)delimiter(")>operator(}) comment(# href is a name for this dictionary) -comment(#-----------------------------) -comment(# Python doesn't have autovivification as (for simple types\) there is no difference between a name and a reference.) -comment(# If we try the equivalent of the Perl code we get the list, not a reference to the list.) -comment(#-----------------------------) -comment(# To handle multidimensional arrays, you should use an extension to Python,) -comment(# such as numarray (http://www.stsci.edu/resources/software_hardware/numarray\)) -comment(#-----------------------------) -comment(# In Python, assignment doesn't return anything. ) -comment(#-----------------------------) -ident(Nat) operator(=) operator({) string<delimiter(")content(Name)delimiter(")>operator(:) string<delimiter(")content(Leonhard Euler)delimiter(")>operator(,) - string<delimiter(")content(Address)delimiter(")>operator(:) string<delimiter(")content(1729 Ramanujan Lane)char(\\n)content(Mathworld, PI 31416)delimiter(")>operator(,) - string<delimiter(")content(Birthday)delimiter(")>operator(:) hex(0x5bb5580) -operator(}) -comment(#-----------------------------) - -comment(# @@PLEAC@@_11.1) -ident(aref) operator(=) ident(mylist) -ident(anon_list) operator(=) operator([)integer(1)operator(,) integer(3)operator(,) integer(5)operator(,) integer(7)operator(,) integer(9)operator(]) -ident(anon_copy) operator(=) ident(anon_list) -ident(implicit_creation) operator(=) operator([)integer(2)operator(,) integer(4)operator(,) integer(6)operator(,) integer(8)operator(,) integer(10)operator(]) -comment(#-----------------------------) -ident(anon_list)operator(.)ident(append)operator(()integer(11)operator(\)) -comment(#-----------------------------) -ident(two) operator(=) ident(implicit_creation)operator([)integer(0)operator(]) -comment(#-----------------------------) -comment(# To get the last index of a list, you can use len(\) ) -comment(# [or list.__len__(\) - but don't] directly) -ident(last_idx) operator(=) predefined(len)operator(()ident(aref)operator(\)) operator(-) integer(1) - -comment(# Normally, though, you'd use an index of -1 for the last) -comment(# element, -2 for the second last, etc.) -keyword(print) ident(implicit_creation)operator([)operator(-)integer(1)operator(]) -comment(#=> 10) - -ident(num_items) operator(=) predefined(len)operator(()ident(aref)operator(\)) -comment(#-----------------------------) -ident(last_idx) operator(=) ident(aref)operator(.)ident(__len__)operator(()operator(\)) operator(-) integer(1) -ident(num_items) operator(=) ident(aref)operator(.)ident(__len__)operator(()operator(\)) -comment(#-----------------------------) -keyword(if) keyword(not) predefined(isinstance)operator(()ident(someVar)operator(,) predefined(type)operator(()operator([)operator(])operator(\))operator(\))operator(:) - keyword(print) string<delimiter(")content(Expected a list)delimiter(")> -comment(#-----------------------------) -keyword(print) ident(list_ref) -comment(#-----------------------------) -comment(# sort is in place.) -ident(list_ref)operator(.)ident(sort)operator(()operator(\)) -comment(#-----------------------------) -ident(list_ref)operator(.)ident(append)operator(()ident(item)operator(\)) -comment(#-----------------------------) -keyword(def) method(list_ref)operator(()operator(\))operator(:) - keyword(return) operator([)operator(]) - -ident(aref1) operator(=) ident(list_ref)operator(()operator(\)) -ident(aref2) operator(=) ident(list_ref)operator(()operator(\)) -comment(# aref1 and aref2 point to different lists.) -comment(#-----------------------------) -ident(list_ref)operator([)ident(N)operator(]) comment(# refers to the Nth item in the list_ref list.) -comment(#-----------------------------) -comment(# The following two statements are equivalent and return up to 3 elements) -comment(# at indices 3, 4, and 5 (if they exist\).) -ident(pie)operator([)integer(3)operator(:)integer(6)operator(]) -ident(pie)operator([)integer(3)operator(:)integer(6)operator(:)integer(1)operator(]) -comment(#-----------------------------) -comment(# This will insert 3 elements, overwriting elements at indices 3,4, or 5 - if they exist.) -ident(pie)operator([)integer(3)operator(:)integer(6)operator(]) operator(=) operator([)string<delimiter(")content(blackberry)delimiter(")>operator(,) string<delimiter(")content(blueberry)delimiter(")>operator(,) string<delimiter(")content(pumpkin)delimiter(")>operator(]) -comment(#-----------------------------) -keyword(for) ident(item) keyword(in) ident(pie)operator(:) - keyword(print) ident(item) - -comment(# DON'T DO THIS (this type of indexing should be done with enumerate\)) -comment(# xrange does not create a list 0..len(pie\) - 1, it creates an object ) -comment(# that returns one index at a time.) -keyword(for) ident(idx) keyword(in) predefined(xrange)operator(()predefined(len)operator(()ident(pie)operator(\))operator(\))operator(:) - keyword(print) ident(pie)operator([)ident(idx)operator(]) - -comment(# @@PLEAC@@_11.2) -comment(# Making Hashes of Arrays) - -predefined(hash)operator([)string<delimiter(")content(KEYNAME)delimiter(")>operator(])operator(.)ident(append)operator(()string<delimiter(")content(new value)delimiter(")>operator(\)) - -keyword(for) ident(mystr) keyword(in) predefined(hash)operator(.)ident(keys)operator(()operator(\))operator(:) - keyword(print) string<delimiter(")content(%s: %s)delimiter(")> operator(%) operator(()ident(mystr)operator(,) predefined(hash)operator([)ident(mystr)operator(])operator(\)) - -predefined(hash)operator([)string<delimiter(")content(a key)delimiter(")>operator(]) operator(=) operator([)integer(3)operator(,) integer(4)operator(,) integer(5)operator(]) - -ident(values) operator(=) predefined(hash)operator([)string<delimiter(")content(a key)delimiter(")>operator(]) - -predefined(hash)operator([)string<delimiter(")content(a key)delimiter(")>operator(])operator(.)ident(append)operator(()ident(value)operator(\)) - -comment(# autovivification also does not work in python.) -ident(residents) operator(=) ident(phone2name)operator([)ident(number)operator(]) -comment(# do this instead) -ident(residents) operator(=) ident(phone2name)operator(.)ident(get)operator(()ident(number)operator(,) operator([)operator(])operator(\)) - - -comment(# @@PLEAC@@_11.3) -comment(# Taking References to Hashes) - -ident(href) operator(=) predefined(hash) -ident(anon_hash) operator(=) operator({) string<delimiter(")content(key1)delimiter(")>operator(:)string<delimiter(")content(value1)delimiter(")>operator(,) string<delimiter(")content(key2)delimiter(")> operator(:) string<delimiter(")content(value2 ...)delimiter(")> operator(}) -ident(anon_hash_copy) operator(=) ident(anon_hash)operator(.)ident(copy)operator(()operator(\)) - -ident(hash) operator(=) ident(href) -ident(value) operator(=) ident(href)operator([)ident(key)operator(]) -ident(slice) operator(=) operator([)ident(href)operator([)ident(k)operator(]) keyword(for) ident(k) keyword(in) operator(()ident(key1)operator(,) ident(key2)operator(,) ident(key3)operator(\))operator(]) -ident(keys) operator(=) predefined(hash)operator(.)ident(keys)operator(()operator(\)) - -keyword(import) include(types) -keyword(if) predefined(type)operator(()ident(someref)operator(\)) operator(!=) ident(types)operator(.)ident(DictType)operator(:) - keyword(raise) string<delimiter(")content(Expected a dictionary, not %s)delimiter(")> operator(%) predefined(type)operator(()ident(someref)operator(\)) -keyword(if) predefined(isinstance)operator(()ident(someref)operator(,)predefined(dict)operator(\))operator(:) - keyword(raise) string<delimiter(")content(Expected a dictionary, not %s)delimiter(")> operator(%) predefined(type)operator(()ident(someref)operator(\)) - -keyword(for) ident(href) keyword(in) operator(() ident(ENV)operator(,) ident(INC) operator(\))operator(:) - keyword(for) ident(key) keyword(in) ident(href)operator(.)ident(keys)operator(()operator(\))operator(:) - keyword(print) string<delimiter(")content(%s => %s)delimiter(")> operator(%) operator(()ident(key)operator(,) ident(href)operator([)ident(key)operator(])operator(\)) - -ident(values) operator(=) operator([)ident(hash_ref)operator([)ident(k)operator(]) keyword(for) ident(k) keyword(in) operator(()ident(key1)operator(,) ident(key2)operator(,) ident(key3)operator(\))operator(]) - -keyword(for) ident(key) keyword(in) operator(()string<delimiter(")content(key1)delimiter(")>operator(,) string<delimiter(")content(key2)delimiter(")>operator(,) string<delimiter(")content(key3)delimiter(")>operator(\))operator(:) - ident(hash_ref)operator([)ident(k)operator(]) operator(+=) integer(7) comment(# not like in perl but the same result.) -comment(#-----------------------------) - -comment(# @@PLEAC@@_11.4) -comment(#-----------------------------) -ident(cref) operator(=) ident(func) -ident(cref) operator(=) keyword(lambda) ident(a)operator(,) ident(b)operator(:) operator(...) -comment(#-----------------------------) -ident(returned) operator(=) ident(cref)operator(()ident(arguments)operator(\)) -comment(#-----------------------------) -ident(funcname) operator(=) string<delimiter(")content(thefunc)delimiter(")> -predefined(locals)operator(()operator(\))operator([)ident(funcname)operator(])operator(()operator(\))operator(;) -comment(#-----------------------------) -ident(commands) operator(=) operator({) - string<delimiter(')content(happy)delimiter(')>operator(:) ident(joy)operator(,) - string<delimiter(')content(sad)delimiter(')>operator(:) ident(sullen)operator(,) - string<delimiter(')content(done)delimiter(')>operator(:) operator(()keyword(lambda) operator(:) ident(sys)operator(.)ident(exit)operator(()operator(\))operator(\))operator(,) comment(# In this case "done: sys.exit" would suffice) - string<delimiter(')content(mad)delimiter(')>operator(:) ident(angry)operator(,) - operator(}) - -keyword(print) string<delimiter(")content(How are you?)delimiter(")>operator(,) -ident(cmd) operator(=) predefined(raw_input)operator(()operator(\)) -keyword(if) ident(cmd) keyword(in) ident(commands)operator(:) - ident(commands)operator([)ident(cmd)operator(])operator(()operator(\)) -keyword(else)operator(:) - keyword(print) string<delimiter(")content(No such command: %s)delimiter(")> operator(%) ident(cmd) -comment(#-----------------------------) -keyword(def) method(counter_maker)operator(()operator(\))operator(:) - ident(start) operator(=) operator([)integer(0)operator(]) - keyword(def) method(counter_function)operator(()operator(\))operator(:) - comment(# start refers to the variable defined in counter_maker, but) - comment(# we can't reassign or increment variables in parent scopes.) - comment(# By using a one-element list we can modify the list without) - comment(# reassigning the variable. This way of using a list is very) - comment(# like a reference.) - ident(start)operator([)integer(0)operator(]) operator(+=) integer(1) - keyword(return) ident(start)operator([)integer(0)operator(])operator(-)integer(1) - keyword(return) ident(counter_function) - -ident(counter) operator(=) ident(counter_maker)operator(()operator(\)) -keyword(for) ident(i) keyword(in) predefined(range)operator(()integer(5)operator(\))operator(:) - keyword(print) ident(counter)operator(()operator(\)) -comment(#-----------------------------) -ident(counter1) operator(=) ident(counter_maker)operator(()operator(\)) -ident(counter2) operator(=) ident(counter_maker)operator(()operator(\)) - -keyword(for) ident(i) keyword(in) predefined(range)operator(()integer(5)operator(\))operator(:) - keyword(print) ident(counter1)operator(()operator(\)) -keyword(print) ident(counter1)operator(()operator(\))operator(,) ident(counter2)operator(()operator(\)) -comment(#=> 0) -comment(#=> 1) -comment(#=> 2) -comment(#=> 3) -comment(#=> 4) -comment(#=> 5 0) -comment(#-----------------------------) -keyword(import) include(time) -keyword(def) method(timestamp)operator(()operator(\))operator(:) - ident(start_time) operator(=) ident(time)operator(.)ident(time)operator(()operator(\)) - keyword(def) method(elapsed)operator(()operator(\))operator(:) - keyword(return) ident(time)operator(.)ident(time)operator(()operator(\)) operator(-) ident(start_time) - keyword(return) ident(elapsed) -ident(early) operator(=) ident(timestamp)operator(()operator(\)) -ident(time)operator(.)ident(sleep)operator(()integer(20)operator(\)) -ident(later) operator(=) ident(timestamp)operator(()operator(\)) -ident(time)operator(.)ident(sleep)operator(()integer(10)operator(\)) -keyword(print) string<delimiter(")content(It's been %d seconds since early)delimiter(")> operator(%) ident(early)operator(()operator(\)) -keyword(print) string<delimiter(")content(It's been %d seconds since later)delimiter(")> operator(%) ident(later)operator(()operator(\)) -comment(#=> It's been 30 seconds since early.) -comment(#=> It's been 10 seconds since later.) -comment(#-----------------------------) - -comment(# @@PLEAC@@_11.5) -comment(# A name is a reference to an object and an object can be referred to) -comment(# by any number of names. There is no way to manipulate pointers or) -comment(# an object's id. This section is thus inapplicable.) -ident(x) operator(=) integer(1) -ident(y) operator(=) ident(x) -keyword(print) ident(x)operator(,) predefined(id)operator(()ident(x)operator(\))operator(,) ident(y)operator(,) predefined(id)operator(()ident(y)operator(\)) -ident(x) operator(+=) integer(1) comment(# "x" now refers to a different object than y) -keyword(print) ident(x)operator(,) predefined(id)operator(()ident(x)operator(\))operator(,) ident(y)operator(,) predefined(id)operator(()ident(y)operator(\)) -ident(y) operator(=) integer(4) comment(# "y" now refers to a different object than it did before) -keyword(print) ident(x)operator(,) predefined(id)operator(()ident(x)operator(\))operator(,) ident(y)operator(,) predefined(id)operator(()ident(y)operator(\)) - -comment(# Some objects (including ints and strings\) are immutable, however, which) -comment(# can give the illusion of a by-value/by-reference distinction:) -ident(a) operator(=) ident(x) operator(=) operator([)integer(1)operator(]) -ident(b) operator(=) ident(y) operator(=) integer(1) -ident(c) operator(=) ident(z) operator(=) string<delimiter(")content(s)delimiter(")> -keyword(print) ident(a)operator(,) ident(b)operator(,) ident(c) -comment(#=> [1] 1 s) - -ident(x) operator(+=) ident(x) comment(# calls list.__iadd__ which is inplace.) -ident(y) operator(+=) ident(y) comment(# can't find int.__iadd__ so calls int.__add__ which isn't inplace) -ident(z) operator(+=) ident(z) comment(# can't find str.__iadd__ so calls str.__add__ which isn't inplace ) -keyword(print) ident(a)operator(,) ident(b)operator(,) ident(c) -comment(#=> [1, 1] 1 s) - -comment(# @@PLEAC@@_11.6) -comment(# As indicated by the previous section, everything is referenced, so) -comment(# just create a list as normal, and beware that augmented assignment) -comment(# works differently with immutable objects to mutable ones:) -ident(mylist) operator(=) operator([)integer(1)operator(,) string<delimiter(")content(s)delimiter(")>operator(,) operator([)integer(1)operator(])operator(]) -keyword(print) ident(mylist) -comment(#=> [1, s, [1]]) - -keyword(for) ident(elem) keyword(in) ident(mylist)operator(:) - ident(elem) operator(*=) integer(2) -keyword(print) ident(mylist) -comment(#=> [1, s, [1, 1]]) - -ident(mylist)operator([)integer(0)operator(]) operator(*=) integer(2) -ident(mylist)operator([)operator(-)integer(1)operator(]) operator(*=) integer(2) -keyword(print) ident(mylist) -comment(#=> [1, s, [1, 1, 1, 1]]) - -comment(# If you need to modify every value in a list, you should use a list comprehension) -comment(# which does NOT modify inplace:) -keyword(import) include(math) -ident(mylist) operator(=) operator([)operator(()ident(val)operator(**)integer(3) operator(*) integer(4)operator(/)integer(3)operator(*)ident(math)operator(.)ident(pi)operator(\)) keyword(for) ident(val) keyword(in) ident(mylist)operator(]) - -comment(# @@PLEAC@@_11.7) -comment(#-----------------------------) -ident(c1) operator(=) ident(mkcounter)operator(()integer(20)operator(\)) -ident(c2) operator(=) ident(mkcounter)operator(()integer(77)operator(\)) - -keyword(print) string<delimiter(")content(next c1: %d)delimiter(")> operator(%) ident(c1)operator([)string<delimiter(')content(next)delimiter(')>operator(])operator(()operator(\)) comment(# 21) -keyword(print) string<delimiter(")content(next c2: %d)delimiter(")> operator(%) ident(c2)operator([)string<delimiter(')content(next)delimiter(')>operator(])operator(()operator(\)) comment(# 78) -keyword(print) string<delimiter(")content(next c1: %d)delimiter(")> operator(%) ident(c1)operator([)string<delimiter(')content(next)delimiter(')>operator(])operator(()operator(\)) comment(# 22) -keyword(print) string<delimiter(")content(last c1: %d)delimiter(")> operator(%) ident(c1)operator([)string<delimiter(')content(prev)delimiter(')>operator(])operator(()operator(\)) comment(# 21) -keyword(print) string<delimiter(")content(old c2: %d)delimiter(")> operator(%) ident(c2)operator([)string<delimiter(')content(reset)delimiter(')>operator(])operator(()operator(\)) comment(# 77) -comment(#-----------------------------) -comment(# DON'T DO THIS. Use an object instead ) -keyword(def) method(mkcounter)operator(()ident(start)operator(\))operator(:) - ident(count) operator(=) operator([)ident(start)operator(]) - keyword(def) method(next)operator(()operator(\))operator(:) - ident(count)operator([)integer(0)operator(]) operator(+=) integer(1) - keyword(return) ident(count)operator([)integer(0)operator(]) - keyword(def) method(prev)operator(()operator(\))operator(:) - ident(count)operator([)integer(0)operator(]) operator(-=) integer(1) - keyword(return) ident(count)operator([)integer(0)operator(]) - keyword(def) method(get)operator(()operator(\))operator(:) - keyword(return) ident(count)operator([)integer(0)operator(]) - keyword(def) method(set)operator(()ident(value)operator(\))operator(:) - ident(count)operator([)integer(0)operator(]) operator(=) ident(value) - keyword(return) ident(count)operator([)integer(0)operator(]) - keyword(def) method(bump)operator(()ident(incr)operator(\))operator(:) - ident(count)operator([)integer(0)operator(]) operator(+=) ident(incr) - keyword(return) ident(count)operator([)integer(0)operator(]) - keyword(def) method(reset)operator(()operator(\))operator(:) - ident(count)operator([)integer(0)operator(]) operator(=) ident(start) - keyword(return) ident(count)operator([)integer(0)operator(]) - keyword(return) operator({) - string<delimiter(')content(next)delimiter(')>operator(:) predefined(next)operator(,) string<delimiter(')content(prev)delimiter(')>operator(:) ident(prev)operator(,) string<delimiter(')content(get)delimiter(')>operator(:) ident(get)operator(,) string<delimiter(')content(set)delimiter(')>operator(:) predefined(set)operator(,) - string<delimiter(')content(bump)delimiter(')>operator(:) ident(bump)operator(,) string<delimiter(')content(reset)delimiter(')>operator(:) ident(reset)operator(,) string<delimiter(')content(last)delimiter(')>operator(:) ident(prev)operator(}) -comment(#-----------------------------) - -comment(# @@PLEAC@@_11.8) -comment(#-----------------------------) -ident(mref) operator(=) ident(obj)operator(.)ident(meth) -comment(# later...) -ident(mref)operator(()string<delimiter(")content(args)delimiter(")>operator(,) string<delimiter(")content(go)delimiter(")>operator(,) string<delimiter(")content(here)delimiter(")>operator(\)) -comment(#-----------------------------) - -comment(# @@PLEAC@@_11.9) -comment(#-----------------------------) -ident(record) operator(=) operator({) - string<delimiter(")content(name)delimiter(")>operator(:) string<delimiter(")content(Jason)delimiter(")>operator(,) - string<delimiter(")content(empno)delimiter(")>operator(:) integer(132)operator(,) - string<delimiter(")content(title)delimiter(")>operator(:) string<delimiter(")content(deputy peon)delimiter(")>operator(,) - string<delimiter(")content(age)delimiter(")>operator(:) integer(23)operator(,) - string<delimiter(")content(salary)delimiter(")>operator(:) integer(37000)operator(,) - string<delimiter(")content(pals)delimiter(")>operator(:) operator([)string<delimiter(")content(Norbert)delimiter(")>operator(,) string<delimiter(")content(Rhys)delimiter(")>operator(,) string<delimiter(")content(Phineas)delimiter(")>operator(])operator(,) -operator(}) -keyword(print) string<delimiter(")content(I am %s, and my pals are %s.)delimiter(")> operator(%) operator(()ident(record)operator([)string<delimiter(")content(name)delimiter(")>operator(])operator(,) - string<delimiter(")content(, )delimiter(")>operator(.)ident(join)operator(()ident(record)operator([)string<delimiter(")content(pals)delimiter(")>operator(])operator(\))operator(\)) -comment(#-----------------------------) -ident(byname) operator(=) operator({)operator(}) -ident(byname)operator([)ident(record)operator([)string<delimiter(")content(name)delimiter(")>operator(])operator(]) operator(=) ident(record) - -ident(rp) operator(=) ident(byname)operator(.)ident(get)operator(()string<delimiter(")content(Aron)delimiter(")>operator(\)) -keyword(if) ident(rp)operator(:) - keyword(print) string<delimiter(")content(Aron is employee %d.)delimiter(")>operator(%) ident(rp)operator([)string<delimiter(")content(empno)delimiter(")>operator(]) - -ident(byname)operator([)string<delimiter(")content(Jason)delimiter(")>operator(])operator([)string<delimiter(")content(pals)delimiter(")>operator(])operator(.)ident(append)operator(()string<delimiter(")content(Theodore)delimiter(")>operator(\)) -keyword(print) string<delimiter(")content(Jason now has %d pals.)delimiter(")> operator(%) predefined(len)operator(()ident(byname)operator([)string<delimiter(")content(Jason)delimiter(")>operator(])operator([)string<delimiter(")content(pals)delimiter(")>operator(])operator(\)) - -keyword(for) ident(name)operator(,) ident(record) keyword(in) ident(byname)operator(.)ident(items)operator(()operator(\))operator(:) - keyword(print) string<delimiter(")content(%s is employee number %d.)delimiter(")> operator(%) operator(()ident(name)operator(,) ident(record)operator([)string<delimiter(")content(empno)delimiter(")>operator(])operator(\)) - -ident(employees) operator(=) operator({)operator(}) -ident(employees)operator([)ident(record)operator([)string<delimiter(")content(empno)delimiter(")>operator(])operator(]) operator(=) ident(record)operator(;) - -comment(# lookup by id) -ident(rp) operator(=) ident(employees)operator(.)ident(get)operator(()integer(132)operator(\)) -keyword(if) operator(()ident(rp)operator(\))operator(:) - keyword(print) string<delimiter(")content(Employee number 132 is %s.)delimiter(")> operator(%) ident(rp)operator([)string<delimiter(")content(name)delimiter(")>operator(]) - -ident(byname)operator([)string<delimiter(")content(Jason)delimiter(")>operator(])operator([)string<delimiter(")content(salary)delimiter(")>operator(]) operator(*=) float(1.035) - -ident(peons) operator(=) operator([)ident(r) keyword(for) ident(r) keyword(in) ident(employees)operator(.)ident(values)operator(()operator(\)) keyword(if) ident(r)operator([)string<delimiter(")content(title)delimiter(")>operator(]) operator(==) string<delimiter(")content(peon)delimiter(")>operator(]) -ident(tsevens) operator(=) operator([)ident(r) keyword(for) ident(r) keyword(in) ident(employees)operator(.)ident(values)operator(()operator(\)) keyword(if) ident(r)operator([)string<delimiter(")content(age)delimiter(")>operator(]) operator(==) integer(27)operator(]) - -comment(# Go through all records) -keyword(print) ident(employees)operator(.)ident(values)operator(()operator(\)) - -keyword(for) ident(rp) keyword(in) predefined(sorted)operator(()ident(employees)operator(.)ident(values)operator(()operator(\))operator(,) ident(key)operator(=)keyword(lambda) ident(x)operator(:)ident(x)operator([)string<delimiter(")content(age)delimiter(")>operator(])operator(\))operator(:) - keyword(print) string<delimiter(")content(%s is age %d.)delimiter(")>operator(%)operator(()ident(rp)operator([)string<delimiter(")content(name)delimiter(")>operator(])operator(,) ident(rp)operator([)string<delimiter(")content(age)delimiter(")>operator(])operator(\)) - -comment(# use @byage, an array of arrays of records) -ident(byage) operator(=) operator({)operator(}) -ident(byage)operator([)ident(record)operator([)string<delimiter(")content(age)delimiter(")>operator(])operator(]) operator(=) ident(byage)operator(.)ident(get)operator(()ident(record)operator([)string<delimiter(")content(age)delimiter(")>operator(])operator(,) operator([)operator(])operator(\)) operator(+) operator([)ident(record)operator(]) - -keyword(for) ident(age)operator(,) ident(records) keyword(in) ident(byage)operator(.)ident(items)operator(()operator(\))operator(:) - keyword(print) ident(records) - keyword(print) string<delimiter(")content(Age %s:)delimiter(")>operator(%)ident(age)operator(,) - keyword(for) ident(rp) keyword(in) ident(records)operator(:) - keyword(print) ident(rp)operator([)string<delimiter(")content(name)delimiter(")>operator(])operator(,) - keyword(print) -comment(#-----------------------------) - -comment(# @@PLEAC@@_11.10) -comment(#-----------------------------) -ident(FieldName)operator(:) ident(Value) -comment(#-----------------------------) -keyword(for) ident(record) keyword(in) ident(list_of_records)operator(:) - comment(# Note: sorted added in Python 2.4) - keyword(for) ident(key) keyword(in) predefined(sorted)operator(()ident(record)operator(.)ident(keys)operator(()operator(\))operator(\))operator(:) - keyword(print) string<delimiter(")content(%s: %s)delimiter(")> operator(%) operator(()ident(key)operator(,) ident(record)operator([)ident(key)operator(])operator(\)) - keyword(print) -comment(#-----------------------------) -keyword(import) include(re) -ident(list_of_records) operator(=) operator([)operator({)operator(})operator(]) -keyword(while) pre_constant(True)operator(:) - ident(line) operator(=) ident(sys)operator(.)ident(stdin)operator(.)ident(readline)operator(()operator(\)) - keyword(if) keyword(not) ident(line)operator(:) - comment(# EOF) - keyword(break) - comment(# Remove trailing \\n:) - ident(line) operator(=) ident(line)operator([)operator(:)integer(1)operator(]) - keyword(if) keyword(not) ident(line)operator(.)ident(strip)operator(()operator(\))operator(:) - comment(# New record) - ident(list_of_records)operator(.)ident(append)operator(()operator({)operator(})operator(\)) - keyword(continue) - ident(key)operator(,) ident(value) operator(=) ident(re)operator(.)ident(split)operator(()string<modifier(r)delimiter(')content(:)content(\\s)content(*)delimiter(')>operator(,) ident(line)operator(,) integer(1)operator(\)) - comment(# Assign the key/value to the last item in the list_of_records:) - ident(list_of_records)operator([)operator(-)integer(1)operator(])operator([)ident(key)operator(]) operator(=) ident(value) -comment(#-----------------------------) -comment(# @@PLEAC@@_11.11) -keyword(import) include(pprint) - -ident(mylist) operator(=) operator([)operator([)integer(1)operator(,)integer(2)operator(,)integer(3)operator(])operator(,) operator([)integer(4)operator(,) operator([)integer(5)operator(,)integer(6)operator(,)integer(7)operator(])operator(,) integer(8)operator(,)integer(9)operator(,) operator([)integer(0)operator(,)integer(3)operator(,)integer(5)operator(])operator(])operator(,) integer(7)operator(,) integer(8)operator(]) -ident(mydict) operator(=) operator({)string<delimiter(")content(abc)delimiter(")>operator(:) string<delimiter(")content(def)delimiter(")>operator(,) string<delimiter(")content(ghi)delimiter(")>operator(:)operator([)integer(1)operator(,)integer(2)operator(,)integer(3)operator(])operator(}) -ident(pprint)operator(.)ident(pprint)operator(()ident(mylist)operator(,) ident(width)operator(=)integer(1)operator(\)) - -ident(fmtdict) operator(=) ident(pprint)operator(.)ident(pformat)operator(()ident(mydict)operator(,) ident(width)operator(=)integer(1)operator(\)) -keyword(print) ident(fmtdict) -comment(# "import pprint; help(pprint\)" for more details) - -comment(# @@INCOMPLETE@@) -comment(# Note that pprint does not currently handle user objects) - -comment(#-----------------------------) -comment(# @@PLEAC@@_11.12) -ident(newlist) operator(=) predefined(list)operator(()ident(mylist)operator(\)) comment(# shallow copy) -ident(newdict) operator(=) predefined(dict)operator(()ident(mydict)operator(\)) comment(# shallow copy) - -comment(# Pre 2.3:) -keyword(import) include(copy) -ident(newlist) operator(=) ident(copy)operator(.)ident(copy)operator(()ident(mylist)operator(\)) comment(# shallow copy) -ident(newdict) operator(=) ident(copy)operator(.)ident(copy)operator(()ident(mydict)operator(\)) comment(# shallow copy) - -comment(# shallow copies copy a data structure, but don't copy the items in those) -comment(# data structures so if there are nested data structures, both copy and) -comment(# original will refer to the same object) -ident(mylist) operator(=) operator([)string<delimiter(")content(1)delimiter(")>operator(,) string<delimiter(")content(2)delimiter(")>operator(,) string<delimiter(")content(3)delimiter(")>operator(]) -ident(newlist) operator(=) predefined(list)operator(()ident(mylist)operator(\)) -ident(mylist)operator([)integer(0)operator(]) operator(=) string<delimiter(")content(0)delimiter(")> -keyword(print) ident(mylist)operator(,) ident(newlist) -comment(#=> ['0', '2', '3'] ['1', '2', '3']) - -ident(mylist) operator(=) operator([)operator([)string<delimiter(")content(1)delimiter(")>operator(,) string<delimiter(")content(2)delimiter(")>operator(,) string<delimiter(")content(3)delimiter(")>operator(])operator(,) integer(4)operator(]) -ident(newlist) operator(=) predefined(list)operator(()ident(mylist)operator(\)) -ident(mylist)operator([)integer(0)operator(])operator([)integer(0)operator(]) operator(=) string<delimiter(")content(0)delimiter(")> -keyword(print) ident(mylist)operator(,) ident(newlist) -comment(#=> [['0', '2', '3'], 4] [['0', '2', '3'], 4]) -comment(#-----------------------------) -keyword(import) include(copy) -ident(newlist) operator(=) ident(copy)operator(.)ident(deepcopy)operator(()ident(mylist)operator(\)) comment(# deep copy) -ident(newdict) operator(=) ident(copy)operator(.)ident(deepcopy)operator(()ident(mydict)operator(\)) comment(# deep copy) - -comment(# deep copies copy a data structure recursively:) -keyword(import) include(copy) - -ident(mylist) operator(=) operator([)operator([)string<delimiter(")content(1)delimiter(")>operator(,) string<delimiter(")content(2)delimiter(")>operator(,) string<delimiter(")content(3)delimiter(")>operator(])operator(,) integer(4)operator(]) -ident(newlist) operator(=) ident(copy)operator(.)ident(deepcopy)operator(()ident(mylist)operator(\)) -ident(mylist)operator([)integer(0)operator(])operator([)integer(0)operator(]) operator(=) string<delimiter(")content(0)delimiter(")> -keyword(print) ident(mylist)operator(,) ident(newlist) -comment(#=> [['0', '2', '3'], 4] [['1', '2', '3'], 4]) -comment(#-----------------------------) -comment(# @@PLEAC@@_11.13) -keyword(import) include(pickle) -keyword(class) class(Foo)operator(()predefined(object)operator(\))operator(:) - keyword(def) method(__init__)operator(()pre_constant(self)operator(\))operator(:) - pre_constant(self)operator(.)ident(val) operator(=) integer(1) - -ident(x) operator(=) ident(Foo)operator(()operator(\)) -ident(x)operator(.)ident(val) operator(=) integer(3) -ident(p_x) operator(=) ident(pickle)operator(.)ident(dumps)operator(()ident(x)operator(\)) comment(# Also pickle.dump(x, myfile\) which writes to myfile) -keyword(del) ident(x) -ident(x) operator(=) ident(pickle)operator(.)ident(loads)operator(()ident(p_x)operator(\)) comment(# Also x = pickle.load(myfile\) which loads from myfile) -keyword(print) ident(x)operator(.)ident(val) -comment(#=> 3) -comment(#-----------------------------) -comment(# @@PLEAC@@_11.14) -keyword(import) include(os)operator(,) include(shelve) -ident(fname) operator(=) string<delimiter(")content(testfile.db)delimiter(")> -keyword(if) keyword(not) ident(os)operator(.)ident(path)operator(.)ident(exists)operator(()ident(fname)operator(\))operator(:) - ident(d) operator(=) ident(shelve)operator(.)ident(open)operator(()string<delimiter(")content(testfile.db)delimiter(")>operator(\)) - keyword(for) ident(i) keyword(in) predefined(range)operator(()integer(100000)operator(\))operator(:) - ident(d)operator([)predefined(str)operator(()ident(i)operator(\))operator(]) operator(=) ident(i) - ident(d)operator(.)ident(close)operator(()operator(\)) - -ident(d) operator(=) ident(shelve)operator(.)ident(open)operator(()string<delimiter(")content(testfile.db)delimiter(")>operator(\)) -keyword(print) ident(d)operator([)string<delimiter(")content(100)delimiter(")>operator(]) -keyword(print) ident(d)operator([)string<delimiter(")content(1212010201)delimiter(")>operator(]) comment(# KeyError) -comment(#-----------------------------) - -comment(# @@PLEAC@@_11.15) -comment(# bintree - binary tree demo program) -comment(# Use the heapq module instead?) -keyword(import) include(random) -keyword(import) include(warnings) - -keyword(class) class(BTree)operator(()predefined(object)operator(\))operator(:) - keyword(def) method(__init__)operator(()pre_constant(self)operator(\))operator(:) - pre_constant(self)operator(.)ident(value) operator(=) pre_constant(None) - - comment(### insert given value into proper point of) - comment(### the tree, extending this node if necessary.) - keyword(def) method(insert)operator(()pre_constant(self)operator(,) ident(value)operator(\))operator(:) - keyword(if) pre_constant(self)operator(.)ident(value) keyword(is) pre_constant(None)operator(:) - pre_constant(self)operator(.)ident(left) operator(=) ident(BTree)operator(()operator(\)) - pre_constant(self)operator(.)ident(right) operator(=) ident(BTree)operator(()operator(\)) - pre_constant(self)operator(.)ident(value) operator(=) ident(value) - keyword(elif) pre_constant(self)operator(.)ident(value) operator(>) ident(value)operator(:) - pre_constant(self)operator(.)ident(left)operator(.)ident(insert)operator(()ident(value)operator(\)) - keyword(elif) pre_constant(self)operator(.)ident(value) operator(<) ident(value)operator(:) - pre_constant(self)operator(.)ident(right)operator(.)ident(insert)operator(()ident(value)operator(\)) - keyword(else)operator(:) - ident(warnings)operator(.)ident(warn)operator(()string<delimiter(")content(Duplicate insertion of %s.)delimiter(")>operator(%)ident(value)operator(\)) - - comment(# recurse on left child, ) - comment(# then show current value, ) - comment(# then recurse on right child.) - keyword(def) method(in_order)operator(()pre_constant(self)operator(\))operator(:) - keyword(if) pre_constant(self)operator(.)ident(value) keyword(is) keyword(not) pre_constant(None)operator(:) - pre_constant(self)operator(.)ident(left)operator(.)ident(in_order)operator(()operator(\)) - keyword(print) pre_constant(self)operator(.)ident(value)operator(,) - pre_constant(self)operator(.)ident(right)operator(.)ident(in_order)operator(()operator(\)) - - comment(# show current value, ) - comment(# then recurse on left child, ) - comment(# then recurse on right child.) - keyword(def) method(pre_order)operator(()pre_constant(self)operator(\))operator(:) - keyword(if) pre_constant(self)operator(.)ident(value) keyword(is) keyword(not) pre_constant(None)operator(:) - keyword(print) pre_constant(self)operator(.)ident(value)operator(,) - pre_constant(self)operator(.)ident(left)operator(.)ident(pre_order)operator(()operator(\)) - pre_constant(self)operator(.)ident(right)operator(.)ident(pre_order)operator(()operator(\)) - - comment(# recurse on left child, ) - comment(# then recurse on right child,) - comment(# then show current value. ) - keyword(def) method(post_order)operator(()pre_constant(self)operator(\))operator(:) - keyword(if) pre_constant(self)operator(.)ident(value) keyword(is) keyword(not) pre_constant(None)operator(:) - pre_constant(self)operator(.)ident(left)operator(.)ident(post_order)operator(()operator(\)) - pre_constant(self)operator(.)ident(right)operator(.)ident(post_order)operator(()operator(\)) - keyword(print) pre_constant(self)operator(.)ident(value)operator(,) - - comment(# find out whether provided value is in the tree.) - comment(# if so, return the node at which the value was found.) - comment(# cut down search time by only looking in the correct) - comment(# branch, based on current value.) - keyword(def) method(search)operator(()pre_constant(self)operator(,) ident(value)operator(\))operator(:) - keyword(if) pre_constant(self)operator(.)ident(value) keyword(is) keyword(not) pre_constant(None)operator(:) - keyword(if) pre_constant(self)operator(.)ident(value) operator(==) ident(value)operator(:) - keyword(return) pre_constant(self) - keyword(if) ident(value) operator(<) pre_constant(self)operator(.)ident(value)operator(:) - keyword(return) pre_constant(self)operator(.)ident(left)operator(.)ident(search)operator(()ident(value)operator(\)) - keyword(else)operator(:) - keyword(return) pre_constant(self)operator(.)ident(right)operator(.)ident(search)operator(()ident(value)operator(\)) - -keyword(def) method(test)operator(()operator(\))operator(:) - ident(root) operator(=) ident(BTree)operator(()operator(\)) - - keyword(for) ident(i) keyword(in) predefined(range)operator(()integer(20)operator(\))operator(:) - ident(root)operator(.)ident(insert)operator(()ident(random)operator(.)ident(randint)operator(()integer(1)operator(,) integer(1000)operator(\))operator(\)) - - comment(# now dump out the tree all three ways) - keyword(print) string<delimiter(")content(Pre order: )delimiter(")>operator(,) ident(root)operator(.)ident(pre_order)operator(()operator(\)) - keyword(print) string<delimiter(")content(In order: )delimiter(")>operator(,) ident(root)operator(.)ident(in_order)operator(()operator(\)) - keyword(print) string<delimiter(")content(Post order:)delimiter(")>operator(,) ident(root)operator(.)ident(post_order)operator(()operator(\)) - - comment(### prompt until empty line) - keyword(while) pre_constant(True)operator(:) - ident(val) operator(=) predefined(raw_input)operator(()string<delimiter(")content(Search? )delimiter(")>operator(\))operator(.)ident(strip)operator(()operator(\)) - keyword(if) keyword(not) ident(val)operator(:) - keyword(break) - ident(val) operator(=) predefined(int)operator(()ident(val)operator(\)) - ident(found) operator(=) ident(root)operator(.)ident(search)operator(()ident(val)operator(\)) - keyword(if) ident(found)operator(:) - keyword(print) string<delimiter(")content(Found %s at %s, %s)delimiter(")>operator(%)operator(()ident(val)operator(,) ident(found)operator(,) ident(found)operator(.)ident(value)operator(\)) - keyword(else)operator(:) - keyword(print) string<delimiter(")content(No %s in tree)delimiter(")> operator(%) ident(val) - -keyword(if) ident(__name__) operator(==) string<delimiter(")content(__main__)delimiter(")>operator(:) - ident(test)operator(()operator(\)) - - -comment(# ^^PLEAC^^_12.0) -comment(#-----------------------------) -comment(## Python's "module" is the closest equivalent to Perl's "package") - - -comment(#=== In the file "Alpha.py") -ident(name) operator(=) string<delimiter(")content(first)delimiter(")> - -comment(#=== End of file) - -comment(#=== In the file "Omega.py") - -ident(name) operator(=) string<delimiter(")content(last)delimiter(")> -comment(#=== End of file) - -keyword(import) include(Alpha)operator(,) include(Omega) -keyword(print) string<delimiter(")content(Alpha is %s, Omega is %s.)delimiter(")> operator(%) operator(()ident(Alpha)operator(.)ident(name)operator(,) ident(Omega)operator(.)ident(name)operator(\)) -comment(#> Alpha is first, Omega is last.) -comment(#-----------------------------) -comment(# Python does not have an equivalent to "compile-time load") -keyword(import) include(sys) - -comment(# Depending on the implementation, this could use a builtin) -comment(# module or load a file with the extension .py, .pyc, pyo, .pyd,) -comment(# .so, .dll, or (with imputils\) load from other files.) -keyword(import) include(Cards.Poker) - -comment(#-----------------------------) -comment(#=== In the file Cards/Poker.py) -ident(__all__) operator(=) operator([)string<delimiter(")content(card_deck)delimiter(")>operator(,) string<delimiter(")content(shuffle)delimiter(")>operator(]) comment(# not usually needed) -ident(card_deck) operator(=) operator([)operator(]) -keyword(def) method(shuffle)operator(()operator(\))operator(:) - keyword(pass) - -comment(#-----------------------------) - -comment(# ^^PLEAC^^_12.1) -comment(#-----------------------------) -comment(#== In the file "YourModule.py") - -ident(__version__) operator(=) operator(()integer(1)operator(,) integer(0)operator(\)) comment(# Or higher) -ident(__all__) operator(=) operator([)string<delimiter(")content(...)delimiter(")>operator(,) string<delimiter(")content(...)delimiter(")>operator(]) comment(# Override names included in "... import *") - comment(# Note: 'import *' is considered poor style) - comment(# and it is rare to use this variable.) -comment(########################) -comment(# your code goes here) -comment(########################) - -comment(#-----------------------------) -keyword(import) include(YourModule) comment(# Import the module into my package) - comment(# (does not import any of its symbols\)) - -keyword(import) include(YourModule) keyword(as) ident(Module) comment(# Use a different name for the module) - -keyword(from) include(YourModule) keyword(import) include(*) comment(# Import all module symbols not starting) - comment(# with an underscore (default\); if __all__) - comment(# is defined, only imports those symbols.) - comment(# Using this is discouraged unless the ) - comment(# module is specifically designed for it.) - -keyword(from) include(YourModule) keyword(import) include(name1)operator(,) include(name2)operator(,) include(xxx) - comment(# Import the named symbols from the module) - -keyword(from) include(YourModule) keyword(import) include(name1) keyword(as) ident(name2) - comment(# Import the named object, but use a) - comment(# different name to access it locally.) - -comment(#-----------------------------) -ident(__all__) operator(=) operator([)string<delimiter(")content(F1)delimiter(")>operator(,) string<delimiter(")content(F2)delimiter(")>operator(,) string<delimiter(")content(List)delimiter(")>operator(]) -comment(#-----------------------------) -ident(__all__) operator(=) operator([)string<delimiter(")content(Op_Func)delimiter(")>operator(,) string<delimiter(")content(Table)delimiter(")>operator(]) -comment(#-----------------------------) -keyword(from) include(YourModule) keyword(import) include(Op_Func)operator(,) include(Table)operator(,) include(F1) -comment(#-----------------------------) -keyword(from) include(YourModule) keyword(import) include(Functions)operator(,) include(Table) -comment(#-----------------------------) - -comment(# ^^PLEAC^^_12.2) -comment(#-----------------------------) -comment(# no import) -ident(mod) operator(=) string<delimiter(")content(module)delimiter(")> -keyword(try)operator(:) - predefined(__import__)operator(()ident(mod)operator(\)) -keyword(except) exception(ImportError)operator(,) ident(err)operator(:) - keyword(raise) exception(ImportError)operator(()string<delimiter(")content(couldn't load %s: %s)delimiter(")> operator(%) operator(()ident(mod)operator(,) ident(err)operator(\))operator(\)) - -comment(# imports into current package) -keyword(try)operator(:) - keyword(import) include(module) -keyword(except) exception(ImportError)operator(,) ident(err)operator(:) - keyword(raise) exception(ImportError)operator(()string<delimiter(")content(couldn't load 'module': %s)delimiter(")> operator(%) operator(()ident(err)operator(,) operator(\))operator(\)) - -comment(# imports into current package, if the name is known) -keyword(try)operator(:) - keyword(import) include(module) -keyword(except) exception(ImportError)operator(,) ident(err)operator(:) - keyword(raise) exception(ImportError)operator(()string<delimiter(")content(couldn't load 'module': %s)delimiter(")> operator(%) operator(()ident(err)operator(,) operator(\))operator(\)) - -comment(# Use a fixed local name for a named module) -ident(mod) operator(=) string<delimiter(")content(module)delimiter(")> -keyword(try)operator(:) - ident(local_name) operator(=) predefined(__import__)operator(()ident(mod)operator(\)) -keyword(except) exception(ImportError)operator(,) ident(err)operator(:) - keyword(raise) exception(ImportError)operator(()string<delimiter(")content(couldn't load %s: %s)delimiter(")> operator(%) operator(()ident(mod)operator(,) ident(err)operator(\))operator(\)) - -comment(# Use the given name for the named module.) -comment(# (You probably don't need to do this.\)) -ident(mod) operator(=) string<delimiter(")content(module)delimiter(")> -keyword(try)operator(:) - predefined(globals)operator(()operator(\))operator([)ident(mod)operator(]) operator(=) predefined(__import__)operator(()ident(mod)operator(\)) -keyword(except) exception(ImportError)operator(,) ident(err)operator(:) - keyword(raise) exception(ImportError)operator(()string<delimiter(")content(couldn't load %s: %s)delimiter(")> operator(%) operator(()ident(mod)operator(,) ident(err)operator(\))operator(\)) - -comment(#-----------------------------) -ident(DBs) operator(=) string<delimiter(")content(Giant.Eenie Giant.Meanie Mouse.Mynie Moe)delimiter(")>operator(.)ident(split)operator(()operator(\)) -keyword(for) ident(mod) keyword(in) ident(DBs)operator(.)ident(split)operator(()operator(\))operator(:) - keyword(try)operator(:) - ident(loaded_module) operator(=) predefined(__import__)operator(()ident(mod)operator(\)) - keyword(except) exception(ImportError)operator(:) - keyword(continue) - comment(# __import__ returns a reference to the top-most module) - comment(# Need to get the actual submodule requested.) - keyword(for) ident(term) keyword(in) ident(mod)operator(.)ident(split)operator(()string<delimiter(")content(.)delimiter(")>operator(\))operator([)operator(:)operator(-)integer(1)operator(])operator(:) - ident(loaded_module) operator(=) predefined(getattr)operator(()ident(loaded_module)operator(,) ident(term)operator(\)) - keyword(break) -keyword(else)operator(:) - keyword(raise) exception(ImportError)operator(()string<delimiter(")content(None of %s loaded)delimiter(")> operator(%) ident(DBs)operator(\)) -comment(#-----------------------------) - -comment(# ^^PLEAC^^_12.3) -comment(#-----------------------------) -keyword(import) include(sys) -keyword(if) ident(__name__) operator(==) string<delimiter(")content(__main__)delimiter(")>operator(:) - keyword(if) predefined(len)operator(()ident(sys)operator(.)ident(argv)operator(\)) operator(!=) integer(3) keyword(or) keyword(not) ident(sys)operator(.)ident(argv)operator([)integer(1)operator(])operator(.)ident(isdigit)operator(()operator(\)) \ - keyword(or) keyword(not) ident(sys)operator(.)ident(argv)operator([)integer(2)operator(])operator(.)ident(isdigit)operator(()operator(\))operator(:) - keyword(raise) exception(SystemExit)operator(()string<delimiter(")content(usage: %s num1 num2)delimiter(")> operator(%) ident(sys)operator(.)ident(argv)operator([)integer(0)operator(])operator(\)) - -keyword(import) include(Some.Module) -keyword(import) include(More.Modules) -comment(#-----------------------------) -keyword(if) ident(opt_b)operator(:) - keyword(import) include(math) -comment(#-----------------------------) -keyword(from) include(os) keyword(import) include(O_EXCL)operator(,) include(O_CREAT)operator(,) include(O_RDWR) - -comment(#-----------------------------) -keyword(import) include(os) -ident(O_EXCL) operator(=) ident(os)operator(.)ident(O_EXCL) -ident(O_CREAT) operator(=) ident(os)operator(.)ident(O_CREAT) -ident(O_RDWR) operator(=) ident(os)operator(.)ident(O_RDWR) -comment(#-----------------------------) -keyword(import) include(os) -ident(O_EXCL)operator(,) ident(O_CREAT)operator(,) ident(O_RDWR) operator(=) ident(os)operator(.)ident(O_EXCL)operator(,) ident(os)operator(.)ident(O_CREAT)operator(,) ident(os)operator(.)ident(O_RDWR) -comment(#-----------------------------) -ident(load_module)operator(()string<delimiter(')content(os)delimiter(')>operator(,) string<delimiter(")content(O_EXCL O_CREAT O_RDWR)delimiter(")>operator(.)ident(split)operator(()operator(\))operator(\)) - -keyword(def) method(load_module)operator(()ident(module_name)operator(,) ident(symbols)operator(\))operator(:) - ident(module) operator(=) predefined(__import__)operator(()ident(module_name)operator(\)) - keyword(for) ident(symbol) keyword(in) ident(symbols)operator(:) - predefined(globals)operator(()operator(\))operator([)ident(symbol)operator(]) operator(=) predefined(getattr)operator(()ident(module)operator(,) ident(symbol)operator(\)) -comment(#-----------------------------) - -comment(# ^^PLEAC^^_12.4) -comment(#-----------------------------) -comment(# Python doesn't have Perl-style packages) - -comment(# Flipper.py) -ident(__version__) operator(=) operator(()integer(1)operator(,) integer(0)operator(\)) - -ident(__all__) operator(=) operator([)string<delimiter(")content(flip_boundary)delimiter(")>operator(,) string<delimiter(")content(flip_words)delimiter(")>operator(]) - -ident(Separatrix) operator(=) string<delimiter(')content( )delimiter(')> comment(# default to blank) - -keyword(def) method(flip_boundary)operator(()ident(sep) operator(=) pre_constant(None)operator(\))operator(:) - ident(prev_sep) operator(=) ident(Separatrix) - keyword(if) ident(sep) keyword(is) keyword(not) pre_constant(None)operator(:) - keyword(global) ident(Separatrix) - ident(Separatrix) operator(=) ident(sep) - keyword(return) ident(prev_sep) - -keyword(def) method(flip_words)operator(()ident(line)operator(\))operator(:) - ident(words) operator(=) ident(line)operator(.)ident(split)operator(()ident(Separatrix)operator(\)) - ident(words)operator(.)ident(reverse)operator(()operator(\)) - keyword(return) ident(Separatrix)operator(.)ident(join)operator(()ident(words)operator(\)) -comment(#-----------------------------) - -comment(# ^^PLEAC^^_12.5) -comment(#-----------------------------) -ident(this_pack) operator(=) ident(__name__) -comment(#-----------------------------) -ident(that_pack) operator(=) ident(sys)operator(.)ident(_getframe)operator(()integer(1)operator(\))operator(.)ident(f_globals)operator(.)ident(get)operator(()string<delimiter(")content(__name__)delimiter(")>operator(,) string<delimiter(")content(<string>)delimiter(")>operator(\)) -comment(#-----------------------------) -keyword(print) string<delimiter(")content(I am in package)delimiter(")>operator(,) ident(__name__) -comment(#-----------------------------) -keyword(def) method(nreadline)operator(()ident(count)operator(,) ident(myfile)operator(\))operator(:) - keyword(if) ident(count) operator(<=) integer(0)operator(:) - keyword(raise) exception(ValueError)operator(()string<delimiter(")content(Count must be > 0)delimiter(")>operator(\)) - keyword(return) operator([)ident(myfile)operator(.)ident(readline)operator(()operator(\)) keyword(for) ident(i) keyword(in) predefined(range)operator(()ident(count)operator(\))operator(]) - -keyword(def) method(main)operator(()operator(\))operator(:) - ident(myfile) operator(=) predefined(open)operator(()string<delimiter(")content(/etc/termcap)delimiter(")>operator(\)) - ident(a)operator(,) ident(b)operator(,) ident(c) operator(=) ident(nreadline)operator(()integer(3)operator(,) ident(myfile)operator(\)) - ident(myfile)operator(.)ident(close)operator(()operator(\)) - -keyword(if) ident(__name__) operator(==) string<delimiter(")content(__main__)delimiter(")>operator(:) - ident(main)operator(()operator(\)) - -comment(# DON'T DO THIS:) -keyword(import) include(sys) - -keyword(def) method(nreadline)operator(()ident(count)operator(,) ident(handle_name)operator(\))operator(:) - keyword(assert) ident(count) operator(>) integer(0)operator(,) string<delimiter(")content(count must be > 0)delimiter(")> - ident(locals) operator(=) ident(sys)operator(.)ident(_getframe)operator(()integer(1)operator(\))operator(.)ident(f_locals) - keyword(if) keyword(not) predefined(locals)operator(.)ident(has_key)operator(()ident(handle_name)operator(\))operator(:) - keyword(raise) exception(AssertionError)operator(()string<delimiter(")content(need open filehandle)delimiter(")>operator(\)) - ident(infile) operator(=) predefined(locals)operator([)ident(handle_name)operator(]) - ident(retlist) operator(=) operator([)operator(]) - keyword(for) ident(line) keyword(in) ident(infile)operator(:) - ident(retlist)operator(.)ident(append)operator(()ident(line)operator(\)) - ident(count) operator(-=) integer(1) - keyword(if) ident(count) operator(==) integer(0)operator(:) - keyword(break) - keyword(return) ident(retlist) - -keyword(def) method(main)operator(()operator(\))operator(:) - ident(FH) operator(=) predefined(open)operator(()string<delimiter(")content(/etc/termcap)delimiter(")>operator(\)) - ident(a)operator(,) ident(b)operator(,) ident(c) operator(=) ident(nreadline)operator(()integer(3)operator(,) string<delimiter(")content(FH)delimiter(")>operator(\)) - -keyword(if) ident(__name__) operator(==) string<delimiter(")content(__main__)delimiter(")>operator(:) - ident(main)operator(()operator(\)) -comment(#-----------------------------) - -comment(# ^^PLEAC^^_12.6) -comment(#-----------------------------) -comment(## There is no direct equivalent in Python to an END block) -keyword(import) include(time)operator(,) include(os)operator(,) include(sys) - -comment(# Tricks to ensure the needed functions exist during module cleanup) -keyword(def) method(_getgmtime)operator(()ident(asctime)operator(=)ident(time)operator(.)ident(asctime)operator(,) ident(gmtime)operator(=)ident(time)operator(.)ident(gmtime)operator(,) - ident(t)operator(=)ident(time)operator(.)ident(time)operator(\))operator(:) - keyword(return) ident(asctime)operator(()ident(gmtime)operator(()ident(t)operator(()operator(\))operator(\))operator(\)) - -keyword(class) class(Logfile)operator(:) - keyword(def) method(__init__)operator(()pre_constant(self)operator(,) predefined(file)operator(\))operator(:) - pre_constant(self)operator(.)ident(file) operator(=) predefined(file) - - keyword(def) method(_logmsg)operator(()pre_constant(self)operator(,) ident(msg)operator(,) ident(argv0)operator(=)ident(sys)operator(.)ident(argv)operator([)integer(0)operator(])operator(,) ident(pid)operator(=)ident(os)operator(.)ident(getpid)operator(()operator(\))operator(,) - ident(_getgmtime)operator(=)ident(_getgmtime)operator(\))operator(:) - comment(# more tricks to keep all needed references) - ident(now) operator(=) ident(_getgmtime)operator(()operator(\)) - keyword(print)operator(>>)pre_constant(self)operator(.)ident(file)operator(,) ident(argv0)operator(,) ident(pid)operator(,) ident(now) operator(+) string<delimiter(")content(:)delimiter(")>operator(,) ident(msg) - - keyword(def) method(logmsg)operator(()pre_constant(self)operator(,) ident(msg)operator(\))operator(:) - pre_constant(self)operator(.)ident(_logmsg)operator(()pre_constant(self)operator(.)ident(file)operator(,) ident(msg)operator(\)) - - keyword(def) method(__del__)operator(()pre_constant(self)operator(\))operator(:) - pre_constant(self)operator(.)ident(_logmsg)operator(()string<delimiter(")content(shutdown)delimiter(")>operator(\)) - pre_constant(self)operator(.)ident(file)operator(.)ident(close)operator(()operator(\)) - - keyword(def) method(__getattr__)operator(()pre_constant(self)operator(,) ident(attr)operator(\))operator(:) - comment(# forward everything else to the file handle) - keyword(return) predefined(getattr)operator(()pre_constant(self)operator(.)ident(file)operator(,) ident(attr)operator(\)) - -comment(# 0 means unbuffered) -ident(LF) operator(=) ident(Logfile)operator(()predefined(open)operator(()string<delimiter(")content(/tmp/mylog)delimiter(")>operator(,) string<delimiter(")content(a+)delimiter(")>operator(,) integer(0)operator(\))operator(\)) -ident(logmsg) operator(=) ident(LF)operator(.)ident(logmsg) - -comment(#-----------------------------) -comment(## It is more appropriate to use try/finally around the) -comment(## main code, so the order of initialization and finalization) -comment(## can be specified.) -keyword(if) ident(__name__) operator(==) string<delimiter(")content(__main__)delimiter(")>operator(:) - keyword(import) include(logger) - ident(logger)operator(.)ident(init)operator(()string<delimiter(")content(/tmp/mylog)delimiter(")>operator(\)) - keyword(try)operator(:) - ident(main)operator(()operator(\)) - keyword(finally)operator(:) - ident(logger)operator(.)ident(close)operator(()operator(\)) - -comment(#-----------------------------) - -comment(# ^^PLEAC^^_12.7) -comment(#-----------------------------) -comment(#% python -c 'import sys\\) -keyword(for) ident(i)operator(,) ident(name) keyword(in) predefined(zip)operator(()predefined(xrange)operator(()ident(sys)operator(.)ident(maxint)operator(\))operator(,) ident(sys)operator(.)ident(path)operator(\))operator(:)\ - keyword(print) ident(i)operator(,) predefined(repr)operator(()ident(name)operator(\)) -comment(#> 0 '') -comment(#> 1 '/usr/lib/python2.2') -comment(#> 2 '/usr/lib/python2.2/plat-linux2') -comment(#> 3 '/usr/lib/python2.2/lib-tk') -comment(#-----------------------------) -comment(# syntax for sh, bash, ksh, or zsh) -comment(#$ export PYTHONPATH=$HOME/pythonlib) - -comment(# syntax for csh or tcsh) -comment(#% setenv PYTHONPATH ~/pythonlib) -comment(#-----------------------------) -keyword(import) include(sys) -ident(sys)operator(.)ident(path)operator(.)ident(insert)operator(()integer(0)operator(,) string<delimiter(")content(/projects/spectre/lib)delimiter(")>operator(\)) -comment(#-----------------------------) -keyword(import) include(FindBin) -ident(sys)operator(.)ident(path)operator(.)ident(insert)operator(()integer(0)operator(,) ident(FindBin)operator(.)ident(Bin)operator(\)) -comment(#-----------------------------) -keyword(import) include(FindBin) -ident(Bin) operator(=) string<delimiter(")content(Name)delimiter(")> -ident(bin) operator(=) predefined(getattr)operator(()ident(FindBin)operator(,) ident(Bin)operator(\)) -ident(sys)operator(.)ident(path)operator(.)ident(insert)operator(()integer(0)operator(,) predefined(bin) operator(+) string<delimiter(")content(/../lib)delimiter(")>operator(\)) -comment(#-----------------------------) - -comment(# ^^PLEAC^^_12.8) -comment(#-----------------------------) -comment(#% h2xs -XA -n Planets) -comment(#% h2xs -XA -n Astronomy::Orbits) -comment(#-----------------------------) -comment(# @@INCOMPLETE@@) -comment(# @@INCOMPLETE@@) -comment(# Need a distutils example) -comment(#-----------------------------) - -comment(# ^^PLEAC^^_12.9) -comment(#-----------------------------) -comment(# Python compiles a file to bytecode the first time it is imported and ) -comment(# stores this compiled form in a .pyc file. There is thus less need for) -comment(# incremental compilation as once there is a .pyc file, the sourcecode) -comment(# is only recompiled if it is modified. ) - -comment(# ^^PLEAC^^_12.10) -comment(#-----------------------------) -comment(# See previous section) - -comment(# ^^PLEAC^^_12.11) -comment(#-----------------------------) -comment(## Any definition in a Python module overrides the builtin) -comment(## for that module) - -comment(#=== In MyModule) -keyword(def) method(open)operator(()operator(\))operator(:) - keyword(pass) comment(# TBA) -comment(#-----------------------------) -keyword(from) include(MyModule) keyword(import) include(open) -ident(file) operator(=) predefined(open)operator(()operator(\)) -comment(#-----------------------------) - -comment(# ^^PLEAC^^_12.12) -comment(#-----------------------------) -keyword(def) method(even_only)operator(()ident(n)operator(\))operator(:) - keyword(if) ident(n) operator(&) integer(1)operator(:) comment(# one way to test) - keyword(raise) exception(AssertionError)operator(()string<delimiter(")content(%s is not even)delimiter(")> operator(%) operator(()ident(n)operator(,)operator(\))operator(\)) - comment(#....) - -comment(#-----------------------------) -keyword(def) method(even_only)operator(()ident(n)operator(\))operator(:) - keyword(if) ident(n) operator(%) integer(2)operator(:) comment(# here's another) - comment(# choice of exception depends on the problem) - keyword(raise) exception(TypeError)operator(()string<delimiter(")content(%s is not even)delimiter(")> operator(%) operator(()ident(n)operator(,)operator(\))operator(\)) - comment(#....) - -comment(#-----------------------------) -keyword(import) include(warnings) -keyword(def) method(even_only)operator(()ident(n)operator(\))operator(:) - keyword(if) ident(n) operator(&) integer(1)operator(:) comment(# test whether odd number) - ident(warnings)operator(.)ident(warn)operator(()string<delimiter(")content(%s is not even, continuing)delimiter(")> operator(%) operator(()ident(n)operator(\))operator(\)) - ident(n) operator(+=) integer(1) - comment(#....) -comment(#-----------------------------) -ident(warnings)operator(.)ident(filterwarnings)operator(()string<delimiter(")content(ignore)delimiter(")>operator(\)) -comment(#-----------------------------) - -comment(# ^^PLEAC^^_12.13) -comment(#-----------------------------) -ident(val) operator(=) predefined(getattr)operator(()predefined(__import__)operator(()ident(packname)operator(\))operator(,) ident(varname)operator(\)) -ident(vals) operator(=) predefined(getattr)operator(()predefined(__import__)operator(()ident(packname)operator(\))operator(,) ident(aryname)operator(\)) -predefined(getattr)operator(()predefined(__import__)operator(()ident(packname)operator(\))operator(,) ident(funcname)operator(\))operator(()string<delimiter(")content(args)delimiter(")>operator(\)) - -comment(#-----------------------------) -comment(# DON'T DO THIS [Use math.log(val, base\) instead]) -keyword(import) include(math) -keyword(def) method(make_log)operator(()ident(n)operator(\))operator(:) - keyword(def) method(logn)operator(()ident(val)operator(\))operator(:) - keyword(return) ident(math)operator(.)ident(log)operator(()ident(val)operator(,) ident(n)operator(\)) - keyword(return) ident(logn) - -comment(# Modifying the global dictionary - this could also be done) -comment(# using locals(\), or someobject.__dict__) -ident(globaldict) operator(=) predefined(globals)operator(()operator(\)) -keyword(for) ident(i) keyword(in) predefined(range)operator(()integer(2)operator(,) integer(1000)operator(\))operator(:) - ident(globaldict)operator([)string<delimiter(")content(log%s)delimiter(")>operator(%)ident(i)operator(]) operator(=) ident(make_log)operator(()ident(i)operator(\)) - -comment(# DON'T DO THIS) -keyword(for) ident(i) keyword(in) predefined(range)operator(()integer(2)operator(,)integer(1000)operator(\))operator(:) - keyword(exec) string<delimiter(")content(log%s = make_log(i\))delimiter(")>operator(%)ident(i) keyword(in) predefined(globals)operator(()operator(\)) - -keyword(print) ident(log20)operator(()integer(400)operator(\)) -comment(#=>2.0) -comment(#-----------------------------) -ident(blue) operator(=) ident(colours)operator(.)ident(blue) -ident(someobject)operator(.)ident(blue) operator(=) ident(colours)operator(.)ident(azure) comment(# someobject could be a module...) -comment(#-----------------------------) - -comment(# ^^PLEAC^^_12.14) -comment(#-----------------------------) -comment(# Python extension modules can be imported and used just like) -comment(# a pure python module.) -comment(#) -comment(# See http://www.cosc.canterbury.ac.nz/~greg/python/Pyrex/ for) -comment(# information on how to create extension modules in Pyrex [a) -comment(# language that's basically Python with type definitions which) -comment(# converts to compiled C code]) -comment(#) -comment(# See http://www.boost.org/libs/python/doc/ for information on how) -comment(# to create extension modules in C++.) -comment(#) -comment(# See http://www.swig.org/Doc1.3/Python.html for information on how) -comment(# to create extension modules in C/C++) -comment(#) -comment(# See http://docs.python.org/ext/ext.html for information on how to) -comment(# create extension modules in C/C++ (manual reference count management\).) -comment(#) -comment(# See http://cens.ioc.ee/projects/f2py2e/ for information on how to) -comment(# create extension modules in Fortran) -comment(#) -comment(# See http://www.scipy.org/Weave for information on how to ) -comment(# include inline C code in Python code.) -comment(#) -comment(# @@INCOMPLETE@@ Need examples of FineTime extensions using the different methods...) -comment(#-----------------------------) - -comment(# ^^PLEAC^^_12.15) -comment(#-----------------------------) -comment(# See previous section) -comment(#-----------------------------) - -comment(# ^^PLEAC^^_12.16) -comment(#-----------------------------) -comment(# To document code, use docstrings. A docstring is a bare string that) -comment(# is placed at the beginning of a module or immediately after the ) -comment(# definition line of a class, method, or function. Normally, the) -comment(# first line is a brief description of the object; if a longer) -comment(# description is needed, it commences on the third line (the second) -comment(# line being left blank\). Multiline comments should use triple) -comment(# quoted strings.) -comment(# ) -comment(# Docstrings are automagically assigned to an object's __doc__ property.) -comment(#) -comment(# In other words these three classes are identical:) -keyword(class) class(Foo)operator(()predefined(object)operator(\))operator(:) - string<delimiter(")content(A class demonstrating docstrings.)delimiter(")> - -keyword(class) class(Foo)operator(()predefined(object)operator(\))operator(:) - ident(__doc__) operator(=) string<delimiter(")content(A class demonstrating docstrings.)delimiter(")> - -keyword(class) class(Foo)operator(()predefined(object)operator(\))operator(:) - keyword(pass) -ident(Foo)operator(.)ident(__doc__) operator(=) string<delimiter(")content(A class demonstrating docstrings.)delimiter(")> - -comment(# as are these two functions:) -keyword(def) method(foo)operator(()operator(\))operator(:) - string<delimiter(")content(A function demonstrating docstrings.)delimiter(")> - -keyword(def) method(foo)operator(()operator(\))operator(:) - keyword(pass) -ident(foo)operator(.)ident(__doc__) operator(=) string<delimiter(")content(A function demonstrating docstrings.)delimiter(")> - -comment(# the pydoc module is used to display a range of information about ) -comment(# an object including its docstrings:) -keyword(import) include(pydoc) -keyword(print) ident(pydoc)operator(.)ident(getdoc)operator(()predefined(int)operator(\)) -ident(pydoc)operator(.)ident(help)operator(()predefined(int)operator(\)) - -comment(# In the interactive interpreter, objects' documentation can be ) -comment(# using the help function:) -ident(help)operator(()predefined(int)operator(\)) - -comment(#-----------------------------) - -comment(# ^^PLEAC^^_12.17) -comment(#-----------------------------) -comment(# Recent Python distributions are built and installed with disutils.) -comment(# ) -comment(# To build and install under unix) -comment(# ) -comment(# % python setup.py install) -comment(# ) -comment(# If you want to build under one login and install under another) -comment(# ) -comment(# % python setup.py build) -comment(# $ python setup.py install) -comment(# ) -comment(# A package may also be available prebuilt, eg, as an RPM or Windows) -comment(# installer. Details will be specific to the operating system.) - -comment(#-----------------------------) -comment(# % python setup.py --prefix ~/python-lib) -comment(#-----------------------------) - - -comment(# ^^PLEAC^^_12.18) -comment(#-----------------------------) -comment(#== File Some/Module.py) - -comment(# There are so many differences between Python and Perl that) -comment(# it isn't worthwhile trying to come up with an equivalent to) -comment(# this Perl code. The Python code is much smaller, and there's) -comment(# no need to have a template.) - -comment(#-----------------------------) - -comment(# ^^PLEAC^^_12.19) -comment(#-----------------------------) -comment(#% pmdesc) -comment(#-----------------------------) -keyword(import) include(sys)operator(,) include(pydoc) - -keyword(def) method(print_module_info)operator(()ident(path)operator(,) ident(modname)operator(,) ident(desc)operator(\))operator(:) - comment(# Skip files starting with "test_") - keyword(if) ident(modname)operator(.)ident(split)operator(()string<delimiter(")content(.)delimiter(")>operator(\))operator([)operator(-)integer(1)operator(])operator(.)ident(startswith)operator(()string<delimiter(")content(test_)delimiter(")>operator(\))operator(:) - keyword(return) - keyword(try)operator(:) - comment(# This assumes the modules are safe for importing,) - comment(# in that they don't have side effects. Could also) - comment(# grep the file for the __version__ line.) - ident(mod) operator(=) ident(pydoc)operator(.)ident(safeimport)operator(()ident(modname)operator(\)) - keyword(except) ident(pydoc)operator(.)ident(ErrorDuringImport)operator(:) - keyword(return) - ident(version) operator(=) predefined(getattr)operator(()ident(mod)operator(,) string<delimiter(")content(__version__)delimiter(")>operator(,) string<delimiter(")content(unknown)delimiter(")>operator(\)) - keyword(if) predefined(isinstance)operator(()ident(version)operator(,) predefined(type)operator(()string<delimiter(")delimiter(")>operator(\))operator(\))operator(:) - comment(# Use the string if it's given) - keyword(pass) - keyword(else)operator(:) - comment(# Assume it's a list of version numbers, from major to minor) - string<delimiter(")content(.)delimiter(")>operator(.)ident(join)operator(()predefined(map)operator(()predefined(str)operator(,) ident(version)operator(\))operator(\)) - ident(synopsis)operator(,) ident(text) operator(=) ident(pydoc)operator(.)ident(splitdoc)operator(()ident(desc)operator(\)) - keyword(print) string<delimiter(")content(%s (%s\) - %s)delimiter(")> operator(%) operator(()ident(modname)operator(,) ident(version)operator(,) ident(synopsis)operator(\)) - -ident(scanner) operator(=) ident(pydoc)operator(.)ident(ModuleScanner)operator(()operator(\)) -ident(scanner)operator(.)ident(run)operator(()ident(print_module_info)operator(\)) - -comment(#-----------------------------) - - -comment(# ^^PLEAC^^_13.0) -comment(#-----------------------------) -comment(# Inside a module named 'Data' / file named 'Data.py') -keyword(class) class(Encoder)operator(()predefined(object)operator(\))operator(:) - keyword(pass) -comment(#-----------------------------) -ident(obj) operator(=) operator([)integer(3)operator(,) integer(5)operator(]) -keyword(print) predefined(type)operator(()ident(obj)operator(\))operator(,) predefined(id)operator(()ident(obj)operator(\))operator(,) ident(ob)operator([)integer(1)operator(]) - -comment(## Changing the class of builtin types is not supported) -comment(## in Python.) - -comment(#-----------------------------) -ident(obj)operator(.)ident(Stomach) operator(=) string<delimiter(")content(Empty)delimiter(")> comment(# directly accessing an object's contents) -ident(obj)operator(.)ident(NAME) operator(=) string<delimiter(")content(Thag)delimiter(")> comment(# uppercase field name to make it stand out) -operator(()ident(optional)operator(\)) -comment(#-----------------------------) -ident(encoded) operator(=) predefined(object)operator(.)ident(encode)operator(()string<delimiter(")content(data)delimiter(")>operator(\)) -comment(#-----------------------------) -ident(encoded) operator(=) ident(Data)operator(.)ident(Encoder)operator(.)ident(encode)operator(()string<delimiter(")content(data)delimiter(")>operator(\)) -comment(#-----------------------------) -keyword(class) class(Class)operator(()predefined(object)operator(\))operator(:) - keyword(def) method(__init__)operator(()pre_constant(self)operator(\))operator(:) - keyword(pass) -comment(#-----------------------------) -ident(object) operator(=) ident(Class)operator(()operator(\)) -comment(#-----------------------------) -keyword(class) class(Class)operator(()predefined(object)operator(\))operator(:) - keyword(def) method(class_only_method)operator(()operator(\))operator(:) - keyword(pass) comment(# more code here) - ident(class_only_method) operator(=) predefined(staticmethod)operator(()ident(class_only_method)operator(\)) - -comment(#-----------------------------) -keyword(class) class(Class)operator(()predefined(object)operator(\))operator(:) - keyword(def) method(instance_only_method)operator(()pre_constant(self)operator(\))operator(:) - keyword(pass) comment(# more code here) -comment(#-----------------------------) -ident(lector) operator(=) ident(Human)operator(.)ident(Cannibal)operator(()operator(\)) -ident(lector)operator(.)ident(feed)operator(()string<delimiter(")content(Zak)delimiter(")>operator(\)) -ident(lector)operator(.)ident(move)operator(()string<delimiter(")content(New York)delimiter(")>operator(\)) -comment(#-----------------------------) -comment(# NOTE: it is rare to use these forms except inside of) -comment(# methods to call specific methods from a parent class) -ident(lector) operator(=) ident(Human)operator(.)ident(Cannibal)operator(()operator(\)) -ident(Human)operator(.)ident(Cannibal)operator(.)ident(feed)operator(()ident(lector)operator(,) string<delimiter(")content(Zak)delimiter(")>operator(\)) -ident(Human)operator(.)ident(Cannibal)operator(.)ident(move)operator(()ident(lector)operator(,) string<delimiter(")content(New York)delimiter(")>operator(\)) -comment(#-----------------------------) -keyword(print)operator(>>)ident(sys)operator(.)ident(stderr)operator(,) string<delimiter(")content(stuff here)char(\\n)delimiter(")> - -comment(# ^^PLEAC^^_13.1) -comment(#-----------------------------) -keyword(class) class(Class)operator(()predefined(object)operator(\))operator(:) - keyword(pass) -comment(#-----------------------------) -keyword(import) include(time) -keyword(class) class(Class)operator(()predefined(object)operator(\))operator(:) - keyword(def) method(__init__)operator(()pre_constant(self)operator(\))operator(:) - pre_constant(self)operator(.)ident(start) operator(=) ident(time)operator(.)ident(time)operator(()operator(\)) comment(# init data fields) - pre_constant(self)operator(.)ident(age) operator(=) integer(0) -comment(#-----------------------------) -keyword(import) include(time) -keyword(class) class(Class)operator(()predefined(object)operator(\))operator(:) - keyword(def) method(__init__)operator(()pre_constant(self)operator(,) operator(**)ident(kwargs)operator(\))operator(:) - comment(# Sets self.start to the current time, and self.age to 0. If called) - comment(# with arguments, interpret them as key+value pairs to) - comment(# initialize the object with) - pre_constant(self)operator(.)ident(age) operator(=) integer(0) - pre_constant(self)operator(.)ident(__dict__)operator(.)ident(update)operator(()ident(kwargs)operator(\)) -comment(#-----------------------------) - -comment(# ^^PLEAC^^_13.2) -comment(#-----------------------------) -keyword(import) include(time) -keyword(class) class(Class)operator(()predefined(object)operator(\))operator(:) - keyword(def) method(__del__)operator(()pre_constant(self)operator(\))operator(:) - keyword(print) pre_constant(self)operator(,) string<delimiter(")content(dying at)delimiter(")>operator(,) ident(time)operator(.)ident(ctime)operator(()operator(\)) -comment(#-----------------------------) -comment(## Why is the perl code introducing a cycle? I guess it's an) -comment(## example of how to keep from calling the finalizer) -pre_constant(self)operator(.)ident(WHATEVER) operator(=) pre_constant(self) -comment(#-----------------------------) - -comment(# ^^PLEAC^^_13.3) -comment(#-----------------------------) -comment(# It is standard practice to access attributes directly:) -keyword(class) class(MyClass)operator(()predefined(object)operator(\)) - keyword(def) method(__init__)operator(()pre_constant(self)operator(\))operator(:) - pre_constant(self)operator(.)ident(name) operator(=) string<delimiter(")content(default)delimiter(")> - pre_constant(self)operator(.)ident(age) operator(=) integer(0) -ident(obj) operator(=) ident(MyClass)operator(()operator(\)) -ident(obj)operator(.)ident(name) operator(=) string<delimiter(")content(bob)delimiter(")> -keyword(print) ident(obj)operator(.)ident(name) -ident(obj)operator(.)ident(age) operator(+=) integer(1) - -comment(# If you later find that you need to compute an attribute, you can always ) -comment(# retrofit a property(\), leaving user code untouched:) -keyword(class) class(MyClass)operator(()predefined(object)operator(\))operator(:) - keyword(def) method(__init__)operator(()pre_constant(self)operator(\))operator(:) - pre_constant(self)operator(.)ident(_name) operator(=) string<delimiter(")content(default)delimiter(")> - pre_constant(self)operator(.)ident(_age) operator(=) integer(0) - - keyword(def) method(get_name)operator(()pre_constant(self)operator(\))operator(:) - keyword(return) pre_constant(self)operator(.)ident(_name) - keyword(def) method(set_name)operator(()pre_constant(self)operator(,) ident(name)operator(\))operator(:) - pre_constant(self)operator(.)ident(_name) operator(=) ident(name)operator(.)ident(title)operator(()operator(\)) - ident(name) operator(=) predefined(property)operator(()ident(get_name)operator(,) ident(set_name)operator(\)) - - keyword(def) method(get_age)operator(()pre_constant(self)operator(\))operator(:) - keyword(return) pre_constant(self)operator(.)ident(_age) - keyword(def) method(set_age)operator(()pre_constant(self)operator(,) ident(val)operator(\))operator(:) - keyword(if) ident(val) operator(<) integer(0)operator(:) - keyword(raise) exception(ValueError)operator(()string<delimiter(")content(Invalid age: %s)delimiter(")> operator(%) ident(val)operator(\)) - pre_constant(self)operator(.)ident(_age) operator(=) ident(val) - ident(age) operator(=) predefined(property)operator(()ident(get_age)operator(,) ident(set_age)operator(\)) -ident(obj) operator(=) ident(MyClass)operator(()operator(\)) -ident(obj)operator(.)ident(name) operator(=) string<delimiter(")content(bob)delimiter(")> -keyword(print) ident(obj)operator(.)ident(name) -ident(obj)operator(.)ident(age) operator(+=) integer(1) - -comment(# DON'T DO THIS - explicit getters and setters should not be used:) -keyword(class) class(MyClass)operator(()predefined(object)operator(\))operator(:) - keyword(def) method(__init__)operator(()pre_constant(self)operator(\))operator(:) - pre_constant(self)operator(.)ident(name) operator(=) string<delimiter(")content(default)delimiter(")> - keyword(def) method(get_name)operator(()pre_constant(self)operator(\))operator(:) - keyword(return) pre_constant(self)operator(.)ident(name) - keyword(def) method(set_name)operator(()pre_constant(self)operator(,) ident(name)operator(\))operator(:) - pre_constant(self)operator(.)ident(name) operator(=) ident(name)operator(.)ident(title)operator(()operator(\)) -ident(obj) operator(=) ident(MyClass)operator(()operator(\)) -ident(obj)operator(.)ident(set_name)operator(()string<delimiter(")content(bob)delimiter(")>operator(\)) -keyword(print) ident(obj)operator(.)ident(get_name)operator(()operator(\)) -comment(#-----------------------------) -comment(## DON'T DO THIS (It's complex, ugly, and unnecessary\):) -keyword(class) class(MyClass)operator(()predefined(object)operator(\))operator(:) - keyword(def) method(__init__)operator(()pre_constant(self)operator(\))operator(:) - pre_constant(self)operator(.)ident(age) operator(=) integer(0) - keyword(def) method(name)operator(()pre_constant(self)operator(,) operator(*)ident(args)operator(\))operator(:) - keyword(if) predefined(len)operator(()ident(args)operator(\)) operator(==) integer(0)operator(:) - keyword(return) pre_constant(self)operator(.)ident(name) - keyword(elif) predefined(len)operator(()ident(args)operator(\)) operator(==) integer(1)operator(:) - pre_constant(self)operator(.)ident(name) operator(=) ident(args)operator([)integer(0)operator(]) - keyword(else)operator(:) - keyword(raise) exception(TypeError)operator(()string<delimiter(")content(name only takes 0 or 1 arguments)delimiter(")>operator(\)) - keyword(def) method(age)operator(()pre_constant(self)operator(,) operator(*)ident(args)operator(\))operator(:) - ident(prev) operator(=) pre_constant(self)operator(.)ident(age) - keyword(if) ident(args)operator(:) - pre_constant(self)operator(.)ident(age) operator(=) ident(args)operator([)integer(0)operator(]) - keyword(return) ident(prev) - -comment(# sample call of get and set: happy birthday!) -ident(obj)operator(.)ident(age)operator(()integer(1) operator(+) ident(obj)operator(.)ident(age)operator(()operator(\))operator(\)) - -comment(#-----------------------------) -ident(him) operator(=) ident(Person)operator(()operator(\)) -ident(him)operator(.)ident(NAME) operator(=) string<delimiter(")content(Sylvester)delimiter(")> -ident(him)operator(.)ident(AGE) operator(=) integer(23) -comment(#-----------------------------) -comment(# Here's another way to implement the 'obj.method(\)' is a getter) -comment(# and 'obj.method(value\)' is a settor. Again, this is not a) -comment(# common Python idiom and should not be used. See below for a) -comment(# more common way to do parameter checking of attribute assignment.) - -keyword(import) include(re)operator(,) include(sys) - -keyword(def) method(carp)operator(()ident(s)operator(\))operator(:) - ident(sys)operator(.)ident(stderr)operator(.)ident(write)operator(()string<delimiter(")content(WARNING: )delimiter(")> operator(+) ident(s) operator(+) string<delimiter(")char(\\n)delimiter(")>operator(\)) - -keyword(class) class(Class)operator(:) - ident(no_name) operator(=) operator([)operator(]) - - keyword(def) method(name)operator(()pre_constant(self)operator(,) ident(value) operator(=) ident(no_name)operator(\))operator(:) - keyword(if) ident(value) keyword(is) ident(Class)operator(.)ident(no_name)operator(:) - keyword(return) pre_constant(self)operator(.)ident(NAME) - ident(value) operator(=) pre_constant(self)operator(.)ident(_enforce_name_value)operator(()ident(value)operator(\)) - pre_constant(self)operator(.)ident(NAME) operator(=) ident(value) - - keyword(def) method(_enforce_name_value)operator(()pre_constant(self)operator(,) ident(value)operator(\))operator(:) - keyword(if) ident(re)operator(.)ident(search)operator(()string<modifier(r)delimiter(")content([^)content(\\s)content(\\w)content('-])delimiter(")>operator(,) ident(value)operator(\))operator(:) - ident(carp)operator(()string<delimiter(")content(funny characters in name)delimiter(")>operator(\)) - keyword(if) ident(re)operator(.)ident(search)operator(()string<modifier(r)delimiter(")content(\\d)delimiter(")>operator(,) ident(value)operator(\))operator(:) - ident(carp)operator(()string<delimiter(")content(numbers in name)delimiter(")>operator(\)) - keyword(if) keyword(not) ident(re)operator(.)ident(search)operator(()string<modifier(r)delimiter(")content(\\S)content(+()content(\\s)content(+)content(\\S)content(+\)+)delimiter(")>operator(,) ident(value)operator(\))operator(:) - ident(carp)operator(()string<delimiter(")content(prefer multiword name)delimiter(")>operator(\)) - keyword(if) keyword(not) ident(re)operator(.)ident(search)operator(()string<modifier(r)delimiter(")content(\\S)delimiter(")>operator(,) ident(value)operator(\))operator(:) - ident(carp)operator(()string<delimiter(")content(name is blank)delimiter(")>operator(\)) - keyword(return) ident(value)operator(.)ident(upper)operator(()operator(\)) comment(# enforce capitalization) -comment(#-----------------------------) -comment(# A more typical way to enforce restrictions on a value) -comment(# to set) -keyword(class) class(Class)operator(:) - keyword(def) method(__setattr__)operator(()pre_constant(self)operator(,) ident(name)operator(,) ident(value)operator(\))operator(:) - keyword(if) ident(name) operator(==) string<delimiter(")content(name)delimiter(")>operator(:) - ident(value) operator(=) pre_constant(self)operator(.)ident(_enforce_name_value)operator(()ident(value)operator(\)) comment(# Do any conversions) - pre_constant(self)operator(.)ident(__dict__)operator([)ident(name)operator(]) operator(=) ident(value) comment(# Do the default __setattr__ action) - - keyword(def) method(_enforce_name_value)operator(()pre_constant(self)operator(,) ident(value)operator(\))operator(:) - keyword(if) ident(re)operator(.)ident(search)operator(()string<modifier(r)delimiter(")content([^)content(\\s)content(\\w)content('-])delimiter(")>operator(,) ident(value)operator(\))operator(:) - ident(carp)operator(()string<delimiter(")content(funny characters in name)delimiter(")>operator(\)) - keyword(if) ident(re)operator(.)ident(search)operator(()string<modifier(r)delimiter(")content(\\d)delimiter(")>operator(,) ident(value)operator(\))operator(:) - ident(carp)operator(()string<delimiter(")content(numbers in name)delimiter(")>operator(\)) - keyword(if) keyword(not) ident(re)operator(.)ident(search)operator(()string<modifier(r)delimiter(")content(\\S)content(+()content(\\s)content(+)content(\\S)content(+\)+)delimiter(")>operator(,) ident(value)operator(\))operator(:) - ident(carp)operator(()string<delimiter(")content(prefer multiword name)delimiter(")>operator(\)) - keyword(if) keyword(not) ident(re)operator(.)ident(search)operator(()string<modifier(r)delimiter(")content(\\S)delimiter(")>operator(,) ident(value)operator(\))operator(:) - ident(carp)operator(()string<delimiter(")content(name is blank)delimiter(")>operator(\)) - keyword(return) ident(value)operator(.)ident(upper)operator(()operator(\)) comment(# enforce capitalization) - -comment(#-----------------------------) -keyword(class) class(Person)operator(:) - keyword(def) method(__init__)operator(()pre_constant(self)operator(,) ident(name) operator(=) pre_constant(None)operator(,) ident(age) operator(=) pre_constant(None)operator(,) ident(peers) operator(=) pre_constant(None)operator(\))operator(:) - keyword(if) ident(peers) keyword(is) pre_constant(None)operator(:) ident(peers) operator(=) operator([)operator(]) comment(# See Python FAQ 6.25) - pre_constant(self)operator(.)ident(name) operator(=) ident(name) - pre_constant(self)operator(.)ident(age) operator(=) ident(age) - pre_constant(self)operator(.)ident(peers) operator(=) ident(peers) - - keyword(def) method(exclaim)operator(()pre_constant(self)operator(\))operator(:) - keyword(return) string<delimiter(")content(Hi, I'm %s, age %d, working with %s)delimiter(")> operator(%) \ - operator(()pre_constant(self)operator(.)ident(name)operator(,) pre_constant(self)operator(.)ident(age)operator(,) string<delimiter(")content(, )delimiter(")>operator(.)ident(join)operator(()pre_constant(self)operator(.)ident(peers)operator(\))operator(\)) - - keyword(def) method(happy_birthday)operator(()pre_constant(self)operator(\))operator(:) - pre_constant(self)operator(.)ident(age) operator(+=) integer(1) - keyword(return) pre_constant(self)operator(.)ident(age) -comment(#-----------------------------) - -comment(# ^^PLEAC^^_13.4) -comment(#-----------------------------) -comment(## In the module named 'Person' ...) -keyword(def) method(population)operator(()operator(\))operator(:) - keyword(return) ident(Person)operator(.)ident(body_count)operator([)integer(0)operator(]) - -keyword(class) class(Person)operator(()predefined(object)operator(\))operator(:) - ident(body_count) operator(=) operator([)integer(0)operator(]) comment(# class variable - shared across all instances) - - keyword(def) method(__init__)operator(()pre_constant(self)operator(\))operator(:) - pre_constant(self)operator(.)ident(body_count)operator([)integer(0)operator(]) operator(+=) integer(1) - - keyword(def) method(__del__)operator(()pre_constant(self)operator(\))operator(:) comment(# Beware - may be non-deterministic (Jython\)!) - pre_constant(self)operator(.)ident(body_count)operator([)integer(0)operator(]) operator(-=) integer(1) - -comment(# later, the user can say this:) -keyword(import) include(Person) -ident(people) operator(=) operator([)operator(]) -keyword(for) ident(i) keyword(in) predefined(range)operator(()integer(10)operator(\))operator(:) - ident(people)operator(.)ident(append)operator(()ident(Person)operator(.)ident(Person)operator(()operator(\))operator(\)) -keyword(print) string<delimiter(")content(There are)delimiter(")>operator(,) ident(Person)operator(.)ident(population)operator(()operator(\))operator(,) string<delimiter(")content(people alive.)delimiter(")> - -comment(#=> There are 10 people alive.) -comment(#-----------------------------) -ident(him) operator(=) ident(Person)operator(()operator(\)) -ident(him)operator(.)ident(gender) operator(=) string<delimiter(")content(male)delimiter(")> - -ident(her) operator(=) ident(Person)operator(()operator(\)) -ident(her)operator(.)ident(gender) operator(=) string<delimiter(")content(female)delimiter(")> - -comment(#-----------------------------) -ident(FixedArray)operator(.)ident(max_bounds) operator(=) integer(100) comment(# set for whole class) -ident(alpha) operator(=) ident(FixedArray)operator(.)ident(FixedArray)operator(()operator(\)) -keyword(print) string<delimiter(")content(Bound on alpha is)delimiter(")>operator(,) ident(alpha)operator(.)ident(max_bounds) -comment(#=>100) - -ident(beta) operator(=) ident(FixedArray)operator(.)ident(FixedArray)operator(()operator(\)) -ident(beta)operator(.)ident(max_bounds) operator(=) integer(50) comment(# still sets for whole class) -keyword(print) string<delimiter(")content(Bound on alpha is)delimiter(")>operator(,) ident(alpha)operator(.)ident(max_bounds) -comment(#=>50) -comment(#-----------------------------) -comment(# In the module named 'FixedArray') - -keyword(class) class(FixedArray)operator(()predefined(object)operator(\))operator(:) - ident(_max_bounds) operator(=) operator([)integer(7)operator(]) comment(# Shared across whole class) - - keyword(def) method(__init__)operator(()pre_constant(self)operator(,) ident(bounds)operator(=)pre_constant(None)operator(\))operator(:) - keyword(if) ident(bounds) keyword(is) keyword(not) pre_constant(None)operator(:) - pre_constant(self)operator(.)ident(max_bounds) operator(=) ident(bounds) - - keyword(def) method(get_max_bounds)operator(()pre_constant(self)operator(\))operator(:) - keyword(return) pre_constant(self)operator(.)ident(_max_bounds)operator([)integer(0)operator(]) - keyword(def) method(set_max_bounds)operator(()pre_constant(self)operator(,) ident(val)operator(\))operator(:) - pre_constant(self)operator(.)ident(_max_bounds)operator([)integer(0)operator(]) operator(=) ident(val) - ident(max_bounds) operator(=) predefined(property)operator(()ident(get_max_bounds)operator(,) ident(set_max_bounds)operator(\)) -comment(#-----------------------------) - -comment(# ^^PLEAC^^_13.5) -comment(#-----------------------------) -comment(# There isn't the severe separation between scalar, arrays and hashs) -comment(# in Python, so there isn't a direct equivalent to the Perl code.) -keyword(class) class(Person)operator(:) - keyword(def) method(__init__)operator(()pre_constant(self)operator(,) ident(name)operator(=)pre_constant(None)operator(,) ident(age)operator(=)pre_constant(None)operator(,) ident(peers)operator(=)pre_constant(None)operator(\))operator(:) - keyword(if) ident(peers) keyword(is) pre_constant(None)operator(:) - ident(peers) operator(=) operator([)operator(]) - pre_constant(self)operator(.)ident(name) operator(=) ident(name) - pre_constant(self)operator(.)ident(age) operator(=) ident(age) - pre_constant(self)operator(.)ident(peers) operator(=) ident(peers) - -ident(p) operator(=) ident(Person)operator(()string<delimiter(")content(Jason Smythe)delimiter(")>operator(,) integer(13)operator(,) operator([)string<delimiter(")content(Wilbur)delimiter(")>operator(,) string<delimiter(")content(Ralph)delimiter(")>operator(,) string<delimiter(")content(Fred)delimiter(")>operator(])operator(\)) - -comment(# or this way. (This is not the prefered style as objects should) -comment(# be constructed with all the appropriate data, if possible.\)) - -ident(p) operator(=) ident(Person)operator(()operator(\)) comment(# allocate an empty Person) -ident(p)operator(.)ident(name) operator(=) string<delimiter(")content(Jason Smythe)delimiter(")> comment(# set its name field) -ident(p)operator(.)ident(age) operator(=) integer(13) comment(# set its age field) -ident(p)operator(.)ident(peers)operator(.)ident(extend)operator(() operator([)string<delimiter(")content(Wilbur)delimiter(")>operator(,) string<delimiter(")content(Ralph)delimiter(")>operator(,) string<delimiter(")content(Fred)delimiter(")> operator(]) operator(\)) comment(# set its peers field) - -ident(p)operator(.)ident(peers) operator(=) operator([)string<delimiter(")content(Wilbur)delimiter(")>operator(,) string<delimiter(")content(Ralph)delimiter(")>operator(,) string<delimiter(")content(Fred)delimiter(")>operator(]) - -ident(p)operator(.)ident(peers)operator([)operator(:)operator(])operator(=) operator([)string<delimiter(")content(Wilbur)delimiter(")>operator(,) string<delimiter(")content(Ralph)delimiter(")>operator(,) string<delimiter(")content(Fred)delimiter(")>operator(]) - -comment(# fetch various values, including the zeroth friend) -keyword(print) string<delimiter(")content(At age %d, %s's first friend is %s.)delimiter(")> operator(%) \ - operator(()ident(p)operator(.)ident(age)operator(,) ident(p)operator(.)ident(name)operator(,) ident(p)operator(.)ident(peers)operator([)integer(0)operator(])operator(\)) -comment(#-----------------------------) -comment(# This isn't very Pythonic - should create objects with the) -comment(# needed data, and not depend on defaults and modifing the object.) -keyword(import) include(sys) -keyword(def) method(carp)operator(()ident(s)operator(\))operator(:) - ident(sys)operator(.)ident(stderr)operator(.)ident(write)operator(()string<delimiter(")content(WARNING: )delimiter(")> operator(+) ident(s) operator(+) string<delimiter(")char(\\n)delimiter(")>operator(\)) - -keyword(class) class(Person)operator(:) - keyword(def) method(__init__)operator(()pre_constant(self)operator(,) ident(name) operator(=) string<delimiter(")delimiter(")>operator(,) ident(age) operator(=) integer(0)operator(\))operator(:) - pre_constant(self)operator(.)ident(name) operator(=) ident(name) - pre_constant(self)operator(.)ident(age) operator(=) ident(age) - keyword(def) method(__setattr__)operator(()pre_constant(self)operator(,) ident(name)operator(,) ident(value)operator(\))operator(:) - keyword(if) ident(name) operator(==) string<delimiter(")content(age)delimiter(")>operator(:) - comment(# This is very unpythonic) - keyword(if) keyword(not) predefined(isinstance)operator(()ident(value)operator(,) predefined(type)operator(()integer(0)operator(\))operator(\))operator(:) - ident(carp)operator(()string<delimiter(")content(age '%s' isn't numeric)delimiter(")> operator(%) operator(()ident(value)operator(,)operator(\))operator(\)) - keyword(if) ident(value) operator(>) integer(150)operator(:) ident(carp)operator(()string<delimiter(")content(age '%s' is unreasonable)delimiter(")> operator(%) operator(()ident(value)operator(,)operator(\))operator(\)) - pre_constant(self)operator(.)ident(__dict__)operator([)ident(name)operator(]) operator(=) ident(value) - -keyword(class) class(Family)operator(:) - keyword(def) method(__init__)operator(()pre_constant(self)operator(,) ident(head) operator(=) pre_constant(None)operator(,) ident(address) operator(=) string<delimiter(")delimiter(")>operator(,) ident(members) operator(=) pre_constant(None)operator(\))operator(:) - keyword(if) ident(members) keyword(is) pre_constant(None)operator(:) ident(members) operator(=) operator([)operator(]) - pre_constant(self)operator(.)ident(head) operator(=) ident(head) keyword(or) ident(Person)operator(()operator(\)) - pre_constant(self)operator(.)ident(address) operator(=) ident(address) - pre_constant(self)operator(.)ident(members) operator(=) ident(members) - -ident(folks) operator(=) ident(Family)operator(()operator(\)) - -ident(dad) operator(=) ident(folks)operator(.)ident(head) -ident(dad)operator(.)ident(name) operator(=) string<delimiter(")content(John)delimiter(")> -ident(dad)operator(.)ident(age) operator(=) integer(34) - -keyword(print) string<delimiter(")content(%s's age is %d)delimiter(")> operator(%) operator(()ident(folks)operator(.)ident(head)operator(.)ident(name)operator(,) ident(folks)operator(.)ident(head)operator(.)ident(age)operator(\)) -comment(#-----------------------------) -keyword(class) class(Card)operator(:) - keyword(def) method(__init__)operator(()pre_constant(self)operator(,) ident(name)operator(=)pre_constant(None)operator(,) ident(color)operator(=)pre_constant(None)operator(,) ident(cost)operator(=)pre_constant(None)operator(,) - ident(type)operator(=)pre_constant(None)operator(,) ident(release)operator(=)pre_constant(None)operator(,) ident(text)operator(=)pre_constant(None)operator(\))operator(:) - pre_constant(self)operator(.)ident(name) operator(=) ident(name) - pre_constant(self)operator(.)ident(color) operator(=) ident(color) - pre_constant(self)operator(.)ident(cost) operator(=) ident(cost) - pre_constant(self)operator(.)ident(type) operator(=) predefined(type) - pre_constant(self)operator(.)ident(release) operator(=) ident(release) - pre_constant(self)operator(.)ident(type) operator(=) predefined(type) -comment(#-----------------------------) -comment(# For positional args) -keyword(class) class(Card)operator(:) - ident(_names) operator(=) operator(()string<delimiter(")content(name)delimiter(")>operator(,) string<delimiter(")content(color)delimiter(")>operator(,) string<delimiter(")content(cost)delimiter(")>operator(,) string<delimiter(")content(type)delimiter(")>operator(,) string<delimiter(")content(release)delimiter(")>operator(,) string<delimiter(")content(type)delimiter(")>operator(\)) - keyword(def) method(__init__)operator(()pre_constant(self)operator(,) operator(*)ident(args)operator(\))operator(:) - keyword(assert) predefined(len)operator(()ident(args)operator(\)) operator(<=) predefined(len)operator(()pre_constant(self)operator(.)ident(_names)operator(\)) - keyword(for) ident(k)operator(,) ident(v) keyword(in) predefined(zip)operator(()pre_constant(self)operator(.)ident(_names)operator(,) ident(args)operator(\))operator(:) - predefined(setattr)operator(()pre_constant(self)operator(,) ident(k)operator(,) pre_constant(None)operator(\)) -comment(#-----------------------------) -comment(# For keyword args) -keyword(class) class(Card)operator(:) - ident(_names) operator(=) operator(()string<delimiter(")content(name)delimiter(")>operator(,) string<delimiter(")content(color)delimiter(")>operator(,) string<delimiter(")content(cost)delimiter(")>operator(,) string<delimiter(")content(type)delimiter(")>operator(,) string<delimiter(")content(release)delimiter(")>operator(,) string<delimiter(")content(type)delimiter(")>operator(\)) - keyword(def) method(__init__)operator(()pre_constant(self)operator(,) operator(**)ident(kwargs)operator(\))operator(:) - keyword(for) ident(k) keyword(in) pre_constant(self)operator(.)ident(_names)operator(:) comment(# Set the defaults) - predefined(setattr)operator(()pre_constant(self)operator(,) ident(k)operator(,) pre_constant(None)operator(\)) - keyword(for) ident(k)operator(,) ident(v) keyword(in) ident(kwargs)operator(.)ident(items)operator(()operator(\))operator(:) comment(# add in the kwargs) - keyword(assert) ident(k) keyword(in) pre_constant(self)operator(.)ident(_names)operator(,) string<delimiter(")content(Unexpected kwarg: )delimiter(")> operator(+) ident(k) - predefined(setattr)operator(()pre_constant(self)operator(,) ident(k)operator(,) ident(v)operator(\)) -comment(#-----------------------------) -keyword(class) class(hostent)operator(:) - keyword(def) method(__init__)operator(()pre_constant(self)operator(,) ident(addr_list) operator(=) pre_constant(None)operator(,) ident(length) operator(=) pre_constant(None)operator(,) - ident(addrtype) operator(=) pre_constant(None)operator(,) ident(aliases) operator(=) pre_constant(None)operator(,) ident(name) operator(=) pre_constant(None)operator(\))operator(:) - pre_constant(self)operator(.)ident(addr_list) operator(=) ident(addr_list) keyword(or) operator([)operator(]) - pre_constant(self)operator(.)ident(length) operator(=) ident(length) keyword(or) integer(0) - pre_constant(self)operator(.)ident(addrtype) operator(=) ident(addrtype) keyword(or) string<delimiter(")delimiter(")> - pre_constant(self)operator(.)ident(aliases) operator(=) ident(aliases) keyword(or) operator([)operator(]) - pre_constant(self)operator(.)ident(name) operator(=) ident(name) keyword(or) string<delimiter(")delimiter(")> -comment(#-----------------------------) -comment(## XXX What do I do with these?) -comment(#define h_type h_addrtype) -comment(#define h_addr h_addr_list[0]) -comment(#-----------------------------) -comment(# make (hostent object\)->type(\) same as (hostent object\)->addrtype(\)) -comment(#) -comment(# *hostent::type = \\&hostent::addrtype;) -comment(#) -comment(# # make (hostenv object\)->) -comment(# addr(\)) -comment(# same as (hostenv object\)->addr_list(0\)) -comment(#sub hostent::addr { shift->addr_list(0,@_\) }) -comment(#-----------------------------) -comment(# No equivalent to Net::hostent (Python uses an unnamed tuple\)) -comment(#package Extra::hostent;) -comment(#use Net::hostent;) -comment(#@ISA = qw(hostent\);) -comment(#sub addr { shift->addr_list(0,@_\) }) -comment(#1;) -comment(#-----------------------------) - -comment(# ^^PLEAC^^_13.6) -comment(#-----------------------------) -keyword(class) class(Class)operator(()ident(Parent)operator(\))operator(:) - keyword(pass) -comment(#-----------------------------) -comment(## Note: this is unusual in Python code) -ident(ob1) operator(=) ident(SomeClass)operator(()operator(\)) -comment(# later on) -ident(ob2) operator(=) ident(ob1)operator(.)ident(__class__)operator(()operator(\)) -comment(#-----------------------------) -comment(## Note: this is unusual in Python code) -ident(ob1) operator(=) ident(Widget)operator(()operator(\)) -ident(ob2) operator(=) ident(ob1)operator(.)ident(__class__)operator(()operator(\)) -comment(#-----------------------------) -comment(# XXX I do not know the intent of the original Perl code) -comment(# Do not use this style of programming in Python.) -keyword(import) include(time) -keyword(class) class(Person)operator(()ident(possible)operator(,)ident(base)operator(,)ident(classes)operator(\))operator(:) - keyword(def) method(__init__)operator(()pre_constant(self)operator(,) operator(*)ident(args)operator(,) operator(**)ident(kwargs)operator(\))operator(:) - comment(# Call the parents' constructors, if there are any) - keyword(for) ident(baseclass) keyword(in) pre_constant(self)operator(.)ident(__class__)operator(.)ident(__bases__)operator(:) - ident(init) operator(=) predefined(getattr)operator(()ident(baseclass)operator(,) string<delimiter(")content(__init__)delimiter(")>operator(\)) - keyword(if) ident(init) keyword(is) keyword(not) pre_constant(None)operator(:) - ident(init)operator(()pre_constant(self)operator(,) operator(*)ident(args)operator(,) operator(**)ident(kwargs)operator(\)) - pre_constant(self)operator(.)ident(PARENT) operator(=) ident(parent) comment(# init data fields) - pre_constant(self)operator(.)ident(START) operator(=) ident(time)operator(.)ident(time)operator(()operator(\)) - pre_constant(self)operator(.)ident(AGE) operator(=) integer(0) -comment(#-----------------------------) - -comment(# ^^PLEAC^^_13.7) -comment(#-----------------------------) -ident(methname) operator(=) string<delimiter(")content(flicker)delimiter(")> -predefined(getattr)operator(()ident(obj)operator(,) ident(methname)operator(\))operator(()integer(10)operator(\)) comment(# calls obj->flicker(10\);) - -comment(# call three methods on the object, by name) -keyword(for) ident(m) keyword(in) operator(()string<delimiter(")content(start)delimiter(")>operator(,) string<delimiter(")content(run)delimiter(")>operator(,) string<delimiter(")content(stop)delimiter(")>operator(\))operator(:) - predefined(getattr)operator(()ident(obj)operator(,) ident(m)operator(\))operator(()operator(\)) -comment(#-----------------------------) -ident(methods) operator(=) operator(()string<delimiter(")content(name)delimiter(")>operator(,) string<delimiter(")content(rank)delimiter(")>operator(,) string<delimiter(")content(serno)delimiter(")>operator(\)) -ident(his_info) operator(=) operator({)operator(}) -keyword(for) ident(m) keyword(in) ident(methods)operator(:) - ident(his_info)operator([)ident(m)operator(]) operator(=) predefined(getattr)operator(()ident(ob)operator(,) ident(m)operator(\))operator(()operator(\)) - -comment(# same as this:) - -ident(his_info) operator(=) operator({) - string<delimiter(')content(name)delimiter(')>operator(:) ident(ob)operator(.)ident(name)operator(()operator(\))operator(,) - string<delimiter(')content(rank)delimiter(')>operator(:) ident(ob)operator(.)ident(rank)operator(()operator(\))operator(,) - string<delimiter(')content(serno)delimiter(')>operator(:) ident(ob)operator(.)ident(serno)operator(()operator(\))operator(,) -operator(}) -comment(#-----------------------------) -ident(fnref) operator(=) ident(ob)operator(.)ident(method) -comment(#-----------------------------) -ident(fnref)operator(()integer(10)operator(,) string<delimiter(")content(fred)delimiter(")>operator(\)) -comment(#-----------------------------) -ident(obj)operator(.)ident(method)operator(()integer(10)operator(,) string<delimiter(")content(fred)delimiter(")>operator(\)) -comment(#-----------------------------) -comment(# XXX Not sure if this is the correct translation.) -comment(# XXX Is 'can' special?) -keyword(if) predefined(isinstance)operator(()ident(obj_target)operator(,) ident(obj)operator(.)ident(__class__)operator(\))operator(:) - ident(obj)operator(.)ident(can)operator(()string<delimiter(')content(method_name)delimiter(')>operator(\))operator(()ident(obj_target)operator(,) operator(*)ident(arguments)operator(\)) -comment(#-----------------------------) - -comment(# ^^PLEAC^^_13.8) -comment(#-----------------------------) -predefined(isinstance)operator(()ident(obj)operator(,) ident(mimetools)operator(.)ident(Message)operator(\)) -predefined(issubclass)operator(()ident(obj)operator(.)ident(__class__)operator(,) ident(mimetools)operator(.)ident(Message)operator(\)) - -keyword(if) predefined(hasattr)operator(()ident(obj)operator(,) string<delimiter(")content(method_name)delimiter(")>operator(\))operator(:) comment(# check method validity) - keyword(pass) -comment(#-----------------------------) -comment(## Explicit type checking is needed fewer times than you think.) -ident(his_print_method) operator(=) predefined(getattr)operator(()ident(obj)operator(,) string<delimiter(")content(as_string)delimiter(")>operator(,) pre_constant(None)operator(\)) -comment(#-----------------------------) -ident(__version__) operator(=) operator(()integer(3)operator(,) integer(0)operator(\)) -ident(Some_Module)operator(.)ident(__version__) - -comment(# Almost never used, and doesn't work for builtin types, which don't) -comment(# have a __module__.) - -ident(his_vers) operator(=) ident(obj)operator(.)ident(__module__)operator(.)ident(__version__) -comment(#-----------------------------) -keyword(if) ident(Some_Module)operator(.)ident(__version__) operator(<) operator(()integer(3)operator(,) integer(0)operator(\))operator(:) - keyword(raise) exception(ImportError)operator(()string<delimiter(")content(Some_Module version %s is too old, expected (3, 0\))delimiter(")> operator(%) - operator(()ident(Some_Module)operator(.)ident(__version__)operator(,)operator(\))operator(\)) -comment(# or more simply) -keyword(assert) ident(Some_Module)operator(.)ident(__version__) operator(>=) operator(()integer(3)operator(,) integer(0)operator(\))operator(,) string<delimiter(")content(version too old)delimiter(")> - -comment(#-----------------------------) -ident(__VERSION__) operator(=) string<delimiter(')content(1.01)delimiter(')> -comment(#-----------------------------) - -comment(# ^^PLEAC^^_13.9) -comment(#-----------------------------) -comment(# Note: This uses the standard Python idiom of accessing the) -comment(# attributes directly rather than going through a method call.) -comment(# See earlier in this chapter for examples of how this does) -comment(# not break encapsulation.) -keyword(class) class(Person)operator(:) - keyword(def) method(__init__)operator(()pre_constant(self)operator(,) ident(name) operator(=) string<delimiter(")delimiter(")>operator(,) ident(age) operator(=) integer(0)operator(\))operator(:) - pre_constant(self)operator(.)ident(name) operator(=) ident(name) - pre_constant(self)operator(.)ident(age) operator(=) ident(age) -comment(#-----------------------------) -comment(# Prefered: dude = Person("Jason", 23\)) -ident(dude) operator(=) ident(Person)operator(()operator(\)) -ident(dude)operator(.)ident(name) operator(=) string<delimiter(")content(Jason)delimiter(")> -ident(dude)operator(.)ident(age) operator(=) integer(23) -keyword(print) string<delimiter(")content(%s is age %d.)delimiter(")> operator(%) operator(()ident(dude)operator(.)ident(name)operator(,) ident(dude)operator(.)ident(age)operator(\)) -comment(#-----------------------------) -keyword(class) class(Employee)operator(()ident(Person)operator(\))operator(:) - keyword(pass) -comment(#-----------------------------) -comment(# Prefered: empl = Employee("Jason", 23\)) -ident(emp) operator(=) ident(Employee)operator(()operator(\)) -ident(empl)operator(.)ident(name) operator(=) string<delimiter(")content(Jason)delimiter(")> -ident(empl)operator(.)ident(age) operator(=) integer(23) -keyword(print) string<delimiter(")content(%s is age %d.)delimiter(")> operator(%) operator(()ident(empl)operator(.)ident(name)operator(,) ident(empl)operator(.)ident(age)operator(\)) -comment(#-----------------------------) - -comment(# ^^PLEAC^^_13.10) -comment(#-----------------------------) -comment(# This doesn't need to be done since if 'method' doesn't) -comment(# exist in the Class it will be looked for in its BaseClass(es\)) -keyword(class) class(Class)operator(()ident(BaseClass)operator(\))operator(:) - keyword(def) method(method)operator(()pre_constant(self)operator(,) operator(*)ident(args)operator(,) operator(**)ident(kwargs)operator(\))operator(:) - ident(BaseClass)operator(.)ident(method)operator(()pre_constant(self)operator(,) operator(*)ident(args)operator(,) operator(**)ident(kwargs)operator(\)) - -comment(# This lets you pick the specific method in one of the base classes) -keyword(class) class(Class)operator(()ident(BaseClass1)operator(,) ident(BaseClass2)operator(\))operator(:) - keyword(def) method(method)operator(()pre_constant(self)operator(,) operator(*)ident(args)operator(,) operator(**)ident(kwargs)operator(\))operator(:) - ident(BaseClass2)operator(.)ident(method)operator(()pre_constant(self)operator(,) operator(*)ident(args)operator(,) operator(**)ident(kwargs)operator(\)) - -comment(# This looks for the first method in the base class(es\) without) -comment(# specifically knowing which base class. This reimplements) -comment(# the default action so isn't really needed.) -keyword(class) class(Class)operator(()ident(BaseClass1)operator(,) ident(BaseClass2)operator(,) ident(BaseClass3)operator(\))operator(:) - keyword(def) method(method)operator(()pre_constant(self)operator(,) operator(*)ident(args)operator(,) operator(**)ident(kwargs)operator(\))operator(:) - keyword(for) ident(baseclass) keyword(in) pre_constant(self)operator(.)ident(__class__)operator(.)ident(__bases__)operator(:) - ident(f) operator(=) predefined(getattr)operator(()ident(baseclass)operator(,) string<delimiter(")content(method)delimiter(")>operator(\)) - keyword(if) ident(f) keyword(is) keyword(not) pre_constant(None)operator(:) - keyword(return) ident(f)operator(()operator(*)ident(args)operator(,) operator(**)ident(kwargs)operator(\)) - keyword(raise) exception(NotImplementedError)operator(()string<delimiter(")content(method)delimiter(")>operator(\)) - -comment(#-----------------------------) -pre_constant(self)operator(.)ident(meth)operator(()operator(\)) comment(# Call wherever first meth is found) - -ident(Where)operator(.)ident(meth)operator(()pre_constant(self)operator(\)) comment(# Call in the base class "Where") - -comment(# XXX Does Perl only have single inheritence? Or does) -comment(# it check all base classes? No directly equivalent way) -comment(# to do this in Python, but see above.) -comment(#-----------------------------) -keyword(import) include(time) - -comment(# The Perl code calls a private '_init' function, but in) -comment(# Python there's need for the complexity of 'new' mechanism) -comment(# so it's best just to put the '_init' code in '__init__'.) -keyword(class) class(Class)operator(:) - keyword(def) method(__init__)operator(()pre_constant(self)operator(,) operator(*)ident(args)operator(\))operator(:) - comment(# init data fields) - pre_constant(self)operator(.)ident(START) operator(=) ident(time)operator(.)ident(time)operator(()operator(\)) - pre_constant(self)operator(.)ident(AGE) operator(=) integer(0) - pre_constant(self)operator(.)ident(EXTRA) operator(=) ident(args) comment(# anything extra) -comment(#-----------------------------) -ident(obj) operator(=) ident(Widget)operator(()ident(haircolor) operator(=) string<delimiter(")content(red)delimiter(")>operator(,) ident(freckles) operator(=) integer(121)operator(\)) -comment(#-----------------------------) -keyword(class) class(Class)operator(()ident(Base1)operator(,) ident(Base2)operator(,) ident(Base3)operator(\))operator(:) - keyword(def) method(__init__)operator(()pre_constant(self)operator(,) operator(*)ident(args)operator(,) operator(**)ident(kwargs)operator(\))operator(:) - keyword(for) ident(base) keyword(in) pre_constant(self)operator(.)ident(__class__)operator(.)ident(__bases__)operator(:) - ident(f) operator(=) predefined(getattr)operator(()ident(base)operator(,) string<delimiter(")content(__init__)delimiter(")>operator(\)) - keyword(if) ident(f) keyword(is) keyword(not) pre_constant(None)operator(:) - ident(f)operator(()pre_constant(self)operator(,) operator(*)ident(args)operator(,) operator(**)ident(kwargs)operator(\)) -comment(#-----------------------------) - -comment(# ^^PLEAC^^_13.11) -comment(#-----------------------------) -comment(# NOTE: Python prefers direct attribute lookup rather than) -comment(# method calls. Python 2.2 will introduce a 'get_set' which) -comment(# *may* be equivalent, but I don't know enough about it. So) -comment(# instead I'll describe a class that lets you restrict access) -comment(# to only specific attributes.) - -keyword(class) class(Private)operator(:) - keyword(def) method(__init__)operator(()pre_constant(self)operator(,) ident(names)operator(\))operator(:) - pre_constant(self)operator(.)ident(__names) operator(=) ident(names) - pre_constant(self)operator(.)ident(__data) operator(=) operator({)operator(}) - keyword(def) method(__getattr__)operator(()pre_constant(self)operator(,) ident(name)operator(\))operator(:) - keyword(if) ident(name) keyword(in) pre_constant(self)operator(.)ident(__names)operator(:) - keyword(return) pre_constant(self)operator(.)ident(__data)operator([)ident(name)operator(]) - keyword(raise) exception(AttributeError)operator(()ident(name)operator(\)) - keyword(def) method(__setattr__)operator(()pre_constant(self)operator(,) ident(name)operator(,) ident(value)operator(\))operator(:) - keyword(if) ident(name)operator(.)ident(startswith)operator(()string<delimiter(")content(_Private)delimiter(")>operator(\))operator(:) - pre_constant(self)operator(.)ident(__dict__)operator([)ident(name)operator(]) operator(=) ident(value) - keyword(return) - keyword(if) ident(name) keyword(in) pre_constant(self)operator(.)ident(__names)operator(:) - pre_constant(self)operator(.)ident(__data)operator([)ident(name)operator(]) operator(=) ident(value) - keyword(return) - keyword(raise) exception(TypeError)operator(()string<delimiter(")content(cannot set the attribute %r)delimiter(")> operator(%) operator(()ident(name)operator(,)operator(\))operator(\)) - -keyword(class) class(Person)operator(()ident(Private)operator(\))operator(:) - keyword(def) method(__init__)operator(()pre_constant(self)operator(,) ident(parent) operator(=) pre_constant(None)operator(\))operator(:) - ident(Private)operator(.)ident(__init__)operator(()pre_constant(self)operator(,) operator([)string<delimiter(")content(name)delimiter(")>operator(,) string<delimiter(")content(age)delimiter(")>operator(,) string<delimiter(")content(peers)delimiter(")>operator(,) string<delimiter(")content(parent)delimiter(")>operator(])operator(\)) - pre_constant(self)operator(.)ident(parent) operator(=) ident(parent) - keyword(def) method(new_child)operator(()pre_constant(self)operator(\))operator(:) - keyword(return) ident(Person)operator(()pre_constant(self)operator(\)) -comment(#-----------------------------) -ident(dad) operator(=) ident(Person)operator(()operator(\)) -ident(dad)operator(.)ident(name) operator(=) string<delimiter(")content(Jason)delimiter(")> -ident(dad)operator(.)ident(age) operator(=) integer(23) -ident(kid) operator(=) ident(dad)operator(.)ident(new_child)operator(()operator(\)) -ident(kid)operator(.)ident(name) operator(=) string<delimiter(")content(Rachel)delimiter(")> -ident(kid)operator(.)ident(age) operator(=) integer(2) -keyword(print) string<delimiter(")content(Kid's parent is)delimiter(")>operator(,) ident(kid)operator(.)ident(parent)operator(.)ident(name) -comment(#=>Kid's parent is Jason) - -comment(# ^^PLEAC^^_13.12) -comment(#-----------------------------) -comment(## XXX No clue on what this does. For that matter, what's) -comment(## "The Data Inheritance Problem"?) - -comment(# ^^PLEAC^^_13.13) -comment(#-----------------------------) -ident(node)operator(.)ident(NEXT) operator(=) ident(node) -comment(#-----------------------------) -comment(# This is not a faithful copy of the Perl code, but it does) -comment(# show how to have the container's __del__ remove cycles in) -comment(# its contents. Note that Python 2.0 includes a garbage) -comment(# collector that is able to remove these sorts of cycles, but) -comment(# it's still best to prevent cycles in your code.) -keyword(class) class(Node)operator(:) - keyword(def) method(__init__)operator(()pre_constant(self)operator(,) ident(value) operator(=) pre_constant(None)operator(\))operator(:) - pre_constant(self)operator(.)ident(next) operator(=) pre_constant(self) - pre_constant(self)operator(.)ident(prev) operator(=) pre_constant(self) - pre_constant(self)operator(.)ident(value) operator(=) ident(value) - -keyword(class) class(Ring)operator(:) - keyword(def) method(__init__)operator(()pre_constant(self)operator(\))operator(:) - pre_constant(self)operator(.)ident(ring) operator(=) pre_constant(None) - pre_constant(self)operator(.)ident(count) operator(=) integer(0) - - keyword(def) method(__str__)operator(()pre_constant(self)operator(\))operator(:) - comment(# Helpful when debugging, to print the contents of the ring) - ident(s) operator(=) string<delimiter(")content(#%d: )delimiter(")> operator(%) pre_constant(self)operator(.)ident(count) - ident(x) operator(=) pre_constant(self)operator(.)ident(ring) - keyword(if) ident(x) keyword(is) pre_constant(None)operator(:) - keyword(return) ident(s) - ident(values) operator(=) operator([)operator(]) - keyword(while) pre_constant(True)operator(:) - ident(values)operator(.)ident(append)operator(()ident(x)operator(.)ident(value)operator(\)) - ident(x) operator(=) ident(x)operator(.)ident(next) - keyword(if) ident(x) keyword(is) pre_constant(self)operator(.)ident(ring)operator(:) - keyword(break) - keyword(return) ident(s) operator(+) string<delimiter(")content( -> )delimiter(")>operator(.)ident(join)operator(()predefined(map)operator(()predefined(str)operator(,) ident(values)operator(\))operator(\)) operator(+) string<delimiter(")content( ->)delimiter(")> - - keyword(def) method(search)operator(()pre_constant(self)operator(,) ident(value)operator(\))operator(:) - ident(node) operator(=) pre_constant(self)operator(.)ident(ring) - keyword(while) pre_constant(True)operator(:) - keyword(if) ident(node)operator(.)ident(value) operator(==) ident(value)operator(:) - keyword(return) ident(node) - ident(node) operator(=) ident(node)operator(.)ident(next) - keyword(if) ident(node) keyword(is) pre_constant(self)operator(.)ident(ring)operator(:) - keyword(break) - - keyword(def) method(insert_value)operator(()pre_constant(self)operator(,) ident(value)operator(\))operator(:) - ident(node) operator(=) ident(Node)operator(()ident(value)operator(\)) - keyword(if) pre_constant(self)operator(.)ident(ring) keyword(is) keyword(not) pre_constant(None)operator(:) - ident(node)operator(.)ident(prev)operator(,) ident(node)operator(.)ident(next) operator(=) pre_constant(self)operator(.)ident(ring)operator(.)ident(prev)operator(,) pre_constant(self)operator(.)ident(ring) - pre_constant(self)operator(.)ident(ring)operator(.)ident(prev)operator(.)ident(next) operator(=) pre_constant(self)operator(.)ident(ring)operator(.)ident(prev) operator(=) ident(node) - pre_constant(self)operator(.)ident(ring) operator(=) ident(node) - pre_constant(self)operator(.)ident(count) operator(+=) integer(1) - - keyword(def) method(delete_value)operator(()pre_constant(self)operator(,) ident(value)operator(\))operator(:) - ident(node) operator(=) pre_constant(self)operator(.)ident(search)operator(()ident(value)operator(\)) - keyword(if) ident(node) keyword(is) keyword(not) pre_constant(None)operator(:) - pre_constant(self)operator(.)ident(delete_node)operator(()ident(node)operator(\)) - - keyword(def) method(delete_node)operator(()pre_constant(self)operator(,) ident(node)operator(\))operator(:) - keyword(if) ident(node) keyword(is) ident(node)operator(.)ident(next)operator(:) - ident(node)operator(.)ident(next) operator(=) ident(node)operator(.)ident(prev) operator(=) pre_constant(None) - pre_constant(self)operator(.)ident(ring) operator(=) pre_constant(None) - keyword(else)operator(:) - ident(node)operator(.)ident(prev)operator(.)ident(next)operator(,) ident(node)operator(.)ident(next)operator(.)ident(prev) operator(=) ident(node)operator(.)ident(next)operator(,) ident(node)operator(.)ident(prev) - keyword(if) ident(node) keyword(is) pre_constant(self)operator(.)ident(ring)operator(:) - pre_constant(self)operator(.)ident(ring) operator(=) ident(node)operator(.)ident(next) - pre_constant(self)operator(.)ident(count) operator(-=) integer(1) - - keyword(def) method(__del__)operator(()pre_constant(self)operator(\))operator(:) - keyword(while) pre_constant(self)operator(.)ident(ring) keyword(is) keyword(not) pre_constant(None)operator(:) - pre_constant(self)operator(.)ident(delete_node)operator(()pre_constant(self)operator(.)ident(ring)operator(\)) - -ident(COUNT) operator(=) integer(1000) -keyword(for) ident(rep) keyword(in) predefined(range)operator(()integer(20)operator(\))operator(:) - ident(r) operator(=) ident(Ring)operator(()operator(\)) - keyword(for) ident(i) keyword(in) predefined(range)operator(()ident(COUNT)operator(\))operator(:) - ident(r)operator(.)ident(insert_value)operator(()ident(i)operator(\)) -comment(#-----------------------------) - -comment(# ^^PLEAC^^_13.14) -comment(#-----------------------------) -keyword(import) include(UserString) -keyword(class) class(MyString)operator(()ident(UserString)operator(.)ident(UserString)operator(\))operator(:) - keyword(def) method(__cmp__)operator(()pre_constant(self)operator(,) ident(other)operator(\))operator(:) - keyword(return) predefined(cmp)operator(()pre_constant(self)operator(.)ident(data)operator(.)ident(upper)operator(()operator(\))operator(,) ident(other)operator(.)ident(upper)operator(()operator(\))operator(\)) - -keyword(class) class(Person)operator(:) - keyword(def) method(__init__)operator(()pre_constant(self)operator(,) ident(name)operator(,) ident(idnum)operator(\))operator(:) - pre_constant(self)operator(.)ident(name) operator(=) ident(name) - pre_constant(self)operator(.)ident(idnum) operator(=) ident(idnum) - keyword(def) method(__str__)operator(()pre_constant(self)operator(\))operator(:) - keyword(return) string<delimiter(")content(%s (%05d\))delimiter(")> operator(%) operator(()pre_constant(self)operator(.)ident(name)operator(.)ident(lower)operator(()operator(\))operator(.)ident(capitalize)operator(()operator(\))operator(,) pre_constant(self)operator(.)ident(idnum)operator(\)) - -comment(#-----------------------------) -keyword(class) class(TimeNumber)operator(:) - keyword(def) method(__init__)operator(()pre_constant(self)operator(,) ident(hours)operator(,) ident(minutes)operator(,) ident(seconds)operator(\))operator(:) - keyword(assert) ident(minutes) operator(<) integer(60) keyword(and) ident(seconds) operator(<) integer(60) - pre_constant(self)operator(.)ident(hours) operator(=) ident(hours) - pre_constant(self)operator(.)ident(minutes) operator(=) ident(minutes) - pre_constant(self)operator(.)ident(seconds) operator(=) ident(seconds) - keyword(def) method(__str__)operator(()pre_constant(self)operator(\))operator(:) - keyword(return) string<delimiter(")content(%d:%02d:%02d)delimiter(")> operator(%) operator(()pre_constant(self)operator(.)ident(hours)operator(,) pre_constant(self)operator(.)ident(minutes)operator(,) pre_constant(self)operator(.)ident(seconds)operator(\)) - keyword(def) method(__add__)operator(()pre_constant(self)operator(,) ident(other)operator(\))operator(:) - ident(seconds) operator(=) pre_constant(self)operator(.)ident(seconds) operator(+) ident(other)operator(.)ident(seconds) - ident(minutes) operator(=) pre_constant(self)operator(.)ident(minutes) operator(+) ident(other)operator(.)ident(minutes) - ident(hours) operator(=) pre_constant(self)operator(.)ident(hours) operator(+) ident(other)operator(.)ident(hours) - keyword(if) ident(seconds) operator(>=) integer(60)operator(:) - ident(seconds) operator(%=) integer(60) - ident(minutes) operator(+=) integer(1) - keyword(if) ident(minutes) operator(>=) integer(60)operator(:) - ident(minutes) operator(%=) integer(60) - ident(hours) operator(+=) integer(1) - keyword(return) ident(TimeNumber)operator(()ident(hours)operator(,) ident(minutes)operator(,) ident(seconds)operator(\)) - - keyword(def) method(__sub__)operator(()pre_constant(self)operator(,) ident(other)operator(\))operator(:) - keyword(raise) exception(NotImplementedError) - - keyword(def) method(__mul__)operator(()pre_constant(self)operator(,) ident(other)operator(\))operator(:) - keyword(raise) exception(NotImplementedError) - - keyword(def) method(__div__)operator(()pre_constant(self)operator(,) ident(other)operator(\))operator(:) - keyword(raise) exception(NotImplementedError) - -ident(t1) operator(=) ident(TimeNumber)operator(()integer(0)operator(,) integer(58)operator(,) integer(59)operator(\)) -ident(sec) operator(=) ident(TimeNumber)operator(()integer(0)operator(,) integer(0)operator(,) integer(1)operator(\)) -ident(min) operator(=) ident(TimeNumber)operator(()integer(0)operator(,) integer(1)operator(,) integer(0)operator(\)) -keyword(print) ident(t1) operator(+) ident(sec) operator(+) predefined(min) operator(+) predefined(min) -comment(# 1:01:00) - -comment(#-----------------------------) -comment(# For demo purposes only - the StrNum class is superfluous in this) -comment(# case as plain strings would give the same result.) -keyword(class) class(StrNum)operator(:) - keyword(def) method(__init__)operator(()pre_constant(self)operator(,) ident(value)operator(\))operator(:) - pre_constant(self)operator(.)ident(value) operator(=) ident(value) - - keyword(def) method(__cmp__)operator(()pre_constant(self)operator(,) ident(other)operator(\))operator(:) comment(# both <=> and cmp) - comment(# providing <=> gives us <, ==, etc. for free.) - comment(# __lt__, __eq__, and __gt__ can also be individually specified) - keyword(return) predefined(cmp)operator(()pre_constant(self)operator(.)ident(value)operator(,) ident(other)operator(.)ident(value)operator(\)) - - keyword(def) method(__str__)operator(()pre_constant(self)operator(\))operator(:) comment(# "") - keyword(return) pre_constant(self)operator(.)ident(value) - - keyword(def) method(__nonzero__)operator(()pre_constant(self)operator(,) ident(other)operator(\))operator(:) comment(# bool) - keyword(return) predefined(bool)operator(()pre_constant(self)operator(.)ident(value)operator(\)) - - keyword(def) method(__int__)operator(()pre_constant(self)operator(,) ident(other)operator(\))operator(:) comment(# 0+) - keyword(return) predefined(int)operator(()pre_constant(self)operator(.)ident(value)operator(\)) - - keyword(def) method(__add__)operator(()pre_constant(self)operator(,) ident(other)operator(\))operator(:) comment(# +) - keyword(return) ident(StrNum)operator(()pre_constant(self)operator(.)ident(value) operator(+) ident(other)operator(.)ident(value)operator(\)) - - keyword(def) method(__radd__)operator(()pre_constant(self)operator(,) ident(other)operator(\))operator(:) comment(# +, inverted) - keyword(return) ident(StrNum)operator(()ident(other)operator(.)ident(value) operator(+) pre_constant(self)operator(.)ident(value)operator(\)) - - keyword(def) method(__mul__)operator(()pre_constant(self)operator(,) ident(other)operator(\))operator(:) comment(# *) - keyword(return) ident(StrNum)operator(()pre_constant(self)operator(.)ident(value) operator(*) ident(other)operator(\)) - - keyword(def) method(__rmul__)operator(()pre_constant(self)operator(,) ident(other)operator(\))operator(:) comment(# *, inverted) - keyword(return) ident(StrNum)operator(()pre_constant(self)operator(.)ident(value) operator(*) ident(other)operator(\)) - - -keyword(def) method(demo)operator(()operator(\))operator(:) - comment(# show_strnum - demo operator overloading) - ident(x) operator(=) ident(StrNum)operator(()string<delimiter(")content(Red)delimiter(")>operator(\)) - ident(y) operator(=) ident(StrNum)operator(()string<delimiter(")content(Black)delimiter(")>operator(\)) - ident(z) operator(=) ident(x) operator(+) ident(y) - ident(r) operator(=) ident(z) operator(*) integer(3) - keyword(print) string<delimiter(")content(values are %s, %s, %s, and %s)delimiter(")> operator(%) operator(()ident(x)operator(,) ident(y)operator(,) ident(z)operator(,) ident(r)operator(\)) - keyword(if) ident(x) operator(<) ident(y)operator(:) - ident(s) operator(=) string<delimiter(")content(LT)delimiter(")> - keyword(else)operator(:) - ident(s) operator(=) string<delimiter(")content(GE)delimiter(")> - keyword(print) ident(x)operator(,) string<delimiter(")content(is)delimiter(")>operator(,) ident(s)operator(,) ident(y) - -keyword(if) ident(__name__) operator(==) string<delimiter(")content(__main__)delimiter(")>operator(:) - ident(demo)operator(()operator(\)) -comment(# values are Red, Black, RedBlack, and RedBlackRedBlackRedBlack) -comment(# Red is GE Black) - -comment(#-----------------------------) -comment(#!/usr/bin/env python) -comment(# demo_fixnum - show operator overloading) - -comment(# sum of STRFixNum: 40 and STRFixNum: 12 is STRFixNum: 52) -comment(# product of STRFixNum: 40 and STRFixNum: 12 is STRFixNum: 480) -comment(# STRFixNum: 3 has 0 places) -comment(# div of STRFixNum: 40 by STRFixNum: 12 is STRFixNum: 3.33) -comment(# square of that is STRFixNum: 11.11) - -comment(# This isn't excatly the same as the original Perl code since) -comment(# I couldn't figure out why the PLACES variable was used.) -comment(#-----------------------------) -keyword(import) include(re) -ident(_places_re) operator(=) ident(re)operator(.)ident(compile)operator(()string<modifier(r)delimiter(")content(\\.)content(()content(\\d)content(+\))delimiter(")>operator(\)) - -ident(default_places) operator(=) integer(0) - -keyword(class) class(FixNum)operator(:) - keyword(def) method(__init__)operator(()pre_constant(self)operator(,) ident(value)operator(,) ident(places) operator(=) pre_constant(None)operator(\))operator(:) - pre_constant(self)operator(.)ident(value) operator(=) ident(value) - keyword(if) ident(places) keyword(is) pre_constant(None)operator(:) - comment(# get from the value) - ident(m) operator(=) ident(_places_re)operator(.)ident(search)operator(()predefined(str)operator(()ident(value)operator(\))operator(\)) - keyword(if) ident(m)operator(:) - ident(places) operator(=) predefined(int)operator(()ident(m)operator(.)ident(group)operator(()integer(1)operator(\))operator(\)) - keyword(else)operator(:) - ident(places) operator(=) ident(default_places) - pre_constant(self)operator(.)ident(places) operator(=) ident(places) - - keyword(def) method(__add__)operator(()pre_constant(self)operator(,) ident(other)operator(\))operator(:) - keyword(return) ident(FixNum)operator(()pre_constant(self)operator(.)ident(value) operator(+) ident(other)operator(.)ident(value)operator(,) - predefined(max)operator(()pre_constant(self)operator(.)ident(places)operator(,) ident(other)operator(.)ident(places)operator(\))operator(\)) - - keyword(def) method(__mul__)operator(()pre_constant(self)operator(,) ident(other)operator(\))operator(:) - keyword(return) ident(FixNum)operator(()pre_constant(self)operator(.)ident(value) operator(*) ident(other)operator(.)ident(value)operator(,) - predefined(max)operator(()pre_constant(self)operator(.)ident(places)operator(,) ident(other)operator(.)ident(places)operator(\))operator(\)) - - keyword(def) method(__div__)operator(()pre_constant(self)operator(,) ident(other)operator(\))operator(:) - comment(# Force to use floating point, since 2/3 in Python is 0) - comment(# Don't use float(\) since that will convert strings) - keyword(return) ident(FixNum)operator(()operator(()pre_constant(self)operator(.)ident(value)operator(+)float(0.0)operator(\)) operator(/) ident(other)operator(.)ident(value)operator(,) - predefined(max)operator(()pre_constant(self)operator(.)ident(places)operator(,) ident(other)operator(.)ident(places)operator(\))operator(\)) - - keyword(def) method(__str__)operator(()pre_constant(self)operator(\))operator(:) - keyword(return) string<delimiter(")content(STR%s: %.*f)delimiter(")> operator(%) operator(()pre_constant(self)operator(.)ident(__class__)operator(.)ident(__name__)operator(,) - pre_constant(self)operator(.)ident(places)operator(,) pre_constant(self)operator(.)ident(value)operator(\)) - keyword(def) method(__int__)operator(()pre_constant(self)operator(\))operator(:) - keyword(return) predefined(int)operator(()pre_constant(self)operator(.)ident(value)operator(\)) - - keyword(def) method(__float__)operator(()pre_constant(self)operator(\))operator(:) - keyword(return) pre_constant(self)operator(.)ident(value) - -keyword(def) method(demo)operator(()operator(\))operator(:) - ident(x) operator(=) ident(FixNum)operator(()integer(40)operator(\)) - ident(y) operator(=) ident(FixNum)operator(()integer(12)operator(,) integer(0)operator(\)) - - keyword(print) string<delimiter(")content(sum of)delimiter(")>operator(,) ident(x)operator(,) string<delimiter(")content(and)delimiter(")>operator(,) ident(y)operator(,) string<delimiter(")content(is)delimiter(")>operator(,) ident(x)operator(+)ident(y) - keyword(print) string<delimiter(")content(product of)delimiter(")>operator(,) ident(x)operator(,) string<delimiter(")content(and)delimiter(")>operator(,) ident(y)operator(,) string<delimiter(")content(is)delimiter(")>operator(,) ident(x)operator(*)ident(y) - - ident(z) operator(=) ident(x)operator(/)ident(y) - keyword(print) string<delimiter(")content(%s has %d places)delimiter(")> operator(%) operator(()ident(z)operator(,) ident(z)operator(.)ident(places)operator(\)) - keyword(if) keyword(not) ident(z)operator(.)ident(places)operator(:) - ident(z)operator(.)ident(places) operator(=) integer(2) - - keyword(print) string<delimiter(")content(div of)delimiter(")>operator(,) ident(x)operator(,) string<delimiter(")content(by)delimiter(")>operator(,) ident(y)operator(,) string<delimiter(")content(is)delimiter(")>operator(,) ident(z) - keyword(print) string<delimiter(")content(square of that is )delimiter(")>operator(,) ident(z)operator(*)ident(z) - -keyword(if) ident(__name__) operator(==) string<delimiter(")content(__main__)delimiter(")>operator(:) - ident(demo)operator(()operator(\)) - - -comment(# ^^PLEAC^^_13.15) -comment(# You can't tie a variable, but you can use properties. ) -keyword(import) include(itertools) -keyword(class) class(ValueRing)operator(()predefined(object)operator(\))operator(:) - keyword(def) method(__init__)operator(()pre_constant(self)operator(,) ident(colours)operator(\))operator(:) - pre_constant(self)operator(.)ident(colourcycle) operator(=) ident(itertools)operator(.)ident(cycle)operator(()ident(colours)operator(\)) - - keyword(def) method(next_colour)operator(()pre_constant(self)operator(\))operator(:) - keyword(return) pre_constant(self)operator(.)ident(colourcycle)operator(.)ident(next)operator(()operator(\)) - ident(colour) operator(=) predefined(property)operator(()ident(next_colour)operator(\)) -ident(vr) operator(=) ident(ValueRing)operator(()operator([)string<delimiter(")content(red)delimiter(")>operator(,) string<delimiter(")content(blue)delimiter(")>operator(])operator(\)) -keyword(for) ident(i) keyword(in) predefined(range)operator(()integer(6)operator(\))operator(:) - keyword(print) ident(vr)operator(.)ident(colour)operator(,) -keyword(print) - -comment(# Note that you MUST refer directly to the property) -ident(x) operator(=) ident(vr)operator(.)ident(colour) -keyword(print) ident(x)operator(,) ident(x)operator(,) ident(x) -comment(#-------------------------------------) -comment(# Ties are generally unnecessary in Python because of its strong OO support -) -comment(# The resulting code is MUCH shorter:) -keyword(class) class(AppendDict)operator(()predefined(dict)operator(\))operator(:) - keyword(def) method(__setitem__)operator(()pre_constant(self)operator(,) ident(key)operator(,) ident(val)operator(\))operator(:) - keyword(if) ident(key) keyword(in) pre_constant(self)operator(:) - pre_constant(self)operator([)ident(key)operator(])operator(.)ident(append)operator(()ident(val)operator(\)) - keyword(else)operator(:) - predefined(super)operator(()ident(AppendDict)operator(,) pre_constant(self)operator(\))operator(.)ident(__setitem__)operator(()ident(key)operator(,) operator([)ident(val)operator(])operator(\)) -ident(tab) operator(=) ident(AppendDict)operator(()operator(\)) -ident(tab)operator([)string<delimiter(")content(beer)delimiter(")>operator(]) operator(=) string<delimiter(")content(guinness)delimiter(")> -ident(tab)operator([)string<delimiter(")content(food)delimiter(")>operator(]) operator(=) string<delimiter(")content(potatoes)delimiter(")> -ident(tab)operator([)string<delimiter(")content(food)delimiter(")>operator(]) operator(=) string<delimiter(")content(peas)delimiter(")> - -keyword(for) ident(key)operator(,) ident(val) keyword(in) ident(tab)operator(.)ident(items)operator(()operator(\))operator(:) - keyword(print) ident(key)operator(,) string<delimiter(")content(=>)delimiter(")>operator(,) ident(val) -comment(#-------------------------------------) -keyword(class) class(CaselessDict)operator(()predefined(dict)operator(\))operator(:) - keyword(def) method(__setitem__)operator(()pre_constant(self)operator(,) ident(key)operator(,) ident(val)operator(\))operator(:) - predefined(super)operator(()ident(CaselessDict)operator(,) pre_constant(self)operator(\))operator(.)ident(__setitem__)operator(()ident(key)operator(.)ident(lower)operator(()operator(\))operator(,) ident(val)operator(\)) - keyword(def) method(__getitem__)operator(()pre_constant(self)operator(,) ident(key)operator(\))operator(:) - keyword(return) predefined(super)operator(()ident(CaselessDict)operator(,) pre_constant(self)operator(\))operator(.)ident(__getitem__)operator(()ident(key)operator(.)ident(lower)operator(()operator(\))operator(\)) - -ident(tab) operator(=) ident(CaselessDict)operator(()operator(\)) -ident(tab)operator([)string<delimiter(")content(VILLAIN)delimiter(")>operator(]) operator(=) string<delimiter(")content(big )delimiter(")> -ident(tab)operator([)string<delimiter(")content(herOine)delimiter(")>operator(]) operator(=) string<delimiter(")content(red riding hood)delimiter(")> -ident(tab)operator([)string<delimiter(")content(villain)delimiter(")>operator(]) operator(=) string<delimiter(")content(bad wolf)delimiter(")> - -keyword(for) ident(key)operator(,) ident(val) keyword(in) ident(tab)operator(.)ident(items)operator(()operator(\))operator(:) - keyword(print) ident(key)operator(,) string<delimiter(")content(is)delimiter(")>operator(,) ident(val) -comment(#=>villain is bad wolf) -comment(#=>heroine is red riding hood) -comment(#-------------------------------------) -keyword(class) class(RevDict)operator(()predefined(dict)operator(\))operator(:) - keyword(def) method(__setitem__)operator(()pre_constant(self)operator(,) ident(key)operator(,) ident(val)operator(\))operator(:) - predefined(super)operator(()ident(RevDict)operator(,) pre_constant(self)operator(\))operator(.)ident(__setitem__)operator(()ident(key)operator(,) ident(val)operator(\)) - predefined(super)operator(()ident(RevDict)operator(,) pre_constant(self)operator(\))operator(.)ident(__setitem__)operator(()ident(val)operator(,) ident(key)operator(\)) - -ident(tab) operator(=) ident(RevDict)operator(()operator(\)) -ident(tab)operator([)string<delimiter(")content(red)delimiter(")>operator(]) operator(=) string<delimiter(")content(rojo)delimiter(")> -ident(tab)operator([)string<delimiter(")content(blue)delimiter(")>operator(]) operator(=) string<delimiter(")content(azul)delimiter(")> -ident(tab)operator([)string<delimiter(")content(green)delimiter(")>operator(]) operator(=) string<delimiter(")content(verde)delimiter(")> -ident(tab)operator([)string<delimiter(")content(evil)delimiter(")>operator(]) operator(=) operator(()string<delimiter(")content(No Way!)delimiter(")>operator(,) string<delimiter(")content(Way!)delimiter(")>operator(\)) - -keyword(for) ident(key)operator(,) ident(val) keyword(in) ident(tab)operator(.)ident(items)operator(()operator(\))operator(:) - keyword(print) ident(key)operator(,) string<delimiter(")content(is)delimiter(")>operator(,) ident(val) -comment(#=>blue is azul) -comment(#=>('No Way!', 'Way!'\) is evil) -comment(#=>rojo is red) -comment(#=>evil is ('No Way!', 'Way!'\)) -comment(#=>azul is blue) -comment(#=>verde is green) -comment(#=>green is verde) -comment(#=>red is rojo) -comment(#-------------------------------------) -keyword(import) include(itertools) -keyword(for) ident(elem) keyword(in) ident(itertools)operator(.)ident(count)operator(()operator(\))operator(:) - keyword(print) string<delimiter(")content(Got)delimiter(")>operator(,) ident(elem) -comment(#-------------------------------------) -comment(# You could use FileDispatcher from section 7.18) -ident(tee) operator(=) ident(FileDispatcher)operator(()ident(sys)operator(.)ident(stderr)operator(,) ident(sys)operator(.)ident(stdout)operator(\)) -comment(#-------------------------------------) -comment(# @@PLEAC@@_14.0) - -comment(# See http://www.python.org/doc/topics/database/ for Database Interfaces details.) -comment(# currently listed on http://www.python.org/doc/topics/database/modules/) -comment(#) -comment(# DB/2, Informix, Interbase, Ingres, JDBC, MySQL, pyodbc, mxODBC, ODBC Interface,) -comment(# DCOracle, DCOracle2, PyGresQL, psycopg, PySQLite, sapdbapi, Sybase, ThinkSQL.) -comment(#) - -comment(# @@PLEAC@@_14.1) -comment(#-------------------------------------) -keyword(import) include(anydbm) -ident(filename) operator(=) string<delimiter(")content(test.db)delimiter(")> -keyword(try)operator(:) - ident(db) operator(=) ident(anydbm)operator(.)ident(open)operator(()ident(filename)operator(\)) -keyword(except) ident(anydbm)operator(,) ident(err)operator(:) - keyword(print) string<delimiter(")content(Can't open %s: %s!)delimiter(")> operator(%) operator(()ident(filename)operator(,) ident(err)operator(\)) - -ident(db)operator([)string<delimiter(")content(key)delimiter(")>operator(]) operator(=) string<delimiter(")content(value)delimiter(")> comment(# put value into database) -keyword(if) string<delimiter(")content(key)delimiter(")> keyword(in) ident(db)operator(:) comment(# check whether in database) - ident(val) operator(=) ident(db)operator(.)ident(pop)operator(()string<delimiter(")content(key)delimiter(")>operator(\)) comment(# retrieve and remove from database) -ident(db)operator(.)ident(close)operator(()operator(\)) comment(# close the database) -comment(#-------------------------------------) -comment(# download the following standalone program) -comment(#!/usr/bin/python) -comment(# userstats - generates statistics on who logged in.) -comment(# call with an argument to display totals) - -keyword(import) include(sys)operator(,) include(os)operator(,) include(anydbm)operator(,) include(re) - -ident(db_file) operator(=) string<delimiter(')content(/tmp/userstats.db)delimiter(')> comment(# where data is kept between runs) - -keyword(try)operator(:) - ident(db) operator(=) ident(anydbm)operator(.)ident(open)operator(()ident(db_file)operator(,)string<delimiter(')content(c)delimiter(')>operator(\)) comment(# open, create if it does not exist) -keyword(except)operator(:) - keyword(print) string<delimiter(")content(Can't open db %s: %s!)delimiter(")> operator(%) operator(()ident(db_file)operator(,) ident(sys)operator(.)ident(exc_info)operator(()operator(\))operator([)integer(1)operator(])operator(\)) - ident(sys)operator(.)ident(exit)operator(()integer(1)operator(\)) - -keyword(if) predefined(len)operator(()ident(sys)operator(.)ident(argv)operator(\)) operator(>) integer(1)operator(:) - keyword(if) ident(sys)operator(.)ident(argv)operator([)integer(1)operator(]) operator(==) string<delimiter(')content(ALL)delimiter(')>operator(:) - ident(userlist) operator(=) ident(db)operator(.)ident(keys)operator(()operator(\)) - keyword(else)operator(:) - ident(userlist) operator(=) ident(sys)operator(.)ident(argv)operator([)integer(1)operator(:)operator(]) - ident(userlist)operator(.)ident(sort)operator(()operator(\)) - keyword(for) ident(user) keyword(in) ident(userlist)operator(:) - keyword(if) ident(db)operator(.)ident(has_key)operator(()ident(user)operator(\))operator(:) - keyword(print) string<delimiter(")content(%s)char(\\t)content(%s)delimiter(")> operator(%) operator(()ident(user)operator(,) ident(db)operator([)ident(user)operator(])operator(\)) - keyword(else)operator(:) - keyword(print) string<delimiter(")content(%s)char(\\t)content(%s)delimiter(")> operator(%) operator(()ident(user)operator(,) integer(0)operator(\)) -keyword(else)operator(:) - ident(who) operator(=) ident(os)operator(.)ident(popen)operator(()string<delimiter(')content(who)delimiter(')>operator(\))operator(.)ident(readlines)operator(()operator(\)) comment(# run who(1\)) - keyword(if) predefined(len)operator(()ident(who)operator(\))operator(<)integer(1)operator(:) - keyword(print) string<delimiter(")content(error running who)delimiter(")> comment(# exit) - ident(sys)operator(.)ident(exit)operator(()integer(1)operator(\)) - comment(# extract username (first thin on the line\) and update) - ident(user_re) operator(=) ident(re)operator(.)ident(compile)operator(()string<delimiter(")content(^()content(\\S)content(+\))delimiter(")>operator(\)) - keyword(for) ident(line) keyword(in) ident(who)operator(:) - ident(fnd) operator(=) ident(user_re)operator(.)ident(search)operator(()ident(line)operator(\)) - keyword(if) keyword(not) ident(fnd)operator(:) - keyword(print) string<delimiter(")content(Bad line from who: %s)delimiter(")> operator(%) ident(line) - ident(sys)operator(.)ident(exit)operator(()integer(1)operator(\)) - ident(user) operator(=) ident(fnd)operator(.)ident(groups)operator(()operator(\))operator([)integer(0)operator(]) - keyword(if) keyword(not) ident(db)operator(.)ident(has_key)operator(()ident(user)operator(\))operator(:) - ident(db)operator([)ident(user)operator(]) operator(=) string<delimiter(")content(0)delimiter(")> - ident(db)operator([)ident(user)operator(]) operator(=) predefined(str)operator(()predefined(int)operator(()ident(db)operator([)ident(user)operator(])operator(\))operator(+)integer(1)operator(\)) comment(# only strings are allowed) -ident(db)operator(.)ident(close)operator(()operator(\)) - - - - -comment(# @@PLEAC@@_14.2) -comment(# Emptying a DBM File) - -keyword(import) include(anydbm) - -keyword(try)operator(:) - ident(db) operator(=) ident(anydbm)operator(.)ident(open)operator(()ident(FILENAME)operator(,)string<delimiter(')content(w)delimiter(')>operator(\)) comment(# open, for writing) -keyword(except) ident(anydbm)operator(.)ident(error)operator(,) ident(err)operator(:) - keyword(print) string<delimiter(")content(Can't open db %s: %s!)delimiter(")> operator(%) operator(()ident(filename)operator(,) ident(err)operator(\)) - keyword(raise) exception(SystemExit)operator(()integer(1)operator(\)) - -ident(db)operator(.)ident(clear)operator(()operator(\)) -ident(db)operator(.)ident(close)operator(()operator(\)) -comment(# -------------------------------) -keyword(try)operator(:) - ident(db) operator(=) ident(anydbm)operator(.)ident(open)operator(()ident(filename)operator(,)string<delimiter(')content(n)delimiter(')>operator(\)) comment(# open, always create a new empty db) -keyword(except) ident(anydbm)operator(.)ident(error)operator(,) ident(err)operator(:) - keyword(print) string<delimiter(")content(Can't open db %s: %s!)delimiter(")> operator(%) operator(()ident(filename)operator(,) ident(err)operator(\)) - keyword(raise) exception(SystemExit)operator(()integer(1)operator(\)) - -ident(db)operator(.)ident(close)operator(()operator(\)) -comment(# -------------------------------) -keyword(import) include(os) -keyword(try)operator(:) - ident(os)operator(.)ident(remove)operator(()ident(FILENAME)operator(\)) -keyword(except) exception(OSError)operator(,) ident(err)operator(:) - keyword(print) string<delimiter(")content(Couldn't remove %s to empty the database: %s!)delimiter(")> operator(%) operator(()ident(FILENAME)operator(,) - ident(err)operator(\)) - keyword(raise) exception(SystemExit) - -keyword(try)operator(:) - ident(db) operator(=) ident(anydbm)operator(.)ident(open)operator(()ident(FILENAME)operator(,)string<delimiter(')content(n)delimiter(')>operator(\)) comment(# open, flways create a new empty db) -keyword(except) ident(anydbm)operator(.)ident(error)operator(,) ident(err)operator(:) - keyword(print) string<delimiter(")content(Couldn't create %s database: %s!)delimiter(")> operator(%) operator(()ident(FILENAME)operator(,) ident(err)operator(\)) - keyword(raise) exception(SystemExit) - -comment(# @@PLEAC@@_14.3) -comment(# Converting Between DBM Files) - -comment(# download the following standalone program) -comment(#!/usr/bin/python) -comment(# db2gdbm: converts DB to GDBM) - -keyword(import) include(sys) -keyword(import) include(dbm)operator(,) include(gdbm) - -keyword(if) predefined(len)operator(()ident(sys)operator(.)ident(argv)operator(\))operator(<)integer(3)operator(:) - keyword(print) string<delimiter(")content(usage: db2gdbm infile outfile)delimiter(")> - ident(sys)operator(.)ident(exit)operator(()integer(1)operator(\)) - -operator(()ident(infile)operator(,) ident(outfile)operator(\)) operator(=) ident(sys)operator(.)ident(argv)operator([)integer(1)operator(:)operator(]) - -comment(# open the files) -keyword(try)operator(:) - ident(db_in) operator(=) ident(dbm)operator(.)ident(open)operator(()ident(infile)operator(\)) -keyword(except)operator(:) - keyword(print) string<delimiter(")content(Can't open infile %s: %s!)delimiter(")> operator(%) operator(()ident(infile)operator(,) ident(sys)operator(.)ident(exc_info)operator(()operator(\))operator([)integer(1)operator(])operator(\)) - ident(sys)operator(.)ident(exit)operator(()integer(1)operator(\)) -keyword(try)operator(:) - ident(db_out) operator(=) ident(dbm)operator(.)ident(open)operator(()ident(outfile)operator(,)string<delimiter(")content(n)delimiter(")>operator(\)) -keyword(except)operator(:) - keyword(print) string<delimiter(")content(Can't open outfile %s: %s!)delimiter(")> operator(%) operator(()ident(outfile)operator(,) ident(sys)operator(.)ident(exc_info)operator(()operator(\))operator([)integer(1)operator(])operator(\)) - ident(sys)operator(.)ident(exit)operator(()integer(1)operator(\)) - -comment(# copy (don't use db_out = db_in because it's slow on big databases\)) -comment(# is this also so for python ?) -keyword(for) ident(k) keyword(in) ident(db_in)operator(.)ident(keys)operator(()operator(\))operator(:) - ident(db_out)operator([)ident(k)operator(]) operator(=) ident(db_in)operator([)ident(k)operator(]) - -comment(# these close happen automatically at program exit) -ident(db_out)operator(.)ident(close)operator(()operator(\)) -ident(db_in)operator(.)ident(close)operator(()operator(\)) - - - -comment(# @@PLEAC@@_14.4) - -ident(OUTPUT)operator(.)ident(update)operator(()ident(INPUT1)operator(\)) -ident(OUTPUT)operator(.)ident(update)operator(()ident(INPUT2)operator(\)) - -ident(OUTPUT) operator(=) ident(anydbm)operator(.)ident(open)operator(()string<delimiter(")content(OUT)delimiter(")>operator(,)string<delimiter(")content(n)delimiter(")>operator(\)) -keyword(for) ident(INPUT) keyword(in) operator(()ident(INPUT1)operator(,) ident(INPUT2)operator(,) ident(INPUT1)operator(\))operator(:) - keyword(for) ident(key)operator(,) ident(value) keyword(in) ident(INPUT)operator(.)ident(iteritems)operator(()operator(\))operator(:) - keyword(if) ident(OUTPUT)operator(.)ident(has_key)operator(()ident(key)operator(\))operator(:) - comment(# decide which value to use and set OUTPUT[key] if necessary) - keyword(print) string<delimiter(")content(key %s already present: %s, new: %s)delimiter(")> operator(%) operator(() - ident(key)operator(,) ident(OUTPUT)operator([)ident(key)operator(])operator(,) ident(value) operator(\)) - keyword(else)operator(:) - ident(OUTPUT)operator([)ident(key)operator(]) operator(=) ident(value) - -comment(# @@PLEAC@@_14.5) -comment(# On systems where the Berkeley DB supports it, dbhash takes an) -comment(# "l" flag:) -keyword(import) include(dbhash) -ident(dbhash)operator(.)ident(open)operator(()string<delimiter(")content(mydb.db)delimiter(")>operator(,) string<delimiter(")content(cl)delimiter(")>operator(\)) comment(# 'c': create if doesn't exist) - -comment(# @@INCOMPLETE@@) - -comment(# @@PLEAC@@_14.6) -comment(# @@INCOMPLETE@@) -comment(# @@INCOMPLETE@@) - -comment(# @@PLEAC@@_14.7) -comment(# @@INCOMPLETE@@) -comment(# @@INCOMPLETE@@) - -comment(# @@PLEAC@@_14.8) -comment(# shelve uses anydbm to access and chooses between DBMs.) -comment(# anydbm detect file formats automatically.) -keyword(import) include(shelve) -ident(db) operator(=) ident(shelve)operator(.)ident(open)operator(()string<delimiter(")content(celebrities.db)delimiter(")>operator(\)) - -ident(name1) operator(=) string<delimiter(")content(Greg Stein)delimiter(")> -ident(name2) operator(=) string<delimiter(")content(Greg Ward)delimiter(")> - -comment(# shelve uses pickle to convert objects into strings and back.) -comment(# This is automatic.) -ident(db)operator([)ident(name1)operator(]) operator(=) operator([)string<delimiter(")content(of ViewCVS fame)delimiter(")>operator(,) string<delimiter(")content(gstein@lyra.org)delimiter(")>operator(]) -ident(db)operator([)ident(name2)operator(]) operator(=) operator([)string<delimiter(")content(of Distutils fame)delimiter(")>operator(,) string<delimiter(")content(gward@python.net)delimiter(")>operator(]) - -ident(greg1) operator(=) ident(db)operator([)ident(name1)operator(]) -ident(greg2) operator(=) ident(db)operator([)ident(name2)operator(]) - -keyword(print) string<delimiter(")content(Two Gregs: %x %x)delimiter(")> operator(%) operator(()predefined(id)operator(()ident(greg1)operator(\))operator(,) predefined(id)operator(()ident(greg2)operator(\))operator(\)) - -keyword(if) ident(greg1) operator(==) ident(greg2)operator(:) - keyword(print) string<delimiter(")content(You're having runtime fun with one Greg made two.)delimiter(")> -keyword(else)operator(:) - keyword(print) string<delimiter(")content(No two Gregs are ever alike.)delimiter(")> - -comment(# Changes to mutable entries are not written back by default.) -comment(# You can get the copy, change it, and put it back.) -ident(entry) operator(=) ident(db)operator([)ident(name1)operator(]) -ident(entry)operator([)integer(0)operator(]) operator(=) string<delimiter(")content(of Subversion fame)delimiter(")> -ident(db)operator([)ident(name1)operator(]) operator(=) ident(entry) - -comment(# Or you can open shelve with writeback option. Then you can) -comment(# change mutable entries directly. (New in 2.3\)) -ident(db) operator(=) ident(shelve)operator(.)ident(open)operator(()string<delimiter(")content(celebrities.db)delimiter(")>operator(,) ident(writeback)operator(=)pre_constant(True)operator(\)) -ident(db)operator([)ident(name2)operator(])operator([)integer(0)operator(]) operator(=) string<delimiter(")content(of Optik fame)delimiter(")> - -comment(# However, writeback option can consume vast amounts of memory) -comment(# to do its magic. You can clear cache with sync(\).) -ident(db)operator(.)ident(sync)operator(()operator(\)) -comment(#-----------------------------) - -comment(# @@PLEAC@@_14.9) -comment(# DON'T DO THIS.) -keyword(import) include(os) keyword(as) ident(_os)operator(,) include(shelve) keyword(as) ident(_shelve) - -ident(_fname) operator(=) string<delimiter(")content(persist.db)delimiter(")> -keyword(if) keyword(not) ident(_os)operator(.)ident(path)operator(.)ident(exists)operator(()ident(_fname)operator(\))operator(:) - ident(var1) operator(=) string<delimiter(")content(foo)delimiter(")> - ident(var2) operator(=) string<delimiter(")content(bar)delimiter(")> -ident(_d) operator(=) ident(_shelve)operator(.)ident(open)operator(()string<delimiter(")content(persist.db)delimiter(")>operator(\)) -predefined(globals)operator(()operator(\))operator(.)ident(update)operator(()ident(_d)operator(\)) - -keyword(print) string<delimiter(")content(var1 is %s; var2 is %s)delimiter(")>operator(%)operator(()ident(var1)operator(,) ident(var2)operator(\)) -ident(var1) operator(=) predefined(raw_input)operator(()string<delimiter(")content(New var1: )delimiter(")>operator(\)) -ident(var2) operator(=) predefined(raw_input)operator(()string<delimiter(")content(New var2: )delimiter(")>operator(\)) - -keyword(for) ident(key)operator(,) ident(val) keyword(in) predefined(globals)operator(()operator(\))operator(.)ident(items)operator(()operator(\))operator(:) - keyword(if) keyword(not) ident(key)operator(.)ident(startswith)operator(()string<delimiter(")content(_)delimiter(")>operator(\))operator(:) - ident(_d)operator([)ident(key)operator(]) operator(=) ident(val) -comment(# @@INCOMPLETE@@) - -comment(# @@PLEAC@@_14.10) -comment(#-----------------------------) -keyword(import) include(dbmodule) - -ident(dbconn) operator(=) ident(dbmodule)operator(.)ident(connect)operator(()ident(arguments)operator(...)operator(\)) - -ident(cursor) operator(=) ident(dbconn)operator(.)ident(cursor)operator(()operator(\)) -ident(cursor)operator(.)ident(execute)operator(()ident(sql)operator(\)) - -keyword(while) pre_constant(True)operator(:) - ident(row) operator(=) ident(cursor)operator(.)ident(fetchone)operator(()operator(\)) - keyword(if) ident(row) keyword(is) pre_constant(None)operator(:) - keyword(break) - operator(...) - -ident(cursor)operator(.)ident(close)operator(()operator(\)) -ident(dbconn)operator(.)ident(close)operator(()operator(\)) - -comment(#-----------------------------) -keyword(import) include(MySQLdb) -keyword(import) include(pwd) - -ident(dbconn) operator(=) ident(MySQLdb)operator(.)ident(connect)operator(()ident(db)operator(=)string<delimiter(')content(dbname)delimiter(')>operator(,) ident(host)operator(=)string<delimiter(')content(mysqlserver.domain.com)delimiter(')>operator(,) - ident(port)operator(=)integer(3306)operator(,) ident(user)operator(=)string<delimiter(')content(user)delimiter(')>operator(,) ident(passwd)operator(=)string<delimiter(')content(password)delimiter(')>operator(\)) - -ident(cursor) operator(=) ident(dbconn)operator(.)ident(cursor)operator(()operator(\)) -ident(cursor)operator(.)ident(execute)operator(()string<delimiter(")content(CREATE TABLE users (uid INT, login CHAR(8\)\))delimiter(")>operator(\)) - -comment(# Note: some databases use %s for parameters, some use ? or other) -comment(# formats) -ident(sql_fmt) operator(=) string<delimiter(")content(INSERT INTO users VALUES( %s, %s \))delimiter(")> - -keyword(for) ident(userent) keyword(in) ident(pwd)operator(.)ident(getpwall)operator(()operator(\))operator(:) - comment(# the second argument contains a list of parameters which will) - comment(# be quoted before being put in the query) - ident(cursor)operator(.)ident(execute)operator(()ident(sql_fmt)operator(,) operator(()ident(userent)operator(.)ident(pw_uid)operator(,) ident(userent)operator(.)ident(pw_name)operator(\))operator(\)) - -ident(cursor)operator(.)ident(execute)operator(()string<delimiter(")content(SELECT * FROM users WHERE uid < 50)delimiter(")>operator(\)) - -keyword(for) ident(row) keyword(in) ident(cursor)operator(.)ident(fetchall)operator(()operator(\))operator(:) - comment(# NULL will be displayed as None) - keyword(print) string<delimiter(")content(, )delimiter(")>operator(.)ident(join)operator(()predefined(map)operator(()predefined(str)operator(,) ident(row)operator(\))operator(\)) - -ident(cursor)operator(.)ident(execute)operator(()string<delimiter(")content(DROP TABLE users)delimiter(")>operator(\)) -ident(cursor)operator(.)ident(close)operator(()operator(\)) -ident(dbconn)operator(.)ident(close)operator(()operator(\)) -comment(#-----------------------------) - -comment(# @@PLEAC@@_14.11) -comment(# @@INCOMPLETE@@) -comment(# @@INCOMPLETE@@) - -comment(# @@PLEAC@@_15.1) -comment(#-----------------------------) -comment(# Parsing program arguments) -comment(# -- getopt way (All Python versions\)) - -comment(#-----------------------------) -comment(# Preamble) - -keyword(import) include(sys) -keyword(import) include(getopt) - -comment(# getopt(\) explicitly receives arguments for it to process.) -comment(# No magic. Explicit is better than implicit.) - -comment(# PERL: @ARGV) -ident(argv) operator(=) ident(sys)operator(.)ident(argv)operator([)integer(1)operator(:)operator(]) - -comment(# Note that sys.argv[0] is the script name, and need to be) -comment(# stripped.) - -comment(#-----------------------------) -comment(# Short options) - -comment(# PERL: getopt("vDo"\);) -comment(# Polluting the caller's namespace is evil. Don't do that.) - -comment(# PERL: getopt("vDo:", \\%opts\);) -ident(opts)operator(,) ident(rest) operator(=) ident(getopt)operator(.)ident(getopt)operator(()ident(argv)operator(,) string<delimiter(")content(vDo:)delimiter(")>operator(\)) - -comment(# If you want switches to take arguments, you must say so.) -comment(# Unlike PERL, which silently performs its magic, switches) -comment(# specified without trailing colons are considered boolean) -comment(# flags by default.) - -comment(# PERL: getopt("vDo", \\%opts\);) -ident(opts)operator(,) ident(rest) operator(=) ident(getopt)operator(.)ident(getopt)operator(()ident(argv)operator(,) string<delimiter(")content(v:D:o:)delimiter(")>operator(\)) - -comment(# PERL: getopts("vDo:", \\%opts\);) -comment(# getopt/getopts distinction is not present in Python 'getopt') -comment(# module.) - -comment(#-----------------------------) -comment(# getopt(\) return values, compared to PERL) - -comment(# getopt(\) returns two values. The first is a list of) -comment(# (option, value\) pair. (Not a dictionary, i.e. Python hash.\)) -comment(# The second is the list of arguments left unprocessed.) - -comment(# Example) -comment(# >>> argv = "-v ARG1 -D ARG2 -o ARG3".split(\)) -comment(# >>> opts, rest = getopt.getopt(argv, "v:D:o:"\)) -comment(# >>> print opts) -comment(# [('-v', 'ARG1'\), ('-D', 'ARG2'\), ('-o', 'ARG3'\)]) - -comment(#-----------------------------) -comment(# Long options) - -comment(# getopt(\) handles long options too. Pass a list of option) -comment(# names as the third argument. If an option takes an argument,) -comment(# append an equal sign.) - -ident(opts)operator(,) ident(rest) operator(=) ident(getopt)operator(.)ident(getopt)operator(()ident(argv)operator(,) string<delimiter(")delimiter(")>operator(,) operator([) - string<delimiter(")content(verbose)delimiter(")>operator(,) string<delimiter(")content(Debug)delimiter(")>operator(,) string<delimiter(")content(output=)delimiter(")>operator(])operator(\)) - -comment(#-----------------------------) -comment(# Switch clustering) - -comment(# getopt(\) does switch clustering just fine.) - -comment(# Example) -comment(# >>> argv1 = '-r -f /tmp/testdir'.split(\)) -comment(# >>> argv2 = '-rf /tmp/testdir'.split(\)) -comment(# >>> print getopt.getopt(argv1, 'rf'\)) -comment(# ([('-r', ''\), ('-f', ''\)], ['/tmp/testdir']\)) -comment(# >>> print getopt.getopt(argv2, 'rf'\)) -comment(# ([('-r', ''\), ('-f', ''\)], ['/tmp/testdir']\)) - -comment(#-----------------------------) -comment(# @@INCOMPLETE@@) - -comment(# TODO: Complete this section using 'getopt'. Show how to) -comment(# use the parsed result.) - -comment(# http://www.python.org/doc/current/lib/module-getopt.html) -comment(# Python library reference has a "typical usage" demo.) - -comment(# TODO: Introduce 'optparse', a very powerful command line) -comment(# option parsing module. New in 2.3.) - - -comment(# @@PLEAC@@_15.2) -comment(##------------------) -keyword(import) include(sys) - -keyword(def) method(is_interactive_python)operator(()operator(\))operator(:) - keyword(try)operator(:) - ident(ps) operator(=) ident(sys)operator(.)ident(ps1) - keyword(except)operator(:) - keyword(return) pre_constant(False) - keyword(return) pre_constant(True) -comment(##------------------) -keyword(import) include(sys) -keyword(def) method(is_interactive)operator(()operator(\))operator(:) - comment(# only False if stdin is redirected like "-t" in perl.) - keyword(return) ident(sys)operator(.)ident(stdin)operator(.)ident(isatty)operator(()operator(\)) - -comment(# Or take advantage of Python's Higher Order Functions:) -ident(is_interactive) operator(=) ident(sys)operator(.)ident(stdin)operator(.)ident(isatty) -comment(##------------------) -keyword(import) include(posix) -keyword(def) method(is_interactive_posix)operator(()operator(\))operator(:) - ident(tty) operator(=) predefined(open)operator(()string<delimiter(")content(/dev/tty)delimiter(")>operator(\)) - ident(tpgrp) operator(=) ident(posix)operator(.)ident(tcgetpgrp)operator(()ident(tty)operator(.)ident(fileno)operator(()operator(\))operator(\)) - ident(pgrp) operator(=) ident(posix)operator(.)ident(getpgrp)operator(()operator(\)) - ident(tty)operator(.)ident(close)operator(()operator(\)) - keyword(return) operator(()ident(tpgrp) operator(==) ident(pgrp)operator(\)) - -comment(# test with:) -comment(# python 15.2.py) -comment(# echo "dummy" | python 15.2.py | cat) -keyword(print) string<delimiter(")content(is python shell:)delimiter(")>operator(,) ident(is_interactive_python)operator(()operator(\)) -keyword(print) string<delimiter(")content(is a tty:)delimiter(")>operator(,) ident(is_interactive)operator(()operator(\)) -keyword(print) string<delimiter(")content(has no tty:)delimiter(")>operator(,) ident(is_interactive_posix)operator(()operator(\)) - -keyword(if) ident(is_interactive)operator(()operator(\))operator(:) - keyword(while) pre_constant(True)operator(:) - keyword(try)operator(:) - ident(ln) operator(=) predefined(raw_input)operator(()string<delimiter(")content(Prompt:)delimiter(")>operator(\)) - keyword(except)operator(:) - keyword(break) - keyword(print) string<delimiter(")content(you typed:)delimiter(")>operator(,) ident(ln) - - -comment(# @@PLEAC@@_15.3) - -comment(# Python has no Term::Cap module.) -comment(# One could use the curses, but this was not ported to windows,) -comment(# use console.) - -comment(# just run clear) -keyword(import) include(os) -ident(os)operator(.)ident(system)operator(()string<delimiter(")content(clear)delimiter(")>operator(\)) -comment(# cache output) -ident(clear) operator(=) ident(os)operator(.)ident(popen)operator(()string<delimiter(")content(clear)delimiter(")>operator(\))operator(.)ident(read)operator(()operator(\)) -keyword(print) ident(clear) -comment(# or to avoid print's newline) -ident(sys)operator(.)ident(stdout)operator(.)ident(write)operator(()ident(clear)operator(\)) - -comment(# @@PLEAC@@_15.4) -comment(# Determining Terminal or Window Size) - -comment(# eiter use ioctl) -keyword(import) include(struct)operator(,) include(fcntl)operator(,) include(termios)operator(,) include(sys) - -ident(s) operator(=) ident(struct)operator(.)ident(pack)operator(()string<delimiter(")content(HHHH)delimiter(")>operator(,) integer(0)operator(,) integer(0)operator(,) integer(0)operator(,) integer(0)operator(\)) -ident(hchar)operator(,) ident(wchar) operator(=) ident(struct)operator(.)ident(unpack)operator(()string<delimiter(")content(HHHH)delimiter(")>operator(,) ident(fcntl)operator(.)ident(ioctl)operator(()ident(sys)operator(.)ident(stdout)operator(.)ident(fileno)operator(()operator(\))operator(,) - ident(termios)operator(.)ident(TIOCGWINSZ)operator(,) ident(s)operator(\))operator(\))operator([)operator(:)integer(2)operator(]) -comment(# or curses) -keyword(import) include(curses) -operator(()ident(hchar)operator(,)ident(wchar)operator(\)) operator(=) ident(curses)operator(.)ident(getmaxyx)operator(()operator(\)) - -comment(# graph contents of values) -keyword(import) include(struct)operator(,) include(fcntl)operator(,) include(termios)operator(,) include(sys) -ident(width) operator(=) ident(struct)operator(.)ident(unpack)operator(()string<delimiter(")content(HHHH)delimiter(")>operator(,) ident(fcntl)operator(.)ident(ioctl)operator(()ident(sys)operator(.)ident(stdout)operator(.)ident(fileno)operator(()operator(\))operator(,) - ident(termios)operator(.)ident(TIOCGWINSZ)operator(,) - ident(struct)operator(.)ident(pack)operator(()string<delimiter(")content(HHHH)delimiter(")>operator(,) integer(0)operator(,) integer(0)operator(,) integer(0)operator(,) integer(0)operator(\))operator(\))operator(\))operator([)integer(1)operator(]) -keyword(if) ident(width)operator(<)integer(10)operator(:) - keyword(print) string<delimiter(")content(You must have at least 10 characters)delimiter(")> - keyword(raise) exception(SystemExit) - -ident(max_value) operator(=) integer(0) -keyword(for) ident(v) keyword(in) ident(values)operator(:) - ident(max_value) operator(=) predefined(max)operator(()ident(max_value)operator(,)ident(v)operator(\)) - -ident(ratio) operator(=) operator(()ident(width)operator(-)integer(10)operator(\))operator(/)ident(max_value) comment(# chars per unit) -keyword(for) ident(v) keyword(in) ident(values)operator(:) - keyword(print) string<delimiter(")content(%8.1f %s)delimiter(")> operator(%) operator(()ident(v)operator(,) string<delimiter(")content(*)delimiter(")>operator(*)operator(()ident(v)operator(*)ident(ratio)operator(\))operator(\)) - -comment(# @@PLEAC@@_15.5) - -comment(# there seems to be no standard ansi module) -comment(# and BLINK does not blink here.) -ident(RED) operator(=) string<delimiter(')char(\\033)content([31m)delimiter(')> -ident(RESET) operator(=) string<delimiter(')char(\\033)content([0;0m)delimiter(')> -ident(BLINK) operator(=) string<delimiter(')char(\\033)content([05m)delimiter(')> -ident(NOBLINK) operator(=) string<delimiter(')char(\\033)content([25m)delimiter(')> - -keyword(print) ident(RED)operator(+)string<delimiter(")content(DANGER, Will Robinson!)delimiter(")>operator(+)ident(RESET) -keyword(print) string<delimiter(")content(This is just normal text)delimiter(")> -keyword(print) string<delimiter(")content(Will ``)delimiter(")>operator(+)ident(BLINK)operator(+)string<delimiter(")content(Do you hurt yet?)delimiter(")>operator(+)ident(NOBLINK)operator(+)string<delimiter(")content('' and back)delimiter(")> - -comment(# @@PLEAC@@_15.6) - -comment(# Show ASCII values for keypresses) - -comment(# _Getch is from http://aspn.activestate.com/ASPN/Cookbook/Python/Recipe/134892) -keyword(class) class(_Getch)operator(:) - docstring<delimiter(""")content(Gets a single character from standard input. Doesn't echo to screen.)delimiter(""")> - keyword(def) method(__init__)operator(()pre_constant(self)operator(\))operator(:) - keyword(try)operator(:) - pre_constant(self)operator(.)ident(impl) operator(=) ident(_GetchWindows)operator(()operator(\)) - keyword(except) exception(ImportError)operator(:) - pre_constant(self)operator(.)ident(impl) operator(=) ident(_GetchUnix)operator(()operator(\)) - - keyword(def) method(__call__)operator(()pre_constant(self)operator(\))operator(:) - keyword(return) pre_constant(self)operator(.)ident(impl)operator(()operator(\)) - - -keyword(class) class(_GetchUnix)operator(:) - keyword(def) method(__init__)operator(()pre_constant(self)operator(\))operator(:) - keyword(import) include(tty)operator(,) include(sys) - - keyword(def) method(__call__)operator(()pre_constant(self)operator(\))operator(:) - keyword(import) include(sys)operator(,) include(tty)operator(,) include(termios) - ident(fd) operator(=) ident(sys)operator(.)ident(stdin)operator(.)ident(fileno)operator(()operator(\)) - ident(old_settings) operator(=) ident(termios)operator(.)ident(tcgetattr)operator(()ident(fd)operator(\)) - keyword(try)operator(:) - ident(tty)operator(.)ident(setraw)operator(()ident(sys)operator(.)ident(stdin)operator(.)ident(fileno)operator(()operator(\))operator(\)) - ident(ch) operator(=) ident(sys)operator(.)ident(stdin)operator(.)ident(read)operator(()integer(1)operator(\)) - keyword(finally)operator(:) - ident(termios)operator(.)ident(tcsetattr)operator(()ident(fd)operator(,) ident(termios)operator(.)ident(TCSADRAIN)operator(,) ident(old_settings)operator(\)) - keyword(return) ident(ch) - - -keyword(class) class(_GetchWindows)operator(:) - keyword(def) method(__init__)operator(()pre_constant(self)operator(\))operator(:) - keyword(import) include(msvcrt) - - keyword(def) method(__call__)operator(()pre_constant(self)operator(\))operator(:) - keyword(import) include(msvcrt) - keyword(return) ident(msvcrt)operator(.)ident(getch)operator(()operator(\)) - - -ident(getch) operator(=) ident(_Getch)operator(()operator(\)) - -keyword(print) string<delimiter(")content(Press keys to see their ASCII values. Use Ctrl-C to quit.)char(\\n)delimiter(")> -keyword(try)operator(:) - keyword(while) pre_constant(True)operator(:) - ident(char) operator(=) predefined(ord)operator(()ident(getch)operator(()operator(\))operator(\)) - keyword(if) ident(char) operator(==) integer(3)operator(:) - keyword(break) - keyword(print) string<delimiter(")content( Decimal: %3d Octal: %3o Hex: x%02x)delimiter(")> operator(%) operator(()ident(char)operator(,) ident(char)operator(,) ident(char)operator(\)) -keyword(except) ident(KeyboardError)operator(:) - keyword(pass) -comment(#----------------------------------------) - -comment(# @@PLEAC@@_15.7) -keyword(print) string<delimiter(")char(\\a)content(Wake up!)char(\\n)delimiter(")>operator(;) -comment(#----------------------------------------) -comment(# @@INCOMPLETE@@) - -comment(# @@PLEAC@@_15.8) -comment(# @@INCOMPLETE@@) -comment(# @@INCOMPLETE@@) - -comment(# @@PLEAC@@_15.9) -comment(# On Windows) -keyword(import) include(msvcrt) -keyword(if) ident(msvcrt)operator(.)ident(kbhit)operator(()operator(\))operator(:) - ident(c) operator(=) ident(msvcrt)operator(.)ident(getch) - -comment(# See http://aspn.activestate.com/ASPN/Cookbook/Python/Recipe/134892) -comment(# @@INCOMPLETE@@) - - -comment(# @@PLEAC@@_15.10) -comment(#----------------------------------------) -keyword(import) include(getpass) -keyword(import) include(pwd) -keyword(import) include(crypt) -ident(password) operator(=) ident(getpass)operator(.)ident(getpass)operator(()string<delimiter(')content(Enter your password: )delimiter(')>operator(\)) -ident(username) operator(=) ident(getpass)operator(.)ident(getuser)operator(()operator(\)) -ident(encrypted) operator(=) ident(pwd)operator(.)ident(getpwnam)operator(()ident(username)operator(\))operator(.)ident(pw_passwd) -keyword(if) keyword(not) ident(encrypted) keyword(or) ident(encrypted) operator(==) string<delimiter(')content(x)delimiter(')>operator(:) - comment(# If using shadow passwords, this will be empty or 'x') - keyword(print) string<delimiter(")content(Cannot verify password)delimiter(")> -keyword(elif) ident(crypt)operator(.)ident(crypt)operator(()ident(password)operator(,) ident(encrypted)operator(\)) operator(!=) ident(encrypted)operator(:) - keyword(print) string<delimiter(")content(You are not)delimiter(")>operator(,) ident(username) -keyword(else)operator(:) - keyword(print) string<delimiter(")content(Welcome,)delimiter(")>operator(,) ident(username) -comment(#----------------------------------------) - -comment(# @@PLEAC@@_15.11) - -comment(# simply importing readline gives line edit capabilities to raw_) -keyword(import) include(readline) -ident(readline)operator(.)ident(add_history)operator(()string<delimiter(")content(fake line)delimiter(")>operator(\)) -ident(line) operator(=) predefined(raw_input)operator(()operator(\)) - -comment(# download the following standalone program) -comment(#!/usr/bin/python) -comment(# vbsh - very bad shell) - -keyword(import) include(os) -keyword(import) include(readline) - -keyword(while) pre_constant(True)operator(:) - keyword(try)operator(:) - ident(cmd) operator(=) predefined(raw_input)operator(()string<delimiter(')content($ )delimiter(')>operator(\)) - keyword(except) exception(EOFError)operator(:) - keyword(break) - ident(status) operator(=) ident(os)operator(.)ident(system)operator(()ident(cmd)operator(\)) - ident(exit_value) operator(=) ident(status) operator(>>) integer(8) - ident(signal_num) operator(=) ident(status) operator(&) integer(127) - ident(dumped_core) operator(=) ident(status) operator(&) integer(128) keyword(and) string<delimiter(")content((core dumped\))delimiter(")> keyword(or) string<delimiter(")delimiter(")> - keyword(print) string<delimiter(")content(Program terminated with status %d from signal %d%s)char(\\n)delimiter(")> operator(%) operator(() - ident(exit_value)operator(,) ident(signal_num)operator(,) ident(dumped_core)operator(\)) - - - -ident(readline)operator(.)ident(add_history)operator(()string<delimiter(")content(some line!)delimiter(")>operator(\)) -ident(readline)operator(.)ident(remove_history_item)operator(()ident(position)operator(\)) -ident(line) operator(=) ident(readline)operator(.)ident(get_history_item)operator(()ident(index)operator(\)) - -comment(# an interactive python shell would be) -keyword(import) include(code)operator(,) include(readline) -ident(code)operator(.)ident(InteractiveConsole)operator(()operator(\))operator(.)ident(interact)operator(()string<delimiter(")content(code.InteractiveConsole)delimiter(")>operator(\)) - -comment(# @@PLEAC@@_15.12) -comment(# @@INCOMPLETE@@) -comment(# @@INCOMPLETE@@) - -comment(# @@PLEAC@@_15.13) -comment(#----------------------------------------) -comment(# This entry uses pexpect, a pure Python Expect-like module.) -comment(# http://pexpect.sourceforge.net/) - -comment(# for more information, check pexpect's documentation and example.) - -keyword(import) include(pexpect) - -comment(#----------------------------------------) -comment(# spawn program) -keyword(try)operator(:) - ident(command) operator(=) ident(pexpect)operator(.)ident(spawn)operator(()string<delimiter(")content(program to run)delimiter(")>operator(\)) -keyword(except) ident(pexpect)operator(.)ident(ExceptionPexpect)operator(:) - comment(# couldn't spawn program) - keyword(pass) - -comment(#----------------------------------------) -comment(# you can pass any filelike object to setlog) -comment(# passing None will stop logging) - -comment(# stop logging) -ident(command)operator(.)ident(setlog)operator(()pre_constant(None)operator(\)) - -comment(# log to stdout) -keyword(import) include(sys) -ident(command)operator(.)ident(setlog)operator(()ident(sys)operator(.)ident(stdout)operator(\)) - -comment(# log to specific file) -ident(fp) operator(=) predefined(file)operator(()string<delimiter(")content(pexpect.log)delimiter(")>operator(,) string<delimiter(")content(w)delimiter(")>operator(\)) -ident(command)operator(.)ident(setlog)operator(()ident(fp)operator(\)) - -comment(#----------------------------------------) -comment(# expecting simple string) -ident(command)operator(.)ident(expect)operator(()string<delimiter(")content(ftp>)delimiter(")>operator(\)) - -comment(# expecting regular expression) -comment(# actually, string is always treated as regular expression) - -comment(# so it's the same thing) -ident(command)operator(.)ident(expect)operator(()string<delimiter(")content(Name.*:)delimiter(")>operator(\)) - -comment(# you can do it this way, too) -keyword(import) include(re) -ident(regex) operator(=) ident(re)operator(.)ident(compile)operator(()string<delimiter(")content(Name.*:)delimiter(")>operator(\)) -ident(command)operator(.)ident(expect)operator(()ident(regex)operator(\)) - -comment(#----------------------------------------) -comment(# expecting with timeout) -keyword(try)operator(:) - ident(command)operator(.)ident(expect)operator(()string<delimiter(")content(Password:)delimiter(")>operator(,) integer(10)operator(\)) -keyword(except) ident(pexpect)operator(.)ident(TIMEOUT)operator(:) - comment(# timed out) - keyword(pass) - -comment(# setting default timeout) -ident(command)operator(.)ident(timeout) operator(=) integer(10) - -comment(# since we set default timeout, following does same as above) -keyword(try)operator(:) - ident(command)operator(.)ident(expect)operator(()string<delimiter(")content(Password:)delimiter(")>operator(\)) -keyword(except) ident(pexpect)operator(.)ident(TIMEOUT)operator(:) - comment(# timed out) - keyword(pass) - -comment(#----------------------------------------) -comment(# what? do you *really* want to wait forever?) - -comment(#----------------------------------------) -comment(# sending line: normal way) -ident(command)operator(.)ident(sendline)operator(()string<delimiter(")content(get spam_and_ham)delimiter(")>operator(\)) - -comment(# you can also treat it as file) -keyword(print)operator(>>)ident(command)operator(,) string<delimiter(")content(get spam_and_ham)delimiter(")> - -comment(#----------------------------------------) -comment(# finalization) - -comment(# close connection with child process) -comment(# (that is, freeing file descriptor\)) -ident(command)operator(.)ident(close)operator(()operator(\)) - -comment(# kill child process) -keyword(import) include(signal) -ident(command)operator(.)ident(kill)operator(()ident(signal)operator(.)ident(SIGKILL)operator(\)) - -comment(#----------------------------------------) -comment(# expecting multiple choices) -ident(which) operator(=) ident(command)operator(.)ident(expect)operator(()operator([)string<delimiter(")content(invalid)delimiter(")>operator(,) string<delimiter(")content(success)delimiter(")>operator(,) string<delimiter(")content(error)delimiter(")>operator(,) string<delimiter(")content(boom)delimiter(")>operator(])operator(\)) - -comment(# return value is index of matched choice) -comment(# 0: invalid) -comment(# 1: success) -comment(# 2: error) -comment(# 3: boom) - -comment(#----------------------------------------) -comment(# avoiding exception handling) -ident(choices) operator(=) operator([)string<delimiter(")content(invalid)delimiter(")>operator(,) string<delimiter(")content(success)delimiter(")>operator(,) string<delimiter(")content(error)delimiter(")>operator(,) string<delimiter(")content(boom)delimiter(")>operator(]) -ident(choices)operator(.)ident(append)operator(()ident(pexpect)operator(.)ident(TIMEOUT)operator(\)) -ident(choices)operator(.)ident(append)operator(()ident(pexpect)operator(.)ident(EOF)operator(\)) - -ident(which) operator(=) ident(command)operator(.)ident(expect)operator(()ident(choices)operator(\)) - -comment(# if TIMEOUT or EOF occurs, appropriate index is returned) -comment(# (instead of raising exception\)) -comment(# 4: TIMEOUT) -comment(# 5: EOF) - -comment(# @@PLEAC@@_15.14) -keyword(from) include(Tkinter) keyword(import) include(*) - -keyword(def) method(print_callback)operator(()operator(\))operator(:) - keyword(print) string<delimiter(")content(print_callback)delimiter(")> - -ident(main) operator(=) ident(Tk)operator(()operator(\)) - -ident(menubar) operator(=) ident(Menu)operator(()ident(main)operator(\)) -ident(main)operator(.)ident(config)operator(()ident(menu)operator(=)ident(menubar)operator(\)) - -ident(file_menu) operator(=) ident(Menu)operator(()ident(menubar)operator(\)) -ident(menubar)operator(.)ident(add_cascade)operator(()ident(label)operator(=)string<delimiter(")content(File)delimiter(")>operator(,) ident(underline)operator(=)integer(1)operator(,) ident(menu)operator(=)ident(file_menu)operator(\)) -ident(file_menu)operator(.)ident(add_command)operator(()ident(label)operator(=)string<delimiter(")content(Print)delimiter(")>operator(,) ident(command)operator(=)ident(print_callback)operator(\)) - -ident(main)operator(.)ident(mainloop)operator(()operator(\)) - -comment(# using a class) -keyword(from) include(Tkinter) keyword(import) include(*) - -keyword(class) class(Application)operator(()ident(Tk)operator(\))operator(:) - keyword(def) method(print_callback)operator(()pre_constant(self)operator(\))operator(:) - keyword(print) string<delimiter(")content(print_callback)delimiter(")> - keyword(def) method(debug_callback)operator(()pre_constant(self)operator(\))operator(:) - keyword(print) string<delimiter(")content(debug:)delimiter(")>operator(,) pre_constant(self)operator(.)ident(debug)operator(.)ident(get)operator(()operator(\)) - keyword(print) string<delimiter(")content(debug level:)delimiter(")>operator(,) pre_constant(self)operator(.)ident(debug_level)operator(.)ident(get)operator(()operator(\)) - - keyword(def) method(createWidgets)operator(()pre_constant(self)operator(\))operator(:) - ident(menubar) operator(=) ident(Menu)operator(()pre_constant(self)operator(\)) - pre_constant(self)operator(.)ident(config)operator(()ident(menu)operator(=)ident(menubar)operator(\)) - ident(file_menu) operator(=) ident(Menu)operator(()ident(menubar)operator(\)) - ident(menubar)operator(.)ident(add_cascade)operator(()ident(label)operator(=)string<delimiter(")content(File)delimiter(")>operator(,) - ident(underline)operator(=)integer(1)operator(,) ident(menu)operator(=)ident(file_menu)operator(\)) - ident(file_menu)operator(.)ident(add_command)operator(()ident(label)operator(=)string<delimiter(")content(Print)delimiter(")>operator(,) - ident(command)operator(=)pre_constant(self)operator(.)ident(print_callback)operator(\)) - ident(file_menu)operator(.)ident(add_command)operator(()ident(label)operator(=)string<delimiter(")content(Quit Immediately)delimiter(")>operator(,) - ident(command)operator(=)ident(sys)operator(.)ident(exit)operator(\)) - comment(# ) - ident(options_menu) operator(=) ident(Menu)operator(()ident(menubar)operator(\)) - ident(menubar)operator(.)ident(add_cascade)operator(()ident(label)operator(=)string<delimiter(")content(Options)delimiter(")>operator(,) - ident(underline)operator(=)integer(0)operator(,) ident(menu)operator(=)ident(options_menu)operator(\)) - ident(options_menu)operator(.)ident(add_checkbutton)operator(() - ident(label)operator(=)string<delimiter(")content(Create Debugging File)delimiter(")>operator(,) - ident(variable)operator(=)pre_constant(self)operator(.)ident(debug)operator(,) - ident(command)operator(=)pre_constant(self)operator(.)ident(debug_callback)operator(,) - ident(onvalue)operator(=)integer(1)operator(,) ident(offvalue)operator(=)integer(0)operator(\)) - ident(options_menu)operator(.)ident(add_separator)operator(()operator(\)) - ident(options_menu)operator(.)ident(add_radiobutton)operator(() - ident(label) operator(=) string<delimiter(")content(Level 1)delimiter(")>operator(,) - ident(variable) operator(=) pre_constant(self)operator(.)ident(debug_level)operator(,) - ident(value) operator(=) integer(1) - operator(\)) - ident(options_menu)operator(.)ident(add_radiobutton)operator(() - ident(label) operator(=) string<delimiter(")content(Level 2)delimiter(")>operator(,) - ident(variable) operator(=) pre_constant(self)operator(.)ident(debug_level)operator(,) - ident(value) operator(=) integer(2) - operator(\)) - ident(options_menu)operator(.)ident(add_radiobutton)operator(() - ident(label) operator(=) string<delimiter(")content(Level 3)delimiter(")>operator(,) - ident(variable) operator(=) pre_constant(self)operator(.)ident(debug_level)operator(,) - ident(value) operator(=) integer(3) - operator(\)) - - keyword(def) method(__init__)operator(()pre_constant(self)operator(,) ident(master)operator(=)pre_constant(None)operator(\))operator(:) - ident(Tk)operator(.)ident(__init__)operator(()pre_constant(self)operator(,) ident(master)operator(\)) - comment(# bound variables must be IntVar, StrVar, ...) - pre_constant(self)operator(.)ident(debug) operator(=) ident(IntVar)operator(()operator(\)) - pre_constant(self)operator(.)ident(debug)operator(.)ident(set)operator(()integer(0)operator(\)) - pre_constant(self)operator(.)ident(debug_level) operator(=) ident(IntVar)operator(()operator(\)) - pre_constant(self)operator(.)ident(debug_level)operator(.)ident(set)operator(()integer(1)operator(\)) - pre_constant(self)operator(.)ident(createWidgets)operator(()operator(\)) - -ident(app) operator(=) ident(Application)operator(()operator(\)) -ident(app)operator(.)ident(mainloop)operator(()operator(\)) - -comment(# @@PLEAC@@_15.15) -comment(# @@INCOMPLETE@@) -comment(# @@INCOMPLETE@@) - -comment(# @@PLEAC@@_15.16) -comment(# @@INCOMPLETE@@) -comment(# @@INCOMPLETE@@) - -comment(# @@PLEAC@@_15.17) -comment(# Start Python scripts without the annoying DOS window on win32) -comment(# Use extension ".pyw" on files - eg: "foo.pyw" instead of "foo.py") -comment(# Or run programs using "pythonw.exe" rather than "python.exe" ) - -comment(# @@PLEAC@@_15.18) -comment(# @@INCOMPLETE@@) -comment(# @@INCOMPLETE@@) - -comment(# @@PLEAC@@_15.19) -comment(# @@INCOMPLETE@@) -comment(# @@INCOMPLETE@@) - - -comment(# @@PLEAC@@_16.1) -keyword(import) include(popen2) - -comment(# other popen methods than popen4 can lead to deadlocks) -comment(# if there is much data on stdout and stderr) - -operator(()ident(err_out)operator(,) ident(stdin)operator(\)) operator(=) ident(popen2)operator(.)ident(popen4)operator(()string<delimiter(")content(program args)delimiter(")>operator(\)) -ident(lines) operator(=) ident(err_out)operator(.)ident(read)operator(()operator(\)) comment(# collect output into one multiline string) - -operator(()ident(err_out)operator(,) ident(stdin)operator(\)) operator(=) ident(popen2)operator(.)ident(popen4)operator(()string<delimiter(")content(program args)delimiter(")>operator(\)) -ident(lines) operator(=) ident(err_out)operator(.)ident(readlines)operator(()operator(\)) comment(# collect output into a list, one line per element) - -comment(#-----------------------------) - -operator(()ident(err_out)operator(,) ident(stdin)operator(\)) operator(=) ident(popen2)operator(.)ident(popen4)operator(()string<delimiter(")content(program args)delimiter(")>operator(\)) -ident(output) operator(=) operator([)operator(]) -keyword(while) pre_constant(True)operator(:) - ident(line) operator(=) ident(err_out)operator(.)ident(readline)operator(()operator(\)) - keyword(if) keyword(not) ident(line)operator(:) - keyword(break) - ident(output)operator(.)ident(appen)operator(()ident(line)operator(\)) -ident(output) operator(=) string<delimiter(')delimiter(')>operator(.)ident(join)operator(()ident(output)operator(\)) - -comment(# @@PLEAC@@_16.2) -keyword(import) include(os) -ident(myfile) operator(=) string<delimiter(")content(foo.txt)delimiter(")> -ident(status) operator(=) ident(os)operator(.)ident(system)operator(()string<delimiter(")content(vi %s)delimiter(")> operator(%) ident(myfile)operator(\)) - -comment(#-----------------------------) -keyword(import) include(os) -ident(os)operator(.)ident(system)operator(()string<delimiter(")content(cmd1 args | cmd2 | cmd3 >outfile)delimiter(")>operator(\)) -ident(os)operator(.)ident(system)operator(()string<delimiter(")content(cmd args <infile >outfile 2>errfile)delimiter(")>operator(\)) - -ident(status) operator(=) ident(os)operator(.)ident(system)operator(()string<delimiter(")content(%s %s %s)delimiter(")> operator(%) operator(()ident(program)operator(,) ident(arg1)operator(,) ident(arg2)operator(\))operator(\)) -keyword(if) ident(status) operator(!=) integer(0)operator(:) - keyword(print) string<delimiter(")content(%s exited funny: %s)delimiter(")> operator(%) operator(()ident(program)operator(,) ident(status)operator(\)) - keyword(raise) exception(SystemExit) - - -comment(# @@PLEAC@@_16.3) -comment(# -----------------------------) -keyword(import) include(os) -keyword(import) include(sys) -keyword(import) include(glob) - -ident(args) operator(=) ident(glob)operator(.)ident(glob)operator(()string<delimiter(")content(*.data)delimiter(")>operator(\)) -keyword(try)operator(:) - ident(os)operator(.)ident(execvp)operator(()string<delimiter(")content(archive)delimiter(")>operator(,) ident(args)operator(\)) -keyword(except) exception(OSError)operator(,) ident(e)operator(:) - keyword(print) string<delimiter(")content(Couldn't replace myself with archive: %s)delimiter(")> operator(%) ident(err) - keyword(raise) exception(SystemExit) - -comment(# The error message does not contain the line number like the "die" in) -comment(# perl. But if you want to show more information for debugging, you can) -comment(# delete the try...except and you get a nice traceback which shows all) -comment(# line numbers and filenames.) - -comment(# -----------------------------) -ident(os)operator(.)ident(execvp)operator(()string<delimiter(")content(archive)delimiter(")>operator(,) operator([)string<delimiter(")content(accounting.data)delimiter(")>operator(])operator(\)) - -comment(# @@PLEAC@@_16.4) -comment(# -------------------------) -comment(# Read from a child process) - -keyword(import) include(sys) -keyword(import) include(popen2) -ident(pipe) operator(=) ident(popen2)operator(.)ident(Popen4)operator(()string<delimiter(")content(program arguments)delimiter(")>operator(\)) -ident(pid) operator(=) ident(pipe)operator(.)ident(pid) -keyword(for) ident(line) keyword(in) ident(pipe)operator(.)ident(fromchild)operator(.)ident(readlines)operator(()operator(\))operator(:) - ident(sys)operator(.)ident(stdout)operator(.)ident(write)operator(()ident(line)operator(\)) - -comment(# Popen4 provides stdout and stderr.) -comment(# This avoids deadlocks if you get data) -comment(# from both streams.) -comment(#) -comment(# If you don't need the pid, you) -comment(# can use popen2.popen4(...\)) - -comment(# -----------------------------) -comment(# Write to a child process) - -keyword(import) include(popen2) - -ident(pipe) operator(=) ident(popen2)operator(.)ident(Popen4)operator(()string<delimiter(")content(gzip > foo.gz)delimiter(")>operator(\)) -ident(pid) operator(=) ident(pipe)operator(.)ident(pid) -ident(pipe)operator(.)ident(tochild)operator(.)ident(write)operator(()string<delimiter(")content(Hello zipped world!)char(\\n)delimiter(")>operator(\)) -ident(pipe)operator(.)ident(tochild)operator(.)ident(close)operator(()operator(\)) comment(# programm will get EOF on STDIN) - -comment(# @@PLEAC@@_16.5) -keyword(class) class(OutputFilter)operator(()predefined(object)operator(\))operator(:) - keyword(def) method(__init__)operator(()pre_constant(self)operator(,) ident(target)operator(,) operator(*)ident(args)operator(,) operator(**)ident(kwds)operator(\))operator(:) - pre_constant(self)operator(.)ident(target) operator(=) ident(target) - pre_constant(self)operator(.)ident(setup)operator(()operator(*)ident(args)operator(,) operator(**)ident(kwds)operator(\)) - pre_constant(self)operator(.)ident(textbuffer) operator(=) string<delimiter(")delimiter(")> - - keyword(def) method(setup)operator(()pre_constant(self)operator(,) operator(*)ident(args)operator(,) operator(**)ident(kwds)operator(\))operator(:) - keyword(pass) - - keyword(def) method(write)operator(()pre_constant(self)operator(,) ident(data)operator(\))operator(:) - keyword(if) ident(data)operator(.)ident(endswith)operator(()string<delimiter(")char(\\n)delimiter(")>operator(\))operator(:) - ident(data) operator(=) pre_constant(self)operator(.)ident(process)operator(()pre_constant(self)operator(.)ident(textbuffer) operator(+) ident(data)operator(\)) - pre_constant(self)operator(.)ident(textbuffer) operator(=) string<delimiter(")delimiter(")> - keyword(if) ident(data) keyword(is) keyword(not) pre_constant(None)operator(:) - pre_constant(self)operator(.)ident(target)operator(.)ident(write)operator(()ident(data)operator(\)) - keyword(else)operator(:) - pre_constant(self)operator(.)ident(textbuffer) operator(+=) ident(data) - - keyword(def) method(process)operator(()pre_constant(self)operator(,) ident(data)operator(\))operator(:) - keyword(return) ident(data) - -keyword(class) class(HeadFilter)operator(()ident(OutputFilter)operator(\))operator(:) - keyword(def) method(setup)operator(()pre_constant(self)operator(,) ident(maxcount)operator(\))operator(:) - pre_constant(self)operator(.)ident(count) operator(=) integer(0) - pre_constant(self)operator(.)ident(maxcount) operator(=) ident(maxcount) - - keyword(def) method(process)operator(()pre_constant(self)operator(,) ident(data)operator(\))operator(:) - keyword(if) pre_constant(self)operator(.)ident(count) operator(<) pre_constant(self)operator(.)ident(maxcount)operator(:) - pre_constant(self)operator(.)ident(count) operator(+=) integer(1) - keyword(return) ident(data) - -keyword(class) class(NumberFilter)operator(()ident(OutputFilter)operator(\))operator(:) - keyword(def) method(setup)operator(()pre_constant(self)operator(\))operator(:) - pre_constant(self)operator(.)ident(count)operator(=)integer(0) - - keyword(def) method(process)operator(()pre_constant(self)operator(,) ident(data)operator(\))operator(:) - pre_constant(self)operator(.)ident(count) operator(+=) integer(1) - keyword(return) string<delimiter(")content(%s: %s)delimiter(")>operator(%)operator(()pre_constant(self)operator(.)ident(count)operator(,) ident(data)operator(\)) - -keyword(class) class(QuoteFilter)operator(()ident(OutputFilter)operator(\))operator(:) - keyword(def) method(process)operator(()pre_constant(self)operator(,) ident(data)operator(\))operator(:) - keyword(return) string<delimiter(")content(> )delimiter(")> operator(+) ident(data) - -keyword(import) include(sys) -ident(f) operator(=) ident(HeadFilter)operator(()ident(sys)operator(.)ident(stdout)operator(,) integer(100)operator(\)) -keyword(for) ident(i) keyword(in) predefined(range)operator(()integer(130)operator(\))operator(:) - keyword(print)operator(>>)ident(f)operator(,) ident(i) - -keyword(print) - -ident(txt) operator(=) string<delimiter(""")content(Welcome to Linux, version 2.0.33 on a i686)content( -)content( -)content("The software required `Windows 95 or better', )content( -)content(so I installed Linux." )delimiter(""")> -ident(f1) operator(=) ident(NumberFilter)operator(()ident(sys)operator(.)ident(stdout)operator(\)) -ident(f2) operator(=) ident(QuoteFilter)operator(()ident(f1)operator(\)) -keyword(for) ident(line) keyword(in) ident(txt)operator(.)ident(split)operator(()string<delimiter(")char(\\n)delimiter(")>operator(\))operator(:) - keyword(print)operator(>>)ident(f2)operator(,) ident(line) -keyword(print) -ident(f1) operator(=) ident(QuoteFilter)operator(()ident(sys)operator(.)ident(stdout)operator(\)) -ident(f2) operator(=) ident(NumberFilter)operator(()ident(f1)operator(\)) -keyword(for) ident(line) keyword(in) ident(txt)operator(.)ident(split)operator(()string<delimiter(")char(\\n)delimiter(")>operator(\))operator(:) - keyword(print)operator(>>)ident(f2)operator(,) ident(line) - - -comment(# @@PLEAC@@_16.6) -comment(# This script accepts several filenames) -comment(# as argument. If the file is zipped, unzip) -comment(# it first. Then read each line if the file) -keyword(import) include(os) -keyword(import) include(sys) -keyword(import) include(popen2) - -keyword(for) predefined(file) keyword(in) ident(sys)operator(.)ident(argv)operator([)integer(1)operator(:)operator(])operator(:) - keyword(if) predefined(file)operator(.)ident(endswith)operator(()string<delimiter(")content(.gz)delimiter(")>operator(\)) keyword(or) predefined(file)operator(.)ident(endswith)operator(()string<delimiter(")content(.Z)delimiter(")>operator(\))operator(:) - operator(()ident(stdout)operator(,) ident(stdin)operator(\)) operator(=) ident(popen2)operator(.)ident(popen2)operator(()string<delimiter(")content(gzip -dc '%s')delimiter(")> operator(%) predefined(file)operator(\)) - ident(fd) operator(=) ident(stdout) - keyword(else)operator(:) - ident(fd) operator(=) predefined(open)operator(()predefined(file)operator(\)) - keyword(for) ident(line) keyword(in) ident(fd)operator(:) - comment(# ....) - ident(sys)operator(.)ident(stdout)operator(.)ident(write)operator(()ident(line)operator(\)) - ident(fd)operator(.)ident(close)operator(()operator(\)) -comment(#-----------------------------) - -comment(#-----------------------------) -comment(# Ask for filename and open it) -keyword(import) include(sys) -keyword(print) string<delimiter(")content(File, please?)delimiter(")> -ident(line) operator(=) ident(sys)operator(.)ident(stdin)operator(.)ident(readline)operator(()operator(\)) -ident(file) operator(=) ident(line)operator(.)ident(strip)operator(()operator(\)) comment(# chomp) -predefined(open)operator(()predefined(file)operator(\)) - -comment(# @@PLEAC@@_16.7) -comment(# Execute foo_command and read the output) - -keyword(import) include(popen2) -operator(()ident(stdout_err)operator(,) ident(stdin)operator(\)) operator(=) ident(popen2)operator(.)ident(popen4)operator(()string<delimiter(")content(foo_command)delimiter(")>operator(\)) -keyword(for) ident(line) keyword(in) ident(stdout_err)operator(.)ident(readlines)operator(()operator(\))operator(:) - comment(# ....) - -comment(# @@PLEAC@@_16.8) -comment(# Open command in a pipe) -comment(# which reads from stdin and writes to stdout) - -keyword(import) include(popen2) -ident(pipe) operator(=) ident(popen2)operator(.)ident(Popen4)operator(()string<delimiter(")content(wc -l)delimiter(")>operator(\)) comment(# Unix command) -ident(pipe)operator(.)ident(tochild)operator(.)ident(write)operator(()string<delimiter(")content(line 1)char(\\n)content(line 2)char(\\n)content(line 3)char(\\n)delimiter(")>operator(\)) -ident(pipe)operator(.)ident(tochild)operator(.)ident(close)operator(()operator(\)) -ident(output) operator(=) ident(pipe)operator(.)ident(fromchild)operator(.)ident(read)operator(()operator(\)) - -comment(# @@PLEAC@@_16.9) - -comment(# popen3: get stdout and stderr of new process) -comment(# Attetion: This can lead to deadlock,) -comment(# since the buffer of stderr or stdout might get filled.) -comment(# You need to use select if you want to avoid this.) - -keyword(import) include(popen2) -operator(()ident(child_stdout)operator(,) ident(child_stdin)operator(,) ident(child_stderr)operator(\)) operator(=) ident(popen2)operator(.)ident(popen3)operator(()operator(...)operator(\)) - -comment(# @@PLEAC@@_16.10) -comment(# @@INCOMPLETE@@) -comment(# @@INCOMPLETE@@) - -comment(# @@PLEAC@@_16.11) -comment(# @@INCOMPLETE@@) -comment(# @@INCOMPLETE@@) - -comment(# @@PLEAC@@_16.12) -comment(# @@INCOMPLETE@@) -comment(# @@INCOMPLETE@@) - -comment(# @@PLEAC@@_16.13) -comment(#) -comment(# Print available signals and their value) -comment(# See "man signal" "man kill" on unix.) - -keyword(import) include(signal) -keyword(for) ident(name) keyword(in) predefined(dir)operator(()ident(signal)operator(\))operator(:) - keyword(if) ident(name)operator(.)ident(startswith)operator(()string<delimiter(")content(SIG)delimiter(")>operator(\))operator(:) - ident(value) operator(=) predefined(getattr)operator(()ident(signal)operator(,) ident(name)operator(\)) - keyword(print) string<delimiter(")content(%s=%s)delimiter(")> operator(%) operator(()ident(name)operator(,) ident(value)operator(\)) - -comment(# @@PLEAC@@_16.14) -comment(# You can send signals to processes) -comment(# with os.kill(pid, signal\)) - - -comment(# @@PLEAC@@_16.15) -keyword(import) include(signal) - -keyword(def) method(get_sig_quit)operator(()ident(signum)operator(,) ident(frame)operator(\))operator(:) - operator(...)operator(.) - -ident(signal)operator(.)ident(signal)operator(()ident(signal)operator(.)ident(SIGQUIT)operator(,) ident(get_sig_quit)operator(\)) comment(# Install handler) - -ident(signal)operator(.)ident(signal)operator(()ident(signal)operator(.)ident(SIGINT)operator(,) ident(signal)operator(.)ident(SIG_IGN)operator(\)) comment(# Ignore this signal) -ident(signal)operator(.)ident(signal)operator(()ident(signal)operator(.)ident(SIGSTOP)operator(,) ident(signal)operator(.)ident(SIG_DFL)operator(\)) comment(# Restore to default handling) - -comment(# @@PLEAC@@_16.16) -comment(# Example of handler: User must Enter Name ctrl-c does not help) - -keyword(import) include(sys) -keyword(import) include(signal) - -keyword(def) method(ding)operator(()ident(signum)operator(,) ident(frame)operator(\))operator(:) - keyword(print) string<delimiter(")char(\\a)content(Enter your name!)delimiter(")> - keyword(return) - -ident(signal)operator(.)ident(signal)operator(()ident(signal)operator(.)ident(SIGINT)operator(,) ident(ding)operator(\)) -keyword(print) string<delimiter(")content(Please enter your name:)delimiter(")> - -ident(name) operator(=) string<delimiter(")delimiter(")> -keyword(while) keyword(not) ident(name)operator(:) - keyword(try)operator(:) - ident(name) operator(=) ident(sys)operator(.)ident(stdin)operator(.)ident(readline)operator(()operator(\))operator(.)ident(strip)operator(()operator(\)) - keyword(except)operator(:) - keyword(pass) - -keyword(print) string<delimiter(")content(Hello: %s)delimiter(")> operator(%) ident(name) - -comment(# @@PLEAC@@_16.17) -comment(# @@INCOMPLETE@@) -comment(# @@INCOMPLETE@@) - -comment(# @@PLEAC@@_16.18) -keyword(import) include(signal) - -comment(# ignore signal INT) -ident(signal)operator(.)ident(signal)operator(()ident(signal)operator(.)ident(SIGINT)operator(,) ident(signal)operator(.)ident(SIG_IGN)operator(\)) - -comment(# Install signal handler) -keyword(def) method(tsktsk)operator(()ident(signum)operator(,) ident(frame)operator(\))operator(:) - keyword(print) string<delimiter(")content(...)delimiter(")> - -ident(signal)operator(.)ident(signal)operator(()ident(signal)operator(.)ident(SIGINT)operator(,) ident(tsktsk)operator(\)) - -comment(# @@PLEAC@@_16.19) -comment(# @@INCOMPLETE@@) -comment(# @@INCOMPLETE@@) - -comment(# @@PLEAC@@_16.20) -comment(# @@INCOMPLETE@@) -comment(# @@INCOMPLETE@@) - -comment(# @@PLEAC@@_16.21) -keyword(import) include(signal) - -keyword(def) method(handler)operator(()ident(signum)operator(,) ident(frame)operator(\))operator(:) - keyword(raise) string<delimiter(")content(timeout)delimiter(")> - -ident(signal)operator(.)ident(signal)operator(()ident(signal)operator(.)ident(SIGALRM)operator(,) ident(handler)operator(\)) - -keyword(try)operator(:) - ident(signal)operator(.)ident(alarm)operator(()integer(5)operator(\)) comment(# signal.alarm(3600\)) - - comment(# long-time operation) - keyword(while) pre_constant(True)operator(:) - keyword(print) string<delimiter(")content(foo)delimiter(")> - - ident(signal)operator(.)ident(alarm)operator(()integer(0)operator(\)) -keyword(except)operator(:) - ident(signal)operator(.)ident(alarm)operator(()integer(0)operator(\)) - keyword(print) string<delimiter(")content(timed out)delimiter(")> -keyword(else)operator(:) - keyword(print) string<delimiter(")content(no time out)delimiter(")> - -comment(# @@PLEAC@@_16.22) -comment(# @@INCOMPLETE@@) -comment(# @@INCOMPLETE@@) - -comment(# @@PLEAC@@_17.0) -comment(# Socket Programming (tcp/ip and udp/ip\)) - -keyword(import) include(socket) - -comment(# Convert human readable form to 32 bit value) -ident(packed_ip) operator(=) ident(socket)operator(.)ident(inet_aton)operator(()string<delimiter(")content(208.146.240.1)delimiter(")>operator(\)) -ident(packed_ip) operator(=) ident(socket)operator(.)ident(inet_aton)operator(()string<delimiter(")content(www.oreilly.com)delimiter(")>operator(\)) - -comment(# Convert 32 bit value to ip adress) -ident(ip_adress) operator(=) ident(socket)operator(.)ident(inet_ntoa)operator(()ident(packed_ip)operator(\)) - -comment(# Create socket object) -ident(socketobj) operator(=) ident(socket)operator(()ident(family)operator(,) predefined(type)operator(\)) comment(# Example socket.AF_INT, socket.SOCK_STREAM) - -comment(# Get socketname) -ident(socketobj)operator(.)ident(getsockname)operator(()operator(\)) comment(# Example, get port adress of client) - -comment(# @@PLEAC@@_17.1) - -comment(# Example: Connect to a server (tcp\)) -comment(# Connect to a smtp server at localhost and send an email.) -comment(# For real applications you should use smtplib.) - -keyword(import) include(socket) -ident(s) operator(=) ident(socket)operator(.)ident(socket)operator(()ident(socket)operator(.)ident(AF_INET)operator(,) ident(socket)operator(.)ident(SOCK_STREAM)operator(\)) -ident(s)operator(.)ident(connect)operator(()operator(()string<delimiter(")content(localhost)delimiter(")>operator(,) integer(25)operator(\))operator(\)) comment(# SMTP) -keyword(print) ident(s)operator(.)ident(recv)operator(()integer(1024)operator(\)) -ident(s)operator(.)ident(send)operator(()string<delimiter(")content(mail from: <pleac@localhost>)char(\\n)delimiter(")>operator(\)) -keyword(print) ident(s)operator(.)ident(recv)operator(()integer(1024)operator(\)) -ident(s)operator(.)ident(send)operator(()string<delimiter(")content(rcpt to: <guettli@localhost>)char(\\n)delimiter(")>operator(\)) -keyword(print) ident(s)operator(.)ident(recv)operator(()integer(1024)operator(\)) -ident(s)operator(.)ident(send)operator(()string<delimiter(")content(data)char(\\n)delimiter(")>operator(\)) -keyword(print) ident(s)operator(.)ident(recv)operator(()integer(1024)operator(\)) -ident(s)operator(.)ident(send)operator(()string<delimiter(")content(From: Python Lover)char(\\n)content(Subject: Python is better then perl)char(\\n)char(\\n)content(YES!)char(\\n)content(.)char(\\n)delimiter(")>operator(\)) -keyword(print) ident(s)operator(.)ident(recv)operator(()integer(1024)operator(\)) -ident(s)operator(.)ident(close)operator(()operator(\)) - -comment(# @@PLEAC@@_17.2) - -comment(# Create a Server, calling handler for every client) -comment(# You can test it with "telnet localhost 1029") - -keyword(from) include(SocketServer) keyword(import) include(TCPServer) -keyword(from) include(SocketServer) keyword(import) include(BaseRequestHandler) - -keyword(class) class(MyHandler)operator(()ident(BaseRequestHandler)operator(\))operator(:) - keyword(def) method(handle)operator(()pre_constant(self)operator(\))operator(:) - keyword(print) string<delimiter(")content(I got an request)delimiter(")> - -ident(server) operator(=) ident(TCPServer)operator(()operator(()string<delimiter(")content(127.0.0.1)delimiter(")>operator(,) integer(1029)operator(\))operator(,) ident(MyHandler)operator(\)) -ident(server)operator(.)ident(serve_forever)operator(()operator(\)) - -comment(# @@PLEAC@@_17.3) -comment(# This is the continuation of 17.2) - -keyword(import) include(time) -keyword(from) include(SocketServer) keyword(import) include(TCPServer) -keyword(from) include(SocketServer) keyword(import) include(BaseRequestHandler) - -keyword(class) class(MyHandler)operator(()ident(BaseRequestHandler)operator(\))operator(:) - keyword(def) method(handle)operator(()pre_constant(self)operator(\))operator(:) - comment(# self.request is the socket object) - keyword(print) string<delimiter(")content(%s I got an request from ip=%s port=%s)delimiter(")> operator(%) operator(() - ident(time)operator(.)ident(strftime)operator(()string<delimiter(")content(%Y-%m-%d %H:%M:%S)delimiter(")>operator(\))operator(,) - pre_constant(self)operator(.)ident(client_address)operator([)integer(0)operator(])operator(,) - pre_constant(self)operator(.)ident(client_address)operator([)integer(1)operator(]) - operator(\)) - pre_constant(self)operator(.)ident(request)operator(.)ident(send)operator(()string<delimiter(")content(What is your name?)char(\\n)delimiter(")>operator(\)) - ident(bufsize)operator(=)integer(1024) - ident(response)operator(=)pre_constant(self)operator(.)ident(request)operator(.)ident(recv)operator(()ident(bufsize)operator(\))operator(.)ident(strip)operator(()operator(\)) comment(# or recv(bufsize, flags\)) - ident(data_to_send)operator(=)string<delimiter(")content(Welcome %s!)char(\\n)delimiter(")> operator(%) ident(response) - pre_constant(self)operator(.)ident(request)operator(.)ident(send)operator(()ident(data_to_send)operator(\)) comment(# or send(data, flags\)) - keyword(print) string<delimiter(")content(%s connection finnished)delimiter(")> operator(%) pre_constant(self)operator(.)ident(client_address)operator([)integer(0)operator(]) - -ident(server) operator(=) ident(TCPServer)operator(()operator(()string<delimiter(")content(127.0.0.1)delimiter(")>operator(,) integer(1028)operator(\))operator(,) ident(MyHandler)operator(\)) -ident(server)operator(.)ident(serve_forever)operator(()operator(\)) - -comment(# -----------------) -comment(# Using select) - -keyword(import) include(select) -keyword(import) include(socket) - -ident(in_list) operator(=) operator([)operator(]) -ident(in_list)operator(.)ident(append)operator(()ident(mysocket)operator(\)) -ident(in_list)operator(.)ident(append)operator(()ident(myfile)operator(\)) -comment(# ...) - -ident(out_list) operator(=) operator([)operator(]) -ident(out_list)operator(.)ident(append)operator(()operator(...)operator(\)) - -ident(except_list) operator(=) operator([)operator(]) -ident(except_list)operator(.)ident(append)operator(()operator(...)operator(\)) - -operator(()ident(in_)operator(,) ident(out_)operator(,) ident(exc_)operator(\)) operator(=) ident(select)operator(.)ident(select)operator(()ident(in_list)operator(,) ident(out_list)operator(,) ident(except_list)operator(,) ident(timeout)operator(\)) - -keyword(for) ident(fd) keyword(in) ident(in_)operator(:) - keyword(print) string<delimiter(")content(Can read)delimiter(")>operator(,) ident(fd) -keyword(for) ident(fd) keyword(in) ident(out_)operator(:) - keyword(print) string<delimiter(")content(Can write)delimiter(")>operator(,) ident(fd) -keyword(for) ident(fd) keyword(in) ident(exc_)operator(:) - keyword(print) string<delimiter(")content(Exception on)delimiter(")>operator(,) ident(fd) - -comment(# Missing: setting TCP_NODELAY) - -comment(# @@PLEAC@@_17.4) - -keyword(import) include(socket) -comment(# Set up a UDP socket) -ident(s) operator(=) ident(socket)operator(.)ident(socket)operator(()ident(socket)operator(.)ident(AF_INET)operator(,) ident(socket)operator(.)ident(SOCK_DGRAM)operator(\)) -comment(# send ) -ident(MSG) operator(=) string<delimiter(')content(Hello)delimiter(')> -ident(HOSTNAME) operator(=) string<delimiter(')content(127.0.0.1)delimiter(')> -ident(PORTNO) operator(=) integer(10000) -ident(s)operator(.)ident(connect)operator(()operator(()ident(HOSTNAME)operator(,) ident(PORTNO)operator(\))operator(\)) -keyword(if) predefined(len)operator(()ident(MSG)operator(\)) operator(!=) ident(s)operator(.)ident(send)operator(()ident(MSG)operator(\))operator(:) - comment(# where to get error message "$!".) - keyword(print) string<delimiter(")content(cannot send to %s(%d\):)delimiter(")> operator(%) operator(()ident(HOSTNAME)operator(,)ident(PORTNO)operator(\)) - keyword(raise) exception(SystemExit)operator(()integer(1)operator(\)) -ident(MAXLEN) operator(=) integer(1024) -operator(()ident(data)operator(,)ident(addr)operator(\)) operator(=) ident(s)operator(.)ident(recvfrom)operator(()ident(MAXLEN)operator(\)) -ident(s)operator(.)ident(close)operator(()operator(\)) -keyword(print) string<delimiter(')content(%s(%d\) said "%s")delimiter(')> operator(%) operator(()ident(addr)operator([)integer(0)operator(])operator(,)ident(addr)operator([)integer(1)operator(])operator(,) ident(data)operator(\)) - -comment(# download the following standalone program) -comment(#!/usr/bin/python) -comment(# clockdrift - compare another system's clock with this one) - -keyword(import) include(socket) -keyword(import) include(struct) -keyword(import) include(sys) -keyword(import) include(time) - -keyword(if) predefined(len)operator(()ident(sys)operator(.)ident(argv)operator(\))operator(>)integer(1)operator(:) - ident(him) operator(=) ident(sys)operator(.)ident(argv)operator([)integer(1)operator(]) -keyword(else)operator(:) - ident(him) operator(=) string<delimiter(')content(127.1)delimiter(')> - -ident(SECS_of_70_YEARS) operator(=) integer(2208988800) - -ident(s) operator(=) ident(socket)operator(.)ident(socket)operator(()ident(socket)operator(.)ident(AF_INET)operator(,) ident(socket)operator(.)ident(SOCK_DGRAM)operator(\)) -ident(s)operator(.)ident(connect)operator(()operator(()ident(him)operator(,)ident(socket)operator(.)ident(getservbyname)operator(()string<delimiter(')content(time)delimiter(')>operator(,)string<delimiter(')content(udp)delimiter(')>operator(\))operator(\))operator(\)) -ident(s)operator(.)ident(send)operator(()string<delimiter(')delimiter(')>operator(\)) -operator(()ident(ptime)operator(,) ident(src)operator(\)) operator(=) ident(s)operator(.)ident(recvfrom)operator(()integer(4)operator(\)) -ident(host) operator(=) ident(socket)operator(.)ident(gethostbyaddr)operator(()ident(src)operator([)integer(0)operator(])operator(\)) -ident(delta) operator(=) ident(struct)operator(.)ident(unpack)operator(()string<delimiter(")content(!L)delimiter(")>operator(,) ident(ptime)operator(\))operator([)integer(0)operator(]) operator(-) ident(SECS_of_70_YEARS) operator(-) ident(time)operator(.)ident(time)operator(()operator(\)) -keyword(print) string<delimiter(")content(Clock on %s is %d seconds ahead of this one.)delimiter(")> operator(%) operator(()ident(host)operator([)integer(0)operator(])operator(,) ident(delta)operator(\)) - - - -comment(# @@PLEAC@@_17.5) - -keyword(import) include(socket) -keyword(import) include(sys) - -ident(s) operator(=) ident(socket)operator(.)ident(socket)operator(()ident(socket)operator(.)ident(AF_INET)operator(,) ident(socket)operator(.)ident(SOCK_DGRAM)operator(\)) -keyword(try)operator(:) - ident(s)operator(.)ident(bind)operator(()operator(()string<delimiter(')delimiter(')>operator(,) ident(server_port)operator(\))operator(\)) -keyword(except) ident(socket)operator(.)ident(error)operator(,) ident(err)operator(:) - keyword(print) string<delimiter(")content(Couldn't be a udp server on port %d : %s)delimiter(")> operator(%) operator(() - ident(server_port)operator(,) ident(err)operator(\)) - keyword(raise) exception(SystemExit) - -keyword(while) pre_constant(True)operator(:) - ident(datagram) operator(=) ident(s)operator(.)ident(recv)operator(()ident(MAX_TO_READ)operator(\)) - keyword(if) keyword(not) ident(datagram)operator(:) - keyword(break) - comment(# do something) -ident(s)operator(.)ident(close)operator(()operator(\)) - -comment(# or ) -keyword(import) include(SocketServer) - -keyword(class) class(handler)operator(()ident(SocketServer)operator(.)ident(DatagramRequestHandler)operator(\))operator(:) - keyword(def) method(handle)operator(()pre_constant(self)operator(\))operator(:) - comment(# do something (with self.request[0]\)) - -ident(s) operator(=) ident(SocketServer)operator(.)ident(UDPServer)operator(()operator(()string<delimiter(')delimiter(')>operator(,)integer(10000)operator(\))operator(,) ident(handler)operator(\)) -ident(s)operator(.)ident(serve_forever)operator(()operator(\)) - -comment(# download the following standalone program) -comment(#!/usr/bin/python) -comment(# udpqotd - UDP message server) - -keyword(import) include(SocketServer) - -ident(PORTNO) operator(=) integer(5151) - -keyword(class) class(handler)operator(()ident(SocketServer)operator(.)ident(DatagramRequestHandler)operator(\))operator(:) - keyword(def) method(handle)operator(()pre_constant(self)operator(\))operator(:) - ident(newmsg) operator(=) pre_constant(self)operator(.)ident(rfile)operator(.)ident(readline)operator(()operator(\))operator(.)ident(rstrip)operator(()operator(\)) - keyword(print) string<delimiter(")content(Client %s said ``%s'')delimiter(")> operator(%) operator(()pre_constant(self)operator(.)ident(client_address)operator([)integer(0)operator(])operator(,) ident(newmsg)operator(\)) - pre_constant(self)operator(.)ident(wfile)operator(.)ident(write)operator(()pre_constant(self)operator(.)ident(server)operator(.)ident(oldmsg)operator(\)) - pre_constant(self)operator(.)ident(server)operator(.)ident(oldmsg) operator(=) ident(newmsg) - -ident(s) operator(=) ident(SocketServer)operator(.)ident(UDPServer)operator(()operator(()string<delimiter(')delimiter(')>operator(,)ident(PORTNO)operator(\))operator(,) ident(handler)operator(\)) -keyword(print) string<delimiter(")content(Awaiting UDP messages on port %d)delimiter(")> operator(%) ident(PORTNO) -ident(s)operator(.)ident(oldmsg) operator(=) string<delimiter(")content(This is the starting message.)delimiter(")> -ident(s)operator(.)ident(serve_forever)operator(()operator(\)) - - -comment(# download the following standalone program) -comment(#!/usr/bin/python) -comment(# udpmsg - send a message to the udpquotd server) - -keyword(import) include(socket) -keyword(import) include(sys) - -ident(MAXLEN) operator(=) integer(1024) -ident(PORTNO) operator(=) integer(5151) -ident(TIMEOUT) operator(=) integer(5) - -ident(server_host) operator(=) ident(sys)operator(.)ident(argv)operator([)integer(1)operator(]) -ident(msg) operator(=) string<delimiter(")content( )delimiter(")>operator(.)ident(join)operator(()ident(sys)operator(.)ident(argv)operator([)integer(2)operator(:)operator(])operator(\)) - -ident(sock) operator(=) ident(socket)operator(.)ident(socket)operator(()ident(socket)operator(.)ident(AF_INET)operator(,) ident(socket)operator(.)ident(SOCK_DGRAM)operator(\)) -ident(sock)operator(.)ident(settimeout)operator(()ident(TIMEOUT)operator(\)) -ident(sock)operator(.)ident(connect)operator(()operator(()ident(server_host)operator(,) ident(PORTNO)operator(\))operator(\)) -ident(sock)operator(.)ident(send)operator(()ident(msg)operator(\)) -keyword(try)operator(:) - ident(msg) operator(=) ident(sock)operator(.)ident(recv)operator(()ident(MAXLEN)operator(\)) - ident(ipaddr)operator(,) ident(port) operator(=) ident(sock)operator(.)ident(getpeername)operator(()operator(\)) - ident(hishost) operator(=) ident(socket)operator(.)ident(gethostbyaddr)operator(()ident(ipaddr)operator(\)) - keyword(print) string<delimiter(")content(Server %s responded ``%s'')delimiter(")> operator(%) operator(() ident(hishost)operator([)integer(0)operator(])operator(,) ident(msg)operator(\)) -keyword(except)operator(:) - keyword(print) string<delimiter(")content(recv from %s failed (timeout or no server running\).)delimiter(")> operator(%) operator(() - ident(server_host) operator(\)) -ident(sock)operator(.)ident(close)operator(()operator(\)) - - -comment(# @@PLEAC@@_17.6) - -keyword(import) include(socket) -keyword(import) include(os)operator(,) include(os.path) - -keyword(if) ident(os)operator(.)ident(path)operator(.)ident(exists)operator(()string<delimiter(")content(/tmp/mysock)delimiter(")>operator(\))operator(:) - ident(os)operator(.)ident(remove)operator(()string<delimiter(")content(/tmp/mysock)delimiter(")>operator(\)) - -ident(server) operator(=) ident(socket)operator(.)ident(socket)operator(()ident(socket)operator(.)ident(AF_UNIX)operator(,) ident(socket)operator(.)ident(SOCK_DGRAM)operator(\)) -ident(server)operator(.)ident(bind)operator(()string<delimiter(")content(/tmp/mysock)delimiter(")>operator(\)) - -ident(client) operator(=) ident(socket)operator(.)ident(socket)operator(()ident(socket)operator(.)ident(AF_UNIX)operator(,) ident(socket)operator(.)ident(SOCK_DGRAM)operator(\)) -ident(client)operator(.)ident(connect)operator(()string<delimiter(")content(/tmp/mysock)delimiter(")>operator(\)) - -comment(# @@PLEAC@@_17.7) - -ident(ipaddr)operator(,) ident(port) operator(=) ident(s)operator(.)ident(getpeername)operator(()operator(\)) -ident(hostname)operator(,) ident(aliaslist)operator(,) ident(ipaddrlist) operator(=) ident(socket)operator(.)ident(gethostbyaddr)operator(()ident(ipaddr)operator(\)) -ident(ipaddr) operator(=) ident(socket)operator(.)ident(gethostbyname)operator(()string<delimiter(')content(www.python.org)delimiter(')>operator(\)) -comment(# '194.109.137.226') -ident(hostname)operator(,) ident(aliaslist)operator(,) ident(ipaddrlist) operator(=) ident(socket)operator(.)ident(gethostbyname_ex)operator(()string<delimiter(')content(www.python.org)delimiter(')>operator(\)) -comment(# ('fang.python.org', ['www.python.org'], ['194.109.137.226']\)) -ident(socket)operator(.)ident(gethostbyname_ex)operator(()string<delimiter(')content(www.google.org)delimiter(')>operator(\)) -comment(# ('www.l.google.com', ['www.google.org', 'www.google.com'], ) -comment(# ['64.233.161.147','64.233.161.104', '64.233.161.99']\)) - -comment(# @@PLEAC@@_17.8) - -keyword(import) include(os) - -ident(kernel)operator(,) ident(hostname)operator(,) ident(release)operator(,) ident(version)operator(,) ident(hardware) operator(=) ident(os)operator(.)ident(uname)operator(()operator(\)) - -keyword(import) include(socket) - -ident(address) operator(=) ident(socket)operator(.)ident(gethostbyname)operator(()ident(hostname)operator(\)) -ident(hostname) operator(=) ident(socket)operator(.)ident(gethostbyaddr)operator(()ident(address)operator(\)) -ident(hostname)operator(,) ident(aliaslist)operator(,) ident(ipaddrlist) operator(=) ident(socket)operator(.)ident(gethostbyname_ex)operator(()ident(hostname)operator(\)) -comment(# e.g. ('lx3.local', ['lx3', 'b70'], ['192.168.0.13', '192.168.0.70']\)) - -comment(# @@PLEAC@@_17.9) - -ident(socket)operator(.)ident(shutdown)operator(()integer(0)operator(\)) comment(# Further receives are disallowed) -ident(socket)operator(.)ident(shutdown)operator(()integer(1)operator(\)) comment(# Further sends are disallowed.) -ident(socket)operator(.)ident(shutdown)operator(()integer(2)operator(\)) comment(# Further sends and receives are disallowed.) - -comment(#) - -ident(server)operator(.)ident(send)operator(()string<delimiter(")content(my request)char(\\n)delimiter(")>operator(\)) comment(# send some data) -ident(server)operator(.)ident(shutdown)operator(()integer(1)operator(\)) comment(# send eof; no more writing) -ident(answer) operator(=) ident(server)operator(.)ident(recv)operator(()integer(1000)operator(\)) comment(# but you can still read) - -comment(# @@PLEAC@@_17.10) -comment(# @@INCOMPLETE@@) -comment(# @@INCOMPLETE@@) - -comment(# @@PLEAC@@_17.11) -comment(# @@INCOMPLETE@@) -comment(# @@INCOMPLETE@@) - -comment(# @@PLEAC@@_17.12) -comment(# @@INCOMPLETE@@) -comment(# @@INCOMPLETE@@) - -comment(# @@PLEAC@@_17.13) -comment(# @@INCOMPLETE@@) -comment(# @@INCOMPLETE@@) - -comment(# @@PLEAC@@_17.14) -comment(# @@INCOMPLETE@@) -comment(# @@INCOMPLETE@@) - -comment(# @@PLEAC@@_17.15) -comment(# @@INCOMPLETE@@) -comment(# @@INCOMPLETE@@) - -comment(# @@PLEAC@@_17.16) -comment(#------------------------------) -comment(# Restart programm on signal SIGHUP) -comment(# Script must be executable: chmod a+x foo.py) - -comment(#!/usr/bin/env python) -keyword(import) include(os) -keyword(import) include(sys) -keyword(import) include(time) -keyword(import) include(signal) - -keyword(def) method(phoenix)operator(()ident(signum)operator(,) ident(frame)operator(\))operator(:) - keyword(print) string<delimiter(")content(Restarting myself: %s %s)delimiter(")> operator(%) operator(()pre_constant(self)operator(,) ident(args)operator(\)) - ident(os)operator(.)ident(execv)operator(()pre_constant(self)operator(,) ident(args)operator(\)) - -pre_constant(self) operator(=) ident(os)operator(.)ident(path)operator(.)ident(abspath)operator(()ident(sys)operator(.)ident(argv)operator([)integer(0)operator(])operator(\)) -ident(args) operator(=) ident(sys)operator(.)ident(argv)operator([)operator(:)operator(]) -ident(signal)operator(.)ident(signal)operator(()ident(signal)operator(.)ident(SIGHUP)operator(,) ident(phoenix)operator(\)) - -keyword(while) pre_constant(True)operator(:) - keyword(print) string<delimiter(")content(work)delimiter(")> - ident(time)operator(.)ident(sleep)operator(()integer(1)operator(\)) - -comment(#--------------------) -comment(# Read config file on SIGHUP) -keyword(import) include(signal) - -ident(config_file) operator(=) string<delimiter(")content(/usr/local/etc/myprog/server_conf.py)delimiter(")> - -keyword(def) method(read_config)operator(()operator(\))operator(:) - predefined(execfile)operator(()ident(config_file)operator(\)) - -ident(signal)operator(.)ident(signal)operator(()ident(signal)operator(.)ident(SIGHUP)operator(,) ident(read_config)operator(\)) - -comment(# @@PLEAC@@_17.17) - -comment(# chroot) - -keyword(import) include(os) - -keyword(try)operator(:) - ident(os)operator(.)ident(chroot)operator(()string<delimiter(")content(/var/daemon)delimiter(")>operator(\)) -keyword(except) exception(Exception)operator(:) - keyword(print) string<delimiter(")content(Could not chroot)delimiter(")> - keyword(raise) exception(SystemExit)operator(()integer(1)operator(\)) - -comment(#-----------------------------) -comment(# fork (Unix\): Create a new process) -comment(# if pid == 0 --> parent process) -comment(# else child process) - -keyword(import) include(os) - -ident(pid) operator(=) ident(os)operator(.)ident(fork)operator(()operator(\)) -keyword(if) ident(pid)operator(:) - keyword(print) string<delimiter(")content(I am the new child %s)delimiter(")> operator(%) ident(pid) - keyword(raise) exception(SystemExit) -keyword(else)operator(:) - keyword(print) string<delimiter(")content(I am still the parent)delimiter(")> - - -comment(# ----------------------------) -comment(# setsid (Unix\): Create a new session) -keyword(import) include(os) -ident(id)operator(=)ident(os)operator(.)ident(setsid)operator(()operator(\)) - -comment(# ----------------------------) -comment(# Work until INT TERM or HUP signal is received) -keyword(import) include(time) -keyword(import) include(signal) - -ident(time_to_die) operator(=) integer(0) - -keyword(def) method(sighandler)operator(()ident(signum)operator(,) ident(frame)operator(\))operator(:) - keyword(print) string<delimiter(")content(time to die)delimiter(")> - keyword(global) ident(time_to_die) - ident(time_to_die) operator(=) integer(1) - -ident(signal)operator(.)ident(signal)operator(()ident(signal)operator(.)ident(SIGINT)operator(,) ident(sighandler)operator(\)) -ident(signal)operator(.)ident(signal)operator(()ident(signal)operator(.)ident(SIGTERM)operator(,) ident(sighandler)operator(\)) -ident(signal)operator(.)ident(signal)operator(()ident(signal)operator(.)ident(SIGHUP)operator(,) ident(sighandler)operator(\)) - -keyword(while) keyword(not) ident(time_to_die)operator(:) - keyword(print) string<delimiter(")content(work)delimiter(")> - ident(time)operator(.)ident(sleep)operator(()integer(1)operator(\)) - -comment(# @@PLEAC@@_17.18) -comment(# @@INCOMPLETE@@) -comment(# @@INCOMPLETE@@) - -comment(# @@PLEAC@@_18.1) - -keyword(import) include(socket) -keyword(try)operator(:) - ident(host_info) operator(=) ident(socket)operator(.)ident(gethostbyname_ex)operator(()ident(name)operator(\)) - comment(# (hostname, aliaslist, ipaddrlist\)) -keyword(except) ident(socket)operator(.)ident(gaierror)operator(,) ident(err)operator(:) - keyword(print) string<delimiter(")content(Can't resolve hostname %s: %s)delimiter(")> operator(%) operator(()ident(name)operator(,) ident(err)operator([)integer(1)operator(])operator(\)) - -comment(# if you only need the first one) -keyword(import) include(socket) -keyword(try)operator(:) - ident(address) operator(=) ident(socket)operator(.)ident(gethostbyname)operator(()ident(name)operator(\)) -keyword(except) ident(socket)operator(.)ident(gaierror)operator(,) ident(err)operator(:) - keyword(print) string<delimiter(")content(Can't resolve hostname %s: %s)delimiter(")> operator(%) operator(()ident(name)operator(,) ident(err)operator([)integer(1)operator(])operator(\)) - -comment(# if you have an ip address) -keyword(try)operator(:) - ident(host_info) operator(=) ident(socket)operator(.)ident(gethostbyaddr)operator(()ident(address)operator(\)) - comment(# (hostname, aliaslist, ipaddrlist\)) -keyword(except) ident(socket)operator(.)ident(gaierror)operator(,) ident(err)operator(:) - keyword(print) string<delimiter(")content(Can't resolve address %s: %s)delimiter(")> operator(%) operator(()ident(address)operator(,) ident(err)operator([)integer(1)operator(])operator(\)) - -comment(# checking back) -keyword(import) include(socket) -keyword(try)operator(:) - ident(host_info) operator(=) ident(socket)operator(.)ident(gethostbyaddr)operator(()ident(address)operator(\)) -keyword(except) ident(socket)operator(.)ident(gaierror)operator(,) ident(err)operator(:) - keyword(print) string<delimiter(")content(Can't look up %s: %s)delimiter(")> operator(%) operator(()ident(address)operator(,) ident(err)operator([)integer(1)operator(])operator(\)) - keyword(raise) exception(SystemExit)operator(()integer(1)operator(\)) -keyword(try)operator(:) - ident(host_info) operator(=) ident(socket)operator(.)ident(gethostbyname_ex)operator(()ident(name)operator(\)) -keyword(except)operator(:) - keyword(print) string<delimiter(")content(Can't look up %s: %s)delimiter(")> operator(%) operator(()ident(name)operator(,) ident(err)operator([)integer(1)operator(])operator(\)) - keyword(raise) exception(SystemExit)operator(()integer(1)operator(\)) - -ident(found) operator(=) ident(address) keyword(in) ident(host_info)operator([)integer(2)operator(]) - -comment(# use dnspython for more complex jobs.) -comment(# download the following standalone program) -comment(#!/usr/bin/python) -comment(# mxhost - find mx exchangers for a host) - -keyword(import) include(sys) - -keyword(import) include(dns) -keyword(import) include(dns.resolver) - -ident(answers) operator(=) ident(dns)operator(.)ident(resolver)operator(.)ident(query)operator(()ident(sys)operator(.)ident(argv)operator([)integer(1)operator(])operator(,) string<delimiter(')content(MX)delimiter(')>operator(\)) -keyword(for) ident(rdata) keyword(in) ident(answers)operator(:) - keyword(print) ident(rdata)operator(.)ident(preference)operator(,) ident(rdata)operator(.)ident(exchange) - - - -comment(# download the following standalone program) -comment(#!/usr/bin/python) -comment(# hostaddrs - canonize name and show addresses) - -keyword(import) include(sys) -keyword(import) include(socket) -ident(name) operator(=) ident(sys)operator(.)ident(argv)operator([)integer(1)operator(]) -ident(hent) operator(=) ident(socket)operator(.)ident(gethostbyname_ex)operator(()ident(name)operator(\)) -keyword(print) string<delimiter(")content(%s aliases: %s => %s)delimiter(")> operator(%) operator(() - ident(hent)operator([)integer(0)operator(])operator(,) - predefined(len)operator(()ident(hent)operator([)integer(1)operator(])operator(\))operator(==)integer(0) keyword(and) string<delimiter(")content(None)delimiter(")> keyword(or) string<delimiter(")content(,)delimiter(")>operator(.)ident(join)operator(()ident(hent)operator([)integer(1)operator(])operator(\))operator(,) - string<delimiter(")content(,)delimiter(")>operator(.)ident(join)operator(()ident(hent)operator([)integer(2)operator(])operator(\)) operator(\)) - - -comment(# @@PLEAC@@_18.2) -keyword(import) include(ftplib) -ident(ftp) operator(=) ident(ftplib)operator(.)ident(FTP)operator(()string<delimiter(")content(ftp.host.com)delimiter(")>operator(\)) -ident(ftp)operator(.)ident(login)operator(()ident(username)operator(,) ident(password)operator(\)) -ident(ftp)operator(.)ident(cwd)operator(()ident(directory)operator(\)) - -comment(# get file) -ident(outfile) operator(=) predefined(open)operator(()ident(filename)operator(,) string<delimiter(")content(wb)delimiter(")>operator(\)) -ident(ftp)operator(.)ident(retrbinary)operator(()string<delimiter(")content(RETR %s)delimiter(")> operator(%) ident(filename)operator(,) ident(outfile)operator(.)ident(write)operator(\)) -ident(outfile)operator(.)ident(close)operator(()operator(\)) - -comment(# upload file) -ident(upfile) operator(=) predefined(open)operator(()ident(upfilename)operator(,) string<delimiter(")content(rb)delimiter(")>operator(\)) -ident(ftp)operator(.)ident(storbinary)operator(()string<delimiter(")content(STOR %s)delimiter(")> operator(%) ident(upfilename)operator(,) ident(upfile)operator(\)) -ident(upfile)operator(.)ident(close)operator(()operator(\)) - -ident(ftp)operator(.)ident(quit)operator(()operator(\)) - - -comment(# @@PLEAC@@_18.3) -keyword(import) include(smtplib) -keyword(from) include(email.MIMEText) keyword(import) include(MIMEText) - -ident(msg) operator(=) ident(MIMEText)operator(()ident(body)operator(\)) -ident(msg)operator([)string<delimiter(')content(From)delimiter(')>operator(]) operator(=) ident(from_address) -ident(msg)operator([)string<delimiter(')content(To)delimiter(')>operator(]) operator(=) ident(to_address) -ident(msg)operator([)string<delimiter(')content(Subject)delimiter(')>operator(]) operator(=) ident(subject) - -ident(mailer) operator(=) ident(smtplib)operator(.)ident(SMTP)operator(()operator(\)) -ident(mailer)operator(.)ident(connect)operator(()operator(\)) -ident(mailer)operator(.)ident(sendmail)operator(()ident(from_address)operator(,) operator([)ident(to_address)operator(])operator(,) ident(msg)operator(.)ident(as_string)operator(()operator(\))operator(\)) - -comment(# @@PLEAC@@_18.4) -keyword(import) include(nntplib) - -comment(# You can except nntplib.NNTPError to process errors) -comment(# instead of displaying traceback.) - -ident(server) operator(=) ident(nntplib)operator(.)ident(NNTP)operator(()string<delimiter(")content(news.example.com)delimiter(")>operator(\)) -ident(response)operator(,) ident(count)operator(,) ident(first)operator(,) ident(last)operator(,) ident(name) operator(=) ident(server)operator(.)ident(group)operator(()string<delimiter(")content(misc.test)delimiter(")>operator(\)) -ident(headers) operator(=) ident(server)operator(.)ident(head)operator(()ident(first)operator(\)) -ident(bodytext) operator(=) ident(server)operator(.)ident(body)operator(()ident(first)operator(\)) -ident(article) operator(=) ident(server)operator(.)ident(article)operator(()ident(first)operator(\)) - -ident(f) operator(=) predefined(file)operator(()string<delimiter(")content(article.txt)delimiter(")>operator(\)) -ident(server)operator(.)ident(post)operator(()ident(f)operator(\)) - -ident(response)operator(,) ident(grouplist) operator(=) ident(server)operator(.)ident(list)operator(()operator(\)) -keyword(for) ident(group) keyword(in) ident(grouplist)operator(:) - ident(name)operator(,) ident(last)operator(,) ident(first)operator(,) ident(flag) operator(=) ident(group) - keyword(if) ident(flag) operator(==) string<delimiter(')content(y)delimiter(')>operator(:) - keyword(pass) comment(# I can post to group) - -comment(# @@PLEAC@@_18.5) -keyword(import) include(poplib) - -ident(pop) operator(=) ident(poplib)operator(.)ident(POP3)operator(()string<delimiter(")content(mail.example.com)delimiter(")>operator(\)) -ident(pop)operator(.)ident(user)operator(()ident(username)operator(\)) -ident(pop)operator(.)ident(pass_)operator(()ident(password)operator(\)) -ident(count)operator(,) ident(size) operator(=) ident(pop)operator(.)ident(stat)operator(()operator(\)) -keyword(for) ident(i) keyword(in) predefined(range)operator(()integer(1)operator(,) ident(count)operator(+)integer(1)operator(\))operator(:) - ident(reponse)operator(,) ident(message)operator(,) ident(octets) operator(=) ident(pop)operator(.)ident(retr)operator(()ident(i)operator(\)) - comment(# message is a list of lines) - ident(pop)operator(.)ident(dele)operator(()ident(i)operator(\)) - -comment(# You must quit, otherwise mailbox remains locked.) -ident(pop)operator(.)ident(quit)operator(()operator(\)) - -comment(# @@PLEAC@@_18.6) - -keyword(import) include(telnetlib) - -ident(tn) operator(=) ident(telnetlib)operator(.)ident(Telnet)operator(()ident(hostname)operator(\)) - -ident(tn)operator(.)ident(read_until)operator(()string<delimiter(")content(login: )delimiter(")>operator(\)) -ident(tn)operator(.)ident(write)operator(()ident(user) operator(+) string<delimiter(")char(\\n)delimiter(")>operator(\)) -ident(tn)operator(.)ident(read_until)operator(()string<delimiter(")content(Password: )delimiter(")>operator(\)) -ident(tn)operator(.)ident(write)operator(()ident(password) operator(+) string<delimiter(")char(\\n)delimiter(")>operator(\)) -comment(# read the logon message up to the prompt) -ident(d) operator(=) ident(tn)operator(.)ident(expect)operator(()operator([)ident(prompt)operator(,)operator(])operator(,) integer(10)operator(\)) -ident(tn)operator(.)ident(write)operator(()string<delimiter(")content(ls)char(\\n)delimiter(")>operator(\)) -ident(files) operator(=) ident(d)operator([)integer(2)operator(])operator(.)ident(split)operator(()operator(\)) -keyword(print) predefined(len)operator(()ident(files)operator(\))operator(,) string<delimiter(")content(files)delimiter(")> -ident(tn)operator(.)ident(write)operator(()string<delimiter(")content(exit)char(\\n)delimiter(")>operator(\)) -keyword(print) ident(tn)operator(.)ident(read_all)operator(()operator(\)) comment(# blocks till eof) - -comment(# @@PLEAC@@_18.7) -comment(# @@INCOMPLETE@@) -comment(# @@INCOMPLETE@@) - -comment(# @@PLEAC@@_18.8) -comment(# @@INCOMPLETE@@) -comment(# @@INCOMPLETE@@) - -comment(# @@PLEAC@@_18.9) -comment(# @@INCOMPLETE@@) -comment(# @@INCOMPLETE@@) - -comment(# @@PLEAC@@_19.0) -comment(# Introduction) -comment(#) -comment(# There is no standard cgi/web framework in python,) -comment(# this is reason for ranting now and then.) -comment(#) -comment(# See `PyWebOff <http://pyre.third-bit.com/pyweb/index.html>`__) -comment(# which compares CherryPy, Quixote, Twisted, WebWare and Zope) -comment(# Karrigell and print stantements. ) -comment(#) -comment(# Then there is Nevow and Standalone ZPT.) - -comment(# @@PLEAC@@_19.1) -comment(# Partial implementation of PLEAC Python section 19.1) -comment(# Written by Seo Sanghyeon) - -comment(# Standard CGI module is where PERL shines. Python) -comment(# module, cgi, is nothing but a form parser. So it is) -comment(# not really fair to compare these two. But I hesitate) -comment(# to introduce any non-standard module. After all,) -comment(# which one should I choose?) - -comment(# I would stick to simple print statements. I believe) -comment(# the following is close to how these tasks are usually) -comment(# done in Python.) - -comment(#-----------------------------) -comment(#!/usr/bin/env python) -comment(# hiweb - using FieldStorage class to get at form data) - -keyword(import) include(cgi) -ident(form) operator(=) ident(cgi)operator(.)ident(FieldStorage)operator(()operator(\)) - -comment(# get a value from the form) -ident(value) operator(=) ident(form)operator(.)ident(getvalue)operator(()string<delimiter(")content(PARAM_NAME)delimiter(")>operator(\)) - -comment(# print a standard header) -keyword(print) string<delimiter(")content(Content-Type: text/html)delimiter(")> -keyword(print) - -comment(# print a document) -keyword(print) string<delimiter(")content(<P>You typed: <TT>%s</TT></P>)delimiter(")> operator(%) operator(() - ident(cgi)operator(.)ident(escape)operator(()ident(value)operator(\))operator(,) - operator(\)) - -comment(#-----------------------------) -keyword(import) include(cgi) -ident(form) operator(=) ident(cgi)operator(.)ident(FieldStorage)operator(()operator(\)) - -ident(who) operator(=) ident(form)operator(.)ident(getvalue)operator(()string<delimiter(")content(Name)delimiter(")>operator(\)) -ident(phone) operator(=) ident(form)operator(.)ident(getvalue)operator(()string<delimiter(")content(Number)delimiter(")>operator(\)) -ident(picks) operator(=) ident(form)operator(.)ident(getvalue)operator(()string<delimiter(")content(Choices)delimiter(")>operator(\)) - -comment(# if you want to assure `picks' to be a list) -ident(picks) operator(=) ident(form)operator(.)ident(getlist)operator(()string<delimiter(")content(Choices)delimiter(")>operator(\)) - -comment(#-----------------------------) -comment(# Not Implemented) - -comment(# To implement -EXPIRES => '+3d', I need to study about) -keyword(import) include(cgi) -keyword(import) include(datetime) - -ident(time_format) operator(=) string<delimiter(")content(%a, %d %b %Y %H:%M:%S %Z)delimiter(")> -keyword(print) string<delimiter(")content(Expires: %s)delimiter(")> operator(%) operator(() - operator(()ident(datetime)operator(.)ident(datetime)operator(.)ident(now)operator(()operator(\)) - operator(+) ident(datetime)operator(.)ident(timedelta)operator(()operator(+)integer(3)operator(\))operator(\))operator(.)ident(strftime)operator(()ident(time_format)operator(\)) - operator(\)) -keyword(print) string<delimiter(")content(Date: %s)delimiter(")> operator(%) operator(()ident(datetime)operator(.)ident(datetime)operator(.)ident(now)operator(()operator(\))operator(.)ident(strftime)operator(()ident(time_format)operator(\))operator(\)) -keyword(print) string<delimiter(")content(Content-Type: text/plain; charset=ISO-8859-1)delimiter(")> - -comment(#-----------------------------) -comment(# NOTES) - -comment(# CGI::param(\) is a multi-purpose function. Here I want to) -comment(# note which Python functions correspond to it.) - -comment(# PERL version 5.6.1, CGI.pm version 2.80.) -comment(# Python version 2.2.3. cgi.py CVS revision 1.68.) - -comment(# Assume that `form' is the FieldStorage instance.) - -comment(# param(\) with zero argument returns parameter names as) -comment(# a list. It is `form.keys(\)' in Python, following Python's) -comment(# usual mapping interface.) - -comment(# param(\) with one argument returns the value of the named) -comment(# parameter. It is `form.getvalue(\)', but there are some) -comment(# twists:) - -comment(# 1\) A single value is passed.) -comment(# No problem.) - -comment(# 2\) Multiple values are passed.) -comment(# PERL: in LIST context, you get a list. in SCALAR context,) -comment(# you get the first value from the list.) -comment(# Python: `form.getvalue(\)' returns a list if multiple) -comment(# values are passed, a raw value if a single value) -comment(# is passed. With `form.getlist(\)', you always) -comment(# get a list. (When a single value is passed, you) -comment(# get a list with one element.\) With `form.getfirst(\)',) -comment(# you always get a value. (When multiple values are) -comment(# passed, you get the first one.\)) - -comment(# 3\) Parameter name is given, but no value is passed.) -comment(# PERL: returns an empty string, not undef. POD says this) -comment(# feature is new in 2.63, and was introduced to avoid) -comment(# "undefined value" warnings when running with the) -comment(# -w switch.) -comment(# Python: tricky. If you want black values to be retained,) -comment(# you should pass a nonzero `keep_blank_values' keyword) -comment(# argument. Default is not to retain blanks. In case) -comment(# values are not retained, see below.) - -comment(# 4\) Even parameter name is never mentioned.) -comment(# PERL: returns undef.) -comment(# Python: returns None, or whatever you passed as the second) -comment(# argument, or `default` keyword argument. This is) -comment(# consistent with `get(\)' method of the Python mapping) -comment(# interface.) - -comment(# param(\) with more than one argument modifies the already) -comment(# set form data. This functionality is not available in Python) -comment(# cgi module.) - - -comment(# @@PLEAC@@_19.2) -comment(# enable(\) from 'cgitb' module, by default, redirects traceback) -comment(# to the browser. It is defined as 'enable(display=True, logdir=None,) -comment(# context=5\)'.) - -comment(# equivalent to importing CGI::Carp::fatalsToBrowser.) -keyword(import) include(cgitb) -ident(cgitb)operator(.)ident(enable)operator(()operator(\)) - -comment(# to suppress browser output, you should explicitly say so.) -keyword(import) include(cgitb) -ident(cgitb)operator(.)ident(enable)operator(()ident(display)operator(=)pre_constant(False)operator(\)) - -comment(# equivalent to call CGI::Carp::carpout with temporary files.) -keyword(import) include(cgitb) -ident(cgitb)operator(.)ident(enable)operator(()ident(logdir)operator(=)string<delimiter(")content(/var/local/cgi-logs/)delimiter(")>operator(\)) - -comment(# Python exception, traceback facilities are much richer than PERL's) -comment(# die and its friends. You can use your custom exception formatter) -comment(# by replacing sys.excepthook. (equivalent to CGI::Carp::set_message.\)) -comment(# Default formatter is available as traceback.print_exc(\) in pure) -comment(# Python. In fact, what cgitb.enable(\) does is replacing excepthook) -comment(# to cgitb.handler(\), which knows how to format exceptions to HTML.) - -comment(# If this is not enough, (usually this is enough!\) Python 2.3 comes) -comment(# with a new standard module called 'logging', which is complex, but) -comment(# very flexible and entirely customizable.) - -comment(# @@PLEAC@@_19.3) -comment(#) -comment(# download the following standalone program) -comment(#!/usr/bin/python) -comment(# webwhoami - show web users id) -keyword(import) include(getpass) -keyword(print) string<delimiter(")content(Content-Type: text/plain)char(\\n)delimiter(")> -keyword(print) string<delimiter(")content(Running as %s)char(\\n)delimiter(")> operator(%) ident(getpass)operator(.)ident(getuser)operator(()operator(\)) - - - -comment(# STDOUT/ERR flushing) -comment(#) -comment(# In contrast to what the perl cookbook says, modpython.org tells) -comment(# STDERR is buffered too.) - -comment(# @@PLEAC@@_19.4) -comment(# @@INCOMPLETE@@) -comment(# @@INCOMPLETE@@) - -comment(# @@PLEAC@@_19.5) - -comment(# use mod_python in the Apache web server.) - -comment(# Load the module in httpd.conf or apache.conf) - -ident(LoadModule) ident(python_module) ident(libexec)operator(/)ident(mod_python)operator(.)ident(so) - -operator(<)ident(Directory) operator(/)ident(some)operator(/)ident(directory)operator(/)ident(htdocs)operator(/)ident(test)operator(>) - ident(AddHandler) ident(mod_python) operator(.)ident(py) - ident(PythonHandler) ident(mptest) - ident(PythonDebug) ident(On) -operator(<)operator(/)ident(Directory)operator(>) - -comment(# test.py file in /some/directory/htdocs/test) -keyword(from) include(mod_python) keyword(import) include(apache) - -keyword(def) method(handler)operator(()ident(req)operator(\))operator(:) - ident(req)operator(.)ident(write)operator(()string<delimiter(")content(Hello World!)delimiter(")>operator(\)) - keyword(return) ident(apache)operator(.)ident(OK) - -comment(# @@PLEAC@@_19.6) - -keyword(import) include(os) -ident(os)operator(.)ident(system)operator(()string<delimiter(")content(command %s %s)delimiter(")> operator(%) operator(()predefined(input)operator(,) string<delimiter(")content( )delimiter(")>operator(.)ident(join)operator(()ident(files)operator(\))operator(\))operator(\)) comment(# UNSAFE) - -comment(# python doc lib cgi-security it says) -comment(#) -comment(# To be on the safe side, if you must pass a string gotten from a form to a shell) -comment(# command, you should make sure the string contains only alphanumeric characters, dashes,) -comment(# underscores, and periods.) -keyword(import) include(re) -ident(cmd) operator(=) string<delimiter(")content(command %s %s)delimiter(")> operator(%) operator(()predefined(input)operator(,) string<delimiter(")content( )delimiter(")>operator(.)ident(join)operator(()ident(files)operator(\))operator(\)) -keyword(if) ident(re)operator(.)ident(search)operator(()string<modifier(r)delimiter(")content([^a-zA-Z0-9._)content(\\-)content(])delimiter(")>operator(,) ident(cmd)operator(\))operator(:) - keyword(print) string<delimiter(")content(rejected)delimiter(")> - ident(sys)operator(.)ident(exit)operator(()integer(1)operator(\)) -ident(os)operator(.)ident(system)operator(()ident(cmd)operator(\)) -ident(trans) operator(=) ident(string)operator(.)ident(maketrans)operator(()ident(string)operator(.)ident(ascii_letters)operator(+)ident(string)operator(.)ident(digits)operator(+)string<delimiter(")content(-_.)delimiter(")>operator(,) - -comment(# @@INCOMPLETE@@) -comment(# @@INCOMPLETE@@) - -comment(# @@PLEAC@@_19.7) -comment(#-----------------------------) -comment(# This uses nevow's (http://nevow.com\) stan; there's no standard) -comment(# way to generate HTML, though there are many implementations of) -comment(# this basic idea.) -keyword(from) include(nevow) keyword(import) include(tags) keyword(as) ident(T) -keyword(print) ident(T)operator(.)ident(ol)operator([)ident(T)operator(.)ident(li)operator([)string<delimiter(')content(red)delimiter(')>operator(])operator(,) ident(T)operator(.)ident(li)operator([)string<delimiter(')content(blue)delimiter(')>operator(])operator(,) ident(T)operator(.)ident(li)operator([)string<delimiter(')content(green)delimiter(')>operator(])operator(]) -comment(# <ol><li>red</li><li>blue</li><li>green</li></ol>) - -ident(names) operator(=) string<delimiter(')content(Larry Moe Curly)delimiter(')>operator(.)ident(split)operator(()operator(\)) -keyword(print) ident(T)operator(.)ident(ul)operator([) operator([)ident(T)operator(.)ident(li)operator(()ident(type)operator(=)string<delimiter(")content(disc)delimiter(")>operator(\))operator([)ident(name)operator(]) keyword(for) ident(name) keyword(in) ident(names)operator(]) operator(]) -comment(# <ul><li type="disc">Larry</li><li type="disc">Moe</li>) -comment(# <li type="disc">Curly</li></ul>) -comment(#-----------------------------) -keyword(print) ident(T)operator(.)ident(li)operator([)string<delimiter(")content(alpha)delimiter(")>operator(]) -comment(# <li>alpha</li>) - -keyword(print) ident(T)operator(.)ident(li)operator([)string<delimiter(')content(alpha)delimiter(')>operator(])operator(,) ident(T)operator(.)ident(li)operator([)string<delimiter(')content(omega)delimiter(')>operator(]) -comment(# <li>alpha</li> <li>omega</li>) -comment(#-----------------------------) -ident(states) operator(=) operator({) - string<delimiter(")content(Wisconsin)delimiter(")>operator(:) operator([) string<delimiter(")content(Superior)delimiter(")>operator(,) string<delimiter(")content(Lake Geneva)delimiter(")>operator(,) string<delimiter(")content(Madison)delimiter(")> operator(])operator(,) - string<delimiter(")content(Colorado)delimiter(")>operator(:) operator([) string<delimiter(")content(Denver)delimiter(")>operator(,) string<delimiter(")content(Fort Collins)delimiter(")>operator(,) string<delimiter(")content(Boulder)delimiter(")> operator(])operator(,) - string<delimiter(")content(Texas)delimiter(")>operator(:) operator([) string<delimiter(")content(Plano)delimiter(")>operator(,) string<delimiter(")content(Austin)delimiter(")>operator(,) string<delimiter(")content(Fort Stockton)delimiter(")> operator(])operator(,) - string<delimiter(")content(California)delimiter(")>operator(:) operator([) string<delimiter(")content(Sebastopol)delimiter(")>operator(,) string<delimiter(")content(Santa Rosa)delimiter(")>operator(,) string<delimiter(")content(Berkeley)delimiter(")> operator(])operator(,) -operator(}) - -keyword(print) string<delimiter(")content(<TABLE> <CAPTION>Cities I Have Known</CAPTION>)delimiter(")>operator(;) -keyword(print) ident(T)operator(.)ident(tr)operator([)ident(T)operator(.)ident(th)operator(()string<delimiter(')content(State)delimiter(')>operator(\))operator(,) ident(T)operator(.)ident(th)operator(()string<delimiter(')content(Cities)delimiter(')>operator(\))operator(]) -keyword(for) ident(k) keyword(in) predefined(sorted)operator(()ident(states)operator(.)ident(keys)operator(()operator(\))operator(\))operator(:) - keyword(print) ident(T)operator(.)ident(tr)operator([) operator([)ident(T)operator(.)ident(th)operator(()ident(k)operator(\))operator(]) operator(+) operator([)ident(T)operator(.)ident(td)operator(()ident(city)operator(\)) keyword(for) ident(city) keyword(in) predefined(sorted)operator(()ident(states)operator([)ident(k)operator(])operator(\))operator(]) operator(]) -keyword(print) string<delimiter(")content(</TABLE>)delimiter(")>operator(;) -comment(#-----------------------------) -comment(# <TABLE> <CAPTION>Cities I Have Known</CAPTION>) -comment(#) -comment(# <TR><TH>State</TH> <TH>Cities</TH></TR>) -comment(#) -comment(# <TR><TH>California</TH> <TD>Berkeley</TD> <TD>Santa Rosa</TD>) -comment(#) -comment(# <TD>Sebastopol</TD> </TR>) -comment(#) -comment(# <TR><TH>Colorado</TH> <TD>Boulder</TD> <TD>Denver</TD>) -comment(#) -comment(# <TD>Fort Collins</TD> </TR>) -comment(#) -comment(# <TR><TH>Texas</TH> <TD>Austin</TD> <TD>Fort Stockton</TD>) -comment(#) -comment(# <TD>Plano</TD></TR>) -comment(#) -comment(# <TR><TH>Wisconsin</TH> <TD>Lake Geneva</TD> <TD>Madison</TD>) -comment(#) -comment(# <TD>Superior</TD></TR>) -comment(#) -comment(# </TABLE>) -comment(#-----------------------------) -keyword(print) ident(T)operator(.)ident(table)operator([) - operator([)ident(T)operator(.)ident(caption)operator([)string<delimiter(')content(Cities I have Known)delimiter(')>operator(])operator(,) - ident(T)operator(.)ident(tr)operator([)ident(T)operator(.)ident(th)operator([)string<delimiter(')content(State)delimiter(')>operator(])operator(,) ident(T)operator(.)ident(th)operator([)string<delimiter(')content(Cities)delimiter(')>operator(])operator(]) operator(]) operator(+) - operator([)ident(T)operator(.)ident(tr)operator([) operator([)ident(T)operator(.)ident(th)operator(()ident(k)operator(\))operator(]) operator(+) operator([)ident(T)operator(.)ident(td)operator(()ident(city)operator(\)) keyword(for) ident(city) keyword(in) predefined(sorted)operator(()ident(states)operator([)ident(k)operator(])operator(\))operator(])operator(]) - keyword(for) ident(k) keyword(in) predefined(sorted)operator(()ident(states)operator(.)ident(keys)operator(()operator(\))operator(\))operator(])operator(]) -comment(#-----------------------------) -comment(# salcheck - check for salaries) -keyword(import) include(MySQLdb) -keyword(import) include(cgi) - -ident(form) operator(=) ident(cgi)operator(.)ident(FieldStorage)operator(()operator(\)) - -keyword(if) string<delimiter(')content(limit)delimiter(')> keyword(in) ident(form)operator(:) - ident(limit) operator(=) predefined(int)operator(()ident(form)operator([)string<delimiter(')content(limit)delimiter(')>operator(])operator(.)ident(value)operator(\)) -keyword(else)operator(:) - ident(limit) operator(=) string<delimiter(')delimiter(')> - -comment(# There's not a good way to start an HTML/XML construct with stan) -comment(# without completing it.) -keyword(print) string<delimiter(')content(<html><head><title>Salary Query</title></head><body>)delimiter(')> -keyword(print) ident(T)operator(.)ident(h1)operator([)string<delimiter(')content(Search)delimiter(')>operator(]) -keyword(print) string<delimiter(')content(<form>)delimiter(')> -keyword(print) ident(T)operator(.)ident(p)operator([)string<delimiter(')content(Enter minimum salary)delimiter(')>operator(,) - ident(T)operator(.)ident(input)operator(()ident(type)operator(=)string<delimiter(")content(text)delimiter(")>operator(,) ident(name)operator(=)string<delimiter(")content(limit)delimiter(")>operator(,) ident(value)operator(=)ident(limit)operator(\))operator(]) -keyword(print) ident(T)operator(.)ident(input)operator(()ident(type)operator(=)string<delimiter(")content(submit)delimiter(")>operator(\)) -keyword(print) string<delimiter(')content(</form>)delimiter(')> - -keyword(if) ident(limit)operator(:) - ident(dbconn) operator(=) ident(MySQLdb)operator(.)ident(connect)operator(()ident(db)operator(=)string<delimiter(')content(somedb)delimiter(')>operator(,) ident(host)operator(=)string<delimiter(')content(server.host.dom)delimiter(')>operator(,) - ident(port)operator(=)integer(3306)operator(,) ident(user)operator(=)string<delimiter(')content(username)delimiter(')>operator(,) - ident(passwd)operator(=)string<delimiter(')content(password)delimiter(')>operator(\)) - ident(cursor) operator(=) ident(dbconn)operator(.)ident(cursor)operator(()operator(\)) - ident(cursor)operator(.)ident(execute)operator(()string<delimiter(""")content( -)content( SELECT name, salary FROM employees)content( -)content( WHERE salary > %s)delimiter(""")>operator(,) operator(()ident(limit)operator(,)operator(\))operator(\)) - - keyword(print) ident(T)operator(.)ident(h1)operator([)string<delimiter(")content(Results)delimiter(")>operator(]) - keyword(print) string<delimiter(")content(<TABLE BORDER=1>)delimiter(")> - - keyword(for) ident(row) keyword(in) ident(cursor)operator(.)ident(fetchall)operator(()operator(\))operator(:) - keyword(print) ident(T)operator(.)ident(tr)operator([) operator([)ident(T)operator(.)ident(td)operator(()ident(cell)operator(\)) keyword(for) ident(cell) keyword(in) ident(row)operator(]) operator(]) - - keyword(print) string<delimiter(")content(</TABLE>)char(\\n)delimiter(")>operator(;) - ident(cursor)operator(.)ident(close)operator(()operator(\)) - ident(dbconn)operator(.)ident(close)operator(()operator(\)) - -keyword(print) string<delimiter(')content(</body></html>)delimiter(')> -comment(#-----------------------------) - -comment(# @@PLEAC@@_19.8) -comment(#-----------------------------) -ident(url) operator(=) string<delimiter(")content(http://python.org/pypi)delimiter(")> -keyword(print) string<delimiter(")content(Location: %s)char(\\n)delimiter(")> operator(%) ident(url) -keyword(raise) exception(SystemExit) -comment(#-----------------------------) -comment(# oreobounce - set a cookie and redirect the browser) -keyword(import) include(Cookie) -keyword(import) include(time) - -ident(c) operator(=) ident(Cookie)operator(.)ident(SimpleCookie)operator(()operator(\)) -ident(c)operator([)string<delimiter(')content(filling)delimiter(')>operator(]) operator(=) string<delimiter(')content(vanilla cr?me)delimiter(')> -ident(now) operator(=) ident(time)operator(.)ident(time)operator(()operator(\)) -ident(future) operator(=) ident(now) operator(+) integer(3)operator(*)operator(()integer(60)operator(*)integer(60)operator(*)integer(24)operator(*)integer(30)operator(\)) comment(# 3 months) -ident(expire_date) operator(=) ident(time)operator(.)ident(strftime)operator(()string<delimiter(')content(%a %d %b %Y %H:%M:%S GMT)delimiter(')>operator(,) ident(future)operator(\)) -ident(c)operator([)string<delimiter(')content(filling)delimiter(')>operator(])operator([)string<delimiter(')content(expires)delimiter(')>operator(]) operator(=) ident(expire_date) -ident(c)operator([)string<delimiter(')content(filling)delimiter(')>operator(])operator([)string<delimiter(')content(domain)delimiter(')>operator(]) operator(=) string<delimiter(')content(.python.org)delimiter(')> - -ident(whither) operator(=) string<delimiter(")content(http://somewhere.python.org/nonesuch.html)delimiter(")> - -comment(# Prints the cookie header) -keyword(print) string<delimiter(')content(Status: 302 Moved Temporarily)delimiter(')> -keyword(print) ident(c) -keyword(print) string<delimiter(')content(Location:)delimiter(')>operator(,) ident(whither) -keyword(print) - -comment(#-----------------------------) -comment(#Status: 302 Moved Temporarily) -comment(#Set-Cookie: filling=vanilla%20cr%E4me; domain=.perl.com;) -comment(# expires=Tue, 21-Jul-1998 11:58:55 GMT) -comment(#Location: http://somewhere.perl.com/nonesuch.html) -comment(#-----------------------------) -comment(# os_snipe - redirect to a Jargon File entry about current OS) -keyword(import) include(os)operator(,) include(re) -ident(dir) operator(=) string<delimiter(')content(http://www.wins.uva.nl/%7Emes/jargon)delimiter(')> -ident(matches) operator(=) operator([) - operator(()string<modifier(r)delimiter(')content(Mac)delimiter(')>operator(,) string<delimiter(')content(m/Macintrash.html)delimiter(')>operator(\))operator(,) - operator(()string<modifier(r)delimiter(')content(Win(dows \)?NT)delimiter(')>operator(,) string<delimiter(')content(e/evilandrude.html)delimiter(')>operator(\))operator(,) - operator(()string<modifier(r)delimiter(')content(Win|MSIE|WebTV)delimiter(')>operator(,) string<delimiter(')content(m/MicroslothWindows.html)delimiter(')>operator(\))operator(,) - operator(()string<modifier(r)delimiter(')content(Linux)delimiter(')>operator(,) string<delimiter(')content(l/Linux.html)delimiter(')>operator(\))operator(,) - operator(()string<modifier(r)delimiter(')content(HP-UX)delimiter(')>operator(,) string<delimiter(')content(h/HP-SUX.html)delimiter(')>operator(\))operator(,) - operator(()string<modifier(r)delimiter(')content(SunOS)delimiter(')>operator(,) string<delimiter(')content(s/ScumOS.html)delimiter(')>operator(\))operator(,) - operator(()pre_constant(None)operator(,) string<delimiter(')content(a/AppendixB.html)delimiter(')>operator(\))operator(,) - operator(]) - -keyword(for) ident(regex)operator(,) ident(page) keyword(in) ident(matches)operator(:) - keyword(if) keyword(not) ident(regex)operator(:) comment(# default) - keyword(break) - keyword(if) ident(re)operator(.)ident(search)operator(()ident(regex)operator(,) ident(os)operator(.)ident(environ)operator([)string<delimiter(')content(HTTP_USER_AGENT)delimiter(')>operator(])operator(\))operator(:) - keyword(break) -keyword(print) string<delimiter(')content(Location: %s/%s)char(\\n)delimiter(')> operator(%) operator(()predefined(dir)operator(,) ident(page)operator(\)) -comment(#-----------------------------) -comment(# There's no special way to print headers) -keyword(print) string<delimiter(')content(Status: 204 No response)delimiter(')> -keyword(print) -comment(#-----------------------------) -comment(#Status: 204 No response) -comment(#-----------------------------) - -comment(# @@PLEAC@@_19.9) -comment(# download the following standalone program) -comment(#!/usr/bin/python) -comment(# dummyhttpd - start a HTTP daemon and print what the client sends) - -keyword(import) include(SocketServer) -comment(# or use BaseHTTPServer, SimpleHTTPServer, CGIHTTPServer) - -keyword(def) method(adr_str)operator(()ident(adr)operator(\))operator(:) - keyword(return) string<delimiter(")content(%s:%d)delimiter(")> operator(%) ident(adr) - -keyword(class) class(RequestHandler)operator(()ident(SocketServer)operator(.)ident(BaseRequestHandler)operator(\))operator(:) - keyword(def) method(handle)operator(()pre_constant(self)operator(\))operator(:) - keyword(print) string<delimiter(")content(client access from %s)delimiter(")> operator(%) ident(adr_str)operator(()pre_constant(self)operator(.)ident(client_address)operator(\)) - keyword(print) pre_constant(self)operator(.)ident(request)operator(.)ident(recv)operator(()integer(10000)operator(\)) - pre_constant(self)operator(.)ident(request)operator(.)ident(send)operator(()string<delimiter(")content(Content-Type: text/plain)char(\\n)delimiter(")> - string<delimiter(")content(Server: dymmyhttpd/1.0.0)char(\\n)delimiter(")> - string<delimiter(")char(\\n)content(...)char(\\n)delimiter(")>operator(\)) - pre_constant(self)operator(.)ident(request)operator(.)ident(close)operator(()operator(\)) - - -ident(adr) operator(=) operator(()string<delimiter(')content(127.0.0.1)delimiter(')>operator(,) integer(8001)operator(\)) -keyword(print) string<delimiter(")content(Please contact me at <http://%s>)delimiter(")> operator(%) ident(adr_str)operator(()ident(adr)operator(\)) -ident(server) operator(=) ident(SocketServer)operator(.)ident(TCPServer)operator(()ident(adr)operator(,) ident(RequestHandler)operator(\)) -ident(server)operator(.)ident(serve_forever)operator(()operator(\)) -ident(server)operator(.)ident(server_close)operator(()operator(\)) - - -comment(# @@PLEAC@@_19.10) - -keyword(import) include(Cookie) -ident(cookies) operator(=) ident(Cookie)operator(.)ident(SimpleCookie)operator(()operator(\)) -comment(# SimpleCookie is more secure, but does not support all characters.) -ident(cookies)operator([)string<delimiter(")content(preference-name)delimiter(")>operator(]) operator(=) string<delimiter(")content(whatever you'd like)delimiter(")> -keyword(print) ident(cookies) - -comment(# download the following standalone program) -comment(#!/usr/bin/python) -comment(# ic_cookies - sample CGI script that uses a cookie) - -keyword(import) include(cgi) -keyword(import) include(os) -keyword(import) include(Cookie) -keyword(import) include(datetime) - -ident(cookname) operator(=) string<delimiter(")content(favorite-ice-cream)delimiter(")> comment(# SimpleCookie does not support blanks) -ident(fieldname) operator(=) string<delimiter(")content(flavor)delimiter(")> - -ident(cookies) operator(=) ident(Cookie)operator(.)ident(SimpleCookie)operator(()ident(os)operator(.)ident(environ)operator(.)ident(get)operator(()string<delimiter(")content(HTTP_COOKIE)delimiter(")>operator(,)string<delimiter(")delimiter(")>operator(\))operator(\)) -keyword(if) ident(cookies)operator(.)ident(has_key)operator(()ident(cookname)operator(\))operator(:) - ident(favorite) operator(=) ident(cookies)operator([)ident(cookname)operator(])operator(.)ident(value) -keyword(else)operator(:) - ident(favorite) operator(=) string<delimiter(")content(mint)delimiter(")> - -ident(form) operator(=) ident(cgi)operator(.)ident(FieldStorage)operator(()operator(\)) -keyword(if) keyword(not) ident(form)operator(.)ident(has_key)operator(()ident(fieldname)operator(\))operator(:) - keyword(print) string<delimiter(")content(Content-Type: text/html)delimiter(")> - keyword(print) string<delimiter(")char(\\n)delimiter(")> - keyword(print) string<delimiter(")content(<html><body>)delimiter(")> - keyword(print) string<delimiter(")content(<h1>Hello Ice Cream</h1>)delimiter(")> - keyword(print) string<delimiter(")content(<form>)delimiter(")> - keyword(print) string<delimiter(')content(Please select a flavor: <input type="text" name="%s" value="%s" />)delimiter(')> operator(%) operator(() - ident(fieldname)operator(,) ident(favorite) operator(\)) - keyword(print) string<delimiter(")content(</form>)delimiter(")> - keyword(print) string<delimiter(")content(<hr />)delimiter(")> - keyword(print) string<delimiter(")content(</body></html>)delimiter(")> -keyword(else)operator(:) - ident(favorite) operator(=) ident(form)operator([)ident(fieldname)operator(])operator(.)ident(value) - ident(cookies)operator([)ident(cookname)operator(]) operator(=) ident(favorite) - ident(expire) operator(=) ident(datetime)operator(.)ident(datetime)operator(.)ident(now)operator(()operator(\)) operator(+) ident(datetime)operator(.)ident(timedelta)operator(()integer(730)operator(\)) - ident(cookies)operator([)ident(cookname)operator(])operator([)string<delimiter(")content(expires)delimiter(")>operator(]) operator(=) ident(expire)operator(.)ident(strftime)operator(()string<delimiter(")content(%a, %d %b %Y %H:00:00 GMT)delimiter(")>operator(\)) - ident(cookies)operator([)ident(cookname)operator(])operator([)string<delimiter(")content(path)delimiter(")>operator(]) operator(=) string<delimiter(")content(/)delimiter(")> - keyword(print) string<delimiter(")content(Content-Type: text/html)delimiter(")> - keyword(print) ident(cookies) - keyword(print) string<delimiter(")char(\\n)delimiter(")> - keyword(print) string<delimiter(")content(<html><body>)delimiter(")> - keyword(print) string<delimiter(")content(<h1>Hello Ice Cream</h1>)delimiter(")> - keyword(print) string<delimiter(")content(<p>You chose as your favorite flavor )char(\\")content(%s)char(\\")content(</p>)delimiter(")> operator(%) ident(favorite) - keyword(print) string<delimiter(")content(</body></html>)delimiter(")> - - -comment(# @@PLEAC@@_19.11) -comment(# @@INCOMPLETE@@) -comment(# @@INCOMPLETE@@) - -comment(# @@PLEAC@@_19.12) -comment(# @@INCOMPLETE@@) -comment(# @@INCOMPLETE@@) - -comment(# @@PLEAC@@_19.13) -comment(#-----------------------------) -comment(# first open and exclusively lock the file) -keyword(import) include(os)operator(,) include(cgi)operator(,) include(fcntl)operator(,) include(cPickle) -ident(fh) operator(=) predefined(open)operator(()string<delimiter(')content(/tmp/formlog)delimiter(')>operator(,) string<delimiter(')content(ab)delimiter(')>operator(\)) -ident(fcntl)operator(.)ident(flock)operator(()ident(fh)operator(.)ident(fileno)operator(()operator(\))operator(,) ident(fcntl)operator(.)ident(LOCK_EX)operator(\)) - -ident(form) operator(=) ident(cgi)operator(.)ident(FieldStorage)operator(()operator(\)) -comment(# This doesn't produce a readable file; we copy the environment so) -comment(# that we save a plain dictionary (os.environ is a dictionary-like) -comment(# object\).) -ident(cPickle)operator(.)ident(dump)operator(()operator(()ident(form)operator(,) ident(os)operator(.)ident(environ)operator(.)ident(copy)operator(()operator(\))operator(\)) ident(fh)operator(\)) -ident(fh)operator(.)ident(close)operator(()operator(\)) -comment(#-----------------------------) -keyword(import) include(cgi)operator(,) include(smtplib)operator(,) include(sys) - -ident(form) operator(=) ident(cgi)operator(.)ident(FieldStorage)operator(()operator(\)) -ident(email) operator(=) string<delimiter(""")char(\\ -)content(From: %S)content( -)content(To: hisname@hishost.com)content( -)content(Subject: mailed form submission)content( -)content( -)delimiter(""")> operator(%) ident(sys)operator(.)ident(argv)operator([)integer(0)operator(]) - -keyword(for) ident(key) keyword(in) ident(form)operator(:) - ident(values) operator(=) ident(form)operator([)ident(key)operator(]) - keyword(if) keyword(not) predefined(isinstance)operator(()ident(values)operator(,) predefined(list)operator(\))operator(:) - ident(value) operator(=) operator([)ident(values)operator(.)ident(value)operator(]) - keyword(else)operator(:) - ident(value) operator(=) operator([)ident(v)operator(.)ident(value) keyword(for) ident(v) keyword(in) ident(values)operator(]) - keyword(for) ident(item) keyword(in) ident(values)operator(:) - ident(email) operator(+=) string<delimiter(')char(\\n)content(%s: %s)delimiter(')> operator(%) operator(()ident(key)operator(,) ident(value)operator(\)) - -ident(server) operator(=) ident(smtplib)operator(.)ident(SMTP)operator(()string<delimiter(')content(localhost)delimiter(')>operator(\)) -ident(server)operator(.)ident(sendmail)operator(()ident(sys)operator(.)ident(argv)operator([)integer(0)operator(])operator(,) operator([)string<delimiter(')content(hisname@hishost.com)delimiter(')>operator(])operator(,) ident(email)operator(\)) -ident(server)operator(.)ident(quit)operator(()operator(\)) -comment(#-----------------------------) -comment(# @@INCOMPLETE@@ I don't get the point of these:) -comment(# param("_timestamp", scalar localtime\);) -comment(# param("_environs", %ENV\);) -comment(#-----------------------------) -keyword(import) include(fcntl)operator(,) include(cPickle) -ident(fh) operator(=) predefined(open)operator(()string<delimiter(')content(/tmp/formlog)delimiter(')>operator(,) string<delimiter(')content(rb)delimiter(')>operator(\)) -ident(fcntl)operator(.)ident(flock)operator(()ident(fh)operator(.)ident(fileno)operator(()operator(\))operator(,) ident(fcntl)operator(.)ident(LOCK_SH)operator(\)) - -ident(count) operator(=) integer(0) -keyword(while) pre_constant(True)operator(:) - keyword(try)operator(:) - ident(form)operator(,) ident(environ) operator(=) ident(cPickle)operator(.)ident(load)operator(()ident(fh)operator(\)) - keyword(except) exception(EOFError)operator(:) - keyword(break) - keyword(if) ident(environ)operator(.)ident(get)operator(()string<delimiter(')content(REMOTE_HOST)delimiter(')>operator(\))operator(.)ident(endswith)operator(()string<delimiter(')content(perl.com)delimiter(')>operator(\))operator(:) - keyword(continue) - keyword(if) string<delimiter(')content(items requested)delimiter(')> keyword(in) ident(form)operator(:) - ident(count) operator(+=) predefined(int)operator(()ident(form)operator([)string<delimiter(')content(items requested)delimiter(')>operator(])operator(.)ident(value)operator(\)) -keyword(print) string<delimiter(')content(Total orders:)delimiter(')>operator(,) ident(count) -comment(#-----------------------------) - -comment(# @@PLEAC@@_19.14) -comment(# @@INCOMPLETE@@) -comment(# @@INCOMPLETE@@) - -comment(# @@PLEAC@@_20.1) -comment(#-----------------------------) -keyword(import) include(urllib) -ident(content) operator(=) ident(urllib)operator(.)ident(urlopen)operator(()ident(url)operator(\))operator(.)ident(read)operator(()operator(\)) - -keyword(try)operator(:) - keyword(import) include(urllib) - ident(content) operator(=) ident(urllib)operator(.)ident(urlopen)operator(()ident(url)operator(\))operator(.)ident(read)operator(()operator(\)) -keyword(except) exception(IOError)operator(:) - keyword(print) string<delimiter(")content(could not get %s)delimiter(")> operator(%) ident(url) - -comment(#-----------------------------) -comment(# download the following standalone program) -comment(#!/usr/bin/python) -comment(# titlebytes - find the title and size of documents) -comment(#) -comment(# differences to perl) -comment(# ) -comment(# * no URI::Heuristics) -comment(# * perl LWP supports fetching files from local system) -comment(# * fetching a title from ftp or file doesnt work in perl either.) - -keyword(import) include(sys)operator(,) include(urllib2)operator(,) include(HTMLParser) -keyword(if) predefined(len)operator(()ident(sys)operator(.)ident(argv)operator(\))operator(<=)integer(1)operator(:) - keyword(print) string<delimiter(")content(usage: %s url)delimiter(")> operator(%) ident(sys)operator(.)ident(argv)operator([)integer(0)operator(]) - ident(sys)operator(.)ident(exit)operator(()integer(1)operator(\)) -ident(raw_url) operator(=) ident(sys)operator(.)ident(argv)operator([)integer(1)operator(]) - -comment(# python has no equivalent to pearls URI::Heuristics, which) -comment(# would do some guessing like :) -comment(#) -comment(# perl -> http://www.perl.com) -comment(# www.oreilly.com -> http://www.oreilly.com) -comment(# ftp.funet.fi -> ftp://ftp.funet.fi) -comment(# /etc/passwd -> file:/etc/passwd) - -comment(# simple but pedantic html parser: tpj.com breaks it.) -keyword(class) class(html)operator(()ident(HTMLParser)operator(.)ident(HTMLParser)operator(\))operator(:) - keyword(def) method(__init__)operator(()pre_constant(self)operator(\))operator(:) - ident(HTMLParser)operator(.)ident(HTMLParser)operator(.)ident(__init__)operator(()pre_constant(self)operator(\)) - pre_constant(self)operator(.)ident(_data) operator(=) operator({)operator(}) - pre_constant(self)operator(.)ident(_open_tags) operator(=) operator([)operator(]) - keyword(def) method(handle_starttag)operator(()pre_constant(self)operator(,) ident(tag)operator(,) ident(attrs)operator(\))operator(:) - pre_constant(self)operator(.)ident(_open_tags)operator(.)ident(append)operator(()ident(tag)operator(\)) - keyword(def) method(handle_endtag)operator(()pre_constant(self)operator(,) ident(tag)operator(\))operator(:) - keyword(if) predefined(len)operator(()pre_constant(self)operator(.)ident(_open_tags)operator(\))operator(>)integer(0)operator(:) - pre_constant(self)operator(.)ident(_open_tags)operator(.)ident(pop)operator(()operator(\)) - keyword(def) method(handle_data)operator(()pre_constant(self)operator(,) ident(data)operator(\))operator(:) - keyword(if) predefined(len)operator(()pre_constant(self)operator(.)ident(_open_tags)operator(\))operator(>)integer(0)operator(:) - pre_constant(self)operator(.)ident(_data)operator([)pre_constant(self)operator(.)ident(_open_tags)operator([)operator(-)integer(1)operator(])operator(]) operator(=) ident(data) - keyword(def) method(__getattr__)operator(()pre_constant(self)operator(,)ident(attr)operator(\))operator(:) - keyword(if) keyword(not) pre_constant(self)operator(.)ident(_data)operator(.)ident(has_key)operator(()ident(attr)operator(\))operator(:) - keyword(return) string<delimiter(")delimiter(")> - keyword(return) pre_constant(self)operator(.)ident(_data)operator([)ident(attr)operator(]) - -ident(url) operator(=) ident(raw_url) -keyword(print) string<delimiter(")content(%s =>)char(\\n)char(\\t)delimiter(")> operator(%) ident(url)operator(,) -comment(# TODO fake user agent "Schmozilla/v9.17 Platinum") -comment(# TODO referer "http://wizard.yellowbrick.oz") -comment(# as we only do http httplib would do also) -keyword(try)operator(:) - ident(response) operator(=) ident(urllib2)operator(.)ident(urlopen)operator(()ident(url)operator(\)) -keyword(except)operator(:) - keyword(print) string<delimiter(")content( %s)delimiter(")> operator(%) ident(sys)operator(.)ident(exc_info)operator(()operator(\))operator([)integer(1)operator(])operator(.)ident(reason)operator([)integer(1)operator(]) - ident(sys)operator(.)ident(exit)operator(()integer(1)operator(\)) -comment(# title is not in response) -ident(data) operator(=) ident(response)operator(.)ident(read)operator(()operator(\)) -ident(parser) operator(=) ident(html)operator(()operator(\)) -ident(parser)operator(.)ident(feed)operator(()ident(data)operator(\)) -ident(parser)operator(.)ident(close)operator(()operator(\)) comment(# force processing all data) -ident(count) operator(=) predefined(len)operator(()ident(data)operator(.)ident(split)operator(()string<delimiter(")char(\\n)delimiter(")>operator(\))operator(\)) -ident(bytes) operator(=) predefined(len)operator(()ident(data)operator(\)) -keyword(print) string<delimiter(")content(%s (%d lines, %d bytes\))delimiter(")> operator(%) operator(()ident(parser)operator(.)ident(title)operator(,) - ident(count)operator(,) - predefined(bytes)operator(\)) - -comment(# omly bytes is in response.info(\)) - - -comment(# @@PLEAC@@_20.2) - -comment(# GET method) -keyword(import) include(httplib) -ident(conn) operator(=) ident(httplib)operator(.)ident(HTTPConnection)operator(()string<delimiter(')content(www.perl.com)delimiter(')>operator(\)) -ident(conn)operator(.)ident(request)operator(()string<delimiter(')content(GET)delimiter(')>operator(,)string<delimiter(')content(/cgi-bin/cpan_mod?module=DB_File&readme=1)delimiter(')>operator(\)) -ident(r1) operator(=) ident(conn)operator(.)ident(getresponse)operator(()operator(\)) -ident(content) operator(=) ident(r1)operator(.)ident(read)operator(()operator(\)) - -comment(# POST method) -keyword(import) include(urllib) -ident(params) operator(=) ident(urllib)operator(.)ident(urlencode)operator(()operator({)string<delimiter(')content(module)delimiter(')>operator(:) string<delimiter(')content(DB_File)delimiter(')>operator(,) string<delimiter(')content(readme)delimiter(')>operator(:) integer(1)operator(})operator(\)) -ident(content) operator(=) ident(urllib)operator(.)ident(urlopen)operator(()string<delimiter(')content(http://www.perl.com)delimiter(')>operator(,) ident(params)operator(\))operator(.)ident(read)operator(()operator(\)) - -comment(# fields must be properly escaped) -comment(# script.cgi?field1?arg=%22this%20isn%27t%20%3CEASY%3E%22) - -comment(# proxies can be taken from environment, or specified) -comment(# as the optional thrid parameter to urlopen.) - -comment(# @@PLEAC@@_20.3) -comment(# download the following standalone program) -comment(#!/usr/bin/python) -comment(# xurl - extract unique, sorted list of links from URL) - -keyword(from) include(HTMLParser) keyword(import) include(HTMLParser) -keyword(import) include(urllib) -keyword(from) include(sets) keyword(import) include(Set) keyword(as) ident(set) comment(# not needed in 2.4) -keyword(class) class(myParser)operator(()ident(HTMLParser)operator(\))operator(:) - keyword(def) method(__init__)operator(()pre_constant(self)operator(,) ident(url)operator(\))operator(:) - pre_constant(self)operator(.)ident(baseUrl) operator(=) ident(url)operator([)operator(:)ident(url)operator(.)ident(rfind)operator(()string<delimiter(')content(/)delimiter(')>operator(\))operator(]) - ident(HTMLParser)operator(.)ident(__init__)operator(()pre_constant(self)operator(\)) - keyword(def) method(reset)operator(()pre_constant(self)operator(\))operator(:) - pre_constant(self)operator(.)ident(urls) operator(=) predefined(set)operator(()operator(\)) - ident(HTMLParser)operator(.)ident(reset)operator(()pre_constant(self)operator(\)) - keyword(def) method(handle_starttag)operator(()pre_constant(self)operator(,) ident(tag)operator(,) ident(attrs)operator(\))operator(:) - keyword(if) ident(tag) operator(==) string<delimiter(')content(a)delimiter(')>operator(:) - keyword(if) ident(attrs)operator([)integer(0)operator(])operator([)integer(0)operator(]) operator(==) string<delimiter(')content(href)delimiter(')>operator(:) - keyword(if) ident(attrs)operator([)integer(0)operator(])operator([)integer(1)operator(])operator(.)ident(find)operator(()string<delimiter(')content(:)delimiter(')>operator(\)) operator(==) operator(-)integer(1)operator(:) - comment(# we need to add the base URL.) - pre_constant(self)operator(.)ident(urls)operator(.)ident(add)operator(()pre_constant(self)operator(.)ident(baseUrl) operator(+) string<delimiter(')content(/)delimiter(')> operator(+) ident(attrs)operator([)integer(0)operator(])operator([)integer(1)operator(])operator(\)) - keyword(else)operator(:) - pre_constant(self)operator(.)ident(urls)operator(.)ident(add)operator(()ident(attrs)operator([)integer(0)operator(])operator([)integer(1)operator(])operator(\)) -ident(url) operator(=) string<delimiter(')content(http://www.perl.com/CPAN)delimiter(')> -ident(p) operator(=) ident(myParser)operator(()ident(url)operator(\)) -ident(s) operator(=) ident(urllib)operator(.)ident(urlopen)operator(()ident(url)operator(\)) -ident(data) operator(=) ident(s)operator(.)ident(read)operator(()operator(\)) -ident(p)operator(.)ident(feed)operator(()ident(data)operator(\)) -ident(urllist) operator(=) ident(p)operator(.)ident(urls)operator(.)ident(_data)operator(.)ident(keys)operator(()operator(\)) -ident(urllist)operator(.)ident(sort)operator(()operator(\)) -keyword(print) string<delimiter(')char(\\n)delimiter(')>operator(.)ident(join)operator(()ident(urllist)operator(\)) - - - -comment(# @@PLEAC@@_20.4) -comment(# Converting ASCII to HTML) - -comment(# download the following standalone program) -comment(#!/usr/bin/python) -comment(# text2html - trivial html encoding of normal text) - -keyword(import) include(sys) -keyword(import) include(re) - -comment(# precompile regular expressions) -ident(re_quoted) operator(=) ident(re)operator(.)ident(compile)operator(()string<modifier(r)delimiter(")content((?m\)^(>.*?\)$)delimiter(")>operator(\)) -ident(re_url) operator(=) ident(re)operator(.)ident(compile)operator(()string<modifier(r)delimiter(")content(<URL:(.*\)>)delimiter(")>operator(\)) -ident(re_http) operator(=) ident(re)operator(.)ident(compile)operator(()string<modifier(r)delimiter(")content((http:)content(\\S)content(+\))delimiter(")>operator(\)) -ident(re_strong) operator(=) ident(re)operator(.)ident(compile)operator(()string<modifier(r)delimiter(")content(\\*)content(()content(\\S)content(+\))content(\\*)delimiter(")>operator(\)) -ident(re_em) operator(=) ident(re)operator(.)ident(compile)operator(()string<modifier(r)delimiter(")content(\\b)content(_()content(\\S)content(+\)_)content(\\b)delimiter(")>operator(\)) - -comment(# split paragraphs) -keyword(for) ident(para) keyword(in) predefined(open)operator(()ident(sys)operator(.)ident(argv)operator([)integer(1)operator(])operator(\))operator(.)ident(read)operator(()operator(\))operator(.)ident(split)operator(()string<delimiter(")char(\\n)char(\\n)delimiter(")>operator(\))operator(:) - comment(# TODO encode entities: dont encode "<>" but do "&") - keyword(if) ident(para)operator(.)ident(startswith)operator(()string<delimiter(")content( )delimiter(")>operator(\))operator(:) - keyword(print) string<delimiter(")content(<pre>)char(\\n)content(%s)char(\\n)content(</pre>)delimiter(")> operator(%) ident(para) - keyword(else)operator(:) - ident(para) operator(=) ident(re_quoted)operator(.)ident(sub)operator(()string<modifier(r)delimiter(")content(\\1)content(<br />)delimiter(")>operator(,) ident(para)operator(\)) comment(# quoted text) - ident(para) operator(=) ident(re_url)operator(.)ident(sub)operator(()string<modifier(r)delimiter(')content(<a href=")content(\\1)content(">)content(\\1)content(</a>)delimiter(')>operator(,) ident(para)operator(\)) comment(# embedded URL) - ident(para) operator(=) ident(re_http)operator(.)ident(sub)operator(()string<modifier(r)delimiter(')content(<a href=")content(\\1)content(">)content(\\1)content(</a>)delimiter(')>operator(,) ident(para)operator(\)) comment(# guessed URL) - ident(para) operator(=) ident(re_strong)operator(.)ident(sub)operator(()string<modifier(r)delimiter(")content(<strong>)content(\\1)content(</strong>)delimiter(")>operator(,)ident(para)operator(\)) comment(# this is *bold* here) - ident(para) operator(=) ident(re_em)operator(.)ident(sub)operator(()string<modifier(r)delimiter(")content(<em>)content(\\1)content(</em>)delimiter(")>operator(,)ident(para)operator(\)) comment(# this is _italic_ here) - keyword(print) string<delimiter(")content(<p>)char(\\n)content(%s)char(\\n)content(</p>)delimiter(")> operator(%) ident(para) comment(# add paragraph tags) - - - -comment(#-----------------------------) -keyword(import) include(sys)operator(,) include(re) -keyword(import) include(htmlentitydefs) - -keyword(def) method(encode_entities)operator(()ident(s)operator(\))operator(:) - keyword(for) ident(k)operator(,)ident(v) keyword(in) ident(htmlentitydefs)operator(.)ident(codepoint2name)operator(.)ident(items)operator(()operator(\))operator(:) - keyword(if) ident(k)operator(<)integer(256)operator(:) comment(# no unicodes) - ident(s) operator(=) ident(s)operator(.)ident(replace)operator(()predefined(chr)operator(()ident(k)operator(\))operator(,)string<delimiter(")content(&%s;)delimiter(")>operator(%)ident(v)operator(\)) - keyword(return) ident(s) - -keyword(print) string<delimiter(")content(<table>)delimiter(")> -ident(text) operator(=) ident(sys)operator(.)ident(stdin)operator(.)ident(read)operator(()operator(\)) -ident(text) operator(=) ident(encode_entities)operator(()ident(text)operator(\)) -ident(text) operator(=) ident(re)operator(.)ident(sub)operator(()string<modifier(r)delimiter(")content(()content(\\n)content([ )content(\\t)content(]+\))delimiter(")>operator(,)string<delimiter(")content( . )delimiter(")>operator(,)ident(text)operator(\)) comment(# continuation lines) -ident(text) operator(=) ident(re)operator(.)ident(sub)operator(()string<modifier(r)delimiter(")content((?m\)^()content(\\S)content(+?:\))content(\\s)content(*(.*?\)$)delimiter(")>operator(,) - string<modifier(r)delimiter(')content(<tr><th align="left">)content(\\1)content(</th><td>)content(\\2)content(</td></tr>)delimiter(')>operator(,) - ident(text)operator(\))operator(;) -keyword(print) ident(text) -keyword(print) string<delimiter(")content(</table>)delimiter(")> - -comment(# @@PLEAC@@_20.5) -comment(# Converting HTML to ASCII) - -comment(#-----------------------------) -keyword(import) include(os) -ident(ascii) operator(=) ident(os)operator(.)ident(popen)operator(()string<delimiter(")content(lynx -dump )delimiter(")> operator(+) ident(filename)operator(\))operator(.)ident(read)operator(()operator(\)) - -comment(#-----------------------------) -keyword(import) include(formatter) -keyword(import) include(htmllib) - -ident(w) operator(=) ident(formatter)operator(.)ident(DumbWriter)operator(()operator(\)) -ident(f) operator(=) ident(formatter)operator(.)ident(AbstractFormatter)operator(()ident(w)operator(\)) -ident(p) operator(=) ident(htmllib)operator(.)ident(HTMLParser)operator(()ident(f)operator(\)) -ident(p)operator(.)ident(feed)operator(()ident(html)operator(\)) -ident(p)operator(.)ident(close)operator(()operator(\)) - -comment(# Above is a bare minimum to use writer/formatter/parser) -comment(# framework of Python.) - -comment(# Search Python Cookbook for more details, like writing) -comment(# your own writers or formatters.) - -comment(# Recipe #52297 has TtyFormatter, formatting underline) -comment(# and bold in Terminal. Recipe #135005 has a writer) -comment(# accumulating text instead of printing.) - -comment(# @@PLEAC@@_20.6) - -keyword(import) include(re) - -ident(plain_text) operator(=) ident(re)operator(.)ident(sub)operator(()string<modifier(r)delimiter(")content(<[^>]*>)delimiter(")>operator(,)string<delimiter(")delimiter(")>operator(,)ident(html_text)operator(\)) comment(#WRONG) - -comment(# using HTMLParser) -keyword(import) include(sys)operator(,) include(HTMLParser) - -keyword(class) class(html)operator(()ident(HTMLParser)operator(.)ident(HTMLParser)operator(\))operator(:) - keyword(def) method(__init__)operator(()pre_constant(self)operator(\))operator(:) - ident(HTMLParser)operator(.)ident(HTMLParser)operator(.)ident(__init__)operator(()pre_constant(self)operator(\)) - pre_constant(self)operator(.)ident(_plaintext) operator(=) string<delimiter(")delimiter(")> - pre_constant(self)operator(.)ident(_ignore) operator(=) pre_constant(False) - keyword(def) method(handle_starttag)operator(()pre_constant(self)operator(,) ident(tag)operator(,) ident(attrs)operator(\))operator(:) - keyword(if) ident(tag) operator(==) string<delimiter(")content(script)delimiter(")>operator(:) - pre_constant(self)operator(.)ident(_ignore) operator(=) pre_constant(True) - keyword(def) method(handle_endtag)operator(()pre_constant(self)operator(,) ident(tag)operator(\))operator(:) - keyword(if) ident(tag) operator(==) string<delimiter(")content(script)delimiter(")>operator(:) - pre_constant(self)operator(.)ident(_ignore) operator(=) pre_constant(False) - keyword(def) method(handle_data)operator(()pre_constant(self)operator(,) ident(data)operator(\))operator(:) - keyword(if) predefined(len)operator(()ident(data)operator(\))operator(>)integer(0) keyword(and) keyword(not) pre_constant(self)operator(.)ident(_ignore)operator(:) - pre_constant(self)operator(.)ident(_plaintext) operator(+=) ident(data) - keyword(def) method(get_plaintext)operator(()pre_constant(self)operator(\))operator(:) - keyword(return) pre_constant(self)operator(.)ident(_plaintext) - keyword(def) method(error)operator(()pre_constant(self)operator(,)ident(msg)operator(\))operator(:) - comment(# ignore all errors) - keyword(pass) - -ident(html_text) operator(=) predefined(open)operator(()ident(sys)operator(.)ident(argv)operator([)integer(1)operator(])operator(\))operator(.)ident(read)operator(()operator(\)) - -ident(parser) operator(=) ident(html)operator(()operator(\)) -ident(parser)operator(.)ident(feed)operator(()ident(html_text)operator(\)) -ident(parser)operator(.)ident(close)operator(()operator(\)) comment(# force processing all data) -keyword(print) ident(parser)operator(.)ident(get_plaintext)operator(()operator(\)) - -ident(title_s) operator(=) ident(re)operator(.)ident(search)operator(()string<modifier(r)delimiter(")content((?i\)<title>)content(\\s)content(*(.*?\))content(\\s)content(*</title>)delimiter(")>operator(,) ident(text)operator(\)) -ident(title) operator(=) ident(title_s) keyword(and) ident(title_s)operator(.)ident(groups)operator(()operator(\))operator([)integer(0)operator(]) keyword(or) string<delimiter(")content(NO TITLE)delimiter(")> - -comment(# download the following standalone program) -comment(#!/usr/bin/python) -comment(# htitlebytes - get html title from URL) -comment(#) - -keyword(import) include(sys)operator(,) include(urllib2)operator(,) include(HTMLParser) -keyword(if) predefined(len)operator(()ident(sys)operator(.)ident(argv)operator(\))operator(<=)integer(1)operator(:) - keyword(print) string<delimiter(")content(usage: %s url ...)delimiter(")> operator(%) ident(sys)operator(.)ident(argv)operator([)integer(0)operator(]) - ident(sys)operator(.)ident(exit)operator(()integer(1)operator(\)) - -comment(# simple but pedantic html parser: tpj.com breaks it.) -keyword(class) class(html)operator(()ident(HTMLParser)operator(.)ident(HTMLParser)operator(\))operator(:) - keyword(def) method(__init__)operator(()pre_constant(self)operator(\))operator(:) - ident(HTMLParser)operator(.)ident(HTMLParser)operator(.)ident(__init__)operator(()pre_constant(self)operator(\)) - pre_constant(self)operator(.)ident(_data) operator(=) operator({)operator(}) - pre_constant(self)operator(.)ident(_open_tags) operator(=) operator([)operator(]) - keyword(def) method(handle_starttag)operator(()pre_constant(self)operator(,) ident(tag)operator(,) ident(attrs)operator(\))operator(:) - pre_constant(self)operator(.)ident(_open_tags)operator(.)ident(append)operator(()ident(tag)operator(\)) - keyword(def) method(handle_endtag)operator(()pre_constant(self)operator(,) ident(tag)operator(\))operator(:) - keyword(if) predefined(len)operator(()pre_constant(self)operator(.)ident(_open_tags)operator(\))operator(>)integer(0)operator(:) - pre_constant(self)operator(.)ident(_open_tags)operator(.)ident(pop)operator(()operator(\)) - keyword(def) method(handle_data)operator(()pre_constant(self)operator(,) ident(data)operator(\))operator(:) - keyword(if) predefined(len)operator(()pre_constant(self)operator(.)ident(_open_tags)operator(\))operator(>)integer(0)operator(:) - pre_constant(self)operator(.)ident(_data)operator([)pre_constant(self)operator(.)ident(_open_tags)operator([)operator(-)integer(1)operator(])operator(]) operator(=) ident(data) - keyword(def) method(__getattr__)operator(()pre_constant(self)operator(,)ident(attr)operator(\))operator(:) - keyword(if) keyword(not) pre_constant(self)operator(.)ident(_data)operator(.)ident(has_key)operator(()ident(attr)operator(\))operator(:) - keyword(return) string<delimiter(")delimiter(")> - keyword(return) pre_constant(self)operator(.)ident(_data)operator([)ident(attr)operator(]) - keyword(def) method(error)operator(()pre_constant(self)operator(,)ident(msg)operator(\))operator(:) - comment(# ignore all errors) - keyword(pass) - -keyword(for) ident(url) keyword(in) ident(sys)operator(.)ident(argv)operator([)integer(1)operator(:)operator(])operator(:) - keyword(print) string<delimiter(")content(%s: )delimiter(")> operator(%) ident(url)operator(,) - comment(# TODO fake user agent "Schmozilla/v9.17 Platinum") - comment(# TODO referer "http://wizard.yellowbrick.oz") - comment(# as we only do http httplib would do also) - keyword(try)operator(:) - ident(response) operator(=) ident(urllib2)operator(.)ident(urlopen)operator(()ident(url)operator(\)) - keyword(except)operator(:) - keyword(print) string<delimiter(")content( %s)delimiter(")> operator(%) ident(sys)operator(.)ident(exc_info)operator(()operator(\))operator([)integer(1)operator(]) - ident(sys)operator(.)ident(exit)operator(()integer(1)operator(\)) - comment(# title is not in response) - ident(parser) operator(=) ident(html)operator(()operator(\)) - ident(parser)operator(.)ident(feed)operator(()ident(response)operator(.)ident(read)operator(()operator(\))operator(\)) - ident(parser)operator(.)ident(close)operator(()operator(\)) comment(# force processing all data) - keyword(print) ident(parser)operator(.)ident(title) - - - -comment(# @@PLEAC@@_20.7) -comment(# download the following standalone program) -comment(#!/usr/bin/python) -comment(# churl - check urls) - -keyword(import) include(sys) - -comment(# head request) -keyword(import) include(urllib) -keyword(def) method(valid)operator(()ident(url)operator(\))operator(:) - keyword(try)operator(:) - ident(conn) operator(=) ident(urllib)operator(.)ident(urlopen)operator(()ident(url)operator(\)) - keyword(return) integer(1) - keyword(except)operator(:) - keyword(return) integer(0) - -comment(# parser class as in xurl) -keyword(from) include(HTMLParser) keyword(import) include(HTMLParser) -keyword(from) include(sets) keyword(import) include(Set) keyword(as) ident(set) comment(# not needed in 2.4) -keyword(class) class(myParser)operator(()ident(HTMLParser)operator(\))operator(:) - keyword(def) method(__init__)operator(()pre_constant(self)operator(,) ident(url)operator(\))operator(:) - pre_constant(self)operator(.)ident(baseUrl) operator(=) ident(url)operator([)operator(:)ident(url)operator(.)ident(rfind)operator(()string<delimiter(')content(/)delimiter(')>operator(\))operator(]) - ident(HTMLParser)operator(.)ident(__init__)operator(()pre_constant(self)operator(\)) - keyword(def) method(reset)operator(()pre_constant(self)operator(\))operator(:) - pre_constant(self)operator(.)ident(urls) operator(=) predefined(set)operator(()operator(\)) - ident(HTMLParser)operator(.)ident(reset)operator(()pre_constant(self)operator(\)) - keyword(def) method(handle_starttag)operator(()pre_constant(self)operator(,) ident(tag)operator(,) ident(attrs)operator(\))operator(:) - keyword(if) ident(tag) operator(==) string<delimiter(')content(a)delimiter(')>operator(:) - keyword(if) ident(attrs)operator([)integer(0)operator(])operator([)integer(0)operator(]) operator(==) string<delimiter(')content(href)delimiter(')>operator(:) - keyword(if) ident(attrs)operator([)integer(0)operator(])operator([)integer(1)operator(])operator(.)ident(find)operator(()string<delimiter(')content(:)delimiter(')>operator(\)) operator(==) operator(-)integer(1)operator(:) - comment(# we need to add the base URL.) - pre_constant(self)operator(.)ident(urls)operator(.)ident(add)operator(()pre_constant(self)operator(.)ident(baseUrl) operator(+) string<delimiter(')content(/)delimiter(')> operator(+) ident(attrs)operator([)integer(0)operator(])operator([)integer(1)operator(])operator(\)) - keyword(else)operator(:) - pre_constant(self)operator(.)ident(urls)operator(.)ident(add)operator(()ident(attrs)operator([)integer(0)operator(])operator([)integer(1)operator(])operator(\)) - -keyword(if) predefined(len)operator(()ident(sys)operator(.)ident(argv)operator(\))operator(<=)integer(1)operator(:) - keyword(print) string<delimiter(")content(usage: %s <start_url>)delimiter(")> operator(%) operator(()ident(sys)operator(.)ident(argv)operator([)integer(0)operator(])operator(\)) - ident(sys)operator(.)ident(exit)operator(()integer(1)operator(\)) - -ident(base_url) operator(=) ident(sys)operator(.)ident(argv)operator([)integer(1)operator(]) -keyword(print) ident(base_url)operator(+)string<delimiter(")content(:)delimiter(")> -ident(p) operator(=) ident(myParser)operator(()ident(base_url)operator(\)) -ident(s) operator(=) ident(urllib)operator(.)ident(urlopen)operator(()ident(base_url)operator(\)) -ident(data) operator(=) ident(s)operator(.)ident(read)operator(()operator(\)) -ident(p)operator(.)ident(feed)operator(()ident(data)operator(\)) -keyword(for) ident(link) keyword(in) ident(p)operator(.)ident(urls)operator(.)ident(_data)operator(.)ident(keys)operator(()operator(\))operator(:) - ident(state) operator(=) string<delimiter(")content(UNKNOWN URL)delimiter(")> - keyword(if) ident(link)operator(.)ident(startswith)operator(()string<delimiter(")content(http:)delimiter(")>operator(\))operator(:) - ident(state) operator(=) string<delimiter(")content(BAD)delimiter(")> - keyword(if) ident(valid)operator(()ident(link)operator(\))operator(:) - ident(state) operator(=) string<delimiter(")content(OK)delimiter(")> - keyword(print) string<delimiter(")content( %s: %s)delimiter(")> operator(%) operator(()ident(link)operator(,) ident(state)operator(\)) - - - -comment(# @@PLEAC@@_20.8) -comment(# download the following standalone program) -comment(#!/usr/bin/python) -comment(# surl - sort URLs by their last modification date) - -keyword(import) include(urllib) -keyword(import) include(time) -keyword(import) include(sys) - -ident(Date) operator(=) operator({)operator(}) -keyword(while) integer(1)operator(:) - comment(# we only read from stdin not from argv.) - ident(ln) operator(=) ident(sys)operator(.)ident(stdin)operator(.)ident(readline)operator(()operator(\)) - keyword(if) keyword(not) ident(ln)operator(:) - keyword(break) - ident(ln) operator(=) ident(ln)operator(.)ident(strip)operator(()operator(\)) - keyword(try)operator(:) - ident(u) operator(=) ident(urllib)operator(.)ident(urlopen)operator(()ident(ln)operator(\)) - ident(date) operator(=) ident(time)operator(.)ident(mktime)operator(()ident(u)operator(.)ident(info)operator(()operator(\))operator(.)ident(getdate)operator(()string<delimiter(")content(date)delimiter(")>operator(\))operator(\)) - keyword(if) keyword(not) ident(Date)operator(.)ident(has_key)operator(()ident(date)operator(\))operator(:) - ident(Date)operator([)ident(date)operator(]) operator(=) operator([)operator(]) - ident(Date)operator([)ident(date)operator(])operator(.)ident(append)operator(()ident(ln)operator(\)) - keyword(except)operator(:) - ident(sys)operator(.)ident(stderr)operator(.)ident(write)operator(()string<delimiter(")content(%s: %s!)char(\\n)delimiter(")> operator(%) operator(()ident(ln)operator(,) ident(sys)operator(.)ident(exc_info)operator(()operator(\))operator([)integer(1)operator(])operator(\))operator(\)) - -ident(dates) operator(=) ident(Date)operator(.)ident(keys)operator(()operator(\)) -ident(dates)operator(.)ident(sort)operator(()operator(\)) comment(# python 2.4 would have sorted) -keyword(for) ident(d) keyword(in) ident(dates)operator(:) - keyword(print) string<delimiter(")content(%s %s)delimiter(")> operator(%) operator(()ident(time)operator(.)ident(strftime)operator(()string<delimiter(")content(%Y-%m-%d %H:%M:%S)delimiter(")>operator(,) ident(time)operator(.)ident(localtime)operator(()ident(d)operator(\))operator(\))operator(,) - string<delimiter(")content(, )delimiter(")>operator(.)ident(join)operator(()ident(Date)operator([)ident(d)operator(])operator(\))operator(\)) - - -comment(# @@PLEAC@@_20.9) -keyword(import) include(re) - -keyword(def) method(template)operator(()ident(filename)operator(,) ident(fillings)operator(\))operator(:) - ident(text) operator(=) predefined(open)operator(()ident(filename)operator(\))operator(.)ident(read)operator(()operator(\)) - keyword(def) method(repl)operator(()ident(matchobj)operator(\))operator(:) - keyword(if) ident(fillings)operator(.)ident(has_key)operator(()ident(matchobj)operator(.)ident(group)operator(()integer(1)operator(\))operator(\))operator(:) - keyword(return) predefined(str)operator(()ident(fillings)operator([)ident(matchobj)operator(.)ident(group)operator(()integer(1)operator(\))operator(])operator(\)) - keyword(return) string<delimiter(")delimiter(")> - comment(# replace quoted words with value from fillings dictionary) - ident(text) operator(=) ident(re)operator(.)ident(sub)operator(()string<delimiter(")content(%%(.+?\)%%)delimiter(")>operator(,) ident(repl)operator(,) ident(text)operator(\)) - keyword(return) ident(text) - -ident(fields) operator(=) operator({) string<delimiter(")content(username)delimiter(")>operator(:)string<delimiter(")content(peter)delimiter(")>operator(,) string<delimiter(")content(count)delimiter(")>operator(:)string<delimiter(")content(23)delimiter(")>operator(,) string<delimiter(")content(total)delimiter(")>operator(:) string<delimiter(")content(1234)delimiter(")>operator(}) -keyword(print) ident(template)operator(()string<delimiter(")content(/home/httpd/templates/simple.template)delimiter(")>operator(,) ident(fields)operator(\)) - -comment(# download the following standalone program) -comment(#!/usr/bin/python) -comment(# userrep1 - report duration of user logins using SQL database) - -keyword(import) include(MySQLdb) -keyword(import) include(cgi) -keyword(import) include(re) -keyword(import) include(sys) - -keyword(def) method(template)operator(()ident(filename)operator(,) ident(fillings)operator(\))operator(:) - ident(text) operator(=) predefined(open)operator(()ident(filename)operator(\))operator(.)ident(read)operator(()operator(\)) - keyword(def) method(repl)operator(()ident(matchobj)operator(\))operator(:) - keyword(if) ident(fillings)operator(.)ident(has_key)operator(()ident(matchobj)operator(.)ident(group)operator(()integer(1)operator(\))operator(\))operator(:) - keyword(return) predefined(str)operator(()ident(fillings)operator([)ident(matchobj)operator(.)ident(group)operator(()integer(1)operator(\))operator(])operator(\)) - keyword(return) string<delimiter(")delimiter(")> - comment(# replace quoted words with value from fillings dictionary) - ident(text) operator(=) ident(re)operator(.)ident(sub)operator(()string<delimiter(")content(%%(.+?\)%%)delimiter(")>operator(,) ident(repl)operator(,) ident(text)operator(\)) - keyword(return) ident(text) - -ident(fields) operator(=) ident(cgi)operator(.)ident(FieldStorage)operator(()operator(\)) -keyword(if) keyword(not) ident(fields)operator(.)ident(has_key)operator(()string<delimiter(")content(user)delimiter(")>operator(\))operator(:) - keyword(print) string<delimiter(")content(Content-Type: text/plain)char(\\n)delimiter(")> - keyword(print) string<delimiter(")content(No username)delimiter(")> - ident(sys)operator(.)ident(exit)operator(()integer(1)operator(\)) - -keyword(def) method(get_userdata)operator(()ident(username)operator(\))operator(:) - ident(db) operator(=) ident(MySQLdb)operator(.)ident(connect)operator(()ident(passwd)operator(=)string<delimiter(")delimiter(")>operator(,)ident(db)operator(=)string<delimiter(")content(connections)delimiter(")>operator(,) ident(user)operator(=)string<delimiter(")content(bert)delimiter(")>operator(\)) - ident(db)operator(.)ident(query)operator(()string<delimiter(")content(select count(duration\) as count,)delimiter(")> - operator(+)string<delimiter(")content( sum(duration\) as total from logins)delimiter(")> - operator(+)string<delimiter(")content( where username='%s')delimiter(")> operator(%) ident(username)operator(\)) - ident(res) operator(=) ident(db)operator(.)ident(store_result)operator(()operator(\))operator(.)ident(fetch_row)operator(()ident(maxrows)operator(=)integer(1)operator(,)ident(how)operator(=)integer(1)operator(\)) - ident(res)operator([)integer(0)operator(])operator([)string<delimiter(")content(username)delimiter(")>operator(]) operator(=) ident(username) - ident(db)operator(.)ident(close)operator(()operator(\)) - keyword(return) ident(res)operator([)integer(0)operator(]) - -keyword(print) string<delimiter(")content(Content-Type: text/html)char(\\n)delimiter(")> - -keyword(print) ident(template)operator(()string<delimiter(")content(report.tpl)delimiter(")>operator(,) ident(get_userdata)operator(()ident(fields)operator([)string<delimiter(")content(user)delimiter(")>operator(])operator(.)ident(value)operator(\))operator(\)) - -comment(# @@INCOMPLETE@@) - -comment(# @@PLEAC@@_20.10) -comment(# @@INCOMPLETE@@) -comment(# @@INCOMPLETE@@) - -comment(# @@PLEAC@@_20.11) -comment(# @@INCOMPLETE@@) -comment(# @@INCOMPLETE@@) - -comment(# @@PLEAC@@_20.12) - -comment(# sample data, use ``LOGFILE = open(sys.argv[1]\)`` in real life) -ident(LOGFILE) operator(=) operator([) - string<delimiter(')content(127.0.0.1 - - [04/Sep/2005:20:50:31 +0200] "GET /bus HTTP/1.1" 301 303)char(\\n)delimiter(')>operator(,) - string<delimiter(')content(127.0.0.1 - - [04/Sep/2005:20:50:31 +0200] "GET /bus HTTP/1.1" 301 303 "-" "Opera/8.02 (X11; Linux i686; U; en\)")char(\\n)delimiter(')>operator(,) - string<delimiter(')content(192.168.0.1 - - [04/Sep/2005:20:50:36 +0200] "GET /bus/libjs/layersmenu-library.js HTTP/1.1" 200 6228)char(\\n)delimiter(')>operator(,) - string<delimiter(')content(192.168.0.1 - - [04/Sep/2005:20:50:36 +0200] "GET /bus/libjs/layersmenu-library.js HTTP/1.1" 200 6228 "http://localhost/bus/" "Opera/8.02 (X11; Linux i686; U; en\)")char(\\n)delimiter(')>operator(,) - operator(]) - -keyword(import) include(re) - -comment(# similar too perl version.) -ident(web_server_log_re) operator(=) ident(re)operator(.)ident(compile)operator(()string<modifier(r)delimiter(')content(^()content(\\S)content(+\) ()content(\\S)content(+\) ()content(\\S)content(+\) )content(\\[)content(([^:]+\):()content(\\d)content(+:)content(\\d)content(+:)content(\\d)content(+\) ([^)content(\\])content(]+\))content(\\])content( "()content(\\S)content(+\) (.*?\) ()content(\\S)content(+\)" ()content(\\S)content(+\) ()content(\\S)content(+\)$)delimiter(')>operator(\)) - -comment(# with group naming.) -ident(split_re) operator(=) ident(re)operator(.)ident(compile)operator(()string<modifier(r)delimiter(''')content((?x\) # allow nicer formatting (but requires escaping blanks\))content( -)content( ^(?P<client>)content(\\S)content(+\))content(\\s)content( -)content( (?P<identuser>)content(\\S)content(+\))content(\\s)content( -)content( (?P<authuser>)content(\\S)content(+\))content(\\s)content( -)content( )content(\\[)content( -)content( (?P<date>[^:]+\):)content( -)content( (?P<time>[)content(\\d)content(:]+\))content(\\s)content( -)content( (?P<tz>[^)content(\\])content(]+\))content( -)content( )content(\\])content(\\s)content( -)content( ")content( -)content( (?P<method>)content(\\S)content(+\))content(\\s)content( -)content( (?P<url>.*?\))content(\\s)content( -)content( (?P<protocol>)content(\\S)content(+\))content( -)content( ")content(\\s)content( -)content( (?P<status>)content(\\S)content(+\))content(\\s)content( -)content( (?P<bytes>)content(\\S)content(+\))content( -)content( (?:)content( -)content( )content(\\s)content( -)content( ")content( -)content( (?P<referrer>[^"]+\))content( -)content( ")content(\\s)content( -)content( ")content( -)content( (?P<agent>[^"]+\))content( -)content( ")content( -)content( \)?)delimiter(''')>operator(\)) -keyword(for) ident(line) keyword(in) ident(LOGFILE)operator(:) - ident(f) operator(=) ident(split_re)operator(.)ident(match)operator(()ident(line)operator(\)) - keyword(if) ident(f)operator(:) - keyword(print) string<delimiter(")content(agent = %s)delimiter(")> operator(%) ident(f)operator(.)ident(groupdict)operator(()operator(\))operator([)string<delimiter(')content(agent)delimiter(')>operator(]) - -comment(# @@PLEAC@@_20.13) -comment(# @@INCOMPLETE@@) -comment(# @@INCOMPLETE@@) - -comment(# @@PLEAC@@_20.14) -comment(# @@INCOMPLETE@@) -comment(# @@INCOMPLETE@@) - |