[Python-checkins] r86095 - in python/branches/py3k: Demo/turtle Doc/library/turtle.rst Lib/test/test_dict.py Lib/turtledemo Lib/turtledemo/__init__.py Lib/turtledemo/bytedesign.py Lib/turtledemo/chaos.py Lib/turtledemo/clock.py Lib/turtledemo/colormixer.py Lib/turtledemo/forest.py Lib/turtledemo/fractalcurves.py Lib/turtledemo/minimal_hanoi.py Lib/turtledemo/nim.py Lib/turtledemo/paint.py Lib/turtledemo/peace.py Lib/turtledemo/penrose.py Lib/turtledemo/planet_and_moon.py Lib/turtledemo/round_dance.py Lib/turtledemo/tdemo_I_dontlike_tiltdemo.py Lib/turtledemo/tdemo_bytedesign.py Lib/turtledemo/tdemo_chaos.py Lib/turtledemo/tdemo_clock.py Lib/turtledemo/tdemo_colormixer.py Lib/turtledemo/tdemo_forest.py Lib/turtledemo/tdemo_fractalcurves.py Lib/turtledemo/tdemo_lindenmayer_indian.py Lib/turtledemo/tdemo_minimal_hanoi.py Lib/turtledemo/tdemo_nim.py Lib/turtledemo/tdemo_paint.py Lib/turtledemo/tdemo_peace.py Lib/turtledemo/tdemo_penrose.py Lib/turtledemo/tdemo_planet_and_moon.py Lib/turtledemo/tdemo_round_dance.py Lib/turtledemo/tdemo_tree.py Lib/turtledemo/tdemo_wikipedia.py Lib/turtledemo/tdemo_yinyang.py Lib/turtledemo/tree.py Lib/turtledemo/turtleDemo.py Lib/turtledemo/turtledemo_two_canvases.py Lib/turtledemo/two_canvases.py Lib/turtledemo/wikipedia.py Lib/turtledemo/yinyang.py Makefile.pre.in Misc/NEWS

alexander.belopolsky python-checkins at python.org
Mon Nov 1 18:39:37 CET 2010


Author: alexander.belopolsky
Date: Mon Nov  1 18:39:37 2010
New Revision: 86095

Log:
Issue #10199: Moved Demo/turtle under Lib/

Added:
   python/branches/py3k/Lib/turtledemo/
      - copied from r85848, /python/branches/py3k/Demo/turtle/
   python/branches/py3k/Lib/turtledemo/__init__.py
   python/branches/py3k/Lib/turtledemo/bytedesign.py
      - copied unchanged from r85848, /python/branches/py3k/Demo/turtle/tdemo_bytedesign.py
   python/branches/py3k/Lib/turtledemo/chaos.py
      - copied unchanged from r85848, /python/branches/py3k/Demo/turtle/tdemo_chaos.py
   python/branches/py3k/Lib/turtledemo/clock.py
      - copied unchanged from r85848, /python/branches/py3k/Demo/turtle/tdemo_clock.py
   python/branches/py3k/Lib/turtledemo/colormixer.py
      - copied unchanged from r85848, /python/branches/py3k/Demo/turtle/tdemo_colormixer.py
   python/branches/py3k/Lib/turtledemo/forest.py
      - copied unchanged from r85848, /python/branches/py3k/Demo/turtle/tdemo_forest.py
   python/branches/py3k/Lib/turtledemo/fractalcurves.py
      - copied unchanged from r85848, /python/branches/py3k/Demo/turtle/tdemo_fractalcurves.py
   python/branches/py3k/Lib/turtledemo/minimal_hanoi.py
      - copied unchanged from r85848, /python/branches/py3k/Demo/turtle/tdemo_minimal_hanoi.py
   python/branches/py3k/Lib/turtledemo/nim.py
      - copied unchanged from r85848, /python/branches/py3k/Demo/turtle/tdemo_nim.py
   python/branches/py3k/Lib/turtledemo/paint.py
      - copied unchanged from r85848, /python/branches/py3k/Demo/turtle/tdemo_paint.py
   python/branches/py3k/Lib/turtledemo/peace.py
      - copied unchanged from r85848, /python/branches/py3k/Demo/turtle/tdemo_peace.py
   python/branches/py3k/Lib/turtledemo/penrose.py
      - copied unchanged from r85848, /python/branches/py3k/Demo/turtle/tdemo_penrose.py
   python/branches/py3k/Lib/turtledemo/planet_and_moon.py
      - copied unchanged from r85848, /python/branches/py3k/Demo/turtle/tdemo_planet_and_moon.py
   python/branches/py3k/Lib/turtledemo/round_dance.py
      - copied unchanged from r85848, /python/branches/py3k/Demo/turtle/tdemo_round_dance.py
   python/branches/py3k/Lib/turtledemo/tree.py
      - copied unchanged from r85848, /python/branches/py3k/Demo/turtle/tdemo_tree.py
   python/branches/py3k/Lib/turtledemo/two_canvases.py
      - copied, changed from r85848, /python/branches/py3k/Demo/turtle/turtledemo_two_canvases.py
   python/branches/py3k/Lib/turtledemo/wikipedia.py
      - copied unchanged from r85848, /python/branches/py3k/Demo/turtle/tdemo_wikipedia.py
   python/branches/py3k/Lib/turtledemo/yinyang.py
      - copied unchanged from r85848, /python/branches/py3k/Demo/turtle/tdemo_yinyang.py
Removed:
   python/branches/py3k/Demo/turtle/
   python/branches/py3k/Lib/turtledemo/tdemo_I_dontlike_tiltdemo.py
   python/branches/py3k/Lib/turtledemo/tdemo_bytedesign.py
   python/branches/py3k/Lib/turtledemo/tdemo_chaos.py
   python/branches/py3k/Lib/turtledemo/tdemo_clock.py
   python/branches/py3k/Lib/turtledemo/tdemo_colormixer.py
   python/branches/py3k/Lib/turtledemo/tdemo_forest.py
   python/branches/py3k/Lib/turtledemo/tdemo_fractalcurves.py
   python/branches/py3k/Lib/turtledemo/tdemo_lindenmayer_indian.py
   python/branches/py3k/Lib/turtledemo/tdemo_minimal_hanoi.py
   python/branches/py3k/Lib/turtledemo/tdemo_nim.py
   python/branches/py3k/Lib/turtledemo/tdemo_paint.py
   python/branches/py3k/Lib/turtledemo/tdemo_peace.py
   python/branches/py3k/Lib/turtledemo/tdemo_penrose.py
   python/branches/py3k/Lib/turtledemo/tdemo_planet_and_moon.py
   python/branches/py3k/Lib/turtledemo/tdemo_round_dance.py
   python/branches/py3k/Lib/turtledemo/tdemo_tree.py
   python/branches/py3k/Lib/turtledemo/tdemo_wikipedia.py
   python/branches/py3k/Lib/turtledemo/tdemo_yinyang.py
   python/branches/py3k/Lib/turtledemo/turtleDemo.py
   python/branches/py3k/Lib/turtledemo/turtledemo_two_canvases.py
Modified:
   python/branches/py3k/Doc/library/turtle.rst
   python/branches/py3k/Lib/test/test_dict.py
   python/branches/py3k/Makefile.pre.in
   python/branches/py3k/Misc/NEWS

Modified: python/branches/py3k/Doc/library/turtle.rst
==============================================================================
--- python/branches/py3k/Doc/library/turtle.rst	(original)
+++ python/branches/py3k/Doc/library/turtle.rst	Mon Nov  1 18:39:37 2010
@@ -2266,29 +2266,36 @@
 Demo scripts
 ============
 
-There is a set of demo scripts in the turtledemo directory located in the
-:file:`Demo/turtle` directory in the source distribution.
+There is a set of demo scripts in the :mod:`turtledemo` package.  These
+scripts can be run and viewed using the supplied demo viewer as follows::
 
-It contains:
+   python -m turtledemo
+
+Alternatively, you can run the demo scripts individually.  For example,
+
+::
+   python -m turtledemo.bytedesign
+
+The :mod:`turtledemo` package directory contains:
 
 - a set of 15 demo scripts demonstrating different features of the new module
-  :mod:`turtle`
-- a demo viewer :file:`turtleDemo.py` which can be used to view the sourcecode
+  :mod:`turtle`;
+- a demo viewer :file:`__main__.py` which can be used to view the sourcecode
   of the scripts and run them at the same time. 14 of the examples can be
   accessed via the Examples menu; all of them can also be run standalone.
-- The example :file:`turtledemo_two_canvases.py` demonstrates the simultaneous
+- The example :mod:`turtledemo.two_canvases` demonstrates the simultaneous
   use of two canvases with the turtle module.  Therefore it only can be run
   standalone.
-- There is a :file:`turtle.cfg` file in this directory, which also serves as an
+- There is a :file:`turtle.cfg` file in this directory, which serves as an
   example for how to write and use such files.
 
-The demoscripts are:
+The demo scripts are:
 
 +----------------+------------------------------+-----------------------+
 | Name           | Description                  | Features              |
 +----------------+------------------------------+-----------------------+
 | bytedesign     | complex classical            | :func:`tracer`, delay,|
-|                | turtlegraphics pattern       | :func:`update`        |
+|                | turtle graphics pattern      | :func:`update`        |
 +----------------+------------------------------+-----------------------+
 | chaos          | graphs verhust dynamics,     | world coordinates     |
 |                | proves that you must not     |                       |

Modified: python/branches/py3k/Lib/test/test_dict.py
==============================================================================
--- python/branches/py3k/Lib/test/test_dict.py	(original)
+++ python/branches/py3k/Lib/test/test_dict.py	Mon Nov  1 18:39:37 2010
@@ -329,11 +329,19 @@
         k, v = 'abc', 'def'
         d[k] = v
         self.assertRaises(KeyError, d.pop, 'ghi')
+        try:
+            d.pop('ghi')
+        except KeyError as e:
+            self.assertEquals(e.args[0], 'ghi')
 
         self.assertEqual(d.pop(k), v)
         self.assertEqual(len(d), 0)
 
         self.assertRaises(KeyError, d.pop, k)
