File: ChangeLog

package info (click to toggle)
ipython 0.13.1-2%2Bdeb7u1
  • links: PTS, VCS
  • area: main
  • in suites: wheezy
  • size: 15,752 kB
  • sloc: python: 69,537; makefile: 355; lisp: 272; sh: 80; objc: 37
file content (7683 lines) | stat: -rw-r--r-- 304,724 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
1001
1002
1003
1004
1005
1006
1007
1008
1009
1010
1011
1012
1013
1014
1015
1016
1017
1018
1019
1020
1021
1022
1023
1024
1025
1026
1027
1028
1029
1030
1031
1032
1033
1034
1035
1036
1037
1038
1039
1040
1041
1042
1043
1044
1045
1046
1047
1048
1049
1050
1051
1052
1053
1054
1055
1056
1057
1058
1059
1060
1061
1062
1063
1064
1065
1066
1067
1068
1069
1070
1071
1072
1073
1074
1075
1076
1077
1078
1079
1080
1081
1082
1083
1084
1085
1086
1087
1088
1089
1090
1091
1092
1093
1094
1095
1096
1097
1098
1099
1100
1101
1102
1103
1104
1105
1106
1107
1108
1109
1110
1111
1112
1113
1114
1115
1116
1117
1118
1119
1120
1121
1122
1123
1124
1125
1126
1127
1128
1129
1130
1131
1132
1133
1134
1135
1136
1137
1138
1139
1140
1141
1142
1143
1144
1145
1146
1147
1148
1149
1150
1151
1152
1153
1154
1155
1156
1157
1158
1159
1160
1161
1162
1163
1164
1165
1166
1167
1168
1169
1170
1171
1172
1173
1174
1175
1176
1177
1178
1179
1180
1181
1182
1183
1184
1185
1186
1187
1188
1189
1190
1191
1192
1193
1194
1195
1196
1197
1198
1199
1200
1201
1202
1203
1204
1205
1206
1207
1208
1209
1210
1211
1212
1213
1214
1215
1216
1217
1218
1219
1220
1221
1222
1223
1224
1225
1226
1227
1228
1229
1230
1231
1232
1233
1234
1235
1236
1237
1238
1239
1240
1241
1242
1243
1244
1245
1246
1247
1248
1249
1250
1251
1252
1253
1254
1255
1256
1257
1258
1259
1260
1261
1262
1263
1264
1265
1266
1267
1268
1269
1270
1271
1272
1273
1274
1275
1276
1277
1278
1279
1280
1281
1282
1283
1284
1285
1286
1287
1288
1289
1290
1291
1292
1293
1294
1295
1296
1297
1298
1299
1300
1301
1302
1303
1304
1305
1306
1307
1308
1309
1310
1311
1312
1313
1314
1315
1316
1317
1318
1319
1320
1321
1322
1323
1324
1325
1326
1327
1328
1329
1330
1331
1332
1333
1334
1335
1336
1337
1338
1339
1340
1341
1342
1343
1344
1345
1346
1347
1348
1349
1350
1351
1352
1353
1354
1355
1356
1357
1358
1359
1360
1361
1362
1363
1364
1365
1366
1367
1368
1369
1370
1371
1372
1373
1374
1375
1376
1377
1378
1379
1380
1381
1382
1383
1384
1385
1386
1387
1388
1389
1390
1391
1392
1393
1394
1395
1396
1397
1398
1399
1400
1401
1402
1403
1404
1405
1406
1407
1408
1409
1410
1411
1412
1413
1414
1415
1416
1417
1418
1419
1420
1421
1422
1423
1424
1425
1426
1427
1428
1429
1430
1431
1432
1433
1434
1435
1436
1437
1438
1439
1440
1441
1442
1443
1444
1445
1446
1447
1448
1449
1450
1451
1452
1453
1454
1455
1456
1457
1458
1459
1460
1461
1462
1463
1464
1465
1466
1467
1468
1469
1470
1471
1472
1473
1474
1475
1476
1477
1478
1479
1480
1481
1482
1483
1484
1485
1486
1487
1488
1489
1490
1491
1492
1493
1494
1495
1496
1497
1498
1499
1500
1501
1502
1503
1504
1505
1506
1507
1508
1509
1510
1511
1512
1513
1514
1515
1516
1517
1518
1519
1520
1521
1522
1523
1524
1525
1526
1527
1528
1529
1530
1531
1532
1533
1534
1535
1536
1537
1538
1539
1540
1541
1542
1543
1544
1545
1546
1547
1548
1549
1550
1551
1552
1553
1554
1555
1556
1557
1558
1559
1560
1561
1562
1563
1564
1565
1566
1567
1568
1569
1570
1571
1572
1573
1574
1575
1576
1577
1578
1579
1580
1581
1582
1583
1584
1585
1586
1587
1588
1589
1590
1591
1592
1593
1594
1595
1596
1597
1598
1599
1600
1601
1602
1603
1604
1605
1606
1607
1608
1609
1610
1611
1612
1613
1614
1615
1616
1617
1618
1619
1620
1621
1622
1623
1624
1625
1626
1627
1628
1629
1630
1631
1632
1633
1634
1635
1636
1637
1638
1639
1640
1641
1642
1643
1644
1645
1646
1647
1648
1649
1650
1651
1652
1653
1654
1655
1656
1657
1658
1659
1660
1661
1662
1663
1664
1665
1666
1667
1668
1669
1670
1671
1672
1673
1674
1675
1676
1677
1678
1679
1680
1681
1682
1683
1684
1685
1686
1687
1688
1689
1690
1691
1692
1693
1694
1695
1696
1697
1698
1699
1700
1701
1702
1703
1704
1705
1706
1707
1708
1709
1710
1711
1712
1713
1714
1715
1716
1717
1718
1719
1720
1721
1722
1723
1724
1725
1726
1727
1728
1729
1730
1731
1732
1733
1734
1735
1736
1737
1738
1739
1740
1741
1742
1743
1744
1745
1746
1747
1748
1749
1750
1751
1752
1753
1754
1755
1756
1757
1758
1759
1760
1761
1762
1763
1764
1765
1766
1767
1768
1769
1770
1771
1772
1773
1774
1775
1776
1777
1778
1779
1780
1781
1782
1783
1784
1785
1786
1787
1788
1789
1790
1791
1792
1793
1794
1795
1796
1797
1798
1799
1800
1801
1802
1803
1804
1805
1806
1807
1808
1809
1810
1811
1812
1813
1814
1815
1816
1817
1818
1819
1820
1821
1822
1823
1824
1825
1826
1827
1828
1829
1830
1831
1832
1833
1834
1835
1836
1837
1838
1839
1840
1841
1842
1843
1844
1845
1846
1847
1848
1849
1850
1851
1852
1853
1854
1855
1856
1857
1858
1859
1860
1861
1862
1863
1864
1865
1866
1867
1868
1869
1870
1871
1872
1873
1874
1875
1876
1877
1878
1879
1880
1881
1882
1883
1884
1885
1886
1887
1888
1889
1890
1891
1892
1893
1894
1895
1896
1897
1898
1899
1900
1901
1902
1903
1904
1905
1906
1907
1908
1909
1910
1911
1912
1913
1914
1915
1916
1917
1918
1919
1920
1921
1922
1923
1924
1925
1926
1927
1928
1929
1930
1931
1932
1933
1934
1935
1936
1937
1938
1939
1940
1941
1942
1943
1944
1945
1946
1947
1948
1949
1950
1951
1952
1953
1954
1955
1956
1957
1958
1959
1960
1961
1962
1963
1964
1965
1966
1967
1968
1969
1970
1971
1972
1973
1974
1975
1976
1977
1978
1979
1980
1981
1982
1983
1984
1985
1986
1987
1988
1989
1990
1991
1992
1993
1994
1995
1996
1997
1998
1999
2000
2001
2002
2003
2004
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
2025
2026
2027
2028
2029
2030
2031
2032
2033
2034
2035
2036
2037
2038
2039
2040
2041
2042
2043
2044
2045
2046
2047
2048
2049
2050
2051
2052
2053
2054
2055
2056
2057
2058
2059
2060
2061
2062
2063
2064
2065
2066
2067
2068
2069
2070
2071
2072
2073
2074
2075
2076
2077
2078
2079
2080
2081
2082
2083
2084
2085
2086
2087
2088
2089
2090
2091
2092
2093
2094
2095
2096
2097
2098
2099
2100
2101
2102
2103
2104
2105
2106
2107
2108
2109
2110
2111
2112
2113
2114
2115
2116
2117
2118
2119
2120
2121
2122
2123
2124
2125
2126
2127
2128
2129
2130
2131
2132
2133
2134
2135
2136
2137
2138
2139
2140
2141
2142
2143
2144
2145
2146
2147
2148
2149
2150
2151
2152
2153
2154
2155
2156
2157
2158
2159
2160
2161
2162
2163
2164
2165
2166
2167
2168
2169
2170
2171
2172
2173
2174
2175
2176
2177
2178
2179
2180
2181
2182
2183
2184
2185
2186
2187
2188
2189
2190
2191
2192
2193
2194
2195
2196
2197
2198
2199
2200
2201
2202
2203
2204
2205
2206
2207
2208
2209
2210
2211
2212
2213
2214
2215
2216
2217
2218
2219
2220
2221
2222
2223
2224
2225
2226
2227
2228
2229
2230
2231
2232
2233
2234
2235
2236
2237
2238
2239
2240
2241
2242
2243
2244
2245
2246
2247
2248
2249
2250
2251
2252
2253
2254
2255
2256
2257
2258
2259
2260
2261
2262
2263
2264
2265
2266
2267
2268
2269
2270
2271
2272
2273
2274
2275
2276
2277
2278
2279
2280
2281
2282
2283
2284
2285
2286
2287
2288
2289
2290
2291
2292
2293
2294
2295
2296
2297
2298
2299
2300
2301
2302
2303
2304
2305
2306
2307
2308
2309
2310
2311
2312
2313
2314
2315
2316
2317
2318
2319
2320
2321
2322
2323
2324
2325
2326
2327
2328
2329
2330
2331
2332
2333
2334
2335
2336
2337
2338
2339
2340
2341
2342
2343
2344
2345
2346
2347
2348
2349
2350
2351
2352
2353
2354
2355
2356
2357
2358
2359
2360
2361
2362
2363
2364
2365
2366
2367
2368
2369
2370
2371
2372
2373
2374
2375
2376
2377
2378
2379
2380
2381
2382
2383
2384
2385
2386
2387
2388
2389
2390
2391
2392
2393
2394
2395
2396
2397
2398
2399
2400
2401
2402
2403
2404
2405
2406
2407
2408
2409
2410
2411
2412
2413
2414
2415
2416
2417
2418
2419
2420
2421
2422
2423
2424
2425
2426
2427
2428
2429
2430
2431
2432
2433
2434
2435
2436
2437
2438
2439
2440
2441
2442
2443
2444
2445
2446
2447
2448
2449
2450
2451
2452
2453
2454
2455
2456
2457
2458
2459
2460
2461
2462
2463
2464
2465
2466
2467
2468
2469
2470
2471
2472
2473
2474
2475
2476
2477
2478
2479
2480
2481
2482
2483
2484
2485
2486
2487
2488
2489
2490
2491
2492
2493
2494
2495
2496
2497
2498
2499
2500
2501
2502
2503
2504
2505
2506
2507
2508
2509
2510
2511
2512
2513
2514
2515
2516
2517
2518
2519
2520
2521
2522
2523
2524
2525
2526
2527
2528
2529
2530
2531
2532
2533
2534
2535
2536
2537
2538
2539
2540
2541
2542
2543
2544
2545
2546
2547
2548
2549
2550
2551
2552
2553
2554
2555
2556
2557
2558
2559
2560
2561
2562
2563
2564
2565
2566
2567
2568
2569
2570
2571
2572
2573
2574
2575
2576
2577
2578
2579
2580
2581
2582
2583
2584
2585
2586
2587
2588
2589
2590
2591
2592
2593
2594
2595
2596
2597
2598
2599
2600
2601
2602
2603
2604
2605
2606
2607
2608
2609
2610
2611
2612
2613
2614
2615
2616
2617
2618
2619
2620
2621
2622
2623
2624
2625
2626
2627
2628
2629
2630
2631
2632
2633
2634
2635
2636
2637
2638
2639
2640
2641
2642
2643
2644
2645
2646
2647
2648
2649
2650
2651
2652
2653
2654
2655
2656
2657
2658
2659
2660
2661
2662
2663
2664
2665
2666
2667
2668
2669
2670
2671
2672
2673
2674
2675
2676
2677
2678
2679
2680
2681
2682
2683
2684
2685
2686
2687
2688
2689
2690
2691
2692
2693
2694
2695
2696
2697
2698
2699
2700
2701
2702
2703
2704
2705
2706
2707
2708
2709
2710
2711
2712
2713
2714
2715
2716
2717
2718
2719
2720
2721
2722
2723
2724
2725
2726
2727
2728
2729
2730
2731
2732
2733
2734
2735
2736
2737
2738
2739
2740
2741
2742
2743
2744
2745
2746
2747
2748
2749
2750
2751
2752
2753
2754
2755
2756
2757
2758
2759
2760
2761
2762
2763
2764
2765
2766
2767
2768
2769
2770
2771
2772
2773
2774
2775
2776
2777
2778
2779
2780
2781
2782
2783
2784
2785
2786
2787
2788
2789
2790
2791
2792
2793
2794
2795
2796
2797
2798
2799
2800
2801
2802
2803
2804
2805
2806
2807
2808
2809
2810
2811
2812
2813
2814
2815
2816
2817
2818
2819
2820
2821
2822
2823
2824
2825
2826
2827
2828
2829
2830
2831
2832
2833
2834
2835
2836
2837
2838
2839
2840
2841
2842
2843
2844
2845
2846
2847
2848
2849
2850
2851
2852
2853
2854
2855
2856
2857
2858
2859
2860
2861
2862
2863
2864
2865
2866
2867
2868
2869
2870
2871
2872
2873
2874
2875
2876
2877
2878
2879
2880
2881
2882
2883
2884
2885
2886
2887
2888
2889
2890
2891
2892
2893
2894
2895
2896
2897
2898
2899
2900
2901
2902
2903
2904
2905
2906
2907
2908
2909
2910
2911
2912
2913
2914
2915
2916
2917
2918
2919
2920
2921
2922
2923
2924
2925
2926
2927
2928
2929
2930
2931
2932
2933
2934
2935
2936
2937
2938
2939
2940
2941
2942
2943
2944
2945
2946
2947
2948
2949
2950
2951
2952
2953
2954
2955
2956
2957
2958
2959
2960
2961
2962
2963
2964
2965
2966
2967
2968
2969
2970
2971
2972
2973
2974
2975
2976
2977
2978
2979
2980
2981
2982
2983
2984
2985
2986
2987
2988
2989
2990
2991
2992
2993
2994
2995
2996
2997
2998
2999
3000
3001
3002
3003
3004
3005
3006
3007
3008
3009
3010
3011
3012
3013
3014
3015
3016
3017
3018
3019
3020
3021
3022
3023
3024
3025
3026
3027
3028
3029
3030
3031
3032
3033
3034
3035
3036
3037
3038
3039
3040
3041
3042
3043
3044
3045
3046
3047
3048
3049
3050
3051
3052
3053
3054
3055
3056
3057
3058
3059
3060
3061
3062
3063
3064
3065
3066
3067
3068
3069
3070
3071
3072
3073
3074
3075
3076
3077
3078
3079
3080
3081
3082
3083
3084
3085
3086
3087
3088
3089
3090
3091
3092
3093
3094
3095
3096
3097
3098
3099
3100
3101
3102
3103
3104
3105
3106
3107
3108
3109
3110
3111
3112
3113
3114
3115
3116
3117
3118
3119
3120
3121
3122
3123
3124
3125
3126
3127
3128
3129
3130
3131
3132
3133
3134
3135
3136
3137
3138
3139
3140
3141
3142
3143
3144
3145
3146
3147
3148
3149
3150
3151
3152
3153
3154
3155
3156
3157
3158
3159
3160
3161
3162
3163
3164
3165
3166
3167
3168
3169
3170
3171
3172
3173
3174
3175
3176
3177
3178
3179
3180
3181
3182
3183
3184
3185
3186
3187
3188
3189
3190
3191
3192
3193
3194
3195
3196
3197
3198
3199
3200
3201
3202
3203
3204
3205
3206
3207
3208
3209
3210
3211
3212
3213
3214
3215
3216
3217
3218
3219
3220
3221
3222
3223
3224
3225
3226
3227
3228
3229
3230
3231
3232
3233
3234
3235
3236
3237
3238
3239
3240
3241
3242
3243
3244
3245
3246
3247
3248
3249
3250
3251
3252
3253
3254
3255
3256
3257
3258
3259
3260
3261
3262
3263
3264
3265
3266
3267
3268
3269
3270
3271
3272
3273
3274
3275
3276
3277
3278
3279
3280
3281
3282
3283
3284
3285
3286
3287
3288
3289
3290
3291
3292
3293
3294
3295
3296
3297
3298
3299
3300
3301
3302
3303
3304
3305
3306
3307
3308
3309
3310
3311
3312
3313
3314
3315
3316
3317
3318
3319
3320
3321
3322
3323
3324
3325
3326
3327
3328
3329
3330
3331
3332
3333
3334
3335
3336
3337
3338
3339
3340
3341
3342
3343
3344
3345
3346
3347
3348
3349
3350
3351
3352
3353
3354
3355
3356
3357
3358
3359
3360
3361
3362
3363
3364
3365
3366
3367
3368
3369
3370
3371
3372
3373
3374
3375
3376
3377
3378
3379
3380
3381
3382
3383
3384
3385
3386
3387
3388
3389
3390
3391
3392
3393
3394
3395
3396
3397
3398
3399
3400
3401
3402
3403
3404
3405
3406
3407
3408
3409
3410
3411
3412
3413
3414
3415
3416
3417
3418
3419
3420
3421
3422
3423
3424
3425
3426
3427
3428
3429
3430
3431
3432
3433
3434
3435
3436
3437
3438
3439
3440
3441
3442
3443
3444
3445
3446
3447
3448
3449
3450
3451
3452
3453
3454
3455
3456
3457
3458
3459
3460
3461
3462
3463
3464
3465
3466
3467
3468
3469
3470
3471
3472
3473
3474
3475
3476
3477
3478
3479
3480
3481
3482
3483
3484
3485
3486
3487
3488
3489
3490
3491
3492
3493
3494
3495
3496
3497
3498
3499
3500
3501
3502
3503
3504
3505
3506
3507
3508
3509
3510
3511
3512
3513
3514
3515
3516
3517
3518
3519
3520
3521
3522
3523
3524
3525
3526
3527
3528
3529
3530
3531
3532
3533
3534
3535
3536
3537
3538
3539
3540
3541
3542
3543
3544
3545
3546
3547
3548
3549
3550
3551
3552
3553
3554
3555
3556
3557
3558
3559
3560
3561
3562
3563
3564
3565
3566
3567
3568
3569
3570
3571
3572
3573
3574
3575
3576
3577
3578
3579
3580
3581
3582
3583
3584
3585
3586
3587
3588
3589
3590
3591
3592
3593
3594
3595
3596
3597
3598
3599
3600
3601
3602
3603
3604
3605
3606
3607
3608
3609
3610
3611
3612
3613
3614
3615
3616
3617
3618
3619
3620
3621
3622
3623
3624
3625
3626
3627
3628
3629
3630
3631
3632
3633
3634
3635
3636
3637
3638
3639
3640
3641
3642
3643
3644
3645
3646
3647
3648
3649
3650
3651
3652
3653
3654
3655
3656
3657
3658
3659
3660
3661
3662
3663
3664
3665
3666
3667
3668
3669
3670
3671
3672
3673
3674
3675
3676
3677
3678
3679
3680
3681
3682
3683
3684
3685
3686
3687
3688
3689
3690
3691
3692
3693
3694
3695
3696
3697
3698
3699
3700
3701
3702
3703
3704
3705
3706
3707
3708
3709
3710
3711
3712
3713
3714
3715
3716
3717
3718
3719
3720
3721
3722
3723
3724
3725
3726
3727
3728
3729
3730
3731
3732
3733
3734
3735
3736
3737
3738
3739
3740
3741
3742
3743
3744
3745
3746
3747
3748
3749
3750
3751
3752
3753
3754
3755
3756
3757
3758
3759
3760
3761
3762
3763
3764
3765
3766
3767
3768
3769
3770
3771
3772
3773
3774
3775
3776
3777
3778
3779
3780
3781
3782
3783
3784
3785
3786
3787
3788
3789
3790
3791
3792
3793
3794
3795
3796
3797
3798
3799
3800
3801
3802
3803
3804
3805
3806
3807
3808
3809
3810
3811
3812
3813
3814
3815
3816
3817
3818
3819
3820
3821
3822
3823
3824
3825
3826
3827
3828
3829
3830
3831
3832
3833
3834
3835
3836
3837
3838
3839
3840
3841
3842
3843
3844
3845
3846
3847
3848
3849
3850
3851
3852
3853
3854
3855
3856
3857
3858
3859
3860
3861
3862
3863
3864
3865
3866
3867
3868
3869
3870
3871
3872
3873
3874
3875
3876
3877
3878
3879
3880
3881
3882
3883
3884
3885
3886
3887
3888
3889
3890
3891
3892
3893
3894
3895
3896
3897
3898
3899
3900
3901
3902
3903
3904
3905
3906
3907
3908
3909
3910
3911
3912
3913
3914
3915
3916
3917
3918
3919
3920
3921
3922
3923
3924
3925
3926
3927
3928
3929
3930
3931
3932
3933
3934
3935
3936
3937
3938
3939
3940
3941
3942
3943
3944
3945
3946
3947
3948
3949
3950
3951
3952
3953
3954
3955
3956
3957
3958
3959
3960
3961
3962
3963
3964
3965
3966
3967
3968
3969
3970
3971
3972
3973
3974
3975
3976
3977
3978
3979
3980
3981
3982
3983
3984
3985
3986
3987
3988
3989
3990
3991
3992
3993
3994
3995
3996
3997
3998
3999
4000
4001
4002
4003
4004
4005
4006
4007
4008
4009
4010
4011
4012
4013
4014
4015
4016
4017
4018
4019
4020
4021
4022
4023
4024
4025
4026
4027
4028
4029
4030
4031
4032
4033
4034
4035
4036
4037
4038
4039
4040
4041
4042
4043
4044
4045
4046
4047
4048
4049
4050
4051
4052
4053
4054
4055
4056
4057
4058
4059
4060
4061
4062
4063
4064
4065
4066
4067
4068
4069
4070
4071
4072
4073
4074
4075
4076
4077
4078
4079
4080
4081
4082
4083
4084
4085
4086
4087
4088
4089
4090
4091
4092
4093
4094
4095
4096
4097
4098
4099
4100
4101
4102
4103
4104
4105
4106
4107
4108
4109
4110
4111
4112
4113
4114
4115
4116
4117
4118
4119
4120
4121
4122
4123
4124
4125
4126
4127
4128
4129
4130
4131
4132
4133
4134
4135
4136
4137
4138
4139
4140
4141
4142
4143
4144
4145
4146
4147
4148
4149
4150
4151
4152
4153
4154
4155
4156
4157
4158
4159
4160
4161
4162
4163
4164
4165
4166
4167
4168
4169
4170
4171
4172
4173
4174
4175
4176
4177
4178
4179
4180
4181
4182
4183
4184
4185
4186
4187
4188
4189
4190
4191
4192
4193
4194
4195
4196
4197
4198
4199
4200
4201
4202
4203
4204
4205
4206
4207
4208
4209
4210
4211
4212
4213
4214
4215
4216
4217
4218
4219
4220
4221
4222
4223
4224
4225
4226
4227
4228
4229
4230
4231
4232
4233
4234
4235
4236
4237
4238
4239
4240
4241
4242
4243
4244
4245
4246
4247
4248
4249
4250
4251
4252
4253
4254
4255
4256
4257
4258
4259
4260
4261
4262
4263
4264
4265
4266
4267
4268
4269
4270
4271
4272
4273
4274
4275
4276
4277
4278
4279
4280
4281
4282
4283
4284
4285
4286
4287
4288
4289
4290
4291
4292
4293
4294
4295
4296
4297
4298
4299
4300
4301
4302
4303
4304
4305
4306
4307
4308
4309
4310
4311
4312
4313
4314
4315
4316
4317
4318
4319
4320
4321
4322
4323
4324
4325
4326
4327
4328
4329
4330
4331
4332
4333
4334
4335
4336
4337
4338
4339
4340
4341
4342
4343
4344
4345
4346
4347
4348
4349
4350
4351
4352
4353
4354
4355
4356
4357
4358
4359
4360
4361
4362
4363
4364
4365
4366
4367
4368
4369
4370
4371
4372
4373
4374
4375
4376
4377
4378
4379
4380
4381
4382
4383
4384
4385
4386
4387
4388
4389
4390
4391
4392
4393
4394
4395
4396
4397
4398
4399
4400
4401
4402
4403
4404
4405
4406
4407
4408
4409
4410
4411
4412
4413
4414
4415
4416
4417
4418
4419
4420
4421
4422
4423
4424
4425
4426
4427
4428
4429
4430
4431
4432
4433
4434
4435
4436
4437
4438
4439
4440
4441
4442
4443
4444
4445
4446
4447
4448
4449
4450
4451
4452
4453
4454
4455
4456
4457
4458
4459
4460
4461
4462
4463
4464
4465
4466
4467
4468
4469
4470
4471
4472
4473
4474
4475
4476
4477
4478
4479
4480
4481
4482
4483
4484
4485
4486
4487
4488
4489
4490
4491
4492
4493
4494
4495
4496
4497
4498
4499
4500
4501
4502
4503
4504
4505
4506
4507
4508
4509
4510
4511
4512
4513
4514
4515
4516
4517
4518
4519
4520
4521
4522
4523
4524
4525
4526
4527
4528
4529
4530
4531
4532
4533
4534
4535
4536
4537
4538
4539
4540
4541
4542
4543
4544
4545
4546
4547
4548
4549
4550
4551
4552
4553
4554
4555
4556
4557
4558
4559
4560
4561
4562
4563
4564
4565
4566
4567
4568
4569
4570
4571
4572
4573
4574
4575
4576
4577
4578
4579
4580
4581
4582
4583
4584
4585
4586
4587
4588
4589
4590
4591
4592
4593
4594
4595
4596
4597
4598
4599
4600
4601
4602
4603
4604
4605
4606
4607
4608
4609
4610
4611
4612
4613
4614
4615
4616
4617
4618
4619
4620
4621
4622
4623
4624
4625
4626
4627
4628
4629
4630
4631
4632
4633
4634
4635
4636
4637
4638
4639
4640
4641
4642
4643
4644
4645
4646
4647
4648
4649
4650
4651
4652
4653
4654
4655
4656
4657
4658
4659
4660
4661
4662
4663
4664
4665
4666
4667
4668
4669
4670
4671
4672
4673
4674
4675
4676
4677
4678
4679
4680
4681
4682
4683
4684
4685
4686
4687
4688
4689
4690
4691
4692
4693
4694
4695
4696
4697
4698
4699
4700
4701
4702
4703
4704
4705
4706
4707
4708
4709
4710
4711
4712
4713
4714
4715
4716
4717
4718
4719
4720
4721
4722
4723
4724
4725
4726
4727
4728
4729
4730
4731
4732
4733
4734
4735
4736
4737
4738
4739
4740
4741
4742
4743
4744
4745
4746
4747
4748
4749
4750
4751
4752
4753
4754
4755
4756
4757
4758
4759
4760
4761
4762
4763
4764
4765
4766
4767
4768
4769
4770
4771
4772
4773
4774
4775
4776
4777
4778
4779
4780
4781
4782
4783
4784
4785
4786
4787
4788
4789
4790
4791
4792
4793
4794
4795
4796
4797
4798
4799
4800
4801
4802
4803
4804
4805
4806
4807
4808
4809
4810
4811
4812
4813
4814
4815
4816
4817
4818
4819
4820
4821
4822
4823
4824
4825
4826
4827
4828
4829
4830
4831
4832
4833
4834
4835
4836
4837
4838
4839
4840
4841
4842
4843
4844
4845
4846
4847
4848
4849
4850
4851
4852
4853
4854
4855
4856
4857
4858
4859
4860
4861
4862
4863
4864
4865
4866
4867
4868
4869
4870
4871
4872
4873
4874
4875
4876
4877
4878
4879
4880
4881
4882
4883
4884
4885
4886
4887
4888
4889
4890
4891
4892
4893
4894
4895
4896
4897
4898
4899
4900
4901
4902
4903
4904
4905
4906
4907
4908
4909
4910
4911
4912
4913
4914
4915
4916
4917
4918
4919
4920
4921
4922
4923
4924
4925
4926
4927
4928
4929
4930
4931
4932
4933
4934
4935
4936
4937
4938
4939
4940
4941
4942
4943
4944
4945
4946
4947
4948
4949
4950
4951
4952
4953
4954
4955
4956
4957
4958
4959
4960
4961
4962
4963
4964
4965
4966
4967
4968
4969
4970
4971
4972
4973
4974
4975
4976
4977
4978
4979
4980
4981
4982
4983
4984
4985
4986
4987
4988
4989
4990
4991
4992
4993
4994
4995
4996
4997
4998
4999
5000
5001
5002
5003
5004
5005
5006
5007
5008
5009
5010
5011
5012
5013
5014
5015
5016
5017
5018
5019
5020
5021
5022
5023
5024
5025
5026
5027
5028
5029
5030
5031
5032
5033
5034
5035
5036
5037
5038
5039
5040
5041
5042
5043
5044
5045
5046
5047
5048
5049
5050
5051
5052
5053
5054
5055
5056
5057
5058
5059
5060
5061
5062
5063
5064
5065
5066
5067
5068
5069
5070
5071
5072
5073
5074
5075
5076
5077
5078
5079
5080
5081
5082
5083
5084
5085
5086
5087
5088
5089
5090
5091
5092
5093
5094
5095
5096
5097
5098
5099
5100
5101
5102
5103
5104
5105
5106
5107
5108
5109
5110
5111
5112
5113
5114
5115
5116
5117
5118
5119
5120
5121
5122
5123
5124
5125
5126
5127
5128
5129
5130
5131
5132
5133
5134
5135
5136
5137
5138
5139
5140
5141
5142
5143
5144
5145
5146
5147
5148
5149
5150
5151
5152
5153
5154
5155
5156
5157
5158
5159
5160
5161
5162
5163
5164
5165
5166
5167
5168
5169
5170
5171
5172
5173
5174
5175
5176
5177
5178
5179
5180
5181
5182
5183
5184
5185
5186
5187
5188
5189
5190
5191
5192
5193
5194
5195
5196
5197
5198
5199
5200
5201
5202
5203
5204
5205
5206
5207
5208
5209
5210
5211
5212
5213
5214
5215
5216
5217
5218
5219
5220
5221
5222
5223
5224
5225
5226
5227
5228
5229
5230
5231
5232
5233
5234
5235
5236
5237
5238
5239
5240
5241
5242
5243
5244
5245
5246
5247
5248
5249
5250
5251
5252
5253
5254
5255
5256
5257
5258
5259
5260
5261
5262
5263
5264
5265
5266
5267
5268
5269
5270
5271
5272
5273
5274
5275
5276
5277
5278
5279
5280
5281
5282
5283
5284
5285
5286
5287
5288
5289
5290
5291
5292
5293
5294
5295
5296
5297
5298
5299
5300
5301
5302
5303
5304
5305
5306
5307
5308
5309
5310
5311
5312
5313
5314
5315
5316
5317
5318
5319
5320
5321
5322
5323
5324
5325
5326
5327
5328
5329
5330
5331
5332
5333
5334
5335
5336
5337
5338
5339
5340
5341
5342
5343
5344
5345
5346
5347
5348
5349
5350
5351
5352
5353
5354
5355
5356
5357
5358
5359
5360
5361
5362
5363
5364
5365
5366
5367
5368
5369
5370
5371
5372
5373
5374
5375
5376
5377
5378
5379
5380
5381
5382
5383
5384
5385
5386
5387
5388
5389
5390
5391
5392
5393
5394
5395
5396
5397
5398
5399
5400
5401
5402
5403
5404
5405
5406
5407
5408
5409
5410
5411
5412
5413
5414
5415
5416
5417
5418
5419
5420
5421
5422
5423
5424
5425
5426
5427
5428
5429
5430
5431
5432
5433
5434
5435
5436
5437
5438
5439
5440
5441
5442
5443
5444
5445
5446
5447
5448
5449
5450
5451
5452
5453
5454
5455
5456
5457
5458
5459
5460
5461
5462
5463
5464
5465
5466
5467
5468
5469
5470
5471
5472
5473
5474
5475
5476
5477
5478
5479
5480
5481
5482
5483
5484
5485
5486
5487
5488
5489
5490
5491
5492
5493
5494
5495
5496
5497
5498
5499
5500
5501
5502
5503
5504
5505
5506
5507
5508
5509
5510
5511
5512
5513
5514
5515
5516
5517
5518
5519
5520
5521
5522
5523
5524
5525
5526
5527
5528
5529
5530
5531
5532
5533
5534
5535
5536
5537
5538
5539
5540
5541
5542
5543
5544
5545
5546
5547
5548
5549
5550
5551
5552
5553
5554
5555
5556
5557
5558
5559
5560
5561
5562
5563
5564
5565
5566
5567
5568
5569
5570
5571
5572
5573
5574
5575
5576
5577
5578
5579
5580
5581
5582
5583
5584
5585
5586
5587
5588
5589
5590
5591
5592
5593
5594
5595
5596
5597
5598
5599
5600
5601
5602
5603
5604
5605
5606
5607
5608
5609
5610
5611
5612
5613
5614
5615
5616
5617
5618
5619
5620
5621
5622
5623
5624
5625
5626
5627
5628
5629
5630
5631
5632
5633
5634
5635
5636
5637
5638
5639
5640
5641
5642
5643
5644
5645
5646
5647
5648
5649
5650
5651
5652
5653
5654
5655
5656
5657
5658
5659
5660
5661
5662
5663
5664
5665
5666
5667
5668
5669
5670
5671
5672
5673
5674
5675
5676
5677
5678
5679
5680
5681
5682
5683
5684
5685
5686
5687
5688
5689
5690
5691
5692
5693
5694
5695
5696
5697
5698
5699
5700
5701
5702
5703
5704
5705
5706
5707
5708
5709
5710
5711
5712
5713
5714
5715
5716
5717
5718
5719
5720
5721
5722
5723
5724
5725
5726
5727
5728
5729
5730
5731
5732
5733
5734
5735
5736
5737
5738
5739
5740
5741
5742
5743
5744
5745
5746
5747
5748
5749
5750
5751
5752
5753
5754
5755
5756
5757
5758
5759
5760
5761
5762
5763
5764
5765
5766
5767
5768
5769
5770
5771
5772
5773
5774
5775
5776
5777
5778
5779
5780
5781
5782
5783
5784
5785
5786
5787
5788
5789
5790
5791
5792
5793
5794
5795
5796
5797
5798
5799
5800
5801
5802
5803
5804
5805
5806
5807
5808
5809
5810
5811
5812
5813
5814
5815
5816
5817
5818
5819
5820
5821
5822
5823
5824
5825
5826
5827
5828
5829
5830
5831
5832
5833
5834
5835
5836
5837
5838
5839
5840
5841
5842
5843
5844
5845
5846
5847
5848
5849
5850
5851
5852
5853
5854
5855
5856
5857
5858
5859
5860
5861
5862
5863
5864
5865
5866
5867
5868
5869
5870
5871
5872
5873
5874
5875
5876
5877
5878
5879
5880
5881
5882
5883
5884
5885
5886
5887
5888
5889
5890
5891
5892
5893
5894
5895
5896
5897
5898
5899
5900
5901
5902
5903
5904
5905
5906
5907
5908
5909
5910
5911
5912
5913
5914
5915
5916
5917
5918
5919
5920
5921
5922
5923
5924
5925
5926
5927
5928
5929
5930
5931
5932
5933
5934
5935
5936
5937
5938
5939
5940
5941
5942
5943
5944
5945
5946
5947
5948
5949
5950
5951
5952
5953
5954
5955
5956
5957
5958
5959
5960
5961
5962
5963
5964
5965
5966
5967
5968
5969
5970
5971
5972
5973
5974
5975
5976
5977
5978
5979
5980
5981
5982
5983
5984
5985
5986
5987
5988
5989
5990
5991
5992
5993
5994
5995
5996
5997
5998
5999
6000
6001
6002
6003
6004
6005
6006
6007
6008
6009
6010
6011
6012
6013
6014
6015
6016
6017
6018
6019
6020
6021
6022
6023
6024
6025
6026
6027
6028
6029
6030
6031
6032
6033
6034
6035
6036
6037
6038
6039
6040
6041
6042
6043
6044
6045
6046
6047
6048
6049
6050
6051
6052
6053
6054
6055
6056
6057
6058
6059
6060
6061
6062
6063
6064
6065
6066
6067
6068
6069
6070
6071
6072
6073
6074
6075
6076
6077
6078
6079
6080
6081
6082
6083
6084
6085
6086
6087
6088
6089
6090
6091
6092
6093
6094
6095
6096
6097
6098
6099
6100
6101
6102
6103
6104
6105
6106
6107
6108
6109
6110
6111
6112
6113
6114
6115
6116
6117
6118
6119
6120
6121
6122
6123
6124
6125
6126
6127
6128
6129
6130
6131
6132
6133
6134
6135
6136
6137
6138
6139
6140
6141
6142
6143
6144
6145
6146
6147
6148
6149
6150
6151
6152
6153
6154
6155
6156
6157
6158
6159
6160
6161
6162
6163
6164
6165
6166
6167
6168
6169
6170
6171
6172
6173
6174
6175
6176
6177
6178
6179
6180
6181
6182
6183
6184
6185
6186
6187
6188
6189
6190
6191
6192
6193
6194
6195
6196
6197
6198
6199
6200
6201
6202
6203
6204
6205
6206
6207
6208
6209
6210
6211
6212
6213
6214
6215
6216
6217
6218
6219
6220
6221
6222
6223
6224
6225
6226
6227
6228
6229
6230
6231
6232
6233
6234
6235
6236
6237
6238
6239
6240
6241
6242
6243
6244
6245
6246
6247
6248
6249
6250
6251
6252
6253
6254
6255
6256
6257
6258
6259
6260
6261
6262
6263
6264
6265
6266
6267
6268
6269
6270
6271
6272
6273
6274
6275
6276
6277
6278
6279
6280
6281
6282
6283
6284
6285
6286
6287
6288
6289
6290
6291
6292
6293
6294
6295
6296
6297
6298
6299
6300
6301
6302
6303
6304
6305
6306
6307
6308
6309
6310
6311
6312
6313
6314
6315
6316
6317
6318
6319
6320
6321
6322
6323
6324
6325
6326
6327
6328
6329
6330
6331
6332
6333
6334
6335
6336
6337
6338
6339
6340
6341
6342
6343
6344
6345
6346
6347
6348
6349
6350
6351
6352
6353
6354
6355
6356
6357
6358
6359
6360
6361
6362
6363
6364
6365
6366
6367
6368
6369
6370
6371
6372
6373
6374
6375
6376
6377
6378
6379
6380
6381
6382
6383
6384
6385
6386
6387
6388
6389
6390
6391
6392
6393
6394
6395
6396
6397
6398
6399
6400
6401
6402
6403
6404
6405
6406
6407
6408
6409
6410
6411
6412
6413
6414
6415
6416
6417
6418
6419
6420
6421
6422
6423
6424
6425
6426
6427
6428
6429
6430
6431
6432
6433
6434
6435
6436
6437
6438
6439
6440
6441
6442
6443
6444
6445
6446
6447
6448
6449
6450
6451
6452
6453
6454
6455
6456
6457
6458
6459
6460
6461
6462
6463
6464
6465
6466
6467
6468
6469
6470
6471
6472
6473
6474
6475
6476
6477
6478
6479
6480
6481
6482
6483
6484
6485
6486
6487
6488
6489
6490
6491
6492
6493
6494
6495
6496
6497
6498
6499
6500
6501
6502
6503
6504
6505
6506
6507
6508
6509
6510
6511
6512
6513
6514
6515
6516
6517
6518
6519
6520
6521
6522
6523
6524
6525
6526
6527
6528
6529
6530
6531
6532
6533
6534
6535
6536
6537
6538
6539
6540
6541
6542
6543
6544
6545
6546
6547
6548
6549
6550
6551
6552
6553
6554
6555
6556
6557
6558
6559
6560
6561
6562
6563
6564
6565
6566
6567
6568
6569
6570
6571
6572
6573
6574
6575
6576
6577
6578
6579
6580
6581
6582
6583
6584
6585
6586
6587
6588
6589
6590
6591
6592
6593
6594
6595
6596
6597
6598
6599
6600
6601
6602
6603
6604
6605
6606
6607
6608
6609
6610
6611
6612
6613
6614
6615
6616
6617
6618
6619
6620
6621
6622
6623
6624
6625
6626
6627
6628
6629
6630
6631
6632
6633
6634
6635
6636
6637
6638
6639
6640
6641
6642
6643
6644
6645
6646
6647
6648
6649
6650
6651
6652
6653
6654
6655
6656
6657
6658
6659
6660
6661
6662
6663
6664
6665
6666
6667
6668
6669
6670
6671
6672
6673
6674
6675
6676
6677
6678
6679
6680
6681
6682
6683
6684
6685
6686
6687
6688
6689
6690
6691
6692
6693
6694
6695
6696
6697
6698
6699
6700
6701
6702
6703
6704
6705
6706
6707
6708
6709
6710
6711
6712
6713
6714
6715
6716
6717
6718
6719
6720
6721
6722
6723
6724
6725
6726
6727
6728
6729
6730
6731
6732
6733
6734
6735
6736
6737
6738
6739
6740
6741
6742
6743
6744
6745
6746
6747
6748
6749
6750
6751
6752
6753
6754
6755
6756
6757
6758
6759
6760
6761
6762
6763
6764
6765
6766
6767
6768
6769
6770
6771
6772
6773
6774
6775
6776
6777
6778
6779
6780
6781
6782
6783
6784
6785
6786
6787
6788
6789
6790
6791
6792
6793
6794
6795
6796
6797
6798
6799
6800
6801
6802
6803
6804
6805
6806
6807
6808
6809
6810
6811
6812
6813
6814
6815
6816
6817
6818
6819
6820
6821
6822
6823
6824
6825
6826
6827
6828
6829
6830
6831
6832
6833
6834
6835
6836
6837
6838
6839
6840
6841
6842
6843
6844
6845
6846
6847
6848
6849
6850
6851
6852
6853
6854
6855
6856
6857
6858
6859
6860
6861
6862
6863
6864
6865
6866
6867
6868
6869
6870
6871
6872
6873
6874
6875
6876
6877
6878
6879
6880
6881
6882
6883
6884
6885
6886
6887
6888
6889
6890
6891
6892
6893
6894
6895
6896
6897
6898
6899
6900
6901
6902
6903
6904
6905
6906
6907
6908
6909
6910
6911
6912
6913
6914
6915
6916
6917
6918
6919
6920
6921
6922
6923
6924
6925
6926
6927
6928
6929
6930
6931
6932
6933
6934
6935
6936
6937
6938
6939
6940
6941
6942
6943
6944
6945
6946
6947
6948
6949
6950
6951
6952
6953
6954
6955
6956
6957
6958
6959
6960
6961
6962
6963
6964
6965
6966
6967
6968
6969
6970
6971
6972
6973
6974
6975
6976
6977
6978
6979
6980
6981
6982
6983
6984
6985
6986
6987
6988
6989
6990
6991
6992
6993
6994
6995
6996
6997
6998
6999
7000
7001
7002
7003
7004
7005
7006
7007
7008
7009
7010
7011
7012
7013
7014
7015
7016
7017
7018
7019
7020
7021
7022
7023
7024
7025
7026
7027
7028
7029
7030
7031
7032
7033
7034
7035
7036
7037
7038
7039
7040
7041
7042
7043
7044
7045
7046
7047
7048
7049
7050
7051
7052
7053
7054
7055
7056
7057
7058
7059
7060
7061
7062
7063
7064
7065
7066
7067
7068
7069
7070
7071
7072
7073
7074
7075
7076
7077
7078
7079
7080
7081
7082
7083
7084
7085
7086
7087
7088
7089
7090
7091
7092
7093
7094
7095
7096
7097
7098
7099
7100
7101
7102
7103
7104
7105
7106
7107
7108
7109
7110
7111
7112
7113
7114
7115
7116
7117
7118
7119
7120
7121
7122
7123
7124
7125
7126
7127
7128
7129
7130
7131
7132
7133
7134
7135
7136
7137
7138
7139
7140
7141
7142
7143
7144
7145
7146
7147
7148
7149
7150
7151
7152
7153
7154
7155
7156
7157
7158
7159
7160
7161
7162
7163
7164
7165
7166
7167
7168
7169
7170
7171
7172
7173
7174
7175
7176
7177
7178
7179
7180
7181
7182
7183
7184
7185
7186
7187
7188
7189
7190
7191
7192
7193
7194
7195
7196
7197
7198
7199
7200
7201
7202
7203
7204
7205
7206
7207
7208
7209
7210
7211
7212
7213
7214
7215
7216
7217
7218
7219
7220
7221
7222
7223
7224
7225
7226
7227
7228
7229
7230
7231
7232
7233
7234
7235
7236
7237
7238
7239
7240
7241
7242
7243
7244
7245
7246
7247
7248
7249
7250
7251
7252
7253
7254
7255
7256
7257
7258
7259
7260
7261
7262
7263
7264
7265
7266
7267
7268
7269
7270
7271
7272
7273
7274
7275
7276
7277
7278
7279
7280
7281
7282
7283
7284
7285
7286
7287
7288
7289
7290
7291
7292
7293
7294
7295
7296
7297
7298
7299
7300
7301
7302
7303
7304
7305
7306
7307
7308
7309
7310
7311
7312
7313
7314
7315
7316
7317
7318
7319
7320
7321
7322
7323
7324
7325
7326
7327
7328
7329
7330
7331
7332
7333
7334
7335
7336
7337
7338
7339
7340
7341
7342
7343
7344
7345
7346
7347
7348
7349
7350
7351
7352
7353
7354
7355
7356
7357
7358
7359
7360
7361
7362
7363
7364
7365
7366
7367
7368
7369
7370
7371
7372
7373
7374
7375
7376
7377
7378
7379
7380
7381
7382
7383
7384
7385
7386
7387
7388
7389
7390
7391
7392
7393
7394
7395
7396
7397
7398
7399
7400
7401
7402
7403
7404
7405
7406
7407
7408
7409
7410
7411
7412
7413
7414
7415
7416
7417
7418
7419
7420
7421
7422
7423
7424
7425
7426
7427
7428
7429
7430
7431
7432
7433
7434
7435
7436
7437
7438
7439
7440
7441
7442
7443
7444
7445
7446
7447
7448
7449
7450
7451
7452
7453
7454
7455
7456
7457
7458
7459
7460
7461
7462
7463
7464
7465
7466
7467
7468
7469
7470
7471
7472
7473
7474
7475
7476
7477
7478
7479
7480
7481
7482
7483
7484
7485
7486
7487
7488
7489
7490
7491
7492
7493
7494
7495
7496
7497
7498
7499
7500
7501
7502
7503
7504
7505
7506
7507
7508
7509
7510
7511
7512
7513
7514
7515
7516
7517
7518
7519
7520
7521
7522
7523
7524
7525
7526
7527
7528
7529
7530
7531
7532
7533
7534
7535
7536
7537
7538
7539
7540
7541
7542
7543
7544
7545
7546
7547
7548
7549
7550
7551
7552
7553
7554
7555
7556
7557
7558
7559
7560
7561
7562
7563
7564
7565
7566
7567
7568
7569
7570
7571
7572
7573
7574
7575
7576
7577
7578
7579
7580
7581
7582
7583
7584
7585
7586
7587
7588
7589
7590
7591
7592
7593
7594
7595
7596
7597
7598
7599
7600
7601
7602
7603
7604
7605
7606
7607
7608
7609
7610
7611
7612
7613
7614
7615
7616
7617
7618
7619
7620
7621
7622
7623
7624
7625
7626
7627
7628
7629
7630
7631
7632
7633
7634
7635
7636
7637
7638
7639
7640
7641
7642
7643
7644
7645
7646
7647
7648
7649
7650
7651
7652
7653
7654
7655
7656
7657
7658
7659
7660
7661
7662
7663
7664
7665
7666
7667
7668
7669
7670
7671
7672
7673
7674
7675
7676
7677
7678
7679
7680
7681
7682
7683
2008-06-09  Ville Vainio <vivainio@gmail.com>

	* Extensions/ipy_autoreload.py: Apply Pauli Virtanen's patch
	to autoreloading that also replaces the changed code objects 
	with new versions

	* pspersistence.py: report UsageError on %store -w w/o arg,
	and other usage pattern errors. Bug report by Johann Cohen-Tanugi.
	
	
2008-06-03  Ville Vainio <vivainio@gmail.com>

	* ipython.rst, ipython.1: remove -twisted from man page,
	add -pydb to both man page and manual.

	* pspersistence.py: report UsageError on %store -w w/o arg,
	and other usage pattern errors. Bug report by Johann Cohen-Tanugi.

2008-06-02  Fernando Perez  <Fernando.Perez@berkeley.edu>

	* IPython/Shell.py (MatplotlibShellBase._matplotlib_config): add
	numpy/np/pyplot/plt imports according to new conventions we're
	trying to standardize on.  This only affects the -pylab mode.

2008-05-31  Fernando Perez  <Fernando.Perez@berkeley.edu>

	* IPython/ipmaker.py (make_IPython): The -twisted option is fully
	disabled.

2008-05-31  *** Released version 0.8.4

2008-05-31  Fernando Perez  <Fernando.Perez@berkeley.edu>

	* IPython/ipmaker.py (make_IPython): The -twisted option is fully
	disabled.

	* IPython/Shell.py (_select_shell): completely disable -twisted.
	This code is of dubious quality and  normal users should not
	encounter it until we can clarify things further, even under
	win32.  Since we need a quick emergency 0.8.4 release, it is now
	disabled completely.  Users who want to run it can use the
	following command (it's easy to put it in an alias or script):
	
	python -c"from IPython import twshell;twshell.IPShellTwisted().mainloop()"

2008-05-30  Ville Vainio <vivainio@gmail.com>

	* shell.py: disable -twisted on non-win32 platforms.
	import sets module on python 2.3.

	* ipy_profile_sh.py: disable ipy_signals. Now, ipython
	is verified to work with python 2.3
	
	* Release.py: update version to 0.8.4 for quick point fix

2008-05-28  *** Released version 0.8.3

2008-05-28  Fernando Perez  <Fernando.Perez@berkeley.edu>

	* ../win32_manual_post_install.py (run): Fix the windows installer
	so the links to the docs are correct.

	* IPython/ultraTB.py: flush stderr after writing to it to fix
	problems with exception traceback ordering in some platforms.
	Thanks to a report/fix by Jie Tang <jietang86-AT-gmail.com>.

	* IPython/Magic.py (magic_cpaste): add stripping of continuation
	prompts, feature requested by Stefan vdW.

	* ../setup.py: updates to build and release tools in preparation
	for 0.8.3 release.

2008-05-27  Ville Vainio <vivainio@gmail.com>

	* iplib.py, ipmaker.py: survive lack of doctest and site._Helper
	for minimal environments (e.g. Maemo sdk python)

	* Magic.py: cpaste strips whitespace before >>> (allow pasting
	doctests)

	* ipy_completers.py: cd completer now does recursive path expand
	(old behaviour is buggy on some readline versions)

2008-05-14  Ville Vainio <vivainio@gmail.com>

	* Extensions/ipy_greedycompleter.py: 
	New extension that enables a bit more "relaxed" tab 
	completer that evaluates code without safety checks
	(i.e. there can be side effects like function calls)

2008-04-20  Ville Vainio <vivainio@gmail.com>

	* Extensions/ipy_lookfor.py: add %lookfor magic command
	(search docstrings for words) by Pauli Virtanen. Close #245.

	* Extension/ipy_jot.py: %jot and %read magics, analogous
	to %store but you can specify some notes. Not read 
	in automatically on startup, you need %read.
	Contributed by Yichun Wei.

2008-04-18  Fernando Perez  <Fernando.Perez@berkeley.edu>

	* IPython/genutils.py (page): apply workaround to curses bug that
	can leave terminal corrupted after a call to initscr().

2008-04-15  Ville Vainio <vivainio@gmail.com>

	* genutils.py: SList.grep supports 'field' argument

	* ipy_completers.py: module completer looks inside
	.egg zip files (patch by mc). Close #196.

2008-04-09  Ville Vainio <vivainio@gmail.com>

	* deep_reload.py: do not crash on from __future__ import 
	absolute_import. Close #244.

2008-04-02  Ville Vainio <vivainio@gmail.com>

	* ipy_winpdb.py: New extension for winpdb integration.  %wdb
	test.py is winpdb equivalent of %run -d test.py.  winpdb is a
	crossplatform remote GUI debugger based on wxpython.

2008-03-29  Ville Vainio <vivainio@gmail.com>

	* ipython.rst, do_sphinx.py: New documentation base, based on
	reStucturedText and Sphinx (html/pdf generation).  The old Lyx
	based documentation will not be updated anymore.

	* jobctrl.py: Use shell in Popen for 'start' command (in windows).

2008-03-24  Ville Vainio <vivainio@gmail.com>

	* ipython.rst, do_sphinx.py: New documentation base, based on
	reStucturedText and Sphinx (html/pdf generation).  The old Lyx
	based documentation will not be updated anymore.

	ipython.rst has up to date documentation on matters that were not
	documented at all, and it also removes various
	misdocumented/deprecated features.
	
2008-03-22  Ville Vainio <vivainio@gmail.com>

	* Shell.py: Merge mtexp branch:
	https://code.launchpad.net/~ipython/ipython/mtexp

	Privides simpler and more robust MTInteractiveShell that won't
	deadlock, even when the worker thread (GUI) stops doing runcode()
	regularly. r71.

2008-03-20  Ville Vainio <vivainio@gmail.com>

	* twshell.py: New shell that runs IPython code in Twisted reactor.
	Launch by doing ipython -twisted. r67.

2008-03-19  Ville Vainio <vivainio@gmail.com>

	* Magic.py: %rehashx works correctly when shadowed system commands
	have upper case characters (e.g. Print.exe). r64.

	* ipy_bzr.py, ipy_app_completers.py: new bzr completer that also
	knows options to commands, based on bzrtools. Uses bzrlib
	directly. r66.

2008-03-16  Ville Vainio <vivainio@gmail.com>

	* make_tarball.py: Fixed for bzr.

	* ipapi.py: Better _ip.runlines() script cleanup. r56,r79.

	 * ipy_vimserver.py, ipy.vim: New extension for vim server mode,
	 by Erich Heine.

2008-03-12  Ville Vainio <vivainio@gmail.com>

	* ipmaker.py: Force (reload?) import of ipy_user_conf and
	ipy_profile_foo, so that embedded instances can be relaunched and
	configuration is still done. r50

	* ipapi.py, test_embed.py: Allow specifying shell class in
	launch_new_instance & make_new instance. Use this in
	test_embed.py. r51.

	test_embed.py is also a good and simple demo of embedding IPython.
	

2008-03-10  Ville Vainio <vivainio@gmail.com>

	* tool/update_revnum.py: Change to bzr revisioning scheme in 
	revision numbers.

	* Shell.py: Threading improvements:

	In multithreaded shells, do not hang on macros and o.autoexec
	commands (or anything executed with _ip.runlines()) anymore. Allow
	recursive execution of IPython code in
	MTInteractiveShell.runsource by checking if we are already in
	worker thread, and execute code directly if we are. r48.

	MTInteractiveShell.runsource: execute code directly if worker
	thread is not running yet (this is the case in config files). r49.

2008-03-09  Ville Vainio <vivainio@gmail.com>

	* ipy_profile_sh.py: You can now use $LA or LA() to refer to last
	argument of previous command in sh profile. Similar to bash '!$'.
	LA(3) or $LA(3) stands for last argument of input history command 
	3.

	* Shell.py: -pylab names don't clutter %whos listing.

2008-03-07  Ville Vainio <vivainio@gmail.com>

	* ipy_autoreload.py: new extension (by Pauli Virtanen) for 
	autoreloading modules; try %autoreload and %aimport. Close #154.
	Uses the new pre_runcode_hook.

2008-02-24  Ville Vainio <vivainio@gmail.com>

	* platutils_posix.py: freeze_term_title works

2008-02-21  Ville Vainio <vivainio@gmail.com>

	* Magic.py: %quickref does not crash with empty docstring

2008-02-20  Ville Vainio <vivainio@gmail.com>

	* completer.py: do not treat [](){} as protectable chars anymore,
	close #233.

	* completer.py: do not treat [](){} as protectable chars anymore
	
	* magic.py, test_cpaste.py: Allow different prefix for pasting 
	from email

2008-02-17  Ville Vainio <vivainio@gmail.com>

	* Switched over to Launchpad/bzr as primary VCS.

2008-02-14  Ville Vainio <vivainio@gmail.com>

	* ipapi.py: _ip.runlines() is now much more liberal about 
	indentation - it cleans up the scripts it gets
	
2008-02-14  Ville Vainio <vivainio@gmail.com>

	* Extensions/ipy_leo.py: created 'ILeo' IPython-Leo bridge.
	Changes to it (later on) are too numerous to list in ChangeLog
	until it stabilizes
	
2008-02-07  Darren Dale <darren.dale@cornell.edu>

	* IPython/Shell.py: Call QtCore.pyqtRemoveInputHook() when creating
	an IPShellQt4. PyQt4-4.2.1 and later uses PyOS_InputHook to improve 
	interaction in the interpreter (like Tkinter does), but it seems to 
	partially interfere with the IPython implementation and exec_()
	still seems to block. So we disable the PyQt implementation and
	stick with the IPython one for now.

2008-02-02  Walter Doerwald  <walter@livinglogic.de>

	* ipipe.py: A new ipipe table has been added: ialias produces all
	entries from IPython's alias table.
	
2008-02-01  Fernando Perez  <Fernando.Perez@colorado.edu>

	* IPython/Shell.py (MTInteractiveShell.runcode): Improve handling
	of KBINT in threaded shells.  After code provided by Marc in #212.

2008-01-30  Fernando Perez  <Fernando.Perez@colorado.edu>

	* IPython/Shell.py (MTInteractiveShell.__init__): Fixed deadlock
	that could occur due to a race condition in threaded shells.
	Thanks to code provided by Marc, as #210.

2008-01-29  Fernando Perez  <Fernando.Perez@colorado.edu>

	* IPython/Magic.py (magic_doctest_mode): respect the user's
	settings for input separators rather than overriding them.  After
	a report by Jeff Kowalczyk <jtk-AT-yahoo.com>

	* IPython/history.py (magic_history): Add support for declaring an
	output file directly from the history command.

2008-01-21  Walter Doerwald  <walter@livinglogic.de>

	* ipipe.py: Register ipipe's displayhooks via the generic function
	generics.result_display() instead of using ipapi.set_hook().
	
2008-01-19  Walter Doerwald  <walter@livinglogic.de>

	* ibrowse.py, igrid.py, ipipe.py:
	The input object can now be passed to the constructor of the display classes.
	This makes it possible to use them with objects that implement __or__.
	Use this constructor in the displayhook instead of piping.

	* ipipe.py: Importing astyle.py is done as late as possible to
	avoid problems with circular imports.
	
2008-01-19 Ville Vainio  <vivainio@gmail.com>

	* hooks.py, iplib.py: Added 'shell_hook' to customize how
	IPython calls shell.

	* hooks.py, iplib.py: Added 'show_in_pager' hook to specify
	how IPython pages text (%page, %pycat, %pdoc etc.)

	* Extensions/jobctrl.py: Use shell_hook. New magics: '%tasks'
	and '%kill' to kill hanging processes that won't obey ctrl+C.

2008-01-16 Ville Vainio  <vivainio@gmail.com>

	* ipy_completers.py: pyw extension support for %run completer.

2008-01-11 Ville Vainio  <vivainio@gmail.com>

	* iplib.py, ipmaker.py: new rc option - autoexec. It's a list 
	of ipython commands to be run when IPython has started up
	(just before running the scripts and -c arg on command line).
	
	* ipy_user_conf.py: Added an example on how to change term 
	colors in config file (through using autoexec).

	* completer.py, test_completer.py: Ability to specify custom
	get_endidx to replace readline.get_endidx. For emacs users.
	
2008-01-10 Ville Vainio  <vivainio@gmail.com>

	* Prompts.py (set_p_str): do not crash on illegal prompt strings

2008-01-08 Ville Vainio  <vivainio@gmail.com>

	* '%macro -r' (raw mode) is now default in sh profile.

2007-12-31  Ville Vainio  <vivainio@gmail.com>

	* completer.py: custom completer matching is now case sensitive
	(#207).
	
	* ultraTB.py, iplib.py: Add some KeyboardInterrupt catching in
	an attempt to prevent occasional crashes.
	
	* CrashHandler.py: Crash log dump now asks user to press enter
	before exiting.
	
	* Store _ip in user_ns instead of __builtin__, enabling safer
	coexistence of multiple IPython instances in the same python
	interpreter (#197).
	
	* Debugger.py, ipmaker.py: Need to add '-pydb' command line
	switch to enable pydb in post-mortem debugging and %run -d.

2007-12-28  Ville Vainio  <vivainio@gmail.com>

	* ipy_server.py: TCP socket server for "remote control" of an IPython 
	instance.
	
	* Debugger.py: Change to PSF license
	
	* simplegeneric.py: Add license & author notes.
	
	* ipy_fsops.py: Added PathObj and FileObj, an object-oriented way 
	to navigate file system with a custom completer. Run 
	ipy_fsops.test_pathobj() to play with it.

2007-12-28  Fernando Perez  <Fernando.Perez@colorado.edu>

	* IPython/dtutils.py: Add utilities for interactively running
	doctests.  Still needs work to more easily handle the namespace of
	the package one may be working on, but the basics are in place.

2007-12-27  Ville Vainio  <vivainio@gmail.com>

	* ipy_completers.py: Applied arno's patch to get proper list of 
	packages in import completer. Closes #196.

2007-12-20  Ville Vainio  <vivainio@gmail.com>

	* completer.py, generics.py(complete_object): Allow 
	custom complers based on python objects via simplegeneric.
	See generics.py / my_demo_complete_object

2007-12-13  Fernando Perez  <Fernando.Perez@colorado.edu>

	* IPython/Prompts.py (BasePrompt.__nonzero__): add proper boolean
	behavior to prompt objects, useful for display hooks to adjust
	themselves depending on whether prompts will be there or not.

2007-12-13  Ville Vainio  <vivainio@gmail.com>

	* iplib.py(raw_input): unix readline does not allow unicode in
	history, encode to normal string. After patch by Tiago.
	Close #201

2007-12-12  Ville Vainio  <vivainio@gmail.com>

	* genutils.py (abbrev_cwd): Terminal title now shows 2 levels of 
	current directory.
	
2007-12-12  Fernando Perez  <Fernando.Perez@colorado.edu>

	* IPython/Shell.py (_select_shell): add support for controlling
	the pylab threading mode directly at the command line, without
	having to modify MPL config files.  Added unit tests for this
	feature, though manual/docs update is still pending, will do later.

2007-12-11  Ville Vainio  <vivainio@gmail.com>

	* ext_rescapture.py: var = !cmd is no longer verbose (to facilitate
	use in scripts)

2007-12-07  Ville Vainio  <vivainio@gmail.com>

	* iplib.py, ipy_profile_sh.py: Do not escape # on command lines 
	anymore (to \#) - even if it is a comment char that is implicitly 
	escaped in some unix shells in interactive mode, it is ok to leave
	it in IPython as such.


2007-12-01  Robert Kern  <robert.kern@gmail.com>

	* IPython/ultraTB.py (findsource): Improve the monkeypatch to
	inspect.findsource(). It can now find source lines inside zipped
	packages.
	
	* IPython/ultraTB.py: When constructing tracebacks, try to use __file__
	in the frame's namespace before trusting the filename in the code object
	which created the frame.

2007-11-29  *** Released version 0.8.2

2007-11-25  Fernando Perez  <Fernando.Perez@colorado.edu>

	* IPython/Logger.py (Logger.logstop): add a proper logstop()
	method to fully stop the logger, along with a corresponding
	%logstop magic for interactive use.

	* IPython/Extensions/ipy_host_completers.py: added new host
	completers functionality, contributed by Gael Pasgrimaud
	<gawel-AT-afpy.org>.

2007-11-24  Fernando Perez  <Fernando.Perez@colorado.edu>

	* IPython/DPyGetOpt.py (ArgumentError): Apply patch by Paul Mueller
	<gakusei-AT-dakotacom.net>, to fix deprecated string exceptions in
	options handling.  Unicode fix in %whos (committed a while ago)
	was also contributed by Paul.

2007-11-23  Darren Dale <darren.dale@cornell.edu>
        * ipy_traits_completer.py: let traits_completer respect the user's
        readline_omit__names setting.

2007-11-08  Ville Vainio  <vivainio@gmail.com>

	* ipy_completers.py (import completer): assume 'xml' module exists.
	Do not add every module twice anymore. Closes #196.

	* ipy_completers.py, ipy_app_completers.py: Add proper apt-get
	completer that uses apt-cache to search for existing packages.

2007-11-06  Ville Vainio  <vivainio@gmail.com>

	* Prompts.py: Do not update _oh and _123 when do_full_cache is not
	true. Closes #194.

2007-11-01  Brian Granger <ellisonbg@gmail.com>

	* iplib.py, rlineimpl.py: Applied Body Water's patches to get IPython
	working with OS X 10.5 libedit implementation of readline.

2007-10-24  Ville Vainio  <vivainio@gmail.com>

	* iplib.py(user_setup): To route around buggy installations where
	UserConfig is not available, create a minimal _ipython.

	* iplib.py: Unicode fixes from Jorgen.

	* genutils.py: Slist now has new method 'fields()' for extraction of
	whitespace-separated fields from line-oriented data.

2007-10-15  Fernando Perez  <Fernando.Perez@colorado.edu>

	* IPython/OInspect.py (Inspector.pinfo): fix bug that could arise
	when querying objects with no __class__ attribute (such as
	f2py-generated modules).

2007-10-09  Fernando Perez  <Fernando.Perez@colorado.edu>

	* IPython/Magic.py (magic_time): track compilation time and report
	it if longer than 0.1s (fix done to %time and %timeit).  After a
	SAGE bug report: http://trac.sagemath.org/sage_trac/ticket/632.

2007-09-18  Ville Vainio  <vivainio@gmail.com>

	* genutils.py(make_quoted_expr): Do not use Itpl, it does
        not support unicode at the moment. Fixes (many) magic calls with
        special characters.

2007-09-14  Fernando Perez  <Fernando.Perez@colorado.edu>

	* IPython/genutils.py (doctest_reload): expose the doctest
	reloader to the user so that people can easily reset doctest while
	using it interactively.  Fixes a problem reported by Jorgen.

	* IPython/iplib.py (InteractiveShell.__init__): protect the
	FakeModule instances used for __main__ in %run calls from
	deletion, so that user code defined in them isn't left with
	dangling references due to the Python module deletion machinery.
	This should fix the problems reported by Darren.

2007-09-10  Darren Dale  <dd55@cornell.edu>

        * Cleanup of IPShellQt and IPShellQt4

2007-09-09  Fernando Perez  <Fernando.Perez@colorado.edu>

	* IPython/FakeModule.py (FakeModule.__init__): further fixes for
	doctest support.  

	* IPython/iplib.py (safe_execfile): minor docstring improvements.

2007-09-08  Ville Vainio  <vivainio@gmail.com>

	* Magic.py (%pushd, %popd, %dirs): Fix dir stack - push *current*
	directory, not the target directory.

	* ipapi.py, Magic.py, iplib.py: Add ipapi.UsageError, a lighter weight
	exception that won't print the tracebacks. Switched many magics to
	raise them on error situations, also GetoptError is not printed
	anymore.

2007-09-07  Ville Vainio  <vivainio@gmail.com>

	* iplib.py: do not auto-alias "dir", it screws up other dir auto
        aliases.

	* genutils.py: SList.grep() implemented.
        
	* ipy_editors.py, UserConfig/ipy_user_conf.py: Add some editors
	for easy "out of the box" setup of several common editors, so that
	e.g. '%edit os.path.isfile' will jump to the correct line
	automatically. Contributions for command lines of your favourite
	editors welcome.
        
2007-09-07  Fernando Perez  <Fernando.Perez@colorado.edu>

	* IPython/OInspect.py (Inspector.pinfo): fixed bug that was
	preventing source display in certain cases.  In reality I think
	the problem is with Ubuntu's Python build, but this change works
	around the issue in some cases (not in all, unfortunately).  I'd
	filed a Python bug on this with more details, but in the change of
	bug trackers it seems to have been lost.

	* IPython/Magic.py (magic_dhist): restore %dhist. No, cd -TAB is
	not the same, it's not self-documenting, doesn't allow range
	selection, and sorts alphabetically instead of numerically.
	(magic_r): restore %r.  No, "up + enter. One char magic" is not
	the same thing, since %r takes parameters to allow fast retrieval
	of old commands.  I've received emails from users who use this a
	LOT, so it stays.
	(magic_automagic): restore %automagic.  "use _ip.option.automagic"
	is not a valid replacement b/c it doesn't provide an complete
	explanation (which the automagic docstring does).
	(magic_autocall): restore %autocall, with improved docstring.
	Same argument as for others, "use _ip.options.autocall" is not a
	valid replacement.
	(magic_pdef): restore %pdef & friends.  Used widely, mentioned in
	tutorials and online docs.

2007-09-06  Fernando Perez  <Fernando.Perez@colorado.edu>

	* IPython/usage.py (quick_reference): mention magics in quickref,
	modified main banner to mention %quickref.

	* IPython/FakeModule.py (FakeModule): fixes for doctest compatibility.

2007-09-06  Ville Vainio  <vivainio@gmail.com>

	* ipy_rehashdir.py, ipy_workdir.py, ipy_fsops.py, iplib.py:
	Callable aliases now pass the _ip as first arg. This breaks 
	compatibility with earlier 0.8.2.svn series! (though they should
	not have been in use yet outside these few extensions)

2007-09-05  Ville Vainio  <vivainio@gmail.com>

	* external/mglob.py: expand('dirname') => ['dirname'], instead
	of ['dirname/foo','dirname/bar', ...].
        
	* Extensions/ipy_fsops.py: added, has usefull shell utils for plain
	win32 installations: icp, imv, imkdir, igrep, irm, collect (collect
	is useful for others as well).

	* iplib.py: on callable aliases (as opposed to old style aliases),
	do var_expand() immediately, and use make_quoted_expr instead
	of hardcoded r"""

	* Extensions/ipy_profile_sh.py: Try to detect cygwin on win32,
	if not available load ipy_fsops.py for cp, mv, etc. replacements

	* OInspect.py, ipy_which.py: improve %which and obj? for callable
	aliases
        
2007-09-04  Ville Vainio  <vivainio@gmail.com>

	* ipy_profile_zope.py: add zope profile, by Stefan Eletzhofer.
	Relicensed under BSD with the authors approval.
        
	* ipmaker.py, usage.py: Remove %magic from default banner, improve
	%quickref        

2007-09-03  Ville Vainio  <vivainio@gmail.com>

	* Magic.py: %time now passes expression through prefilter,
	allowing IPython syntax.

2007-09-01  Ville Vainio  <vivainio@gmail.com>

	* ipmaker.py: Always show full traceback when newstyle config fails

2007-08-27  Ville Vainio  <vivainio@gmail.com>

	* Magic.py: fix %cd for nonexistent dir when dhist is empty, close #180

2007-08-26  Ville Vainio  <vivainio@gmail.com>

	* ipmaker.py: Command line args have the highest priority again
	
	* iplib.py, ipmaker.py: -i command line argument now behaves as in
	normal python, i.e. leaves the IPython session running after -c
	command or running a batch file from command line.
    
2007-08-22  Ville Vainio  <vivainio@gmail.com>

	* iplib.py: no extra empty (last) line in raw hist w/ multiline
	statements
	
	* logger.py: Fix bug where blank lines in history were not
	added until AFTER adding the current line; translated and raw
	history should finally be in sync with prompt now.
	
	* ipy_completers.py: quick_completer now makes it easy to create
	trivial custom completers
	
	* clearcmd.py: shadow history compression & erasing, fixed input hist
	clearing.
	
	* envpersist.py, history.py: %env (sh profile only), %hist completers
	
	* genutils.py, Prompts.py, Magic.py: win32 - prompt (with \yDEPTH) and
	term title now include the drive letter, and always use / instead of
	os.sep (as per recommended approach for win32 ipython in general).
	
	* ipykit.py, ipy_kitcfg.py: special launcher for ipykit. Allows running
	plain python scripts from ipykit command line by running
	"py myscript.py", even w/o installed python.

2007-08-21  Ville Vainio  <vivainio@gmail.com>

	* ipmaker.py: finding ipythonrc-PROF now skips ipy_profile_PROF.
	(for backwards compatibility)
	
	* history.py: switch back to %hist -t from %hist -r as default.
	At least until raw history is fixed for good.

2007-08-20  Ville Vainio  <vivainio@gmail.com>

	* ipapi.py, iplib.py: DebugTools accessible via _ip.dbg, to catch &
	locate alias redeclarations etc. Also, avoid handling
	_ip.IP.alias_table directly, prefer using _ip.defalias.
	

2007-08-15  Ville Vainio  <vivainio@gmail.com>

	* prefilter.py: ! is now always served first

2007-08-15  Fernando Perez  <Fernando.Perez@colorado.edu>

	* IPython/iplib.py (safe_execfile): fix the SystemExit
	auto-suppression code to work in Python2.4 (the internal structure
	of that exception changed and I'd only tested the code with 2.5).
	Bug reported by a SciPy attendee.

2007-08-13  Ville Vainio  <vivainio@gmail.com>

	* prefilter.py: reverted !c:/bin/foo fix, made % in
        multiline specials work again

2007-08-13  Ville Vainio  <vivainio@gmail.com>

	* prefilter.py: Take more care to special-case !, so that
        !c:/bin/foo.exe works.
        
        * setup.py: if we are building eggs, strip all docs and
        examples (it doesn't make sense to bytecompile examples,
        and docs would be in an awkward place anyway).
        
        * Ryan Krauss' patch fixes start menu shortcuts when IPython
        is installed into a directory that has spaces in the name.

2007-08-13  Fernando Perez  <Fernando.Perez@colorado.edu>

	* IPython/Magic.py (magic_doctest_mode): fix prompt separators in
	doctest profile and %doctest_mode, so they actually generate the
	blank lines needed by doctest to separate individual tests.

	* IPython/iplib.py (safe_execfile): modify so that running code
	which calls sys.exit(0) (or equivalently, raise SystemExit(0))
	doesn't get a printed traceback.  Any other value in sys.exit(),
	including the empty call, still generates a traceback.  This
	enables use of %run without having to pass '-e' for codes that
	correctly set the exit status flag.

2007-08-12  Fernando Perez  <Fernando.Perez@colorado.edu>

	* IPython/iplib.py (InteractiveShell.post_config_initialization):
	fix problems with doctests failing when run inside IPython due to
	IPython's modifications of sys.displayhook.

2007-8-9  Fernando Perez  <fperez@planck.colorado.edu>

        * IPython/ipapi.py (to_user_ns): update to accept a dict as well as
          a string with names.

2007-08-09  Fernando Perez  <Fernando.Perez@colorado.edu>

	* IPython/Magic.py (magic_doctest_mode): added new %doctest_mode
	magic to toggle on/off the doctest pasting support without having
	to leave a session to switch to a separate profile.

2007-08-08  Fernando Perez  <Fernando.Perez@colorado.edu>

	* IPython/Extensions/ipy_profile_doctest.py (main): fix prompt to
	introduce a blank line between inputs, to conform to doctest
	requirements.

	* IPython/OInspect.py (Inspector.pinfo): fix another part where
	auto-generated docstrings for new-style classes were showing up.

2007-08-07  Fernando Perez  <Fernando.Perez@colorado.edu>

	* api_changes: Add new file to track backward-incompatible
	user-visible changes.

2007-08-06  Ville Vainio  <vivainio@gmail.com>

	* ipmaker.py: fix bug where user_config_ns didn't exist at all
	before all the config files were handled.

2007-08-04  Fernando Perez  <Fernando.Perez@colorado.edu>

	* IPython/irunner.py (RunnerFactory): Add new factory class for
	creating reusable runners based on filenames.

	* IPython/Extensions/ipy_profile_doctest.py: New profile for
	doctest support.  It sets prompts/exceptions as similar to
	standard Python as possible, so that ipython sessions in this
	profile can be easily pasted as doctests with minimal
	modifications.  It also enables pasting of doctests from external
	sources (even if they have leading whitespace), so that you can
	rerun doctests from existing sources.

	* IPython/iplib.py (_prefilter): fix a buglet where after entering
	some whitespace, the prompt would become a continuation prompt
	with no way of exiting it other than Ctrl-C.  This fix brings us
	into conformity with how the default python prompt works.

	* IPython/Extensions/InterpreterPasteInput.py (prefilter_paste):
	Add support for pasting not only lines that start with '>>>', but
	also with ' >>>'.  That is, arbitrary whitespace can now precede
	the prompts.  This makes the system useful for pasting doctests
	from docstrings back into a normal session.

2007-08-02  Fernando Perez  <Fernando.Perez@colorado.edu>

	* IPython/Shell.py (IPShellEmbed.__call__): fix bug introduced in
	r1357, which had killed multiple invocations of an embedded
	ipython (this means that example-embed has been broken for over 1
	year!!!).  Rather than possibly breaking the batch stuff for which
	the code in iplib.py/interact was introduced, I worked around the
	problem in the embedding class in Shell.py.  We really need a
	bloody test suite for this code, I'm sick of finding stuff that
	used to work breaking left and right every time I use an old
	feature I hadn't touched in a few months.
	(kill_embedded): Add a new magic that only shows up in embedded
	mode, to allow users to permanently deactivate an embedded instance.

2007-08-01  Ville Vainio  <vivainio@gmail.com>

	* iplib.py, ipy_profile_sh.py (runlines): Fix the bug where raw
        history gets out of sync on runlines (e.g. when running macros).

2007-07-31  Fernando Perez  <Fernando.Perez@colorado.edu>

	* IPython/Magic.py (magic_colors): fix win32-related error message
	that could appear under *nix when readline was missing.  Patch by
	Scott Jackson, closes #175.

2007-07-29  Fernando Perez  <Fernando.Perez@colorado.edu>

	* IPython/Extensions/ipy_traits_completer.py: Add a new custom
	completer that it traits-aware, so that traits objects don't show
	all of their internal attributes all the time.

	* IPython/genutils.py (dir2): moved this code from inside
	completer.py to expose it publicly, so I could use it in the
	wildcards bugfix.

	* IPython/wildcard.py (NameSpace.__init__): fix a bug reported by
	Stefan with Traits.

	* IPython/completer.py (Completer.attr_matches): change internal
	var name from 'object' to 'obj', since 'object' is now a builtin
	and this can lead to weird bugs if reusing this code elsewhere.

2007-07-25  Fernando Perez  <Fernando.Perez@colorado.edu>

	* IPython/OInspect.py (Inspector.pinfo): fix small glitches in
	'foo?' and update the code to prevent printing of default
	docstrings that started appearing after I added support for
	new-style classes.  The approach I'm using isn't ideal (I just
	special-case those strings) but I'm not sure how to more robustly
	differentiate between truly user-written strings and Python's
	automatic ones.

2007-07-09  Ville Vainio  <vivainio@gmail.com>

	* completer.py: Applied Matthew Neeley's patch:
        Dynamic attributes from trait_names and _getAttributeNames are added
        to the list of tab completions, but when this happens, the attribute
        list is turned into a set, so the attributes are unordered when
        printed, which makes it hard to find the right completion. This patch
        turns this set back into a list and sort it.

2007-07-06  Fernando Perez  <Fernando.Perez@colorado.edu>

	* IPython/OInspect.py (Inspector.pinfo): Add support for new-style
	classes in various inspector functions.

2007-06-28  Ville Vainio  <vivainio@gmail.com>

	* shadowns.py, iplib.py, ipapi.py, OInspect.py:
        Implement "shadow" namespace, and callable aliases that reside there.
        Use them by:
        
        _ip.defalias('foo',myfunc) # creates _sh.foo that points to myfunc
        
        foo hello world
         (gets translated to:)
        _sh.foo(r"""hello world""")

        In practice, this kind of alias can take the role of a magic function        

        * New generic inspect_object, called on obj? and obj??

2007-06-15  Fernando Perez  <Fernando.Perez@colorado.edu>

	* IPython/ultraTB.py (findsource): fix a problem with
	inspect.getfile that can cause crashes during traceback construction.

2007-06-14  Ville Vainio  <vivainio@gmail.com>

	* iplib.py (handle_auto): Try to use ascii for printing "--->"
        autocall rewrite indication, becausesometimes unicode fails to print
        properly (and you get ' - - - '). Use plain uncoloured ---> for
        unicode.
        
        * shadow history. Usable through "%hist -g <pat>" and "%rep 0123".
        
        . pickleshare 'hash' commands (hget, hset, hcompress,
        hdict) for efficient shadow history storage.

2007-06-13  Ville Vainio  <vivainio@gmail.com>

	* ipapi.py: _ip.to_user_ns(vars, interactive = True).
        Added kw arg 'interactive', tell whether vars should be visible
        with %whos.

2007-06-11  Ville Vainio  <vivainio@gmail.com>

	* pspersistence.py, Magic.py, iplib.py: directory history now saved 
	to db
    
	* iplib.py: "ipython -c <cmd>" now passes the command through prefilter.
	Also, it exits IPython immediately after evaluating the command (just like 
	std python)

2007-06-05  Walter Doerwald  <walter@livinglogic.de>

	* IPython/Extensions/ipipe.py: Added a new table icap, which executes a
	Python string and captures the output. (Idea and original patch by
	Stefan van der Walt)

2007-06-01  Fernando Perez  <Fernando.Perez@colorado.edu>

	* IPython/ultraTB.py (VerboseTB.text): update printing of
	exception types for Python 2.5 (now all exceptions in the stdlib
	are new-style classes).

2007-05-31  Walter Doerwald  <walter@livinglogic.de>

	* IPython/Extensions/igrid.py: Add new commands refresh and
	refresh_timer (mapped to "R"/"F5" and to the menu) which restarts
	the iterator once (refresh) or after every x seconds (refresh_timer).
	Add a working implementation of "searchexpression", where the text
	entered is not the text to search for, but an expression that must
	be true. Added display of shortcuts to the menu. Added commands "pickinput"
	and "pickinputattr" that put the object or attribute under the cursor
	in the input line. Split the statusbar to be able to display the currently
	active refresh interval. (Patch by Nik Tautenhahn)

2007-05-29  Jorgen Stenarson  <jorgen.stenarson@bostream.nu>
	
	* fixing set_term_title to use ctypes as default

	* fixing set_term_title fallback to work when curent dir 
	  is on a windows network share

2007-05-28  Ville Vainio  <vivainio@gmail.com>

	* %cpaste: strip + with > from left (diffs).
        
        * iplib.py: Fix crash when readline not installed

2007-05-26  Ville Vainio  <vivainio@gmail.com>

	* generics.py: introduce easy to extend result_display generic
        function (using simplegeneric.py).
        
        * Fixed the append functionality of %set.

2007-05-25  Ville Vainio  <vivainio@gmail.com>

	* New magic: %rep (fetch / run old commands from history)
        
        * New extension: mglob (%mglob magic), for powerful glob / find /filter
        like functionality
        
        % maghistory.py: %hist -g PATTERM greps the history for pattern

2007-05-24  Walter Doerwald  <walter@livinglogic.de>

	* IPython/Extensions/ipipe.py: Added a Table ihist that can be used to
	browse the IPython input history

	* IPython/Extensions/ibrowse.py: Added two command to ibrowse: pickinput
	(mapped to "i") can be used to put the object under the curser in the input
	line. pickinputattr (mapped to "I") does the same for the attribute under
	the cursor.

2007-05-24  Ville Vainio  <vivainio@gmail.com>

	* Grand magic cleansing (changeset [2380]):
        
        * Introduce ipy_legacy.py where the following magics were
        moved:
        
        pdef pdoc psource pfile rehash dhist Quit p r automagic autocall
        
        If you need them, either use default profile or "import ipy_legacy"
        in your ipy_user_conf.py
        
        * Move sh and scipy profile to Extensions from UserConfig. this implies
        you should not edit them, but you don't need to run %upgrade when
        upgrading IPython anymore.
        
        * %hist/%history now operates in "raw" mode by default. To get the old
        behaviour, run '%hist -n' (native mode).
        
        * split ipy_stock_completers.py to ipy_stock_completers.py and
        ipy_app_completers.py. Stock completers (%cd, import, %run) are now
        installed as default.
        
        * sh profile now installs ipy_signals.py, for (hopefully) better ctrl+c
        handling.
        
        * iplib.py, ipapi.py: _ip.set_next_input(s) sets the next ("default")
        input if readline is available.
	
2007-05-23  Ville Vainio  <vivainio@gmail.com>

	* macro.py: %store uses __getstate__ properly
	
	* exesetup.py: added new setup script for creating
	standalone IPython executables with py2exe (i.e.
	no python installation required).
	
	* Removed ipythonrc-scipy, ipy_profile_scipy.py takes
	its place.
        
        * rlineimpl.py, genutils.py (get_home_dir): py2exe support
	
2007-05-21  Ville Vainio  <vivainio@gmail.com>

	* platutil_win32.py (set_term_title): handle
	failure of 'title' system call properly.

2007-05-17  Walter Doerwald  <walter@livinglogic.de>

	* IPython/Extensions/ipipe.py: Fix xrepr for ifiles.
	(Bug detected by Paul Mueller).

2007-05-16  Ville Vainio  <vivainio@gmail.com>

	* ipy_profile_sci.py, ipython_win_post_install.py: Create
	new "sci" profile, effectively a modern version of the old
	"scipy" profile (which is now slated for deprecation).

2007-05-15  Ville Vainio  <vivainio@gmail.com>

	* pycolorize.py, pycolor.1: Paul Mueller's patches that
	make pycolorize read input from stdin when run without arguments.
	
	* Magic.py: do not require 'PATH' in %rehash/%rehashx. Closes #155
	
	* ipy_rehashdir.py: rename ext_rehashdir to ipy_rehashdir, import
	it in sh profile (instead of ipy_system_conf.py).

	* Magic.py, ipy_rehashdir.py, ipy_profile_sh.py: System command
	aliases are now lower case on windows (MyCommand.exe => mycommand).
	
	* macro.py, ipapi.py, iplib.py, Prompts.py: Macro system rehaul.
	Macros are now callable objects that inherit from ipapi.IPyAutocall,
	i.e. get autocalled regardless of system autocall setting.

2007-05-10  Fernando Perez  <Fernando.Perez@colorado.edu>

	* IPython/rlineimpl.py: check for clear_history in readline and
	make it a dummy no-op if not available.  This function isn't
	guaranteed to be in the API and appeared in Python 2.4, so we need
	to check it ourselves.  Also, clean up this file quite a bit.

	* ipython.1: update man page and full manual with information
	about threads (remove outdated warning).  Closes #151.

2007-05-09  Fernando Perez  <Fernando.Perez@colorado.edu>

	* IPython/Extensions/ipy_constants.py: Add Gael's constants module
	in trunk (note that this made it into the 0.8.1 release already,
	but the changelogs didn't get coordinated).  Many thanks to Gael
	Varoquaux <gael.varoquaux-AT-normalesup.org>

2007-05-09  *** Released version 0.8.1

2007-05-10  Walter Doerwald  <walter@livinglogic.de>

	* IPython/Extensions/igrid.py: Incorporate html help into
	the module, so we don't have to search for the file.

2007-05-02  Fernando Perez  <Fernando.Perez@colorado.edu>

	* test/test_irunner.py (RunnerTestCase._test_runner): Close #147.

2007-04-30  Ville Vainio  <vivainio@gmail.com>

	* iplib.py: (pre_config_initialization) Catch UnicodeDecodeError if the
	user has illegal (non-ascii) home directory name

2007-04-27  Ville Vainio  <vivainio@gmail.com>

	* platutils_win32.py: implement set_term_title for windows
	
	* Update version number
	
	* ipy_profile_sh.py: more informative prompt (2 dir levels)

2007-04-26  Walter Doerwald  <walter@livinglogic.de>

	* IPython/Extensions/igrid.py: (igrid) Fix bug that surfaced
	when the igrid input raised an exception. (Patch by Nik Tautenhahn,
	bug discovered by Ville).

2007-04-26  Ville Vainio  <vivainio@gmail.com>

	* Extensions/ipy_completers.py: Olivier's module completer now
	saves the list of root modules if it takes > 4 secs on the first run.
	
	* Magic.py (%rehashx): %rehashx now clears the completer cache
	

2007-04-26  Fernando Perez  <Fernando.Perez@colorado.edu>

	* ipython.el: fix incorrect color scheme, reported by Stefan.
	Closes #149.

	* IPython/PyColorize.py (Parser.format2): fix state-handling
	logic.  I still don't like how that code handles state, but at
	least now it should be correct, if inelegant.  Closes #146.

2007-04-25  Ville Vainio  <vivainio@gmail.com>

	* Extensions/ipy_which.py: added extension for %which magic, works
	a lot like unix 'which' but also finds and expands aliases, and
	allows wildcards.

	* ipapi.py (expand_alias): Now actually *return* the expanded alias,
	as opposed to returning nothing.
	
	* UserConfig/ipy_user_conf.py, ipy_profile_sh.py: do not import
	ipy_stock_completers on default profile, do import on sh profile.

2007-04-22  Jorgen Stenarson  <jorgen.stenarson@bostream.nu>

	* Fix bug in iplib.py/safe_execfile when launching ipython with a script
	like ipython.py foo.py which raised a IndexError.

2007-04-21  Ville Vainio  <vivainio@gmail.com>

	* Extensions/ipy_extutil.py: added extension to manage other ipython
	extensions. Now only supports 'ls' == list extensions.

2007-04-20  Fernando Perez  <Fernando.Perez@colorado.edu>

	* IPython/Debugger.py (BdbQuit_excepthook): fix small bug that
	would prevent use of the exception system outside of a running
	IPython instance.

2007-04-20  Ville Vainio  <vivainio@gmail.com>

	* Extensions/ipy_render.py: added extension for easy
	interactive text template rendering (to clipboard). Uses Ka-Ping Yee's
	'Iptl' template notation, 
	
	* Extensions/ipy_completers.py: introduced Olivier Lauzanne's
	safer & faster 'import' completer.
	
	* ipapi.py: Introduced new ipapi methods, _ip.defmacro(name, value)
	and _ip.defalias(name, command).
	
	* Extensions/ipy_exportdb.py: New extension for exporting all the
	%store'd data in a portable format (normal ipapi calls like
	defmacro() etc.)
	
2007-04-19  Ville Vainio  <vivainio@gmail.com>

	* upgrade_dir.py: skip junk files like *.pyc
	
	* Release.py: version number to 0.8.1

2007-04-18  Ville Vainio  <vivainio@gmail.com>

	* iplib.py (safe_execfile): make "ipython foo.py" work with 2.5.1c1
	and later on win32.

2007-04-16  Ville Vainio  <vivainio@gmail.com>

	* iplib.py (showtraceback): Do not crash when running w/o readline.

2007-04-12  Walter Doerwald  <walter@livinglogic.de>

	* IPython/Extensions/ipipe.py: (ils) Directoy listings are now
	sorted (case sensitive with files and dirs mixed).

2007-04-10  Fernando Perez  <Fernando.Perez@colorado.edu>

	* IPython/Release.py (version): Open trunk for 0.8.1 development.

2007-04-10  *** Released version 0.8.0

2007-04-07  Fernando Perez  <Fernando.Perez@colorado.edu>

	* Tag 0.8.0 for release.
	
	* IPython/iplib.py (reloadhist): add API function to cleanly
	reload the readline history, which was growing inappropriately on
	every %run call.

	* win32_manual_post_install.py (run): apply last part of Nicolas
	Pernetty's patch (I'd accidentally applied it in a different
	directory and this particular file didn't get patched).

2007-04-05  Fernando Perez  <Fernando.Perez@colorado.edu>

	* IPython/Shell.py (MAIN_THREAD_ID): get rid of my stupid hack to
	find the main thread id and use the proper API call.  Thanks to
	Stefan for the fix.

	* test/test_prefilter.py (esc_handler_tests): udpate one of Dan's
	unit tests to reflect fixed ticket #52, and add more tests sent by
	him.

	* IPython/iplib.py (raw_input): restore the readline completer
	state on every input, in case third-party code messed it up.
	(_prefilter): revert recent addition of early-escape checks which
	prevent many valid alias calls from working.

	* IPython/Shell.py (MTInteractiveShell.runcode): add a tracking
	flag for sigint handler so we don't run a full signal() call on
	each runcode access.

	* IPython/Magic.py (magic_whos): small improvement to diagnostic
	message.

2007-04-04  Fernando Perez  <Fernando.Perez@colorado.edu>

	* IPython/Shell.py (sigint_handler): I *THINK* I finally got
	asynchronous exceptions working, i.e., Ctrl-C can actually
	interrupt long-running code in the multithreaded shells.

	This is using Tomer Filiba's great ctypes-based trick:
	http://sebulba.wikispaces.com/recipe+thread2.  I'd already tried
	this in the past, but hadn't been able to make it work before.  So
	far it looks like it's actually running, but this needs more
	testing.  If it really works, I'll be *very* happy, and we'll owe
	a huge thank you to Tomer.  My current implementation is ugly,
	hackish and uses nasty globals, but I don't want to try and clean
	anything up until we know if it actually works.

	NOTE: this feature needs ctypes to work.  ctypes is included in
	Python2.5, but 2.4 users will need to manually install it.  This
	feature makes multi-threaded shells so much more usable that it's
	a minor price to pay (ctypes is very easy to install, already a
	requirement for win32 and available in major linux distros).

2007-04-04  Ville Vainio  <vivainio@gmail.com>

	* Extensions/ipy_completers.py, ipy_stock_completers.py:
	Moved implementations of 'bundled' completers to ipy_completers.py,
	they are only enabled in ipy_stock_completers.py.

2007-04-04  Fernando Perez  <Fernando.Perez@colorado.edu>

	* IPython/PyColorize.py (Parser.format2): Fix identation of
	colorzied output and return early if color scheme is NoColor, to
	avoid unnecessary and expensive tokenization.  Closes #131.

2007-04-03  Fernando Perez  <Fernando.Perez@colorado.edu>

	* IPython/Debugger.py: disable the use of pydb version 1.17.  It
	has a critical bug (a missing import that makes post-mortem not
	work at all).  Unfortunately as of this time, this is the version
	shipped with Ubuntu Edgy, so quite a few people have this one.  I
	hope Edgy will update to a more recent package.

2007-04-02  Fernando Perez  <Fernando.Perez@colorado.edu>

	* IPython/iplib.py (_prefilter): close #52, second part of a patch
	set by Stefan (only the first part had been applied before).

	* IPython/Extensions/ipy_stock_completers.py (module_completer):
	remove usage of the dangerous pkgutil.walk_packages().  See
	details in comments left in the code.

	* IPython/Magic.py (magic_whos): add support for numpy arrays
	similar to what we had for Numeric.

	* IPython/completer.py (IPCompleter.complete): extend the
	complete() call API to support completions by other mechanisms
	than readline.  Closes #109.

	* IPython/iplib.py (safe_execfile): add a safeguard under Win32 to
	protect against a bug in Python's execfile().  Closes #123.

2007-04-01  Fernando Perez  <Fernando.Perez@colorado.edu>

	* IPython/iplib.py (split_user_input): ensure that when splitting
	user input, the part that can be treated as a python name is pure
	ascii (Python identifiers MUST be pure ascii).  Part of the
	ongoing Unicode support work.

	* IPython/Prompts.py (prompt_specials_color): Add \N for the
	actual prompt number, without any coloring.  This allows users to
	produce numbered prompts with their own colors.  Added after a
	report/request by Thorsten Kampe <thorsten-AT-thorstenkampe.de>.

2007-03-31  Walter Doerwald  <walter@livinglogic.de>

	* IPython/Extensions/igrid.py: Map the return key
	to enter() and shift-return to enterattr().

2007-03-30  Fernando Perez  <Fernando.Perez@colorado.edu>

	* IPython/Magic.py (magic_psearch): add unicode support by
	encoding to ascii the input, since this routine also only deals
	with valid Python names.  Fixes a bug reported by Stefan.

2007-03-29  Fernando Perez  <Fernando.Perez@colorado.edu>

	* IPython/Magic.py (_inspect): convert unicode input into ascii
	before trying to evaluate it as a Python identifier.  This fixes a
	problem that the new unicode support had introduced when analyzing
	long definition lines for functions.

2007-03-24  Walter Doerwald  <walter@livinglogic.de>

	* IPython/Extensions/igrid.py: Fix picking. Using
	igrid with wxPython 2.6 and -wthread should work now.
	igrid.display() simply tries to create a frame without
	an application. Only if this fails an application is created.

2007-03-23  Walter Doerwald  <walter@livinglogic.de>

	* IPython/Extensions/path.py: Updated to version 2.2.

2007-03-23  Ville Vainio  <vivainio@gmail.com>

	* iplib.py: recursive alias expansion now works better, so that
	cases like 'top' -> 'd:/cygwin/top' -> 'ls :/cygwin/top'
	doesn't trip up the process, if 'd' has been aliased to 'ls'.
	
	* Extensions/ipy_gnuglobal.py added, provides %global magic
	for users of http://www.gnu.org/software/global
	
	* iplib.py: '!command /?' now doesn't invoke IPython's help system.
	Closes #52. Patch by Stefan van der Walt.

2007-03-23  Fernando Perez  <Fernando.Perez@colorado.edu>

	* IPython/FakeModule.py (FakeModule.__init__): Small fix to
	respect the __file__ attribute when using %run.  Thanks to a bug
	report by Sebastian Rooks <sebastian.rooks-AT-free.fr>.

2007-03-22  Fernando Perez  <Fernando.Perez@colorado.edu>

	* IPython/iplib.py (raw_input): Fix mishandling of unicode at
	input.  Patch sent by Stefan.

2007-03-20  Jorgen Stenarson  <jorgen.stenarson@bostream.nu>
	* IPython/Extensions/ipy_stock_completer.py
	shlex_split, fix bug in shlex_split. len function
	call was missing an if statement. Caused shlex_split to
	sometimes return "" as last element.

2007-03-18  Fernando Perez  <Fernando.Perez@colorado.edu>

	* IPython/completer.py
	(IPCompleter.file_matches.single_dir_expand): fix a problem
	reported by Stefan, where directories containign a single subdir
	would be completed too early.

	* IPython/Shell.py (_load_pylab): Make the execution of 'from
	pylab import *' when -pylab is given be optional.  A new flag,
	pylab_import_all controls this behavior, the default is True for
	backwards compatibility.

	* IPython/ultraTB.py (_formatTracebackLines): Added (slightly
	modified) R. Bernstein's patch for fully syntax highlighted
	tracebacks.  The functionality is also available under ultraTB for
	non-ipython users (someone using ultraTB but outside an ipython
	session).  They can select the color scheme by setting the
	module-level global DEFAULT_SCHEME.  The highlight functionality
	also works when debugging.

	* IPython/genutils.py (IOStream.close): small patch by
	R. Bernstein for improved pydb support.

	* IPython/Debugger.py (Pdb.format_stack_entry): Added patch by
	DaveS <davls@telus.net> to improve support of debugging under
	NTEmacs, including improved pydb behavior.

	* IPython/Magic.py (magic_prun): Fix saving of profile info for
	Python 2.5, where the stats object API changed a little.  Thanks
	to a bug report by Paul Smith <paul.smith-AT-catugmt.com>.
	
	* IPython/ColorANSI.py (InputTermColors.Normal): applied Nicolas
	Pernetty's patch to improve support for (X)Emacs under Win32.

2007-03-17  Fernando Perez  <Fernando.Perez@colorado.edu>

	* IPython/Shell.py (hijack_wx): ipmort WX with current semantics
	to quiet a deprecation warning that fires with Wx 2.8.  Thanks to
	a report by Nik Tautenhahn.

2007-03-16  Walter Doerwald  <walter@livinglogic.de>

	* setup.py: Add the igrid help files to the list of data files
	to be installed alongside igrid.
	* IPython/Extensions/igrid.py: (Patch by Nik Tautenhahn)
	Show the input object of the igrid browser as the window tile.
	Show the object the cursor is on in the statusbar.

2007-03-15  Ville Vainio  <vivainio@gmail.com>

	* Extensions/ipy_stock_completers.py: Fixed exception
        on mismatching quotes in %run completer. Patch by
        Jorgen Stenarson. Closes #127.

2007-03-14  Ville Vainio  <vivainio@gmail.com>

	* Extensions/ext_rehashdir.py: Do not do auto_alias
        in %rehashdir, it clobbers %store'd aliases.
        
        * UserConfig/ipy_profile_sh.py: envpersist.py extension
        (beefed up %env) imported for sh profile.

2007-03-10  Walter Doerwald  <walter@livinglogic.de>

	* IPython/Extensions/ipipe.py: Prefer ibrowse over igrid
	as the default browser.
	* IPython/Extensions/igrid.py: Make a few igrid attributes private.
	As igrid displays all attributes it ever encounters, fetch() (which has
	been renamed to _fetch()) doesn't have to recalculate the display attributes
	every time a new item is fetched. This should speed up scrolling.

2007-03-10  Fernando Perez  <Fernando.Perez@colorado.edu>

	* IPython/iplib.py (InteractiveShell.__init__): fix for Alex
	Schmolck's recently reported tab-completion bug (my previous one
	had a problem).  Patch by Dan Milstein <danmil-AT-comcast.net>.

2007-03-09  Walter Doerwald  <walter@livinglogic.de>

	* IPython/Extensions/igrid.py: Patch by Nik Tautenhahn:
	Close help window if exiting igrid.

2007-03-02  Jorgen Stenarson  <jorgen.stenarson@bostream.nu>

	* IPython/Extensions/ipy_defaults.py: Check if readline is available
	before calling functions from readline.

2007-03-02  Walter Doerwald  <walter@livinglogic.de>

	* IPython/Extensions/igrid.py: Add Nik Tautenhahns igrid extension.
	igrid is a wxPython-based display object for ipipe. If your system has
	wx installed igrid will be the default display. Without wx ipipe falls
	back to ibrowse (which needs curses). If no curses is installed ipipe
	falls back to idump.

2007-03-01  Fernando Perez  <Fernando.Perez@colorado.edu>

	* IPython/iplib.py (split_user_inputBROKEN): temporarily disable
	my changes from yesterday, they introduced bugs.  Will reactivate
	once I get a correct solution, which will be much easier thanks to
	Dan Milstein's new prefilter test suite.

2007-02-28  Fernando Perez  <Fernando.Perez@colorado.edu>

	* IPython/iplib.py (split_user_input): fix input splitting so we
	don't attempt attribute accesses on things that can't possibly be
	valid Python attributes.  After a bug report by Alex Schmolck.
	(InteractiveShell.__init__): brown-paper bag fix; regexp broke
	%magic with explicit % prefix.

2007-02-27  Fernando Perez  <Fernando.Perez@colorado.edu>

	* IPython/Shell.py (IPShellGTK.mainloop): update threads calls to
	avoid a DeprecationWarning from GTK.

2007-02-22  Fernando Perez  <Fernando.Perez@colorado.edu>

	* IPython/genutils.py (clock): I modified clock() to return total
	time, user+system.  This is a more commonly needed metric.  I also
	introduced the new clocku/clocks to get only user/system time if
	one wants those instead.
	
	***WARNING: API CHANGE*** clock() used to return only user time,
	so if you want exactly the same results as before, use clocku
	instead.

2007-02-22  Ville Vainio  <vivainio@gmail.com>

	* IPython/Extensions/ipy_p4.py: Extension for improved
        p4 (perforce version control system) experience.
        Adds %p4 magic with p4 command completion and
        automatic -G argument (marshall output as python dict)

2007-02-19  Fernando Perez  <Fernando.Perez@colorado.edu>

	* IPython/demo.py (Demo.re_stop): make dashes optional in demo
	stop marks. 
	(ClearingMixin): a simple mixin to easily make a Demo class clear
	the screen in between blocks and have empty marquees. The
	ClearDemo and ClearIPDemo classes that use it are included.

2007-02-18  Fernando Perez  <Fernando.Perez@colorado.edu>

	* IPython/irunner.py (pexpect_monkeypatch): patch pexpect to
	protect against exceptions at Python shutdown time.  Patch
	sumbmitted to upstream.

2007-02-14  Walter Doerwald  <walter@livinglogic.de>

	* IPython/Extensions/ibrowse.py: If entering the first object level
	(i.e. the object for which the browser has been started) fails,
	now the error is raised directly (aborting the browser) instead of
	running into an empty levels list later.

2007-02-03  Walter Doerwald  <walter@livinglogic.de>

	* IPython/Extensions/ipipe.py: Add an xrepr implementation
	for the noitem object.

2007-01-31  Fernando Perez  <Fernando.Perez@colorado.edu>

	* IPython/completer.py (Completer.attr_matches): Fix small
	tab-completion bug with Enthought Traits objects with units.
	Thanks to a bug report by Tom Denniston
	<tom.denniston-AT-alum.dartmouth.org>.

2007-01-27  Fernando Perez  <Fernando.Perez@colorado.edu>

	* IPython/Extensions/ipy_stock_completers.py (runlistpy): fix a
	bug where only .ipy or .py would be completed.  Once the first
	argument to %run has been given, all completions are valid because
	they are the arguments to the script, which may well be non-python
	filenames.

	* IPython/irunner.py (InteractiveRunner.run_source): major updates
	to irunner to allow it to correctly support real doctesting of
	out-of-process ipython code.

	* IPython/Magic.py (magic_cd): Make the setting of the terminal
	title an option (-noterm_title) because it completely breaks
	doctesting.

	* IPython/demo.py: fix IPythonDemo class that was not actually working.

2007-01-24  Fernando Perez  <Fernando.Perez@colorado.edu>

	* IPython/irunner.py (main): fix small bug where extensions were
	not being correctly recognized.

2007-01-23  Walter Doerwald  <walter@livinglogic.de>

	* IPython/Extensions/ipipe.py (xiter): Make sure that iterating
	a string containing a single line yields the string itself as the
	only item.

	* IPython/Extensions/ibrowse.py (ibrowse): Avoid entering an
	object if it's the same as the one on the last level (This avoids
	infinite recursion for one line strings).

2007-01-17  Fernando Perez  <Fernando.Perez@colorado.edu>

	* IPython/ultraTB.py (AutoFormattedTB.__call__): properly flush
	all output streams before printing tracebacks.  This ensures that
	user output doesn't end up interleaved with traceback output.

2007-01-10  Ville Vainio  <vivainio@gmail.com>

	* Extensions/envpersist.py: Turbocharged %env that remembers
	env vars across sessions; e.g. "%env PATH+=;/opt/scripts" or
	"%env VISUAL=jed".

2007-01-05  Fernando Perez  <Fernando.Perez@colorado.edu>

	* IPython/iplib.py (showtraceback): ensure that we correctly call
	custom handlers in all cases (some with pdb were slipping through,
	but I'm not exactly sure why).

	* IPython/Debugger.py (Tracer.__init__): added new class to
	support set_trace-like usage of IPython's enhanced debugger.

2006-12-24  Ville Vainio  <vivainio@gmail.com>

	* ipmaker.py: more informative message when ipy_user_conf
	import fails (suggest running %upgrade).
	
	* tools/run_ipy_in_profiler.py: Utility to see where
	the time during IPython startup is spent.
	
2006-12-20  Ville Vainio  <vivainio@gmail.com>

	* 0.7.3 is out - merge all from 0.7.3 branch to trunk

	* ipapi.py: Add new ipapi method, expand_alias.
	
	* Release.py: Bump up version to 0.7.4.svn

2006-12-17  Ville Vainio  <vivainio@gmail.com>

	* Extensions/jobctrl.py: Fixed &cmd arg arg... 
	to work properly on posix too
	
	* Release.py: Update revnum (version is still just 0.7.3).

2006-12-15  Ville Vainio  <vivainio@gmail.com>

	* scripts/ipython_win_post_install: create ipython.py in
	prefix + "/scripts".
	
	* Release.py: Update version to 0.7.3.
    
2006-12-14  Ville Vainio  <vivainio@gmail.com>

	* scripts/ipython_win_post_install: Overwrite old shortcuts
	if they already exist

	* Release.py: release 0.7.3rc2
    
2006-12-13  Ville Vainio  <vivainio@gmail.com>

	* Branch and update Release.py for 0.7.3rc1

2006-12-13  Fernando Perez  <Fernando.Perez@colorado.edu>

	* IPython/Shell.py (IPShellWX): update for current WX naming
	conventions, to avoid a deprecation warning with current WX
	versions.  Thanks to a report by Danny Shevitz.

2006-12-12  Ville Vainio  <vivainio@gmail.com>

	* ipmaker.py: apply david cournapeau's patch to make
	import_some work properly even when ipythonrc does 
	import_some on empty list (it was an old bug!).

	* UserConfig/ipy_user_conf.py, UserConfig/ipythonrc:
	Add deprecation note to ipythonrc and a url to wiki
	in ipy_user_conf.py

		 
	* Magic.py (%run): %run myscript.ipy now runs myscript.ipy
	as if it was typed on IPython command prompt, i.e.
	as IPython script.
	
	* example-magic.py, magic_grepl.py: remove outdated examples

2006-12-11  Fernando Perez  <Fernando.Perez@colorado.edu>

        * IPython/iplib.py (debugger): prevent a nasty traceback if %debug
        is called before any exception has occurred.
	
2006-12-08  Ville Vainio  <vivainio@gmail.com>

	* Extensions/ipy_stock_completers.py: fix cd completer 
	to translate /'s to \'s again.
	
	* completer.py: prevent traceback on file completions w/ 
	backslash.
	
	* Release.py: Update release number to 0.7.3b3 for release

2006-12-07  Ville Vainio  <vivainio@gmail.com>

	* Extensions/ipy_signals.py: Ignore ctrl+C in IPython process
	while executing external code. Provides more shell-like behaviour
	and overall better response to ctrl + C / ctrl + break.

	* tools/make_tarball.py: new script to create tarball straight from svn
	(setup.py sdist doesn't work on win32).

	* Extensions/ipy_stock_completers.py: fix cd completer to give up
	on dirnames with spaces and use the default completer instead.

	* Revision.py: Change version to 0.7.3b2 for release.

2006-12-05  Ville Vainio  <vivainio@gmail.com>

	* Magic.py, iplib.py, completer.py: Apply R. Bernstein's
	pydb patch 4 (rm debug printing, py 2.5 checking)

2006-11-30  Walter Doerwald  <walter@livinglogic.de>
	* IPython/Extensions/ibrowse.py: Add two new commands to ibrowse:
	"refresh" (mapped to "r") refreshes the screen by restarting the iterator.
	"refreshfind" (mapped to "R") does the same but tries to go back to the same
	object the cursor was on before the refresh. The command "markrange" is
	mapped to "%" now.
	* IPython/Extensions/ibrowse.py: Make igrpentry and ipwdentry comparable.

2006-11-29  Fernando Perez  <Fernando.Perez@colorado.edu>

	* IPython/Magic.py (magic_debug): new %debug magic to activate the
	interactive debugger on the last traceback, without having to call
	%pdb and rerun your code.  Made minor changes in various modules,
	should automatically recognize pydb if available.

2006-11-28  Ville Vainio  <vivainio@gmail.com>

	* completer.py: If the text start with !, show file completions
	properly. This helps when trying to complete command name
	for shell escapes.

2006-11-27  Ville Vainio  <vivainio@gmail.com>

	* ipy_stock_completers.py: bzr completer submitted by Stefan van 
	der Walt. Clean up svn and hg completers by using a common 
	vcs_completer. 
	
2006-11-26  Ville Vainio  <vivainio@gmail.com>

	* Remove ipconfig and %config; you should use _ip.options structure
	directly instead!
	
	* genutils.py: add wrap_deprecated function for deprecating callables
	
	* iplib.py: deprecate ipmagic, ipsystem, ipalias. Use _ip.magic and
	_ip.system instead. ipalias is redundant.
	
	* Magic.py: %rehashdir no longer aliases 'cmdname' to 'cmdname.exe' on 
	win32, but just 'cmdname'. Other extensions (non-'exe') are still made 
	explicit.

	* ipy_stock_completers.py: 'hg' (mercurial VCS) now has a custom 
	completer. Try it by entering 'hg ' and pressing tab.

	* macro.py: Give Macro a useful __repr__ method
	
	* Magic.py: %whos abbreviates the typename of Macro for brevity.
	
2006-11-24  Walter Doerwald  <walter@livinglogic.de>
	* IPython/Extensions/astyle.py: Do a relative import of ipipe, so that
	we don't get a duplicate ipipe module, where registration of the xrepr
	implementation for Text is useless.

	* IPython/Extensions/ipipe.py: Fix __xrepr__() implementation for ils.

	* IPython/Extensions/ibrowse.py: Fix keymapping for the enter command.

2006-11-24  Ville Vainio  <vivainio@gmail.com>

	* Magic.py, manual_base.lyx: Kirill Smelkov patch: 
	try to use "cProfile" instead of the slower pure python
	"profile"

2006-11-23  Ville Vainio  <vivainio@gmail.com>

	* manual_base.lyx: Kirill Smelkov patch: Fix wrong 
	Qt+IPython+Designer link in documentation.
	
	* Extensions/ipy_pydb.py: R. Bernstein's patch for passing 
	correct Pdb object to %pydb.


2006-11-22  Walter Doerwald  <walter@livinglogic.de>
	* IPython/Extensions/astyle.py: Text needs it's own implemenation of the
	generic xrepr(), otherwise the list implementation would kick in.

2006-11-21  Ville Vainio  <vivainio@gmail.com>

	* upgrade_dir.py: Now actually overwrites a nonmodified user file
	with one from UserConfig.
	
	* ipy_profile_sh.py: Add dummy "depth" to var_expand lambda, 
	it was missing which broke the sh profile.
	
	* completer.py: file completer now uses explicit '/' instead
	of os.path.join, expansion of 'foo' was broken on win32 
	if there was one directory with name 'foobar'. 

	* A bunch of patches from Kirill Smelkov:
	
	* [patch 9/9] doc: point bug-tracker URL to IPythons trac-tickets.

	* [patch 7/9] Implement %page -r (page in raw mode) - 

	* [patch 5/9] ScientificPython webpage has moved

	* [patch 4/9] The manual mentions %ds, should be %dhist

	* [patch 3/9] Kill old bits from %prun doc.

	* [patch 1/9] Fix typos here and there.

2006-11-08  Ville Vainio  <vivainio@gmail.com>

	* completer.py (attr_matches): catch all exceptions raised 
	by eval of expr with dots.

2006-11-07  Fernando Perez  <Fernando.Perez@colorado.edu>

	* IPython/iplib.py (runsource): Prepend an 'if 1:' to the user
	input if it starts with whitespace.  This allows you to paste
	indented input from any editor without manually having to type in
	the 'if 1:', which is convenient when working interactively.
	Slightly modifed version of a patch by Bo Peng
	<bpeng-AT-rice.edu>.

2006-11-03  Fernando Perez  <Fernando.Perez@colorado.edu>

	* IPython/irunner.py (main): modified irunner so it automatically
	recognizes the right runner to use based on the extension (.py for
	python, .ipy for ipython and .sage for sage).

	* IPython/iplib.py (InteractiveShell.ipconfig): new builtin, also
	visible in ipapi as ip.config(), to programatically control the
	internal rc object.  There's an accompanying %config magic for
	interactive use, which has been enhanced to match the
	funtionality in ipconfig.

	* IPython/Magic.py (magic_system_verbose): Change %system_verbose
	so it's not just a toggle, it now takes an argument.  Add support
	for a customizable header when making system calls, as the new
	system_header variable in the ipythonrc file.

2006-11-03  Walter Doerwald  <walter@livinglogic.de>

	* IPython/Extensions/ipipe.py: xrepr(), xiter() and xattrs() are now
	generic functions (using Philip J. Eby's simplegeneric package).
	This makes it possible to customize the display of third-party classes
	without having to monkeypatch them. xiter() no longer supports a mode
	argument and the XMode class has been removed. The same functionality can
	be implemented via IterAttributeDescriptor and IterMethodDescriptor.
	One consequence of the switch to generic functions is that xrepr() and
	xattrs() implementation must define the default value for the mode
	argument themselves and xattrs() implementations must return real
	descriptors.

	* IPython/external: This new subpackage will contain all third-party
	packages that are bundled with IPython. (The first one is simplegeneric).

	* IPython/Extensions/ipipe.py (ifile/ils): Readd output of the parent
	directory which as been dropped in r1703.

	* IPython/Extensions/ipipe.py (iless): Fixed.

	* IPython/Extensions/ibrowse: Fixed sorting under Python 2.3.

2006-11-03  Fernando Perez  <Fernando.Perez@colorado.edu>

	* IPython/iplib.py (InteractiveShell.var_expand): fix stack
	handling in variable expansion so that shells and magics recognize
	function local scopes correctly.  Bug reported by Brian.

	* scripts/ipython: remove the very first entry in sys.path which
	Python auto-inserts for scripts, so that sys.path under IPython is
	as similar as possible to that under plain Python.

	* IPython/completer.py (IPCompleter.file_matches): Fix
	tab-completion so that quotes are not closed unless the completion
	is unambiguous.  After a request by Stefan.  Minor cleanups in
	ipy_stock_completers.

2006-11-02  Ville Vainio  <vivainio@gmail.com>

	* ipy_stock_completers.py: Add %run and %cd completers.
	
	* completer.py: Try running custom completer for both 
	"foo" and "%foo" if the command is just "foo". Ignore case
	when filtering possible completions.
	
	* UserConfig/ipy_user_conf.py: install stock completers as default	
	
	* iplib.py (history_saving_wrapper), debugger(), ipy_pydb.py:
	simplified readline history save / restore through a wrapper 
	function
	
	
2006-10-31  Ville Vainio  <vivainio@gmail.com>

	* strdispatch.py, completer.py, ipy_stock_completers.py:
	Allow str_key ("command") in completer hooks. Implement 
	trivial completer for 'import' (stdlib modules only). Rename 
	ipy_linux_package_managers.py to ipy_stock_completers.py.
	SVN completer.
	
	* Extensions/ledit.py: %magic line editor for easily and
	incrementally manipulating lists of strings. The magic command
	name is %led.

2006-10-30  Ville Vainio  <vivainio@gmail.com>

	* Debugger.py, iplib.py (debugger()): Add last set of Rocky 
	Bernsteins's patches for pydb integration.
	http://bashdb.sourceforge.net/pydb/
	
	* strdispatch.py, iplib.py, completer.py, IPython/__init__.py,
	Extensions/ipy_linux_package_managers.py, hooks.py: Implement 
	custom completer hook to allow the users to implement their own 
	completers. See ipy_linux_package_managers.py for example. The 
	hook name is 'complete_command'. 

2006-10-28  Fernando Perez  <Fernando.Perez@colorado.edu>

	* IPython/UserConfig/ipythonrc-scipy: minor cleanups to remove old
	Numeric leftovers.

	* ipython.el (py-execute-region): apply Stefan's patch to fix
	garbled results if the python shell hasn't been previously started.

	* IPython/genutils.py (arg_split): moved to genutils, since it's a
	pretty generic function and useful for other things.

	* IPython/OInspect.py (getsource): Add customizable source
	extractor.  After a request/patch form W. Stein (SAGE).

	* IPython/irunner.py (InteractiveRunner.run_source): reset tty
	window size to a more reasonable value from what pexpect does,
	since their choice causes wrapping bugs with long input lines.

2006-10-28  Ville Vainio  <vivainio@gmail.com>

	* Magic.py (%run): Save and restore the readline history from 
	file around %run commands to prevent side effects from 
	%runned programs that might use readline (e.g. pydb).

	* extensions/ipy_pydb.py: Adds %pydb magic when imported, for 
	invoking the pydb enhanced debugger.

2006-10-23  Walter Doerwald  <walter@livinglogic.de>

	* IPython/Extensions/ipipe.py (ifile): Remove all methods that
	call the base class method and propagate the return value to
	ifile. This is now done by path itself.

2006-10-15  Fernando Perez  <Fernando.Perez@colorado.edu>

	* IPython/ipapi.py (IPApi.__init__): Added new entry to public
	api: set_crash_handler(), to expose the ability to change the
	internal crash handler.

	* IPython/CrashHandler.py (CrashHandler.__init__): abstract out
	the various parameters of the crash handler so that apps using
	IPython as their engine can customize crash handling.  Ipmlemented
	at the request of SAGE.

2006-10-14  Ville Vainio  <vivainio@gmail.com>

	* Magic.py, ipython.el: applied first "safe" part of Rocky 
	Bernstein's patch set for pydb integration.

	* Magic.py (%unalias, %alias): %store'd aliases can now be
	removed with '%unalias'. %alias w/o args now shows most 
	interesting (stored / manually defined) aliases last
	where they catch the eye w/o scrolling.

	* Magic.py (%rehashx), ext_rehashdir.py: files with
	'py' extension are always considered executable, even
	when not in PATHEXT environment variable.

2006-10-12  Ville Vainio  <vivainio@gmail.com>

	* jobctrl.py: Add new "jobctrl" extension for spawning background
	processes with "&find /". 'import jobctrl' to try it out. Requires
	'subprocess' module, standard in python 2.4+.
	
	* iplib.py (expand_aliases, handle_alias): Aliases expand transitively, 
	so if foo -> bar and bar -> baz, then foo -> baz.

2006-10-09  Fernando Perez  <Fernando.Perez@colorado.edu>

	* IPython/Magic.py (Magic.parse_options): add a new posix option
	to allow parsing of input args in magics that doesn't strip quotes
	(if posix=False).  This also closes %timeit bug reported by
	Stefan.

2006-10-03  Ville Vainio  <vivainio@gmail.com>

	* iplib.py (raw_input, interact): Return ValueError catching for 
	raw_input. Fixes infinite loop for sys.stdin.close() or 
	sys.stdout.close().

2006-09-27  Fernando Perez  <Fernando.Perez@colorado.edu>

	* IPython/irunner.py (InteractiveRunner.run_source): small fixes
	to help in handling doctests.  irunner is now pretty useful for
	running standalone scripts and simulate a full interactive session
	in a format that can be then pasted as a doctest.

	* IPython/iplib.py (InteractiveShell.__init__): Install exit/quit
	on top of the default (useless) ones.  This also fixes the nasty
	way in which 2.5's Quitter() exits (reverted [1785]).

	* IPython/Debugger.py (Pdb.__init__): Fix ipdb to work with python
	2.5.

	* IPython/ultraTB.py (TBTools.set_colors): Make sure that ipdb
	color scheme is updated as well when color scheme is changed
	interactively. 

2006-09-27  Ville Vainio  <vivainio@gmail.com>

	* iplib.py (raw_input): python 2.5 closes stdin on quit -> avoid
    infinite loop and just exit. It's a hack, but will do for a while.

2006-08-25  Walter Doerwald  <walter@livinglogic.de>

	* IPython/Extensions/ipipe.py (ils): Add arguments dirs and files to
	the constructor, this makes it possible to get a list of only directories
	or only files.

2006-08-12  Ville Vainio  <vivainio@gmail.com>

	* Fakemodule.py, OInspect.py: Reverted 2006-08-11 mods,
	they broke unittest 

2006-08-11  Ville Vainio  <vivainio@gmail.com>

	* Fakemodule.py, OInspect.py: remove 2006-08-09 monkepatch
	by resolving issue properly, i.e. by inheriting FakeModule
	from types.ModuleType. Pickling ipython interactive data
	should still work as usual (testing appreciated).

2006-08-09  Fernando Perez  <Fernando.Perez@colorado.edu>

	* IPython/OInspect.py: monkeypatch inspect from the stdlib if
	running under python 2.3 with code from 2.4 to fix a bug with
	help().  Reported by the Debian maintainers, Norbert Tretkowski
	<norbert-AT-tretkowski.de> and Alexandre Fayolle
	<afayolle-AT-debian.org>.

2006-08-04  Walter Doerwald  <walter@livinglogic.de>

	* IPython/Extensions/ibrowse.py: Fixed the help message in the footer
	(which was displaying "quit" twice).

2006-07-28  Walter Doerwald  <walter@livinglogic.de>

	* IPython/Extensions/ipipe.py: Fix isort.__iter__() (was still using
	the mode argument).

2006-07-27  Walter Doerwald  <walter@livinglogic.de>

	* IPython/Extensions/ipipe.py: Fix getglobals() if we're
	not running under IPython.

	* IPython/Extensions/ipipe.py: Rename XAttr to AttributeDetail
	and make it iterable (iterating over the attribute itself). Add two new
	magic strings for __xattrs__(): If the string starts with "-", the attribute
	will not be displayed in ibrowse's detail view (but it can still be
	iterated over). This makes it possible to add attributes that are large
	lists or generator methods to the detail view. Replace magic attribute names
	and _attrname() and _getattr() with "descriptors": For each type of magic
	attribute name there's a subclass of Descriptor: None -> SelfDescriptor();
	"foo" -> AttributeDescriptor("foo"); "foo()" -> MethodDescriptor("foo");
	"-foo" -> IterAttributeDescriptor("foo"); "-foo()" -> IterMethodDescriptor("foo");
	foo() -> FunctionDescriptor(foo). Magic strings returned from __xattrs__()
	are still supported.

	* IPython/Extensions/ibrowse.py: If fetching the next row from the input
	fails in ibrowse.fetch(), the exception object is added as the last item
	and item fetching is canceled. This prevents ibrowse from aborting if e.g.
	a generator throws an exception midway through execution.

	* IPython/Extensions/ipipe.py: Turn ifile's properties mimetype and
	encoding into methods.

2006-07-26  Ville Vainio  <vivainio@gmail.com>

	* iplib.py: history now stores multiline input as single
	history entries. Patch by Jorgen Cederlof.

2006-07-18  Walter Doerwald  <walter@livinglogic.de>

	* IPython/Extensions/ibrowse.py: Make cursor visible over
	non existing attributes.

2006-07-14  Walter Doerwald  <walter@livinglogic.de>

	* IPython/Extensions/ipipe.py (ix): Use os.popen4() so that the
	error output of the running command doesn't mess up the screen.

2006-07-13  Walter Doerwald  <walter@livinglogic.de>

	* IPython/Extensions/ipipe.py (isort): Make isort usable without
	argument. This sorts the items themselves.

2006-07-12  Walter Doerwald  <walter@livinglogic.de>

	* IPython/Extensions/ipipe.py (eval, ifilter, isort, ieval):
	Compile expression strings into code objects. This should speed
	up ifilter and friends somewhat.

2006-07-08  Ville Vainio  <vivainio@gmail.com>

	* Magic.py: %cpaste now strips > from the beginning of lines
	to ease pasting quoted code from emails. Contributed by 
	Stefan van der Walt.

2006-06-29  Ville Vainio  <vivainio@gmail.com>

	* ipmaker.py, Shell.py: qt4agg matplotlib backend support for pylab
	mode, patch contributed by Darren Dale. NEEDS TESTING! 

2006-06-28  Walter Doerwald  <walter@livinglogic.de>

	* IPython/Extensions/ibrowse.py: Give the ibrowse cursor row
	a blue background. Fix fetching new display rows when the browser
	scrolls more than a screenful (e.g. by using the goto command).

2006-06-27  Ville Vainio  <vivainio@gmail.com>

	* Magic.py (_inspect, _ofind) Apply David Huard's 
	patch for displaying the correct docstring for 'property' 
	attributes.

2006-06-23  Walter Doerwald  <walter@livinglogic.de>

	* IPython/Extensions/ibrowse.py: Put the documentation of the keyboard
	commands into the methods implementing them.

2006-06-22  Fernando Perez  <Fernando.Perez@colorado.edu>

	* ipython.el (ipython-indentation-hook): cleanup patch, submitted
	by Kov Chai <tchaikov-AT-gmail.com>.  He notes that the original
	autoindent support was authored by Jin Liu.

2006-06-22  Walter Doerwald  <walter@livinglogic.de>

	* IPython/Extensions/ibrowse.py: Replace the plain dictionaries used
	for keymaps with a custom class that simplifies handling.

2006-06-19  Walter Doerwald  <walter@livinglogic.de>

	* IPython/Extensions/ibrowse.py: ibrowse now properly handles terminal
	resizing. This requires Python 2.5 to work.

2006-06-16  Walter Doerwald  <walter@livinglogic.de>

	* IPython/Extensions/ibrowse.py: Add two new commands to
	ibrowse: "hideattr" (mapped to "h") hides the attribute under
	the cursor. "unhiderattrs" (mapped to "H") reveals all hidden
	attributes again. Remapped the help command to "?". Display
	keycodes in the range 0x01-0x1F as CTRL-xx. Add CTRL-a and CTRL-e
	as keys for the "home" and "end" commands. Add three new commands
	to the input mode for "find" and friends: "delend" (CTRL-K)
	deletes to the end of line. "incsearchup" searches upwards in the
	command history for an input that starts with the text before the cursor.
	"incsearchdown" does the same downwards. Removed a bogus mapping of
	the x key to "delete".

2006-06-15  Ville Vainio  <vivainio@gmail.com>

	* iplib.py, hooks.py: Added new generate_prompt hook that can be
	used to create prompts dynamically, instead of the "old" way of
	assigning "magic" strings to prompt_in1 and prompt_in2. The old
	way still works (it's invoked by the default hook), of course.
	
	* Prompts.py: added generate_output_prompt hook for altering output
	prompt

	* Release.py: Changed version string to 0.7.3.svn.
	
2006-06-15  Walter Doerwald  <walter@livinglogic.de>

	* IPython/Extensions/ibrowse.py: Change _BrowserLevel.moveto() so that
	the call to fetch() always tries to fetch enough data for at least one
	full screen. This makes it possible to simply call moveto(0,0,True) in
	the constructor. Fix typos and removed the obsolete goto attribute.

2006-06-12  Ville Vainio  <vivainio@gmail.com>

	* ipy_profile_sh.py: applied Krisha Mohan Gundu's patch for
	allowing $variable interpolation within multiline statements,
	though so far only with "sh" profile for a testing period.
	The patch also enables splitting long commands with \ but it
	doesn't work properly yet.

2006-06-12  Walter Doerwald  <walter@livinglogic.de>

	* IPython/Extensions/ibrowse.py (_dodisplay): Display the length of the
	input history and the position of the cursor in the input history for
	the find, findbackwards and goto command.

2006-06-10  Walter Doerwald  <walter@livinglogic.de>

	* IPython/Extensions/ibrowse.py: Add a class _CommandInput that
	implements the basic functionality of browser commands that require
	input. Reimplement the goto, find and findbackwards commands as
	subclasses of _CommandInput. Add an input history and keymaps to those
	commands. Add "\r" as a keyboard shortcut for the enterdefault and
	execute commands.

2006-06-07  Ville Vainio  <vivainio@gmail.com>

	* iplib.py: ipython mybatch.ipy exits ipython immediately after
	running the batch files instead of leaving the session open.

2006-06-07  Fernando Perez  <Fernando.Perez@colorado.edu>

	* IPython/iplib.py (InteractiveShell.__init__): update BSD fix, as
	the original fix was incomplete.  Patch submitted by W. Maier.

2006-06-07  Ville Vainio  <vivainio@gmail.com>

	* iplib.py,Magic.py, ipmaker.py (magic_rehashx):
	Confirmation prompts can be supressed by 'quiet' option.
	_ip.options.quiet = 1 means "assume yes for all yes/no queries".

2006-06-06  *** Released version 0.7.2

2006-06-06  Fernando Perez  <Fernando.Perez@colorado.edu>

	* IPython/Release.py (version): Made 0.7.2 final for release.
	Repo tagged and release cut.

2006-06-05  Ville Vainio  <vivainio@gmail.com>

	* Magic.py (magic_rehashx): Honor no_alias list earlier in
	%rehashx, to avoid clobbering builtins in ipy_profile_sh.py
	
	* upgrade_dir.py: try import 'path' module a bit harder
	(for %upgrade)

2006-06-03  Fernando Perez  <Fernando.Perez@colorado.edu>

	* IPython/genutils.py (ask_yes_no): treat EOF as a default answer
	instead of looping 20 times.

	* IPython/ipmaker.py (make_IPython): honor -ipythondir flag
	correctly at initialization time.  Bug reported by Krishna Mohan
	Gundu <gkmohan-AT-gmail.com> on the user list.

	* IPython/Release.py (version): Mark 0.7.2 version to start
	testing for release on 06/06.

2006-05-31  Fernando Perez  <Fernando.Perez@colorado.edu>

	* scripts/irunner: thin script interface so users don't have to
	find the module and call it as an executable, since modules rarely
	live in people's PATH.

	* IPython/irunner.py (InteractiveRunner.__init__): added
	delaybeforesend attribute to control delays with newer versions of
	pexpect.  Thanks to detailed help from pexpect's author, Noah
	Spurrier <noah-AT-noah.org>.  Noted how to use the SAGE runner
	correctly (it works in NoColor mode).

	* IPython/iplib.py (handle_normal): fix nasty crash reported on
	SAGE list, from improper log() calls.

2006-05-31  Ville Vainio  <vivainio@gmail.com>

	* upgrade_dir.py, Magic.py (magic_upgrade): call upgrade_dir
	with args in parens to work correctly with dirs that have spaces.

2006-05-30  Fernando Perez  <Fernando.Perez@colorado.edu>

	* IPython/Logger.py (Logger.logstart): add option to log raw input
	instead of the processed one.  A -r flag was added to the
	%logstart magic used for controlling logging.

2006-05-29  Fernando Perez  <Fernando.Perez@colorado.edu>

	* IPython/iplib.py (InteractiveShell.__init__): add check for the
	*BSDs to omit --color from all 'ls' aliases, since *BSD ls doesn't
	recognize the option.  After a bug report by Will Maier.  This
	closes #64 (will do it after confirmation from W. Maier).

	* IPython/irunner.py: New module to run scripts as if manually
	typed into an interactive environment, based on pexpect.  After a
	submission by Ken Schutte <kschutte-AT-csail.mit.edu> on the
	ipython-user list.  Simple unittests in the tests/ directory.

	* tools/release: add Will Maier, OpenBSD port maintainer, to
	recepients list.  We are now officially part of the OpenBSD ports:
	http://www.openbsd.org/ports.html !  Many thanks to Will for the
	work.

2006-05-26  Fernando Perez  <Fernando.Perez@colorado.edu>

	* IPython/ipmaker.py (make_IPython): modify sys.argv fix (below)
	so that it doesn't break tkinter apps.
	
	* IPython/iplib.py (_prefilter): fix bug where aliases would
	shadow variables when autocall was fully off.  Reported by SAGE
	author William Stein.

	* IPython/OInspect.py (Inspector.__init__): add a flag to control
	at what detail level strings are computed when foo? is requested.
	This allows users to ask for example that the string form of an
	object is only computed when foo?? is called, or even never, by
	setting the object_info_string_level >= 2 in the configuration
	file.  This new option has been added and documented.  After a
	request by SAGE to be able to control the printing of very large
	objects more easily.

2006-05-25  Fernando Perez  <Fernando.Perez@colorado.edu>

	* IPython/ipmaker.py (make_IPython): remove the ipython call path
	from sys.argv, to be 100% consistent with how Python itself works
	(as seen for example with python -i file.py).  After a bug report
	by Jeffrey Collins.

	* IPython/Shell.py (MatplotlibShellBase._matplotlib_config): Fix
	nasty bug which was preventing custom namespaces with -pylab,
	reported by M. Foord.  Minor cleanup, remove old matplotlib.matlab
	compatibility (long gone from mpl).

	* IPython/ipapi.py (make_session): name change: create->make.  We
	use make in other places (ipmaker,...), it's shorter and easier to
	type and say, etc.  I'm trying to clean things before 0.7.2 so
	that I can keep things stable wrt to ipapi in the chainsaw branch.

	* ipython.el: fix the py-pdbtrack-input-prompt variable so that
	python-mode recognizes our debugger mode.  Add support for
	autoindent inside (X)emacs.  After a patch sent in by Jin Liu
	<m.liu.jin-AT-gmail.com> originally written by
	doxgen-AT-newsmth.net (with minor modifications for xemacs
	compatibility)

	* IPython/Debugger.py (Pdb.format_stack_entry): fix formatting of
	tracebacks when walking the stack so that the stack tracking system
	in emacs' python-mode can identify the frames correctly.

	* IPython/ipmaker.py (make_IPython): make the internal (and
	default config) autoedit_syntax value false by default.  Too many
	users have complained to me (both on and off-list) about problems
	with this option being on by default, so I'm making it default to
	off.  It can still be enabled by anyone via the usual mechanisms.

	* IPython/completer.py (Completer.attr_matches): add support for
	PyCrust-style _getAttributeNames magic method.  Patch contributed
	by <mscott-AT-goldenspud.com>.  Closes #50.

	* IPython/iplib.py (InteractiveShell.__init__): remove the
	deletion of exit/quit from __builtin__, which can break
	third-party tools like the Zope debugging console.  The
	%exit/%quit magics remain.  In general, it's probably a good idea
	not to delete anything from __builtin__, since we never know what
	that will break.  In any case, python now (for 2.5) will support
	'real' exit/quit, so this issue is moot.  Closes #55.

	* IPython/genutils.py (with_obj): rename the 'with' function to
	'withobj' to avoid incompatibilities with Python 2.5, where 'with'
	becomes a language keyword.  Closes #53.

	* IPython/FakeModule.py (FakeModule.__init__): add a proper
	__file__ attribute to this so it fools more things into thinking
	it is a real module.  Closes #59.

	* IPython/Magic.py (magic_edit): add -n option to open the editor
	at a specific line number.  After a patch by Stefan van der Walt.

2006-05-23  Fernando Perez  <Fernando.Perez@colorado.edu>

	* IPython/iplib.py (edit_syntax_error): fix crash when for some
	reason the file could not be opened.  After automatic crash
	reports sent by James Graham <jgraham-AT-ast.cam.ac.uk> and
	Charles Dolan <charlespatrickdolan-AT-yahoo.com>.
	(_should_recompile): Don't fire editor if using %bg, since there
	is no file in the first place.  From the same report as above.
	(raw_input): protect against faulty third-party prefilters.  After
	an automatic crash report sent by Dirk Laurie <dirk-AT-sun.ac.za>
	while running under SAGE.

2006-05-23  Ville Vainio  <vivainio@gmail.com>

	* ipapi.py: Stripped down ip.to_user_ns() to work only as
	ip.to_user_ns("x1 y1"), which exposes vars x1 and y1. ipapi.get()
	now returns None (again), unless dummy is specifically allowed by
	ipapi.get(allow_dummy=True).

2006-05-18  Fernando Perez  <Fernando.Perez@colorado.edu>

	* IPython: remove all 2.2-compatibility objects and hacks from
	everywhere, since we only support 2.3 at this point.  Docs
	updated.

	* IPython/ipapi.py (IPApi.__init__): Cleanup of all getters.
	Anything requiring extra validation can be turned into a Python
	property in the future.  I used a property for the db one b/c
	there was a nasty circularity problem with the initialization
	order, which right now I don't have time to clean up.

	* IPython/Shell.py (MTInteractiveShell.runcode): Fix, I think,
	another locking bug reported by Jorgen.  I'm not 100% sure though,
	so more testing is needed...

2006-05-17  Fernando Perez  <Fernando.Perez@colorado.edu>

	* IPython/ipapi.py (IPApi.to_user_ns): New function to inject
	local variables from any routine in user code (typically executed
	with %run) directly into the interactive namespace.  Very useful
	when doing complex debugging.
	(IPythonNotRunning): Changed the default None object to a dummy
	whose attributes can be queried as well as called without
	exploding, to ease writing code which works transparently both in
	and out of ipython and uses some of this API.

2006-05-16  Fernando Perez  <Fernando.Perez@colorado.edu>

	* IPython/hooks.py (result_display): Fix the fact that our display
	hook was using str() instead of repr(), as the default python
	console does.  This had gone unnoticed b/c it only happened if
	%Pprint was off, but the inconsistency was there.

2006-05-15  Ville Vainio  <vivainio@gmail.com>

	* Oinspect.py: Only show docstring for nonexisting/binary files
	when doing object??, closing ticket #62

2006-05-13  Fernando Perez  <Fernando.Perez@colorado.edu>

	* IPython/Shell.py (MTInteractiveShell.runsource): Fix threading
	bug, closes http://www.scipy.net/roundup/ipython/issue55.  A lock
	was being released in a routine which hadn't checked if it had
	been the one to acquire it.

2006-05-07  Fernando Perez  <Fernando.Perez@colorado.edu>

	* IPython/Release.py (version): put out 0.7.2.rc1 for testing.

2006-04-11  Ville Vainio  <vivainio@gmail.com>

	* iplib.py, ipmaker.py: .ipy extension now means "ipython batch file"
	in command line. E.g. "ipython test.ipy" runs test.ipy with ipython
	prefilters, allowing stuff like magics and aliases in the file.
	
	* Prompts.py, Extensions/clearcmd.py, ipy_system_conf.py: %clear magic
	added. Supported now are "%clear in" and "%clear out" (clear input and
	output history, respectively). Also fixed CachedOutput.flush to
	properly flush the output cache.
	
	* Extensions/pspersistence.py: Fix %store to avoid "%store obj.attr"
	half-success (and fail explicitly).

2006-03-28  Ville Vainio  <vivainio@gmail.com>

	* iplib.py: Fix quoting of aliases so that only argless ones
	are quoted

2006-03-28  Ville Vainio  <vivainio@gmail.com>

	* iplib.py: Quote aliases with spaces in the name.
	"c:\program files\blah\bin" is now legal alias target.
	
	* ext_rehashdir.py: Space no longer allowed as arg
	separator, since space is legal in path names.
	
2006-03-16  Ville Vainio  <vivainio@gmail.com>

	* upgrade_dir.py: Take path.py from Extensions, correcting
	%upgrade magic
	
	* ipmaker.py: Suggest using %upgrade if ipy_user_conf.py isn't found.
	
	* hooks.py: Only enclose editor binary in quotes if legal and
	necessary (space in the name, and is an existing file). Fixes a bug
	reported by Zachary Pincus.

2006-03-13  Fernando Perez  <Fernando.Perez@colorado.edu>

	* Manual: thanks to a tip on proper color handling for Emacs, by
	Eric J Haywiser <ejh1-AT-MIT.EDU>.
	
	* ipython.el: close http://www.scipy.net/roundup/ipython/issue57
	by applying the provided patch.  Thanks to Liu Jin
	<m.liu.jin-AT-gmail.com> for the contribution.  No problems under
	XEmacs/Linux, I'm trusting the submitter that it actually helps
	under win32/GNU Emacs.  Will revisit if any problems are reported.

2006-03-12  Fernando Perez  <Fernando.Perez@colorado.edu>

	* IPython/Gnuplot2.py (_FileClass): update for current Gnuplot.py
	from SVN, thanks to a patch by Ryan Woodard <rywo@bas.ac.uk>.

2006-03-12  Ville Vainio  <vivainio@gmail.com>

	* Magic.py (magic_timeit): Added %timeit magic, contributed by
	Torsten Marek.

2006-03-12  Fernando Perez  <Fernando.Perez@colorado.edu>

	* IPython/Magic.py (magic_macro): fix so that the n1-n2 syntax for
	line ranges works again.

2006-03-11  Fernando Perez  <Fernando.Perez@colorado.edu>

	* IPython/iplib.py (showtraceback): add back sys.last_traceback
	and friends, after a discussion with Zach Pincus on ipython-user.
	I'm not 100% sure, but after thinking about it quite a bit, it may
	be OK.  Testing with the multithreaded shells didn't reveal any
	problems, but let's keep an eye out.

	In the process, I fixed a few things which were calling
	self.InteractiveTB() directly (like safe_execfile), which is a
	mistake: ALL exception reporting should be done by calling
	self.showtraceback(), which handles state and tab-completion and
	more.

2006-03-01  Ville Vainio  <vivainio@gmail.com>

	* Extensions/ipipe.py: Added Walter Doerwald's "ipipe" module.
	To use, do "from ipipe import *".

2006-02-24  Ville Vainio  <vivainio@gmail.com>

	* Magic.py, upgrade_dir.py: %upgrade magic added. Does things more
	"cleanly" and safely than the older upgrade mechanism.

2006-02-21  Ville Vainio  <vivainio@gmail.com>

	* Magic.py: %save works again.

2006-02-15  Ville Vainio  <vivainio@gmail.com>

	* Magic.py: %Pprint works again
	
	* Extensions/ipy_sane_defaults.py: Provide everything provided
	in default ipythonrc, to make it possible to have a completely empty
	ipythonrc (and thus completely rc-file free configuration)

2006-02-11  Fernando Perez  <Fernando.Perez@colorado.edu>

	* IPython/hooks.py (editor): quote the call to the editor command,
	to allow commands with spaces in them.  Problem noted by watching
	Ian Oswald's video about textpad under win32 at
	http://showmedo.com/videoListPage?listKey=PythonIPythonSeries

	* IPython/UserConfig/ipythonrc: Replace @ signs with % when
	describing magics (we haven't used @ for a loong time).

	* IPython/ultraTB.py (VerboseTB.text.text_repr): Added patch
	contributed by marienz to close
	http://www.scipy.net/roundup/ipython/issue53.

2006-02-10  Ville Vainio  <vivainio@gmail.com>

	* genutils.py: getoutput now works in win32 too
	
	* completer.py: alias and magic completion only invoked
	at the first "item" in the line, to avoid "cd %store"
	nonsense.
	
2006-02-09  Ville Vainio  <vivainio@gmail.com>

	* test/*: Added a unit testing framework (finally).
	'%run runtests.py' to run test_*.
	
	* ipapi.py: Exposed runlines and set_custom_exc

2006-02-07  Ville Vainio  <vivainio@gmail.com>

	* iplib.py: don't split "f 1 2" to "f(1,2)" in autocall,
	instead use "f(1 2)" as before.

2006-02-05  Fernando Perez  <Fernando.Perez@colorado.edu>

	* IPython/demo.py (IPythonDemo): Add new classes to the demo
	facilities, for demos processed by the IPython input filter
	(IPythonDemo), and for running a script one-line-at-a-time as a
	demo, both for pure Python (LineDemo) and for IPython-processed
	input (IPythonLineDemo).  After a request by Dave Kohel, from the
	SAGE team.
	(Demo.edit): added an edit() method to the demo objects, to edit
	the in-memory copy of the last executed block.

	* IPython/Magic.py (magic_edit): add '-r' option for 'raw'
	processing to %edit, %macro and %save.  These commands can now be
	invoked on the unprocessed input as it was typed by the user
	(without any prefilters applied).  After requests by the SAGE team
	at SAGE days 2006: http://modular.ucsd.edu/sage/days1/schedule.html.

2006-02-01  Ville Vainio  <vivainio@gmail.com>

	* setup.py, eggsetup.py: easy_install ipython==dev works
	correctly now (on Linux)
	
	* ipy_user_conf,ipmaker: user config changes, removed spurious
	warnings
	
	* iplib: if rc.banner is string, use it as is.
	
	* Magic: %pycat accepts a string argument and pages it's contents.


2006-01-30  Ville Vainio  <vivainio@gmail.com>

	* pickleshare,pspersistence,ipapi,Magic: persistence overhaul.
	Now %store and bookmarks work through PickleShare, meaning that
	concurrent access is possible and all ipython sessions see the
	same database situation all the time, instead of snapshot of
	the situation when the session was started. Hence, %bookmark
	results are immediately accessible from othes sessions. The database
	is also available for use by user extensions. See:
	http://www.python.org/pypi/pickleshare
	
	* hooks.py: Two new hooks, 'shutdown_hook' and 'late_startup_hook'.
	
	* aliases can now be %store'd
	
	* path.py moved to Extensions so that pickleshare does not need
	IPython-specific import. Extensions added to pythonpath right
	at __init__.
	
	* iplib.py: ipalias deprecated/redundant; aliases are converted and
	called with _ip.system and the pre-transformed command string.

2006-01-29  Fernando Perez  <Fernando.Perez@colorado.edu>

	* IPython/iplib.py (interact): Fix that we were not catching
	KeyboardInterrupt exceptions properly.  I'm not quite sure why the
	logic here had to change, but it's fixed now.

2006-01-29  Ville Vainio  <vivainio@gmail.com>

	* iplib.py: Try to import pyreadline on Windows.

2006-01-27  Ville Vainio  <vivainio@gmail.com>

	* iplib.py: Expose ipapi as _ip in builtin namespace.
	Makes ipmagic (-> _ip.magic), ipsystem (-> _ip.system)
	and ip_set_hook (-> _ip.set_hook) redundant. % and !
	syntax now produce _ip.* variant of the commands.
	
	* "_ip.options().autoedit_syntax = 2" automatically throws
	user to editor for syntax error correction without prompting.

2006-01-27  Ville Vainio  <vivainio@gmail.com>

	* ipmaker.py: Give "realistic" sys.argv for scripts (without
	'ipython' at argv[0]) executed through command line.
	NOTE: this DEPRECATES calling ipython with multiple scripts
	("ipython a.py b.py c.py")
	
	* iplib.py, hooks.py: Added configurable input prefilter,
	named 'input_prefilter'. See ext_rescapture.py for example
	usage.
	
	* ext_rescapture.py, Magic.py: Better system command output capture
	through 'var = !ls' (deprecates user-visible %sc). Same notation
	applies for magics, 'var = %alias' assigns alias list to var.
	
	* ipapi.py: added meta() for accessing extension-usable data store.
	
	* iplib.py: added InteractiveShell.getapi(). New magics should be
	written doing self.getapi() instead of using the shell directly.
	
	* Magic.py: %store now allows doing %store foo > ~/myfoo.txt and
	%store foo >> ~/myfoo.txt to store variables to files (in clean
	textual form, not a restorable pickle).
	
	* ipmaker.py: now import ipy_profile_PROFILENAME automatically
	
	* usage.py, Magic.py: added %quickref
	
	* iplib.py: ESC_PAREN fixes: /f 1 2 -> f(1,2), not f(1 2).
	
	* GetoptErrors when invoking magics etc. with wrong args
	are now more helpful:
	GetoptError: option -l not recognized (allowed: "qb" )

2006-01-25  Fernando Perez  <Fernando.Perez@colorado.edu>

	* IPython/demo.py (Demo.show): Flush stdout after each block, so
	computationally intensive blocks don't appear to stall the demo.

2006-01-24  Ville Vainio  <vivainio@gmail.com>

	* iplib.py, hooks.py: 'result_display' hook can return a non-None
	value to manipulate resulting history entry.
	
	* ipapi.py: Moved TryNext here from hooks.py. Moved functions
	to instance methods of IPApi class, to make extending an embedded
	IPython feasible. See ext_rehashdir.py for example usage.
	
	* Merged 1071-1076 from branches/0.7.1


2006-01-23  Fernando Perez  <Fernando.Perez@colorado.edu>

	* tools/release (daystamp): Fix build tools to use the new
	eggsetup.py script to build lightweight eggs.

	* Applied changesets 1062 and 1064 before 0.7.1 release.
	
	* IPython/Magic.py (magic_history): Add '-r' option to %hist, to
	see the raw input history (without conversions like %ls ->
	ipmagic("ls")).  After a request from W. Stein, SAGE
	(http://modular.ucsd.edu/sage) developer.  This information is
	stored in the input_hist_raw attribute of the IPython instance, so
	developers can access it if needed (it's an InputList instance).
	
	* Versionstring = 0.7.2.svn
	
	* eggsetup.py: A separate script for constructing eggs, creates
	proper launch scripts even on Windows (an .exe file in
	\python24\scripts).
	
	* ipapi.py: launch_new_instance, launch entry point needed for the
	egg.

2006-01-23  Ville Vainio  <vivainio@gmail.com>

	* Added %cpaste magic for pasting python code

2006-01-22  Ville Vainio  <vivainio@gmail.com>

	* Merge from branches/0.7.1 into trunk, revs 1052-1057
	
	* Versionstring = 0.7.2.svn
	
	* eggsetup.py: A separate script for constructing eggs, creates
	proper launch scripts even on Windows (an .exe file in
	\python24\scripts).
	
	* ipapi.py: launch_new_instance, launch entry point needed for the
	egg.

2006-01-22  Fernando Perez  <Fernando.Perez@colorado.edu>

	* IPython/OInspect.py (Inspector.pinfo): fix bug where foo?? or
	%pfile foo would print the file for foo even if it was a binary.
	Now, extensions '.so' and '.dll' are skipped.

	* IPython/Shell.py (MTInteractiveShell.__init__): Fix threading
	bug, where macros would fail in all threaded modes.  I'm not 100%
	sure, so I'm going to put out an rc instead of making a release
	today, and wait for feedback for at least a few days.

	* IPython/iplib.py (handle_normal): fix (finally? somehow I doubt
	it...) the handling of pasting external code with autoindent on.
	To get out of a multiline input, the rule will appear for most
	users unchanged: two blank lines or change the indent level
	proposed by IPython.  But there is a twist now: you can
	add/subtract only *one or two spaces*.  If you add/subtract three
	or more (unless you completely delete the line), IPython will
	accept that line, and you'll need to enter a second one of pure
	whitespace.  I know it sounds complicated, but I can't find a
	different solution that covers all the cases, with the right
	heuristics.  Hopefully in actual use, nobody will really notice
	all these strange rules and things will 'just work'.

2006-01-21  Fernando Perez  <Fernando.Perez@colorado.edu>

	* IPython/iplib.py (interact): catch exceptions which can be
	triggered asynchronously by signal handlers.  Thanks to an
	automatic crash report, submitted by Colin Kingsley
	<tercel-AT-gentoo.org>.
	
2006-01-20  Ville Vainio  <vivainio@gmail.com>

	* Ipython/Extensions/ext_rehashdir.py: Created a usable example
	(%rehashdir, very useful, try it out) of how to extend ipython
	with new magics. Also added Extensions dir to pythonpath to make
	importing extensions easy.
	
	* %store now complains when trying to store interactively declared
	classes / instances of those classes.
	
	* Extensions/ipy_system_conf.py, UserConfig/ipy_user_conf.py,
	ipmaker.py: Config rehaul. Now ipy_..._conf.py are always imported
	if they exist, and ipy_user_conf.py with some defaults is created for
	the user.
	
	* Startup rehashing done by the config file, not InterpreterExec.
	This means system commands are available even without selecting the
	pysh profile. It's the sensible default after all.

2006-01-20  Fernando Perez  <Fernando.Perez@colorado.edu>

	* IPython/iplib.py (raw_input): I _think_ I got the pasting of
	multiline code with autoindent on working.  But I am really not
	sure, so this needs more testing.  Will commit a debug-enabled
	version for now, while I test it some more, so that Ville and
	others may also catch any problems.  Also made
	self.indent_current_str() a method, to ensure that there's no
	chance of the indent space count and the corresponding string
	falling out of sync.  All code needing the string should just call
	the method.

2006-01-18  Fernando Perez  <Fernando.Perez@colorado.edu>

	* IPython/Magic.py (magic_edit): fix check for when users don't
	save their output files, the try/except was in the wrong section.

2006-01-17  Fernando Perez  <Fernando.Perez@colorado.edu>

	* IPython/Magic.py (magic_run): fix __file__ global missing from
	script's namespace when executed via %run.  After a report by
	Vivian.

	* IPython/Debugger.py (Pdb.__init__): Fix breakage with '%run -d'
	when using python 2.4.  The parent constructor changed in 2.4, and
	we need to track it directly (we can't call it, as it messes up
	readline and tab-completion inside our pdb would stop working).
	After a bug report by R. Bernstein <rocky-AT-panix.com>.

2006-01-16  Ville Vainio  <vivainio@gmail.com>

	* Ipython/magic.py: Reverted back to old %edit functionality
	that returns file contents on exit.
	
	* IPython/path.py: Added Jason Orendorff's "path" module to
	IPython tree, http://www.jorendorff.com/articles/python/path/.
	You can get path objects conveniently through %sc, and !!, e.g.:
	 sc files=ls
	 for p in files.paths: # or files.p
	     print p,p.mtime
	
	* Ipython/iplib.py:"," and ";" autoquoting-upon-autocall
	now work again without considering the exclusion regexp -
	hence, things like ',foo my/path' turn to 'foo("my/path")'
	instead of syntax error.
	

2006-01-14  Ville Vainio  <vivainio@gmail.com>

	* IPython/ipapi.py (ashook, asmagic, options): Added convenience
	ipapi decorators for python 2.4 users, options() provides access to rc
	data.
	
	* IPython/Magic.py (magic_cd): %cd now accepts backslashes
	as path separators (even on Linux ;-). Space character after
	backslash (as yielded by tab completer) is still space;
	"%cd long\ name" works as expected.

	* IPython/ipapi.py,hooks.py,iplib.py: Hooks now implemented
	as "chain of command", with priority. API stays the same,
	TryNext exception raised by a hook function signals that
	current hook failed and next hook should try handling it, as
	suggested by Walter Dörwald <walter@livinglogic.de>. Walter also
	requested configurable display hook, which is now implemented.

2006-01-13  Ville Vainio  <vivainio@gmail.com>

	* IPython/platutils*.py: platform specific utility functions,
	so far only set_term_title is implemented (change terminal
	label in windowing systems). %cd now changes the title to
	current dir.

	* IPython/Release.py: Added myself to "authors" list,
	had to create new files.
	
	* IPython/iplib.py (handle_shell_escape): fixed logical flaw in
	shell escape; not a known bug but had potential to be one in the
	future.

	* IPython/ipapi.py (added),OInspect.py,iplib.py: "Public"
	extension API for IPython! See the module for usage example. Fix
	OInspect for docstring-less magic functions.
	

2006-01-13  Fernando Perez  <Fernando.Perez@colorado.edu>

	* IPython/iplib.py (raw_input): temporarily deactivate all
	attempts at allowing pasting of code with autoindent on.  It
	introduced bugs (reported by Prabhu) and I can't seem to find a
	robust combination which works in all cases.  Will have to revisit
	later.

	* IPython/genutils.py: remove isspace() function.  We've dropped
	2.2 compatibility, so it's OK to use the string method.

2006-01-12  Fernando Perez  <Fernando.Perez@colorado.edu>

	* IPython/iplib.py (InteractiveShell.__init__): fix regexp
	matching what NOT to autocall on, to include all python binary
	operators (including things like 'and', 'or', 'is' and 'in').
	Prompted by a bug report on 'foo & bar', but I realized we had
	many more potential bug cases with other operators.  The regexp is
	self.re_exclude_auto, it's fairly commented.

2006-01-12  Ville Vainio  <vivainio@gmail.com>

	* IPython/iplib.py (make_quoted_expr,handle_shell_escape):
	Prettified and hardened string/backslash quoting with ipsystem(),
	ipalias() and ipmagic(). Now even \ characters are passed to
	%magics, !shell escapes and aliases exactly as they are in the
	ipython command line. Should improve backslash experience,
	particularly in Windows (path delimiter for some commands that
	won't understand '/'), but Unix benefits as well (regexps). %cd
	magic still doesn't support backslash path delimiters, though. Also
	deleted all pretense of supporting multiline command strings in
	!system or %magic commands. Thanks to Jerry McRae for suggestions.
	
	* doc/build_doc_instructions.txt added. Documentation on how to
	use doc/update_manual.py, added yesterday. Both files contributed
	by Jörgen Stenarson <jorgen.stenarson-AT-bostream.nu>. This slates
	doc/*.sh for deprecation at a later date.
	
	* /ipython.py Added ipython.py to root directory for
	zero-installation (tar xzvf ipython.tgz; cd ipython; python
	ipython.py) and development convenience (no need to keep doing
	"setup.py install" between changes).
	
	* Made ! and !! shell escapes work (again) in multiline expressions:
	  if 1:
	      !ls
	      !!ls

2006-01-12  Fernando Perez  <Fernando.Perez@colorado.edu>

	* IPython/ipstruct.py (Struct): Rename IPython.Struct to
	IPython.ipstruct, to avoid local shadowing of the stdlib 'struct'
	module in case-insensitive installation.  Was causing crashes
	under win32.  Closes http://www.scipy.net/roundup/ipython/issue49.

	* IPython/Magic.py (magic_pycat): Fix pycat, patch by Marien Zwart
	<marienz-AT-gentoo.org>, closes
	http://www.scipy.net/roundup/ipython/issue51.

2006-01-11  Fernando Perez  <Fernando.Perez@colorado.edu>

	* IPython/Shell.py (IPShellGTK.on_timer): Finally fix the
	problem of excessive CPU usage under *nix and keyboard lag under
	win32.

2006-01-10  *** Released version 0.7.0

2006-01-10  Fernando Perez  <Fernando.Perez@colorado.edu>

	* IPython/Release.py (revision): tag version number to 0.7.0,
	ready for release.

	* IPython/Magic.py (magic_edit): Add print statement to %edit so
	it informs the user of the name of the temp. file used.  This can
	help if you decide later to reuse that same file, so you know
	where to copy the info from.

2006-01-09  Fernando Perez  <Fernando.Perez@colorado.edu>

	* setup_bdist_egg.py: little script to build an egg.  Added
	support in the release tools as well.

2006-01-08  Fernando Perez  <Fernando.Perez@colorado.edu>

	* IPython/Shell.py (IPShellWX.__init__): add support for WXPython
	version selection (new -wxversion command line and ipythonrc
	parameter).  Patch contributed by Arnd Baecker
	<arnd.baecker-AT-web.de>.

	* IPython/iplib.py (embed_mainloop): fix tab-completion in
	embedded instances, for variables defined at the interactive
	prompt of the embedded ipython.  Reported by Arnd.

	* IPython/Magic.py (magic_autocall): Fix %autocall magic.  Now
	it can be used as a (stateful) toggle, or with a direct parameter.

	* IPython/ultraTB.py (_fixed_getinnerframes): remove debug assert which
	could be triggered in certain cases and cause the traceback
	printer not to work.

2006-01-07  Fernando Perez  <Fernando.Perez@colorado.edu>

	* IPython/iplib.py (_should_recompile): Small fix, closes
	http://www.scipy.net/roundup/ipython/issue48.  Patch by Scott.

2006-01-04  Fernando Perez  <Fernando.Perez@colorado.edu>

	* IPython/Shell.py (IPShellGTK.mainloop): fix bug in the GTK
	backend for matplotlib (100% cpu utiliziation).  Thanks to Charlie
	Moad for help with tracking it down.

	* IPython/iplib.py (handle_auto): fix autocall handling for
	objects which support BOTH __getitem__ and __call__ (so that f [x]
	is left alone, instead of becoming f([x]) automatically).

	* IPython/Magic.py (magic_cd): fix crash when cd -b was used.
	Ville's patch.

2006-01-03  Fernando Perez  <Fernando.Perez@colorado.edu>

	* IPython/iplib.py (handle_auto): changed autocall semantics to
	include 'smart' mode, where the autocall transformation is NOT
	applied if there are no arguments on the line.  This allows you to
	just type 'foo' if foo is a callable to see its internal form,
	instead of having it called with no arguments (typically a
	mistake).  The old 'full' autocall still exists: for that, you
	need to set the 'autocall' parameter to 2 in your ipythonrc file.

	* IPython/completer.py (Completer.attr_matches): add
	tab-completion support for Enthoughts' traits.  After a report by
	Arnd and a patch by Prabhu.

2006-01-02  Fernando Perez  <Fernando.Perez@colorado.edu>

	* IPython/ultraTB.py (_fixed_getinnerframes): added Alex
	Schmolck's patch to fix inspect.getinnerframes().

	* IPython/iplib.py (InteractiveShell.__init__): significant fixes
	for embedded instances, regarding handling of namespaces and items
	added to the __builtin__ one.  Multiple embedded instances and
	recursive embeddings should work better now (though I'm not sure
	I've got all the corner cases fixed, that code is a bit of a brain
	twister).

	* IPython/Magic.py (magic_edit): added support to edit in-memory
	macros (automatically creates the necessary temp files).  %edit
	also doesn't return the file contents anymore, it's just noise.

	* IPython/completer.py (Completer.attr_matches): revert change to
	complete only on attributes listed in __all__.  I realized it
	cripples the tab-completion system as a tool for exploring the
	internals of unknown libraries (it renders any non-__all__
	attribute off-limits).  I got bit by this when trying to see
	something inside the dis module.

2005-12-31  Fernando Perez  <Fernando.Perez@colorado.edu>

	* IPython/iplib.py (InteractiveShell.__init__): add .meta
	namespace for users and extension writers to hold data in.  This
	follows the discussion in
	http://projects.scipy.org/ipython/ipython/wiki/RefactoringIPython.

	* IPython/completer.py (IPCompleter.complete): small patch to help
	tab-completion under Emacs, after a suggestion by John Barnard
	<barnarj-AT-ccf.org>.

	* IPython/Magic.py (Magic.extract_input_slices): added support for
	the slice notation in magics to use N-M to represent numbers N...M
	(closed endpoints).  This is used by %macro and %save.

	* IPython/completer.py (Completer.attr_matches): for modules which
	define __all__, complete only on those.  After a patch by Jeffrey
	Collins <jcollins_boulder-AT-earthlink.net>.  Also, clean up and
	speed up this routine.

	* IPython/Logger.py (Logger.log): fix a history handling bug.  I
	don't know if this is the end of it, but the behavior now is
	certainly much more correct.  Note that coupled with macros,
	slightly surprising (at first) behavior may occur: a macro will in
	general expand to multiple lines of input, so upon exiting, the
	in/out counters will both be bumped by the corresponding amount
	(as if the macro's contents had been typed interactively).  Typing
	%hist will reveal the intermediate (silently processed) lines.

	* IPython/Magic.py (magic_run): fix a subtle bug which could cause
	pickle to fail (%run was overwriting __main__ and not restoring
	it, but pickle relies on __main__ to operate).

	* IPython/iplib.py (InteractiveShell): fix pdb calling: I'm now
	using properties, but forgot to make the main InteractiveShell
	class a new-style class.  Properties fail silently, and
	mysteriously, with old-style class (getters work, but
	setters don't do anything).

2005-12-30  Fernando Perez  <Fernando.Perez@colorado.edu>

	* IPython/Magic.py (magic_history): fix history reporting bug (I
	know some nasties are still there, I just can't seem to find a
	reproducible test case to track them down; the input history is
	falling out of sync...)

	* IPython/iplib.py (handle_shell_escape): fix bug where both
	aliases and system accesses where broken for indented code (such
	as loops).

	* IPython/genutils.py (shell): fix small but critical bug for
	win32 system access.

2005-12-29  Fernando Perez  <Fernando.Perez@colorado.edu>

	* IPython/iplib.py (showtraceback): remove use of the
	sys.last_{type/value/traceback} structures, which are non
	thread-safe.
	(_prefilter): change control flow to ensure that we NEVER
	introspect objects when autocall is off.  This will guarantee that
	having an input line of the form 'x.y', where access to attribute
	'y' has side effects, doesn't trigger the side effect TWICE.  It
	is important to note that, with autocall on, these side effects
	can still happen.
	(ipsystem): new builtin, to complete the ip{magic/alias/system}
	trio.  IPython offers these three kinds of special calls which are
	not python code, and it's a good thing to have their call method
	be accessible as pure python functions (not just special syntax at
	the command line).  It gives us a better internal implementation
	structure, as well as exposing these for user scripting more
	cleanly.

	* IPython/macro.py (Macro.__init__): moved macros to a standalone
	file.  Now that they'll be more likely to be used with the
	persistance system (%store), I want to make sure their module path
	doesn't change in the future, so that we don't break things for
	users' persisted data.

	* IPython/iplib.py (autoindent_update): move indentation
	management into the _text_ processing loop, not the keyboard
	interactive one.  This is necessary to correctly process non-typed
	multiline input (such as macros).

	* IPython/Magic.py (Magic.format_latex): patch by Stefan van der
	Walt <stefan-AT-sun.ac.za> to fix latex formatting of docstrings,
	which was producing problems in the resulting manual.
	(magic_whos): improve reporting of instances (show their class,
	instead of simply printing 'instance' which isn't terribly
	informative).

	* IPython/genutils.py (shell): commit Jorgen Stenarson's patch
	(minor mods) to support network shares under win32.

	* IPython/winconsole.py (get_console_size): add new winconsole
	module and fixes to page_dumb() to improve its behavior under
	win32.  Contributed by Alexander Belchenko <bialix-AT-ukr.net>.

	* IPython/Magic.py (Macro): simplified Macro class to just
	subclass list.  We've had only 2.2 compatibility for a very long
	time, yet I was still avoiding subclassing the builtin types.  No
	more (I'm also starting to use properties, though I won't shift to
	2.3-specific features quite yet).
	(magic_store): added Ville's patch for lightweight variable
	persistence, after a request on the user list by Matt Wilkie
	<maphew-AT-gmail.com>.  The new %store magic's docstring has full
	details.

	* IPython/iplib.py (InteractiveShell.post_config_initialization):
	changed the default logfile name from 'ipython.log' to
	'ipython_log.py'.  These logs are real python files, and now that
	we have much better multiline support, people are more likely to
	want to use them as such.  Might as well name them correctly.

	* IPython/Magic.py: substantial cleanup.  While we can't stop
	using magics as mixins, due to the existing customizations 'out
	there' which rely on the mixin naming conventions, at least I
	cleaned out all cross-class name usage.  So once we are OK with
	breaking compatibility, the two systems can be separated.

	* IPython/Logger.py: major cleanup.  This one is NOT a mixin
	anymore, and the class is a fair bit less hideous as well.  New
	features were also introduced: timestamping of input, and logging
	of output results.  These are user-visible with the -t and -o
	options to %logstart.  Closes
	http://www.scipy.net/roundup/ipython/issue11 and a request by
	William Stein (SAGE developer - http://modular.ucsd.edu/sage).

2005-12-28  Fernando Perez  <Fernando.Perez@colorado.edu>

	* IPython/iplib.py (handle_shell_escape): add Ville's patch to
	better handle backslashes in paths.  See the thread 'More Windows
	questions part 2 - \/ characters revisited' on the iypthon user
	list:
	http://scipy.net/pipermail/ipython-user/2005-June/000907.html

	(InteractiveShell.__init__): fix tab-completion bug in threaded shells.

	(InteractiveShell.__init__): change threaded shells to not use the
	ipython crash handler.  This was causing more problems than not,
	as exceptions in the main thread (GUI code, typically) would
	always show up as a 'crash', when they really weren't.

	The colors and exception mode commands (%colors/%xmode) have been
	synchronized to also take this into account, so users can get
	verbose exceptions for their threaded code as well.  I also added
	support for activating pdb inside this exception handler as well,
	so now GUI authors can use IPython's enhanced pdb at runtime.

	* IPython/ipmaker.py (make_IPython): make the autoedit_syntax flag
	true by default, and add it to the shipped ipythonrc file.  Since
	this asks the user before proceeding, I think it's OK to make it
	true by default.

	* IPython/Magic.py (magic_exit): make new exit/quit magics instead
	of the previous special-casing of input in the eval loop.  I think
	this is cleaner, as they really are commands and shouldn't have
	a special role in the middle of the core code.

2005-12-27  Fernando Perez  <Fernando.Perez@colorado.edu>

	* IPython/iplib.py (edit_syntax_error): added support for
	automatically reopening the editor if the file had a syntax error
	in it.  Thanks to scottt who provided the patch at:
	http://www.scipy.net/roundup/ipython/issue36 (slightly modified
	version committed).

	* IPython/iplib.py (handle_normal): add suport for multi-line
	input with emtpy lines.  This fixes
	http://www.scipy.net/roundup/ipython/issue43 and a similar
	discussion on the user list.

	WARNING: a behavior change is necessarily introduced to support
	blank lines: now a single blank line with whitespace does NOT
	break the input loop, which means that when autoindent is on, by
	default hitting return on the next (indented) line does NOT exit.

	Instead, to exit a multiline input you can either have:

	  - TWO whitespace lines (just hit return again), or
	  - a single whitespace line of a different length than provided
	by the autoindent (add or remove a space).

	* IPython/completer.py (MagicCompleter.__init__): new 'completer'
	module to better organize all readline-related functionality.
	I've deleted FlexCompleter and put all completion clases here.

	* IPython/iplib.py (raw_input): improve indentation management.
	It is now possible to paste indented code with autoindent on, and
	the code is interpreted correctly (though it still looks bad on
	screen, due to the line-oriented nature of ipython).
	(MagicCompleter.complete): change behavior so that a TAB key on an
	otherwise empty line actually inserts a tab, instead of completing
	on the entire global namespace.  This makes it easier to use the
	TAB key for indentation.  After a request by Hans Meine
	<hans_meine-AT-gmx.net>
	(_prefilter): add support so that typing plain 'exit' or 'quit'
	does a sensible thing.  Originally I tried to deviate as little as
	possible from the default python behavior, but even that one may
	change in this direction (thread on python-dev to that effect).
	Regardless, ipython should do the right thing even if CPython's
	'>>>' prompt doesn't.
	(InteractiveShell): removed subclassing code.InteractiveConsole
	class.  By now we'd overridden just about all of its methods: I've
	copied the remaining two over, and now ipython is a standalone
	class.  This will provide a clearer picture for the chainsaw
	branch refactoring.

2005-12-26  Fernando Perez  <Fernando.Perez@colorado.edu>

	* IPython/ultraTB.py (VerboseTB.text): harden reporting against
	failures for objects which break when dir() is called on them.

	* IPython/FlexCompleter.py (Completer.__init__): Added support for
	distinct local and global namespaces in the completer API.  This
	change allows us to properly handle completion with distinct
	scopes, including in embedded instances (this had never really
	worked correctly).

	Note: this introduces a change in the constructor for
	MagicCompleter, as a new global_namespace parameter is now the
	second argument (the others were bumped one position).

2005-12-25  Fernando Perez  <Fernando.Perez@colorado.edu>

	* IPython/iplib.py (embed_mainloop): fix tab-completion in
	embedded instances (which can be done now thanks to Vivian's
	frame-handling fixes for pdb).
	(InteractiveShell.__init__): Fix namespace handling problem in
	embedded instances.  We were overwriting __main__ unconditionally,
	and this should only be done for 'full' (non-embedded) IPython;
	embedded instances must respect the caller's __main__.  Thanks to
	a bug report by Yaroslav Bulatov <yaroslavvb-AT-gmail.com>

2005-12-24  Fernando Perez  <Fernando.Perez@colorado.edu>

	* setup.py: added download_url to setup().  This registers the
	download address at PyPI, which is not only useful to humans
	browsing the site, but is also picked up by setuptools (the Eggs
	machinery).  Thanks to Ville and R. Kern for the info/discussion
	on this.

2005-12-23  Fernando Perez  <Fernando.Perez@colorado.edu>

	* IPython/Debugger.py (Pdb.__init__): Major pdb mode enhancements.
	This brings a lot of nice functionality to the pdb mode, which now
	has tab-completion, syntax highlighting, and better stack handling
	than before.  Many thanks to Vivian De Smedt
	<vivian-AT-vdesmedt.com> for the original patches.

2005-12-08  Fernando Perez  <Fernando.Perez@colorado.edu>

	* IPython/Shell.py (IPShellGTK.mainloop): fix mainloop() calling
	sequence to consistently accept the banner argument.  The
	inconsistency was tripping SAGE, thanks to Gary Zablackis
	<gzabl-AT-yahoo.com> for the report.

2005-11-15  Fernando Perez  <Fernando.Perez@colorado.edu>

	* IPython/iplib.py (InteractiveShell.post_config_initialization):
	Fix bug where a naked 'alias' call in the ipythonrc file would
	cause a crash.  Bug reported by Jorgen Stenarson.

2005-11-15  Fernando Perez  <Fernando.Perez@colorado.edu>

	* IPython/ipmaker.py (make_IPython): cleanups which should improve
	startup time.

	* IPython/iplib.py (runcode): my globals 'fix' for embedded
	instances had introduced a bug with globals in normal code.  Now
	it's working in all cases.

	* IPython/Magic.py (magic_psearch): Finish wildcard cleanup and
	API changes.  A new ipytonrc option, 'wildcards_case_sensitive'
	has been introduced to set the default case sensitivity of the
	searches.  Users can still select either mode at runtime on a
	per-search basis.

2005-11-13 Fernando Perez   <Fernando.Perez@colorado.edu>

	* IPython/wildcard.py (NameSpace.__init__): fix resolution of
	attributes in wildcard searches for subclasses.  Modified version
	of a patch by Jorgen.

2005-11-12 Fernando Perez   <Fernando.Perez@colorado.edu>

	* IPython/iplib.py (embed_mainloop): Fix handling of globals for
	embedded instances.  I added a user_global_ns attribute to the
	InteractiveShell class to handle this.

2005-10-31  Fernando Perez  <Fernando.Perez@colorado.edu>

	* IPython/Shell.py (IPShellGTK.mainloop): Change timeout_add to
	idle_add, which fixes horrible keyboard lag problems under gtk 2.6
	(reported under win32, but may happen also in other platforms).
	Bug report and fix courtesy of Sean Moore <smm-AT-logic.bm>

2005-10-15  Fernando Perez  <Fernando.Perez@colorado.edu>

	* IPython/Magic.py (magic_psearch): new support for wildcard
	patterns.  Now, typing ?a*b will list all names which begin with a
	and end in b, for example.  The %psearch magic has full
	docstrings.  Many thanks to Jörgen Stenarson
	<jorgen.stenarson-AT-bostream.nu>, author of the patches
	implementing this functionality.

2005-09-27  Fernando Perez  <Fernando.Perez@colorado.edu>

	* Manual: fixed long-standing annoyance of double-dashes (as in
	--prefix=~, for example) being stripped in the HTML version.  This
	is a latex2html bug, but a workaround was provided.  Many thanks
	to George K. Thiruvathukal <gthiruv-AT-luc.edu> for the detailed
	help, and Michael Tobis <mtobis-AT-gmail.com> for getting the ball
	rolling.  This seemingly small issue had tripped a number of users
	when first installing, so I'm glad to see it gone.
	
2005-09-27  Fernando Perez  <Fernando.Perez@colorado.edu>

	* IPython/Extensions/numeric_formats.py: fix missing import,
	reported by Stephen Walton.

2005-09-24  Fernando Perez  <Fernando.Perez@colorado.edu>

	* IPython/demo.py: finish demo module, fully documented now.

	* IPython/genutils.py (file_read): simple little utility to read a
	file and ensure it's closed afterwards.

2005-09-23  Fernando Perez  <Fernando.Perez@colorado.edu>

	* IPython/demo.py (Demo.__init__): added support for individually
	tagging blocks for automatic execution.

	* IPython/Magic.py (magic_pycat): new %pycat magic for showing
	syntax-highlighted python sources, requested by John.

2005-09-22  Fernando Perez  <Fernando.Perez@colorado.edu>

	* IPython/demo.py (Demo.again): fix bug where again() blocks after
	finishing.

	* IPython/genutils.py (shlex_split): moved from Magic to here,
	where all 2.2 compatibility stuff lives.  I needed it for demo.py.

	* IPython/demo.py (Demo.__init__): added support for silent
	blocks, improved marks as regexps, docstrings written.
	(Demo.__init__): better docstring, added support for sys.argv.

	* IPython/genutils.py (marquee): little utility used by the demo
	code, handy in general.

	* IPython/demo.py (Demo.__init__): new class for interactive
	demos.  Not documented yet, I just wrote it in a hurry for
	scipy'05.  Will docstring later.

2005-09-20  Fernando Perez  <Fernando.Perez@colorado.edu>

	* IPython/Shell.py (sigint_handler): Drastic simplification which
	also seems to make Ctrl-C work correctly across threads!  This is
	so simple, that I can't beleive I'd missed it before.  Needs more
	testing, though.
	(KBINT): Never mind, revert changes.  I'm sure I'd tried something
	like this before...

	* IPython/genutils.py (get_home_dir): add protection against
	non-dirs in win32 registry.

	* IPython/iplib.py (InteractiveShell.alias_table_validate): fix
	bug where dict was mutated while iterating (pysh crash).

2005-09-06  Fernando Perez  <Fernando.Perez@colorado.edu>

	* IPython/iplib.py (handle_auto): Fix inconsistency arising from
	spurious newlines added by this routine.  After a report by
	F. Mantegazza.

2005-09-05  Fernando Perez  <Fernando.Perez@colorado.edu>

	* IPython/Shell.py (hijack_gtk): remove pygtk.require("2.0")
	calls.  These were a leftover from the GTK 1.x days, and can cause
	problems in certain cases (after a report by John Hunter).

	* IPython/iplib.py (InteractiveShell.__init__): Trap exception if
	os.getcwd() fails at init time.  Thanks to patch from David Remahl
	<chmod007-AT-mac.com>.
	(InteractiveShell.__init__): prevent certain special magics from
	being shadowed by aliases.  Closes
	http://www.scipy.net/roundup/ipython/issue41.

2005-08-31  Fernando Perez  <Fernando.Perez@colorado.edu>

	* IPython/iplib.py (InteractiveShell.complete): Added new
	top-level completion method to expose the completion mechanism
	beyond readline-based environments.

2005-08-19  Fernando Perez  <Fernando.Perez@colorado.edu>

	* tools/ipsvnc (svnversion): fix svnversion capture.

	* IPython/iplib.py (InteractiveShell.__init__): Add has_readline
	attribute to self, which was missing.  Before, it was set by a
	routine which in certain cases wasn't being called, so the
	instance could end up missing the attribute.  This caused a crash.
	Closes http://www.scipy.net/roundup/ipython/issue40.

2005-08-16  Fernando Perez  <fperez@colorado.edu>

	* IPython/ultraTB.py (VerboseTB.text): don't crash if object
	contains non-string attribute.  Closes
	http://www.scipy.net/roundup/ipython/issue38.

2005-08-14  Fernando Perez  <fperez@colorado.edu>

	* tools/ipsvnc: Minor improvements, to add changeset info.

2005-08-12  Fernando Perez  <fperez@colorado.edu>

	* IPython/iplib.py (runsource): remove self.code_to_run_src
	attribute.  I realized this is nothing more than
	'\n'.join(self.buffer), and having the same data in two different
	places is just asking for synchronization bugs.  This may impact
	people who have custom exception handlers, so I need to warn
	ipython-dev about it (F. Mantegazza may use them).

2005-07-29  Fernando Perez  <Fernando.Perez@colorado.edu>

	* IPython/genutils.py: fix 2.2 compatibility (generators)

2005-07-18  Fernando Perez  <fperez@colorado.edu>

	* IPython/genutils.py (get_home_dir): fix to help users with
	invalid $HOME under win32.

2005-07-17  Fernando Perez  <fperez@colorado.edu>

	* IPython/Prompts.py (str_safe): Make unicode-safe.  Also remove
	some old hacks and clean up a bit other routines; code should be
	simpler and a bit faster.

	* IPython/iplib.py (interact): removed some last-resort attempts
	to survive broken stdout/stderr.  That code was only making it
	harder to abstract out the i/o (necessary for gui integration),
	and the crashes it could prevent were extremely rare in practice
	(besides being fully user-induced in a pretty violent manner).

	* IPython/genutils.py (IOStream.__init__): Simplify the i/o stuff.
	Nothing major yet, but the code is simpler to read; this should
	make it easier to do more serious modifications in the future.

	* IPython/Extensions/InterpreterExec.py: Fix auto-quoting in pysh,
	which broke in .15 (thanks to a report by Ville).

	* IPython/Itpl.py (Itpl.__init__): add unicode support (it may not
	be quite correct, I know next to nothing about unicode).  This
	will allow unicode strings to be used in prompts, amongst other
	cases.  It also will prevent ipython from crashing when unicode
	shows up unexpectedly in many places.  If ascii encoding fails, we
	assume utf_8.  Currently the encoding is not a user-visible
	setting, though it could be made so if there is demand for it.

	* IPython/ipmaker.py (make_IPython): remove old 2.1-specific hack.

	* IPython/Struct.py (Struct.merge): switch keys() to iterator.

	* IPython/background_jobs.py: moved 2.2 compatibility to genutils.

	* IPython/genutils.py: Add 2.2 compatibility here, so all other
	code can work transparently for 2.2/2.3.

2005-07-16  Fernando Perez  <fperez@colorado.edu>

	* IPython/ultraTB.py (ExceptionColors): Make a global variable
	out of the color scheme table used for coloring exception
	tracebacks.  This allows user code to add new schemes at runtime.
	This is a minimally modified version of the patch at
	http://www.scipy.net/roundup/ipython/issue35, many thanks to pabw
	for the contribution.

	* IPython/FlexCompleter.py (Completer.attr_matches): Add a
	slightly modified version of the patch in
	http://www.scipy.net/roundup/ipython/issue34, which also allows me
	to remove the previous try/except solution (which was costlier).
	Thanks to Gaetan Lehmann <gaetan.lehmann-AT-jouy.inra.fr> for the fix.

2005-06-08  Fernando Perez  <fperez@colorado.edu>

	* IPython/iplib.py (write/write_err): Add methods to abstract all
	I/O a bit more.

	* IPython/Shell.py (IPShellGTK.mainloop): Fix GTK deprecation
	warning, reported by Aric Hagberg, fix by JD Hunter.

2005-06-02  *** Released version 0.6.15

2005-06-01  Fernando Perez  <fperez@colorado.edu>

	* IPython/iplib.py (MagicCompleter.file_matches): Fix
	tab-completion of filenames within open-quoted strings.  Note that
	this requires that in ~/.ipython/ipythonrc, users change the
	readline delimiters configuration to read:

	readline_remove_delims -/~
	

2005-05-31  *** Released version 0.6.14

2005-05-29  Fernando Perez  <fperez@colorado.edu>

	* IPython/ultraTB.py (VerboseTB.text): Fix crash for tracebacks
	with files not on the filesystem.  Reported by Eliyahu Sandler
	<eli@gondolin.net>

2005-05-22  Fernando Perez  <fperez@colorado.edu>

	* IPython/iplib.py: Fix a few crashes in the --upgrade option.
	After an initial report by LUK ShunTim <shuntim.luk@polyu.edu.hk>.

2005-05-19  Fernando Perez  <fperez@colorado.edu>

	* IPython/iplib.py (safe_execfile): close a file which could be
	left open (causing problems in win32, which locks open files).
	Thanks to a bug report by D Brown <dbrown2@yahoo.com>.

2005-05-18  Fernando Perez  <fperez@colorado.edu>

	* IPython/Shell.py (MatplotlibShellBase.mplot_exec): pass all
	keyword arguments correctly to safe_execfile().

2005-05-13  Fernando Perez  <fperez@colorado.edu>

	* ipython.1: Added info about Qt to manpage, and threads warning
	to usage page (invoked with --help).

	* IPython/iplib.py (MagicCompleter.python_func_kw_matches): Added
	new matcher (it goes at the end of the priority list) to do
	tab-completion on named function arguments.  Submitted by George
	Sakkis <gsakkis-AT-eden.rutgers.edu>.  See the thread at
	http://www.scipy.net/pipermail/ipython-dev/2005-April/000436.html
	for more details.

	* IPython/Magic.py (magic_run): Added new -e flag to ignore
	SystemExit exceptions in the script being run.  Thanks to a report
	by danny shevitz <danny_shevitz-AT-yahoo.com>, about this
	producing very annoying behavior when running unit tests.

2005-05-12  Fernando Perez  <fperez@colorado.edu>

	* IPython/iplib.py (handle_auto): fixed auto-quoting and parens,
	which I'd broken (again) due to a changed regexp.  In the process,
	added ';' as an escape to auto-quote the whole line without
	splitting its arguments.  Thanks to a report by Jerry McRae
	<qrs0xyc02-AT-sneakemail.com>.

	* IPython/ultraTB.py (VerboseTB.text): protect against rare but
	possible crashes caused by a TokenError.  Reported by Ed Schofield
	<schofield-AT-ftw.at>.
	
2005-05-06  Fernando Perez  <fperez@colorado.edu>

	* IPython/Shell.py (hijack_wx): Fix to work with WX v.2.6.

2005-04-29  Fernando Perez  <fperez@colorado.edu>

	* IPython/Shell.py (IPShellQt): Thanks to Denis Rivière
	<nudz-AT-free.fr>, Yann Cointepas <yann-AT-sapetnioc.org> and Benjamin
	Thyreau <Benji2-AT-decideur.info>, we now have a -qthread option
	which provides support for Qt interactive usage (similar to the
	existing one for WX and GTK).  This had been often requested.

2005-04-14  *** Released version 0.6.13

2005-04-08  Fernando Perez  <fperez@colorado.edu>

	* IPython/Magic.py (Magic._ofind): remove docstring evaluation
	from _ofind, which gets called on almost every input line.  Now,
	we only try to get docstrings if they are actually going to be
	used (the overhead of fetching unnecessary docstrings can be
	noticeable for certain objects, such as Pyro proxies).

	* IPython/iplib.py (MagicCompleter.python_matches): Change the API
	for completers.  For some reason I had been passing them the state
	variable, which completers never actually need, and was in
	conflict with the rlcompleter API.  Custom completers ONLY need to
	take the text parameter.

	* IPython/Extensions/InterpreterExec.py: Fix regexp so that magics
	work correctly in pysh.  I've also moved all the logic which used
	to be in pysh.py here, which will prevent problems with future
	upgrades.  However, this time I must warn users to update their
	pysh profile to include the line

	import_all IPython.Extensions.InterpreterExec

	because otherwise things won't work for them.  They MUST also
	delete pysh.py and the line

	execfile pysh.py

	from their ipythonrc-pysh.

	* IPython/FlexCompleter.py (Completer.attr_matches): Make more
	robust in the face of objects whose dir() returns non-strings
	(which it shouldn't, but some broken libs like ITK do).  Thanks to
	a patch by John Hunter (implemented differently, though).  Also
	minor improvements by using .extend instead of + on lists.

	* pysh.py: 

2005-04-06  Fernando Perez  <fperez@colorado.edu>

	* IPython/ipmaker.py (make_IPython): Make multi_line_specials on
	by default, so that all users benefit from it.  Those who don't
	want it can still turn it off.

	* IPython/UserConfig/ipythonrc: Add multi_line_specials to the
	config file, I'd forgotten about this, so users were getting it
	off by default.

	* IPython/iplib.py (ipmagic): big overhaul of the magic system for
	consistency.  Now magics can be called in multiline statements,
	and python variables can be expanded in magic calls via $var.
	This makes the magic system behave just like aliases or !system
	calls.

2005-03-28  Fernando Perez  <fperez@colorado.edu>

	* IPython/iplib.py (handle_auto): cleanup to use %s instead of
	expensive string additions for building command.  Add support for
	trailing ';' when autocall is used.

2005-03-26  Fernando Perez  <fperez@colorado.edu>

	* ipython.el: Fix http://www.scipy.net/roundup/ipython/issue31.
	Bugfix by A. Schmolck, the ipython.el maintainer.  Also make
	ipython.el robust against prompts with any number of spaces
	(including 0) after the ':' character.

	* IPython/Prompts.py (Prompt2.set_p_str): Fix spurious space in
	continuation prompt, which misled users to think the line was
	already indented.  Closes debian Bug#300847, reported to me by
	Norbert Tretkowski <tretkowski-AT-inittab.de>.

2005-03-23  Fernando Perez  <fperez@colorado.edu>

	* IPython/Prompts.py (Prompt1.__str__): Make sure that prompts are
	properly aligned if they have embedded newlines.

	* IPython/iplib.py (runlines): Add a public method to expose
	IPython's code execution machinery, so that users can run strings
	as if they had been typed at the prompt interactively.
	(InteractiveShell.__init__): Added getoutput() to the __IPYTHON__
	methods which can call the system shell, but with python variable
	expansion.  The three such methods are: __IPYTHON__.system,
	.getoutput and .getoutputerror.  These need to be documented in a
	'public API' section (to be written) of the manual.

2005-03-20  Fernando Perez  <fperez@colorado.edu>

	* IPython/iplib.py (InteractiveShell.set_custom_exc): new system
	for custom exception handling.  This is quite powerful, and it
	allows for user-installable exception handlers which can trap
	custom exceptions at runtime and treat them separately from
	IPython's default mechanisms.  At the request of Frédéric
	Mantegazza <mantegazza-AT-ill.fr>.
	(InteractiveShell.set_custom_completer): public API function to
	add new completers at runtime.

2005-03-19  Fernando Perez  <fperez@colorado.edu>

	* IPython/OInspect.py (getdoc): Add a call to obj.getdoc(), to
	allow objects which provide their docstrings via non-standard
	mechanisms (like Pyro proxies) to still be inspected by ipython's
	? system.

	* IPython/iplib.py (InteractiveShell.__init__): back off the _o/_e
	automatic capture system.  I tried quite hard to make it work
	reliably, and simply failed.  I tried many combinations with the
	subprocess module, but eventually nothing worked in all needed
	cases (not blocking stdin for the child, duplicating stdout
	without blocking, etc).  The new %sc/%sx still do capture to these
	magical list/string objects which make shell use much more
	conveninent, so not all is lost.

	XXX - FIX MANUAL for the change above!

	(runsource): I copied code.py's runsource() into ipython to modify
	it a bit.  Now the code object and source to be executed are
	stored in ipython.  This makes this info accessible to third-party
	tools, like custom exception handlers.  After a request by Frédéric
	Mantegazza <mantegazza-AT-ill.fr>.

	* IPython/UserConfig/ipythonrc: Add up/down arrow keys to
	history-search via readline (like C-p/C-n).  I'd wanted this for a
	long time, but only recently found out how to do it.  For users
	who already have their ipythonrc files made and want this, just
	add:

	readline_parse_and_bind "\e[A": history-search-backward
	readline_parse_and_bind "\e[B": history-search-forward

2005-03-18  Fernando Perez  <fperez@colorado.edu>

	* IPython/Magic.py (magic_sc): %sc and %sx now use the fancy
	LSString and SList classes which allow transparent conversions
	between list mode and whitespace-separated string.
	(magic_r): Fix recursion problem in %r.

	* IPython/genutils.py (LSString): New class to be used for
	automatic storage of the results of all alias/system calls in _o
	and _e (stdout/err).  These provide a .l/.list attribute which
	does automatic splitting on newlines.  This means that for most
	uses, you'll never need to do capturing of output with %sc/%sx
	anymore, since ipython keeps this always done for you.  Note that
	only the LAST results are stored, the _o/e variables are
	overwritten on each call.  If you need to save their contents
	further, simply bind them to any other name.

2005-03-17  Fernando Perez  <fperez@colorado.edu>

	* IPython/Prompts.py (BasePrompt.cwd_filt): a few more fixes for
	prompt namespace handling.

2005-03-16  Fernando Perez  <fperez@colorado.edu>

	* IPython/Prompts.py (CachedOutput.__init__): Fix default and
	classic prompts to be '>>> ' (final space was missing, and it
	trips the emacs python mode).
	(BasePrompt.__str__): Added safe support for dynamic prompt
	strings.  Now you can set your prompt string to be '$x', and the
	value of x will be printed from your interactive namespace.  The
	interpolation syntax includes the full Itpl support, so
	${foo()+x+bar()} is a valid prompt string now, and the function
	calls will be made at runtime.

2005-03-15  Fernando Perez  <fperez@colorado.edu>

	* IPython/Magic.py (magic_history): renamed %hist to %history, to
	avoid name clashes in pylab.  %hist still works, it just forwards
	the call to %history.

2005-03-02  *** Released version 0.6.12

2005-03-02  Fernando Perez  <fperez@colorado.edu>

	* IPython/iplib.py (handle_magic): log magic calls properly as
	ipmagic() function calls.

	* IPython/Magic.py (magic_time): Improved %time to support
	statements and provide wall-clock as well as CPU time.

2005-02-27  Fernando Perez  <fperez@colorado.edu>

	* IPython/hooks.py: New hooks module, to expose user-modifiable
	IPython functionality in a clean manner.  For now only the editor
	hook is actually written, and other thigns which I intend to turn
	into proper hooks aren't yet there.  The display and prefilter
	stuff, for example, should be hooks.  But at least now the
	framework is in place, and the rest can be moved here with more
	time later.  IPython had had a .hooks variable for a long time for
	this purpose, but I'd never actually used it for anything.

2005-02-26  Fernando Perez  <fperez@colorado.edu>

	* IPython/ipmaker.py (make_IPython): make the default ipython
	directory be called _ipython under win32, to follow more the
	naming peculiarities of that platform (where buggy software like
	Visual Sourcesafe breaks with .named directories).  Reported by
	Ville Vainio.

2005-02-23  Fernando Perez  <fperez@colorado.edu>

	* IPython/iplib.py (InteractiveShell.__init__): removed a few
	auto_aliases for win32 which were causing problems.  Users can
	define the ones they personally like.

2005-02-21  Fernando Perez  <fperez@colorado.edu>

	* IPython/Magic.py (magic_time): new magic to time execution of
	expressions.  After a request by Charles Moad <cmoad-AT-indiana.edu>.

2005-02-19  Fernando Perez  <fperez@colorado.edu>

	* IPython/ConfigLoader.py (ConfigLoader.load): Allow empty strings
	into keys (for prompts, for example).

	* IPython/Prompts.py (BasePrompt.set_p_str): Fix to allow empty
	prompts in case users want them.  This introduces a small behavior
	change: ipython does not automatically add a space to all prompts
	anymore.  To get the old prompts with a space, users should add it
	manually to their ipythonrc file, so for example prompt_in1 should
	now read 'In [\#]: ' instead of 'In [\#]:'.
	(BasePrompt.__init__): New option prompts_pad_left (only in rc
	file) to control left-padding of secondary prompts.

	* IPython/Magic.py (Magic.profile_missing_notice): Don't crash if
	the profiler can't be imported.  Fix for Debian, which removed
	profile.py because of License issues.  I applied a slightly
	modified version of the original Debian patch at
	http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=294500.

2005-02-17  Fernando Perez  <fperez@colorado.edu>

	* IPython/genutils.py (native_line_ends): Fix bug which would
	cause improper line-ends under win32 b/c I was not opening files
	in binary mode.  Bug report and fix thanks to Ville.

	* IPython/iplib.py (handle_auto): Fix bug which I introduced when
	trying to catch spurious foo[1] autocalls.  My fix actually broke
	',/' autoquote/call with explicit escape (bad regexp).

2005-02-15  *** Released version 0.6.11

2005-02-14  Fernando Perez  <fperez@colorado.edu>

	* IPython/background_jobs.py: New background job management
	subsystem.  This is implemented via a new set of classes, and
	IPython now provides a builtin 'jobs' object for background job
	execution.  A convenience %bg magic serves as a lightweight
	frontend for starting the more common type of calls.  This was
	inspired by discussions with B. Granger and the BackgroundCommand
	class described in the book Python Scripting for Computational
	Science, by H. P. Langtangen: http://folk.uio.no/hpl/scripting
	(although ultimately no code from this text was used, as IPython's
	system is a separate implementation).

	* IPython/iplib.py (MagicCompleter.python_matches): add new option
	to control the completion of single/double underscore names
	separately.  As documented in the example ipytonrc file, the
	readline_omit__names variable can now be set to 2, to omit even
	single underscore names.  Thanks to a patch by Brian Wong
	<BrianWong-AT-AirgoNetworks.Com>.
	(InteractiveShell.__init__): Fix bug which would cause foo[1] to
	be autocalled as foo([1]) if foo were callable.  A problem for
	things which are both callable and implement __getitem__.
	(init_readline): Fix autoindentation for win32.  Thanks to a patch
	by Vivian De Smedt <vivian-AT-vdesmedt.com>.

2005-02-12  Fernando Perez  <fperez@colorado.edu>

	* IPython/ipmaker.py (make_IPython): Disabled the stout traps
	which I had written long ago to sort out user error messages which
	may occur during startup.  This seemed like a good idea initially,
	but it has proven a disaster in retrospect.  I don't want to
	change much code for now, so my fix is to set the internal 'debug'
	flag to true everywhere, whose only job was precisely to control
	this subsystem.  This closes issue 28 (as well as avoiding all
	sorts of strange hangups which occur from time to time).

2005-02-07  Fernando Perez  <fperez@colorado.edu>

	* IPython/Magic.py (magic_edit): Fix 'ed -p' not working when the
	previous call produced a syntax error.

	* IPython/OInspect.py (Inspector.pinfo): Fix crash when inspecting
	classes without constructor.

2005-02-06  Fernando Perez  <fperez@colorado.edu>

	* IPython/iplib.py (MagicCompleter.complete): Extend the list of
	completions with the results of each matcher, so we return results
	to the user from all namespaces.  This breaks with ipython
	tradition, but I think it's a nicer behavior.  Now you get all
	possible completions listed, from all possible namespaces (python,
	filesystem, magics...)  After a request by John Hunter
	<jdhunter-AT-nitace.bsd.uchicago.edu>.

2005-02-05  Fernando Perez  <fperez@colorado.edu>

	* IPython/Magic.py (magic_prun): Fix bug where prun would fail if
	the call had quote characters in it (the quotes were stripped).

2005-01-31  Fernando Perez  <fperez@colorado.edu>

	* IPython/iplib.py (InteractiveShell.__init__): reduce reliance on
	Itpl.itpl() to make the code more robust against psyco
	optimizations.

	* IPython/Itpl.py (Itpl.__str__): Use a _getframe() call instead
	of causing an exception.  Quicker, cleaner.

2005-01-28  Fernando Perez  <fperez@colorado.edu>

	* scripts/ipython_win_post_install.py (install): hardcode
	sys.prefix+'python.exe' as the executable path.  It turns out that
	during the post-installation run, sys.executable resolves to the
	name of the binary installer!  I should report this as a distutils
	bug, I think.  I updated the .10 release with this tiny fix, to
	avoid annoying the lists further.

2005-01-27  *** Released version 0.6.10

2005-01-27  Fernando Perez  <fperez@colorado.edu>

	* IPython/numutils.py (norm): Added 'inf' as optional name for
	L-infinity norm, included references to mathworld.com for vector
	norm definitions.
	(amin/amax): added amin/amax for array min/max.  Similar to what
	pylab ships with after the recent reorganization of names.
	(spike/spike_odd): removed deprecated spike/spike_odd functions.

	* ipython.el: committed Alex's recent fixes and improvements.
	Tested with python-mode from CVS, and it looks excellent.  Since
	python-mode hasn't released anything in a while, I'm temporarily
	putting a copy of today's CVS (v 4.70) of python-mode in:
	  http://ipython.scipy.org/tmp/python-mode.el

	* scripts/ipython_win_post_install.py (install): Win32 fix to use
	sys.executable for the executable name, instead of assuming it's
	called 'python.exe' (the post-installer would have produced broken
	setups on systems with a differently named python binary).

	* IPython/PyColorize.py (Parser.__call__): change explicit '\n'
	references to os.linesep, to make the code more
	platform-independent.  This is also part of the win32 coloring
	fixes.

	* IPython/genutils.py (page_dumb): Remove attempts to chop long
	lines, which actually cause coloring bugs because the length of
	the line is very difficult to correctly compute with embedded
	escapes.  This was the source of all the coloring problems under
	Win32.  I think that _finally_, Win32 users have a properly
	working ipython in all respects.  This would never have happened
	if not for Gary Bishop and Viktor Ransmayr's great help and work.

2005-01-26  *** Released version 0.6.9

2005-01-25  Fernando Perez  <fperez@colorado.edu>

	* setup.py: finally, we have a true Windows installer, thanks to
	the excellent work of Viktor Ransmayr
	<viktor.ransmayr-AT-t-online.de>.  The docs have been updated for
	Windows users.  The setup routine is quite a bit cleaner thanks to
	this, and the post-install script uses the proper functions to
	allow a clean de-installation using the standard Windows Control
	Panel.
	
	* IPython/genutils.py (get_home_dir): changed to use the $HOME
	environment variable under all OSes (including win32) if
	available.  This will give consistency to win32 users who have set
	this variable for any reason.  If os.environ['HOME'] fails, the
	previous policy of using HOMEDRIVE\HOMEPATH kicks in.

2005-01-24  Fernando Perez  <fperez@colorado.edu>

	* IPython/numutils.py (empty_like): add empty_like(), similar to
	zeros_like() but taking advantage of the new empty() Numeric routine.

2005-01-23  *** Released version 0.6.8

2005-01-22  Fernando Perez  <fperez@colorado.edu>

	* IPython/Shell.py (MatplotlibShellBase.mplot_exec): I removed the
	automatic show() calls.  After discussing things with JDH, it
	turns out there are too many corner cases where this can go wrong.
	It's best not to try to be 'too smart', and simply have ipython
	reproduce as much as possible the default behavior of a normal
	python shell.

	* IPython/iplib.py (InteractiveShell.__init__): Modified the
	line-splitting regexp and _prefilter() to avoid calling getattr()
	on assignments.  This closes
	http://www.scipy.net/roundup/ipython/issue24.  Note that Python's
	readline uses getattr(), so a simple <TAB> keypress is still
	enough to trigger getattr() calls on an object.

2005-01-21  Fernando Perez  <fperez@colorado.edu>

	* IPython/Shell.py (MatplotlibShellBase.magic_run): Fix the %run
	docstring under pylab so it doesn't mask the original.

2005-01-21  *** Released version 0.6.7

2005-01-21  Fernando Perez  <fperez@colorado.edu>

	* IPython/Shell.py (MTInteractiveShell.runcode): Trap a crash with
	signal handling for win32 users in multithreaded mode.

2005-01-17  Fernando Perez  <fperez@colorado.edu>

	* IPython/OInspect.py (Inspector.pinfo): Fix crash when inspecting
	instances with no __init__.  After a crash report by Norbert Nemec
	<Norbert-AT-nemec-online.de>.

2005-01-14  Fernando Perez  <fperez@colorado.edu>

	* IPython/ultraTB.py (VerboseTB.text): Fix bug in reporting of
	names for verbose exceptions, when multiple dotted names and the
	'parent' object were present on the same line.

2005-01-11  Fernando Perez  <fperez@colorado.edu>

	* IPython/genutils.py (flag_calls): new utility to trap and flag
	calls in functions.  I need it to clean up matplotlib support.
	Also removed some deprecated code in genutils.

	* IPython/Shell.py (MatplotlibShellBase.mplot_exec): small fix so
	that matplotlib scripts called with %run, which don't call show()
	themselves, still have their plotting windows open.

2005-01-05  Fernando Perez  <fperez@colorado.edu>

	* IPython/Shell.py (IPShellGTK.__init__): Patch by Andrew Straw
	<astraw-AT-caltech.edu>, to fix gtk deprecation warnings.

2004-12-19  Fernando Perez  <fperez@colorado.edu>

	* IPython/Shell.py (MTInteractiveShell.runcode): Get rid of
	parent_runcode, which was an eyesore.  The same result can be
	obtained with Python's regular superclass mechanisms.

2004-12-17  Fernando Perez  <fperez@colorado.edu>

	* IPython/Magic.py (Magic.magic_sc): Fix quote stripping problem
	reported by Prabhu.
	(Magic.magic_sx): direct all errors to Term.cerr (defaults to
	sys.stderr) instead of explicitly calling sys.stderr.  This helps
	maintain our I/O abstractions clean, for future GUI embeddings.

	* IPython/genutils.py (info): added new utility for sys.stderr
	unified info message handling (thin wrapper around warn()).

	* IPython/ultraTB.py (VerboseTB.text): Fix misreported global
	composite (dotted) names on verbose exceptions.
	(VerboseTB.nullrepr): harden against another kind of errors which
	Python's inspect module can trigger, and which were crashing
	IPython.  Thanks to a report by Marco Lombardi
	<mlombard-AT-ma010192.hq.eso.org>.

2004-12-13  *** Released version 0.6.6

2004-12-12  Fernando Perez  <fperez@colorado.edu>

	* IPython/Shell.py (IPShellGTK.mainloop): catch RuntimeErrors
	generated by pygtk upon initialization if it was built without
	threads (for matplotlib users).  After a crash reported by
	Leguijt, Jaap J SIEP-EPT-RES <Jaap.Leguijt-AT-shell.com>.

	* IPython/ipmaker.py (make_IPython): fix small bug in the
	import_some parameter for multiple imports.

	* IPython/iplib.py (ipmagic): simplified the interface of
	ipmagic() to take a single string argument, just as it would be
	typed at the IPython cmd line.
	(ipalias): Added new ipalias() with an interface identical to
	ipmagic().  This completes exposing a pure python interface to the
	alias and magic system, which can be used in loops or more complex
	code where IPython's automatic line mangling is not active.

	* IPython/genutils.py (timing): changed interface of timing to
	simply run code once, which is the most common case.  timings()
	remains unchanged, for the cases where you want multiple runs.

	* IPython/Shell.py (MatplotlibShellBase._matplotlib_config): Fix a
	bug where Python2.2 crashes with exec'ing code which does not end
	in a single newline.  Python 2.3 is OK, so I hadn't noticed this
	before.

2004-12-10  Fernando Perez  <fperez@colorado.edu>

	* IPython/Magic.py (Magic.magic_prun): changed name of option from
	-t to -T, to accomodate the new -t flag in %run (the %run and
	%prun options are kind of intermixed, and it's not easy to change
	this with the limitations of python's getopt).

	* IPython/Magic.py (Magic.magic_run): Added new -t option to time
	the execution of scripts.  It's not as fine-tuned as timeit.py,
	but it works from inside ipython (and under 2.2, which lacks
	timeit.py).  Optionally a number of runs > 1 can be given for
	timing very short-running code.

	* IPython/genutils.py (uniq_stable): new routine which returns a
	list of unique elements in any iterable, but in stable order of
	appearance.  I needed this for the ultraTB fixes, and it's a handy
	utility.

	* IPython/ultraTB.py (VerboseTB.text): Fix proper reporting of
	dotted names in Verbose exceptions.  This had been broken since
	the very start, now x.y will properly be printed in a Verbose
	traceback, instead of x being shown and y appearing always as an
	'undefined global'.  Getting this to work was a bit tricky,
	because by default python tokenizers are stateless.  Saved by
	python's ability to easily add a bit of state to an arbitrary
	function (without needing to build a full-blown callable object).

	Also big cleanup of this code, which had horrendous runtime
	lookups of zillions of attributes for colorization.  Moved all
	this code into a few templates, which make it cleaner and quicker.

	Printout quality was also improved for Verbose exceptions: one
	variable per line, and memory addresses are printed (this can be
	quite handy in nasty debugging situations, which is what Verbose
	is for).

	* IPython/ipmaker.py (make_IPython): Do NOT execute files named in
	the command line as scripts to be loaded by embedded instances.
	Doing so has the potential for an infinite recursion if there are
	exceptions thrown in the process.  This fixes a strange crash
	reported by Philippe MULLER <muller-AT-irit.fr>.

2004-12-09  Fernando Perez  <fperez@colorado.edu>

	* IPython/Shell.py (MatplotlibShellBase.use): Change pylab support
	to reflect new names in matplotlib, which now expose the
	matlab-compatible interface via a pylab module instead of the
	'matlab' name.  The new code is backwards compatible, so users of
	all matplotlib versions are OK.  Patch by J. Hunter.

	* IPython/OInspect.py (Inspector.pinfo): Add to object? printing
	of __init__ docstrings for instances (class docstrings are already
	automatically printed).  Instances with customized docstrings
	(indep. of the class) are also recognized and all 3 separate
	docstrings are printed (instance, class, constructor).  After some
	comments/suggestions by J. Hunter.

2004-12-05  Fernando Perez  <fperez@colorado.edu>

	* IPython/iplib.py (MagicCompleter.complete): Remove annoying
	warnings when tab-completion fails and triggers an exception.

2004-12-03  Fernando Perez  <fperez@colorado.edu>

	* IPython/Magic.py (magic_prun): Fix bug where an exception would
	be triggered when using 'run -p'.  An incorrect option flag was
	being set ('d' instead of 'D').
	(manpage): fix missing escaped \- sign.

2004-11-30  *** Released version 0.6.5

2004-11-30  Fernando Perez  <fperez@colorado.edu>

	* IPython/Magic.py (Magic.magic_run): Fix bug in breakpoint
	setting with -d option.

	* setup.py (docfiles): Fix problem where the doc glob I was using
	was COMPLETELY BROKEN.  It was giving the right files by pure
	accident, but failed once I tried to include ipython.el.  Note:
	glob() does NOT allow you to do exclusion on multiple endings!

2004-11-29  Fernando Perez  <fperez@colorado.edu>

	* IPython/usage.py (__doc__): cleaned up usage docstring, by using
	the manpage as the source.  Better formatting & consistency.

	* IPython/Magic.py (magic_run): Added new -d option, to run
	scripts under the control of the python pdb debugger.  Note that
	this required changing the %prun option -d to -D, to avoid a clash
	(since %run must pass options to %prun, and getopt is too dumb to
	handle options with string values with embedded spaces).  Thanks
	to a suggestion by Matthew Arnison <maffew-AT-cat.org.au>.
	(magic_who_ls): added type matching to %who and %whos, so that one
	can filter their output to only include variables of certain
	types.  Another suggestion by Matthew.
	(magic_whos): Added memory summaries in kb and Mb for arrays.
	(magic_who): Improve formatting (break lines every 9 vars).

2004-11-28  Fernando Perez  <fperez@colorado.edu>

	* IPython/Logger.py (Logger.log): Fix bug in syncing the input
	cache when empty lines were present.

2004-11-24  Fernando Perez  <fperez@colorado.edu>

	* IPython/usage.py (__doc__): document the re-activated threading
	options for WX and GTK.

2004-11-23  Fernando Perez  <fperez@colorado.edu>

	* IPython/Shell.py (start): Added Prabhu's big patch to reactivate
	the -wthread and -gthread options, along with a new -tk one to try
	and coordinate Tk threading with wx/gtk.  The tk support is very
	platform dependent, since it seems to require Tcl and Tk to be
	built with threads (Fedora1/2 appears NOT to have it, but in
	Prabhu's Debian boxes it works OK).  But even with some Tk
	limitations, this is a great improvement.

	* IPython/Prompts.py (prompt_specials_color): Added \t for time
	info in user prompts.  Patch by Prabhu.

2004-11-18  Fernando Perez  <fperez@colorado.edu>

	* IPython/genutils.py (ask_yes_no): Add check for a max of 20
	EOFErrors and bail, to avoid infinite loops if a non-terminating
	file is fed into ipython.  Patch submitted in issue 19 by user,
	many thanks.

	* IPython/iplib.py (InteractiveShell.handle_auto): do NOT trigger
	autoquote/parens in continuation prompts, which can cause lots of
	problems.  Closes roundup issue 20.

2004-11-17  Fernando Perez  <fperez@colorado.edu>

	* debian/control (Build-Depends-Indep): Fix dpatch dependency,
	reported as debian bug #280505.  I'm not sure my local changelog
	entry has the proper debian format (Jack?).

2004-11-08  *** Released version 0.6.4

2004-11-08  Fernando Perez  <fperez@colorado.edu>

	* IPython/iplib.py (init_readline): Fix exit message for Windows
	when readline is active.  Thanks to a report by Eric Jones
	<eric-AT-enthought.com>.

2004-11-07  Fernando Perez  <fperez@colorado.edu>

	* IPython/genutils.py (page): Add a trap for OSError exceptions,
	sometimes seen by win2k/cygwin users.

2004-11-06  Fernando Perez  <fperez@colorado.edu>

	* IPython/iplib.py (interact): Change the handling of %Exit from
	trying to propagate a SystemExit to an internal ipython flag.
	This is less elegant than using Python's exception mechanism, but
	I can't get that to work reliably with threads, so under -pylab
	%Exit was hanging IPython.  Cross-thread exception handling is
	really a bitch.  Thaks to a bug report by Stephen Walton
	<stephen.walton-AT-csun.edu>.

2004-11-04  Fernando Perez  <fperez@colorado.edu>

	* IPython/iplib.py (raw_input_original): store a pointer to the
	true raw_input to harden against code which can modify it
	(wx.py.PyShell does this and would otherwise crash ipython).
	Thanks to a bug report by Jim Flowers <james.flowers-AT-lgx.com>.

	* IPython/Shell.py (MTInteractiveShell.runsource): Cleaner fix for
	Ctrl-C problem, which does not mess up the input line.

2004-11-03  Fernando Perez  <fperez@colorado.edu>

	* IPython/Release.py: Changed licensing to BSD, in all files.
	(name): lowercase name for tarball/RPM release.

	* IPython/OInspect.py (getdoc): wrap inspect.getdoc() safely for
	use throughout ipython.

	* IPython/Magic.py (Magic._ofind): Switch to using the new
	OInspect.getdoc() function.

	* IPython/Shell.py (sigint_handler): Hack to ignore the execution
	of the line currently being canceled via Ctrl-C.  It's extremely
	ugly, but I don't know how to do it better (the problem is one of
	handling cross-thread exceptions).

2004-10-28  Fernando Perez  <fperez@colorado.edu>

	* IPython/Shell.py (signal_handler): add signal handlers to trap
	SIGINT and SIGSEGV in threaded code properly.  Thanks to a bug
	report by Francesc Alted.

2004-10-21  Fernando Perez  <fperez@colorado.edu>

	* IPython/Extensions/InterpreterExec.py (prefilter_shell): Fix @
	to % for pysh syntax extensions.

2004-10-09  Fernando Perez  <fperez@colorado.edu>

	* IPython/Magic.py (Magic.magic_whos): modify output of Numeric
	arrays to print a more useful summary, without calling str(arr).
	This avoids the problem of extremely lengthy computations which
	occur if arr is large, and appear to the user as a system lockup
	with 100% cpu activity.  After a suggestion by Kristian Sandberg
	<Kristian.Sandberg@colorado.edu>.
	(Magic.__init__): fix bug in global magic escapes not being
	correctly set.

2004-10-08  Fernando Perez  <fperez@colorado.edu>

	* IPython/Magic.py (__license__): change to absolute imports of
	ipython's own internal packages, to start adapting to the absolute
	import requirement of PEP-328.

	* IPython/genutils.py (__author__): Fix coding to utf-8 on all
	files, and standardize author/license marks through the Release
	module instead of having per/file stuff (except for files with
	particular licenses, like the MIT/PSF-licensed codes).

	* IPython/Debugger.py: remove dead code for python 2.1

2004-10-04  Fernando Perez  <fperez@colorado.edu>

	* IPython/iplib.py (ipmagic): New function for accessing magics
	via a normal python function call.

	* IPython/Magic.py (Magic.magic_magic): Change the magic escape
	from '@' to '%', to accomodate the new @decorator syntax of python
	2.4.

2004-09-29  Fernando Perez  <fperez@colorado.edu>

	* IPython/Shell.py (MatplotlibShellBase.use): Added a wrapper to
	matplotlib.use to prevent running scripts which try to switch
	interactive backends from within ipython.  This will just crash
	the python interpreter, so we can't allow it (but a detailed error
	is given to the user).
	
2004-09-28  Fernando Perez  <fperez@colorado.edu>

	* IPython/Shell.py (MatplotlibShellBase.mplot_exec):
	matplotlib-related fixes so that using @run with non-matplotlib
	scripts doesn't pop up spurious plot windows.  This requires
	matplotlib >= 0.63, where I had to make some changes as well.

	* IPython/ipmaker.py (make_IPython): update version requirement to
	python 2.2.

	* IPython/iplib.py (InteractiveShell.mainloop): Add an optional
	banner arg for embedded customization.

	* IPython/Magic.py (Magic.__init__): big cleanup to remove all
	explicit uses of __IP as the IPython's instance name.  Now things
	are properly handled via the shell.name value.  The actual code
	is a bit ugly b/c I'm doing it via a global in Magic.py, but this
	is much better than before.  I'll clean things completely when the
	magic stuff gets a real overhaul.

	* ipython.1: small fixes, sent in by Jack Moffit.  He also sent in
	minor changes to debian dir.

	* IPython/iplib.py (InteractiveShell.__init__): Fix adding a
	pointer to the shell itself in the interactive namespace even when
	a user-supplied dict is provided.  This is needed for embedding
	purposes (found by tests with Michel Sanner).

2004-09-27  Fernando Perez  <fperez@colorado.edu>

	* IPython/UserConfig/ipythonrc: remove []{} from
	readline_remove_delims, so that things like [modname.<TAB> do
	proper completion.  This disables [].TAB, but that's a less common
	case than module names in list comprehensions, for example.
	Thanks to a report by Andrea Riciputi.

2004-09-09  Fernando Perez  <fperez@colorado.edu>

	* IPython/Shell.py (IPShellGTK.mainloop): reorder to avoid
	blocking problems in win32 and osx.  Fix by John.

2004-09-08  Fernando Perez  <fperez@colorado.edu>

	* IPython/Shell.py (IPShellWX.OnInit): Fix output redirection bug
	for Win32 and OSX.  Fix by John Hunter.

2004-08-30  *** Released version 0.6.3

2004-08-30  Fernando Perez  <fperez@colorado.edu>

	* setup.py (isfile): Add manpages to list of dependent files to be
	updated.

2004-08-27  Fernando Perez  <fperez@colorado.edu>

	* IPython/Shell.py (start): I've disabled -wthread and -gthread
	for now.  They don't really work with standalone WX/GTK code
	(though matplotlib IS working fine with both of those backends).
	This will neeed much more testing.  I disabled most things with
	comments, so turning it back on later should be pretty easy.

	* IPython/iplib.py (InteractiveShell.__init__): Fix accidental
	autocalling of expressions like r'foo', by modifying the line
	split regexp.  Closes
	http://www.scipy.net/roundup/ipython/issue18, reported by Nicholas
	Riley <ipythonbugs-AT-sabi.net>.
	(InteractiveShell.mainloop): honor --nobanner with banner
	extensions.

	* IPython/Shell.py: Significant refactoring of all classes, so
	that we can really support ALL matplotlib backends and threading
	models (John spotted a bug with Tk which required this).  Now we
	should support single-threaded, WX-threads and GTK-threads, both
	for generic code and for matplotlib.

	* IPython/ipmaker.py (__call__): Changed -mpthread option to
	-pylab, to simplify things for users.  Will also remove the pylab
	profile, since now all of matplotlib configuration is directly
	handled here.  This also reduces startup time.

	* IPython/Shell.py (IPShellGTK.run): Fixed bug where mainloop() of
	shell wasn't being correctly called.  Also in IPShellWX.

	* IPython/iplib.py (InteractiveShell.__init__): Added option to
	fine-tune banner.

	* IPython/numutils.py (spike): Deprecate these spike functions,
	delete (long deprecated) gnuplot_exec handler.

2004-08-26  Fernando Perez  <fperez@colorado.edu>

	* ipython.1: Update for threading options, plus some others which
	were missing.

	* IPython/ipmaker.py (__call__): Added -wthread option for
	wxpython thread handling.  Make sure threading options are only
	valid at the command line.

	* scripts/ipython: moved shell selection into a factory function
	in Shell.py, to keep the starter script to a minimum.

2004-08-25  Fernando Perez  <fperez@colorado.edu>

	* IPython/Shell.py (IPShellWX.wxexit): fixes to WX threading, by
	John.  Along with some recent changes he made to matplotlib, the
	next versions of both systems should work very well together.

2004-08-24  Fernando Perez  <fperez@colorado.edu>

	* IPython/Magic.py (Magic.magic_prun): cleanup some dead code.  I
	tried to switch the profiling to using hotshot, but I'm getting
	strange errors from prof.runctx() there.  I may be misreading the
	docs, but it looks weird.  For now the profiling code will
	continue to use the standard profiler.

2004-08-23  Fernando Perez  <fperez@colorado.edu>

	* IPython/Shell.py (IPShellWX.__init__): Improvements to the WX
	threaded shell, by John Hunter.  It's not quite ready yet, but
	close.

2004-08-22  Fernando Perez  <fperez@colorado.edu>

	* IPython/iplib.py (InteractiveShell.interact): tab cleanups, also
	in Magic and ultraTB.

	* ipython.1: document threading options in manpage.

	* scripts/ipython: Changed name of -thread option to -gthread,
	since this is GTK specific.  I want to leave the door open for a
	-wthread option for WX, which will most likely be necessary.  This
	change affects usage and ipmaker as well.

	* IPython/Shell.py (matplotlib_shell): Add a factory function to
	handle the matplotlib shell issues.  Code by John Hunter
	<jdhunter-AT-nitace.bsd.uchicago.edu>.
	(IPShellMatplotlibWX.__init__): Rudimentary WX support.  It's
	broken (and disabled for end users) for now, but it puts the
	infrastructure in place.

2004-08-21  Fernando Perez  <fperez@colorado.edu>

	* ipythonrc-pylab: Add matplotlib support.

	* matplotlib_config.py: new files for matplotlib support, part of
	the pylab profile.

	* IPython/usage.py (__doc__): documented the threading options.

2004-08-20  Fernando Perez  <fperez@colorado.edu>

	* ipython: Modified the main calling routine to handle the -thread
	and -mpthread options.  This needs to be done as a top-level hack,
	because it determines which class to instantiate for IPython
	itself.

	* IPython/Shell.py (MTInteractiveShell.__init__): New set of
	classes to support multithreaded GTK operation without blocking,
	and matplotlib with all backends.  This is a lot of still very
	experimental code, and threads are tricky.  So it may still have a
	few rough edges...  This code owes a lot to
	http://aspn.activestate.com/ASPN/Cookbook/Python/Recipe/65109, by
	Brian # McErlean and John Finlay, to Antoon Pardon for fixes, and
	to John Hunter for all the matplotlib work.

	* IPython/ipmaker.py (__call__): Added -thread and -mpthread
	options for gtk thread and matplotlib support.

2004-08-16  Fernando Perez  <fperez@colorado.edu>

	* IPython/iplib.py (InteractiveShell.__init__): don't trigger
	autocall for things like p*q,p/q,p+q,p-q, when p is callable.  Bug
	reported by Stephen Walton <stephen.walton-AT-csun.edu>.

2004-08-11  Fernando Perez  <fperez@colorado.edu>

	* setup.py (isfile): Fix build so documentation gets updated for
	rpms (it was only done for .tgz builds).

2004-08-10  Fernando Perez  <fperez@colorado.edu>

	* genutils.py (Term): Fix misspell of stdin stream (sin->cin).

	* iplib.py : Silence syntax error exceptions in tab-completion.
	
2004-08-05  Fernando Perez  <fperez@colorado.edu>

	* IPython/Prompts.py (Prompt2.set_colors): Fix incorrectly set
	'color off' mark for continuation prompts.  This was causing long
	continuation lines to mis-wrap.

2004-08-01  Fernando Perez  <fperez@colorado.edu>

	* IPython/ipmaker.py (make_IPython): Allow the shell class used
	for building ipython to be a parameter.  All this is necessary
	right now to have a multithreaded version, but this insane
	non-design will be cleaned up soon.  For now, it's a hack that
	works.

	* IPython/Shell.py (IPShell.__init__): Stop using mutable default
	args in various places.  No bugs so far, but it's a dangerous
	practice.

2004-07-31  Fernando Perez  <fperez@colorado.edu>

	* IPython/iplib.py (complete): ignore SyntaxError exceptions to
	fix completion of files with dots in their names under most
	profiles (pysh was OK because the completion order is different).

2004-07-27  Fernando Perez  <fperez@colorado.edu>

	* IPython/iplib.py (InteractiveShell.__init__): build dict of
	keywords manually, b/c the one in keyword.py was removed in python
	2.4.  Patch by Anakim Border <aborder-AT-users.sourceforge.net>.
	This is NOT a bug under python 2.3 and earlier.

2004-07-26  Fernando Perez  <fperez@colorado.edu>

	* IPython/ultraTB.py (VerboseTB.text): Add another
	linecache.checkcache() call to try to prevent inspect.py from
	crashing under python 2.3.  I think this fixes
	http://www.scipy.net/roundup/ipython/issue17.

2004-07-26  *** Released version 0.6.2

2004-07-26  Fernando Perez  <fperez@colorado.edu>

	* IPython/Magic.py (Magic.magic_cd): Fix bug where 'cd -N' would
	fail for any number.
	(Magic.magic_bookmark): Fix bug where 'bookmark -l' would fail for
	empty bookmarks.

2004-07-26  *** Released version 0.6.1

2004-07-26  Fernando Perez  <fperez@colorado.edu>

	* ipython_win_post_install.py (run): Added pysh shortcut for Windows.

	* IPython/iplib.py (protect_filename): Applied Ville's patch for
	escaping '()[]{}' in filenames.

	* IPython/Magic.py (shlex_split): Fix handling of '*' and '?' for
	Python 2.2 users who lack a proper shlex.split.

2004-07-19  Fernando Perez  <fperez@colorado.edu>

	* IPython/iplib.py (InteractiveShell.init_readline): Add support
	for reading readline's init file.  I follow the normal chain:
	$INPUTRC is honored, otherwise ~/.inputrc is used.  Thanks to a
	report by Mike Heeter.  This closes
	http://www.scipy.net/roundup/ipython/issue16.

2004-07-18  Fernando Perez  <fperez@colorado.edu>

	* IPython/iplib.py (__init__): Add better handling of '\' under
	Win32 for filenames.  After a patch by Ville.

2004-07-17  Fernando Perez  <fperez@colorado.edu>

	* IPython/iplib.py (InteractiveShell._prefilter): fix bug where
	autocalling would be triggered for 'foo is bar' if foo is
	callable.  I also cleaned up the autocall detection code to use a
	regexp, which is faster.  Bug reported by Alexander Schmolck.

	* IPython/Magic.py (Magic.magic_pinfo): Fix bug where strings with
	'?' in them would confuse the help system.  Reported by Alex
	Schmolck.

2004-07-16  Fernando Perez  <fperez@colorado.edu>

	* IPython/GnuplotInteractive.py (__all__): added plot2.

	* IPython/Gnuplot2.py (Gnuplot.plot2): added new function for
	plotting dictionaries, lists or tuples of 1d arrays.

	* IPython/Magic.py (Magic.magic_hist): small clenaups and
	optimizations.

	* IPython/iplib.py:Remove old Changelog info for cleanup.  This is
	the information which was there from Janko's original IPP code:

	03.05.99 20:53 porto.ifm.uni-kiel.de
	--Started changelog.
	--make clear do what it say it does
	--added pretty output of lines from inputcache
	--Made Logger a mixin class, simplifies handling of switches
	--Added own completer class. .string<TAB> expands to last history
	line which starts with string.  The new expansion is also present
	with Ctrl-r from the readline library.  But this shows, who this
	can be done for other cases.
	--Added convention that all shell functions should accept a
	parameter_string This opens the door for different behaviour for
	each function. @cd is a good example of this.

	04.05.99 12:12 porto.ifm.uni-kiel.de
	--added logfile rotation
	--added new mainloop method which freezes first the namespace

	07.05.99 21:24 porto.ifm.uni-kiel.de
	--added the docreader classes. Now there is a help system.
	-This is only a first try. Currently it's not easy to put new
	stuff in the indices. But this is the way to go. Info would be
	better, but HTML is every where and not everybody has an info
	system installed and it's not so easy to change html-docs to info.
	--added global logfile option
	--there is now a hook for object inspection method pinfo needs to
	be provided for this. Can be reached by two '??'.

	08.05.99 20:51 porto.ifm.uni-kiel.de
	--added a README
	--bug in rc file. Something has changed so functions in the rc
	file need to reference the shell and not self. Not clear if it's a
	bug or feature.
	--changed rc file for new behavior

2004-07-15  Fernando Perez  <fperez@colorado.edu>

	* IPython/Logger.py (Logger.log): fixed recent bug where the input
	cache was falling out of sync in bizarre manners when multi-line
	input was present.  Minor optimizations and cleanup.

	(Logger): Remove old Changelog info for cleanup.  This is the
	information which was there from Janko's original code:

	Changes to Logger: - made the default log filename a parameter

	- put a check for lines beginning with !@? in log(). Needed
	(even if the handlers properly log their lines) for mid-session
	logging activation to work properly. Without this, lines logged
	in mid session, which get read from the cache, would end up
	'bare' (with !@? in the open) in the log. Now they are caught
	and prepended with a #.

	* IPython/iplib.py (InteractiveShell.init_readline): added check
	in case MagicCompleter fails to be defined, so we don't crash.

2004-07-13  Fernando Perez  <fperez@colorado.edu>

	* IPython/Gnuplot2.py (Gnuplot.hardcopy): add automatic generation
	of EPS if the requested filename ends in '.eps'.

2004-07-04  Fernando Perez  <fperez@colorado.edu>

	* IPython/iplib.py (InteractiveShell.handle_shell_escape): Fix
	escaping of quotes when calling the shell.

2004-07-02  Fernando Perez  <fperez@colorado.edu>

	* IPython/Prompts.py (CachedOutput.update): Fix problem with
	gettext not working because we were clobbering '_'.  Fixes
	http://www.scipy.net/roundup/ipython/issue6.

2004-07-01  Fernando Perez  <fperez@colorado.edu>

	* IPython/Magic.py (Magic.magic_cd): integrated bookmark handling
	into @cd.  Patch by Ville.

	* IPython/iplib.py (InteractiveShell.post_config_initialization):
	new function to store things after ipmaker runs.  Patch by Ville.
	Eventually this will go away once ipmaker is removed and the class
	gets cleaned up, but for now it's ok.  Key functionality here is
	the addition of the persistent storage mechanism, a dict for
	keeping data across sessions (for now just bookmarks, but more can
	be implemented later).

	* IPython/Magic.py (Magic.magic_bookmark): New bookmark system,
	persistent across sections.  Patch by Ville, I modified it
	soemwhat to allow bookmarking arbitrary dirs other than CWD.  Also
	added a '-l' option to list all bookmarks.

	* IPython/iplib.py (InteractiveShell.atexit_operations): new
	center for cleanup.  Registered with atexit.register().  I moved
	here the old exit_cleanup().  After a patch by Ville.

	* IPython/Magic.py (get_py_filename): added '~' to the accepted
	characters in the hacked shlex_split for python 2.2.

	* IPython/iplib.py (file_matches): more fixes to filenames with
	whitespace in them.  It's not perfect, but limitations in python's
	readline make it impossible to go further.

2004-06-29  Fernando Perez  <fperez@colorado.edu>

	* IPython/iplib.py (file_matches): escape whitespace correctly in
	filename completions.  Bug reported by Ville.

2004-06-28  Fernando Perez  <fperez@colorado.edu>

	* IPython/ipmaker.py (__call__): Added per-profile histories.  Now
	the history file will be called 'history-PROFNAME' (or just
	'history' if no profile is loaded).  I was getting annoyed at
	getting my Numerical work history clobbered by pysh sessions.

	* IPython/iplib.py (InteractiveShell.__init__): Internal
	getoutputerror() function so that we can honor the system_verbose
	flag for _all_ system calls.  I also added escaping of #
	characters here to avoid confusing Itpl.

	* IPython/Magic.py (shlex_split): removed call to shell in
	parse_options and replaced it with shlex.split().  The annoying
	part was that in Python 2.2, shlex.split() doesn't exist, so I had
	to backport it from 2.3, with several frail hacks (the shlex
	module is rather limited in 2.2).  Thanks to a suggestion by Ville
	Vainio <vivainio@kolumbus.fi>.  For Python 2.3 there should be no
	problem.
	
	(Magic.magic_system_verbose): new toggle to print the actual
	system calls made by ipython.  Mainly for debugging purposes.

	* IPython/GnuplotRuntime.py (gnu_out): fix bug for cygwin, which
	doesn't support persistence.  Reported (and fix suggested) by
	Travis Caldwell <travis_caldwell2000@yahoo.com>.

2004-06-26  Fernando Perez  <fperez@colorado.edu>

	* IPython/Logger.py (Logger.log): fix to handle correctly empty
	continue prompts.

	* IPython/Extensions/InterpreterExec.py (pysh): moved the pysh()
	function (basically a big docstring) and a few more things here to
	speedup startup. pysh.py is now very lightweight.  We want because
	it gets execfile'd, while InterpreterExec gets imported, so
	byte-compilation saves time.

2004-06-25  Fernando Perez  <fperez@colorado.edu>

	* IPython/Magic.py (Magic.magic_cd): Fixed to restore usage of 'cd
	-NUM', which was recently broken.

	* IPython/iplib.py (InteractiveShell.handle_shell_escape): allow !
	in multi-line input (but not !!, which doesn't make sense there).

	* IPython/UserConfig/ipythonrc: made autoindent on by default.
	It's just too useful, and people can turn it off in the less
	common cases where it's a problem.

2004-06-24  Fernando Perez  <fperez@colorado.edu>

	* IPython/iplib.py (InteractiveShell._prefilter): big change -
	special syntaxes (like alias calling) is now allied in multi-line
	input.  This is still _very_ experimental, but it's necessary for
	efficient shell usage combining python looping syntax with system
	calls.  For now it's restricted to aliases, I don't think it
	really even makes sense to have this for magics.

2004-06-23  Fernando Perez  <fperez@colorado.edu>

	* IPython/Extensions/InterpreterExec.py (prefilter_shell): Added
	$var=cmd <=> @sc var=cmd and  $$var=cmd <=> @sc -l var=cmd.

	* IPython/Magic.py (Magic.magic_rehashx): modified to handle
	extensions under Windows (after code sent by Gary Bishop).  The
	extensions considered 'executable' are stored in IPython's rc
	structure as win_exec_ext.

	* IPython/genutils.py (shell): new function, like system() but
	without return value.  Very useful for interactive shell work.

	* IPython/Magic.py (Magic.magic_unalias): New @unalias function to
	delete aliases.

	* IPython/iplib.py (InteractiveShell.alias_table_update): make
	sure that the alias table doesn't contain python keywords.

2004-06-21  Fernando Perez  <fperez@colorado.edu>

	* IPython/Magic.py (Magic.magic_rehash): Fix crash when
	non-existent items are found in $PATH.  Reported by Thorsten.

2004-06-20  Fernando Perez  <fperez@colorado.edu>

	* IPython/iplib.py (complete): modified the completer so that the
	order of priorities can be easily changed at runtime.

	* IPython/Extensions/InterpreterExec.py (prefilter_shell):
	Modified to auto-execute all lines beginning with '~', '/' or '.'.

	* IPython/Magic.py (Magic.magic_sx): modified @sc and @sx to
	expand Python variables prepended with $ in all system calls.  The
	same was done to InteractiveShell.handle_shell_escape.  Now all
	system access mechanisms (!, !!, @sc, @sx and aliases) allow the
	expansion of python variables and expressions according to the
	syntax of PEP-215 - http://www.python.org/peps/pep-0215.html.

	Though PEP-215 has been rejected, a similar (but simpler) one
	seems like it will go into Python 2.4, PEP-292 -
	http://www.python.org/peps/pep-0292.html.

	I'll keep the full syntax of PEP-215, since IPython has since the
	start used Ka-Ping Yee's reference implementation discussed there
	(Itpl), and I actually like the powerful semantics it offers.

	In order to access normal shell variables, the $ has to be escaped
	via an extra $.  For example:

	In [7]: PATH='a python variable'

	In [8]: !echo $PATH
	a python variable

	In [9]: !echo $$PATH
	/usr/local/lf9560/bin:/usr/local/intel/compiler70/ia32/bin:...

	(Magic.parse_options): escape $ so the shell doesn't evaluate
	things prematurely.

	* IPython/iplib.py (InteractiveShell.call_alias): added the
	ability for aliases to expand python variables via $.

	* IPython/Magic.py (Magic.magic_rehash): based on the new alias
	system, now there's a @rehash/@rehashx pair of magics.  These work
	like the csh rehash command, and can be invoked at any time.  They
	build a table of aliases to everything in the user's $PATH
	(@rehash uses everything, @rehashx is slower but only adds
	executable files).  With this, the pysh.py-based shell profile can
	now simply call rehash upon startup, and full access to all
	programs in the user's path is obtained.

	* IPython/iplib.py (InteractiveShell.call_alias): The new alias
	functionality is now fully in place.  I removed the old dynamic
	code generation based approach, in favor of a much lighter one
	based on a simple dict.  The advantage is that this allows me to
	now have thousands of aliases with negligible cost (unthinkable
	with the old system).

2004-06-19  Fernando Perez  <fperez@colorado.edu>

	* IPython/iplib.py (__init__): extended MagicCompleter class to
	also complete (last in priority) on user aliases.

	* IPython/Itpl.py (Itpl.__str__): fixed order of globals/locals in
	call to eval.
	(ItplNS.__init__): Added a new class which functions like Itpl,
	but allows configuring the namespace for the evaluation to occur
	in.

2004-06-18  Fernando Perez  <fperez@colorado.edu>

	* IPython/iplib.py (InteractiveShell.runcode): modify to print a
	better message when 'exit' or 'quit' are typed (a common newbie
	confusion).

	* IPython/Magic.py (Magic.magic_colors): Added the runtime color
	check for Windows users.

	* IPython/iplib.py (InteractiveShell.user_setup): removed
	disabling of colors for Windows.  I'll test at runtime and issue a
	warning if Gary's readline isn't found, as to nudge users to
	download it.

2004-06-16  Fernando Perez  <fperez@colorado.edu>

	* IPython/genutils.py (Stream.__init__): changed to print errors
	to sys.stderr.  I had a circular dependency here.  Now it's
	possible to run ipython as IDLE's shell (consider this pre-alpha,
	since true stdout things end up in the starting terminal instead
	of IDLE's out).

	* IPython/Prompts.py (Prompt2.set_colors): prevent crashes for
	users who haven't # updated their prompt_in2 definitions.  Remove
	eventually.
	(multiple_replace): added credit to original ASPN recipe.

2004-06-15  Fernando Perez  <fperez@colorado.edu>

	* IPython/iplib.py (InteractiveShell.__init__): add 'cp' to the
	list of auto-defined aliases.

2004-06-13  Fernando Perez  <fperez@colorado.edu>

	* setup.py (scriptfiles): Don't trigger win_post_install unless an
	install was really requested (so setup.py can be used for other
	things under Windows).

2004-06-10  Fernando Perez  <fperez@colorado.edu>

	* IPython/Logger.py (Logger.create_log): Manually remove any old
	backup, since os.remove may fail under Windows.  Fixes bug
	reported by Thorsten.

2004-06-09  Fernando Perez  <fperez@colorado.edu>

	* examples/example-embed.py: fixed all references to %n (replaced
	with \\# for ps1/out prompts and with \\D for ps2 prompts).  Done
	for all examples and the manual as well.

2004-06-08  Fernando Perez  <fperez@colorado.edu>

	* IPython/Prompts.py (Prompt2.set_p_str): fixed all prompt
	alignment and color management.  All 3 prompt subsystems now
	inherit from BasePrompt.

	* tools/release: updates for windows installer build and tag rpms
	with python version (since paths are fixed).

	* IPython/UserConfig/ipythonrc: modified to use \# instead of %n,
	which will become eventually obsolete.  Also fixed the default
	prompt_in2 to use \D, so at least new users start with the correct
	defaults.
	WARNING: Users with existing ipythonrc files will need to apply
	this fix manually!

	* setup.py: make windows installer (.exe).  This is finally the
	integration of an old patch by Cory Dodt <dodt-AT-fcoe.k12.ca.us>,
	which I hadn't included because it required Python 2.3 (or recent
	distutils).

	* IPython/usage.py (__doc__): update docs (and manpage) to reflect
	usage of new '\D' escape.

	* IPython/Prompts.py (ROOT_SYMBOL): Small fix for Windows (which
	lacks os.getuid())
	(CachedOutput.set_colors): Added the ability to turn coloring
	on/off with @colors even for manually defined prompt colors.  It
	uses a nasty global, but it works safely and via the generic color
	handling mechanism.
	(Prompt2.__init__): Introduced new escape '\D' for continuation
	prompts. It represents the counter ('\#') as dots.
	*** NOTE *** THIS IS A BACKWARDS-INCOMPATIBLE CHANGE.  Users will
	need to update their ipythonrc files and replace '%n' with '\D' in
	their prompt_in2 settings everywhere.  Sorry, but there's
	otherwise no clean way to get all prompts to properly align.  The
	ipythonrc shipped with IPython has been updated.

2004-06-07  Fernando Perez  <fperez@colorado.edu>

	* setup.py (isfile): Pass local_icons option to latex2html, so the
	resulting HTML file is self-contained.  Thanks to
	dryice-AT-liu.com.cn for the tip.

	* pysh.py: I created a new profile 'shell', which implements a
	_rudimentary_ IPython-based shell.  This is in NO WAY a realy
	system shell, nor will it become one anytime soon.  It's mainly
	meant to illustrate the use of the new flexible bash-like prompts.
	I guess it could be used by hardy souls for true shell management,
	but it's no tcsh/bash...  pysh.py is loaded by the 'shell'
	profile.  This uses the InterpreterExec extension provided by
	W.J. van der Laan <gnufnork-AT-hetdigitalegat.nl>

	* IPython/Prompts.py (PromptOut.__str__): now it will correctly
	auto-align itself with the length of the previous input prompt
	(taking into account the invisible color escapes).
	(CachedOutput.__init__): Large restructuring of this class.  Now
	all three prompts (primary1, primary2, output) are proper objects,
	managed by the 'parent' CachedOutput class.  The code is still a
	bit hackish (all prompts share state via a pointer to the cache),
	but it's overall far cleaner than before.

	* IPython/genutils.py (getoutputerror): modified to add verbose,
	debug and header options.  This makes the interface of all getout*
	functions uniform.
	(SystemExec.getoutputerror): added getoutputerror to SystemExec.

	* IPython/Magic.py (Magic.default_option): added a function to
	allow registering default options for any magic command.  This
	makes it easy to have profiles which customize the magics globally
	for a certain use.  The values set through this function are
	picked up by the parse_options() method, which all magics should
	use to parse their options.

	* IPython/genutils.py (warn): modified the warnings framework to
	use the Term I/O class.  I'm trying to slowly unify all of
	IPython's I/O operations to pass through Term.

	* IPython/Prompts.py (Prompt2._str_other): Added functionality in
	the secondary prompt to correctly match the length of the primary
	one for any prompt.  Now multi-line code will properly line up
	even for path dependent prompts, such as the new ones available
	via the prompt_specials.

2004-06-06  Fernando Perez  <fperez@colorado.edu>

	* IPython/Prompts.py (prompt_specials): Added the ability to have
	bash-like special sequences in the prompts, which get
	automatically expanded.  Things like hostname, current working
	directory and username are implemented already, but it's easy to
	add more in the future.  Thanks to a patch by W.J. van der Laan
	<gnufnork-AT-hetdigitalegat.nl>
	(prompt_specials): Added color support for prompt strings, so
	users can define arbitrary color setups for their prompts.

2004-06-05  Fernando Perez  <fperez@colorado.edu>

	* IPython/genutils.py (Term.reopen_all): Added Windows-specific
	code to load Gary Bishop's readline and configure it
	automatically.  Thanks to Gary for help on this.

2004-06-01  Fernando Perez  <fperez@colorado.edu>

	* IPython/Logger.py (Logger.create_log): fix bug for logging
	with no filename (previous fix was incomplete).

2004-05-25  Fernando Perez  <fperez@colorado.edu>

	* IPython/Magic.py (Magic.parse_options): fix bug where naked
	parens would get passed to the shell.

2004-05-20  Fernando Perez  <fperez@colorado.edu>

	* IPython/Magic.py (Magic.magic_prun): changed default profile
	sort order to 'time' (the more common profiling need).

	* IPython/OInspect.py (Inspector.pinfo): flush the inspect cache
	so that source code shown is guaranteed in sync with the file on
	disk (also changed in psource).  Similar fix to the one for
	ultraTB on 2004-05-06.  Thanks to a bug report by Yann Le Du
	<yann.ledu-AT-noos.fr>.
	
	* IPython/Magic.py (Magic.parse_options): Fixed bug where commands
	with a single option would not be correctly parsed. Closes
	http://www.scipy.net/roundup/ipython/issue14.  This bug had been
	introduced in 0.6.0 (on 2004-05-06).

2004-05-13  *** Released version 0.6.0

2004-05-13  Fernando Perez  <fperez@colorado.edu>

	* debian/: Added debian/ directory to CVS, so that debian support
	is publicly accessible.  The debian package is maintained by Jack
	Moffit <jack-AT-xiph.org>.

	* Documentation: included the notes about an ipython-based system
	shell (the hypothetical 'pysh') into the new_design.pdf document,
	so that these ideas get distributed to users along with the
	official documentation.

2004-05-10  Fernando Perez  <fperez@colorado.edu>

	* IPython/Logger.py (Logger.create_log): fix recently introduced
	bug (misindented line) where logstart would fail when not given an
	explicit filename.

2004-05-09  Fernando Perez  <fperez@colorado.edu>

	* IPython/Magic.py (Magic.parse_options): skip system call when
	there are no options to look for.  Faster, cleaner for the common
	case.

	* Documentation: many updates to the manual: describing Windows
	support better, Gnuplot updates, credits, misc small stuff.  Also
	updated the new_design doc a bit.

2004-05-06  *** Released version 0.6.0.rc1

2004-05-06  Fernando Perez  <fperez@colorado.edu>

	* IPython/ultraTB.py (ListTB.text): modified a ton of string +=
	operations to use the vastly more efficient list/''.join() method.
	(FormattedTB.text): Fix
	http://www.scipy.net/roundup/ipython/issue12 - exception source
	extract not updated after reload.  Thanks to Mike Salib
	<msalib-AT-mit.edu> for pinning the source of the problem.
	Fortunately, the solution works inside ipython and doesn't require
	any changes to python proper.

	* IPython/Magic.py (Magic.parse_options): Improved to process the
	argument list as a true shell would (by actually using the
	underlying system shell).  This way, all @magics automatically get
	shell expansion for variables.  Thanks to a comment by Alex
	Schmolck.

2004-04-04  Fernando Perez  <fperez@colorado.edu>

	* IPython/iplib.py (InteractiveShell.interact): Added a special
	trap for a debugger quit exception, which is basically impossible
	to handle by normal mechanisms, given what pdb does to the stack.
	This fixes a crash reported by <fgibbons-AT-llama.med.harvard.edu>.

2004-04-03  Fernando Perez  <fperez@colorado.edu>

	* IPython/genutils.py (Term): Standardized the names of the Term
	class streams to cin/cout/cerr, following C++ naming conventions
	(I can't use in/out/err because 'in' is not a valid attribute
	name).

	* IPython/iplib.py (InteractiveShell.interact): don't increment
	the prompt if there's no user input.  By Daniel 'Dang' Griffith
	<pythondev-dang-AT-lazytwinacres.net>, after a suggestion from
	Francois Pinard.

2004-04-02  Fernando Perez  <fperez@colorado.edu>

	* IPython/genutils.py (Stream.__init__): Modified to survive at
	least importing in contexts where stdin/out/err aren't true file
	objects, such as PyCrust (they lack fileno() and mode).  However,
	the recovery facilities which rely on these things existing will
	not work.

2004-04-01  Fernando Perez  <fperez@colorado.edu>

	* IPython/Magic.py (Magic.magic_sx): modified (as well as @sc) to
	use the new getoutputerror() function, so it properly
	distinguishes stdout/err.

	* IPython/genutils.py (getoutputerror): added a function to
	capture separately the standard output and error of a command.
	After a comment from dang on the mailing lists.  This code is
	basically a modified version of commands.getstatusoutput(), from
	the standard library.

	* IPython/iplib.py (InteractiveShell.handle_shell_escape): added
	'!!' as a special syntax (shorthand) to access @sx.

	* IPython/Magic.py (Magic.magic_sx): new magic, to execute a shell
	command and return its output as a list split on '\n'.

2004-03-31  Fernando Perez  <fperez@colorado.edu>

	* IPython/FakeModule.py (FakeModule.__init__): added __nonzero__
	method to dictionaries used as FakeModule instances if they lack
	it.  At least pydoc in python2.3 breaks for runtime-defined
	functions without this hack.  At some point I need to _really_
	understand what FakeModule is doing, because it's a gross hack.
	But it solves Arnd's problem for now...

2004-02-27  Fernando Perez  <fperez@colorado.edu>

	* IPython/Logger.py (Logger.create_log): Fix bug where 'rotate'
	mode would behave erratically.  Also increased the number of
	possible logs in rotate mod to 999.  Thanks to Rod Holland
	<rhh@StructureLABS.com> for the report and fixes.
	
2004-02-26  Fernando Perez  <fperez@colorado.edu>

	* IPython/genutils.py (page): Check that the curses module really
	has the initscr attribute before trying to use it.  For some
	reason, the Solaris curses module is missing this.  I think this
	should be considered a Solaris python bug, but I'm not sure.

2004-01-17  Fernando Perez  <fperez@colorado.edu>

	* IPython/genutils.py (Stream.__init__): Changes to try to make
	ipython robust against stdin/out/err being closed by the user.
	This is 'user error' (and blocks a normal python session, at least
	the stdout case).  However, Ipython should be able to survive such
	instances of abuse as gracefully as possible.  To simplify the
	coding and maintain compatibility with Gary Bishop's Term
	contributions, I've made use of classmethods for this.  I think
	this introduces a dependency on python 2.2.

2004-01-13  Fernando Perez  <fperez@colorado.edu>

	* IPython/numutils.py (exp_safe): simplified the code a bit and
	removed the need for importing the kinds module altogether.

2004-01-06  Fernando Perez  <fperez@colorado.edu>

	* IPython/Magic.py (Magic.magic_sc): Made the shell capture system
	a magic function instead, after some community feedback.  No
	special syntax will exist for it, but its name is deliberately
	very short.

2003-12-20  Fernando Perez  <fperez@colorado.edu>

	* IPython/iplib.py (InteractiveShell.handle_shell_assign): Added
	new functionality, to automagically assign the result of a shell
	command to a variable.  I'll solicit some community feedback on
	this before making it permanent.

	* IPython/OInspect.py (Inspector.pinfo): Fix crash when info was
	requested about callables for which inspect couldn't obtain a
	proper argspec.  Thanks to a crash report sent by Etienne
	Posthumus <etienne-AT-apple01.cs.vu.nl>.

2003-12-09  Fernando Perez  <fperez@colorado.edu>

	* IPython/genutils.py (page): patch for the pager to work across
	various versions of Windows.  By Gary Bishop.

2003-12-04  Fernando Perez  <fperez@colorado.edu>

	* IPython/Gnuplot2.py (PlotItems): Fixes for working with
	Gnuplot.py version 1.7, whose internal names changed quite a bit.
	While I tested this and it looks ok, there may still be corner
	cases I've missed.

2003-12-01  Fernando Perez  <fperez@colorado.edu>

	* IPython/iplib.py (InteractiveShell._prefilter): Fixed a bug
	where a line like 'p,q=1,2' would fail because the automagic
	system would be triggered for @p.

	* IPython/DPyGetOpt.py (DPyGetOpt.processArguments): Tab-related
	cleanups, code unmodified.

	* IPython/genutils.py (Term): added a class for IPython to handle
	output.  In most cases it will just be a proxy for stdout/err, but
	having this allows modifications to be made for some platforms,
	such as handling color escapes under Windows.  All of this code
	was contributed by Gary Bishop, with minor modifications by me.
	The actual changes affect many files.

2003-11-30  Fernando Perez  <fperez@colorado.edu>

	* IPython/iplib.py (file_matches): new completion code, courtesy
	of Jeff Collins.  This enables filename completion again under
	python 2.3, which disabled it at the C level.

2003-11-11  Fernando Perez  <fperez@colorado.edu>

	* IPython/numutils.py (amap): Added amap() fn.  Simple shorthand
	for Numeric.array(map(...)), but often convenient.

2003-11-05  Fernando Perez  <fperez@colorado.edu>

	* IPython/numutils.py (frange): Changed a call from int() to
	int(round()) to prevent a problem reported with arange() in the
	numpy list.

2003-10-06  Fernando Perez  <fperez@colorado.edu>

	* IPython/DPyGetOpt.py (DPyGetOpt.processArguments): changed to
	prevent crashes if sys lacks an argv attribute (it happens with
	embedded interpreters which build a bare-bones sys module).
	Thanks to a report/bugfix by Adam Hupp <hupp-AT-cs.wisc.edu>.

2003-09-24  Fernando Perez  <fperez@colorado.edu>

	* IPython/Magic.py (Magic._ofind): blanket except around getattr()
	to protect against poorly written user objects where __getattr__
	raises exceptions other than AttributeError.  Thanks to a bug
	report by Oliver Sander <osander-AT-gmx.de>.

	* IPython/FakeModule.py (FakeModule.__repr__): this method was
	missing.  Thanks to bug report by Ralf Schmitt <ralf-AT-brainbot.com>.

2003-09-09  Fernando Perez  <fperez@colorado.edu>

	* IPython/iplib.py (InteractiveShell._prefilter): fix bug where
	unpacking a list whith a callable as first element would
	mistakenly trigger autocalling.  Thanks to a bug report by Jeffery
	Collins.

2003-08-25  *** Released version 0.5.0

2003-08-22  Fernando Perez  <fperez@colorado.edu>

	* IPython/ultraTB.py (VerboseTB.linereader): Improved handling of
	improperly defined user exceptions.  Thanks to feedback from Mark
	Russell <mrussell-AT-verio.net>.
	
2003-08-20  Fernando Perez  <fperez@colorado.edu>

	* IPython/OInspect.py (Inspector.pinfo): changed String Form
	printing so that it would print multi-line string forms starting
	with a new line.  This way the formatting is better respected for
	objects which work hard to make nice string forms.

	* IPython/iplib.py (InteractiveShell.handle_auto): Fix bug where
	autocall would overtake data access for objects with both
	__getitem__ and __call__.

2003-08-19  *** Released version 0.5.0-rc1

2003-08-19  Fernando Perez  <fperez@colorado.edu>

	* IPython/deep_reload.py (load_tail): single tiny change here
	seems to fix the long-standing bug of dreload() failing to work
	for dotted names.  But this module is pretty tricky, so I may have
	missed some subtlety.  Needs more testing!.

	* IPython/ultraTB.py (VerboseTB.linereader): harden against user
	exceptions which have badly implemented __str__ methods.
	(VerboseTB.text): harden against inspect.getinnerframes crashing,
	which I've been getting reports about from Python 2.3 users.  I
	wish I had a simple test case to reproduce the problem, so I could
	either write a cleaner workaround or file a bug report if
	necessary.

	* IPython/Magic.py (Magic.magic_edit): fixed bug where after
	making a class 'foo', file 'foo.py' couldn't be edited.  Thanks to
	a bug report by Tjabo Kloppenburg.

	* IPython/ultraTB.py (VerboseTB.debugger): hardened against pdb
	crashes.  Wrapped the pdb call in a blanket try/except, since pdb
	seems rather unstable.  Thanks to a bug report by Tjabo
	Kloppenburg <tjabo.kloppenburg-AT-unix-ag.uni-siegen.de>.

	* IPython/Release.py (version): release 0.5.0-rc1.  I want to put
	this out soon because of the critical fixes in the inner loop for
	generators.

	* IPython/Magic.py (Magic.getargspec): removed.  This (and
	_get_def) have been obsoleted by OInspect for a long time, I
	hadn't noticed that they were dead code.
	(Magic._ofind): restored _ofind functionality for a few literals
	(those in ["''",'""','[]','{}','()']).  But it won't work anymore
	for things like "hello".capitalize?, since that would require a
	potentially dangerous eval() again.

	* IPython/iplib.py (InteractiveShell._prefilter): reorganized the
	logic a bit more to clean up the escapes handling and minimize the
	use of _ofind to only necessary cases.  The interactive 'feel' of
	IPython should have improved quite a bit with the changes in
	_prefilter and _ofind (besides being far safer than before).

	* IPython/Magic.py (Magic.magic_edit): Fixed old bug (but rather
	obscure, never reported).  Edit would fail to find the object to
	edit under some circumstances.
	(Magic._ofind): CRITICAL FIX.  Finally removed the eval() calls
	which were causing double-calling of generators.  Those eval calls
	were _very_ dangerous, since code with side effects could be
	triggered.  As they say, 'eval is evil'...  These were the
	nastiest evals in IPython.  Besides, _ofind is now far simpler,
	and it should also be quite a bit faster.  Its use of inspect is
	also safer, so perhaps some of the inspect-related crashes I've
	seen lately with Python 2.3 might be taken care of.  That will
	need more testing.

2003-08-17  Fernando Perez  <fperez@colorado.edu>

	* IPython/iplib.py (InteractiveShell._prefilter): significant
	simplifications to the logic for handling user escapes.  Faster
	and simpler code.

2003-08-14  Fernando Perez  <fperez@colorado.edu>

        * IPython/numutils.py (sum_flat): rewrote to be non-recursive.
        Now it requires O(N) storage (N=size(a)) for non-contiguous input,
        but it should be quite a bit faster.  And the recursive version
        generated O(log N) intermediate storage for all rank>1 arrays,
        even if they were contiguous.
        (l1norm): Added this function.
        (norm):  Added this function for arbitrary norms (including
        l-infinity).  l1 and l2 are still special cases for convenience
        and speed.
	
2003-08-03  Fernando Perez  <fperez@colorado.edu>

	* IPython/Magic.py (Magic.magic_edit): Removed all remaining string
	exceptions, which now raise PendingDeprecationWarnings in Python
	2.3.  There were some in Magic and some in Gnuplot2.

2003-06-30  Fernando Perez  <fperez@colorado.edu>

	* IPython/genutils.py (page): modified to call curses only for
	terminals where TERM=='xterm'.  After problems under many other
	terminals were reported by Keith Beattie <KSBeattie-AT-lbl.gov>.

	* IPython/iplib.py (complete): removed spurious 'print "IE"' which
	would be triggered when readline was absent.  This was just an old
	debugging statement I'd forgotten to take out.

2003-06-20  Fernando Perez  <fperez@colorado.edu>

	* IPython/genutils.py (clock): modified to return only user time
	(not counting system time), after a discussion on scipy.  While
	system time may be a useful quantity occasionally, it may much
	more easily be skewed by occasional swapping or other similar
	activity.

2003-06-05  Fernando Perez  <fperez@colorado.edu>

	* IPython/numutils.py (identity): new function, for building
	arbitrary rank Kronecker deltas (mostly backwards compatible with
	Numeric.identity)

2003-06-03  Fernando Perez  <fperez@colorado.edu>

	* IPython/iplib.py (InteractiveShell.handle_magic): protect
	arguments passed to magics with spaces, to allow trailing '\' to
	work normally (mainly for Windows users).

2003-05-29  Fernando Perez  <fperez@colorado.edu>

	* IPython/ipmaker.py (make_IPython): Load site._Helper() as help
	instead of pydoc.help.  This fixes a bizarre behavior where
	printing '%s' % locals() would trigger the help system.  Now
	ipython behaves like normal python does.  

	Note that if one does 'from pydoc import help', the bizarre
	behavior returns, but this will also happen in normal python, so
	it's not an ipython bug anymore (it has to do with how pydoc.help
	is implemented).

2003-05-22  Fernando Perez  <fperez@colorado.edu>

	* IPython/FlexCompleter.py (Completer.attr_matches): fixed to
	return [] instead of None when nothing matches, also match to end
	of line.  Patch by Gary Bishop.

	* IPython/ipmaker.py (make_IPython): Added same sys.excepthook
	protection as before, for files passed on the command line.  This
	prevents the CrashHandler from kicking in if user files call into
	sys.excepthook (such as PyQt and WxWindows have a nasty habit of
	doing).  After a report by Kasper Souren <Kasper.Souren-AT-ircam.fr>

2003-05-20  *** Released version 0.4.0

2003-05-20  Fernando Perez  <fperez@colorado.edu>

	* setup.py: added support for manpages.  It's a bit hackish b/c of
	a bug in the way the bdist_rpm distutils target handles gzipped
	manpages, but it works.  After a patch by Jack.

2003-05-19  Fernando Perez  <fperez@colorado.edu>

	* IPython/numutils.py: added a mockup of the kinds module, since
	it was recently removed from Numeric.  This way, numutils will
	work for all users even if they are missing kinds.

	* IPython/Magic.py (Magic._ofind): Harden against an inspect
	failure, which can occur with SWIG-wrapped extensions.  After a
	crash report from Prabhu.

2003-05-16  Fernando Perez  <fperez@colorado.edu>

	* IPython/iplib.py (InteractiveShell.excepthook): New method to
	protect ipython from user code which may call directly
	sys.excepthook (this looks like an ipython crash to the user, even
	when it isn't).  After a patch by Gary Bishop <gb-AT-cs.unc.edu>.
	This is especially important to help users of WxWindows, but may
	also be useful in other cases.

	* IPython/ultraTB.py (AutoFormattedTB.__call__): Changed to allow
	an optional tb_offset to be specified, and to preserve exception
	info if given.  After a patch by Gary Bishop <gb-AT-cs.unc.edu>.

	* ipython.1 (Default): Thanks to Jack's work, we now have manpages!

2003-05-15  Fernando Perez  <fperez@colorado.edu>

	* IPython/iplib.py (InteractiveShell.user_setup): Fix crash when
	installing for a new user under Windows.

2003-05-12  Fernando Perez  <fperez@colorado.edu>

	* IPython/iplib.py (InteractiveShell.handle_emacs): New line
	handler for Emacs comint-based lines.  Currently it doesn't do
	much (but importantly, it doesn't update the history cache).  In
	the future it may be expanded if Alex needs more functionality
	there.

	* IPython/CrashHandler.py (CrashHandler.__call__): Added platform
	info to crash reports.

	* IPython/iplib.py (InteractiveShell.mainloop): Added -c option,
	just like Python's -c.  Also fixed crash with invalid -color
	option value at startup. Thanks to Will French
	<wfrench-AT-bestweb.net> for the bug report.

2003-05-09  Fernando Perez  <fperez@colorado.edu>

	* IPython/genutils.py (EvalDict.__getitem__): Renamed EvalString
	to EvalDict (it's a mapping, after all) and simplified its code
	quite a bit, after a nice discussion on c.l.py where Gustavo
	Córdova <gcordova-AT-sismex.com> suggested the new version.

2003-04-30  Fernando Perez  <fperez@colorado.edu>

	* IPython/genutils.py (timings_out): modified it to reduce its
	overhead in the common reps==1 case.

2003-04-29  Fernando Perez  <fperez@colorado.edu>

	* IPython/genutils.py (timings_out): Modified to use the resource
	module, which avoids the wraparound problems of time.clock().

2003-04-17  *** Released version 0.2.15pre4

2003-04-17  Fernando Perez  <fperez@colorado.edu>

	* setup.py (scriptfiles): Split windows-specific stuff over to a
	separate file, in an attempt to have a Windows GUI installer.
	That didn't work, but part of the groundwork is done.

	* IPython/UserConfig/ipythonrc: Added M-i, M-o and M-I for
	indent/unindent with 4 spaces.  Particularly useful in combination
	with the new auto-indent option.

2003-04-16  Fernando Perez  <fperez@colorado.edu>

	* IPython/Magic.py: various replacements of self.rc for
	self.shell.rc.  A lot more remains to be done to fully disentangle
	this class from the main Shell class.

	* IPython/GnuplotRuntime.py: added checks for mouse support so
	that we don't try to enable it if the current gnuplot doesn't
	really support it.  Also added checks so that we don't try to
	enable persist under Windows (where Gnuplot doesn't recognize the
	option).

	* IPython/iplib.py (InteractiveShell.interact): Added optional
	auto-indenting code, after a patch by King C. Shu
	<kingshu-AT-myrealbox.com>. It's off by default because it doesn't
	get along well with pasting indented code.  If I ever figure out
	how to make that part go well, it will become on by default.

	* IPython/Prompts.py (Prompt1.auto_rewrite): Fixed bug which would
	crash ipython if there was an unmatched '%' in the user's prompt
	string.  Reported by Thorsten Kampe <thorsten-AT-thorstenkampe.de>.
	
	* IPython/iplib.py (InteractiveShell.interact): removed the
	ability to ask the user whether he wants to crash or not at the
	'last line' exception handler.  Calling functions at that point
	changes the stack, and the error reports would have incorrect
	tracebacks.

	* IPython/Magic.py (Magic.magic_page): Added new @page magic, to
	pass through a peger a pretty-printed form of any object.  After a
	contribution by Olivier Aubert <oaubert-AT-bat710.univ-lyon1.fr>

2003-04-14  Fernando Perez  <fperez@colorado.edu>

	* IPython/iplib.py (InteractiveShell.user_setup): Fixed bug where
	all files in ~ would be modified at first install (instead of
	~/.ipython).  This could be potentially disastrous, as the
	modification (make line-endings native) could damage binary files.
	
2003-04-10  Fernando Perez  <fperez@colorado.edu>

	* IPython/iplib.py (InteractiveShell.handle_help): Modified to
	handle only lines which are invalid python.  This now means that
	lines like 'x=1 #?' execute properly.  Thanks to Jeffery Collins
	for the bug report.

2003-04-01  Fernando Perez  <fperez@colorado.edu>

	* IPython/iplib.py (InteractiveShell.showtraceback): Fixed bug
	where failing to set sys.last_traceback would crash pdb.pm().
	Thanks to Jeffery D. Collins <Jeff.Collins-AT-vexcel.com> for the bug
	report.

2003-03-25  Fernando Perez  <fperez@colorado.edu>

	* IPython/Magic.py (Magic.magic_prun): rstrip() output of profiler
	before printing it (it had a lot of spurious blank lines at the
	end).

	* IPython/Gnuplot2.py (Gnuplot.hardcopy): fixed bug where lpr
	output would be sent 21 times!  Obviously people don't use this
	too often, or I would have heard about it.

2003-03-24  Fernando Perez  <fperez@colorado.edu>

	* setup.py (scriptfiles): renamed the data_files parameter from
	'base' to 'data' to fix rpm build issues.  Thanks to Ralf Ahlbrink
	for the patch.

2003-03-20  Fernando Perez  <fperez@colorado.edu>

	* IPython/genutils.py (error): added error() and fatal()
	functions.

2003-03-18  *** Released version 0.2.15pre3

2003-03-18  Fernando Perez  <fperez@colorado.edu>

	* setupext/install_data_ext.py
	(install_data_ext.initialize_options): Class contributed by Jack
	Moffit for fixing the old distutils hack.  He is sending this to
	the distutils folks so in the future we may not need it as a
	private fix.

	* MANIFEST.in: Extensive reorganization, based on Jack Moffit's
	changes for Debian packaging.  See his patch for full details.
	The old distutils hack of making the ipythonrc* files carry a
	bogus .py extension is gone, at last.  Examples were moved to a
	separate subdir under doc/, and the separate executable scripts
	now live in their own directory.  Overall a great cleanup.  The
	manual was updated to use the new files, and setup.py has been
	fixed for this setup.

	* IPython/PyColorize.py (Parser.usage): made non-executable and
	created a pycolor wrapper around it to be included as a script.

2003-03-12  *** Released version 0.2.15pre2

2003-03-12  Fernando Perez  <fperez@colorado.edu>

	* IPython/ColorANSI.py (make_color_table): Finally fixed the
	long-standing problem with garbage characters in some terminals.
	The issue was really that the \001 and \002 escapes must _only_ be
	passed to input prompts (which call readline), but _never_ to
	normal text to be printed on screen.  I changed ColorANSI to have
	two classes: TermColors and InputTermColors, each with the
	appropriate escapes for input prompts or normal text.  The code in
	Prompts.py got slightly more complicated, but this very old and
	annoying bug is finally fixed.  

	All the credit for nailing down the real origin of this problem
	and the correct solution goes to Jack Moffit <jack-AT-xiph.org>.
	*Many* thanks to him for spending quite a bit of effort on this.

2003-03-05  *** Released version 0.2.15pre1

2003-03-03  Fernando Perez  <fperez@colorado.edu>

	* IPython/FakeModule.py: Moved the former _FakeModule to a
	separate file, because it's also needed by Magic (to fix a similar
	pickle-related issue in @run).

2003-03-02  Fernando Perez  <fperez@colorado.edu>

	* IPython/Magic.py (Magic.magic_autocall): new magic to control
	the autocall option at runtime.
	(Magic.magic_dhist): changed self.user_ns to self.shell.user_ns
	across Magic.py to start separating Magic from InteractiveShell.
	(Magic._ofind): Fixed to return proper namespace for dotted
	names. Before, a dotted name would always return 'not currently
	defined', because it would find the 'parent'. s.x would be found,
	but since 'x' isn't defined by itself, it would get confused.
	(Magic.magic_run): Fixed pickling problems reported by Ralf
	Ahlbrink <RAhlbrink-AT-RosenInspection.net>.  The fix was similar to
	that I'd used when Mike Heeter reported similar issues at the
	top-level, but now for @run.  It boils down to injecting the
	namespace where code is being executed with something that looks
	enough like a module to fool pickle.dump().  Since a pickle stores
	a named reference to the importing module, we need this for
	pickles to save something sensible.

	* IPython/ipmaker.py (make_IPython): added an autocall option.

	* IPython/iplib.py (InteractiveShell._prefilter): reordered all of
	the auto-eval code.  Now autocalling is an option, and the code is
	also vastly safer.  There is no more eval() involved at all.

2003-03-01  Fernando Perez  <fperez@colorado.edu>

	* IPython/Magic.py (Magic._ofind): Changed interface to return a
	dict with named keys instead of a tuple.

	* IPython: Started using CVS for IPython as of 0.2.15pre1.

	* setup.py (make_shortcut): Fixed message about directories
	created during Windows installation (the directories were ok, just
	the printed message was misleading).  Thanks to Chris Liechti
	<cliechti-AT-gmx.net> for the heads up.

2003-02-21  Fernando Perez  <fperez@colorado.edu>

	* IPython/iplib.py (InteractiveShell._prefilter): Fixed catching
	of ValueError exception when checking for auto-execution.  This
	one is raised by things like Numeric arrays arr.flat when the
	array is non-contiguous.

2003-01-31  Fernando Perez  <fperez@colorado.edu>

	* IPython/genutils.py (SystemExec.bq): Fixed bug where bq would
	not return any value at all (even though the command would get
	executed).
	(xsys): Flush stdout right after printing the command to ensure
	proper ordering of commands and command output in the total
	output.
	(SystemExec/xsys/bq): Switched the names of xsys/bq and
	system/getoutput as defaults.  The old ones are kept for
	compatibility reasons, so no code which uses this library needs
	changing.

2003-01-27  *** Released version 0.2.14

2003-01-25  Fernando Perez  <fperez@colorado.edu>

	* IPython/Magic.py (Magic.magic_edit): Fixed problem where
	functions defined in previous edit sessions could not be re-edited
	(because the temp files were immediately removed).  Now temp files
	are removed only at IPython's exit.
	(Magic.magic_run): Improved @run to perform shell-like expansions
	on its arguments (~users and $VARS).  With this, @run becomes more
	like a normal command-line.

	* IPython/Shell.py (IPShellEmbed.__call__): Fixed a bunch of small
	bugs related to embedding and cleaned up that code.  A fairly
	important one was the impossibility to access the global namespace
	through the embedded IPython (only local variables were visible).

2003-01-14  Fernando Perez  <fperez@colorado.edu>

	* IPython/iplib.py (InteractiveShell._prefilter): Fixed
	auto-calling to be a bit more conservative.  Now it doesn't get
	triggered if any of '!=()<>' are in the rest of the input line, to
	allow comparing callables.  Thanks to Alex for the heads up.

2003-01-07  Fernando Perez  <fperez@colorado.edu>

	* IPython/genutils.py (page): fixed estimation of the number of
	lines in a string to be paged to simply count newlines. This
	prevents over-guessing due to embedded escape sequences. A better
	long-term solution would involve stripping out the control chars
	for the count, but it's potentially so expensive I just don't
	think it's worth doing.

2002-12-19  *** Released version 0.2.14pre50

2002-12-19  Fernando Perez  <fperez@colorado.edu>

	* tools/release (version): Changed release scripts to inform
	Andrea and build a NEWS file with a list of recent changes.

	* IPython/ColorANSI.py (__all__): changed terminal detection
	code. Seems to work better for xterms without breaking
	konsole. Will need more testing to determine if WinXP and Mac OSX
	also work ok.

2002-12-18  *** Released version 0.2.14pre49

2002-12-18  Fernando Perez  <fperez@colorado.edu>

	* Docs: added new info about Mac OSX, from Andrea.

	* IPython/Gnuplot2.py (String): Added a String PlotItem class to
	allow direct plotting of python strings whose format is the same
	of gnuplot data files.

2002-12-16  Fernando Perez  <fperez@colorado.edu>

	* IPython/iplib.py (InteractiveShell.interact): fixed default (y)
	value of exit question to be acknowledged.

2002-12-03  Fernando Perez  <fperez@colorado.edu>

	* IPython/ipmaker.py: removed generators, which had been added
	by mistake in an earlier debugging run. This was causing trouble
	to users of python 2.1.x. Thanks to Abel Daniel <abli-AT-freemail.hu>
	for pointing this out.

2002-11-17  Fernando Perez  <fperez@colorado.edu>

	* Manual: updated the Gnuplot section.

	* IPython/GnuplotRuntime.py: refactored a lot all this code, with
	a much better split of what goes in Runtime and what goes in
	Interactive.

	* IPython/ipmaker.py: fixed bug where import_fail_info wasn't
	being imported from iplib.

	* IPython/GnuplotInteractive.py (magic_gpc): renamed @gp to @gpc
	for command-passing. Now the global Gnuplot instance is called
	'gp' instead of 'g', which was really a far too fragile and
	common name.

	* IPython/Gnuplot2.py (eps_fix_bbox): added this to fix broken
	bounding boxes generated by Gnuplot for square plots.

	* IPython/genutils.py (popkey): new function added. I should
	suggest this on c.l.py as a dict method, it seems useful.

	* IPython/Gnuplot2.py (Gnuplot.plot): Overhauled plot and replot
	to transparently handle PostScript generation. MUCH better than
	the previous plot_eps/replot_eps (which I removed now). The code
	is also fairly clean and well documented now (including
	docstrings).

2002-11-13  Fernando Perez  <fperez@colorado.edu>

	* IPython/Magic.py (Magic.magic_edit): fixed docstring
	(inconsistent with options).

	* IPython/Gnuplot2.py (Gnuplot.hardcopy): hardcopy had been
	manually disabled, I don't know why. Fixed it.
	(Gnuplot._plot_eps): added new plot_eps/replot_eps to get directly
	eps output.

2002-11-12  Fernando Perez  <fperez@colorado.edu>

	* IPython/genutils.py (ask_yes_no): trap EOF and ^C so that they
	don't propagate up to caller. Fixes crash reported by François
	Pinard.

2002-11-09  Fernando Perez  <fperez@colorado.edu>

	* IPython/ipmaker.py (make_IPython): fixed problem with writing
	history file for new users.
	(make_IPython): fixed bug where initial install would leave the
	user running in the .ipython dir.
	(make_IPython): fixed bug where config dir .ipython would be
	created regardless of the given -ipythondir option. Thanks to Cory
	Dodt <cdodt-AT-fcoe.k12.ca.us> for the bug report.

	* IPython/genutils.py (ask_yes_no): new function for asking yes/no
	type confirmations. Will need to use it in all of IPython's code
	consistently.
	
	* IPython/CrashHandler.py (CrashHandler.__call__): changed the
	context to print 31 lines instead of the default 5. This will make
	the crash reports extremely detailed in case the problem is in
	libraries I don't have access to.

	* IPython/iplib.py (InteractiveShell.interact): changed the 'last
	line of defense' code to still crash, but giving users fair
	warning. I don't want internal errors to go unreported: if there's
	an internal problem, IPython should crash and generate a full
	report.

2002-11-08  Fernando Perez  <fperez@colorado.edu>

	* IPython/iplib.py (InteractiveShell.interact): added code to trap
	otherwise uncaught exceptions which can appear if people set
	sys.stdout to something badly broken. Thanks to a crash report
	from henni-AT-mail.brainbot.com.

2002-11-04  Fernando Perez  <fperez@colorado.edu>

	* IPython/iplib.py (InteractiveShell.interact): added
	__IPYTHON__active to the builtins. It's a flag which goes on when
	the interaction starts and goes off again when it stops. This
	allows embedding code to detect being inside IPython. Before this
	was done via __IPYTHON__, but that only shows that an IPython
	instance has been created.

	* IPython/Magic.py (Magic.magic_env): I realized that in a
	UserDict, instance.data holds the data as a normal dict. So I
	modified @env to return os.environ.data instead of rebuilding a
	dict by hand.

2002-11-02  Fernando Perez  <fperez@colorado.edu>

	* IPython/genutils.py (warn): changed so that level 1 prints no
	header. Level 2 is now the default (with 'WARNING' header, as
	before). I think I tracked all places where changes were needed in
	IPython, but outside code using the old level numbering may have
	broken.

	* IPython/iplib.py (InteractiveShell.runcode): added this to
	handle the tracebacks in SystemExit traps correctly. The previous
	code (through interact) was printing more of the stack than
	necessary, showing IPython internal code to the user.

	* IPython/UserConfig/ipythonrc.py: Made confirm_exit 1 by
	default. Now that the default at the confirmation prompt is yes,
	it's not so intrusive. François' argument that ipython sessions
	tend to be complex enough not to lose them from an accidental C-d,
	is a valid one.

	* IPython/iplib.py (InteractiveShell.interact): added a
	showtraceback() call to the SystemExit trap, and modified the exit
	confirmation to have yes as the default.

	* IPython/UserConfig/ipythonrc.py: removed 'session' option from
	this file. It's been gone from the code for a long time, this was
	simply leftover junk.

2002-11-01  Fernando Perez  <fperez@colorado.edu>

	* IPython/UserConfig/ipythonrc.py: new confirm_exit option
	added. If set, IPython now traps EOF and asks for
	confirmation. After a request by François Pinard.

	* IPython/Magic.py (Magic.magic_Exit): New @Exit and @Quit instead
	of @abort, and with a new (better) mechanism for handling the
	exceptions.

2002-10-27  Fernando Perez  <fperez@colorado.edu>

	* IPython/usage.py (__doc__): updated the --help information and
	the ipythonrc file to indicate that -log generates
	./ipython.log. Also fixed the corresponding info in @logstart.
	This and several other fixes in the manuals thanks to reports by
	François Pinard <pinard-AT-iro.umontreal.ca>.
	
	* IPython/Logger.py (Logger.switch_log): Fixed error message to
	refer to @logstart (instead of @log, which doesn't exist).

	* IPython/iplib.py (InteractiveShell._prefilter): fixed
	AttributeError crash. Thanks to Christopher Armstrong
	<radix-AT-twistedmatrix.com> for the report/fix. This bug had been
	introduced recently (in 0.2.14pre37) with the fix to the eval
	problem mentioned below.
	
2002-10-17  Fernando Perez  <fperez@colorado.edu>

	* IPython/ConfigLoader.py (ConfigLoader.load): Fixes for Windows
	installation. Thanks to Leonardo Santagada <retype-AT-terra.com.br>.

	* IPython/iplib.py (InteractiveShell._prefilter): Many changes to
	this function to fix a problem reported by Alex Schmolck. He saw
	it with list comprehensions and generators, which were getting
	called twice. The real problem was an 'eval' call in testing for
	automagic which was evaluating the input line silently. 

	This is a potentially very nasty bug, if the input has side
	effects which must not be repeated. The code is much cleaner now,
	without any blanket 'except' left and with a regexp test for
	actual function names. 

	But an eval remains, which I'm not fully comfortable with. I just
	don't know how to find out if an expression could be a callable in
	the user's namespace without doing an eval on the string. However
	that string is now much more strictly checked so that no code
	slips by, so the eval should only happen for things that can
	really be only function/method names.

2002-10-15  Fernando Perez  <fperez@colorado.edu>

	* Updated LyX to 1.2.1 so I can work on the docs again. Added Mac
	OSX information to main manual, removed README_Mac_OSX file from
	distribution. Also updated credits for recent additions.

2002-10-10  Fernando Perez  <fperez@colorado.edu>

	* README_Mac_OSX: Added a README for Mac OSX users for fixing
	terminal-related issues. Many thanks to Andrea Riciputi
	<andrea.riciputi-AT-libero.it> for writing it.

	* IPython/UserConfig/ipythonrc.py: Fixes to various small issues,
	thanks to Thorsten Kampe <thorsten-AT-thorstenkampe.de>.

	* setup.py (make_shortcut): Fixes for Windows installation. Thanks
	to Fredrik Kant <fredrik.kant-AT-front.com> and Syver Enstad
	<syver-en-AT-online.no> who both submitted patches for this problem.

	* IPython/iplib.py (InteractiveShell.embed_mainloop): Patch for
	global embedding to make sure that things don't overwrite user
	globals accidentally. Thanks to Richard <rxe-AT-renre-europe.com>

	* IPython/Gnuplot2.py (gp): Patch for Gnuplot.py 1.6
	compatibility. Thanks to Hayden Callow
	<h.callow-AT-elec.canterbury.ac.nz>

2002-10-04  Fernando Perez  <fperez@colorado.edu>

	* IPython/Gnuplot2.py (PlotItem): Added 'index' option for
	Gnuplot.File objects.
	      
2002-07-23  Fernando Perez  <fperez@colorado.edu>

	* IPython/genutils.py (timing): Added timings() and timing() for
	quick access to the most commonly needed data, the execution
	times. Old timing() renamed to timings_out().

2002-07-18  Fernando Perez  <fperez@colorado.edu>

	* IPython/Shell.py (IPShellEmbed.restore_system_completer): fixed
	bug with nested instances disrupting the parent's tab completion.

	* IPython/iplib.py (all_completions): Added Alex Schmolck's
	all_completions code to begin the emacs integration.

	* IPython/Gnuplot2.py (zip_items): Added optional 'titles'
	argument to allow titling individual arrays when plotting.

2002-07-15  Fernando Perez  <fperez@colorado.edu>

	* setup.py (make_shortcut): changed to retrieve the value of
	'Program Files' directory from the registry (this value changes in
	non-english versions of Windows). Thanks to Thomas Fanslau
	<tfanslau-AT-gmx.de> for the report.

2002-07-10  Fernando Perez  <fperez@colorado.edu>

	* IPython/ultraTB.py (VerboseTB.debugger): enabled workaround for
	a bug in pdb, which crashes if a line with only whitespace is
	entered. Bug report submitted to sourceforge.

2002-07-09  Fernando Perez  <fperez@colorado.edu>

	* IPython/ultraTB.py (VerboseTB.nullrepr): fixed rare crash when
	reporting exceptions (it's a bug in inspect.py, I just set a
	workaround).

2002-07-08  Fernando Perez  <fperez@colorado.edu>

	* IPython/iplib.py (InteractiveShell.__init__): fixed reference to
	__IPYTHON__ in __builtins__ to show up in user_ns.

2002-07-03  Fernando Perez  <fperez@colorado.edu>

	* IPython/GnuplotInteractive.py (magic_gp_set_default): changed
	name from @gp_set_instance to @gp_set_default.

	* IPython/ipmaker.py (make_IPython): default editor value set to
	'0' (a string), to match the rc file. Otherwise will crash when
	.strip() is called on it.
	

2002-06-28  Fernando Perez  <fperez@colorado.edu>

	* IPython/iplib.py (InteractiveShell.safe_execfile): fix importing
	of files in current directory when a file is executed via
	@run. Patch also by RA <ralf_ahlbrink-AT-web.de>.

	* setup.py (manfiles): fix for rpm builds, submitted by RA
	<ralf_ahlbrink-AT-web.de>. Now we have RPMs!

	* IPython/ipmaker.py (make_IPython): fixed lookup of default
	editor when set to '0'. Problem was, '0' evaluates to True (it's a
	string!). A. Schmolck caught this one.

2002-06-27  Fernando Perez  <fperez@colorado.edu>

	* IPython/ipmaker.py (make_IPython): fixed bug when running user
	defined files at the cmd line. __name__ wasn't being set to
	__main__.

	* IPython/Gnuplot2.py (zip_items): improved it so it can plot also
	regular lists and tuples besides Numeric arrays.

	* IPython/Prompts.py (CachedOutput.__call__): Added output
	supression for input ending with ';'. Similar to Mathematica and
	Matlab. The _* vars and Out[] list are still updated, just like
	Mathematica behaves.

2002-06-25  Fernando Perez  <fperez@colorado.edu>

	* IPython/ConfigLoader.py (ConfigLoader.load): fixed checking of
	.ini extensions for profiels under Windows.

	* IPython/OInspect.py (Inspector.pinfo): improved alignment of
	string form. Fix contributed by Alexander Schmolck
	<a.schmolck-AT-gmx.net>

	* IPython/GnuplotRuntime.py (gp_new): new function. Returns a
	pre-configured Gnuplot instance.

2002-06-21  Fernando Perez  <fperez@colorado.edu>

	* IPython/numutils.py (exp_safe): new function, works around the
	underflow problems in Numeric.
	(log2): New fn. Safe log in base 2: returns exact integer answer
	for exact integer powers of 2.

	* IPython/Magic.py (get_py_filename): fixed it not expanding '~'
	properly.

2002-06-20  Fernando Perez  <fperez@colorado.edu>

	* IPython/genutils.py (timing): new function like
	Mathematica's. Similar to time_test, but returns more info.

2002-06-18  Fernando Perez  <fperez@colorado.edu>

	* IPython/Magic.py (Magic.magic_save): modified @save and @r
	according to Mike Heeter's suggestions.

2002-06-16  Fernando Perez  <fperez@colorado.edu>

	* IPython/GnuplotRuntime.py: Massive overhaul to the Gnuplot
	system. GnuplotMagic is gone as a user-directory option. New files
	make it easier to use all the gnuplot stuff both from external
	programs as well as from IPython. Had to rewrite part of
	hardcopy() b/c of a strange bug: often the ps files simply don't
	get created, and require a repeat of the command (often several
	times).

	* IPython/ultraTB.py (AutoFormattedTB.__call__): changed to
	resolve output channel at call time, so that if sys.stderr has
	been redirected by user this gets honored.

2002-06-13  Fernando Perez  <fperez@colorado.edu>

	* IPython/Shell.py (IPShell.__init__): Changed IPythonShell to
	IPShell. Kept a copy with the old names to avoid breaking people's
	embedded code.

	* IPython/ipython: simplified it to the bare minimum after
	Holger's suggestions. Added info about how to use it in
	PYTHONSTARTUP.

	* IPython/Shell.py (IPythonShell): changed the options passing
	from a string with funky %s replacements to a straight list. Maybe
	a bit more typing, but it follows sys.argv conventions, so there's
	less special-casing to remember.

2002-06-12  Fernando Perez  <fperez@colorado.edu>

	* IPython/Magic.py (Magic.magic_r): new magic auto-repeat
	command. Thanks to a suggestion by Mike Heeter.
	(Magic.magic_pfile): added behavior to look at filenames if given
	arg is not a defined object.
	(Magic.magic_save): New @save function to save code snippets. Also
	a Mike Heeter idea.

	* IPython/UserConfig/GnuplotMagic.py (plot): Improvements to
	plot() and replot(). Much more convenient now, especially for
	interactive use.

	* IPython/Magic.py (Magic.magic_run): Added .py automatically to
	filenames.

2002-06-02  Fernando Perez  <fperez@colorado.edu>

	* IPython/Struct.py (Struct.__init__): modified to admit
	initialization via another struct.

	* IPython/genutils.py (SystemExec.__init__): New stateful
	interface to xsys and bq. Useful for writing system scripts.

2002-05-30  Fernando Perez  <fperez@colorado.edu>

	* MANIFEST.in: Changed docfile selection to exclude all the lyx
	documents. This will make the user download smaller (it's getting
	too big).

2002-05-29  Fernando Perez  <fperez@colorado.edu>

	* IPython/iplib.py (_FakeModule.__init__): New class introduced to
	fix problems with shelve and pickle. Seems to work, but I don't
	know if corner cases break it. Thanks to Mike Heeter
	<korora-AT-SDF.LONESTAR.ORG> for the bug reports and test cases.

2002-05-24  Fernando Perez  <fperez@colorado.edu>

	* IPython/Magic.py (Macro.__init__): fixed magics embedded in
	macros having broken.

2002-05-21  Fernando Perez  <fperez@colorado.edu>

	* IPython/Magic.py (Magic.magic_logstart): fixed recently
	introduced logging bug: all history before logging started was
	being written one character per line! This came from the redesign
	of the input history as a special list which slices to strings,
	not to lists.

2002-05-20  Fernando Perez  <fperez@colorado.edu>

	* IPython/Prompts.py (CachedOutput.__init__): made the color table
	be an attribute of all classes in this module. The design of these
	classes needs some serious overhauling.

	* IPython/DPyGetOpt.py (DPyGetOpt.setPosixCompliance): fixed bug
	which was ignoring '_' in option names.

	* IPython/ultraTB.py (FormattedTB.__init__): Changed
	'Verbose_novars' to 'Context' and made it the new default. It's a
	bit more readable and also safer than verbose.

	* IPython/PyColorize.py (Parser.__call__): Fixed coloring of
	triple-quoted strings.

	* IPython/OInspect.py (__all__): new module exposing the object
	introspection facilities. Now the corresponding magics are dummy
	wrappers around this. Having this module will make it much easier
	to put these functions into our modified pdb.
	This new object inspector system uses the new colorizing module,
	so source code and other things are nicely syntax highlighted.

2002-05-18  Fernando Perez  <fperez@colorado.edu>

	* IPython/ColorANSI.py: Split the coloring tools into a separate
	module so I can use them in other code easier (they were part of
	ultraTB).

2002-05-17  Fernando Perez  <fperez@colorado.edu>

	* IPython/UserConfig/GnuplotMagic.py (magic_gp_set_instance):
	fixed it to set the global 'g' also to the called instance, as
	long as 'g' was still a gnuplot instance (so it doesn't overwrite
	user's 'g' variables).

	* IPython/iplib.py (InteractiveShell.__init__): Added In/Out
	global variables (aliases to _ih,_oh) so that users which expect
	In[5] or Out[7] to work aren't unpleasantly surprised.
	(InputList.__getslice__): new class to allow executing slices of
	input history directly. Very simple class, complements the use of
	macros.

2002-05-16  Fernando Perez  <fperez@colorado.edu>

	* setup.py (docdirbase): make doc directory be just doc/IPython
	without version numbers, it will reduce clutter for users.

	* IPython/Magic.py (Magic.magic_run): Add explicit local dict to
	execfile call to prevent possible memory leak. See for details:
	http://mail.python.org/pipermail/python-list/2002-February/088476.html

2002-05-15  Fernando Perez  <fperez@colorado.edu>

	* IPython/Magic.py (Magic.magic_psource): made the object
	introspection names be more standard: pdoc, pdef, pfile and
	psource. They all print/page their output, and it makes
	remembering them easier. Kept old names for compatibility as
	aliases.

2002-05-14  Fernando Perez  <fperez@colorado.edu>

	* IPython/UserConfig/GnuplotMagic.py: I think I finally understood
	what the mouse problem was. The trick is to use gnuplot with temp
	files and NOT with pipes (for data communication), because having
	both pipes and the mouse on is bad news.

2002-05-13  Fernando Perez  <fperez@colorado.edu>

	* IPython/Magic.py (Magic._ofind): fixed namespace order search
	bug. Information would be reported about builtins even when
	user-defined functions overrode them.

2002-05-11  Fernando Perez  <fperez@colorado.edu>

	* IPython/__init__.py (__all__): removed FlexCompleter from
	__all__ so that things don't fail in platforms without readline.

2002-05-10  Fernando Perez  <fperez@colorado.edu>

	* IPython/__init__.py (__all__): removed numutils from __all__ b/c
	it requires Numeric, effectively making Numeric a dependency for
	IPython.

	* Released 0.2.13

	* IPython/Magic.py (Magic.magic_prun): big overhaul to the
	profiler interface. Now all the major options from the profiler
	module are directly supported in IPython, both for single
	expressions (@prun) and for full programs (@run -p).

2002-05-09  Fernando Perez  <fperez@colorado.edu>

	* IPython/Magic.py (Magic.magic_doc): fixed to show docstrings of
	magic properly formatted for screen.

	* setup.py (make_shortcut): Changed things to put pdf version in
	doc/ instead of doc/manual (had to change lyxport a bit).

	* IPython/Magic.py (Profile.string_stats): made profile runs go
	through pager (they are long and a pager allows searching, saving,
	etc.)

2002-05-08  Fernando Perez  <fperez@colorado.edu>

	* Released 0.2.12

2002-05-06  Fernando Perez  <fperez@colorado.edu>

	* IPython/Magic.py (Magic.magic_hist): small bug fixed (recently
	introduced); 'hist n1 n2' was broken.
	(Magic.magic_pdb): added optional on/off arguments to @pdb
	(Magic.magic_run): added option -i to @run, which executes code in
	the IPython namespace instead of a clean one. Also added @irun as
	an alias to @run -i.

	* IPython/UserConfig/GnuplotMagic.py (magic_gp_set_instance):
	fixed (it didn't really do anything, the namespaces were wrong).

	* IPython/Debugger.py (__init__): Added workaround for python 2.1

	* IPython/__init__.py (__all__): Fixed package namespace, now
	'import IPython' does give access to IPython.<all> as
	expected. Also renamed __release__ to Release.

	* IPython/Debugger.py (__license__): created new Pdb class which
	functions like a drop-in for the normal pdb.Pdb but does NOT
	import readline by default. This way it doesn't muck up IPython's
	readline handling, and now tab-completion finally works in the
	debugger -- sort of. It completes things globally visible, but the
	completer doesn't track the stack as pdb walks it. That's a bit
	tricky, and I'll have to implement it later.

2002-05-05  Fernando Perez  <fperez@colorado.edu>

	* IPython/Magic.py (Magic.magic_oinfo): fixed formatting bug for
	magic docstrings when printed via ? (explicit \'s were being
	printed).

	* IPython/ipmaker.py (make_IPython): fixed namespace
	identification bug. Now variables loaded via logs or command-line
	files are recognized in the interactive namespace by @who.

	* IPython/iplib.py (InteractiveShell.safe_execfile): Fixed bug in
	log replay system stemming from the string form of Structs.

	* IPython/Magic.py (Macro.__init__): improved macros to properly
	handle magic commands in them.
	(Magic.magic_logstart): usernames are now expanded so 'logstart
	~/mylog' now works.

	* IPython/iplib.py (complete): fixed bug where paths starting with
	'/' would be completed as magic names.

2002-05-04  Fernando Perez  <fperez@colorado.edu>

	* IPython/Magic.py (Magic.magic_run): added options -p and -f to
	allow running full programs under the profiler's control.

	* IPython/ultraTB.py (FormattedTB.__init__): Added Verbose_novars
	mode to report exceptions verbosely but without formatting
	variables. This addresses the issue of ipython 'freezing' (it's
	not frozen, but caught in an expensive formatting loop) when huge
	variables are in the context of an exception.
	(VerboseTB.text): Added '--->' markers at line where exception was
	triggered. Much clearer to read, especially in NoColor modes.

	* IPython/Magic.py (Magic.magic_run): bugfix: -n option had been
	implemented in reverse when changing to the new parse_options().

2002-05-03  Fernando Perez  <fperez@colorado.edu>

	* IPython/Magic.py (Magic.parse_options): new function so that
	magics can parse options easier.
	(Magic.magic_prun): new function similar to profile.run(),
	suggested by Chris Hart.
	(Magic.magic_cd): fixed behavior so that it only changes if
	directory actually is in history.

	* IPython/usage.py (__doc__): added information about potential
	slowness of Verbose exception mode when there are huge data
	structures to be formatted (thanks to Archie Paulson).

	* IPython/ipmaker.py (make_IPython): Changed default logging
	(when simply called with -log) to use curr_dir/ipython.log in
	rotate mode. Fixed crash which was occuring with -log before
	(thanks to Jim Boyle).

2002-05-01  Fernando Perez  <fperez@colorado.edu>

	* Released 0.2.11 for these fixes (mainly the ultraTB one which
	was nasty -- though somewhat of a corner case).

	* IPython/ultraTB.py (AutoFormattedTB.text): renamed __text to
	text (was a bug).

2002-04-30  Fernando Perez  <fperez@colorado.edu>

	* IPython/UserConfig/GnuplotMagic.py (magic_gp): Minor fix to add
	a print after ^D or ^C from the user so that the In[] prompt
	doesn't over-run the gnuplot one.

2002-04-29  Fernando Perez  <fperez@colorado.edu>

	* Released 0.2.10

	* IPython/__release__.py (version): get date dynamically.

	* Misc. documentation updates thanks to Arnd's comments. Also ran
	a full spellcheck on the manual (hadn't been done in a while).

2002-04-27  Fernando Perez  <fperez@colorado.edu>

	* IPython/Magic.py (Magic.magic_logstart): Fixed bug where
	starting a log in mid-session would reset the input history list.

2002-04-26  Fernando Perez  <fperez@colorado.edu>

	* IPython/iplib.py (InteractiveShell.wait): Fixed bug where not
	all files were being included in an update. Now anything in
	UserConfig that matches [A-Za-z]*.py will go (this excludes
	__init__.py)

2002-04-25  Fernando Perez  <fperez@colorado.edu>

	* IPython/iplib.py (InteractiveShell.__init__): Added __IPYTHON__
	to __builtins__ so that any form of embedded or imported code can
	test for being inside IPython.

	* IPython/UserConfig/GnuplotMagic.py: (magic_gp_set_instance):
	changed to GnuplotMagic because it's now an importable module,
	this makes the name follow that of the standard Gnuplot module.
	GnuplotMagic can now be loaded at any time in mid-session.

2002-04-24  Fernando Perez  <fperez@colorado.edu>

	* IPython/numutils.py: removed SIUnits. It doesn't properly set
	the globals (IPython has its own namespace) and the
	PhysicalQuantity stuff is much better anyway.

	* IPython/UserConfig/example-gnuplot.py (g2): Added gnuplot
	embedding example to standard user directory for
	distribution. Also put it in the manual.

	* IPython/numutils.py (gnuplot_exec): Changed to take a gnuplot
	instance as first argument (so it doesn't rely on some obscure
	hidden global).

	* IPython/UserConfig/ipythonrc.py: put () back in accepted
	delimiters. While it prevents ().TAB from working, it allows
	completions in open (... expressions. This is by far a more common
	case.

2002-04-23  Fernando Perez  <fperez@colorado.edu>

	* IPython/Extensions/InterpreterPasteInput.py: new
	syntax-processing module for pasting lines with >>> or ... at the
	start.

	* IPython/Extensions/PhysicalQ_Interactive.py
	(PhysicalQuantityInteractive.__int__): fixed to work with either
	Numeric or math.

	* IPython/UserConfig/ipythonrc-numeric.py: reorganized the
	provided profiles. Now we have:
	-math -> math module as * and cmath with its own namespace.
	-numeric -> Numeric as *, plus gnuplot & grace
	-physics -> same as before

	* IPython/Magic.py (Magic.magic_magic): Fixed bug where
	user-defined magics wouldn't be found by @magic if they were
	defined as class methods. Also cleaned up the namespace search
	logic and the string building (to use %s instead of many repeated
	string adds).

	* IPython/UserConfig/example-magic.py (magic_foo): updated example
	of user-defined magics to operate with class methods (cleaner, in
	line with the gnuplot code).

2002-04-22  Fernando Perez  <fperez@colorado.edu>

	* setup.py: updated dependency list so that manual is updated when
	all included files change.

	* IPython/ipmaker.py (make_IPython): Fixed bug which was ignoring
	the delimiter removal option (the fix is ugly right now).

	* IPython/UserConfig/ipythonrc-physics.py: simplified not to load
	all of the math profile (quicker loading, no conflict between
	g-9.8 and g-gnuplot).

	* IPython/CrashHandler.py (CrashHandler.__call__): changed default
	name of post-mortem files to IPython_crash_report.txt.

	* Cleanup/update of the docs. Added all the new readline info and
	formatted all lists as 'real lists'.

	* IPython/ipmaker.py (make_IPython): removed now-obsolete
	tab-completion options, since the full readline parse_and_bind is
	now accessible.

	* IPython/iplib.py (InteractiveShell.init_readline): Changed
	handling of readline options. Now users can specify any string to
	be passed to parse_and_bind(), as well as the delimiters to be
	removed.
	(InteractiveShell.__init__): Added __name__ to the global
	namespace so that things like Itpl which rely on its existence
	don't crash.
	(InteractiveShell._prefilter): Defined the default with a _ so
	that prefilter() is easier to override, while the default one
	remains available.

2002-04-18  Fernando Perez  <fperez@colorado.edu>

	* Added information about pdb in the docs.

2002-04-17  Fernando Perez  <fperez@colorado.edu>

	* IPython/ipmaker.py (make_IPython): added rc_override option to
	allow passing config options at creation time which may override
	anything set in the config files or command line. This is
	particularly useful for configuring embedded instances.

2002-04-15  Fernando Perez  <fperez@colorado.edu>

	* IPython/Logger.py (Logger.log): Fixed a nasty bug which could
	crash embedded instances because of the input cache falling out of
	sync with the output counter.

	* IPython/Shell.py (IPythonShellEmbed.__init__): added a debug
	mode which calls pdb after an uncaught exception in IPython itself.

2002-04-14  Fernando Perez  <fperez@colorado.edu>

	* IPython/iplib.py (InteractiveShell.showtraceback): pdb mucks up
	readline, fix it back after each call.

	* IPython/ultraTB.py (AutoFormattedTB.__text): made text a private
	method to force all access via __call__(), which guarantees that
	traceback references are properly deleted.

	* IPython/Prompts.py (CachedOutput._display): minor fixes to
	improve printing when pprint is in use.

2002-04-13  Fernando Perez  <fperez@colorado.edu>

	* IPython/Shell.py (IPythonShellEmbed.__call__): SystemExit
	exceptions aren't caught anymore. If the user triggers one, he
	should know why he's doing it and it should go all the way up,
	just like any other exception. So now @abort will fully kill the
	embedded interpreter and the embedding code (unless that happens
	to catch SystemExit).

	* IPython/ultraTB.py (VerboseTB.__init__): added a call_pdb flag
	and a debugger() method to invoke the interactive pdb debugger
	after printing exception information. Also added the corresponding
	-pdb option and @pdb magic to control this feature, and updated
	the docs. After a suggestion from Christopher Hart
	(hart-AT-caltech.edu).

2002-04-12  Fernando Perez  <fperez@colorado.edu>

	* IPython/Shell.py (IPythonShellEmbed.__init__): modified to use
	the exception handlers defined by the user (not the CrashHandler)
	so that user exceptions don't trigger an ipython bug report.

	* IPython/ultraTB.py (ColorTB.__init__): made the color scheme
	configurable (it should have always been so).

2002-03-26  Fernando Perez  <fperez@colorado.edu>

	* IPython/Shell.py (IPythonShellEmbed.__call__): many changes here
	and there to fix embedding namespace issues. This should all be
	done in a more elegant way.

2002-03-25  Fernando Perez  <fperez@colorado.edu>

	* IPython/genutils.py (get_home_dir): Try to make it work under
	win9x also.

2002-03-20  Fernando Perez  <fperez@colorado.edu>

	* IPython/Shell.py (IPythonShellEmbed.__init__): leave
	sys.displayhook untouched upon __init__.

2002-03-19  Fernando Perez  <fperez@colorado.edu>

	* Released 0.2.9 (for embedding bug, basically).

	* IPython/Shell.py (IPythonShellEmbed.__call__): Trap SystemExit
	exceptions so that enclosing shell's state can be restored.

	* Changed magic_gnuplot.py to magic-gnuplot.py to standardize
	naming conventions in the .ipython/ dir.

	* IPython/iplib.py (InteractiveShell.init_readline): removed '-'
	from delimiters list so filenames with - in them get expanded.

	* IPython/Shell.py (IPythonShellEmbed.__call__): fixed bug with
	sys.displayhook not being properly restored after an embedded call.

 2002-03-18  Fernando Perez  <fperez@colorado.edu>

	* Released 0.2.8

	* IPython/iplib.py (InteractiveShell.user_setup): fixed bug where
	some files weren't being included in a -upgrade.
	(InteractiveShell.init_readline): Added 'set show-all-if-ambiguous
	on' so that the first tab completes.
	(InteractiveShell.handle_magic): fixed bug with spaces around
	quotes breaking many magic commands.

	* setup.py: added note about ignoring the syntax error messages at
	installation.

	* IPython/UserConfig/magic_gnuplot.py (magic_gp): finished
	streamlining the gnuplot interface, now there's only one magic @gp.

2002-03-17  Fernando Perez  <fperez@colorado.edu>

	* IPython/UserConfig/magic_gnuplot.py: new name for the
	example-magic_pm.py file. Much enhanced system, now with a shell
	for communicating directly with gnuplot, one command at a time.

	* IPython/Magic.py (Magic.magic_run): added option -n to prevent
	setting __name__=='__main__'.

	* IPython/UserConfig/example-magic_pm.py (magic_pm): Added
	mini-shell for accessing gnuplot from inside ipython. Should
	extend it later for grace access too. Inspired by Arnd's
	suggestion.

	* IPython/iplib.py (InteractiveShell.handle_magic): fixed bug when
	calling magic functions with () in their arguments. Thanks to Arnd
	Baecker for pointing this to me.

	* IPython/numutils.py (sum_flat): fixed bug. Would recurse
	infinitely for integer or complex arrays (only worked with floats).

2002-03-16  Fernando Perez  <fperez@colorado.edu>

	* setup.py: Merged setup and setup_windows into a single script
	which properly handles things for windows users.

2002-03-15  Fernando Perez  <fperez@colorado.edu>

	* Big change to the manual: now the magics are all automatically
	documented. This information is generated from their docstrings
	and put in a latex file included by the manual lyx file. This way
	we get always up to date information for the magics. The manual
	now also has proper version information, also auto-synced.

	For this to work, an undocumented --magic_docstrings option was added.

2002-03-13  Fernando Perez  <fperez@colorado.edu>

	* IPython/ultraTB.py (TermColors): fixed problem with dark colors
	under CDE terminals. An explicit ;2 color reset is needed in the escapes.

2002-03-12  Fernando Perez  <fperez@colorado.edu>

	* IPython/ultraTB.py (TermColors): changed color escapes again to
	fix the (old, reintroduced) line-wrapping bug. Basically, if
	\001..\002 aren't given in the color escapes, lines get wrapped
	weirdly. But giving those screws up old xterms and emacs terms. So
	I added some logic for emacs terms to be ok, but I can't identify old
	xterms separately ($TERM=='xterm' for many terminals, like konsole).

2002-03-10  Fernando Perez  <fperez@colorado.edu>

	* IPython/usage.py (__doc__): Various documentation cleanups and
	updates, both in usage docstrings and in the manual.

	* IPython/Prompts.py (CachedOutput.set_colors): cleanups for
	handling of caching. Set minimum acceptabe value for having a
	cache at 20 values.

	* IPython/iplib.py (InteractiveShell.user_setup): moved the
	install_first_time function to a method, renamed it and added an
	'upgrade' mode. Now people can update their config directory with
	a simple command line switch (-upgrade, also new).

	* IPython/Magic.py (Magic.magic_pfile): Made @pfile an alias to
	@file (convenient for automagic users under Python >= 2.2). 
	Removed @files (it seemed more like a plural than an abbrev. of
	'file show').

	* IPython/iplib.py (install_first_time): Fixed crash if there were
	backup files ('~') in .ipython/ install directory.

	* IPython/ipmaker.py (make_IPython): fixes for new prompt
	system. Things look fine, but these changes are fairly
	intrusive. Test them for a few days.

	* IPython/Prompts.py (CachedOutput.__init__): Massive rewrite of
	the prompts system. Now all in/out prompt strings are user
	controllable. This is particularly useful for embedding, as one
	can tag embedded instances with particular prompts. 

	Also removed global use of sys.ps1/2, which now allows nested
	embeddings without any problems. Added command-line options for
	the prompt strings.

2002-03-08  Fernando Perez  <fperez@colorado.edu>

	* IPython/UserConfig/example-embed-short.py (ipshell): added
	example file with the bare minimum code for embedding.

	* IPython/Shell.py (IPythonShellEmbed.set_dummy_mode): added
	functionality for the embeddable shell to be activated/deactivated
	either globally or at each call.

	* IPython/Prompts.py (Prompt1.auto_rewrite): Fixes the problem of
	rewriting the prompt with '--->' for auto-inputs with proper
	coloring. Now the previous UGLY hack in handle_auto() is gone, and
	this is handled by the prompts class itself, as it should.

2002-03-05  Fernando Perez  <fperez@colorado.edu>

	* IPython/Magic.py (Magic.magic_logstart): Changed @log to
	@logstart to avoid name clashes with the math log function.

	* Big updates to X/Emacs section of the manual.

	* Removed ipython_emacs. Milan explained to me how to pass
	arguments to ipython through Emacs. Some day I'm going to end up
	learning some lisp...

2002-03-04  Fernando Perez  <fperez@colorado.edu>

	* IPython/ipython_emacs: Created script to be used as the
	py-python-command Emacs variable so we can pass IPython
	parameters. I can't figure out how to tell Emacs directly to pass
	parameters to IPython, so a dummy shell script will do it.

	Other enhancements made for things to work better under Emacs'
	various types of terminals. Many thanks to Milan Zamazal
	<pdm-AT-zamazal.org> for all the suggestions and pointers.

2002-03-01  Fernando Perez  <fperez@colorado.edu>

	* IPython/ipmaker.py (make_IPython): added a --readline! option so
	that loading of readline is now optional. This gives better
	control to emacs users.

	* IPython/ultraTB.py (__date__): Modified color escape sequences
	and now things work fine under xterm and in Emacs' term buffers
	(though not shell ones). Well,  in emacs you get colors, but all
	seem to be 'light' colors (no difference between dark and light
	ones). But the garbage chars are gone, and also in xterms. It
	seems that now I'm using 'cleaner' ansi sequences.

2002-02-21  Fernando Perez  <fperez@colorado.edu>

	* Released 0.2.7 (mainly to publish the scoping fix).
	
	* IPython/Logger.py (Logger.logstate): added. A corresponding
	@logstate magic was created.

	* IPython/Magic.py: fixed nested scoping problem under Python
	2.1.x (automagic wasn't working).

2002-02-20  Fernando Perez  <fperez@colorado.edu>

	* Released 0.2.6.

	* IPython/OutputTrap.py (OutputTrap.__init__): added a 'quiet'
	option so that logs can come out without any headers at all.

	* IPython/UserConfig/ipythonrc-scipy.py: created a profile for
	SciPy.

	* IPython/iplib.py (InteractiveShell.embed_mainloop): Changed so
	that embedded IPython calls don't require vars() to be explicitly
	passed. Now they are extracted from the caller's frame (code
	snatched from Eric Jones' weave). Added better documentation to
	the section on embedding and the example file.

	* IPython/genutils.py (page): Changed so that under emacs, it just
	prints the string. You can then page up and down in the emacs
	buffer itself. This is how the builtin help() works.

	* IPython/Prompts.py (CachedOutput.__call__): Fixed issue with
	macro scoping: macros need to be executed in the user's namespace
	to work as if they had been typed by the user.

	* IPython/Magic.py (Magic.magic_macro): Changed macros so they
	execute automatically (no need to type 'exec...'). They then
	behave like 'true macros'. The printing system was also modified
	for this to work.

2002-02-19  Fernando Perez  <fperez@colorado.edu>

	* IPython/genutils.py (page_file): new function for paging files
	in an OS-independent way. Also necessary for file viewing to work
	well inside Emacs buffers.
	(page): Added checks for being in an emacs buffer.
	(page): fixed bug for Windows ($TERM isn't set in Windows). Fixed
	same bug in iplib.

2002-02-18  Fernando Perez  <fperez@colorado.edu>

	* IPython/iplib.py (InteractiveShell.init_readline): modified use
	of readline so that IPython can work inside an Emacs buffer.

	* IPython/ultraTB.py (AutoFormattedTB.__call__): some fixes to
	method signatures (they weren't really bugs, but it looks cleaner
	and keeps PyChecker happy).

	* IPython/ipmaker.py (make_IPython): added hooks Struct to __IP
	for implementing various user-defined hooks. Currently only
	display is done.

	* IPython/Prompts.py (CachedOutput._display): changed display
	functions so that they can be dynamically changed by users easily.

	* IPython/Extensions/numeric_formats.py (num_display): added an
	extension for printing NumPy arrays in flexible manners. It
	doesn't do anything yet, but all the structure is in
	place. Ultimately the plan is to implement output format control
	like in Octave.

	* IPython/Magic.py (Magic.lsmagic): changed so that bound magic
	methods are found at run-time by all the automatic machinery.

2002-02-17  Fernando Perez  <fperez@colorado.edu>

	* setup_Windows.py (make_shortcut): documented. Cleaned up the
	whole file a little.

	* ToDo: closed this document. Now there's a new_design.lyx
	document for all new ideas. Added making a pdf of it for the
	end-user distro.

	* IPython/Logger.py (Logger.switch_log): Created this to replace
	logon() and logoff(). It also fixes a nasty crash reported by 
	Philip Hisley <compsys-AT-starpower.net>. Many thanks to him.

	* IPython/iplib.py (complete): got auto-completion to work with
	automagic (I had wanted this for a long time).

	* IPython/Magic.py (Magic.magic_files): Added @files as an alias
	to @file, since file() is now a builtin and clashes with automagic
	for @file.

	* Made some new files: Prompts, CrashHandler, Magic, Logger. All
	of this was previously in iplib, which had grown to more than 2000
	lines, way too long. No new functionality, but it makes managing
	the code a bit easier.

	* IPython/iplib.py (IPythonCrashHandler.__call__): Added version
	information to crash reports.

2002-02-12  Fernando Perez  <fperez@colorado.edu>

	* Released 0.2.5.

2002-02-11  Fernando Perez  <fperez@colorado.edu>

	* Wrote a relatively complete Windows installer. It puts
	everything in place, creates Start Menu entries and fixes the
	color issues. Nothing fancy, but it works.

2002-02-10  Fernando Perez  <fperez@colorado.edu>

	* IPython/iplib.py (InteractiveShell.safe_execfile): added an
	os.path.expanduser() call so that we can type @run ~/myfile.py and
	have thigs work as expected.

	* IPython/genutils.py (page): fixed exception handling so things
	work both in Unix and Windows correctly. Quitting a pager triggers
	an IOError/broken pipe in Unix, and in windows not finding a pager
	is also an IOError, so I had to actually look at the return value
	of the exception, not just the exception itself. Should be ok now.

	* IPython/ultraTB.py (ColorSchemeTable.set_active_scheme):
	modified to allow case-insensitive color scheme changes.

2002-02-09  Fernando Perez  <fperez@colorado.edu>

	* IPython/genutils.py (native_line_ends): new function to leave
	user config files with os-native line-endings.

	* README and manual updates.

	* IPython/genutils.py: fixed unicode bug: use types.StringTypes
	instead of StringType to catch Unicode strings.

	* IPython/genutils.py (filefind): fixed bug for paths with
	embedded spaces (very common in Windows).

	* IPython/ipmaker.py (make_IPython): added a '.ini' to the rc
	files under Windows, so that they get automatically associated
	with a text editor. Windows makes it a pain to handle
	extension-less files.

	* IPython/iplib.py (InteractiveShell.init_readline): Made the
	warning about readline only occur for Posix. In Windows there's no
	way to get readline, so why bother with the warning.

	* IPython/Struct.py (Struct.__str__): fixed to use self.__dict__
	for __str__ instead of dir(self), since dir() changed in 2.2.

	* Ported to Windows! Tested on XP, I suspect it should work fine
	on NT/2000, but I don't think it will work on 98 et al. That
	series of Windows is such a piece of junk anyway that I won't try
	porting it there. The XP port was straightforward, showed a few
	bugs here and there (fixed all), in particular some string
	handling stuff which required considering Unicode strings (which
	Windows uses). This is good, but hasn't been too tested :) No
	fancy installer yet, I'll put a note in the manual so people at
	least make manually a shortcut.

	* IPython/iplib.py (Magic.magic_colors): Unified the color options
	into a single one, "colors". This now controls both prompt and
	exception color schemes, and can be changed both at startup
	(either via command-line switches or via ipythonrc files) and at
	runtime, with @colors.
	(Magic.magic_run): renamed @prun to @run and removed the old
	@run. The two were too similar to warrant keeping both.

2002-02-03  Fernando Perez  <fperez@colorado.edu>

	* IPython/iplib.py (install_first_time): Added comment on how to
	configure the color options for first-time users. Put a <return>
	request at the end so that small-terminal users get a chance to
	read the startup info.

2002-01-23  Fernando Perez  <fperez@colorado.edu>

	* IPython/iplib.py (CachedOutput.update): Changed output memory
	variable names from _o,_oo,_ooo,_o<n> to simply _,__,___,_<n>. For
	input history we still use _i. Did this b/c these variable are
	very commonly used in interactive work, so the less we need to
	type the better off we are.
	(Magic.magic_prun): updated @prun to better handle the namespaces
	the file will run in, including a fix for __name__ not being set
	before.

2002-01-20  Fernando Perez  <fperez@colorado.edu>

	* IPython/ultraTB.py (VerboseTB.linereader): Fixed printing of
	extra garbage for Python 2.2. Need to look more carefully into
	this later.

2002-01-19  Fernando Perez  <fperez@colorado.edu>

	* IPython/iplib.py (InteractiveShell.showtraceback): fixed to
	display SyntaxError exceptions properly formatted when they occur
	(they can be triggered by imported code).

2002-01-18  Fernando Perez  <fperez@colorado.edu>

	* IPython/iplib.py (InteractiveShell.safe_execfile): now
	SyntaxError exceptions are reported nicely formatted, instead of
	spitting out only offset information as before.
	(Magic.magic_prun): Added the @prun function for executing
	programs with command line args inside IPython.

2002-01-16  Fernando Perez  <fperez@colorado.edu>

	* IPython/iplib.py (Magic.magic_hist): Changed @hist and @dhist
	to *not* include the last item given in a range. This brings their
	behavior in line with Python's slicing: 
	  a[n1:n2] -> a[n1]...a[n2-1]
	It may be a bit less convenient, but I prefer to stick to Python's
	conventions *everywhere*, so users never have to wonder.
	(Magic.magic_macro): Added @macro function to ease the creation of
	macros.

2002-01-05  Fernando Perez  <fperez@colorado.edu>

	* Released 0.2.4.

	* IPython/iplib.py (Magic.magic_pdef): 
	(InteractiveShell.safe_execfile): report magic lines and error
	lines without line numbers so one can easily copy/paste them for
	re-execution.

	* Updated manual with recent changes.

	* IPython/iplib.py (Magic.magic_oinfo): added constructor
	docstring printing when class? is called. Very handy for knowing
	how to create class instances (as long as __init__ is well
	documented, of course :)
	(Magic.magic_doc): print both class and constructor docstrings.
	(Magic.magic_pdef): give constructor info if passed a class and
	__call__ info for callable object instances.

2002-01-04  Fernando Perez  <fperez@colorado.edu>

	* Made deep_reload() off by default. It doesn't always work
	exactly as intended, so it's probably safer to have it off. It's
	still available as dreload() anyway, so nothing is lost.

2002-01-02  Fernando Perez  <fperez@colorado.edu>

	* Released 0.2.3 (contacted R.Singh at CU about biopython course,
	so I wanted an updated release).

2001-12-27  Fernando Perez  <fperez@colorado.edu>

	* IPython/iplib.py (InteractiveShell.interact): Added the original
	code from 'code.py' for this module in order to change the
	handling of a KeyboardInterrupt. This was necessary b/c otherwise
	the history cache would break when the user hit Ctrl-C, and
	interact() offers no way to add any hooks to it.

2001-12-23  Fernando Perez  <fperez@colorado.edu>

	* setup.py: added check for 'MANIFEST' before trying to remove
	it. Thanks to Sean Reifschneider.

2001-12-22  Fernando Perez  <fperez@colorado.edu>

	* Released 0.2.2.

	* Finished (reasonably) writing the manual. Later will add the
	python-standard navigation stylesheets, but for the time being
	it's fairly complete. Distribution will include html and pdf
	versions.

	* Bugfix: '.' wasn't being added to sys.path. Thanks to Prabhu
	(MayaVi author).

2001-12-21  Fernando Perez  <fperez@colorado.edu>

	* Released 0.2.1. Barring any nasty bugs, this is it as far as a
	good public release, I think (with the manual and the distutils
	installer). The manual can use some work, but that can go
	slowly. Otherwise I think it's quite nice for end users. Next
	summer, rewrite the guts of it...

	* Changed format of ipythonrc files to use whitespace as the
	separator instead of an explicit '='. Cleaner.

2001-12-20  Fernando Perez  <fperez@colorado.edu>

	* Started a manual in LyX. For now it's just a quick merge of the
	various internal docstrings and READMEs. Later it may grow into a
	nice, full-blown manual.

	* Set up a distutils based installer. Installation should now be
	trivially simple for end-users.

2001-12-11  Fernando Perez  <fperez@colorado.edu>

	* Released 0.2.0. First public release, announced it at
	comp.lang.python. From now on, just bugfixes...

	* Went through all the files, set copyright/license notices and
	cleaned up things. Ready for release.

2001-12-10  Fernando Perez  <fperez@colorado.edu>

	* Changed the first-time installer not to use tarfiles. It's more
	robust now and less unix-dependent. Also makes it easier for
	people to later upgrade versions.

	* Changed @exit to @abort to reflect the fact that it's pretty
	brutal (a sys.exit()). The difference between @abort and Ctrl-D
	becomes significant only when IPython is embedded: in that case,
	C-D closes IPython only, but @abort kills the enclosing program
	too (unless it had called IPython inside a try catching
	SystemExit).

	* Created Shell module which exposes the actuall IPython Shell
	classes, currently the normal and the embeddable one. This at
	least offers a stable interface we won't need to change when
	(later) the internals are rewritten. That rewrite will be confined
	to iplib and ipmaker, but the Shell interface should remain as is.

	* Added embed module which offers an embeddable IPShell object,
	useful to fire up IPython *inside* a running program. Great for
	debugging or dynamical data analysis.

2001-12-08  Fernando Perez  <fperez@colorado.edu>

	* Fixed small bug preventing seeing info from methods of defined
	objects (incorrect namespace in _ofind()).

	* Documentation cleanup. Moved the main usage docstrings to a
	separate file, usage.py (cleaner to maintain, and hopefully in the
	future some perlpod-like way of producing interactive, man and
	html docs out of it will be found).

	* Added @profile to see your profile at any time.

	* Added @p as an alias for 'print'. It's especially convenient if
	using automagic ('p x' prints x).

	* Small cleanups and fixes after a pychecker run.

	* Changed the @cd command to handle @cd - and @cd -<n> for
	visiting any directory in _dh.

	* Introduced _dh, a history of visited directories. @dhist prints
	it out with numbers.

2001-12-07  Fernando Perez  <fperez@colorado.edu>

	* Released 0.1.22

	* Made initialization a bit more robust against invalid color
	options in user input (exit, not traceback-crash).

	* Changed the bug crash reporter to write the report only in the
	user's .ipython directory. That way IPython won't litter people's
	hard disks with crash files all over the place. Also print on
	screen the necessary mail command.

	* With the new ultraTB, implemented LightBG color scheme for light
	background terminals. A lot of people like white backgrounds, so I
	guess we should at least give them something readable.

2001-12-06  Fernando Perez  <fperez@colorado.edu>

	* Modified the structure of ultraTB. Now there's a proper class
	for tables of color schemes which allow adding schemes easily and
	switching the active scheme without creating a new instance every
	time (which was ridiculous). The syntax for creating new schemes
	is also cleaner. I think ultraTB is finally done, with a clean
	class structure. Names are also much cleaner (now there's proper
	color tables, no need for every variable to also have 'color' in
	its name).

	* Broke down genutils into separate files. Now genutils only
	contains utility functions, and classes have been moved to their
	own files (they had enough independent functionality to warrant
	it): ConfigLoader, OutputTrap, Struct.

2001-12-05  Fernando Perez  <fperez@colorado.edu>

	* IPython turns 21! Released version 0.1.21, as a candidate for
	public consumption. If all goes well, release in a few days.

	* Fixed path bug (files in Extensions/ directory wouldn't be found
	unless IPython/ was explicitly in sys.path).

	* Extended the FlexCompleter class as MagicCompleter to allow
	completion of @-starting lines.

	* Created __release__.py file as a central repository for release
	info that other files can read from.

	* Fixed small bug in logging: when logging was turned on in
	mid-session, old lines with special meanings (!@?) were being
	logged without the prepended comment, which is necessary since
	they are not truly valid python syntax. This should make session
	restores produce less errors.

	* The namespace cleanup forced me to make a FlexCompleter class
	which is nothing but a ripoff of rlcompleter, but with selectable
	namespace (rlcompleter only works in __main__.__dict__). I'll try
	to submit a note to the authors to see if this change can be
	incorporated in future rlcompleter releases (Dec.6: done)

	* More fixes to namespace handling. It was a mess! Now all
	explicit references to __main__.__dict__ are gone (except when
	really needed) and everything is handled through the namespace
	dicts in the IPython instance. We seem to be getting somewhere
	with this, finally...

	* Small documentation updates.

	* Created the Extensions directory under IPython (with an
	__init__.py). Put the PhysicalQ stuff there. This directory should
	be used for all special-purpose extensions.

	* File renaming:
	  ipythonlib --> ipmaker
	  ipplib     --> iplib
	This makes a bit more sense in terms of what these files actually do.

	* Moved all the classes and functions in ipythonlib to ipplib, so
	now ipythonlib only has make_IPython(). This will ease up its
	splitting in smaller functional chunks later.

	* Cleaned up (done, I think) output of @whos. Better column
	formatting, and now shows str(var) for as much as it can, which is
	typically what one gets with a 'print var'.

2001-12-04  Fernando Perez  <fperez@colorado.edu>

	* Fixed namespace problems. Now builtin/IPython/user names get
	properly reported in their namespace. Internal namespace handling
	is finally getting decent (not perfect yet, but much better than
	the ad-hoc mess we had).

	* Removed -exit option. If people just want to run a python
	script, that's what the normal interpreter is for. Less
	unnecessary options, less chances for bugs.

	* Added a crash handler which generates a complete post-mortem if
	IPython crashes. This will help a lot in tracking bugs down the
	road.

	* Fixed nasty bug in auto-evaluation part of prefilter(). Names
	which were boud to functions being reassigned would bypass the
	logger, breaking the sync of _il with the prompt counter. This
	would then crash IPython later when a new line was logged.

2001-12-02  Fernando Perez  <fperez@colorado.edu>

	* Made IPython a package. This means people don't have to clutter
	their sys.path with yet another directory. Changed the INSTALL
	file accordingly.

	* Cleaned up the output of @who_ls, @who and @whos. @who_ls now
	sorts its output (so @who shows it sorted) and @whos formats the
	table according to the width of the first column. Nicer, easier to
	read. Todo: write a generic table_format() which takes a list of
	lists and prints it nicely formatted, with optional row/column
	separators and proper padding and justification. 

	* Released 0.1.20

	* Fixed bug in @log which would reverse the inputcache list (a
	copy operation was missing).

	* Code cleanup. @config was changed to use page(). Better, since
	its output is always quite long.

	* Itpl is back as a dependency. I was having too many problems
	getting the parametric aliases to work reliably, and it's just
	easier to code weird string operations with it than playing %()s
	games. It's only ~6k, so I don't think it's too big a deal.

	* Found (and fixed) a very nasty bug with history. !lines weren't
	getting cached, and the out of sync caches would crash
	IPython. Fixed it by reorganizing the prefilter/handlers/logger
	division of labor a bit better. Bug fixed, cleaner structure.

2001-12-01  Fernando Perez  <fperez@colorado.edu>

	* Released 0.1.19

	* Added option -n to @hist to prevent line number printing. Much
	easier to copy/paste code this way.

	* Created global _il to hold the input list. Allows easy
	re-execution of blocks of code by slicing it (inspired by Janko's
	comment on 'macros').

	* Small fixes and doc updates.

	* Rewrote @history function (was @h). Renamed it to @hist, @h is
	much too fragile with automagic. Handles properly multi-line
	statements and takes parameters.

2001-11-30  Fernando Perez  <fperez@colorado.edu>

	* Version 0.1.18 released.

	* Fixed nasty namespace bug in initial module imports.

	* Added copyright/license notes to all code files (except
	DPyGetOpt). For the time being, LGPL. That could change.

	* Rewrote a much nicer README, updated INSTALL, cleaned up
	ipythonrc-* samples.

	* Overall code/documentation cleanup. Basically ready for
	release. Only remaining thing: licence decision (LGPL?).

	* Converted load_config to a class, ConfigLoader. Now recursion
	control is better organized. Doesn't include the same file twice.

2001-11-29  Fernando Perez  <fperez@colorado.edu>

	* Got input history working. Changed output history variables from
	_p to _o so that _i is for input and _o for output. Just cleaner
	convention.

	* Implemented parametric aliases. This pretty much allows the
	alias system to offer full-blown shell convenience, I think.

	* Version 0.1.17 released, 0.1.18 opened.

	* dot_ipython/ipythonrc (alias): added documentation.
	(xcolor): Fixed small bug (xcolors -> xcolor)

	* Changed the alias system. Now alias is a magic command to define
	aliases just like the shell. Rationale: the builtin magics should
	be there for things deeply connected to IPython's
	architecture. And this is a much lighter system for what I think
	is the really important feature: allowing users to define quickly
	magics that will do shell things for them, so they can customize
	IPython easily to match their work habits. If someone is really
	desperate to have another name for a builtin alias, they can
	always use __IP.magic_newname = __IP.magic_oldname. Hackish but
	works.

2001-11-28  Fernando Perez  <fperez@colorado.edu>

	* Changed @file so that it opens the source file at the proper
	line. Since it uses less, if your EDITOR environment is
	configured, typing v will immediately open your editor of choice
	right at the line where the object is defined. Not as quick as
	having a direct @edit command, but for all intents and purposes it
	works. And I don't have to worry about writing @edit to deal with
	all the editors, less does that.

	* Version 0.1.16 released, 0.1.17 opened.

	* Fixed some nasty bugs in the page/page_dumb combo that could
	crash IPython.

2001-11-27  Fernando Perez  <fperez@colorado.edu>

	* Version 0.1.15 released, 0.1.16 opened.

	* Finally got ? and ?? to work for undefined things: now it's
	possible to type {}.get? and get information about the get method
	of dicts, or os.path? even if only os is defined (so technically
	os.path isn't). Works at any level. For example, after import os,
	os?, os.path?, os.path.abspath? all work. This is great, took some
	work in _ofind.

	* Fixed more bugs with logging. The sanest way to do it was to add
	to @log a 'mode' parameter. Killed two in one shot (this mode
	option was a request of Janko's). I think it's finally clean
	(famous last words).

	* Added a page_dumb() pager which does a decent job of paging on
	screen, if better things (like less) aren't available. One less
	unix dependency (someday maybe somebody will port this to
	windows).

	* Fixed problem in magic_log: would lock of logging out if log
	creation failed (because it would still think it had succeeded).

	* Improved the page() function using curses to auto-detect screen
	size. Now it can make a much better decision on whether to print
	or page a string. Option screen_length was modified: a value 0
	means auto-detect, and that's the default now.

	* Version 0.1.14 released, 0.1.15 opened. I think this is ready to
	go out. I'll test it for a few days, then talk to Janko about
	licences and announce it.

	* Fixed the length of the auto-generated ---> prompt which appears
	for auto-parens and auto-quotes. Getting this right isn't trivial,
	with all the color escapes, different prompt types and optional
	separators. But it seems to be working in all the combinations.

2001-11-26  Fernando Perez  <fperez@colorado.edu>

	* Wrote a regexp filter to get option types from the option names
	string. This eliminates the need to manually keep two duplicate
	lists.

	* Removed the unneeded check_option_names. Now options are handled
	in a much saner manner and it's easy to visually check that things
	are ok.

	* Updated version numbers on all files I modified to carry a
	notice so Janko and Nathan have clear version markers.

	* Updated docstring for ultraTB with my changes. I should send
	this to Nathan.

	* Lots of small fixes. Ran everything through pychecker again.

	* Made loading of deep_reload an cmd line option. If it's not too
	kosher, now people can just disable it. With -nodeep_reload it's
	still available as dreload(), it just won't overwrite reload().

	* Moved many options to the no| form (-opt and -noopt
	accepted). Cleaner.

	* Changed magic_log so that if called with no parameters, it uses
	'rotate' mode. That way auto-generated logs aren't automatically
	over-written. For normal logs, now a backup is made if it exists
	(only 1 level of backups). A new 'backup' mode was added to the
	Logger class to support this. This was a request by Janko.

	* Added @logoff/@logon to stop/restart an active log.

	* Fixed a lot of bugs in log saving/replay. It was pretty
	broken. Now special lines (!@,/) appear properly in the command
	history after a log replay.

	* Tried and failed to implement full session saving via pickle. My
	idea was to pickle __main__.__dict__, but modules can't be
	pickled. This would be a better alternative to replaying logs, but
	seems quite tricky to get to work. Changed -session to be called
	-logplay, which more accurately reflects what it does. And if we
	ever get real session saving working, -session is now available.

	* Implemented color schemes for prompts also. As for tracebacks,
	currently only NoColor and Linux are supported. But now the
	infrastructure is in place, based on a generic ColorScheme
	class. So writing and activating new schemes both for the prompts
	and the tracebacks should be straightforward.

	* Version 0.1.13 released, 0.1.14 opened.

	* Changed handling of options for output cache. Now counter is
	hardwired starting at 1 and one specifies the maximum number of
	entries *in the outcache* (not the max prompt counter). This is
	much better, since many statements won't increase the cache
	count. It also eliminated some confusing options, now there's only
	one: cache_size.

	* Added 'alias' magic function and magic_alias option in the
	ipythonrc file. Now the user can easily define whatever names he
	wants for the magic functions without having to play weird
	namespace games. This gives IPython a real shell-like feel.

	* Fixed doc/?/?? for magics. Now all work, in all forms (explicit
	@ or not).

	This was one of the last remaining 'visible' bugs (that I know
	of). I think if I can clean up the session loading so it works
	100% I'll release a 0.2.0 version on c.p.l (talk to Janko first
	about licensing).	

2001-11-25  Fernando Perez  <fperez@colorado.edu>

	* Rewrote somewhat oinfo (?/??). Nicer, now uses page() and
	there's a cleaner distinction between what ? and ?? show.

	* Added screen_length option. Now the user can define his own
	screen size for page() operations.

	* Implemented magic shell-like functions with automatic code
	generation. Now adding another function is just a matter of adding
	an entry to a dict, and the function is dynamically generated at
	run-time. Python has some really cool features!

	* Renamed many options to cleanup conventions a little. Now all
	are lowercase, and only underscores where needed. Also in the code
	option name tables are clearer.

	* Changed prompts a little. Now input is 'In [n]:' instead of
	'In[n]:='. This allows it the numbers to be aligned with the
	Out[n] numbers, and removes usage of ':=' which doesn't exist in
	Python (it was a Mathematica thing). The '...' continuation prompt
	was also changed a little to align better.

	* Fixed bug when flushing output cache. Not all _p<n> variables
	exist, so their deletion needs to be wrapped in a try:

	* Figured out how to properly use inspect.formatargspec() (it
	requires the args preceded by *). So I removed all the code from
	_get_pdef in Magic, which was just replicating that.

	* Added test to prefilter to allow redefining magic function names
	as variables. This is ok, since the @ form is always available,
	but whe should allow the user to define a variable called 'ls' if
	he needs it.

	* Moved the ToDo information from README into a separate ToDo.

	* General code cleanup and small bugfixes. I think it's close to a
	state where it can be released, obviously with a big 'beta'
	warning on it.

	* Got the magic function split to work. Now all magics are defined
	in a separate class. It just organizes things a bit, and now
	Xemacs behaves nicer (it was choking on InteractiveShell b/c it
	was too long).

	* Changed @clear to @reset to avoid potential confusions with
	the shell command clear. Also renamed @cl to @clear, which does
	exactly what people expect it to from their shell experience.

	Added a check to the @reset command (since it's so
	destructive, it's probably a good idea to ask for confirmation).
	But now reset only works for full namespace resetting. Since the
	del keyword is already there for deleting a few specific
	variables, I don't see the point of having a redundant magic
	function for the same task.

2001-11-24  Fernando Perez  <fperez@colorado.edu>

	* Updated the builtin docs (esp. the ? ones).

	* Ran all the code through pychecker. Not terribly impressed with
	it: lots of spurious warnings and didn't really find anything of
	substance (just a few modules being imported and not used).

	* Implemented the new ultraTB functionality into IPython. New
	option: xcolors. This chooses color scheme. xmode now only selects
	between Plain and Verbose. Better orthogonality.

	* Large rewrite of ultraTB. Much cleaner now, with a separation of
	mode and color scheme for the exception handlers. Now it's
	possible to have the verbose traceback with no coloring.

2001-11-23  Fernando Perez  <fperez@colorado.edu>

	* Version 0.1.12 released, 0.1.13 opened.

	* Removed option to set auto-quote and auto-paren escapes by
	user. The chances of breaking valid syntax are just too high. If
	someone *really* wants, they can always dig into the code.

	* Made prompt separators configurable.

2001-11-22  Fernando Perez  <fperez@colorado.edu>

	* Small bugfixes in many places.

	* Removed the MyCompleter class from ipplib. It seemed redundant
	with the C-p,C-n history search functionality. Less code to
	maintain.

	* Moved all the original ipython.py code into ipythonlib.py. Right
	now it's just one big dump into a function called make_IPython, so
	no real modularity has been gained. But at least it makes the
	wrapper script tiny, and since ipythonlib is a module, it gets
	compiled and startup is much faster.

	This is a reasobably 'deep' change, so we should test it for a
	while without messing too much more with the code.

2001-11-21  Fernando Perez  <fperez@colorado.edu>

	* Version 0.1.11 released, 0.1.12 opened for further work.

	* Removed dependency on Itpl. It was only needed in one place. It
	would be nice if this became part of python, though. It makes life
	*a lot* easier in some cases.

	* Simplified the prefilter code a bit. Now all handlers are
	expected to explicitly return a value (at least a blank string).

	* Heavy edits in ipplib. Removed the help system altogether. Now
	obj?/?? is used for inspecting objects, a magic @doc prints
	docstrings, and full-blown Python help is accessed via the 'help'
	keyword. This cleans up a lot of code (less to maintain) and does
	the job. Since 'help' is now a standard Python component, might as
	well use it and remove duplicate functionality.

	Also removed the option to use ipplib as a standalone program. By
	now it's too dependent on other parts of IPython to function alone.

	* Fixed bug in genutils.pager. It would crash if the pager was
	exited immediately after opening (broken pipe).

	* Trimmed down the VerboseTB reporting a little. The header is
	much shorter now and the repeated exception arguments at the end
	have been removed. For interactive use the old header seemed a bit
	excessive.

	* Fixed small bug in output of @whos for variables with multi-word
	types (only first word was displayed).

2001-11-17  Fernando Perez  <fperez@colorado.edu>

	* Version 0.1.10 released, 0.1.11 opened for further work.

	* Modified dirs and friends. dirs now *returns* the stack (not
	prints), so one can manipulate it as a variable. Convenient to
	travel along many directories.

	* Fixed bug in magic_pdef: would only work with functions with
	arguments with default values.

2001-11-14  Fernando Perez  <fperez@colorado.edu>

	* Added the PhysicsInput stuff to dot_ipython so it ships as an
	example with IPython. Various other minor fixes and cleanups.

	* Version 0.1.9 released, 0.1.10 opened for further work.

	* Added sys.path to the list of directories searched in the
	execfile= option. It used to be the current directory and the
	user's IPYTHONDIR only.

2001-11-13  Fernando Perez  <fperez@colorado.edu>

	* Reinstated the raw_input/prefilter separation that Janko had
	initially. This gives a more convenient setup for extending the
	pre-processor from the outside: raw_input always gets a string,
	and prefilter has to process it. We can then redefine prefilter
	from the outside and implement extensions for special
	purposes.

	Today I got one for inputting PhysicalQuantity objects
	(from Scientific) without needing any function calls at
	all. Extremely convenient, and it's all done as a user-level
	extension (no IPython code was touched). Now instead of:
		a = PhysicalQuantity(4.2,'m/s**2')
	one can simply say
		a = 4.2 m/s**2
	or even
		a = 4.2 m/s^2
	
	I use this, but it's also a proof of concept: IPython really is
	fully user-extensible, even at the level of the parsing of the
	command line. It's not trivial, but it's perfectly doable.

	* Added 'add_flip' method to inclusion conflict resolver. Fixes
	the problem of modules being loaded in the inverse order in which
	they were defined in 

	* Version 0.1.8 released, 0.1.9 opened for further work.

	* Added magics pdef, source and file. They respectively show the
	definition line ('prototype' in C), source code and full python
	file for any callable object. The object inspector oinfo uses
	these to show the same information.

	* Version 0.1.7 released, 0.1.8 opened for further work.

	* Separated all the magic functions into a class called Magic. The
	InteractiveShell class was becoming too big for Xemacs to handle
	(de-indenting a line would lock it up for 10 seconds while it
	backtracked on the whole class!)

	FIXME: didn't work. It can be done, but right now namespaces are
	all messed up. Do it later (reverted it for now, so at least
	everything works as before).

	* Got the object introspection system (magic_oinfo) working! I
	think this is pretty much ready for release to Janko, so he can
	test it for a while and then announce it. Pretty much 100% of what
	I wanted for the 'phase 1' release is ready. Happy, tired.

2001-11-12  Fernando Perez  <fperez@colorado.edu>

	* Version 0.1.6 released, 0.1.7 opened for further work.

	* Fixed bug in printing: it used to test for truth before
	printing, so 0 wouldn't print. Now checks for None.

	* Fixed bug where auto-execs increase the prompt counter by 2 (b/c
	they have to call len(str(sys.ps1)) ). But the fix is ugly, it
	reaches by hand into the outputcache. Think of a better way to do
	this later.

	* Various small fixes thanks to Nathan's comments.

	* Changed magic_pprint to magic_Pprint. This way it doesn't
	collide with pprint() and the name is consistent with the command
	line option.

	* Changed prompt counter behavior to be fully like
	Mathematica's. That is, even input that doesn't return a result
	raises the prompt counter. The old behavior was kind of confusing
	(getting the same prompt number several times if the operation
	didn't return a result).

	* Fixed Nathan's last name in a couple of places (Gray, not Graham).

	* Fixed -Classic mode (wasn't working anymore).

	* Added colored prompts using Nathan's new code. Colors are
	currently hardwired, they can be user-configurable. For
	developers, they can be chosen in file ipythonlib.py, at the
	beginning of the CachedOutput class def.

2001-11-11  Fernando Perez  <fperez@colorado.edu>

	* Version 0.1.5 released, 0.1.6 opened for further work.

	* Changed magic_env to *return* the environment as a dict (not to
	print it). This way it prints, but it can also be processed.

	* Added Verbose exception reporting to interactive
	exceptions. Very nice, now even 1/0 at the prompt gives a verbose
	traceback. Had to make some changes to the ultraTB file. This is
	probably the last 'big' thing in my mental todo list.  This ties
	in with the next entry:

	* Changed -Xi and -Xf to a single -xmode option. Now all the user
	has to specify is Plain, Color or Verbose for all exception
	handling.

	* Removed ShellServices option. All this can really be done via
	the magic system. It's easier to extend, cleaner and has automatic
	namespace protection and documentation.

2001-11-09  Fernando Perez  <fperez@colorado.edu>

	* Fixed bug in output cache flushing (missing parameter to
	__init__). Other small bugs fixed (found using pychecker).

	* Version 0.1.4 opened for bugfixing.

2001-11-07  Fernando Perez  <fperez@colorado.edu>

	* Version 0.1.3 released, mainly because of the raw_input bug.

	* Fixed NASTY bug in raw_input: input line wasn't properly parsed
	and when testing for whether things were callable, a call could
	actually be made to certain functions. They would get called again
	once 'really' executed, with a resulting double call. A disaster
	in many cases (list.reverse() would never work!).

	* Removed prefilter() function, moved its code to raw_input (which
	after all was just a near-empty caller for prefilter). This saves
	a function call on every prompt, and simplifies the class a tiny bit.

	* Fix _ip to __ip name in magic example file.

	* Changed 'tar -x -f' to 'tar xvf' in auto-installer. This should
	work with non-gnu versions of tar.

2001-11-06  Fernando Perez  <fperez@colorado.edu>

	* Version 0.1.2. Just to keep track of the recent changes.

	* Fixed nasty bug in output prompt routine. It used to check 'if
	arg != None...'. Problem is, this fails if arg implements a
	special comparison (__cmp__) which disallows comparing to
	None. Found it when trying to use the PhysicalQuantity module from
	ScientificPython.

2001-11-05  Fernando Perez  <fperez@colorado.edu>

	* Also added dirs. Now the pushd/popd/dirs family functions
	basically like the shell, with the added convenience of going home
	when called with no args.

	* pushd/popd slightly modified to mimic shell behavior more
	closely.

	* Added env,pushd,popd from ShellServices as magic functions. I
	think the cleanest will be to port all desired functions from
	ShellServices as magics and remove ShellServices altogether. This
	will provide a single, clean way of adding functionality
	(shell-type or otherwise) to IP.

2001-11-04  Fernando Perez  <fperez@colorado.edu>

	* Added .ipython/ directory to sys.path. This way users can keep
	customizations there and access them via import.

2001-11-03  Fernando Perez  <fperez@colorado.edu>

	* Opened version 0.1.1 for new changes.

	* Changed version number to 0.1.0: first 'public' release, sent to
	Nathan and Janko.

	* Lots of small fixes and tweaks.

	* Minor changes to whos format. Now strings are shown, snipped if
	too long.

	* Changed ShellServices to work on __main__ so they show up in @who

	* Help also works with ? at the end of a line:
		?sin and sin?
	both produce the same effect. This is nice, as often I use the
	tab-complete to find the name of a method, but I used to then have
	to go to the beginning of the line to put a ? if I wanted more
	info. Now I can just add the ? and hit return. Convenient.

2001-11-02  Fernando Perez  <fperez@colorado.edu>

	* Python version check (>=2.1) added.

	* Added LazyPython documentation. At this point the docs are quite
	a mess. A cleanup is in order.

	* Auto-installer created. For some bizarre reason, the zipfiles
	module isn't working on my system. So I made a tar version
	(hopefully the command line options in various systems won't kill
	me).

	* Fixes to Struct in genutils. Now all dictionary-like methods are
	protected (reasonably).

	* Added pager function to genutils and changed ? to print usage
	note through it (it was too long).

	* Added the LazyPython functionality. Works great! I changed the
	auto-quote escape to ';', it's on home row and next to '. But
	both auto-quote and auto-paren (still /) escapes are command-line
	parameters.
	

2001-11-01  Fernando Perez  <fperez@colorado.edu>

	* Version changed to 0.0.7. Fairly large change: configuration now
	is all stored in a directory, by default .ipython. There, all
	config files have normal looking names (not .names)

	* Version 0.0.6 Released first to Lucas and Archie as a test
	run. Since it's the first 'semi-public' release, change version to
	> 0.0.6 for any changes now.

	* Stuff I had put in the ipplib.py changelog:
	
	Changes to InteractiveShell:
	
	- Made the usage message a parameter.
	
	- Require the name of the shell variable to be given. It's a bit
	of a hack, but allows the name 'shell' not to be hardwired in the
	magic (@) handler, which is problematic b/c it requires
	polluting the global namespace with 'shell'. This in turn is
	fragile: if a user redefines a variable called shell, things
	break.

	- magic @: all functions available through @ need to be defined
	as magic_<name>, even though they can be called simply as
	@<name>. This allows the special command @magic to gather
	information automatically about all existing magic functions,
	even if they are run-time user extensions, by parsing the shell
	instance __dict__ looking for special magic_ names.

	- mainloop: added *two* local namespace parameters. This allows
	the class to differentiate between parameters which were there
	before and after command line initialization was processed. This
	way, later @who can show things loaded at startup by the
	user. This trick was necessary to make session saving/reloading
	really work: ideally after saving/exiting/reloading a session,
	*everything* should look the same, including the output of @who. I
	was only able to make this work with this double namespace
	trick.

	- added a header to the logfile which allows (almost) full
	session restoring.

	- prepend lines beginning with @ or !, with a and log
	them. Why?  !lines: may be useful to know what you did @lines:
	they may affect session state. So when restoring a session, at
	least inform the user of their presence. I couldn't quite get
	them to properly re-execute, but at least the user is warned.

	* Started ChangeLog.