+        try:
+            d.pop(k)
+        except KeyError as e:
+            self.assertEquals(e.args[0], k)
 
         self.assertEqual(d.pop(k, v), v)
         d[k] = v

Added: python/branches/py3k/Lib/turtledemo/__init__.py
==============================================================================

Deleted: /python/branches/py3k/Demo/turtle/tdemo_I_dontlike_tiltdemo.py
==============================================================================
--- /python/branches/py3k/Demo/turtle/tdemo_I_dontlike_tiltdemo.py	Mon Nov  1 18:39:37 2010
+++ (empty file)
@@ -1,58 +0,0 @@
-#!/usr/bin/env python3
-"""       turtle-example-suite:
-
-     tdemo-I_dont_like_tiltdemo.py
-
-Demostrates
-  (a) use of a tilted ellipse as
-      turtle shape
-  (b) stamping that shape
-
-We can remove it, if you don't like it.
-      Without using reset() ;-)
- ---------------------------------------
-"""
-from turtle import *
-import time
-
-def main():
-    reset()
-    shape("circle")
-    resizemode("user")
-
-    pu(); bk(24*18/6.283); rt(90); pd()
-    tilt(45)
-
-    pu()
-
-    turtlesize(16,10,5)
-    color("red", "violet")
-    for i in range(18):
-        fd(24)
-        lt(20)
-        stamp()
-    color("red", "")
-    for i in range(18):
-        fd(24)
-        lt(20)
-        stamp()
-
-    tilt(-15)
-    turtlesize(3, 1, 4)
-    color("blue", "yellow")
-    for i in range(17):
-        fd(24)
-        lt(20)
-        if i%2 == 0:
-            stamp()
-    time.sleep(1)
-    while undobufferentries():
-        undo()
-    ht()
-    write("OK, OVER!", align="center", font=("Courier", 18, "bold"))
-    return "Done!"
-
-if __name__=="__main__":
-    msg = main()
-    print(msg)
-#    mainloop()

Deleted: /python/branches/py3k/Demo/turtle/tdemo_bytedesign.py
==============================================================================
--- /python/branches/py3k/Demo/turtle/tdemo_bytedesign.py	Mon Nov  1 18:39:37 2010
+++ (empty file)
@@ -1,162 +0,0 @@
-#!/usr/bin/env python3
-"""      turtle-example-suite:
-
-        tdemo_bytedesign.py
-
-An example adapted from the example-suite
-of PythonCard's turtle graphcis.
-
-It's based on an article in BYTE magazine
-Problem Solving with Logo: Using Turtle
-Graphics to Redraw a Design
-November 1982, p. 118 - 134
-
--------------------------------------------
-
-Due to the statement
-
-t.delay(0)
-
-in line 152, which sets the animation delay
-to 0, this animation runs in "line per line"
-mode as fast as possible.
-"""
-
-import math
-from turtle import Turtle, mainloop
-from time import clock
-
-# wrapper for any additional drawing routines
-# that need to know about each other
-class Designer(Turtle):
-
-    def design(self, homePos, scale):
-        self.up()
-        for i in range(5):
-            self.forward(64.65 * scale)
-            self.down()
-            self.wheel(self.position(), scale)
-            self.up()
-            self.backward(64.65 * scale)
-            self.right(72)
-        self.up()
-        self.goto(homePos)
-        self.right(36)
-        self.forward(24.5 * scale)
-        self.right(198)
-        self.down()
-        self.centerpiece(46 * scale, 143.4, scale)
-        self.getscreen().tracer(True)
-
-    def wheel(self, initpos, scale):
-        self.right(54)
-        for i in range(4):
-            self.pentpiece(initpos, scale)
-        self.down()
-        self.left(36)
-        for i in range(5):
-            self.tripiece(initpos, scale)
-        self.left(36)
-        for i in range(5):
-            self.down()
-            self.right(72)
-            self.forward(28 * scale)
-            self.up()
-            self.backward(28 * scale)
-        self.left(54)
-        self.getscreen().update()
-
-    def tripiece(self, initpos, scale):
-        oldh = self.heading()
-        self.down()
-        self.backward(2.5 * scale)
-        self.tripolyr(31.5 * scale, scale)
-        self.up()
-        self.goto(initpos)
-        self.setheading(oldh)
-        self.down()
-        self.backward(2.5 * scale)
-        self.tripolyl(31.5 * scale, scale)
-        self.up()
-        self.goto(initpos)
-        self.setheading(oldh)
-        self.left(72)
-        self.getscreen().update()
-
-    def pentpiece(self, initpos, scale):
-        oldh = self.heading()
-        self.up()
-        self.forward(29 * scale)
-        self.down()
-        for i in range(5):
-            self.forward(18 * scale)
-            self.right(72)
-        self.pentr(18 * scale, 75, scale)
-        self.up()
-        self.goto(initpos)
-        self.setheading(oldh)
-        self.forward(29 * scale)
-        self.down()
-        for i in range(5):
-            self.forward(18 * scale)
-            self.right(72)
-        self.pentl(18 * scale, 75, scale)
-        self.up()
-        self.goto(initpos)
-        self.setheading(oldh)
-        self.left(72)
-        self.getscreen().update()
-
-    def pentl(self, side, ang, scale):
-        if side < (2 * scale): return
-        self.forward(side)
-        self.left(ang)
-        self.pentl(side - (.38 * scale), ang, scale)
-
-    def pentr(self, side, ang, scale):
-        if side < (2 * scale): return
-        self.forward(side)
-        self.right(ang)
-        self.pentr(side - (.38 * scale), ang, scale)
-
-    def tripolyr(self, side, scale):
-        if side < (4 * scale): return
-        self.forward(side)
-        self.right(111)
-        self.forward(side / 1.78)
-        self.right(111)
-        self.forward(side / 1.3)
-        self.right(146)
-        self.tripolyr(side * .75, scale)
-
-    def tripolyl(self, side, scale):
-        if side < (4 * scale): return
-        self.forward(side)
-        self.left(111)
-        self.forward(side / 1.78)
-        self.left(111)
-        self.forward(side / 1.3)
-        self.left(146)
-        self.tripolyl(side * .75, scale)
-
-    def centerpiece(self, s, a, scale):
-        self.forward(s); self.left(a)
-        if s < (7.5 * scale):
-            return
-        self.centerpiece(s - (1.2 * scale), a, scale)
-
-def main():
-    t = Designer()
-    t.speed(0)
-    t.hideturtle()
-    t.getscreen().delay(0)
-    t.getscreen().tracer(0)
-    at = clock()
-    t.design(t.position(), 2)
-    et = clock()
-    return "runtime: %.2f sec." % (et-at)
-
-if __name__ == '__main__':
-    msg = main()
-    print(msg)
-    mainloop()

Deleted: /python/branches/py3k/Demo/turtle/tdemo_chaos.py
==============================================================================
--- /python/branches/py3k/Demo/turtle/tdemo_chaos.py	Mon Nov  1 18:39:37 2010
+++ (empty file)
@@ -1,59 +0,0 @@
-# File: tdemo_chaos.py
-# Author: Gregor Lingl
-# Date: 2009-06-24
-
-# A demonstration of chaos
-
-from turtle import *
-
-N = 80
-
-def f(x):
-    return 3.9*x*(1-x)
-
-def g(x):
-    return 3.9*(x-x**2)
-
-def h(x):
-    return 3.9*x-3.9*x*x
-
-def jumpto(x, y):
-    penup(); goto(x,y)
-
-def line(x1, y1, x2, y2):
-    jumpto(x1, y1)
-    pendown()
-    goto(x2, y2)
-
-def coosys():
-    line(-1, 0, N+1, 0)
-    line(0, -0.1, 0, 1.1)
-
-def plot(fun, start, colour):
-    pencolor(colour)
-    x = start
-    jumpto(0, x)
-    pendown()
-    dot(5)
-    for i in range(N):
-        x=fun(x)
-        goto(i+1,x)
-        dot(5)
-
-def main():
-    reset()
-    setworldcoordinates(-1.0,-0.1, N+1, 1.1)
-    speed(0)
-    hideturtle()
-    coosys()
-    plot(f, 0.35, "blue")
-    plot(g, 0.35, "green")
-    plot(h, 0.35, "red")
-    # Now zoom in:
-    for s in range(100):
-        setworldcoordinates(0.5*s,-0.1, N+1, 1.1)
-    return "Done!"
-
-if __name__ == "__main__":
-    main()
-    mainloop()

Deleted: /python/branches/py3k/Demo/turtle/tdemo_clock.py
==============================================================================
--- /python/branches/py3k/Demo/turtle/tdemo_clock.py	Mon Nov  1 18:39:37 2010
+++ (empty file)
@@ -1,132 +0,0 @@
-#!/usr/bin/env python3
-# -*- coding: cp1252 -*-
-"""       turtle-example-suite:
-
-             tdemo_clock.py
-
-Enhanced clock-program, showing date
-and time
-  ------------------------------------
-   Press STOP to exit the program!
-  ------------------------------------
-"""
-from turtle import *
-from datetime import datetime
-
-mode("logo")
-
-def jump(distanz, winkel=0):
-    penup()
-    right(winkel)
-    forward(distanz)
-    left(winkel)
-    pendown()
-
-def hand(laenge, spitze):
-    fd(laenge*1.15)
-    rt(90)
-    fd(spitze/2.0)
-    lt(120)
-    fd(spitze)
-    lt(120)
-    fd(spitze)
-    lt(120)
-    fd(spitze/2.0)
-
-def make_hand_shape(name, laenge, spitze):
-    reset()
-    jump(-laenge*0.15)
-    begin_poly()
-    hand(laenge, spitze)
-    end_poly()
-    hand_form = get_poly()
-    register_shape(name, hand_form)
-
-
-def clockface(radius):
-    reset()
-    pensize(7)
-    for i in range(60):
-        jump(radius)
-        if i % 5 == 0:
-            fd(25)
-            jump(-radius-25)
-        else:
-            dot(3)
-            jump(-radius)
-        rt(6)
-
-def setup():
-    global second_hand, minute_hand, hour_hand, writer
-    mode("logo")
-    make_hand_shape("second_hand", 125, 25)
-    make_hand_shape("minute_hand",  130, 25)
-    make_hand_shape("hour_hand", 90, 25)
-    clockface(160)
-    second_hand = Turtle()
-    second_hand.shape("second_hand")
-    second_hand.color("gray20", "gray80")
-    minute_hand = Turtle()
-    minute_hand.shape("minute_hand")
-    minute_hand.color("blue1", "red1")
-    hour_hand = Turtle()
-    hour_hand.shape("hour_hand")
-    hour_hand.color("blue3", "red3")
-    for hand in second_hand, minute_hand, hour_hand:
-        hand.resizemode("user")
-        hand.shapesize(1, 1, 3)
-        hand.speed(0)
-    ht()
-    writer = Turtle()
-    #writer.mode("logo")
-    writer.ht()
-    writer.pu()
-    writer.bk(85)
-
-
-def wochentag(t):
-    wochentag = ["Monday", "Tuesday", "Wednesday",
-        "Thursday", "Friday", "Saturday", "Sunday"]
-    return wochentag[t.weekday()]
-
-def datum(z):
-    monat = ["Jan.", "Feb.", "Mar.", "Apr.", "May", "June",
-             "July", "Aug.", "Sep.", "Oct.", "Nov.", "Dec."]
-    j = z.year
-    m = monat[z.month - 1]
-    t = z.day
-    return "%s %d %d" % (m, t, j)
-
-def tick():
-    t = datetime.today()
-    sekunde = t.second + t.microsecond*0.000001
-    minute = t.minute + sekunde/60.0
-    stunde = t.hour + minute/60.0
-    tracer(False)
-    writer.clear()
-    writer.home()
-    writer.forward(65)
-    writer.write(wochentag(t),
-                 align="center", font=("Courier", 14, "bold"))
-    writer.back(150)
-    writer.write(datum(t),
-                 align="center", font=("Courier", 14, "bold"))
-    writer.forward(85)
-    tracer(True)
-    second_hand.setheading(6*sekunde)
-    minute_hand.setheading(6*minute)
-    hour_hand.setheading(30*stunde)
-    tracer(True)
-    ontimer(tick, 100)
-
-def main():
-    tracer(False)
-    setup()
-    tracer(True)
-    tick()
-    return "EVENTLOOP"
-
-if __name__ == "__main__":
-    msg = main()
-    print(msg)
-    mainloop()

Deleted: /python/branches/py3k/Demo/turtle/tdemo_colormixer.py
==============================================================================
--- /python/branches/py3k/Demo/turtle/tdemo_colormixer.py	Mon Nov  1 18:39:37 2010
+++ (empty file)
@@ -1,60 +0,0 @@
-# colormixer
-
-from turtle import Screen, Turtle, mainloop
-import sys
-sys.setrecursionlimit(20000)   # overcomes, for now, an instability of Python 3.0
-
-class ColorTurtle(Turtle):
-
-    def __init__(self, x, y):
-        Turtle.__init__(self)
-        self.shape("turtle")
-        self.resizemode("user")
-        self.shapesize(3,3,5)
-        self.pensize(10)
-        self._color = [0,0,0]
-        self.x = x
-        self._color[x] = y
-        self.color(self._color)
-        self.speed(0)
-        self.left(90)
-        self.pu()
-        self.goto(x,0)
-        self.pd()
-        self.sety(1)
-        self.pu()
-        self.sety(y)
-        self.pencolor("gray25")
-        self.ondrag(self.shift)
-
-    def shift(self, x, y):
-        self.sety(max(0,min(y,1)))
-        self._color[self.x] = self.ycor()
-        self.fillcolor(self._color)
-        setbgcolor()
-
-def setbgcolor():
-    screen.bgcolor(red.ycor(), green.ycor(), blue.ycor())
-
-def main():
-    global screen, red, green, blue
-    screen = Screen()
-    screen.delay(0)
-    screen.setworldcoordinates(-1, -0.3, 3, 1.3)
-
-    red = ColorTurtle(0, .5)
-    green = ColorTurtle(1, .5)
-    blue = ColorTurtle(2, .5)
-    setbgcolor()
-
-    writer = Turtle()
-    writer.ht()
-    writer.pu()
-    writer.goto(1,1.15)
-    writer.write("DRAG!",align="center",font=("Arial",30,("bold","italic")))
-    return "EVENTLOOP"
-
-if __name__ == "__main__":
-    msg = main()
-    print(msg)
-    mainloop()

Deleted: /python/branches/py3k/Demo/turtle/tdemo_forest.py
==============================================================================
--- /python/branches/py3k/Demo/turtle/tdemo_forest.py	Mon Nov  1 18:39:37 2010
+++ (empty file)
@@ -1,109 +0,0 @@
-#!/usr/bin/env python3
-"""     turtlegraphics-example-suite:
-
-             tdemo_forest.py
-
-Displays a 'forest' of 3 'breadth-first-trees'
-similar to the one from example tree.
-For further remarks see xtx_tree.py
-
-This example is a 'breadth-first'-rewrite of
-a Logo program written by Erich Neuwirth. See:
-http://homepage.univie.ac.at/erich.neuwirth/
-"""
-from turtle import Turtle, colormode, tracer, mainloop
-from random import randrange
-from time import clock
-
-def symRandom(n):
-    return randrange(-n,n+1)
-
-def randomize( branchlist, angledist, sizedist ):
-    return [ (angle+symRandom(angledist),
-              sizefactor*1.01**symRandom(sizedist))
-                     for angle, sizefactor in branchlist ]
-
-def randomfd( t, distance, parts, angledist ):
-    for i in range(parts):
-        t.left(symRandom(angledist))
-        t.forward( (1.0 * distance)/parts )
-
-def tree(tlist, size, level, widthfactor, branchlists, angledist=10, sizedist=5):
-    # benutzt Liste von turtles und Liste von Zweiglisten,
-    # fuer jede turtle eine!
-    if level > 0:
-        lst = []
-        brs = []
-        for t, branchlist in list(zip(tlist,branchlists)):
-            t.pensize( size * widthfactor )
-            t.pencolor( 255 - (180 - 11 * level + symRandom(15)),
-                        180 - 11 * level + symRandom(15),
-                        0 )
-            t.pendown()
-            randomfd(t, size, level, angledist )
-            yield 1
-            for angle, sizefactor in branchlist:
-                t.left(angle)
-                lst.append(t.clone())
-                brs.append(randomize(branchlist, angledist, sizedist))
-                t.right(angle)
-        for x in tree(lst, size*sizefactor, level-1, widthfactor, brs,
-                      angledist, sizedist):
-            yield None
-
-
-def start(t,x,y):
-    colormode(255)
-    t.reset()
-    t.speed(0)
-    t.hideturtle()
-    t.left(90)
-    t.penup()
-    t.setpos(x,y)
-    t.pendown()
-
-def doit1(level, pen):
-    pen.hideturtle()
-    start(pen, 20, -208)
-    t = tree( [pen], 80, level, 0.1, [[ (45,0.69), (0,0.65), (-45,0.71) ]] )
-    return t
-
-def doit2(level, pen):
-    pen.hideturtle()
-    start(pen, -135, -130)
-    t = tree( [pen], 120, level, 0.1, [[ (45,0.69), (-45,0.71) ]] )
-    return t
-
-def doit3(level, pen):
-    pen.hideturtle()
-    start(pen, 190, -90)
-    t = tree( [pen], 100, level, 0.1, [[ (45,0.7), (0,0.72), (-45,0.65) ]] )
-    return t
-
-# Hier 3 Baumgeneratoren:
-def main():
-    p = Turtle()
-    p.ht()
-    tracer(75,0)
-    u = doit1(6, Turtle(undobuffersize=1))
-    s = doit2(7, Turtle(undobuffersize=1))
-    t = doit3(5, Turtle(undobuffersize=1))
-    a = clock()
-    while True:
-        done = 0
-        for b in u,s,t:
-            try:
-                b.__next__()
-            except:
-                done += 1
-        if done == 3:
-            break
-
-    tracer(1,10)
-    b = clock()
-    return "runtime: %.2f sec." % (b-a)
-
-if __name__ == '__main__':
-    msg = main()
-    print(msg)
-    mainloop()

Deleted: /python/branches/py3k/Demo/turtle/tdemo_fractalcurves.py
==============================================================================
--- /python/branches/py3k/Demo/turtle/tdemo_fractalcurves.py	Mon Nov  1 18:39:37 2010
+++ (empty file)
@@ -1,138 +0,0 @@
-#!/usr/bin/env python3
-"""      turtle-example-suite:
-
-        tdemo_fractalCurves.py
-
-This program draws two fractal-curve-designs:
-(1) A hilbert curve (in a box)
-(2) A combination of Koch-curves.
-
-The CurvesTurtle class and the fractal-curve-
-methods are taken from the PythonCard example
-scripts for turtle-graphics.
-"""
-from turtle import *
-from time import sleep, clock
-
-class CurvesTurtle(Pen):
-    # example derived from
-    # Turtle Geometry: The Computer as a Medium for Exploring Mathematics
-    # by Harold Abelson and Andrea diSessa
-    # p. 96-98
-    def hilbert(self, size, level, parity):
-        if level == 0:
-            return
-        # rotate and draw first subcurve with opposite parity to big curve
-        self.left(parity * 90)
-        self.hilbert(size, level - 1, -parity)
-        # interface to and draw second subcurve with same parity as big curve
-        self.forward(size)
-        self.right(parity * 90)
-        self.hilbert(size, level - 1, parity)
-        # third subcurve
-        self.forward(size)
-        self.hilbert(size, level - 1, parity)
-        # fourth subcurve
-        self.right(parity * 90)
-        self.forward(size)
-        self.hilbert(size, level - 1, -parity)
-        # a final turn is needed to make the turtle
-        # end up facing outward from the large square
-        self.left(parity * 90)
-
-    # Visual Modeling with Logo: A Structural Approach to Seeing
-    # by James Clayson
-    # Koch curve, after Helge von Koch who introduced this geometric figure in 1904
-    # p. 146
-    def fractalgon(self, n, rad, lev, dir):
-        import math
-
-        # if dir = 1 turn outward
-        # if dir = -1 turn inward
-        edge = 2 * rad * math.sin(math.pi / n)
-        self.pu()
-        self.fd(rad)
-        self.pd()
-        self.rt(180 - (90 * (n - 2) / n))
-        for i in range(n):
-            self.fractal(edge, lev, dir)
-            self.rt(360 / n)
-        self.lt(180 - (90 * (n - 2) / n))
-        self.pu()
-        self.bk(rad)
-        self.pd()
-
-    # p. 146
-    def fractal(self, dist, depth, dir):
-        if depth < 1:
-            self.fd(dist)
-            return
-        self.fractal(dist / 3, depth - 1, dir)
-        self.lt(60 * dir)
-        self.fractal(dist / 3, depth - 1, dir)
-        self.rt(120 * dir)
-        self.fractal(dist / 3, depth - 1, dir)
-        self.lt(60 * dir)
-        self.fractal(dist / 3, depth - 1, dir)
-
-def main():
-    ft = CurvesTurtle()
-
-    ft.reset()
-    ft.speed(0)
-    ft.ht()
-    ft.getscreen().tracer(1,0)
-    ft.pu()
-
-    size = 6
-    ft.setpos(-33*size, -32*size)
-    ft.pd()
-
-    ta=clock()
-    ft.fillcolor("red")
-    ft.begin_fill()
-    ft.fd(size)
-
-    ft.hilbert(size, 6, 1)
-
-    # frame
-    ft.fd(size)
-    for i in range(3):
-        ft.lt(90)
-        ft.fd(size*(64+i%2))
-    ft.pu()
-    for i in range(2):
-        ft.fd(size)
-        ft.rt(90)
-    ft.pd()
-    for i in range(4):
-        ft.fd(size*(66+i%2))
-        ft.rt(90)
-    ft.end_fill()
-    tb=clock()
-    res =  "Hilbert: %.2fsec. " % (tb-ta)
-
-    sleep(3)
-
-    ft.reset()
-    ft.speed(0)
-    ft.ht()
-    ft.getscreen().tracer(1,0)
-
-    ta=clock()
-    ft.color("black", "blue")
-    ft.begin_fill()
-    ft.fractalgon(3, 250, 4, 1)
-    ft.end_fill()
-    ft.begin_fill()
-    ft.color("red")
-    ft.fractalgon(3, 200, 4, -1)
-    ft.end_fill()
-    tb=clock()
-    res +=  "Koch: %.2fsec." % (tb-ta)
-    return res
-
-if __name__  == '__main__':
-    msg = main()
-    print(msg)
-    mainloop()

Deleted: /python/branches/py3k/Demo/turtle/tdemo_lindenmayer_indian.py
==============================================================================
--- /python/branches/py3k/Demo/turtle/tdemo_lindenmayer_indian.py	Mon Nov  1 18:39:37 2010
+++ (empty file)
@@ -1,119 +0,0 @@
-#!/usr/bin/env python3
-"""       turtle-example-suite:
-
-        xtx_lindenmayer_indian.py
-
-Each morning women in Tamil Nadu, in southern
-India, place designs, created by using rice
-flour and known as kolam on the thresholds of
-their homes.
-
-These can be described by Lindenmayer systems,
-which can easily be implemented with turtle
-graphics and Python.
-
-Two examples are shown here:
-(1) the snake kolam
-(2) anklets of Krishna
-
-Taken from Marcia Ascher: Mathematics
-Elsewhere, An Exploration of Ideas Across
-Cultures
-
-"""
-################################
-# Mini Lindenmayer tool
-###############################
-
-from turtle import *
-
-def replace( seq, replacementRules, n ):
-    for i in range(n):
-        newseq = ""
-        for element in seq:
-            newseq = newseq + replacementRules.get(element,element)
-        seq = newseq
-    return seq
-
-def draw( commands, rules ):
-    for b in commands:
-        try:
-            rules[b]()
-        except TypeError:
-            try:
-                draw(rules[b], rules)
-            except:
-                pass
-
-
-def main():
-    ################################
-    # Example 1: Snake kolam
-    ################################
-
-
-    def r():
-        right(45)
-
-    def l():
-        left(45)
-
-    def f():
-        forward(7.5)
-
-    snake_rules = {"-":r, "+":l, "f":f, "b":"f+f+f--f--f+f+f"}
-    snake_replacementRules = {"b": "b+f+b--f--b+f+b"}
-    snake_start = "b--f--b--f"
-
-    drawing = replace(snake_start, snake_replacementRules, 3)
-
-    reset()
-    speed(3)
-    tracer(1,0)
-    ht()
-    up()
-    backward(195)
-    down()
-    draw(drawing, snake_rules)
-
-    from time import sleep
-    sleep(3)
-
-    ################################
-    # Example 2: Anklets of Krishna
-    ################################
-
-    def A():
-        color("red")
-        circle(10,90)
-
-    def B():
-        from math import sqrt
-        color("black")
-        l = 5/sqrt(2)
-        forward(l)
-        circle(l, 270)
-        forward(l)
-
-    def F():
-        color("green")
-        forward(10)
-
-    krishna_rules = {"a":A, "b":B, "f":F}
-    krishna_replacementRules = {"a" : "afbfa", "b" : "afbfbfbfa" }
-    krishna_start = "fbfbfbfb"
-
-    reset()
-    speed(0)
-    tracer(3,0)
-    ht()
-    left(45)
-    drawing = replace(krishna_start, krishna_replacementRules, 3)
-    draw(drawing, krishna_rules)
-    tracer(1)
-    return "Done!"
-
-if __name__=='__main__':
-    msg = main()
-    print(msg)
-    mainloop()

Deleted: /python/branches/py3k/Demo/turtle/tdemo_minimal_hanoi.py
==============================================================================
--- /python/branches/py3k/Demo/turtle/tdemo_minimal_hanoi.py	Mon Nov  1 18:39:37 2010
+++ (empty file)
@@ -1,76 +0,0 @@
-#!/usr/bin/env python3
-"""       turtle-example-suite:
-
-         tdemo_minimal_hanoi.py
-
-A minimal 'Towers of Hanoi' animation:
-A tower of 6 discs is transferred from the
-left to the right peg.
-
-An imho quite elegant and concise
-implementation using a tower class, which
-is derived from the built-in type list.
-
-Discs are turtles with shape "square", but
-stretched to rectangles by shapesize()
- ---------------------------------------
-       To exit press STOP button
- ---------------------------------------
-"""
-from turtle import *
-
-class Disc(Turtle):
-    def __init__(self, n):
-        Turtle.__init__(self, shape="square", visible=False)
-        self.pu()
-        self.shapesize(1.5, n*1.5, 2) # square-->rectangle
-        self.fillcolor(n/6., 0, 1-n/6.)
-        self.st()
-
-class Tower(list):
-    "Hanoi tower, a subclass of built-in type list"
-    def __init__(self, x):
-        "create an empty tower. x is x-position of peg"
-        self.x = x
-    def push(self, d):
-        d.setx(self.x)
-        d.sety(-150+34*len(self))
-        self.append(d)
-    def pop(self):
-        d = list.pop(self)
-        d.sety(150)
-        return d
-
-def hanoi(n, from_, with_, to_):
-    if n > 0:
-        hanoi(n-1, from_, to_, with_)
-        to_.push(from_.pop())
-        hanoi(n-1, with_, from_, to_)
-
-def play():
-    onkey(None,"space")
-    clear()
-    hanoi(6, t1, t2, t3)
-    write("press STOP button to exit",
-          align="center", font=("Courier", 16, "bold"))
-
-def main():
-    global t1, t2, t3
-    ht(); penup(); goto(0, -225)   # writer turtle
-    t1 = Tower(-250)
-    t2 = Tower(0)
-    t3 = Tower(250)
-    # make tower of 6 discs
-    for i in range(6,0,-1):
-        t1.push(Disc(i))
-    # prepare spartanic user interface ;-)
-    write("press spacebar to start game",
-          align="center", font=("Courier", 16, "bold"))
-    onkey(play, "space")
-    listen()
-    return "EVENTLOOP"
-
-if __name__=="__main__":
-    msg = main()
-    print(msg)
-    mainloop()

Deleted: /python/branches/py3k/Demo/turtle/tdemo_nim.py
==============================================================================
--- /python/branches/py3k/Demo/turtle/tdemo_nim.py	Mon Nov  1 18:39:37 2010
+++ (empty file)
@@ -1,226 +0,0 @@
-"""      turtle-example-suite:
-
-            tdemo_nim.py
-
-Play nim against the computer. The player
-who takes the last stick is the winner.
-
-Implements the model-view-controller
-design pattern.
-"""
-
-
-import turtle
-import random
-import time
-
-SCREENWIDTH = 640
-SCREENHEIGHT = 480
-
-MINSTICKS = 7
-MAXSTICKS = 31
-
-HUNIT = SCREENHEIGHT // 12
-WUNIT = SCREENWIDTH // ((MAXSTICKS // 5) * 11 + (MAXSTICKS % 5) * 2)
-
-SCOLOR = (63, 63, 31)
-HCOLOR = (255, 204, 204)
-COLOR = (204, 204, 255)
-
-def randomrow():
-    return random.randint(MINSTICKS, MAXSTICKS)
-
-def computerzug(state):
-    xored = state[0] ^ state[1] ^ state[2]
-    if xored == 0:
-        return randommove(state)
-    for z in range(3):
-        s = state[z] ^ xored
-        if s <= state[z]:
-            move = (z, s)
-            return move
-
-def randommove(state):
-    m = max(state)
-    while True:
-        z = random.randint(0,2)
-        if state[z] > (m > 1):
-            break
-    rand = random.randint(m > 1, state[z]-1)
-    return z, rand
-
-
-class NimModel(object):
-    def __init__(self, game):
-        self.game = game
-
-    def setup(self):
-        if self.game.state not in [Nim.CREATED, Nim.OVER]:
-            return
-        self.sticks = [randomrow(), randomrow(), randomrow()]
-        self.player = 0
-        self.winner = None
-        self.game.view.setup()
-        self.game.state = Nim.RUNNING
-
-    def move(self, row, col):
-        maxspalte = self.sticks[row]
-        self.sticks[row] = col
-        self.game.view.notify_move(row, col, maxspalte, self.player)
-        if self.game_over():
-            self.game.state = Nim.OVER
-            self.winner = self.player
-            self.game.view.notify_over()
-        elif self.player == 0:
-            self.player = 1
-            row, col = computerzug(self.sticks)
-            self.move(row, col)
-            self.player = 0
-
-    def game_over(self):
-        return self.sticks == [0, 0, 0]
-
-    def notify_move(self, row, col):
-        if self.sticks[row] <= col:
-            return
-        self.move(row, col)
-
-
-class Stick(turtle.Turtle):
-    def __init__(self, row, col, game):
-        turtle.Turtle.__init__(self, visible=False)
-        self.row = row
-        self.col = col
-        self.game = game
-        x, y = self.coords(row, col)
-        self.shape("square")
-        self.shapesize(HUNIT/10.0, WUNIT/20.0)
-        self.speed(0)
-        self.pu()
-        self.goto(x,y)
-        self.color("white")
-        self.showturtle()
-
-    def coords(self, row, col):
-        packet, remainder = divmod(col, 5)
-        x = (3 + 11 * packet + 2 * remainder) * WUNIT
-        y = (2 + 3 * row) * HUNIT
-        return x - SCREENWIDTH // 2 + WUNIT // 2, SCREENHEIGHT // 2 - y - HUNIT // 2
-
-    def makemove(self, x, y):
-        if self.game.state != Nim.RUNNING:
-            return
-        self.game.controller.notify_move(self.row, self.col)
-
-
-class NimView(object):
-    def __init__(self, game):
-        self.game = game
-        self.screen = game.screen
-        self.model = game.model
-        self.screen.colormode(255)
-        self.screen.tracer(False)
-        self.screen.bgcolor((240, 240, 255))
-        self.writer = turtle.Turtle(visible=False)
-        self.writer.pu()
-        self.writer.speed(0)
-        self.sticks = {}
-        for row in range(3):
-            for col in range(MAXSTICKS):
-                self.sticks[(row, col)] = Stick(row, col, game)
-        self.display("... a moment please ...")
-        self.screen.tracer(True)
-
-    def display(self, msg1, msg2=None):
-        self.screen.tracer(False)
-        self.writer.clear()
-        if msg2 is not None:
-            self.writer.goto(0, - SCREENHEIGHT // 2 + 48)
-            self.writer.pencolor("red")
-            self.writer.write(msg2, align="center", font=("Courier",18,"bold"))
-        self.writer.goto(0, - SCREENHEIGHT // 2 + 20)
-        self.writer.pencolor("black")
-        self.writer.write(msg1, align="center", font=("Courier",14,"bold"))
-        self.screen.tracer(True)
-
-
-    def setup(self):
-        self.screen.tracer(False)
-        for row in range(3):
-            for col in range(self.model.sticks[row]):
-                self.sticks[(row, col)].color(SCOLOR)
-        for row in range(3):
-            for col in range(self.model.sticks[row], MAXSTICKS):
-                self.sticks[(row, col)].color("white")
-        self.display("Your turn! Click leftmost stick to remove.")
-        self.screen.tracer(True)
-
-    def notify_move(self, row, col, maxspalte, player):
-        if player == 0:
-            farbe = HCOLOR
-            for s in range(col, maxspalte):
-                self.sticks[(row, s)].color(farbe)
-        else:
-            self.display(" ... thinking ...         ")
-            time.sleep(0.5)
-            self.display(" ... thinking ... aaah ...")
-            farbe = COLOR
-            for s in range(maxspalte-1, col-1, -1):
-                time.sleep(0.2)
-                self.sticks[(row, s)].color(farbe)
-            self.display("Your turn! Click leftmost stick to remove.")
-
-    def notify_over(self):
-        if self.game.model.winner == 0:
-            msg2 = "Congrats. You're the winner!!!"
-        else:
-            msg2 = "Sorry, the computer is the winner."
-        self.display("To play again press space bar. To leave press ESC.", msg2)
-
-    def clear(self):
-        if self.game.state == Nim.OVER:
-            self.screen.clear()
-
-class NimController(object):
-
-    def __init__(self, game):
-        self.game = game
-        self.sticks = game.view.sticks
-        self.BUSY = False
-        for stick in self.sticks.values():
-            stick.onclick(stick.makemove)
-        self.game.screen.onkey(self.game.model.setup, "space")
-        self.game.screen.onkey(self.game.view.clear, "Escape")
-        self.game.view.display("Press space bar to start game")
-        self.game.screen.listen()
-
-    def notify_move(self, row, col):
-        if self.BUSY:
-            return
-        self.BUSY = True
-        self.game.model.notify_move(row, col)
-        self.BUSY = False
-
-class Nim(object):
-    CREATED = 0
-    RUNNING = 1
-    OVER = 2
-    def __init__(self, screen):
-        self.state = Nim.CREATED
-        self.screen = screen
-        self.model = NimModel(self)
-        self.view = NimView(self)
-        self.controller = NimController(self)
-
-
-mainscreen = turtle.Screen()
-mainscreen.mode("standard")
-mainscreen.setup(SCREENWIDTH, SCREENHEIGHT)
-
-def main():
-    nim = Nim(mainscreen)
-    return "EVENTLOOP!"
-
-if __name__ == "__main__":
-    main()
-    turtle.mainloop()

Deleted: /python/branches/py3k/Demo/turtle/tdemo_paint.py
==============================================================================
--- /python/branches/py3k/Demo/turtle/tdemo_paint.py	Mon Nov  1 18:39:37 2010
+++ (empty file)
@@ -1,50 +0,0 @@
-#!/usr/bin/env python3
-"""       turtle-example-suite:
-
-            tdemo_paint.py
-
-A simple  eventdriven paint program
-
-- use left mouse button to move turtle
-- middle mouse button to change color
-- right mouse button do turn filling on/off
- -------------------------------------------
- Play around by clicking into the canvas
- using all three mouse buttons.
- -------------------------------------------
-          To exit press STOP button
- -------------------------------------------
-"""
-from turtle import *
-
-def switchupdown(x=0, y=0):
-    if pen()["pendown"]:
-        end_fill()
-        up()
-    else:
-        down()
-        begin_fill()
-
-def changecolor(x=0, y=0):
-    global colors
-    colors = colors[1:]+colors[:1]
-    color(colors[0])
-
-def main():
-    global colors
-    shape("circle")
-    resizemode("user")
-    shapesize(.5)
-    width(3)
-    colors=["red", "green", "blue", "yellow"]
-    color(colors[0])
-    switchupdown()
-    onscreenclick(goto,1)
-    onscreenclick(changecolor,2)
-    onscreenclick(switchupdown,3)
-    return "EVENTLOOP"
-
-if __name__ == "__main__":
-    msg = main()
-    print(msg)
-    mainloop()

Deleted: /python/branches/py3k/Demo/turtle/tdemo_peace.py
==============================================================================
--- /python/branches/py3k/Demo/turtle/tdemo_peace.py	Mon Nov  1 18:39:37 2010
+++ (empty file)
@@ -1,65 +0,0 @@
-#!/usr/bin/env python3
-"""       turtle-example-suite:
-
-              tdemo_peace.py
-
-A very simple drawing suitable as a beginner's
-programming example.
-
-Uses only commands, which are also available in
-old turtle.py.
-
-Intentionally no variables are used except for the
-colorloop:
-"""
-
-from turtle import *
-
-def main():
-    peacecolors = ("red3",  "orange", "yellow",
-                   "seagreen4", "orchid4",
-                   "royalblue1", "dodgerblue4")
-
-    reset()
-    s = Screen()
-    up()
-    goto(-320,-195)
-    width(70)
-
-    for pcolor in peacecolors:
-        color(pcolor)
-        down()
-        forward(640)
-        up()
-        backward(640)
-        left(90)
-        forward(66)
-        right(90)
-
-    width(25)
-    color("white")
-    goto(0,-170)
-    down()
-
-    circle(170)
-    left(90)
-    forward(340)
-    up()
-    left(180)
-    forward(170)
-    right(45)
-    down()
-    forward(170)
-    up()
-    backward(170)
-    left(90)
-    down()
-    forward(170)
-    up()
-
-    goto(0,300) # vanish if hideturtle() is not available ;-)
-    return "Done!!"
-
-if __name__ == "__main__":
-    main()
-    mainloop()

Deleted: /python/branches/py3k/Demo/turtle/tdemo_penrose.py
==============================================================================
--- /python/branches/py3k/Demo/turtle/tdemo_penrose.py	Mon Nov  1 18:39:37 2010
+++ (empty file)
@@ -1,181 +0,0 @@
-#!/usr/bin/env python3
-"""       xturtle-example-suite:
-
-          xtx_kites_and_darts.py
-
-Constructs two aperiodic penrose-tilings,
-consisting of kites and darts, by the method
-of inflation in six steps.
-
-Starting points are the patterns "sun"
-consisting of five kites and "star"
-consisting of five darts.
-
-For more information see:
- http://en.wikipedia.org/wiki/Penrose_tiling
- -------------------------------------------
-"""
-from turtle import *
-from math import cos, pi
-from time import clock, sleep
-
-f = (5**0.5-1)/2.0   # (sqrt(5)-1)/2 -- golden ratio
-d = 2 * cos(3*pi/10)
-
-def kite(l):
-    fl = f * l
-    lt(36)
-    fd(l)
-    rt(108)
-    fd(fl)
-    rt(36)
-    fd(fl)
-    rt(108)
-    fd(l)
-    rt(144)
-
-def dart(l):
-    fl = f * l
-    lt(36)
-    fd(l)
-    rt(144)
-    fd(fl)
-    lt(36)
-    fd(fl)
-    rt(144)
-    fd(l)
-    rt(144)
-
-def inflatekite(l, n):
-    if n == 0:
-        px, py = pos()
-        h, x, y = int(heading()), round(px,3), round(py,3)
-        tiledict[(h,x,y)] = True
-        return
-    fl = f * l
-    lt(36)
-    inflatedart(fl, n-1)
-    fd(l)
-    rt(144)
-    inflatekite(fl, n-1)
-    lt(18)
-    fd(l*d)
-    rt(162)
-    inflatekite(fl, n-1)
-    lt(36)
-    fd(l)
-    rt(180)
-    inflatedart(fl, n-1)
-    lt(36)
-
-def inflatedart(l, n):
-    if n == 0:
-        px, py = pos()
-        h, x, y = int(heading()), round(px,3), round(py,3)
-        tiledict[(h,x,y)] = False
-        return
-    fl = f * l
-    inflatekite(fl, n-1)
-    lt(36)
-    fd(l)
-    rt(180)
-    inflatedart(fl, n-1)
-    lt(54)
-    fd(l*d)
-    rt(126)
-    inflatedart(fl, n-1)
-    fd(l)
-    rt(144)
-
-def draw(l, n, th=2):
-    clear()
-    l = l * f**n
-    shapesize(l/100.0, l/100.0, th)
-    for k in tiledict:
-        h, x, y = k
-        setpos(x, y)
-        setheading(h)
-        if tiledict[k]:
-            shape("kite")
-            color("black", (0, 0.75, 0))
-        else:
-            shape("dart")
-            color("black", (0.75, 0, 0))
-        stamp()
-
-def sun(l, n):
-    for i in range(5):
-        inflatekite(l, n)
-        lt(72)
-
-def star(l,n):
-    for i in range(5):
-        inflatedart(l, n)
-        lt(72)
-
-def makeshapes():
-    tracer(0)
-    begin_poly()
-    kite(100)
-    end_poly()
-    register_shape("kite", get_poly())
-    begin_poly()
-    dart(100)
-    end_poly()
-    register_shape("dart", get_poly())
-    tracer(1)
-
-def start():
-    reset()
-    ht()
-    pu()
-    makeshapes()
-    resizemode("user")
-
-def test(l=200, n=4, fun=sun, startpos=(0,0), th=2):
-    global tiledict
-    goto(startpos)
-    setheading(0)
-    tiledict = {}
-    a = clock()
-    tracer(0)
-    fun(l, n)
-    b = clock()
-    draw(l, n, th)
-    tracer(1)
-    c = clock()
-    print("Calculation:   %7.4f s" % (b - a))
-    print("Drawing:  %7.4f s" % (c - b))
-    print("Together: %7.4f s" % (c - a))
-    nk = len([x for x in tiledict if tiledict[x]])
-    nd = len([x for x in tiledict if not tiledict[x]])
-    print("%d kites and %d darts = %d pieces." % (nk, nd, nk+nd))
-
-def demo(fun=sun):
-    start()
-    for i in range(8):
-        a = clock()
-        test(300, i, fun)
-        b = clock()
-        t = b - a
-        if t < 2:
-            sleep(2 - t)
-
-def main():
-    #title("Penrose-tiling with kites and darts.")
-    mode("logo")
-    bgcolor(0.3, 0.3, 0)
-    demo(sun)
-    sleep(2)
-    demo(star)
-    pencolor("black")
-    goto(0,-200)
-    pencolor(0.7,0.7,1)
-    write("Please wait...",
-          align="center", font=('Arial Black', 36, 'bold'))
-    test(600, 8, startpos=(70, 117))
-    return "Done"
-
-if __name__ == "__main__":
-    msg = main()
-    mainloop()

Deleted: /python/branches/py3k/Demo/turtle/tdemo_planet_and_moon.py
==============================================================================
--- /python/branches/py3k/Demo/turtle/tdemo_planet_and_moon.py	Mon Nov  1 18:39:37 2010
+++ (empty file)
@@ -1,113 +0,0 @@
-#!/usr/bin/env python3
-"""       turtle-example-suite:
-
-        tdemo_planets_and_moon.py
-
-Gravitational system simulation using the
-approximation method from Feynman-lectures,
-p.9-8, using turtlegraphics.
-
-Example: heavy central body, light planet,
-very light moon!
-Planet has a circular orbit, moon a stable
-orbit around the planet.
-
-You can hold the movement temporarily by pressing
-the left mouse button with mouse over the
-scrollbar of the canvas.
-
-"""
-from turtle import Shape, Turtle, mainloop, Vec2D as Vec
-from time import sleep
-
-G = 8
-
-class GravSys(object):
-    def __init__(self):
-        self.planets = []
-        self.t = 0
-        self.dt = 0.01
-    def init(self):
-        for p in self.planets:
-            p.init()
-    def start(self):
-        for i in range(10000):
-            self.t += self.dt
-            for p in self.planets:
-                p.step()
-
-class Star(Turtle):
-    def __init__(self, m, x, v, gravSys, shape):
-        Turtle.__init__(self, shape=shape)
-        self.penup()
-        self.m = m
-        self.setpos(x)
-        self.v = v
-        gravSys.planets.append(self)
-        self.gravSys = gravSys
-        self.resizemode("user")
-        self.pendown()
-    def init(self):
-        dt = self.gravSys.dt
-        self.a = self.acc()
-        self.v = self.v + 0.5*dt*self.a
-    def acc(self):
-        a = Vec(0,0)
-        for planet in self.gravSys.planets:
-            if planet != self:
-                v = planet.pos()-self.pos()
-                a += (G*planet.m/abs(v)**3)*v
-        return a
-    def step(self):
-        dt = self.gravSys.dt
-        self.setpos(self.pos() + dt*self.v)
-        if self.gravSys.planets.index(self) != 0:
-            self.setheading(self.towards(self.gravSys.planets[0]))
-        self.a = self.acc()
-        self.v = self.v + dt*self.a
-
-## create compound yellow/blue turtleshape for planets
-
-def main():
-    s = Turtle()
-    s.reset()
-    s.getscreen().tracer(0,0)
-    s.ht()
-    s.pu()
-    s.fd(6)
-    s.lt(90)
-    s.begin_poly()
-    s.circle(6, 180)
-    s.end_poly()
-    m1 = s.get_poly()
-    s.begin_poly()
-    s.circle(6,180)
-    s.end_poly()
-    m2 = s.get_poly()
-
-    planetshape = Shape("compound")
-    planetshape.addcomponent(m1,"orange")
-    planetshape.addcomponent(m2,"blue")
-    s.getscreen().register_shape("planet", planetshape)
-    s.getscreen().tracer(1,0)
-
-    ## setup gravitational system
-    gs = GravSys()
-    sun = Star(1000000, Vec(0,0), Vec(0,-2.5), gs, "circle")
-    sun.color("yellow")
-    sun.shapesize(1.8)
-    sun.pu()
-    earth = Star(12500, Vec(210,0), Vec(0,195), gs, "planet")
-    earth.pencolor("green")
-    earth.shapesize(0.8)
-    moon = Star(1, Vec(220,0), Vec(0,295), gs, "planet")
-    moon.pencolor("blue")
-    moon.shapesize(0.5)
-    gs.init()
-    gs.start()
-    return "Done!"
-
-if __name__ == '__main__':
-    msg = main()
-    print(msg)
-    #mainloop()

Deleted: /python/branches/py3k/Demo/turtle/tdemo_round_dance.py
==============================================================================
--- /python/branches/py3k/Demo/turtle/tdemo_round_dance.py	Mon Nov  1 18:39:37 2010
+++ (empty file)
@@ -1,86 +0,0 @@
-"""      turtle-example-suite:
-
-         tdemo_round_dance.py
-
-(Needs version 1.1 of the turtle module that
-comes with Python 3.1)
-
-Dancing turtles have a compound shape
-consisting of a series of triangles of
-decreasing size.
-
-Turtles march along a circle while rotating
-pairwise in opposite direction, with one
-exception. Does that breaking of symmetry
-enhance the attractiveness of the example?
-
-Press any key to stop the animation.
-
-Technically: demonstrates use of compound
-shapes, transformation of shapes as well as
-cloning turtles. The animation is
-controlled through update().
-"""
-
-from turtle import *
-
-def stop():
-    global running
-    running = False
-
-def main():
-    global running
-    clearscreen()
-    bgcolor("gray10")
-    tracer(False)
-    shape("triangle")
-    f =   0.793402
-    phi = 9.064678
-    s = 5
-    c = 1
-    # create compound shape
-    sh = Shape("compound")
-    for i in range(10):
-        shapesize(s)
-        p =get_shapepoly()
-        s *= f
-        c *= f
-        tilt(-phi)
-        sh.addcomponent(p, (c, 0.25, 1-c), "black")
-    register_shape("multitri", sh)
-    # create dancers
-    shapesize(1)
-    shape("multitri")
-    pu()
-    setpos(0, -200)
-    dancers = []
-    for i in range(180):
-        fd(7)
-        tilt(-4)
-        lt(2)
-        update()
-        if i % 12 == 0:
-            dancers.append(clone())
-    home()
-    # dance
-    running = True
-    onkeypress(stop)
-    listen()
-    cs = 1
-    while running:
-        ta = -4
-        for dancer in dancers:
-            dancer.fd(7)
-            dancer.lt(2)
-            dancer.tilt(ta)
-            ta = -4 if ta > 0 else 2
-        if cs < 180:
-            right(4)
-            shapesize(cs)
-            cs *= 1.005
-        update()
-    return "DONE!"
-
-if __name__=='__main__':
-    print(main())
-    mainloop()

Deleted: /python/branches/py3k/Demo/turtle/tdemo_tree.py
==============================================================================
--- /python/branches/py3k/Demo/turtle/tdemo_tree.py	Mon Nov  1 18:39:37 2010
+++ (empty file)
@@ -1,63 +0,0 @@
-#!/usr/bin/env python3
-"""      turtle-example-suite:
-
-             tdemo_tree.py
-
-Displays a 'breadth-first-tree' - in contrast
-to the classical Logo tree drawing programs,
-which use a depth-first-algorithm.
-
-Uses:
-(1) a tree-generator, where the drawing is
-quasi the side-effect, whereas the generator
-always yields None.
-(2) Turtle-cloning: At each branching point the
-current pen is cloned. So in the end there
-are 1024 turtles.
-"""
-from turtle import Turtle, mainloop
-from time import clock
-
-def tree(plist, l, a, f):
-    """ plist is list of pens
-    l is length of branch
-    a is half of the angle between 2 branches
-    f is factor by which branch is shortened
-    from level to level."""
-    if l > 3:
-        lst = []
-        for p in plist:
-            p.forward(l)
-            q = p.clone()
-            p.left(a)
-            q.right(a)
-            lst.append(p)
-            lst.append(q)
-        for x in tree(lst, l*f, a, f):
-            yield None
-
-def maketree():
-    p = Turtle()
-    p.setundobuffer(None)
-    p.hideturtle()
-    p.speed(0)
-    p.getscreen().tracer(30,0)
-    p.left(90)
-    p.penup()
-    p.forward(-210)
-    p.pendown()
-    t = tree([p], 200, 65, 0.6375)
-    for x in t:
-        pass
-    print(len(p.getscreen().turtles()))
-
-def main():
-    a=clock()
-    maketree()
-    b=clock()
-    return "done: %.2f sec." % (b-a)
-
-if __name__ == "__main__":
-    msg = main()
-    print(msg)
-    mainloop()

Deleted: /python/branches/py3k/Demo/turtle/tdemo_wikipedia.py
==============================================================================
--- /python/branches/py3k/Demo/turtle/tdemo_wikipedia.py	Mon Nov  1 18:39:37 2010
+++ (empty file)
@@ -1,65 +0,0 @@
-"""      turtle-example-suite:
-
-          tdemo_wikipedia3.py
-
-This example is
-inspired by the Wikipedia article on turtle
-graphics. (See example wikipedia1 for URLs)
-
-First we create (ne-1) (i.e. 35 in this
-example) copies of our first turtle p.
-Then we let them perform their steps in
-parallel.
-
-Followed by a complete undo().
-"""
-from turtle import Screen, Turtle, mainloop
-from time import clock, sleep
-
-def mn_eck(p, ne,sz):
-    turtlelist = [p]
-    #create ne-1 additional turtles
-    for i in range(1,ne):
-        q = p.clone()
-        q.rt(360.0/ne)
-        turtlelist.append(q)
-        p = q
-    for i in range(ne):
-        c = abs(ne/2.0-i)/(ne*.7)
-        # let those ne turtles make a step
-        # in parallel:
-        for t in turtlelist:
-            t.rt(360./ne)
-            t.pencolor(1-c,0,c)
-            t.fd(sz)
-
-def main():
-    s = Screen()
-    s.bgcolor("black")
-    p=Turtle()
-    p.speed(0)
-    p.hideturtle()
-    p.pencolor("red")
-    p.pensize(3)
-
-    s.tracer(36,0)
-
-    at = clock()
-    mn_eck(p, 36, 19)
-    et = clock()
-    z1 = et-at
-
-    sleep(1)
-
-    at = clock()
-    while any([t.undobufferentries() for t in s.turtles()]):
-        for t in s.turtles():
-            t.undo()
-    et = clock()
-    return "Laufzeit: %.3f sec" % (z1+et-at)
-
-
-if __name__ == '__main__':
-    msg = main()
-    print(msg)
-    mainloop()

Deleted: /python/branches/py3k/Demo/turtle/tdemo_yinyang.py
==============================================================================
--- /python/branches/py3k/Demo/turtle/tdemo_yinyang.py	Mon Nov  1 18:39:37 2010
+++ (empty file)
@@ -1,49 +0,0 @@
-#!/usr/bin/env python3
-"""       turtle-example-suite:
-
-            tdemo_yinyang.py
-
-Another drawing suitable as a beginner's
-programming example.
-
-The small circles are drawn by the circle
-command.
-
-"""
-
-from turtle import *
-
-def yin(radius, color1, color2):
-    width(3)
-    color("black", color1)
-    begin_fill()
-    circle(radius/2., 180)
-    circle(radius, 180)
-    left(180)
-    circle(-radius/2., 180)
-    end_fill()
-    left(90)
-    up()
-    forward(radius*0.35)
-    right(90)
-    down()
-    color(color1, color2)
-    begin_fill()
-    circle(radius*0.15)
-    end_fill()
-    left(90)
-    up()
-    backward(radius*0.35)
-    down()
-    left(90)
-
-def main():
-    reset()
-    yin(200, "black", "white")
-    yin(200, "white", "black")
-    ht()
-    return "Done!"
-
-if __name__ == '__main__':
-    main()
-    mainloop()

Deleted: /python/branches/py3k/Demo/turtle/turtleDemo.py
==============================================================================
--- /python/branches/py3k/Demo/turtle/turtleDemo.py	Mon Nov  1 18:39:37 2010
+++ (empty file)
@@ -1,291 +0,0 @@
-#!/usr/bin/env python3
-import sys
-import os
-
-from tkinter import *
-from idlelib.Percolator import Percolator
-from idlelib.ColorDelegator import ColorDelegator
-from idlelib.textView import view_file # TextViewer
-from imp import reload
-
-import turtle
-import time
-
-STARTUP = 1
-READY = 2
-RUNNING = 3
-DONE = 4
-EVENTDRIVEN = 5
-
-menufont = ("Arial", 12, NORMAL)
-btnfont = ("Arial", 12, 'bold')
-txtfont = ('Lucida Console', 8, 'normal')
-
-def getExampleEntries():
-    cwd = os.getcwd()
-    #print(cwd, os.listdir(cwd))
-    if "turtleDemo.py" not in os.listdir(cwd):
-        print("Directory of turtleDemo must be current working directory!")
-        print("But in your case this is", cwd)
-        sys.exit()
-    entries1 = [entry for entry in os.listdir(cwd) if
-                     entry.startswith("tdemo_") and
-                     not entry.endswith(".pyc")]
-    entries2 = []
-    for entry in entries1:
-        if entry.endswith(".py"):
-            entries2.append(entry)
-        else:
-            path = os.path.join(cwd,entry)
-            sys.path.append(path)
-            subdir = [entry]
-            scripts = [script for script in os.listdir(path) if
-                            script.startswith("tdemo_") and
-                            script.endswith(".py")]
-            entries2.append(subdir+scripts)
-    return entries2
-
-def showDemoHelp():
-    view_file(demo.root, "Help on turtleDemo", "demohelp.txt")
-
-def showAboutDemo():
-    view_file(demo.root, "About turtleDemo", "about_turtledemo.txt")
-
-def showAboutTurtle():
-    view_file(demo.root, "About the new turtle module.", "about_turtle.txt")
-
-class DemoWindow(object):
-
-    def __init__(self, filename=None):   #, root=None):
-        self.root = root = turtle._root = Tk()
-        root.wm_protocol("WM_DELETE_WINDOW", self._destroy)
-
-        #################
-        self.mBar = Frame(root, relief=RAISED, borderwidth=2)
-        self.mBar.pack(fill=X)
-
-        self.ExamplesBtn = self.makeLoadDemoMenu()
-        self.OptionsBtn = self.makeHelpMenu()
-        self.mBar.tk_menuBar(self.ExamplesBtn, self.OptionsBtn) #, QuitBtn)
-
-        root.title('Python turtle-graphics examples')
-        #################
-        self.left_frame = left_frame = Frame(root)
-        self.text_frame = text_frame = Frame(left_frame)
-        self.vbar = vbar =Scrollbar(text_frame, name='vbar')
-        self.text = text = Text(text_frame,
-                                name='text', padx=5, wrap='none',
-                                width=45)
-        vbar['command'] = text.yview
-        vbar.pack(side=LEFT, fill=Y)
-        #####################
-        self.hbar = hbar =Scrollbar(text_frame, name='hbar', orient=HORIZONTAL)
-        hbar['command'] = text.xview
-        hbar.pack(side=BOTTOM, fill=X)
-        #####################
-        text['yscrollcommand'] = vbar.set
-        text.config(font=txtfont)
-        text.config(xscrollcommand=hbar.set)
-        text.pack(side=LEFT, fill=Y, expand=1)
-        #####################
-        self.output_lbl = Label(left_frame, height= 1,text=" --- ", bg = "#ddf",
-                                font = ("Arial", 16, 'normal'))
-        self.output_lbl.pack(side=BOTTOM, expand=0, fill=X)
-        #####################
-        text_frame.pack(side=LEFT, fill=BOTH, expand=0)
-        left_frame.pack(side=LEFT, fill=BOTH, expand=0)
-        self.graph_frame = g_frame = Frame(root)
-
-        turtle._Screen._root = g_frame
-        turtle._Screen._canvas = turtle.ScrolledCanvas(g_frame, 800, 600, 1000, 800)
-        #xturtle.Screen._canvas.pack(expand=1, fill="both")
-        self.screen = _s_ = turtle.Screen()
-#####
-        turtle.TurtleScreen.__init__(_s_, _s_._canvas)
-#####
-        self.scanvas = _s_._canvas
-        #xturtle.RawTurtle.canvases = [self.scanvas]
-        turtle.RawTurtle.screens = [_s_]
-
-        self.scanvas.pack(side=TOP, fill=BOTH, expand=1)
-
-        self.btn_frame = btn_frame = Frame(g_frame, height=100)
-        self.start_btn = Button(btn_frame, text=" START ", font=btnfont, fg = "white",
-                                disabledforeground = "#fed", command=self.startDemo)
-        self.start_btn.pack(side=LEFT, fill=X, expand=1)
-        self.stop_btn = Button(btn_frame, text=" STOP ",  font=btnfont, fg = "white",
-                                disabledforeground = "#fed", command = self.stopIt)
-        self.stop_btn.pack(side=LEFT, fill=X, expand=1)
-        self.clear_btn = Button(btn_frame, text=" CLEAR ",  font=btnfont, fg = "white",
-                                disabledforeground = "#fed", command = self.clearCanvas)
-        self.clear_btn.pack(side=LEFT, fill=X, expand=1)
-
-        self.btn_frame.pack(side=TOP, fill=BOTH, expand=0)
-        self.graph_frame.pack(side=TOP, fill=BOTH, expand=1)
-
-        Percolator(text).insertfilter(ColorDelegator())
-        self.dirty = False
-        self.exitflag = False
-        if filename:
-            self.loadfile(filename)
-        self.configGUI(NORMAL, DISABLED, DISABLED, DISABLED,
-                       "Choose example from menu", "black")
-        self.state = STARTUP
-
-    def _destroy(self):
-        self.root.destroy()
-        sys.exit()
-
-    def configGUI(self, menu, start, stop, clear, txt="", color="blue"):
-        self.ExamplesBtn.config(state=menu)
-
-        self.start_btn.config(state=start)
-        if start==NORMAL:
-            self.start_btn.config(bg="#d00")
-        else:
-            self.start_btn.config(bg="#fca")
-
-        self.stop_btn.config(state=stop)
-        if stop==NORMAL:
-            self.stop_btn.config(bg="#d00")
-        else:
-            self.stop_btn.config(bg="#fca")
-        self.clear_btn.config(state=clear)
-
-        self.clear_btn.config(state=clear)
-        if clear==NORMAL:
-            self.clear_btn.config(bg="#d00")
-        else:
-            self.clear_btn.config(bg="#fca")
-
-        self.output_lbl.config(text=txt, fg=color)
-
-
-    def makeLoadDemoMenu(self):
-        CmdBtn = Menubutton(self.mBar, text='Examples', underline=0, font=menufont)
-        CmdBtn.pack(side=LEFT, padx="2m")
-        CmdBtn.menu = Menu(CmdBtn)
-
-        for entry in getExampleEntries():
-            def loadexample(x):
-                def emit():
-                    self.loadfile(x)
-                return emit
-            if isinstance(entry,str):
-                CmdBtn.menu.add_command(label=entry[6:-3], underline=0, font=menufont,
-                                        command=loadexample(entry))
-            else:
-                _dir, entries = entry[0], entry[1:]
-                CmdBtn.menu.choices = Menu(CmdBtn.menu)
-                for e in entries:
-                    CmdBtn.menu.choices.add_command(label=e[6:-3], underline=0, font=menufont,
-                              command = loadexample(os.path.join(_dir,e)))
-
-                CmdBtn.menu.add_cascade(label=_dir[6:],
-                                        menu = CmdBtn.menu.choices, font=menufont )
-
-        CmdBtn['menu'] = CmdBtn.menu
-        return CmdBtn
-
-
-    def makeHelpMenu(self):
-        CmdBtn = Menubutton(self.mBar, text='Help', underline=0, font = menufont)
-        CmdBtn.pack(side=LEFT, padx='2m')
-        CmdBtn.menu = Menu(CmdBtn)
-
-        CmdBtn.menu.add_command(label='About turtle.py', font=menufont, command=showAboutTurtle)
-        CmdBtn.menu.add_command(label='turtleDemo - Help', font=menufont, command=showDemoHelp)
-        CmdBtn.menu.add_command(label='About turtleDemo', font=menufont, command=showAboutDemo)
-
-        CmdBtn['menu'] = CmdBtn.menu
-        return CmdBtn
-
-    def refreshCanvas(self):
-        if not self.dirty: return
-        self.screen.clear()
-        #self.screen.mode("standard")
-        self.dirty=False
-
-    def loadfile(self,filename):
-        self.refreshCanvas()
-        if os.path.exists(filename) and not os.path.isdir(filename):
-            # load and display file text
-            f = open(filename,'r')
-            chars = f.read()
-            f.close()
-            self.text.delete("1.0", "end")
-            self.text.insert("1.0",chars)
-            direc, fname = os.path.split(filename)
-            self.root.title(fname[6:-3]+" - a Python turtle graphics example")
-            self.module = __import__(fname[:-3])
-            reload(self.module)
-            self.configGUI(NORMAL, NORMAL, DISABLED, DISABLED,
-                           "Press start button", "red")
-            self.state = READY
-
-    def startDemo(self):
-        self.refreshCanvas()
-        self.dirty = True
-        turtle.TurtleScreen._RUNNING = True
-        self.configGUI(DISABLED, DISABLED, NORMAL, DISABLED,
-                       "demo running...", "black")
-        self.screen.clear()
-        self.screen.mode("standard")
-        self.state = RUNNING
-
-        try:
-            result = self.module.main()
-            if result == "EVENTLOOP":
-                self.state = EVENTDRIVEN
-            else:
-                self.state = DONE
-        except turtle.Terminator:
-            self.state = DONE
-            result = "stopped!"
-        if self.state == DONE:
-            self.configGUI(NORMAL, NORMAL, DISABLED, NORMAL,
-                           result)
-        elif self.state == EVENTDRIVEN:
-            self.exitflag = True
-            self.configGUI(DISABLED, DISABLED, NORMAL, DISABLED,
-                           "use mouse/keys or STOP", "red")
-
-    def clearCanvas(self):
-        self.refreshCanvas()
-        self.screen._delete("all")
-        self.scanvas.config(cursor="")
-        self.configGUI(NORMAL, NORMAL, DISABLED, DISABLED)
-
-    def stopIt(self):
-        if self.exitflag:
-            self.clearCanvas()
-            self.exitflag = False
-            self.configGUI(NORMAL, NORMAL, DISABLED, DISABLED,
-                           "STOPPED!", "red")
-            turtle.TurtleScreen._RUNNING = False
-            #print "stopIT: exitflag = True"
-        else:
-            turtle.TurtleScreen._RUNNING = False
-            #print "stopIt: exitflag = False"
-
-if __name__ == '__main__':
-    demo = DemoWindow()
-    RUN = True
-    while RUN:
-        try:
-            #print("ENTERING mainloop")
-            demo.root.mainloop()
-        except AttributeError:
-            #print("AttributeError!- WAIT A MOMENT!")
-            time.sleep(0.3)
-            print("GOING ON ..")
-            demo.ckearCanvas()
-        except TypeError:
-            demo.screen._delete("all")
-            #print("CRASH!!!- WAIT A MOMENT!")
-            time.sleep(0.3)
-            #print("GOING ON ..")
-            demo.clearCanvas()
-        except:
-            print("BYE!")
-            RUN = False

Deleted: /python/branches/py3k/Demo/turtle/turtledemo_two_canvases.py
==============================================================================
--- /python/branches/py3k/Demo/turtle/turtledemo_two_canvases.py	Mon Nov  1 18:39:37 2010
+++ (empty file)
@@ -1,52 +0,0 @@
-#!/usr/bin/env python3
-## DEMONSTRATES USE OF 2 CANVASES, SO CANNOT BE RUN IN DEMOVIEWER!
-"""turtle example: Using TurtleScreen and RawTurtle
-for drawing on two distinct canvases.
-"""
-from turtle import TurtleScreen, RawTurtle, TK
-
-root = TK.Tk()
-cv1 = TK.Canvas(root, width=300, height=200, bg="#ddffff")
-cv2 = TK.Canvas(root, width=300, height=200, bg="#ffeeee")
-cv1.pack()
-cv2.pack()
-
-s1 = TurtleScreen(cv1)
-s1.bgcolor(0.85, 0.85, 1)
-s2 = TurtleScreen(cv2)
-s2.bgcolor(1, 0.85, 0.85)
-
-p = RawTurtle(s1)
-q = RawTurtle(s2)
-
-p.color("red", (1, 0.85, 0.85))
-p.width(3)
-q.color("blue", (0.85, 0.85, 1))
-q.width(3)
-
-for t in p,q:
-    t.shape("turtle")
-    t.lt(36)
-
-q.lt(180)
-
-for t in p, q:
-    t.begin_fill()
-for i in range(5):
-    for t in p, q:
-        t.fd(50)
-        t.lt(72)
-for t in p,q:
-    t.end_fill()
-    t.lt(54)
-    t.pu()
-    t.bk(50)
-
-## Want to get some info?
-
-print(s1, s2)
-print(p, q)
-print(s1.turtles())
-print(s2.turtles())
-
-TK.mainloop()

Copied: python/branches/py3k/Lib/turtledemo/two_canvases.py (from r85848, /python/branches/py3k/Demo/turtle/turtledemo_two_canvases.py)
==============================================================================
--- /python/branches/py3k/Demo/turtle/turtledemo_two_canvases.py	(original)
+++ python/branches/py3k/Lib/turtledemo/two_canvases.py	Mon Nov  1 18:39:37 2010
@@ -44,9 +44,9 @@
 
 ## Want to get some info?
 
-print(s1, s2)
-print(p, q)
-print(s1.turtles())
-print(s2.turtles())
+#print(s1, s2)
+#print(p, q)
+#print(s1.turtles())
+#print(s2.turtles())
 
 TK.mainloop()

Modified: python/branches/py3k/Makefile.pre.in
==============================================================================
--- python/branches/py3k/Makefile.pre.in	(original)
+++ python/branches/py3k/Makefile.pre.in	Mon Nov  1 18:39:37 2010
@@ -893,6 +893,7 @@
 		importlib/test/extension importlib/test/frozen \
 		importlib/test/import_ importlib/test/source \
 		setuptools setuptools/command setuptools/tests setuptools.egg-info \
+		turtledemo \
 		multiprocessing multiprocessing/dummy \
 		unittest unittest/test \
 		curses pydoc_data $(MACHDEPS)

Modified: python/branches/py3k/Misc/NEWS
==============================================================================
--- python/branches/py3k/Misc/NEWS	(original)
+++ python/branches/py3k/Misc/NEWS	Mon Nov  1 18:39:37 2010
@@ -59,6 +59,9 @@
 Library
 -------
 
+- Issue #10199: New package, ``turtledemo`` now contains selected demo
+  scripts that were formerly found under Demo/turtle.
+
 - Issue #10265: Close file objects explicitly in sunau.  Patch by Brian Brazil.
 
 - Issue #10266: uu.decode didn't close in_file explicitly when it was given


More information about the Python-checkins mailing list