From SRS0=uIp3=KZ=secure3.apollohosting.com=anonymous@bounce2.pobox.com  Thu May 24 05:39:26 2007
X-VM-v5-Data: ([nil nil nil nil nil nil nil nil nil]
	["1115" "" "24" "May" "2007" "05:29:53" "-0500" "Zuma Lindiwe" "mrszuma07@sify.com" nil "18" "Please Assist Us" "^From:" nil nil "5" nil nil nil nil nil nil nil nil nil]
	nil)
Delivered-To: skip.montanaro@gmail.com
Received: from pop.gmail.com
	by montanaro.dyndns.org with POP3 (fetchmail-6.3.6)
	for <skip@localhost> (single-drop);
	Thu, 24 May 2007 05:39:26 -0500 (CDT)
Received: by 10.35.31.19 with SMTP id i19cs443913pyj;
	Thu, 24 May 2007 03:36:47 -0700 (PDT)
Received: by 10.100.153.17 with SMTP id a17mr1396912ane.1180003006899;
	Thu, 24 May 2007 03:36:46 -0700 (PDT)
Return-Path: <SRS0=uIp3=KZ=secure3.apollohosting.com=anonymous@bounce2.pobox.com>
Received: from snug.pobox.com (snug.pobox.com [208.210.124.72])
	by mx.google.com with ESMTP id b11si4486779ana.2007.05.24.03.36.46;
	Thu, 24 May 2007 03:36:46 -0700 (PDT)
Received-SPF: pass (google.com: domain of
	SRS0=uIp3=KZ=secure3.apollohosting.com=anonymous@bounce2.pobox.com
	designates 208.210.124.72 as permitted sender)
Received: from snug.pobox.com (localhost [127.0.0.1])
	by snug.pobox.com (Postfix) with ESMTP id 91CC79A24C
	for <skip.montanaro@gmail.com>; Thu, 24 May 2007 06:37:08 -0400 (EDT)
Delivered-To: skip@pobox.com
X-Pobox-Delivery-ID: <B90780B8-09E2-11DC-99D2-3FC5C02E5092-00107187@snug.pobox.com>
Received: from mx03.mailboxcop.com (mx03.mailboxcop.com [206.125.223.73]) by
	snug.pobox.com (Postfix) with ESMTP id 64C4D99411 for <skip@pobox.com>; 
	Thu, 24 May 2007 06:37:08 -0400 (EDT)
Received: from secure3.apollohosting.com (secure3.apollohosting.com
	[206.125.215.253]) by mx03.mailboxcop.com (8.13.1/8.13.1) with ESMTP id
	l4OAaiFD024154 for <skip@pobox.com>; Thu, 24 May 2007 05:36:45 -0500
Received: (qmail 27123 invoked by uid 10121); 24 May 2007 05:29:53 -0500
Message-ID: <20070524102953.27122.qmail@secure3.apollohosting.com>
X-PHP-Script: saexplorers.org/send.php for 82.128.2.136, 82.128.2.136
MIME-Version: 1.0
Content-Type: text/html
Content-Transfer-Encoding: 8bit
X-Bayes-Prob: 0.9999 (Score 2)
X-CanItPRO-Stream: outgoing (inherits from default)
X-Canit-Stats-ID: Bayes signature not available
X-Scanned-By: CanIt (www . roaringpenguin . com) on 192.168.15.5
From: Zuma Lindiwe <mrszuma07@sify.com>
To: skip@pobox.com
Subject: Please Assist Us
Date: 24 May 2007 05:29:53 -0500
Reply-To: mrszumafamily@excite.com


Dear Friend, 
I am wife of sacked deputy president of south africa, 
jacob zuma. 
It is out of desperation that i am sending you this mail. 

my husband and i need your help in fronting for us as owner of funds that are his which might come under investigation soon if the fund's ownership is not changed soonest. as my husband's finances are 
increasingly becoming the source of investigation by our distractors. the source of these funds which my husband's earnings would not validate, will further sink him into the cesspool dug by our enemies. 

 It is because of the dire strait we find ourselves that we resolved to reach you and ask for your assistance in this matter. we are averse to letting those we know here into this deal because we are no longer sure of who our friends are. you will be rewarded if you choose to help us in partnership in this deal. 

 I will be expecting to hear from you via 
my personal email account (mrszumafamily@excite.com)and will disclose further detail to you upon your response. do well not to disclose the content of this mail to anyone. 

Best Regards, 
Lindiwe Zuma 

From SRS0=DxWX=HL=python.org=spambayes-bounces+skip=pobox.com@bounce2.pobox.com  Mon Nov 23 08:30:49 2009
X-VM-v5-Data: ([nil nil nil nil nil nil nil nil nil]
	["2607" "Sunday" "22" "November" "2009" "22:10:36" "-0600" "bob" "bob@upperspace.com" nil "98" "[Spambayes] Spambayes on Windows 7" "^From:" nil nil "11" nil "[Spambayes] Spambayes on Windows 7" nil nil nil nil nil nil nil nil]
	nil)
Delivered-To: skip.montanaro@gmail.com
Received: from pop.gmail.com
 by montanaro.dyndns.org with POP3 (fetchmail-6.3.11)
 for <skip@localhost> (single-drop); Mon, 23 Nov 2009 08:30:49 -0600 (CST)
Received: by 10.213.7.80 with SMTP id c16cs347686ebc;
 Mon, 23 Nov 2009 06:30:41 -0800 (PST)
Received: by 10.224.75.132 with SMTP id y4mr2484694qaj.116.1258986639290;
 Mon, 23 Nov 2009 06:30:39 -0800 (PST)
Return-Path: <SRS0=DxWX=HL=python.org=spambayes-bounces+skip=pobox.com@bounce2.pobox.com>
Received: from azure.pobox.com (azure.pobox.com [208.72.237.55])
 by mx.google.com with ESMTP id 6si5966074qyk.3.2009.11.23.06.30.37;
 Mon, 23 Nov 2009 06:30:38 -0800 (PST)
Received-SPF: pass (google.com: domain of
 SRS0=DxWX=HL=python.org=spambayes-bounces+skip=pobox.com@bounce2.pobox.com
 designates 208.72.237.55 as permitted sender) client-ip=208.72.237.55; 
Authentication-Results: mx.google.com; spf=pass (google.com: domain of
 SRS0=DxWX=HL=python.org=spambayes-bounces+skip=pobox.com@bounce2.pobox.com
 designates 208.72.237.55 as permitted sender)
 smtp.mail=SRS0=DxWX=HL=python.org=spambayes-bounces+skip=pobox.com@bounce2.pobox.com;
 dkim=pass header.i=@python.org
Received: from azure.pobox.com (localhost [127.0.0.1])
 by azure.pobox.com (Postfix) with ESMTP id 8414B413F3E
 for <skip.montanaro@gmail.com>; Mon, 23 Nov 2009 09:30:37 -0500 (EST)
Delivered-To: skip@pobox.com
X-Pobox-Orig-Sender: <spambayes-bounces+skip=pobox.com@python.org>
X-Pobox-Delivery-ID: C47E19E0-D83C-11DE-9FAD-F7121D43C645-00107187!azure.pobox.com
X-Original-To: spambayes@python.org
x-pobox-client-address: 82.94.164.166
x-pobox-client-name: mail.python.org
Received: from mail.python.org (mail.python.org [82.94.164.166]) by
 azure.pobox.com (Postfix) with ESMTP id 15FD34141C1 for <skip@pobox.com>;
 Mon, 23 Nov 2009 09:30:37 -0500 (EST)
Received: from albatross.python.org (localhost.localdomain [127.0.0.1]) by
 mail.python.org (Postfix) with ESMTP id 9AA11EBA5 for <skip@pobox.com>; Mon,
 23 Nov 2009 15:30:36 +0100 (CET)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=python.org; s=200901;
 t=1258986636; bh=G3C6Fnk3/321ZNZOnwcniEKycLMsUsyj+9gRRzmpmKk=;
 h=From:To:Date:Message-ID:MIME-Version:Subject:List-Id:
 List-Unsubscribe:List-Archive:List-Post:List-Help:List-Subscribe:
 Content-Type:Sender;
 b=TVpkk/uBriyojj9buMN1drKXKIbFFfGSI1aW3sl5nRmSMz5Z7A5enkbOjwABhra1K
 jc+L8Fgqd3eEDT0TeBP/qMSLvLNJlr7QL/otP6/O+VeMNdcorRhHcnaSqpMzlEowLk
 iy1hCwHLrpN9zGj2jFzwoZrpjVl1f77TddUa0fz8=
Delivered-To: spambayes@mail.python.org
Received: from albatross.python.org (localhost.localdomain [127.0.0.1]) by
 mail.python.org (Postfix) with ESMTP id 8E4F3D318 for <spambayes@python.org>; 
 Mon, 23 Nov 2009 06:11:11 +0100 (CET)
X-Spam-Status: OK 0.019
X-Spam-Evidence: '*H*': 0.96; '*S*': 0.00; 'spambayes': 0.05; 'doesn?t':
 0.07; '1.0.4': 0.09; '127.0.0.1': 0.16; 'localhost': 0.16; 'localhost.':
 0.16; 'pop3': 0.16; 'subject:Spambayes': 0.16; "didn't": 0.24;
 'x-mailer:microsoft office outlook 11': 0.26; 'tried': 0.27; 'mode': 0.28;
 "doesn't": 0.29; 'to:addr:spambayes': 0.30; 'work,': 0.33; 'fine.': 0.35;
 'server.': 0.35; 'charset:us- ascii': 0.37; 'url:org': 0.38;
 'url:rec-html40': 0.40; 'use': 0.40; 'pop': 0.60; 'subject:Windows': 0.65;
 'received:74.208': 0.73
Received: from localhost.localdomain (HELO mail.python.org) (127.0.0.1) by
 albatross.python.org with SMTP; 23 Nov 2009 06:11:11 +0100
X-Greylist: delayed 3631 seconds by postgrey-1.31 at albatross; Mon, 23 Nov
 2009 06:11:11 CET
Received: from xpda.com (xpda.com [74.208.174.103]) by mail.python.org
 (Postfix) with SMTP for <spambayes@python.org>; Mon, 23 Nov 2009 06:11:10
 +0100 (CET)
Received: from abacus ([99.184.98.187]) by xpda.com ; Sun, 22 Nov 2009
 22:10:08 -0600
Message-ID: <DEF2447574574FCAB15097ABA2C14F1A@abacus>
MIME-Version: 1.0
X-Mailer: Microsoft Office Outlook 11
Thread-Index: Acpr8tBU1EqjrtNgSDiuVNiLflJRdg==
X-MimeOLE: Produced By Microsoft MimeOLE V6.1.7600.16385
X-Mailman-Approved-At: Mon, 23 Nov 2009 15:26:31 +0100
X-BeenThere: spambayes@python.org
X-Mailman-Version: 2.1.12
Precedence: list
List-Id: Discussion list for Pythonic Bayesian classifier
 <spambayes.python.org>
List-Unsubscribe: <http://mail.python.org/mailman/options/spambayes>,
 <mailto:spambayes-request@python.org?subject=unsubscribe>
List-Archive: <http://mail.python.org/pipermail/spambayes>
List-Post: <mailto:spambayes@python.org>
List-Help: <mailto:spambayes-request@python.org?subject=help>
List-Subscribe: <http://mail.python.org/mailman/listinfo/spambayes>,
 <mailto:spambayes-request@python.org?subject=subscribe>
Content-Type: multipart/mixed; boundary="===============1230161230=="
Errors-To: spambayes-bounces+skip=pobox.com@python.org
X-Spambayes-Evidence: '*H*': 0.94; '*S*': 0.00; 'skip:_ 40': 0.03;
 'email addr:python.org': 0.13; 'instead': 0.16; 'integrated': 0.16;
 'recognize': 0.16; 'tried': 0.16; 'url-ip:216.34.181/24': 0.16;
 'url-ip:216.34/16': 0.16; 'url:sf': 0.16; 'url-ip:128/8': 0.18; 'set': 0.20;
 'url-ip:128.30.52/24': 0.23; 'url-ip:128.30/16': 0.23; 'url:w3': 0.23;
 'windows': 0.24; 'url-ip:128.30.52.166/32': 0.26;
 'url-ip:128.30.52.168/32': 0.26; 'url-ip:128.30.52.170/32': 0.26;
 'url-ip:128.30.52.38/32': 0.26; 'url-ip:128.30.52.51/32': 0.26;
 'url-ip:128.30.52.53/32': 0.26; 'url-ip:128.30.52.54/32': 0.26; 'url:tr': 0.26;
 'url:org': 0.30; "doesn't": 0.32; 'works': 0.32; 'subject:] ': 0.33;
 'url:rec-html40': 0.37; 'header:Received:11': 0.37; 'url:python': 0.38;
 'url-ip:82.94.164/24': 0.40; 'url-ip:82.94/16': 0.40;
 'sender:addr:python.org': 0.62; 'content-type:text/html': 0.62;
 'content-type:multipart/alternative': 0.64; 'before': 0.73; 'pop': 0.84;
 'received:74': 0.84; 'work,': 0.84; "didn't": 0.91
From: "bob" <bob@upperspace.com>
Sender: spambayes-bounces+skip=pobox.com@python.org
To: <spambayes@python.org>
Subject: [Spambayes] Spambayes on Windows 7
Date: Sun, 22 Nov 2009 22:10:36 -0600
X-Spambayes-Classification: ham; 0.03

This is a multi-part message in MIME format.

--===============1230161230==
Content-Type: multipart/alternative;
 boundary="----=_NextPart_000_0003_01CA6BC0.9E45D530"

This is a multi-part message in MIME format.

------=_NextPart_000_0003_01CA6BC0.9E45D530
Content-Type: text/plain;
	charset="us-ascii"
Content-Transfer-Encoding: 7bit

I have just tried out Spambayes 1.0.4 on Windows 7, Outlook 2003. It works
fine. You just have to set it up in Pop3 mode and use 127.0.0.1 instead of
localhost for the Outlook Pop server. The integrated Outlook mode didn't
work, and Windows 7 doesn't recognize localhost.


------=_NextPart_000_0003_01CA6BC0.9E45D530
Content-Type: text/html;
	charset="us-ascii"
Content-Transfer-Encoding: quoted-printable

<html xmlns:o=3D"urn:schemas-microsoft-com:office:office" =
xmlns:w=3D"urn:schemas-microsoft-com:office:word" =
xmlns=3D"http://www.w3.org/TR/REC-html40">

<head>
<META HTTP-EQUIV=3D"Content-Type" CONTENT=3D"text/html; =
charset=3Dus-ascii">
<meta name=3DGenerator content=3D"Microsoft Word 11 (filtered medium)">
<style>
<!--
 /* Style Definitions */
 p.MsoNormal, li.MsoNormal, div.MsoNormal
	{margin:0in;
	margin-bottom:.0001pt;
	font-size:10.0pt;
	font-family:"Times New Roman";}
a:link, span.MsoHyperlink
	{color:blue;
	text-decoration:underline;}
a:visited, span.MsoHyperlinkFollowed
	{color:purple;
	text-decoration:underline;}
span.EmailStyle17
	{mso-style-type:personal-compose;
	font-family:Arial;
	color:windowtext;}
@page Section1
	{size:8.5in 11.0in;
	margin:1.0in 1.25in 1.0in 1.25in;}
div.Section1
	{page:Section1;}
-->
</style>

</head>

<body lang=3DEN-US link=3Dblue vlink=3Dpurple>

<div class=3DSection1>

<p class=3DMsoNormal><font size=3D2 face=3DArial><span =
style=3D'font-size:10.0pt;
font-family:Arial'>I have just tried out Spambayes 1.0.4 on Windows 7, =
Outlook
2003. It works fine. You just have to set it up in Pop3 mode and use =
127.0.0.1
instead of localhost for the Outlook Pop server. The integrated Outlook =
mode
didn&#8217;t work, and Windows 7 doesn&#8217;t recognize =
localhost.<o:p></o:p></span></font></p>

</div>

</body>

</html>

------=_NextPart_000_0003_01CA6BC0.9E45D530--



--===============1230161230==
Content-Type: text/plain; charset="us-ascii"
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit
Content-Disposition: inline

_______________________________________________
SpamBayes@python.org
http://mail.python.org/mailman/listinfo/spambayes
Info/Unsubscribe: http://mail.python.org/mailman/listinfo/spambayes
Check the FAQ before asking: http://spambayes.sf.net/faq.html
--===============1230161230==--


From SRS0=LaUJ=HL=python.org=python-dev-bounces+skip=pobox.com@bounce2.pobox.com  Mon Nov 23 02:58:24 2009
X-VM-v5-Data: ([nil nil nil nil nil nil nil nil nil]
	["2051" "Monday" "23" "November" "2009" "08:54:56" "+0000" "Stefan Ring" "s.r@visotech.at" nil "27" "Re: [Python-Dev] Reworking the GIL" "^From:" nil nil "11" nil "[Python-Dev] Reworking the GIL" nil nil nil nil nil nil nil nil]
	nil)
Delivered-To: skip.montanaro@gmail.com
Received: from pop.gmail.com
 by montanaro.dyndns.org with POP3 (fetchmail-6.3.11)
 for <skip@localhost> (single-drop); Mon, 23 Nov 2009 02:58:24 -0600 (CST)
Received: by 10.213.7.80 with SMTP id c16cs334544ebc;
 Mon, 23 Nov 2009 00:58:18 -0800 (PST)
Received: by 10.220.122.205 with SMTP id m13mr5472495vcr.40.1258966696358;
 Mon, 23 Nov 2009 00:58:16 -0800 (PST)
Return-Path: <SRS0=LaUJ=HL=python.org=python-dev-bounces+skip=pobox.com@bounce2.pobox.com>
Received: from sienna.pobox.com (sienna.pobox.com [64.74.157.51])
 by mx.google.com with ESMTP id 5si6478976vws.69.2009.11.23.00.58.14;
 Mon, 23 Nov 2009 00:58:15 -0800 (PST)
Received-SPF: pass (google.com: domain of
 SRS0=LaUJ=HL=python.org=python-dev-bounces+skip=pobox.com@bounce2.pobox.com
 designates 64.74.157.51 as permitted sender) client-ip=64.74.157.51; 
Authentication-Results: mx.google.com; spf=pass (google.com: domain of
 SRS0=LaUJ=HL=python.org=python-dev-bounces+skip=pobox.com@bounce2.pobox.com
 designates 64.74.157.51 as permitted sender)
 smtp.mail=SRS0=LaUJ=HL=python.org=python-dev-bounces+skip=pobox.com@bounce2.pobox.com;
 dkim=pass header.i=@python.org
Received: from sienna.pobox.com (localhost [127.0.0.1])
 by sienna.pobox.com (Postfix) with ESMTP id 7732F208487
 for <skip.montanaro@gmail.com>; Mon, 23 Nov 2009 03:58:14 -0500 (EST)
Delivered-To: skip@pobox.com
X-Pobox-Orig-Sender: <python-dev-bounces+skip=pobox.com@python.org>
X-Pobox-Delivery-ID: 55034776-D80E-11DE-9DD3-8441759ABA81-00107187!sienna.pobox.com
X-Original-To: python-dev@python.org
x-pobox-client-address: 82.94.164.166
x-pobox-client-name: mail.python.org
Received: from mail.python.org (mail.python.org [82.94.164.166]) by
 sienna.pobox.com (Postfix) with ESMTP id 7ED34207D20 for <skip@pobox.com>;
 Mon, 23 Nov 2009 03:57:55 -0500 (EST)
Received: from albatross.python.org (localhost.localdomain [127.0.0.1]) by
 mail.python.org (Postfix) with ESMTP id F2E17EC62 for <skip@pobox.com>; Mon,
 23 Nov 2009 09:57:17 +0100 (CET)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=python.org; s=200901;
 t=1258966638; bh=KEqoLFbD8JmuPmX22sEZnyDmrjrqcci9GB9E4dZK+TM=;
 h=To:From:Date:Message-ID:References:Mime-Version:Subject:List-Id:
 List-Unsubscribe:List-Archive:List-Post:List-Help:List-Subscribe:
 Content-Type:Content-Transfer-Encoding:Sender;
 b=sDlvjVuJ36QdaGauTvOu2OixqbIDf+fZK+W5tKJpcWZ3/z5HDV17pZan8r/QR527Z
 WQHPEMz3lGrA9Go2QKULbLBs4xiQW78bJy2pus9kJ9n8jG0NFTHOWgzQ8AYVAejrcX
 cz7SDZ8N/waScdKqXkYUgHfTID6BwU2S9p3l2wis=
Delivered-To: python-dev@mail.python.org
Received: from albatross.python.org (localhost.localdomain [127.0.0.1]) by
 mail.python.org (Postfix) with ESMTP id EBE10C941 for
 <python-dev@python.org>; Mon, 23 Nov 2009 09:55:23 +0100 (CET)
X-Spam-Status: OK 0.011
X-Spam-Evidence: '*H*': 0.98; '*S*': 0.00; 'scheduling': 0.04; 'python':
 0.05; 'done,': 0.05; 'seemed': 0.05; 'slightly': 0.05; 'note,': 0.09;
 'bashing,': 0.16; 'cpu': 0.16; 'functions.': 0.16; 'priorities': 0.16;
 'received:80.91': 0.16; 'received:80.91.229': 0.16; 'received:80.91.229.12':
 0.16; 'received:gmane.org': 0.16; 'received:list': 0.16;
 'received:lo.gmane.org': 0.16; 'sender:addr:ger.gmane.org': 0.16;
 'sender:addr:news': 0.16; 'sender:name:news': 0.16; 'stefan': 0.16; 'unfair':
 0.16; 'url:2008-march': 0.16; 'url:python-dev': 0.16; 'yesterday': 0.16;
 'code,': 0.19; 'somehow': 0.23; 'url:pipermail': 0.24; 'header:X
 -Complaints-To:1': 0.26; 'list': 0.28; 'mailing': 0.30; 'header
 :User-Agent:1': 0.30; 'quite': 0.31; 'slow': 0.31; 'header:Mime- Version:1':
 0.32; 'hello,': 0.33; 'something': 0.33; 'posted': 0.33; 'there': 0.33;
 'seem': 0.35; 'measure': 0.35; 'nobody': 0.35; 'subject:: ': 0.36; 'might':
 0.36; 'though': 0.36; 'received:org': 0.36; 'too': 0.36; 'don\xe2\x80\x99t':
 0.36; 'know.': 0.38; 'url:python': 0.38; 'url:2009': 0.38; 'url:org': 0.38;
 'different': 0.39; 'what': 0.39; 'almost': 0.39; 'to:addr :python-dev': 0.39; 
 'few': 0.40; 'url:index': 0.60; 'your': 0.61; 'aware': 0.62; 'received:91':
 0.64; 'came': 0.65; 'customer': 0.65; 'interested.': 0.65; 'url:php': 0.66;
 'mind': 0.67; 'skip:w 20': 0.68; 'year,': 0.71; 'sites': 0.76; 'production':
 0.79; '[2]': 0.84; '[3]': 0.84; 'clock.': 0.84; 'since,': 0.84;
 'observations': 0.91
Received: from localhost.localdomain (HELO mail.python.org) (127.0.0.1) by
 albatross.python.org with SMTP; 23 Nov 2009 09:55:23 +0100
Received: from lo.gmane.org (lo.gmane.org [80.91.229.12]) (using TLSv1 with
 cipher AES256-SHA (256/256 bits)) (No client certificate requested) by
 mail.python.org (Postfix) with ESMTPS for <python-dev@python.org>; Mon, 23
 Nov 2009 09:55:23 +0100 (CET)
Received: from list by lo.gmane.org with local (Exim 4.50) id
 1NCUha-0004EP-Fq for python-dev@python.org; Mon, 23 Nov 2009 09:55:18 +0100
Received: from 91.114.58.158 ([91.114.58.158]) by main.gmane.org with esmtp
 (Gmexim 0.1 (Debian)) id 1AlnuQ-0007hv-00 for <python-dev@python.org>; Mon,
 23 Nov 2009 09:55:18 +0100
Received: from s.r by 91.114.58.158 with local (Gmexim 0.1 (Debian)) id
 1AlnuQ-0007hv-00 for <python-dev@python.org>; Mon, 23 Nov 2009 09:55:18 +0100
X-Injected-Via-Gmane: http://gmane.org/
Lines: 28
Message-ID: <loom.20091123T095336-325@post.gmane.org>
References: <1256502140.5621.163.camel@localhost>
Mime-Version: 1.0
X-Complaints-To: usenet@ger.gmane.org
X-Gmane-NNTP-Posting-Host: sea.gmane.org
User-Agent: Loom/3.14 (http://gmane.org/)
X-Loom-IP: 91.114.58.158 (Mozilla/5.0 (X11; U; Linux x86_64; en-US;
 rv:1.9.1.5) Gecko/20091105 Fedora/3.5.5-1.fc12 Firefox/3.5.5)
X-BeenThere: python-dev@python.org
X-Mailman-Version: 2.1.12
Precedence: list
List-Id: Python core developers <python-dev.python.org>
List-Unsubscribe: <http://mail.python.org/mailman/options/python-dev>,
 <mailto:python-dev-request@python.org?subject=unsubscribe>
List-Archive: <http://mail.python.org/pipermail/python-dev>
List-Post: <mailto:python-dev@python.org>
List-Help: <mailto:python-dev-request@python.org?subject=help>
List-Subscribe: <http://mail.python.org/mailman/listinfo/python-dev>,
 <mailto:python-dev-request@python.org?subject=subscribe>
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Errors-To: python-dev-bounces+skip=pobox.com@python.org
X-Spambayes-Evidence: '*H*': 0.99; '*S*': 0.00; 'python': 0.03;
 'skip:_ 40': 0.03; 'built': 0.05; 'subject:: [': 0.05; 'added': 0.07;
 'received:80': 0.07; 'similar': 0.07; '[1]': 0.09; 'later': 0.09; 'mind': 0.09;
 'email addr:python.org': 0.13; 'across': 0.16; 'aware': 0.16; 'linux.': 0.16;
 'note,': 0.16; 'presentation': 0.16; 'received:80.91': 0.16;
 'received:80.91.229': 0.16; 'received:80.91.229.12': 0.16;
 'received:gmane.org': 0.16; 'received:list': 0.16;
 'received:lo.gmane.org': 0.16; 'subject:the': 0.16; 'url:options': 0.16;
 'usage': 0.16; 'subject:Python': 0.20; 'almost': 0.24; 'regards': 0.24;
 'several': 0.24; 'used': 0.24; 'list': 0.26; 'posted': 0.26; 'url:index': 0.26;
 'mailing': 0.27; 'able': 0.30; 'url:php': 0.30; 'url:org': 0.30;
 'customer': 0.31; 'david': 0.32; 'hello,': 0.32; 'lot': 0.32; 'mac': 0.32;
 'production': 0.32; 'thought': 0.32; 'too': 0.32; 'where': 0.33;
 'subject:] ': 0.33; 'what': 0.33; 'there': 0.34; 'current': 0.37;
 'different': 0.37; 'received:(no client certificate requested)': 0.37;
 'skip:w 20': 0.37; 'url:python': 0.38; 'running': 0.39;
 'url-ip:82.94.164/24': 0.40; 'url-ip:82.94/16': 0.40; 'came': 0.61;
 'url:%0': 0.61; 'url:2009': 0.61; 'great': 0.61; 'made': 0.61; 'time.': 0.61;
 'received:sienna.pobox.com': 0.62; 'sender:addr:python.org': 0.62;
 'time': 0.64; 'header:Received:13': 0.69; 'slow': 0.69; 'url:%40': 0.69;
 'amount': 0.70; 'company': 0.70; 'even': 0.70;
 'header:X-Complaints-To:1': 0.81; 'avg.': 0.84; 'interested.': 0.84;
 'nobody': 0.84; 'though': 0.84; 'unsubscribe:': 0.84; 'vary': 0.84;
 'url-ip:97/8': 0.91
From: Stefan Ring <s.r@visotech.at>
Sender: python-dev-bounces+skip=pobox.com@python.org
To: python-dev@python.org
Subject: Re: [Python-Dev] Reworking the GIL
Date: Mon, 23 Nov 2009 08:54:56 +0000 (UTC)
X-Spambayes-Classification: ham; 0.01

SGVsbG8sCgpJIGJ1aWx0IHNvbWV0aGluZyB2ZXJ5IHNpbWlsYXIgZm9yIG15IGNvbXBhbnkgbGFz
dCB5ZWFyLCBhbmQgaXTigJlzIGJlZW4gcnVubmluZwpmbGF3bGVzc2x5IGluIHByb2R1Y3Rpb24g
YXQgYSBmZXcgY3VzdG9tZXIgc2l0ZXMgc2luY2UsIHdpdGggYXZnLiBDUFUgdXNhZ2UgfjUwJQph
cm91bmQgdGhlIGNsb2NrLiBJIGV2ZW4gcG9zdGVkIGFib3V0IGl0IG9uIHRoZSBQeXRob24gbWFp
bGluZyBsaXN0IFsxXSB3aGVyZQp0aGVyZSB3YXMgYWxtb3N0IG5vIHJlc29uYW5jZSBhdCB0aGF0
IHRpbWUuIEkgbmV2ZXIgcG9zdGVkIGNvZGUsIHRob3VnaCAtLQpub2JvZHkgc2VlbWVkIHRvIGJl
IHRvbyBpbnRlcmVzdGVkLgoKSSBhbSB3ZWxsIGF3YXJlIHRoYXQgeW91ciBjdXJyZW50IHdvcmsg
aXMgYSBsb3QgbW9yZSBmYXItcmVhY2hpbmcgdGhhbiB3aGF0IEnigJl2ZQpkb25lLCB3aGljaCBp
cyBiYXNpY2FsbHkganVzdCBhIEZJRk8gc2NoZWR1bGVyLiBJIGV2ZW4gYWRkZWQgc2NoZWR1bGlu
Zwpwcmlvcml0aWVzIGxhdGVyIHdoaWNoIGRvbuKAmXQgd29yayB0b28gZ3JlYXQgYmVjYXVzZSB0
aGUgYW1vdW50IG9mIHRpbWUgdXNlZCBmb3IKYSAidGljayIgY2FuIHZhcnkgYnkgc2V2ZXJhbCBv
cmRlcnMgb2YgbWFnbml0dWRlLCBhcyB5b3Uga25vdy4KClRob3VnaHQgeW91IG1pZ2h0IGJlIGlu
dGVyZXN0ZWQuCgpSZWdhcmRzClN0ZWZhbgoKWzFdIGh0dHA6Ly9tYWlsLnB5dGhvbi5vcmcvcGlw
ZXJtYWlsL3B5dGhvbi1kZXYvMjAwOC1NYXJjaC8wNzc4MTQuaHRtbApbMl0gaHR0cDovL3d3dy5i
ZXN0aW5jbGFzcy5kay9pbmRleC5waHAvMjAwOS8xMC9weXRob24tdnMtY2xvanVyZS1ldm9sdmlu
Zy8KWzNdIHd3dy5kYWJlYXouY29tL3B5dGhvbi9HSUwucGRmCgpQUyBPbiBhIHNsaWdodGx5IGRp
ZmZlcmVudCBub3RlLCBJIGNhbWUgYWNyb3NzIHNvbWUgUHl0aG9uIGJhc2hpbmcgWzJdIHllc3Rl
cmRheQphbmQgc29tZWhvdyBmcm9tIHRoZXJlIHRvIERhdmlkIEJlYXpsZXnigJlzIHByZXNlbnRh
dGlvbiBhYm91dCB0aGUgR0lMIFszXS4gV2hpbGUKSSBkb27igJl0IG1pbmQgdGhlIGJhc2hpbmcs
IHRoZSBvYnNlcnZhdGlvbnMgYWJvdXQgdGhlIEdJTCBzZWVtIHF1aXRlIHVuZmFpciB0byBtZQpi
ZWNhdXNlIERhdmlk4oCZcyBtZWFzdXJlbWVudHMgaGF2ZSBiZWVuIG1hZGUgb24gTWFjIE9TIFgg
d2l0aCBpdHMgaG9ycmlibHkgc2xvdwpwdGhyZWFkcyBmdW5jdGlvbnMuIEkgd2FzIG5vdCBhYmxl
IHRvIG1lYXN1cmUgYW55IHNsb3dkb3duIG9uIExpbnV4LgoKCl9fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fClB5dGhvbi1EZXYgbWFpbGluZyBsaXN0ClB5dGhv
bi1EZXZAcHl0aG9uLm9yZwpodHRwOi8vbWFpbC5weXRob24ub3JnL21haWxtYW4vbGlzdGluZm8v
cHl0aG9uLWRldgpVbnN1YnNjcmliZTogaHR0cDovL21haWwucHl0aG9uLm9yZy9tYWlsbWFuL29w
dGlvbnMvcHl0aG9uLWRldi9za2lwJTQwcG9ib3guY29tCg==

From collinwinter@google.com  Tue Dec 15 20:50:15 2009
X-VM-v5-Data: ([nil nil nil nil nil nil nil nil nil]
	["2797" "Tuesday" "15" "December" "2009" "18:48:41" "-0800" "Collin Winter" "collinwinter@google.com" nil "72" "[unladen-swallow] Re: Q4 milestone and beyond? (let's re-schedule  GIL-less item)" "^From:" nil nil "12" nil "[unladen-swallow] Re: Q4 milestone and beyond? (let's re-schedule GIL-less item)" nil nil nil nil nil nil nil nil]
	nil)
Delivered-To: skip.montanaro@gmail.com
Received: from pop.gmail.com
 by montanaro.dyndns.org with POP3 (fetchmail-6.3.11)
 for <skip@localhost> (single-drop); Tue, 15 Dec 2009 20:50:15 -0600 (CST)
Received: by 10.216.54.195 with SMTP id i45cs23218wec;
 Tue, 15 Dec 2009 18:49:09 -0800 (PST)
Received: from mr.google.com ([10.91.41.14])
 by 10.91.41.14 with SMTP id t14mr762828agj.17.1260931748019 (num_hops = 1);
 Tue, 15 Dec 2009 18:49:08 -0800 (PST)
Received: by 10.91.41.14 with SMTP id t14mr85829agj.17.1260931747378;
 Tue, 15 Dec 2009 18:49:07 -0800 (PST)
X-BeenThere: unladen-swallow@googlegroups.com
Received: by 10.213.3.206 with SMTP id 14ls145770ebo.0.p; Tue, 15 Dec 2009 
 18:49:06 -0800 (PST)
Received: by 10.213.0.197 with SMTP id 5mr49728ebc.21.1260931745923;
 Tue, 15 Dec 2009 18:49:05 -0800 (PST)
Received: by 10.213.0.197 with SMTP id 5mr49727ebc.21.1260931745900;
 Tue, 15 Dec 2009 18:49:05 -0800 (PST)
Return-Path: <collinwinter@google.com>
Received: from smtp-out.google.com (smtp-out.google.com [216.239.33.17])
 by gmr-mx.google.com with ESMTP id 12si56694ewy.2.2009.12.15.18.49.04;
 Tue, 15 Dec 2009 18:49:04 -0800 (PST)
Received-SPF: pass (google.com: domain of collinwinter@google.com designates
 216.239.33.17 as permitted sender) client-ip=216.239.33.17; 
Received: from spaceape14.eur.corp.google.com (spaceape14.eur.corp.google.com
 [172.28.16.148]) by smtp-out.google.com with ESMTP id nBG2n48C024187
 for <unladen-swallow@googlegroups.com>; Wed, 16 Dec 2009 02:49:04 GMT
Received: from pxi13 (pxi13.prod.google.com [10.243.27.13])
 by spaceape14.eur.corp.google.com with ESMTP id nBG2mcUX011521
 for <unladen-swallow@googlegroups.com>; Tue, 15 Dec 2009 18:49:02 -0800
Received: by pxi13 with SMTP id 13so375403pxi.24
 for <unladen-swallow@googlegroups.com>; Tue, 15 Dec 2009 18:49:01 -0800 (PST)
MIME-Version: 1.0
Received: by 10.142.250.20 with SMTP id x20mr249183wfh.345.1260931741108; Tue, 
 15 Dec 2009 18:49:01 -0800 (PST)
In-Reply-To: <84fecab0912150150o36a0843ao1bd1f55ba2a3d8b@mail.gmail.com>
References: <84fecab0912150150o36a0843ao1bd1f55ba2a3d8b@mail.gmail.com>
Message-ID: <3c8293b60912151848n2cb99c29x381590836cd7d172@mail.gmail.com>
X-System-Of-Record: true
X-Original-Authentication-Results: gmr-mx.google.com; spf=pass (google.com: 
 domain of collinwinter@google.com designates 216.239.33.17 as permitted 
 sender) smtp.mail=collinwinter@google.com; dkim=pass (test mode) 
 header.i=@google.com
X-Original-Sender: collinwinter@google.com
Precedence: list
Mailing-list: list unladen-swallow@googlegroups.com; contact 
 unladen-swallow+owners@googlegroups.com
List-ID: <unladen-swallow.googlegroups.com>
List-Post: <http://groups.google.com/group/unladen-swallow/post?hl=>, 
 <mailto:unladen-swallow@googlegroups.com>
List-Help: <http://groups.google.com/support/?hl=>,
 <mailto:unladen-swallow+help@googlegroups.com>
List-Archive: <http://groups.google.com/group/unladen-swallow?hl=>
X-Thread-Url: http://groups.google.com/group/unladen-swallow/t/904026ef691592e3
X-Message-Url: http://groups.google.com/group/unladen-swallow/msg/3908cae79572d0cd
List-Unsubscribe: <http://groups.google.com/group/unladen-swallow/subscribe?hl=>, 
 <mailto:unladen-swallow+unsubscribe@googlegroups.com>
List-Subscribe: <http://groups.google.com/group/unladen-swallow/subscribe?hl=>, 
 <mailto:unladen-swallow+subscribe@googlegroups.com>
Content-Type: text/plain; charset=ISO-8859-1
X-Spambayes-Evidence: '*H*': 1.00; '*S*': 0.00; 'python': 0.04;
 'application': 0.05; 'thanks,': 0.05; 'consider': 0.07; 'implement': 0.07;
 'individual': 0.07; 'internal': 0.07; 'plan': 0.07; 'python.': 0.07;
 "we're": 0.07; 'am,': 0.09; 'focus': 0.09; 'foundation': 0.09; 'goal': 0.09;
 'goals': 0.09; 'merge': 0.09; 'necessarily': 0.09; 'problems': 0.09;
 'received:10.91': 0.09; 'url-ip:209.85.225.103/32': 0.09;
 'url-ip:209.85.225.104/32': 0.09; 'url-ip:209.85.225.105/32': 0.09;
 'url-ip:209.85.225.106/32': 0.09; 'url-ip:209.85.225.147/32': 0.09;
 'url-ip:209.85.225.99/32': 0.09; 'url:code': 0.09; 'usage': 0.09;
 'header:In-Reply-To:1': 0.13; 'be.': 0.16; 'benchmarks': 0.16;
 'cc:addr:googlegroups.com': 0.16; 'cc:addr:unladen-swallow': 0.16;
 'concrete': 0.16; 'cpython': 0.16; 'dec': 0.16; 'demonstrated': 0.16;
 'desired.': 0.16; 'django': 0.16; 'from:addr:google.com': 0.16;
 'interesting': 0.16; 'overall': 0.16; 'particular': 0.16; 'product,': 0.16;
 'quite': 0.16; 'repeat': 0.16; 'separate': 0.16; 'servers': 0.16;
 'subject:beyond': 0.16; 'subject:milestone': 0.16; 'tests.': 0.16;
 'trying': 0.16; 'unladen': 0.16; 'subject:)': 0.17; 'wrote:': 0.17;
 "don't": 0.17; 'community': 0.20; 'performance': 0.20; 'thread': 0.20;
 'could': 0.23; 'subject:: ': 0.24; 'apply': 0.24; 'date': 0.24; 'least': 0.24;
 'list.': 0.24; 'page': 0.24; 'someone': 0.24; 'thing': 0.24; 'way': 0.27;
 'thanks': 0.30; 'to:addr:gmail.com': 0.30; 'using': 0.30; 'cc:2**0': 0.31;
 'core': 0.31; 'small': 0.31; 'start': 0.31; 'url-ip:209.85.225/24': 0.31;
 'url-ip:209.85/16': 0.31; '(and': 0.32; 'build': 0.32; 'discuss': 0.32;
 'expect': 0.32; 'experience': 0.32; 'four': 0.32; 'hard': 0.32; 'of.': 0.32;
 'prior': 0.32; 'sfxlen:0': 0.32; 'url:unladen-swallow': 0.32; 'order': 0.32;
 'subject:] ': 0.32; 'add': 0.34; 'received:216': 0.34; 'skip:u 10': 0.35;
 'there': 0.35; 'what': 0.36; 'already': 0.37; 'project': 0.37;
 'projects': 0.37; 'subject:[': 0.37; 'but': 0.37; 'through': 0.39; 'put': 0.39;
 'skip:w 20': 0.39; 'url:p': 0.39; 'been': 0.61; 'those': 0.61; 'even': 0.62;
 'skip:o 10': 0.64; 'address': 0.65; 'own': 0.65; 'you,': 0.75; 'happy': 0.78;
 'above,': 0.84; 'according': 0.84; 'burn': 0.84; 'faster.': 0.84;
 'instead,': 0.84; 'potential': 0.84; 'profile': 0.84; 'received:172.28': 0.84;
 'reliable': 0.84; 'somewhat': 0.84; 'speed': 0.84; 'this!': 0.84; 'tue,': 0.84;
 'usual': 0.84; 'huge': 0.91; 'mentioned': 0.91; 'this,': 0.91; '2010': 0.93;
 'gets': 0.93; 'sender:addr:unladen-swallow': 0.96
From: Collin Winter <collinwinter@google.com>
Sender: unladen-swallow@googlegroups.com
To: Valery Khamenya <khamenya@gmail.com>
Cc: Unladen Swallow <unladen-swallow@googlegroups.com>
Subject: [unladen-swallow] Re: Q4 milestone and beyond? (let's re-schedule 
 GIL-less item)
Date: Tue, 15 Dec 2009 18:48:41 -0800
X-Spambayes-Classification: ham; 0.00

Hi Valery,

On Tue, Dec 15, 2009 at 1:50 AM, Valery Khamenya <khamenya@gmail.com> wrote:
> Hi Collin,
>
> thanks for addressing this!
>
>> Our plans have not been terribly interesting from a theoretical
>> perspective for Q3 and Q4: benchmark, profile, apply the literature,
>> address hotspots, repeat; add new benchmarks as relevant.
>
> There is at least 1 goal that many people will *definitely* consider
> as important. This goal is already mentioned in ProjectPlan: removing
> the GIL. Clearly not Q4. Hardly 2010 Q1. Just let put some date as for
> landmark.
>
> let me emphasise. If u-s is even 2x slow, then anyway one could expect
> a boost in multithreading on 4+ core servers (and those servers become
> quite usual today).

That is not necessarily true. I recommend you investigate prior work
into this field: http://code.google.com/p/python-safethread/, for
example, sped up Python on two cores but fell over on four cores and
above, according to the author.

>> Our
>> performance-centric goals have been detoured by needing to fix serious
>> problems in LLVM's just-in-time infrastructure, [...]
>
> could someone start a separate thread on this, please?

This is covered somewhat in
http://code.google.com/p/unladen-swallow/wiki/ProjectPlan#2009_Q3. I'm
happy to elaborate, if need be.

>> [...] as well as working
>> with some internal projects to address their usage of Python.
>
> Oh, yes, ditto, please put in plan concrete performance goals
> regarding Django :)
>
> Don't underestimate this product, its audience and the impact.
> www.djangoproject.com has Google Page Rank 8. (Eight.)
>
> http://trends.google.com/websites?q=www.djangoproject.com
>
> What is your favourite Python project to address? Let's compare... ;)

We do not aim to speed up individual projects; we aim to speed up
*many* projects, using individual projects as a barometers of overall
progress. A goal of "speed up Django by 50%" is worthless if Django is
the only thing that gets faster.

If Django performance is a particular sore spot for you, the best way
to address this is:
1) Profile bm_django, bm_rietveld or your own application using
cProfile or OProfile to find hotspots.
2) Discuss those hotspots on the list.
3) Implement patches and tests.
4) Repeat as desired.

Our experience using LLVM's JIT over the past six months has
demonstrated that we need to focus on stability and infrastructure in
order to create a compelling platform that we can merge into CPython.
There's a huge number of potential optimizations to be implemented,
and the small Unladen Swallow team can't do it alone. Instead, we're
trying to burn through the hard parts, and establish a maintainable,
reliable foundation that the (much) wider CPython development
community can build on top of.

Thanks,
Collin Winter

From SRS0=45Fw=H2=python.org=python-checkins-bounces+skip=pobox.com@bounce2.pobox.com  Tue Dec  8 02:58:33 2009
X-VM-v5-Data: ([nil nil nil nil nil nil nil nil nil]
	["9945" "Tuesday" "8" "December" "2009" "03:57:00" "-0500" "tarek.ziade" "python-checkins@python.org" nil "279" "[Python-checkins] r76702 - in python/trunk: Doc/distutils/examples.rst Doc/whatsnew/2.7.rst Lib/distutils/dist.py Lib/distutils/tests/test_dist.py Misc/NEWS" "^From:" nil nil "12" nil nil nil nil nil nil nil nil nil nil]
	nil)
Delivered-To: skip.montanaro@gmail.com
Received: from pop.gmail.com
 by montanaro.dyndns.org with POP3 (fetchmail-6.3.11)
 for <skip@localhost> (single-drop); Tue, 08 Dec 2009 02:58:33 -0600 (CST)
Received: by 10.216.0.80 with SMTP id 58cs939947wea;
 Tue, 8 Dec 2009 00:57:02 -0800 (PST)
Received: by 10.224.124.24 with SMTP id s24mr4370609qar.119.1260262621834;
 Tue, 08 Dec 2009 00:57:01 -0800 (PST)
Return-Path: <SRS0=45Fw=H2=python.org=python-checkins-bounces+skip=pobox.com@bounce2.pobox.com>
Received: from gold.pobox.com (gold.pobox.com [208.72.237.26])
 by mx.google.com with ESMTP id 16si8902394qyk.83.2009.12.08.00.57.01;
 Tue, 08 Dec 2009 00:57:01 -0800 (PST)
Received-SPF: pass (google.com: domain of
 SRS0=45Fw=H2=python.org=python-checkins-bounces+skip=pobox.com@bounce2.pobox.com
 designates 208.72.237.26 as permitted sender) client-ip=208.72.237.26; 
Authentication-Results: mx.google.com; spf=pass (google.com: domain of
 SRS0=45Fw=H2=python.org=python-checkins-bounces+skip=pobox.com@bounce2.pobox.com
 designates 208.72.237.26 as permitted sender)
 smtp.mail=SRS0=45Fw=H2=python.org=python-checkins-bounces+skip=pobox.com@bounce2.pobox.com
Received: from gold.pobox.com (localhost [127.0.0.1])
 by gold.pobox.com (Postfix) with ESMTP id 23248412A1D
 for <skip.montanaro@gmail.com>; Tue,  8 Dec 2009 03:57:01 -0500 (EST)
Delivered-To: skip@pobox.com
X-Pobox-Orig-Sender: <python-checkins-bounces+skip=pobox.com@python.org>
X-Pobox-Delivery-ID: A5F453D0-E3D7-11DE-93D4-F82023B34E01-00107187!gold.pobox.com
X-Original-To: python-checkins@python.org
x-pobox-client-address: 82.94.164.166
x-pobox-client-name: mail.python.org
Received: from mail.python.org (mail.python.org [82.94.164.166]) by
 gold.pobox.com (Postfix) with ESMTP id 932B5412A41 for <skip@pobox.com>; Tue,
 8 Dec 2009 03:57:00 -0500 (EST)
Received: from albatross.python.org (localhost.localdomain [127.0.0.1]) by
 mail.python.org (Postfix) with ESMTP id E7B50D37E for <skip@pobox.com>; Tue, 
 8 Dec 2009 09:56:59 +0100 (CET)
Authentication-Results: mail.python.org; dkim=permerror (bad format)
 header.i=unknown
Delivered-To: python-checkins@mail.python.org
Received: from albatross.python.org (localhost.localdomain [127.0.0.1]) by
 mail.python.org (Postfix) with ESMTP id 70160C9AE for
 <python-checkins@python.org>; Tue,  8 Dec 2009 09:56:49 +0100 (CET)
Authentication-Results: mail.python.org; dkim=permerror (bad format)
 header.i=unknown
X-Spam-Status: OK 0.000
X-Spam-Evidence: '*H*': 1.00; '*S*': 0.00; 'python,': 0.01; 'def': 0.02;
 'python': 0.05; 'else:': 0.05; 'file,': 0.05; 'modified:': 0.07; 'pep': 0.07; 
 'skip:r 30': 0.07; 'try:': 0.07; 'command': 0.09; '(original)': 0.09;
 '-from': 0.09; 'author:': 0.09; 'filling': 0.09; 'georg': 0.09; 'log:': 0.09; 
 'none)': 0.09; 'none:': 0.09; 'received:82.94.164.162': 0.09;
 'received:dinsdale.python.org': 0.09; 'revision:': 0.09; 'subject:trunk':
 0.09; 'subject:python': 0.10; 'received:82.94': 0.10; 'received:82.94.164':
 0.10; 'from:addr:python.org': 0.11; "skip:' 10": 0.14; 'function': 0.15;
 'received:python.org': 0.15; 'none': 0.15; "'')": 0.16; "'\\n')": 0.16;
 '+class': 0.16; '+from': 0.16; '-------': 0.16; '__init__': 0.16; 'author,':
 0.16; 'metadata': 0.16; 'metadata,': 0.16; 'self.name': 0.16; 'skip:: 30':
 0.16; 'subject:Lib': 0.16; 'to:addr:python-checkins': 0.16; 'tree.': 0.16;
 'uninstall': 0.16; 'install': 0.17; 'project,': 0.17; 'script': 0.18;
 'import': 0.19; 'interface': 0.20; 'skip:u 20': 0.20; 'code': 0.21;
 'extension': 0.23; 'skip:m 40': 0.23; 'version,': 0.23; 'library': 0.24;
 'modules': 0.25; 'version': 0.26; 'written': 0.27; 'defined': 0.27; '1.1':
 0.29; 'skip:d 40': 0.29; 'source': 0.30; 'class': 0.31; 'user': 0.31;
 'binary': 0.31; 'project': 0.31; 'issue': 0.32; 'values': 0.32; 'subject:: ':
 0.34; 'file': 0.35; 'but': 0.35; 'received:org': 0.35; 'name,': 0.35; '+++':
 0.36; 'skip:s 40': 0.36; 'files': 0.36; 'date:': 0.36; 'received:82': 0.36;
 'skip:" 10': 0.36; '>>>': 0.37; 'alongside': 0.37; 'class,': 0.37; 'forth.':
 0.37; 'meta': 0.37; 'path': 0.37; 'query': 0.37; 'skip:p 30': 0.37;
 'warning:': 0.37; 'using': 0.37; 'skip:d 20': 0.37; "what's": 0.37; 'two':
 0.37; 'too': 0.38; 'skip:_ 30': 0.38; 'skip:s 20': 0.39; 'skip:u 10': 0.39;
 'skip:_ 20': 0.40; 'created': 0.40; 'finish': 0.61; 'minor': 0.61; 'value':
 0.61; 'name': 0.61; 'suite': 0.61; 'fields': 0.63; 'skip:m 20': 0.63;
 'provides': 0.63; 'distribute': 0.64; 'back': 0.64; 'skip:: 10': 0.66;
 'skip:w 20': 0.67; 'skip:t 30': 0.71; 'title': 0.71; 'skip:+ 10': 0.72;
 'major': 0.80; '2.7': 0.84; 'skip:+ 40': 0.84; 'skip:\\ 10': 0.84; 'skip:\\
 20': 0.84; 'message-id:invalid': 0.88; 'subject:NEWS': 0.91; 'accepts': 0.93
Received: from localhost.localdomain (HELO mail.python.org) (127.0.0.1) by
 albatross.python.org with SMTP; 08 Dec 2009 09:56:49 +0100
Received: from dinsdale.python.org (dinsdale.python.org [82.94.164.162]) by
 mail.python.org (Postfix) with ESMTP for <python-checkins@python.org>; Tue, 
 8 Dec 2009 09:56:49 +0100 (CET)
MIME-Version: 1.0
X-BeenThere: python-checkins@python.org
X-Mailman-Version: 2.1.12
Precedence: list
List-Id: Check-in messages from the Python maintainers
 <python-checkins.python.org>
List-Unsubscribe: <http://mail.python.org/mailman/options/python-checkins>,
 <mailto:python-checkins-request@python.org?subject=unsubscribe>
List-Archive: <http://mail.python.org/pipermail/python-checkins>
List-Post: <mailto:python-checkins@python.org>
List-Help: <mailto:python-checkins-request@python.org?subject=help>
List-Subscribe: <http://mail.python.org/mailman/listinfo/python-checkins>,
 <mailto:python-checkins-request@python.org?subject=subscribe>
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: 7bit
Errors-To: python-checkins-bounces+skip=pobox.com@python.org
Message-Id: <20091208085700.932B5412A41@gold.pobox.com>
X-Spambayes-Evidence: '*H*': 1.00; '*S*': 0.00; 'python': 0.04;
 'skip:_ 40': 0.04; 'command': 0.05; 'skip:- 10': 0.05; 'added': 0.07;
 'method': 0.07; 'provides': 0.07; 'skip:_ 10': 0.07; 'source': 0.07;
 '+++': 0.09; 'author:': 0.09; 'class': 0.09; 'def': 0.09; 'extension': 0.09;
 'from:addr:python.org': 0.09; 'log:': 0.09; 'modified:': 0.09; 'path': 0.09;
 'revision:': 0.09; "skip:' 10": 0.09; 'skip:+ 10': 0.09; 'skip:_ 20': 0.09;
 'skip:s 30': 0.09; 'skip:s 40': 0.09; 'subject:checkins': 0.09;
 'support': 0.13; '"",': 0.16; '(original)': 0.16; '+and': 0.16; '+class': 0.16;
 '+in': 0.16; '+the': 0.16; '+this': 0.16; '+you': 0.16; '-------': 0.16;
 '-from': 0.16; '>>>': 0.16; 'arguments': 0.16; 'binary': 0.16; 'dec': 0.16;
 'email name:python-checkins': 0.16; 'extension.': 0.16; 'file,': 0.16;
 'instead': 0.16; 'library': 0.16; 'message-id:@gold.pobox.com': 0.16;
 'name)': 0.16; 'parsing.': 0.16; 'project,': 0.16; 'query': 0.16;
 'reads': 0.16; 'received:82.94.164.162': 0.16;
 'received:dinsdale.python.org': 0.16; 'release': 0.16;
 'sender:addr:python-checkins-bounces+skip=pobox.com': 0.16; 'skip:= 70': 0.16;
 'skip:_ 30': 0.16; 'skip:d 30': 0.16; 'skip:d 40': 0.16; 'skip:p 30': 0.16;
 'skip:r 30': 0.16; 'skip:s 50': 0.16; 'static': 0.16; 'subject:trunk': 0.16;
 'to:addr:python-checkins': 0.16; 'url:python-checkins': 0.16;
 'email addr:python.org': 0.17; 'python,': 0.20; 'back': 0.21; 'could': 0.23;
 '---': 0.24; 'created': 0.24; 'date:': 0.24; 'interface': 0.24; 'issue': 0.24;
 'major': 0.24; 'skip:t 30': 0.24; 'subject:Python': 0.24; "what's": 0.24;
 'below.': 0.26; 'header:Received:10': 0.28; 'list': 0.28; 'call': 0.30;
 'code': 0.30; 'mailing': 0.30; 'skip:( 10': 0.30; 'using': 0.30; 'user': 0.31;
 'exist': 0.32; 'function': 0.32; 'given': 0.32; 'skip:+ 20': 0.32;
 'skip:+ 40': 0.32; 'skip:d 20': 0.32; 'skip:m 30': 0.32; 'url-ip:192/8': 0.32;
 'version': 0.32; 'skip:" 10': 0.32; 'subject:] ': 0.32; 'url:org': 0.32;
 'running': 0.34; 'skip:u 10': 0.35; 'skip:s 20': 0.36; 'project': 0.37;
 'subject:[': 0.37; 'but': 0.37; 'through': 0.39; 'when': 0.39;
 'skip:w 20': 0.39; 'subject: - ': 0.39; 'url:python': 0.39; 'fields': 0.61;
 'skip:m 20': 0.61; 'subject:/': 0.61; 'value': 0.61; 'actual': 0.61;
 'skip:c 10': 0.67; 'sender:addr:python.org': 0.68; 'distribution': 0.69;
 'hold': 0.69; 'return': 0.69; 'subject:\n ': 0.70; 'accepts': 0.84;
 'numbers': 0.84; 'packages': 0.84; 'script': 0.84; 'subject::\n ': 0.84;
 'tree.': 0.84; 'warning:': 0.84; 'finish': 0.91
From: tarek.ziade <python-checkins@python.org>
Sender: python-checkins-bounces+skip=pobox.com@python.org
To: python-checkins@python.org
Subject: [Python-checkins] r76702 - in python/trunk:
 Doc/distutils/examples.rst Doc/whatsnew/2.7.rst Lib/distutils/dist.py
 Lib/distutils/tests/test_dist.py Misc/NEWS
Date: Tue,  8 Dec 2009 03:57:00 -0500 (EST)
X-Spambayes-Classification: ham; 0.00

Author: tarek.ziade
Date: Tue Dec  8 09:56:49 2009
New Revision: 76702

Log:
Issue #7457: added a read_pkg_file method to distutils.dist.DistributionMetadata so we can read back PKG-INFO files

Modified:
   python/trunk/Doc/distutils/examples.rst
   python/trunk/Doc/whatsnew/2.7.rst
   python/trunk/Lib/distutils/dist.py
   python/trunk/Lib/distutils/tests/test_dist.py
   python/trunk/Misc/NEWS

Modified: python/trunk/Doc/distutils/examples.rst
==============================================================================
--- python/trunk/Doc/distutils/examples.rst	(original)
+++ python/trunk/Doc/distutils/examples.rst	Tue Dec  8 09:56:49 2009
@@ -285,6 +285,48 @@
     warning: check: Title underline too short. (line 2)
     warning: check: Could not finish the parsing.
 
+Reading the metadata
+=====================
+
+The :func:`distutils.core.setup` function provides a command-line interface
+that allows you to query the metadata fields of a project through the
+`setup.py` script of a given project::
+
+    $ python setup.py --name
+    distribute
+
+This call reads the `name` metadata by running the
+:func:`distutils.core.setup`  function. Although, when a source or binary
+distribution is created with Distutils, the metadata fields are written
+in a static file called :file:`PKG-INFO`. When a Distutils-based project is
+installed in Python, the :file:`PKG-INFO` file is copied alongside the modules
+and packages of the distribution under :file:`NAME-VERSION-pyX.X.egg-info`,
+where `NAME` is the name of the project, `VERSION` its version as defined
+in the Metadata, and `pyX.X` the major and minor version of Python like
+`2.7` or `3.2`.
+
+You can read back this static file, by using the
+:class:`distutils.dist.DistributionMetadata` class and its
+:func:`read_pkg_file` method::
+
+    >>> from distutils.dist import DistributionMetadata
+    >>> metadata = DistributionMetadata()
+    >>> metadata.read_pkg_file(open('distribute-0.6.8-py2.7.egg-info'))
+    >>> metadata.name
+    'distribute'
+    >>> metadata.version
+    '0.6.8'
+    >>> metadata.description
+    'Easily download, build, install, upgrade, and uninstall Python packages'
+
+Notice that the class can also be instanciated with a metadata file path to
+loads its values::
+
+    >>> pkg_info_path = 'distribute-0.6.8-py2.7.egg-info'
+    >>> DistributionMetadata(pkg_info_path).name
+    'distribute'
+
+
 .. % \section{Multiple extension modules}
 .. % \label{multiple-ext}
 

Modified: python/trunk/Doc/whatsnew/2.7.rst
==============================================================================
--- python/trunk/Doc/whatsnew/2.7.rst	(original)
+++ python/trunk/Doc/whatsnew/2.7.rst	Tue Dec  8 09:56:49 2009
@@ -539,6 +539,10 @@
   process, but instead simply not install the failing extension.
   (Contributed by Georg Brandl; :issue:`5583`.)
 
+  Issue #7457: added a read_pkg_file method to.distutils.dist.DistributionMetadata
+  see file:///MacDev/svn.python.org/python-trunk/Doc/build/html/distutils/examples.html#reading-the-metadata
+  (:issue:`7457`, added by Tarek).
+
 * The :class:`Fraction` class now accepts two rational numbers
   as arguments to its constructor.
   (Implemented by Mark Dickinson; :issue:`5812`.)

Modified: python/trunk/Lib/distutils/dist.py
==============================================================================
--- python/trunk/Lib/distutils/dist.py	(original)
+++ python/trunk/Lib/distutils/dist.py	Tue Dec  8 09:56:49 2009
@@ -7,6 +7,7 @@
 __revision__ = "$Id$"
 
 import sys, os, re
+import rfc822
 
 try:
     import warnings
@@ -1006,6 +1007,20 @@
     # to self.metadata.get_XXX.  The actual code is in the
     # DistributionMetadata class, below.
 
+class _MetadataMessage(rfc822.Message):
+
+    def read_field(self, name):
+        value = self[name]
+        if value == 'UNKNOWN':
+            return None
+        return value
+
+    def getheaders(self, name, default):
+        values = rfc822.Message.getheaders(self, name)
+        if values == []:
+            return None
+        return values
+
 class DistributionMetadata:
     """Dummy class to hold the distribution meta-data: name, version,
     author, and so forth.
@@ -1021,25 +1036,67 @@
                          "provides", "requires", "obsoletes",
                          )
 
-    def __init__ (self):
-        self.name = None
-        self.version = None
-        self.author = None
-        self.author_email = None
+    def __init__(self, path=None):
+        if path is not None:
+            self.read_pkg_file(open(path))
+        else:
+            self.name = None
+            self.version = None
+            self.author = None
+            self.author_email = None
+            self.maintainer = None
+            self.maintainer_email = None
+            self.url = None
+            self.license = None
+            self.description = None
+            self.long_description = None
+            self.keywords = None
+            self.platforms = None
+            self.classifiers = None
+            self.download_url = None
+            # PEP 314
+            self.provides = None
+            self.requires = None
+            self.obsoletes = None
+
+    def read_pkg_file(self, file):
+        """Reads the metadata values from a file object."""
+        msg = _MetadataMessage(file)
+        metadata_version = msg['metadata-version']
+        self.name = msg.read_field('name')
+        self.version = msg.read_field('version')
+        self.description = msg.read_field('summary')
+        # we are filling author only.
+        self.author = msg.read_field('author')
         self.maintainer = None
+        self.author_email = msg.read_field('author-email')
         self.maintainer_email = None
-        self.url = None
-        self.license = None
-        self.description = None
-        self.long_description = None
-        self.keywords = None
-        self.platforms = None
-        self.classifiers = None
-        self.download_url = None
-        # PEP 314
-        self.provides = None
-        self.requires = None
-        self.obsoletes = None
+        self.url = msg.read_field('home-page')
+        self.license = msg.read_field('license')
+
+        if 'download-url' in msg:
+            self.download_url = msg.read_field('download-url')
+        else:
+            self.download_url = None
+
+        self.long_description = msg.read_field('description')
+        self.description = msg.read_field('summary')
+
+        if 'keywords' in msg:
+            self.keywords = msg.read_field('keywords').split(',')
+
+        self.platforms = msg.getheaders('platform', None)
+        self.classifiers = msg.getheaders('classifier', None)
+
+        # PEP 314 - these fields only exist in 1.1
+        if metadata_version == '1.1':
+            self.requires = msg.getheaders('requires', None)
+            self.provides = msg.getheaders('provides', None)
+            self.obsoletes = msg.getheaders('obsoletes', None)
+        else:
+            self.requires = None
+            self.provides = None
+            self.obsoletes = None
 
     def write_pkg_info(self, base_dir):
         """Write the PKG-INFO file into the release tree.

Modified: python/trunk/Lib/distutils/tests/test_dist.py
==============================================================================
--- python/trunk/Lib/distutils/tests/test_dist.py	(original)
+++ python/trunk/Lib/distutils/tests/test_dist.py	Tue Dec  8 09:56:49 2009
@@ -8,10 +8,9 @@
 import warnings
 import textwrap
 
-from distutils.dist import Distribution, fix_help_options
+from distutils.dist import Distribution, fix_help_options, DistributionMetadata
 from distutils.cmd import Command
 import distutils.dist
-
 from test.test_support import TESTFN, captured_stdout
 from distutils.tests import support
 
@@ -239,6 +238,7 @@
         # make sure --no-user-cfg disables the user cfg file
         self.assertEquals(len(all_files)-1, len(files))
 
+
 class MetadataTestCase(support.TempdirManager, support.EnvironGuard,
                        unittest.TestCase):
 
@@ -397,6 +397,33 @@
         meta = meta.replace('\n' + 8 * ' ', '\n')
         self.assertTrue(long_desc in meta)
 
+    def test_read_metadata(self):
+        attrs = {"name": "package",
+                 "version": "1.0",
+                 "long_description": "desc",
+                 "description": "xxx",
+                 "download_url": "http://example.com",
+                 "keywords": ['one', 'two'],
+                 "requires": ['foo']}
+
+        dist = Distribution(attrs)
+        metadata = dist.metadata
+
+        # write it then reloads it
+        PKG_INFO = StringIO.StringIO()
+        metadata.write_pkg_file(PKG_INFO)
+        PKG_INFO.seek(0)
+        metadata.read_pkg_file(PKG_INFO)
+
+        self.assertEquals(metadata.name, "package")
+        self.assertEquals(metadata.version, "1.0")
+        self.assertEquals(metadata.description, "xxx")
+        self.assertEquals(metadata.download_url, 'http://example.com')
+        self.assertEquals(metadata.keywords, ['one', 'two'])
+        self.assertEquals(metadata.platforms, ['UNKNOWN'])
+        self.assertEquals(metadata.obsoletes, None)
+        self.assertEquals(metadata.requires, ['foo'])
+
 def test_suite():
     suite = unittest.TestSuite()
     suite.addTest(unittest.makeSuite(DistributionTestCase))

Modified: python/trunk/Misc/NEWS
==============================================================================
--- python/trunk/Misc/NEWS	(original)
+++ python/trunk/Misc/NEWS	Tue Dec  8 09:56:49 2009
@@ -15,6 +15,8 @@
 Library
 -------
 
+- Issue #7457: added a read_pkg_file method to 
+  distutils.dist.DistributionMetadata.
 
 What's New in Python 2.7 alpha 1
 ================================
_______________________________________________
Python-checkins mailing list
Python-checkins@python.org
http://mail.python.org/mailman/listinfo/python-checkins

From SRS0=mBxM=ID=email.bn.com=BarnesandNobleEmail@bounce2.pobox.com  Thu Dec 17 02:10:26 2009
X-VM-v5-Data: ([nil nil nil nil nil nil nil nil nil]
	["14083" "Thursday" "17" "December" "2009" "03:08:57" "-0500" "Barnes & Noble" "BarnesandNobleEmail@email.bn.com" nil "207" "15% Online Coupon, plus 4 Days Left for Free Christmas Delivery" "^From:" nil nil "12" nil nil nil nil nil nil nil nil nil nil]
	nil)
Delivered-To: skip.montanaro@gmail.com
Received: from pop.gmail.com
 by montanaro.dyndns.org with POP3 (fetchmail-6.3.11)
 for <skip@localhost> (single-drop); Thu, 17 Dec 2009 02:10:25 -0600 (CST)
Received: by 10.216.54.195 with SMTP id i45cs122159wec;
 Thu, 17 Dec 2009 00:09:02 -0800 (PST)
Received: by 10.224.108.198 with SMTP id g6mr1429569qap.107.1261037341274;
 Thu, 17 Dec 2009 00:09:01 -0800 (PST)
Return-Path: <SRS0=mBxM=ID=email.bn.com=BarnesandNobleEmail@bounce2.pobox.com>
Received: from sepia.pobox.com (sepia.pobox.com [208.72.237.18])
 by mx.google.com with ESMTP id 6si4957128qwk.21.2009.12.17.00.09.00;
 Thu, 17 Dec 2009 00:09:01 -0800 (PST)
Received-SPF: pass (google.com: domain of
 SRS0=mBxM=ID=email.bn.com=BarnesandNobleEmail@bounce2.pobox.com designates
 208.72.237.18 as permitted sender) client-ip=208.72.237.18; 
Authentication-Results: mx.google.com; spf=pass (google.com: domain of
 SRS0=mBxM=ID=email.bn.com=BarnesandNobleEmail@bounce2.pobox.com designates
 208.72.237.18 as permitted sender)
 smtp.mail=SRS0=mBxM=ID=email.bn.com=BarnesandNobleEmail@bounce2.pobox.com
Received: from sepia.pobox.com (localhost [127.0.0.1])
 by sepia.pobox.com (Postfix) with ESMTP id 484F0415089
 for <skip.montanaro@gmail.com>; Thu, 17 Dec 2009 03:09:00 -0500 (EST)
Delivered-To: skip@pobox.com
X-Pobox-Orig-Sender: <BarnesandNobleEmail@email.bn.com>
X-Pobox-Delivery-ID: 6E6FBFE0-EAE3-11DE-AA43-FC49F28B9240-00107187!sepia.pobox.com
x-pobox-client-address: 198.31.62.91
x-pobox-client-name: mta.email.bn.com
Received: from mta.email.bn.com (mta.email.bn.com [198.31.62.91]) by
 sepia.pobox.com (Postfix) with ESMTP id F187A415152 for <skip@pobox.com>;
 Thu, 17 Dec 2009 03:08:57 -0500 (EST)
Message-Id: <Kilauea103628-38343-222077119-3-1006@flonetwork.com>
MIME-Version: 1.0
Content-Type: multipart/alternative;
 boundary="----000000000000000000000000000000000000000000000000000000000000000"
X-Spambayes-Evidence: '*H*': 0.00; '*S*': 1.00; 'code': 0.04; '50%': 0.16;
 'electronic': 0.16; 'preferences': 0.16; 'url:11': 0.16; 'url:2009': 0.16;
 'skip:u 10': 0.16; 'subject': 0.29; 'one': 0.32; 'received:208': 0.33;
 'received:208.72': 0.33; 'received:208.72.237': 0.33;
 'received:208.72.237.18': 0.35; 'received:sepia.pobox.com': 0.35;
 'receive': 0.37; 'any': 0.38; 'charset:us-ascii': 0.38; 'all': 0.40;
 'email': 0.65; 'header:Reply-To:1': 0.66; 'our': 0.66; 'to:addr:skip': 0.67;
 'add': 0.67; 'address': 0.67; 'details': 0.67; 'having': 0.67; 'top': 0.67;
 'to:addr:pobox.com': 0.69; 'please': 0.71; 'content-type:text/html': 0.75;
 'content-type:multipart/alternative': 0.77; '&copy; ': 0.84; 'below': 0.84;
 'book.': 0.84; 'electronics': 0.84; 'email?': 0.84; 'ensure': 0.84;
 'home': 0.84; 'href=""': 0.84; 'including': 0.84; 'learning': 0.84;
 'marketing': 0.84; 'must': 0.84; 'offer': 0.84; 'sale': 0.84;
 'subject:Delivery': 0.84; 'url-ip:96.17.150/24': 0.84; 'url-ip:96.17/16': 0.84;
 'url-ip:96/8': 0.84; 'above': 0.91; 'choose': 0.91; 'days': 0.91;
 'more.': 0.91; 'tools,': 0.91; 'trouble': 0.91; 'unsubscribe.': 0.91;
 'url-ip:208/8': 0.91; 'url:email': 0.93; 'url:pobox': 0.93; 'url:skip': 0.93;
 'viewing': 0.93; '&amp; ': 0.95; 'delivery': 0.95; 'url:gif': 0.95;
 'here': 0.96; 'url:jpg': 0.96; 'free': 0.97; 'header:Received:6': 0.97
From: "Barnes & Noble" <BarnesandNobleEmail@email.bn.com>
To: skip@pobox.com
Subject: 15% Online Coupon, plus 4 Days Left for Free Christmas Delivery
Date: Thu, 17 Dec 2009 03:08:57 -0500 (EST)
Reply-To: "Barnes & Noble "
 <BarnesandNobleEmail-ctg0aeb64aabstga2pfax5fstzyzaeha@email.bn.com>
X-Spambayes-Classification: spam; 1.00

------000000000000000000000000000000000000000000000000000000000000000
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: 7bit

To ensure you receive your Barnes & Noble emails, please add BarnesandNobleEmail@email.bn.com to your address book.

4 DAYS LEFT FOR FREE DELIVERY BY CHRISTMAS!*

*****

NEW ONLINE HOLIDAY COUPON

Extra 15% Off One Item**
On top of your everyday Member discount

4 Days Only! Expires Sunday, 12/20

>USE BN.com COUPON:
http://email.bn.com/cgi-bin6/DM/y/mcvI0RIIFT0KnD0BYnE0FV

To save 15% online you must enter coupon code V4P9A8V at checkout.

*****

SAVE UP TO 50% IN OUR GIFT GUIDE

Shop the season's hottest gifts including bestselling fiction,
children's books, DVDs, music, toys, games, and more.

>SHOP THE BN.COM HOLIDAY GIFT GUIDE:
http://email.bn.com/cgi-bin6/DM/y/mcvI0RIIFT0KnD0BYnF0FW

*****

HOME & ELECTRONICS SALE AT BN.COM

$10 Off Any $50 Home Electronics Purchase
>See Details:
http://email.bn.com/cgi-bin6/DM/y/mcvI0RIIFT0KnD0BYnG0FX

Choose from over 200 select audio and video gift ideas,
learning tools, gadgets, and accessories in the
BN.com Electronic Store.

Hurry! Offer ends 12/22
The above 15% BN.com coupon is not valid on Electronics.

>SHOP AT BN.COM:
http://email.bn.com/cgi-bin6/DM/y/mcvI0RIIFT0KnD0BYnH0FY

*****

*Free Delivery by Christmas Offer Details:
http://email.bn.com/cgi-bin6/DM/y/mcvI0RIIFT0KnD0BYnI0FZ

**Online Coupon V4P9A8V Offer Details:
http://email.bn.com/cgi-bin6/DM/y/mcvI0RIIFT0KnD0BYnJ0Fa

*****

Subject to availability. Prices are subject to change.

Click below to unsubscribe.
http://email.bn.com/cgi-bin6/DM/y/mcvI0RIIFT0KnD0BMYs0Fi&EmailAddr=skip@pobox.com

(c) 2009 Barnes & Noble. All Rights Reserved.
This email is an advertisement from Barnes & Noble, Inc., 76 Ninth Avenue New York, NY 10011, Attn: Marketing Preferences

------000000000000000000000000000000000000000000000000000000000000000
Content-Type: text/html; charset="us-ascii"
Content-Transfer-Encoding: 7bit

<html>
<head>
<title></title>
<style media="all" type="text/css">
table img { display:block; }
</style>
</head>
<body bgcolor="#bcdedd" marginheight="0" marginwidth="0" topmargin="0" leftmargin="0">

<table width="100%" bgcolor="#bcdedd" cellpadding="0" border="0">
  <tr>
    <td>
    
      <table width="775" border="0" cellpadding="0" cellspacing="0" align="center">
        <tr>
          <td width="775" align="left"><img src="http://images.barnesandnoble.com/pimages/email/gresources/spacer.gif" style="display:inline;" width="20" height="1" border="0" alt=" "><font face="arial" size="1" color="#333333"><font style="font-size:10px;">To ensure you receive your Barnes & Noble emails, please add <a href="mailto:BarnesandNobleEmail@email.bn.com" style="color:#5e8663"><b>BarnesandNobleEmail@email.bn.com</b></a> to your address book.</font></font><br><img src="http://images.barnesandnoble.com/pimages/email/gresources/spacer.gif" style="display:inline;" width="20" height="1" border="0" alt=" "><font face="arial" size="1" color="#003045" style="font-size:10px;">Having trouble viewing the email?&nbsp;<a href="http://email.bn.com/cgi-bin6/DM/y/ncvI0RIIFT0KnD0BYnK0Ea" style="color:#003045">Click Here</a></font></td>
        </tr>
        <tr>
          <td width="775" height="77"><b><img src="http://images.barnesandnoble.com/pimages/email/2009/11/HGG/header_775a_mem.jpg" alt="Barnes & Noble Member card" width="775" height="147" border="0" usemap="#map_member_logo"></b></td>
        </tr>
      </table>

      <table border="0" cellpadding="0" cellspacing="0" align="center" width="775">
        <tr>
          <td valign="middle" align="center"><font color="#003045" face="arial" size="1"><a href="http://email.bn.com/cgi-bin6/DM/y/ncvI0RIIFT0KnD0BYnL0Eb" style="text-decoration:none; color:#003045; font-size:12px;">BOOKS</a></font></td>
          <td valign="middle" align="center"><font color="#003045" face="arial" size="1">&nbsp; | &nbsp;</font></td>
          <td valign="middle" align="center"><font color="#003045" face="arial" size="1"><a href="http://email.bn.com/cgi-bin6/DM/y/ncvI0RIIFT0KnD0BYnM0Ec" style="text-decoration:none; color:#003045; font-size:12px;">eBOOKS</a></font></td>
          <td valign="middle" align="center"><font color="#003045" face="arial" size="1">&nbsp; | &nbsp;</font></td>
          <td valign="middle" align="center"><font color="#003045" face="arial" size="1"><a href="http://email.bn.com/cgi-bin6/DM/y/ncvI0RIIFT0KnD0BYnN0Ed" style="text-decoration:none; color:#003045; font-size:12px;">nook</a></font></td>
          <td valign="middle" align="center"><font color="#003045" face="arial" size="1">&nbsp; | &nbsp;</font></td>
          <td valign="middle" align="center"><font color="#003045" face="arial" size="1"><a href="http://email.bn.com/cgi-bin6/DM/y/ncvI0RIIFT0KnD0BYnO0Ee" style="text-decoration:none; color:#003045; font-size:12px;">DVDs</a></font></td>
          <td valign="middle" align="center"><font color="#003045" face="arial" size="1">&nbsp; | &nbsp;</font></td>
          <td valign="middle" align="center"><font color="#003045" face="arial" size="1"><a href="http://email.bn.com/cgi-bin6/DM/y/ncvI0RIIFT0KnD0BYnP0Ef" style="text-decoration:none; color:#003045; font-size:12px;">MUSIC</a></font></td>
          <td valign="middle" align="center"><font color="#003045" face="arial" size="1">&nbsp; | &nbsp;</font></td>
          <td valign="middle" align="center"><font color="#003045" face="arial" size="1"><a href="http://email.bn.com/cgi-bin6/DM/y/ncvI0RIIFT0KnD0BYnQ0Eg" style="text-decoration:none; color:#003045; font-size:12px;">KIDS</a></font></td>
          <td valign="middle" align="center"><font color="#003045" face="arial" size="1">&nbsp; | &nbsp;</font></td>
          <td valign="middle" align="center"><font color="#003045" face="arial" size="1"><a href="http://email.bn.com/cgi-bin6/DM/y/ncvI0RIIFT0KnD0BYnR0Eh" style="text-decoration:none; color:#003045; font-size:12px;">HOME &amp; GIFT</a></font></td>
          <td valign="middle" align="center"><font color="#003045" face="arial" size="1">&nbsp; | &nbsp;</font></td>
          <td valign="middle" align="center"><font color="#003045" face="arial" size="1"><a href="http://email.bn.com/cgi-bin6/DM/y/ncvI0RIIFT0KnD0BYnS0Ei" style="text-decoration:none; color:#003045; font-size:12px;">GIFT CARDS</a></font></td>
          <td valign="middle" align="center"><font color="#003045" face="arial" size="1">&nbsp; | &nbsp;</font></td>
          <td valign="middle" align="center"><font color="#003045" face="arial" size="1"><a href="http://email.bn.com/cgi-bin6/DM/y/ncvI0RIIFT0KnD0BYnT0Ej" style="text-decoration:none; color:#003045; font-size:12px;">STORE LOCATOR</a></font></td>
          <td valign="middle" align="center"><font color="#003045" face="arial" size="1">&nbsp; | &nbsp;</font></td>
          <td valign="middle" align="center"><font color="#af292e" face="arial" size="1"><a href="http://email.bn.com/cgi-bin6/DM/y/ncvI0RIIFT0KnD0BYnF0EV" style="text-decoration:none; color:#af292e ; font-size:12px;"><strong>GIFT GUIDE</strong></a></font></td>
        </tr>
      </table>
      
      <table width="775" border="0" cellspacing="0" cellpadding="0" align="center">
        <tr>
          <td><img src="http://images.barnesandnoble.com/pimages/email/gresources/spacer.gif" style="display:inline;" width="1" height="10" border="0" alt=" "></td>
        </tr>
      </table>
      
      <table width="775" bgcolor="#ffffff" cellpadding="0" cellspacing="0" border="0" align="center">
        <tr>
          <td width="775" height="77"><a href="http://email.bn.com/cgi-bin6/DM/y/ncvI0RIIFT0KnD0BYnI0EY"><img src="http://images.barnesandnoble.com/pimages/email/2009/12/HGG/OnlineCoup/1217_M_OnlineCoup_01.gif" alt="4 DAYS LEFT for FREE DELIVERY by Christmas! SEE DETAILS" width="775" height="92" border="0"></a></td>
        </tr>
        <tr>
          <td width="775" height="77"><a href="http://email.bn.com/cgi-bin6/DM/y/ncvI0RIIFT0KnD0BYnE0EU"><img src="http://images.barnesandnoble.com/pimages/email/2009/12/HGG/OnlineCoup/1217_M_OnlineCoup_02.gif" alt="NEW - ONLINE Holiday Coupon" width="775" height="205" border="0"></a></td>
        </tr>
        <tr>
          <td width="775" height="77"><a href="http://email.bn.com/cgi-bin6/DM/y/ncvI0RIIFT0KnD0BYnE0EU"><img src="http://images.barnesandnoble.com/pimages/email/2009/12/HGG/OnlineCoup/1217_M_OnlineCoup_03.jpg" alt="Graphic Image: Gift box" width="775" height="296" border="0"></a></td>
        </tr>
        <tr>
          <td width="775" height="77"><a href="http://email.bn.com/cgi-bin6/DM/y/ncvI0RIIFT0KnD0BYnE0EU"><img src="http://images.barnesandnoble.com/pimages/email/2009/12/HGG/OnlineCoup/1217_M_OnlineCoup_04.jpg" alt="Extra 15% OFF ONE ITEM" width="775" height="288" border="0"></a></td>
        </tr>
        <tr>
          <td width="775" height="77"><a href="http://email.bn.com/cgi-bin6/DM/y/ncvI0RIIFT0KnD0BYnE0EU"><img src="http://images.barnesandnoble.com/pimages/email/2009/12/HGG/OnlineCoup/1217_M_OnlineCoup_05.gif" alt="On top of you everyday Member discount. 4 Days Only! Expires Sunday, 12/20. USE BN.COM COUPON" width="775" height="175" border="0"></a></td>
        </tr>
      </table>

      <table width="775" bgcolor="#e3dfb2" cellpadding="0" cellspacing="0" border="0" align="center">
        <tr>
          <td width="267" height="35"><img src="http://images.barnesandnoble.com/pimages/email/2009/12/HGG/1217_B2B_OnlineCoup_06.gif" alt="" width="267" height="35" border="0"></td>
          <td width="247" bgcolor="#e3dfb2" height="35" align="center">

            <font face="arial" size="1" color="#333333">
              <font style="font-size:11px;">
              
                To save 15% online you must enter coupon code <strong><font color="#891a1c">V4P9A8V</font></strong> at checkout. <a href="http://email.bn.com/cgi-bin6/DM/y/ncvI0RIIFT0KnD0BYnJ0EZ" style="color:#000000;"><font style="font-size:10px;"><font color="#000000">SEE DETAILS</font></font></a>
              
              </font>
            </font>

          </td>
          <td width="261" height="35"><img src="http://images.barnesandnoble.com/pimages/email/2009/12/HGG/1217_B2B_OnlineCoup_08.gif" alt="" width="261" height="35" border="0"></td>
        </tr>
      </table>

      <table width="775" bgcolor="#ffffff" cellpadding="0" cellspacing="0" border="0" align="center">
        <tr>
          <td><img src="http://images.barnesandnoble.com/pimages/email/2009/12/HGG/OnlineCoup/1217_M_OnlineCoup_09.gif" alt="" width="775" height="65" border="0"></td>
        </tr>
<!--
        <tr>
          <td width="775" height="77"><a href="http://email.bn.com/cgi-bin6/DM/y/ncvI0RIIFT0KnD0BYnU0Ek"><img src="http://images.barnesandnoble.com/pimages/email/2009/12/HGG/OnlineCoup/1217_M_OnlineCoup_10.jpg" alt="FLIP FOR THIS DEAL - Get 2 Free Accessories with Select Flip Camcorders -- That's a $40 Value! Hurry - First 1,000 Units Only.  The above 15% BN.com coupon is not valid on Flip or Flip accessories. SHOP NOW." width="775" height="312" border="0"></a></td>
        </tr>
-->
      </table>

      <table width="775" bgcolor="#ffffff" cellpadding="0" cellspacing="0" border="0" align="center">
        <tr>
          <td width="386" height="177"><img src="http://images.barnesandnoble.com/pimages/email/2009/12/HGG/OnlineCoup/1217_M_OnlineCoup_11.jpg" alt="HOME & ELECTRONICS SALE AT BN.COM. $10 Off Any $50 Home Electronics Purchase. See Details. Choose from over 200 select audio and video gift ideas, learning tools, gadgets, and accessories in the BN.com Electronic Store. Hurry! Offer ends 12/22. The above 15% BN.com coupon is not valid on Electronics. SHOP AT BN.COM" width="386" height="367" border="0" usemap="#Map"></td>
          <td width="389" height="177"><a href="http://email.bn.com/cgi-bin6/DM/y/ncvI0RIIFT0KnD0BYnF0EV"><img src="http://images.barnesandnoble.com/pimages/email/2009/12/HGG/OnlineCoup/1217_M_OnlineCoup_12.jpg" alt="SAVE UP TO 50% IN OUR GIFT GUIDE. Shop the season's hottest gifts including bestselling fiction, children's books, DVDs, music, toys, games, and more. SHOP THE BN.COM HOLIDAY GIFT GUIDE." width="389" height="367" border="0"></a></td>
        </tr>
      </table>

      <table width="775" cellpadding="0" cellspacing="0" align="center" border="0">
        <tr>
          <td align="left" bgcolor="#bcdedd"><br><font face="arial" size="1" color="#333333"><font style="font-size:11px;">Subject to availability. Prices are subject to change.<br><br>

<a href="http://email.bn.com/cgi-bin6/DM/y/ncvI0RIIFT0KnD0BMYs0Eh&EmailAddr=skip@pobox.com" style="color:#5e8663">Click here</a> to unsubscribe.<br><br>

&copy;&nbsp;2009&nbsp;Barnes & Noble. All Rights Reserved.<br>This email is an advertisement from Barnes & Noble, Inc., 76 Ninth Avenue New York, NY 10011, Attn: Marketing Preferences</font></font><br><br></td>
        </tr>
      </table>

    </td>
  </tr>
</table>

<map name="map_member_logo">
  <area shape="rect" coords="117,43,389,122" href="http://email.bn.com/cgi-bin6/DM/y/ncvI0RIIFT0KnD0BYnE0EU" alt="Barnes & Noble">
  <area shape="rect" coords="15,43,111,122" href="http://email.bn.com/cgi-bin6/DM/y/ncvI0RIIFT0KnD0BYnV0El" alt="Barnes & Noble Member card">
</map>

<map name="Map">
  <area shape="rect" coords="306,118,368,127" href="http://email.bn.com/cgi-bin6/DM/y/ncvI0RIIFT0KnD0BYnG0EW" alt="http://email.bn.com/cgi-bin6/DM/y/ncvI0RIIFT0KnD0BYnG0EW">
  <area shape="poly" coords="2,2,384,2,384,126,368,126,368,117,305,117,305,127,383,127,383,364,2,364" href="http://email.bn.com/cgi-bin6/DM/y/ncvI0RIIFT0KnD0BYnH0EX" alt="HOME & ELECTRONICS SALE AT BN.COM. $10 Off Any $50 Home Electronics Purchase. Choose from over 200 select audio and video gift ideas, learning tools, gadgets, and accessories in the BN.com Electronic Store. Hurry! Offer ends 12/22. The above 15% BN.com coupon is not valid on Electronics. SHOP AT BN.COM">
</map>

</body>

<IMG SRC="http://email.bn.com/cgi-bin6/flosensing?y=cvI0RIIFT0KnD0D6"></html>

------000000000000000000000000000000000000000000000000000000000000000--

From chipx86@gmail.com  Wed Dec 16 23:17:09 2009
X-VM-v5-Data: ([nil nil nil nil nil nil nil nil nil]
	["30100" "Wednesday" "16" "December" "2009" "21:16:37" "-0800" "Christian Hammond" "chipx86@chipx86.com" nil "721" "Re: Re: Re: About Error occured when print \"view diff\" on User WebUI  of ReviewBoard" "^From:" nil nil "12" nil nil nil nil nil nil nil nil nil nil]
	nil)
Delivered-To: skip.montanaro@gmail.com
Received: from pop.gmail.com
 by montanaro.dyndns.org with POP3 (fetchmail-6.3.11)
 for <skip@localhost> (single-drop); Wed, 16 Dec 2009 23:17:09 -0600 (CST)
Received: by 10.213.7.80 with SMTP id c16cs272396ebc;
 Wed, 16 Dec 2009 21:17:03 -0800 (PST)
Received: from mr.google.com ([10.115.101.29])
 by 10.115.101.29 with SMTP id d29mr1212393wam.2.1261027021257 (num_hops = 1); 
 Wed, 16 Dec 2009 21:17:01 -0800 (PST)
Received: by 10.115.101.29 with SMTP id d29mr243552wam.2.1261027021084;
 Wed, 16 Dec 2009 21:17:01 -0800 (PST)
X-BeenThere: reviewboard@googlegroups.com
Received: by 10.114.188.15 with SMTP id l15ls44116waf.3.p; Wed, 16 Dec 2009 
 21:16:58 -0800 (PST)
Received: by 10.114.5.28 with SMTP id 28mr412521wae.5.1261027018390;
 Wed, 16 Dec 2009 21:16:58 -0800 (PST)
Received: by 10.114.5.28 with SMTP id 28mr412519wae.5.1261027018329;
 Wed, 16 Dec 2009 21:16:58 -0800 (PST)
Return-Path: <chipx86@gmail.com>
Received: from mail-pw0-f47.google.com (mail-pw0-f47.google.com
 [209.85.160.47])
 by gmr-mx.google.com with ESMTP id 25si341933pzk.15.2009.12.16.21.16.57;
 Wed, 16 Dec 2009 21:16:57 -0800 (PST)
Received-SPF: pass (google.com: domain of chipx86@gmail.com designates
 209.85.160.47 as permitted sender) client-ip=209.85.160.47; 
Received: by pwi1 with SMTP id 1so1337462pwi.6
 for <reviewboard@googlegroups.com>; Wed, 16 Dec 2009 21:16:57 -0800 (PST)
MIME-Version: 1.0
Received: by 10.142.56.16 with SMTP id e16mr1250674wfa.304.1261027017149; Wed, 
 16 Dec 2009 21:16:57 -0800 (PST)
In-Reply-To: <17885243.133851261021388029.JavaMail.coremail@bj163app29.163.com>
References: <af54a7c0-acd8-43f3-ab48-2085ed70e2c8@m33g2000pri.googlegroups.com> 
 <63ad9213-0c85-4d7b-869b-976fb9761d35@15g2000prz.googlegroups.com> 
 <6f4908f5-c2f9-455f-b243-de052b31ff6d@r24g2000prf.googlegroups.com> 
 <1eb5631b0912160108t403fe8dsc08469e046e07cdf@mail.gmail.com> 
 <5635528.124231261020425040.JavaMail.coremail@bj163app29.163.com> 
 <1eb5631b0912161930n560e7acbwbb0053e4599237@mail.gmail.com> 
 <17885243.133851261021388029.JavaMail.coremail@bj163app29.163.com>
Message-ID: <1eb5631b0912162116h203d1d36u899e431927429e15@mail.gmail.com>
X-Original-Authentication-Results: gmr-mx.google.com; spf=pass (google.com: 
 domain of chipx86@gmail.com designates 209.85.160.47 as permitted sender) 
 smtp.mail=chipx86@gmail.com; dkim=pass (test mode) header.i=@gmail.com
X-Original-Sender: chipx86@gmail.com
Precedence: list
Mailing-list: list reviewboard@googlegroups.com;
 contact reviewboard+owners@googlegroups.com
List-ID: <reviewboard.googlegroups.com>
List-Post: <http://groups.google.com/group/reviewboard/post?hl=>, 
 <mailto:reviewboard@googlegroups.com>
List-Help: <http://groups.google.com/support/?hl=>,
 <mailto:reviewboard+help@googlegroups.com>
List-Archive: <http://groups.google.com/group/reviewboard?hl=>
X-Thread-Url: http://groups.google.com/group/reviewboard/t/7398ae9edb0f49ea
X-Message-Url: http://groups.google.com/group/reviewboard/msg/573012e2cdb4edcc
List-Unsubscribe: <http://groups.google.com/group/reviewboard/subscribe?hl=>, 
 <mailto:reviewboard+unsubscribe@googlegroups.com>
List-Subscribe: <http://groups.google.com/group/reviewboard/subscribe?hl=>, 
 <mailto:reviewboard+subscribe@googlegroups.com>
Content-Type: multipart/alternative; boundary=001636b2bbfd68cf40047ae5bbd7
X-Spambayes-Evidence: '*H*': 0.48; '*S*': 0.30; 'header:In-Reply-To:1': 0.03;
 'code': 0.04; 'they': 0.04; 'case': 0.09; 'topic': 0.09; '"view': 0.16;
 'apply': 0.16; 'changed': 0.16; 'content': 0.16; 'correctly.': 0.16;
 'dec': 0.16; 'error': 0.16; 'going': 0.16; 'hi,': 0.16; 'line': 0.16;
 'linux': 0.16; 'much': 0.16; 'now.': 0.16; 'ok,': 0.16; 'patch': 0.16;
 'pm,': 0.16; 'seems': 0.16; 'show': 0.16; 'skip:" 60': 0.16; 'skip:0 10': 0.16;
 'solve': 0.16; 'source': 0.16; 'still': 0.16; 'text': 0.16; 'url:3': 0.16;
 'user,': 0.16; 'version': 0.16; 'well,': 0.16; 'while': 0.16; 'windows': 0.16;
 'works': 0.16; 'wrong.': 0.16; 'where': 0.16; 'board': 0.19; 'wrote:': 0.23;
 'subject:: ': 0.26; 'but': 0.26; 'url:org': 0.28; 'may': 0.29;
 'received:209': 0.30; 'received:209.85': 0.30; 'clicking': 0.30; 'end': 0.30;
 'help': 0.30; 'one': 0.32; 'would': 0.34; 'how': 0.35; "i'd": 0.35;
 'skip:( 10': 0.35; 'first': 0.37; 'message-id:@mail.gmail.com': 0.37;
 'any': 0.38; 'skip:i 10': 0.38; 'header:Received:10': 0.39; 'what': 0.39;
 'reply-to:addr:googlegroups.com': 0.63; 'sender:addr:googlegroups.com': 0.63;
 'skip:w 10': 0.63; 'many': 0.65; 'skip:r 10': 0.65;
 'reply-to:no real name:2**0': 0.65; 'email': 0.65; 'header:Reply-To:1': 0.66;
 'been': 0.66; 'group': 0.66; 'add': 0.67; 'file': 0.67; 'really': 0.67;
 'skip:f 10': 0.67; 'skip:p 20': 0.67; 'skip:v 10': 0.67; 'group,': 0.68;
 'post': 0.68; 'please': 0.71; 'want': 0.72; 'skip:d 10': 0.73;
 'content-type:text/html': 0.75; 'email addr:googlegroups.com': 0.77;
 'content-type:multipart/alternative': 0.77; 'charset:utf-8': 0.80;
 'need': 0.80; 'options,': 0.80; '---': 0.84; '8bit%:23': 0.84; 'created': 0.84;
 'description': 0.84; "didn't": 0.84; 'different': 0.84; 'errors': 0.84;
 'last': 0.84; 'mac': 0.84; 'must': 0.84; 'saved': 0.84; 'skip:e 20': 0.84;
 'skip:t 60': 0.84; 'subject:Error': 0.84; 'tue,': 0.84; 'url-ip:96/8': 0.84;
 'attached': 0.91; 'before': 0.91; 'kind': 0.91; 'neither': 0.91;
 'request': 0.91; 'url-ip:208/8': 0.91; 'waiting': 0.91; 'give': 0.93;
 'make': 0.93; 'original': 0.93; 'return': 0.93; 'review': 0.93; 'view': 0.96
From: Christian Hammond <chipx86@chipx86.com>
Sender: reviewboard@googlegroups.com
To: reviewboard@googlegroups.com
Subject: Re: Re: Re: About Error occured when print "view diff" on User WebUI 
 of ReviewBoard
Date: Wed, 16 Dec 2009 21:16:37 -0800
Reply-To: reviewboard@googlegroups.com
X-Spambayes-Classification: unsure; 0.41

--001636b2bbfd68cf40047ae5bbd7
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: quoted-printable

That's on the client, not the server, right?

What version of patch is on the server?

Christian

--=20
Christian Hammond - chipx86@chipx86.com
Review Board - http://www.reviewboard.org
VMware, Inc. - http://www.vmware.com


On Wed, Dec 16, 2009 at 7:43 PM, qhlonline <qhlonline@163.com> wrote:

>
> I am using the TortoiseCVS as CVS client, I am not sure what kind of diff
> it support, But my diff command is using as "cvs diff -uN ...". Can you
> please recommand me some GNU-diff-supported CVS client run on Windows OS?
> Thanks.
>
> Best Regards!
>
> =E5=9C=A82009-12-17=EF=BC=8C"Christian Hammond" <chipx86@chipx86.com> =E5=
=86=99=E9=81=93=EF=BC=9A
>
> What version of diff is on the Windows install? It must specifically use
> GNU diff, and not some other diff tool.
>
> Christian
>
> --
> Christian Hammond - chipx86@chipx86.com
> Review Board - http://www.reviewboard.org
> VMware, Inc. - http://www.vmware.com
>
>
> On Wed, Dec 16, 2009 at 7:27 PM, qhlonline <qhlonline@163.com> wrote:
>
>> Hi, Christian,
>>   Now that is the different diff file contents of the same file change:
>> On Windows:
>> WWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWW
>> Index: abc.c
>> =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
>> RCS file: /export/home/cvsroot/test/abc.c,v
>> retrieving revision 1.1
>> diff -u -r1.1 abc.c
>> --- abc.c    2009/12/17 02:37:24    1.1
>> +++ abc.c    2009/12/17 02:43:08
>> @@ -2,6 +2,7 @@
>>  #include <stdlib.h>
>>  int main()
>>  {
>> +    printf("Begin, Begin!");
>>      print("Hello World!");
>>      if(a=3D=3D5)
>>      {
>> @@ -11,4 +12,5 @@
>>      {
>>          printf("Hi,sir!");
>>      }
>> +    printf("Hello, Sir!");
>>  }
>> WWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWW
>> And on Linux:
>> LLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLL
>> Index: abc.c
>> =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
>> RCS file: /export/home/cvsroot/test/abc.c,v
>> retrieving revision 1.1
>> diff -u -r1.1 abc.c
>> --- abc.c    2009/12/17 02:37:24    1.1
>> +++ abc.c    2009/12/17 02:50:30
>> @@ -2,6 +2,7 @@
>>  #include <stdlib.h>
>>  int main()
>>  {
>> +    printf("Begin, Begin!");
>>      print("Hello World!");
>>      if(a=3D=3D5)
>>      {
>> @@ -11,4 +12,5 @@
>>      {
>>          printf("Hi,sir!");
>>      }
>> -}
>> \ No newline at end of file
>> +    printf("Hello, Sir!");
>> +}
>> LLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLL
>> There is no much difference. But the linux diff file ends with a warning=
:
>> "\ No newline at end of file" and the end Brace"}" has been viewed as a
>> change: + and -; This kind of format diff file works well, The Reviewer =
can
>> open the "view diff" correctly. But the windows diff file format, which =
gave
>> no warning and view the last brace as unchanged, with this format, The
>> Reviewers clicking "view diff" will report error as in the first message=
 of
>> this topic I have pointed. And infect I have never add any new-line to t=
he
>> end of the source code file:  neither the original file, nore the chenge=
d
>> files in both Operating System.
>>    And If I had manualy add a blank new line in the changed file in
>> Windows local source code file, I will get the same diff file content as
>> that of linux said above, And that may slove this problem. But I don't k=
now
>> why. and How to  fundamentally solve the problem?
>>
>> Best Regards!
>>
>>
>> =E5=9C=A82009-12-16=EF=BC=8C"Christian Hammond" <chipx86@chipx86.com> =
=E5=86=99=E9=81=93=EF=BC=9A
>>
>> I don't really know what you mean, but I know that many companies using
>> Review Board have clients on Linux, Windows and Mac who post to a Review
>> Board server on Linux without any problems. I'd have to see some diffs a=
nd
>> original source files where this fails to have an idea as to what's goin=
g
>> wrong.
>>
>> Christian
>>
>> --
>> Christian Hammond - chipx86@chipx86.com
>> Review Board - http://www.reviewboard.org
>> VMware, Inc. - http://www.vmware.com
>>
>>
>> On Tue, Dec 15, 2009 at 7:55 PM, JohnHenry <qhlonline@163.com> wrote:
>>
>>> I have viewed the diff file of both Windows and Linux, It seems that
>>> not only they have difference between there "NewLine" character, There
>>> are some file format difference but I am not sure, Can any one give a
>>> description of there difference?
>>>
>>> Best Regards!
>>>
>>> On Dec 15, 4:09 pm, JohnHenry <qhlonl...@163.com> wrote:
>>> > OK, The first problem is that I have Created new ReviewRequest in
>>> > WindowsOS through Web UI while the RB Server is on Linux. When I use
>>> > post-review in linux to create new ReviewRequest , That will be fine.
>>> > But I had not test the windowsOS post-review generated new
>>> > ReviewRequest now.
>>> > But the second problem, How to make Review to the review request
>>> > generated with newly source code( that is the source code has never
>>> > been commited to CVS ) is waiting for suggestion.
>>> >
>>> > Best Regards!
>>> >
>>> > On 12=E6=9C=8815=E6=97=A5, =E4=B8=8B=E5=8D=883=E6=97=B636=E5=88=86, J=
ohnHenry <qhlonl...@163.com> wrote:
>>> >
>>> >
>>> >
>>> > > Hi,
>>> > >    I have tried to post a review request and publish it using one
>>> > > User, But in the Reviewers' UI, when He cilck the "view diff" link =
on
>>> > > the top-right, There will be some error infomation:
>>> > > **************************************************
>>> > > The patch to 'mySouceTest.c' didn't apply cleanly. The temporary
>>> files
>>> > > have been left in '/tmp/reviewboard.zX0n4M' for debugging purposes.
>>> > > `patch` returned: patching file /tmp/reviewboard.zX0n4M/tmphNZpB0
>>> > > patch: **** malformed patch at line 25: - exit(1);
>>> >
>>> > > Traceback (most recent call last):
>>> > >   File
>>> "/data1/John1/bin/develop_tools/python/python2.5/lib/python2.5/
>>> > > site-packages/ReviewBoard-1.0.5.1-py2.5.egg/reviewboard/diffviewer/
>>> > > views.py", line 153, in view_diff
>>> > >     interdiffset, highlighting, True)
>>> > >   File
>>> "/data1/John1/bin/develop_tools/python/python2.5/lib/python2.5/
>>> > > site-packages/ReviewBoard-1.0.5.1-py2.5.egg/reviewboard/diffviewer/
>>> > > diffutils.py", line 623, in get_diff_files
>>> > >     large_data=3DTrue)
>>> > >   File
>>> "/data1/qiaohl/bin/develop_tools/python/python2.5/lib/python2.5/
>>> > > site-packages/Djblets-0.5.6-py2.5.egg/djblets/util/misc.py", line
>>> 162,
>>> > > in cache_memoize
>>> > >     data =3D lookup_callable()
>>> > >   File
>>> "/data1/John1/bin/develop_tools/python/python2.5/lib/python2.5/
>>> > > site-packages/ReviewBoard-1.0.5.1-py2.5.egg/reviewboard/diffviewer/
>>> > > diffutils.py", line 622, in <lambda>
>>> > >     enable_syntax_highlighting),
>>> > >   File
>>> "/data1/John1/bin/develop_tools/python/python2.5/lib/python2.5/
>>> > > site-packages/ReviewBoard-1.0.5.1-py2.5.egg/reviewboard/diffviewer/
>>> > > diffutils.py", line 345, in get_chunks
>>> > >     new =3D get_patched_file(old, filediff)
>>> > >   File
>>> "/data1/John1l/bin/develop_tools/python/python2.5/lib/python2.5/
>>> > > site-packages/ReviewBoard-1.0.5.1-py2.5.egg/reviewboard/diffviewer/
>>> > > diffutils.py", line 261, in get_patched_file
>>> > >     return patch(filediff.diff, buffer, filediff.dest_file)
>>> > >   File
>>> "/data1/John1/bin/develop_tools/python/python2.5/lib/python2.5/
>>> > > site-packages/ReviewBoard-1.0.5.1-py2.5.egg/reviewboard/diffviewer/
>>> > > diffutils.py", line 129, in patch
>>> > >     (filename, tempdir, patch_output))
>>> > > Exception: The patch to 'myUCMobile.c' didn't apply cleanly. The
>>> > > temporary files have been left in '/tmp/reviewboard.zX0n4M' for
>>> > > debugging purposes.
>>> > > `patch` returned: patching file /tmp/reviewboard.zX0n4M/tmphNZpB0
>>> > > patch: **** malformed patch at line 25: -               exit(1);
>>> > > *******************************************************************
>>> > > Need suggestion.
>>> > > And, If I want to make a new reivewrequest with a new file that has
>>> > > never been commited to CVS repository before ,The info would be as
>>> > > follows:
>>> > >
>>> -----------------------------------------------------------------------=
----=C2=AD--->>>
>>> Review request draft saved
>>> > > >>> Uploading diff, size: 50
>>> > > >>> HTTP POSTing tohttp://
>>> 192.168.3.20:8080/api/json/reviewrequests/9/diff/new/:{}<http://192.168=
.3.20:8080/api/json/reviewrequests/9/diff/new/:%7B%7D>
>>> > > >>> {"fields": {"path": ["The diff file is empty"]}, "stat": "fail"=
,
>>> "err": {"msg": "One or more fields had errors", "code": 105}}
>>> >
>>> > > Error uploading diff: One or more fields had errors (105)>>>
>>> {'fields': {'path': ['The diff file is empty']}, 'stat': 'fail', 'err':
>>> {'msg': 'One or more fields had errors', 'code': 105}}
>>> >
>>> > > Your review request still exists, but the diff is not attached
>>> > >
>>> -----------------------------------------------------------------------=
----=C2=AD-----------------
>>> > > In that case , Can the reviewer see the source code in the new file
>>> of
>>> > > ReviewRequestor's any way?
>>> >
>>> > > Best Regards!- Hide quoted text -
>>> >
>>> > - Show quoted text -
>>>
>>> --
>>> Want to help the Review Board project? Donate today at
>>> http://www.reviewboard.org/donate/
>>> Happy user? Let us know at http://www.reviewboard.org/users/
>>> -~----------~----~----~----~------~----~------~--~---
>>> To unsubscribe from this group, send email to
>>> reviewboard+unsubscribe@googlegroups.com<reviewboard%2Bunsubscribe@goog=
legroups.com>
>>> For more options, visit this group at
>>> http://groups.google.com/group/reviewboard?hl=3Den
>>>
>>
>>  --
>> Want to help the Review Board project? Donate today at
>> http://www.reviewboard.org/donate/
>> Happy user? Let us know at http://www.reviewboard.org/users/
>> -~----------~----~----~----~------~----~------~--~---
>> To unsubscribe from this group, send email to reviewboard+
>> unsubscribe@googlegroups.com
>> For more options, visit this group at
>> http://groups.google.com/group/reviewboard?hl=3Den
>>
>>
>>
>>  --
>> Want to help the Review Board project? Donate today at
>> http://www.reviewboard.org/donate/
>> Happy user? Let us know at http://www.reviewboard.org/users/
>> -~----------~----~----~----~------~----~------~--~---
>> To unsubscribe from this group, send email to
>> reviewboard+unsubscribe@googlegroups.com<reviewboard%2Bunsubscribe@googl=
egroups.com>
>> For more options, visit this group at
>> http://groups.google.com/group/reviewboard?hl=3Den
>>
>
>  --
> Want to help the Review Board project? Donate today at
> http://www.reviewboard.org/donate/
> Happy user? Let us know at http://www.reviewboard.org/users/
> -~----------~----~----~----~------~----~------~--~---
> To unsubscribe from this group, send email to reviewboard+
> unsubscribe@googlegroups.com
> For more options, visit this group at
> http://groups.google.com/group/reviewboard?hl=3Den
>
>
>
>  --
> Want to help the Review Board project? Donate today at
> http://www.reviewboard.org/donate/
> Happy user? Let us know at http://www.reviewboard.org/users/
> -~----------~----~----~----~------~----~------~--~---
> To unsubscribe from this group, send email to
> reviewboard+unsubscribe@googlegroups.com<reviewboard%2Bunsubscribe@google=
groups.com>
> For more options, visit this group at
> http://groups.google.com/group/reviewboard?hl=3Den
>

--=20
Want to help the Review Board project? Donate today at http://www.reviewboa=
rd.org/donate/
Happy user? Let us know at http://www.reviewboard.org/users/
-~----------~----~----~----~------~----~------~--~---
To unsubscribe from this group, send email to reviewboard+unsubscribe@googl=
egroups.com
For more options, visit this group at http://groups.google.com/group/review=
board?hl=3Den
--001636b2bbfd68cf40047ae5bbd7
Content-Type: text/html; charset=UTF-8
Content-Transfer-Encoding: quoted-printable

That&#39;s on the client, not the server, right?<br><br>What version of pat=
ch is on the server?<br><br>Christian<br><br clear=3D"all">-- <br>Christian=
 Hammond - <a href=3D"mailto:chipx86@chipx86.com">chipx86@chipx86.com</a><b=
r>

Review Board - <a href=3D"http://www.reviewboard.org">http://www.reviewboar=
d.org</a><br>VMware, Inc. - <a href=3D"http://www.vmware.com">http://www.vm=
ware.com</a><br>
<br><br><div class=3D"gmail_quote">On Wed, Dec 16, 2009 at 7:43 PM, qhlonli=
ne <span dir=3D"ltr">&lt;<a href=3D"mailto:qhlonline@163.com">qhlonline@163=
.com</a>&gt;</span> wrote:<br><blockquote class=3D"gmail_quote" style=3D"bo=
rder-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding=
-left: 1ex;">

<div><br>I am using the TortoiseCVS as CVS client, I am not sure what kind =
of diff it support, But my diff command is using as &quot;cvs diff -uN ...&=
quot;. Can you please recommand me some GNU-diff-supported CVS client run o=
n Windows OS? Thanks.<br>

<br>Best Regards!<br></div><div></div><br>=E5=9C=A82009-12-17=EF=BC=8C&quot=
;Christian Hammond&quot; &lt;<a href=3D"mailto:chipx86@chipx86.com" target=
=3D"_blank">chipx86@chipx86.com</a>&gt; =E5=86=99=E9=81=93=EF=BC=9A<br> <bl=
ockquote style=3D"border-left: 1px solid rgb(204, 204, 204); margin: 0px 0p=
x 0px 0.8ex; padding-left: 1ex;">

<div><div></div><div class=3D"h5">What version of diff is on the Windows in=
stall? It must specifically use GNU diff, and not some other diff tool.<br>=
<br>Christian<br><br clear=3D"all">-- <br>Christian Hammond - <a href=3D"ma=
ilto:chipx86@chipx86.com" target=3D"_blank">chipx86@chipx86.com</a><br>



Review Board - <a href=3D"http://www.reviewboard.org" target=3D"_blank">htt=
p://www.reviewboard.org</a><br>VMware, Inc. - <a href=3D"http://www.vmware.=
com" target=3D"_blank">http://www.vmware.com</a><br>
<br><br><div class=3D"gmail_quote">On Wed, Dec 16, 2009 at 7:27 PM, qhlonli=
ne <span dir=3D"ltr">&lt;<a href=3D"mailto:qhlonline@163.com" target=3D"_bl=
ank">qhlonline@163.com</a>&gt;</span> wrote:<br><blockquote class=3D"gmail_=
quote" style=3D"border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt =
0pt 0.8ex; padding-left: 1ex;">



<div>Hi, Christian,<br>=C2=A0 Now that is the different diff file contents =
of the same file change:<br>On Windows:<br>WWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWW=
WWWWWWWWWWWWWWWWWWWWWWW<br>Index: abc.c<br>=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D<br>



RCS file: /export/home/cvsroot/test/abc.c,v<br>retrieving revision 1.1<br>d=
iff -u -r1.1 abc.c<br>--- abc.c=C2=A0=C2=A0=C2=A0 2009/12/17 02:37:24=C2=A0=
=C2=A0=C2=A0 1.1<br>+++ abc.c=C2=A0=C2=A0=C2=A0 2009/12/17 02:43:08<br>@@ -=
2,6 +2,7 @@<br>=C2=A0#include &lt;stdlib.h&gt;<br>



=C2=A0int main()<br>=C2=A0{<br>+=C2=A0=C2=A0=C2=A0 printf(&quot;Begin, Begi=
n!&quot;);<br>=C2=A0=C2=A0=C2=A0=C2=A0 print(&quot;Hello World!&quot;);<br>=
=C2=A0=C2=A0=C2=A0=C2=A0 if(a=3D=3D5)<br>=C2=A0=C2=A0=C2=A0=C2=A0 {<br>@@ -=
11,4 +12,5 @@<br>=C2=A0=C2=A0=C2=A0=C2=A0 {<br>=C2=A0=C2=A0=C2=A0=C2=A0 =C2=
=A0=C2=A0=C2=A0 printf(&quot;Hi,sir!&quot;);<br>=C2=A0=C2=A0=C2=A0=C2=A0 }<=
br>+=C2=A0=C2=A0=C2=A0 printf(&quot;Hello, Sir!&quot;);<br>



=C2=A0}<br>WWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWW<br>And =
on Linux:<br>LLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLL<br>I=
ndex: abc.c<br>=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D<br>



RCS file: /export/home/cvsroot/test/abc.c,v<br>retrieving revision 1.1<br>d=
iff -u -r1.1 abc.c<br>--- abc.c=C2=A0=C2=A0=C2=A0 2009/12/17 02:37:24=C2=A0=
=C2=A0=C2=A0 1.1<br>+++ abc.c=C2=A0=C2=A0=C2=A0 2009/12/17 02:50:30<br>@@ -=
2,6 +2,7 @@<br>=C2=A0#include &lt;stdlib.h&gt;<br>



=C2=A0int main()<br>=C2=A0{<br>+=C2=A0=C2=A0=C2=A0 printf(&quot;Begin, Begi=
n!&quot;);<br>=C2=A0=C2=A0=C2=A0=C2=A0 print(&quot;Hello World!&quot;);<br>=
=C2=A0=C2=A0=C2=A0=C2=A0 if(a=3D=3D5)<br>=C2=A0=C2=A0=C2=A0=C2=A0 {<br>@@ -=
11,4 +12,5 @@<br>=C2=A0=C2=A0=C2=A0=C2=A0 {<br>=C2=A0=C2=A0=C2=A0=C2=A0 =C2=
=A0=C2=A0=C2=A0 printf(&quot;Hi,sir!&quot;);<br>=C2=A0=C2=A0=C2=A0=C2=A0 }<=
br>-}<br>


\ No newline at end of file<br>
+=C2=A0=C2=A0=C2=A0 printf(&quot;Hello, Sir!&quot;);<br>+}<br>LLLLLLLLLLLLL=
LLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLL<br>There is no much difference. B=
ut the linux diff file ends with a warning:=C2=A0 &quot;\ No newline at end=
 of file&quot; and the end Brace&quot;}&quot; has been viewed as a change: =
+ and -; This kind of format diff file works well, The Reviewer can open th=
e &quot;view diff&quot; correctly. But the windows diff file format, which =
gave no warning and view the last brace as unchanged, with this format, The=
 Reviewers clicking &quot;view diff&quot; will report error as in the first=
 message of this topic I have pointed. And infect I have never add any new-=
line to the end of the source code file:=C2=A0 neither the original file, n=
ore the chenged files in both Operating System.<br>



=C2=A0=C2=A0 And If I had manualy add a blank new line in the changed file =
in Windows local source code file, I will get the same diff file content as=
 that of linux said above, And that may slove this problem. But I don&#39;t=
 know why. and How to=C2=A0 fundamentally solve the problem? <br>



<br>Best Regards!<br>=C2=A0<br></div><div></div><br>=E5=9C=A82009-12-16=EF=
=BC=8C&quot;Christian Hammond&quot; &lt;<a href=3D"mailto:chipx86@chipx86.c=
om" target=3D"_blank">chipx86@chipx86.com</a>&gt; =E5=86=99=E9=81=93=EF=BC=
=9A<br> <blockquote style=3D"border-left: 1px solid rgb(204, 204, 204); mar=
gin: 0px 0px 0px 0.8ex; padding-left: 1ex;">



<div><div></div><div>I don&#39;t really know what you mean, but I know that=
 many companies using Review Board have clients on Linux, Windows and Mac w=
ho post to a Review Board server on Linux without any problems. I&#39;d hav=
e to see some diffs and original source files where this fails to have an i=
dea as to what&#39;s going wrong.<br>





<br>Christian<br><br clear=3D"all">-- <br>Christian Hammond - <a href=3D"ma=
ilto:chipx86@chipx86.com" target=3D"_blank">chipx86@chipx86.com</a><br>Revi=
ew Board - <a href=3D"http://www.reviewboard.org" target=3D"_blank">http://=
www.reviewboard.org</a><br>



VMware, Inc. - <a href=3D"http://www.vmware.com" target=3D"_blank">http://w=
ww.vmware.com</a><br>


<br><br><div class=3D"gmail_quote">On Tue, Dec 15, 2009 at 7:55 PM, JohnHen=
ry <span dir=3D"ltr">&lt;<a href=3D"mailto:qhlonline@163.com" target=3D"_bl=
ank">qhlonline@163.com</a>&gt;</span> wrote:<br><blockquote class=3D"gmail_=
quote" style=3D"border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt =
0pt 0.8ex; padding-left: 1ex;">





I have viewed the diff file of both Windows and Linux, It seems that<br>
not only they have difference between there &quot;NewLine&quot; character, =
There<br>
are some file format difference but I am not sure, Can any one give a<br>
description of there difference?<br>
<br>
Best Regards!<br>
<div><div></div><div><br>
On Dec 15, 4:09=C2=A0pm, JohnHenry &lt;<a href=3D"mailto:qhlonl...@163.com"=
 target=3D"_blank">qhlonl...@163.com</a>&gt; wrote:<br>
&gt; OK, The first problem is that I have Created new ReviewRequest in<br>
&gt; WindowsOS through Web UI while the RB Server is on Linux. When I use<b=
r>
&gt; post-review in linux to create new ReviewRequest , That will be fine.<=
br>
&gt; But I had not test the windowsOS post-review generated new<br>
&gt; ReviewRequest now.<br>
&gt; But the second problem, How to make Review to the review request<br>
&gt; generated with newly source code( that is the source code has never<br=
>
&gt; been commited to CVS ) is waiting for suggestion.<br>
&gt;<br>
&gt; Best Regards!<br>
&gt;<br>
&gt; On 12=E6=9C=8815=E6=97=A5, =E4=B8=8B=E5=8D=883=E6=97=B636=E5=88=86, Jo=
hnHenry &lt;<a href=3D"mailto:qhlonl...@163.com" target=3D"_blank">qhlonl..=
.@163.com</a>&gt; wrote:<br>
&gt;<br>
&gt;<br>
&gt;<br>
&gt; &gt; Hi,<br>
&gt; &gt; =C2=A0 =C2=A0I have tried to post a review request and publish it=
 using one<br>
&gt; &gt; User, But in the Reviewers&#39; UI, when He cilck the &quot;view =
diff&quot; link on<br>
&gt; &gt; the top-right, There will be some error infomation:<br>
&gt; &gt; **************************************************<br>
&gt; &gt; The patch to &#39;mySouceTest.c&#39; didn&#39;t apply cleanly. Th=
e temporary files<br>
&gt; &gt; have been left in &#39;/tmp/reviewboard.zX0n4M&#39; for debugging=
 purposes.<br>
&gt; &gt; `patch` returned: patching file /tmp/reviewboard.zX0n4M/tmphNZpB0=
<br>
&gt; &gt; patch: **** malformed patch at line 25: - exit(1);<br>
&gt;<br>
&gt; &gt; Traceback (most recent call last):<br>
&gt; &gt; =C2=A0 File &quot;/data1/John1/bin/develop_tools/python/python2.5=
/lib/python2.5/<br>
&gt; &gt; site-packages/ReviewBoard-1.0.5.1-py2.5.egg/reviewboard/diffviewe=
r/<br>
&gt; &gt; views.py&quot;, line 153, in view_diff<br>
&gt; &gt; =C2=A0 =C2=A0 interdiffset, highlighting, True)<br>
&gt; &gt; =C2=A0 File &quot;/data1/John1/bin/develop_tools/python/python2.5=
/lib/python2.5/<br>
&gt; &gt; site-packages/ReviewBoard-1.0.5.1-py2.5.egg/reviewboard/diffviewe=
r/<br>
&gt; &gt; diffutils.py&quot;, line 623, in get_diff_files<br>
&gt; &gt; =C2=A0 =C2=A0 large_data=3DTrue)<br>
&gt; &gt; =C2=A0 File &quot;/data1/qiaohl/bin/develop_tools/python/python2.=
5/lib/python2.5/<br>
&gt; &gt; site-packages/Djblets-0.5.6-py2.5.egg/djblets/util/misc.py&quot;,=
 line 162,<br>
&gt; &gt; in cache_memoize<br>
&gt; &gt; =C2=A0 =C2=A0 data =3D lookup_callable()<br>
&gt; &gt; =C2=A0 File &quot;/data1/John1/bin/develop_tools/python/python2.5=
/lib/python2.5/<br>
&gt; &gt; site-packages/ReviewBoard-1.0.5.1-py2.5.egg/reviewboard/diffviewe=
r/<br>
&gt; &gt; diffutils.py&quot;, line 622, in &lt;lambda&gt;<br>
&gt; &gt; =C2=A0 =C2=A0 enable_syntax_highlighting),<br>
&gt; &gt; =C2=A0 File &quot;/data1/John1/bin/develop_tools/python/python2.5=
/lib/python2.5/<br>
&gt; &gt; site-packages/ReviewBoard-1.0.5.1-py2.5.egg/reviewboard/diffviewe=
r/<br>
&gt; &gt; diffutils.py&quot;, line 345, in get_chunks<br>
&gt; &gt; =C2=A0 =C2=A0 new =3D get_patched_file(old, filediff)<br>
&gt; &gt; =C2=A0 File &quot;/data1/John1l/bin/develop_tools/python/python2.=
5/lib/python2.5/<br>
&gt; &gt; site-packages/ReviewBoard-1.0.5.1-py2.5.egg/reviewboard/diffviewe=
r/<br>
&gt; &gt; diffutils.py&quot;, line 261, in get_patched_file<br>
&gt; &gt; =C2=A0 =C2=A0 return patch(filediff.diff, buffer, filediff.dest_f=
ile)<br>
&gt; &gt; =C2=A0 File &quot;/data1/John1/bin/develop_tools/python/python2.5=
/lib/python2.5/<br>
&gt; &gt; site-packages/ReviewBoard-1.0.5.1-py2.5.egg/reviewboard/diffviewe=
r/<br>
&gt; &gt; diffutils.py&quot;, line 129, in patch<br>
&gt; &gt; =C2=A0 =C2=A0 (filename, tempdir, patch_output))<br>
&gt; &gt; Exception: The patch to &#39;myUCMobile.c&#39; didn&#39;t apply c=
leanly. The<br>
&gt; &gt; temporary files have been left in &#39;/tmp/reviewboard.zX0n4M&#3=
9; for<br>
&gt; &gt; debugging purposes.<br>
&gt; &gt; `patch` returned: patching file /tmp/reviewboard.zX0n4M/tmphNZpB0=
<br>
&gt; &gt; patch: **** malformed patch at line 25: - =C2=A0 =C2=A0 =C2=A0 =
=C2=A0 =C2=A0 =C2=A0 =C2=A0 exit(1);<br>
&gt; &gt; *****************************************************************=
**<br>
&gt; &gt; Need suggestion.<br>
&gt; &gt; And, If I want to make a new reivewrequest with a new file that h=
as<br>
&gt; &gt; never been commited to CVS repository before ,The info would be a=
s<br>
&gt; &gt; follows:<br>
&gt; &gt; -----------------------------------------------------------------=
----------=C2=AD---&gt;&gt;&gt; Review request draft saved<br>
&gt; &gt; &gt;&gt;&gt; Uploading diff, size: 50<br>
&gt; &gt; &gt;&gt;&gt; HTTP POSTing tohttp://<a href=3D"http://192.168.3.20=
:8080/api/json/reviewrequests/9/diff/new/:%7B%7D" target=3D"_blank">192.168=
.3.20:8080/api/json/reviewrequests/9/diff/new/:{}</a><br>
&gt; &gt; &gt;&gt;&gt; {&quot;fields&quot;: {&quot;path&quot;: [&quot;The d=
iff file is empty&quot;]}, &quot;stat&quot;: &quot;fail&quot;, &quot;err&qu=
ot;: {&quot;msg&quot;: &quot;One or more fields had errors&quot;, &quot;cod=
e&quot;: 105}}<br>






&gt;<br>
&gt; &gt; Error uploading diff: One or more fields had errors (105)&gt;&gt;=
&gt; {&#39;fields&#39;: {&#39;path&#39;: [&#39;The diff file is empty&#39;]=
}, &#39;stat&#39;: &#39;fail&#39;, &#39;err&#39;: {&#39;msg&#39;: &#39;One =
or more fields had errors&#39;, &#39;code&#39;: 105}}<br>






&gt;<br>
&gt; &gt; Your review request still exists, but the diff is not attached<br=
>
&gt; &gt; -----------------------------------------------------------------=
----------=C2=AD-----------------<br>
&gt; &gt; In that case , Can the reviewer see the source code in the new fi=
le of<br>
&gt; &gt; ReviewRequestor&#39;s any way?<br>
&gt;<br>
</div></div>&gt; &gt; Best Regards!- Hide quoted text -<br>
&gt;<br>
&gt; - Show quoted text -<br>
<div><div></div><div><br>
--<br>
Want to help the Review Board project? Donate today at <a href=3D"http://ww=
w.reviewboard.org/donate/" target=3D"_blank">http://www.reviewboard.org/don=
ate/</a><br>
Happy user? Let us know at <a href=3D"http://www.reviewboard.org/users/" ta=
rget=3D"_blank">http://www.reviewboard.org/users/</a><br>
-~----------~----~----~----~------~----~------~--~---<br>
To unsubscribe from this group, send email to <a href=3D"mailto:reviewboard=
%2Bunsubscribe@googlegroups.com" target=3D"_blank">reviewboard+unsubscribe@=
googlegroups.com</a><br>
For more options, visit this group at <a href=3D"http://groups.google.com/g=
roup/reviewboard?hl=3Den" target=3D"_blank">http://groups.google.com/group/=
reviewboard?hl=3Den</a></div></div></blockquote></div><br>

<p></p></div></div>

-- <br><div>
Want to help the Review Board project? Donate today at <a href=3D"http://ww=
w.reviewboard.org/donate/" target=3D"_blank">http://www.reviewboard.org/don=
ate/</a><br>
Happy user? Let us know at <a href=3D"http://www.reviewboard.org/users/" ta=
rget=3D"_blank">http://www.reviewboard.org/users/</a><br>
-~----------~----~----~----~------~----~------~--~---<br>
To unsubscribe from this group, send email to reviewboard+<a href=3D"mailto=
:unsubscribe@googlegroups.com" target=3D"_blank">unsubscribe@googlegroups.c=
om</a><br>
For more options, visit this group at <a href=3D"http://groups.google.com/g=
roup/reviewboard?hl=3Den" target=3D"_blank">http://groups.google.com/group/=
reviewboard?hl=3Den</a></div></blockquote><br><br><span title=3D"neteasefoo=
ter"></span>

<p></p>

-- <br><div><div></div><div>
Want to help the Review Board project? Donate today at <a href=3D"http://ww=
w.reviewboard.org/donate/" target=3D"_blank">http://www.reviewboard.org/don=
ate/</a><br>
Happy user? Let us know at <a href=3D"http://www.reviewboard.org/users/" ta=
rget=3D"_blank">http://www.reviewboard.org/users/</a><br>
-~----------~----~----~----~------~----~------~--~---<br>
To unsubscribe from this group, send email to <a href=3D"mailto:reviewboard=
%2Bunsubscribe@googlegroups.com" target=3D"_blank">reviewboard+unsubscribe@=
googlegroups.com</a><br>
For more options, visit this group at <a href=3D"http://groups.google.com/g=
roup/reviewboard?hl=3Den" target=3D"_blank">http://groups.google.com/group/=
reviewboard?hl=3Den</a></div></div></blockquote></div><br>

<p></p></div></div>

-- <br><div class=3D"im">
Want to help the Review Board project? Donate today at <a href=3D"http://ww=
w.reviewboard.org/donate/" target=3D"_blank">http://www.reviewboard.org/don=
ate/</a><br>
Happy user? Let us know at <a href=3D"http://www.reviewboard.org/users/" ta=
rget=3D"_blank">http://www.reviewboard.org/users/</a><br>
-~----------~----~----~----~------~----~------~--~---<br>
To unsubscribe from this group, send email to reviewboard+<a href=3D"mailto=
:unsubscribe@googlegroups.com" target=3D"_blank">unsubscribe@googlegroups.c=
om</a><br>
For more options, visit this group at <a href=3D"http://groups.google.com/g=
roup/reviewboard?hl=3Den" target=3D"_blank">http://groups.google.com/group/=
reviewboard?hl=3Den</a></div></blockquote><div><div></div><div class=3D"h5"=
><br>

<br><span title=3D"neteasefooter"></span>

<p></p>

-- <br>
Want to help the Review Board project? Donate today at <a href=3D"http://ww=
w.reviewboard.org/donate/" target=3D"_blank">http://www.reviewboard.org/don=
ate/</a><br>
Happy user? Let us know at <a href=3D"http://www.reviewboard.org/users/" ta=
rget=3D"_blank">http://www.reviewboard.org/users/</a><br>
-~----------~----~----~----~------~----~------~--~---<br>
To unsubscribe from this group, send email to <a href=3D"mailto:reviewboard=
%2Bunsubscribe@googlegroups.com" target=3D"_blank">reviewboard+unsubscribe@=
googlegroups.com</a><br>
For more options, visit this group at <a href=3D"http://groups.google.com/g=
roup/reviewboard?hl=3Den" target=3D"_blank">http://groups.google.com/group/=
reviewboard?hl=3Den</a></div></div></blockquote></div><br>

<p></p>

-- <br />
Want to help the Review Board project? Donate today at <a href=3D"http://ww=
w.reviewboard.org/donate/">http://www.reviewboard.org/donate/</a><br />
Happy user? Let us know at <a href=3D"http://www.reviewboard.org/users/">ht=
tp://www.reviewboard.org/users/</a><br />
-~----------~----~----~----~------~----~------~--~---<br />
To unsubscribe from this group, send email to reviewboard+unsubscribe@googl=
egroups.com<br />
For more options, visit this group at <a href=3D"http://groups.google.com/g=
roup/reviewboard?hl=3Den">http://groups.google.com/group/reviewboard?hl=3De=
n</a>
--001636b2bbfd68cf40047ae5bbd7--

From SRS0=ay5A=ID=pelicanparts.com=pelicanforums@bounce2.pobox.com  Thu Dec 17 02:02:25 2009
X-VM-v5-Data: ([nil nil nil nil nil nil nil nil nil]
	["1709" "Thursday" "17" "December" "2009" "00:02:10" "-0800" "Pelican Parts Technical BBS" "pelicanforums@pelicanparts.com" nil "43" "\"Porsche 914 Used Parts For Sale & Wanted\" update" "^From:" nil nil "12" nil nil nil nil nil nil nil nil nil nil]
	nil)
Delivered-To: skip.montanaro@gmail.com
Received: from pop.gmail.com
 by montanaro.dyndns.org with POP3 (fetchmail-6.3.11)
 for <skip@localhost> (single-drop); Thu, 17 Dec 2009 02:02:25 -0600 (CST)
Received: by 10.216.54.195 with SMTP id i45cs121863wec;
 Thu, 17 Dec 2009 00:02:18 -0800 (PST)
Received: by 10.224.78.214 with SMTP id m22mr1426616qak.95.1261036935737;
 Thu, 17 Dec 2009 00:02:15 -0800 (PST)
Return-Path: <SRS0=ay5A=ID=pelicanparts.com=pelicanforums@bounce2.pobox.com>
Received: from gold.pobox.com (gold.pobox.com [208.72.237.26])
 by mx.google.com with ESMTP id 35si3549866qyk.96.2009.12.17.00.02.14;
 Thu, 17 Dec 2009 00:02:14 -0800 (PST)
Received-SPF: pass (google.com: domain of
 SRS0=ay5A=ID=pelicanparts.com=pelicanforums@bounce2.pobox.com designates
 208.72.237.26 as permitted sender) client-ip=208.72.237.26; 
Authentication-Results: mx.google.com; spf=pass (google.com: domain of
 SRS0=ay5A=ID=pelicanparts.com=pelicanforums@bounce2.pobox.com designates
 208.72.237.26 as permitted sender)
 smtp.mail=SRS0=ay5A=ID=pelicanparts.com=pelicanforums@bounce2.pobox.com;
 dkim=pass (test mode) header.i=@pelicanparts.com
Received: from gold.pobox.com (localhost [127.0.0.1])
 by gold.pobox.com (Postfix) with ESMTP id F273F4125AA
 for <skip.montanaro@gmail.com>; Thu, 17 Dec 2009 03:02:13 -0500 (EST)
Delivered-To: skip@pobox.com
X-Pobox-Orig-Sender: <pelicanforums@pelicanparts.com>
X-Pobox-Delivery-ID: 7C59FFD6-EAE2-11DE-9E35-A487CF92AC8C-00107187!gold.pobox.com
x-pobox-client-address: 66.236.61.177
x-pobox-client-name: forums.pelicanparts.com
Received: from FORUMS.PELICANPARTS.COM (forums.pelicanparts.com
 [66.236.61.177]) by gold.pobox.com (Postfix) with ESMTP id 689EA4125B9 for
 <skip@pobox.com>; Thu, 17 Dec 2009 03:02:13 -0500 (EST)
DKIM-Signature: v=1; a=rsa-sha1; c=relaxed/relaxed; s=s1024;d=pelicanparts.com;
 h=date:subject:to:from:message-id:mime-version:content-type;
 bh=eSP7+ExUw9oBK4KAT71+OLe/Ho8=;
 b=wpjzUMWGbDCtAbOMzWuan/k4r1LanvgRpGlMwuw2kO35V6pYVFNPaV+iEc9fcQGZPdLAjkk3
 49X8S44rNi2iKthcfoOH7c5yKyf71XMWqfInD+3sEdNuUIwHFyGnWVcUOQd1aMoAID1n1DmA
 SZ+8dDJ7MY9BD07lUi6k2omOAek=
DomainKey-Signature: a=rsa-sha1; q=dns; c=nofws; s=s1024;d=pelicanparts.com;
 h=date:subject:to:from:message-id:mime-version:content-type;
 b=EnkMaCNzvjUA3fVt3KnZWDLefIdDHHjfgZEkC7OC8ljqztcqUfuA0EAyydG9fVkS1vwqtpiE
 x/czO3rvN/yMgPkTD1ep3a3o2HmZIaRZIe/sLGZzQ0rXzoPTD0rdSYbtNKfQ0ncORcNFNzsV
 CNDzkDBjif/qISi36S9ec2h7f9s=
Received: from forums3 ([127.0.0.1]) by FORUMS.PELICANPARTS.COM with
 Microsoft SMTPSVC(6.0.3790.3959); Thu, 17 Dec 2009 00:02:10 -0800
Auto-Submitted: auto-generated
Message-ID: <20091217080210.de1dffa40341@forums.pelicanparts.com>
MIME-Version: 1.0
Content-Type: text/plain; charset="ISO-8859-1"
Content-Transfer-Encoding: 8bit
X-Priority: 3
X-Mailer: vBulletin Mail via PHP
X-OriginalArrivalTime: 17 Dec 2009 08:02:10.0083 (UTC)
 FILETIME=[3BE81730:01CA7EEF]
X-Spambayes-Evidence: '*H*': 0.44; '*S*': 0.04; 'forum': 0.09; 'forum:': 0.16;
 'motors': 0.16; 'smontanaro,': 0.16; 'skip:u 10': 0.16; 'url:forums': 0.23;
 'received:208.72.237.26': 0.29; 'received:gold.pobox.com': 0.29;
 'information:': 0.30; 'page:': 0.30; 'skip:~ 30': 0.30; 'url:auth': 0.30;
 'url:do': 0.30; 'url:removesubscription': 0.30; 'url:subscription': 0.30;
 'url:subscriptionid': 0.30; 'url:type': 0.30;
 'x-mailer:vbulletin mail via php': 0.30; 'received:208': 0.33;
 'received:208.72': 0.33; 'received:208.72.237': 0.33; 'url-ip:66/8': 0.35;
 'url:php': 0.37; 'all': 0.40; 'header:Received:7': 0.63; 'been': 0.66;
 'to:addr:skip': 0.67; 'following': 0.67; 'top': 0.67;
 'to:addr:pobox.com': 0.69; 'please': 0.71; 'last': 0.84; 'sale': 0.84;
 'subject: & ': 0.84; 'subject:For': 0.84; 'used': 0.84; 'wanted': 0.84
From: "Pelican Parts Technical BBS" <pelicanforums@pelicanparts.com>
To: skip@pobox.com
Subject: "Porsche 914 Used Parts For Sale & Wanted" update
Date: Thu, 17 Dec 2009 00:02:10 -0800
X-Spambayes-Classification: unsure; 0.30

Dear smontanaro,

You are subscribed to the forum Porsche 914 Used Parts For Sale & Wanted, there have been 2 new thread(s) and 2 updated thread(s).
http://forums.pelicanparts.com/porsche-914-used-parts-sale-wanted/

The following threads are new:
************
WTB:  FI Harness for 70 Model 1.7L
http://forums.pelicanparts.com/porsche-914-used-parts-sale-wanted/516880-wtb-fi-harness-70-model-1-7l.html
In forum: Porsche 914 Used Parts For Sale & Wanted
Started by: Snafu
Last post: 12-16-2009 05:24 PM
************
FS: Targa Latches, Headlight Motors & Bezels, Tach/Speedo, Speaker Grill
http://forums.pelicanparts.com/porsche-914-used-parts-sale-wanted/516885-fs-targa-latches-headlight-motors-bezels-tach-speedo-speaker-grill.html
In forum: Porsche 914 Used Parts For Sale & Wanted
Started by: gearheadgreg
Last post: 12-16-2009 06:00 PM


The following threads have been updated:
************
WTB - '76 bumpers
http://forums.pelicanparts.com/porsche-914-used-parts-sale-wanted/515589-wtb-76-bumpers.html
In forum: Porsche 914 Used Parts For Sale & Wanted
Started by: imnothans
Last post: 12-16-2009 11:11 AM
************
914 Saratoga Top (RARE tinted see through top!)
http://forums.pelicanparts.com/porsche-914-used-parts-sale-wanted/17536-914-saratoga-top-rare-tinted-see-through-top.html
In forum: Porsche 914 Used Parts For Sale & Wanted
Started by: Kent Zilliox
Last post: 12-16-2009 07:14 PM


All the best,
Pelican Parts Technical BBS

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Unsubscription information:

To unsubscribe from this forum, please visit this page:
http://forums.pelicanparts.com/subscription.php?do=removesubscription&type=forum&subscriptionid=6600&auth=49211f76937aa8efbee73fdff7b75720

From SRS0=1uFn=ID=python.org=python-announce-list-bounces+skip=pobox.com@bounce2.pobox.com  Thu Dec 17 05:13:32 2009
X-VM-v5-Data: ([nil nil nil t nil nil nil nil nil]
	["11866" "Thursday" "17" "December" "2009" "12:00:04" "+0100" "python-announce-list-request@python.org" "python-announce-list-request@python.org" nil "310" "Python-announce-list Digest, Vol 66, Issue 16" "^From:" nil nil "12" nil nil nil nil nil nil nil nil nil nil]
	("ham" "trained"))
Delivered-To: skip.montanaro@gmail.com
Received: from pop.gmail.com
 by montanaro.dyndns.org with POP3 (fetchmail-6.3.11)
 for <skip@localhost> (single-drop); Thu, 17 Dec 2009 05:13:32 -0600 (CST)
Received: by 10.216.54.195 with SMTP id i45cs130849wec;
 Thu, 17 Dec 2009 03:12:55 -0800 (PST)
Received: by 10.224.15.206 with SMTP id l14mr1540221qaa.117.1261048374721;
 Thu, 17 Dec 2009 03:12:54 -0800 (PST)
Return-Path: <SRS0=1uFn=ID=python.org=python-announce-list-bounces+skip=pobox.com@bounce2.pobox.com>
Received: from indigo.pobox.com (indigo.pobox.com [64.74.157.52])
 by mx.google.com with ESMTP id 7si5294821qwf.14.2009.12.17.03.12.53;
 Thu, 17 Dec 2009 03:12:53 -0800 (PST)
Received-SPF: pass (google.com: domain of
 SRS0=1uFn=ID=python.org=python-announce-list-bounces+skip=pobox.com@bounce2.pobox.com
 designates 64.74.157.52 as permitted sender) client-ip=64.74.157.52; 
Authentication-Results: mx.google.com; spf=pass (google.com: domain of
 SRS0=1uFn=ID=python.org=python-announce-list-bounces+skip=pobox.com@bounce2.pobox.com
 designates 64.74.157.52 as permitted sender)
 smtp.mail=SRS0=1uFn=ID=python.org=python-announce-list-bounces+skip=pobox.com@bounce2.pobox.com;
 dkim=pass header.i=@python.org
Received: from indigo.pobox.com (localhost [127.0.0.1])
 by indigo.pobox.com (Postfix) with ESMTP id 0BCCF20B4BE
 for <skip.montanaro@gmail.com>; Thu, 17 Dec 2009 06:12:53 -0500 (EST)
Delivered-To: skip@pobox.com
X-Pobox-Orig-Sender: <python-announce-list-bounces+skip=pobox.com@python.org>
X-Pobox-Delivery-ID: 1EA03B4C-EAFD-11DE-BBAB-F12A36EE7A41-00107187!indigo.pobox.com
x-pobox-client-address: 82.94.164.166
x-pobox-client-name: mail.python.org
Received: from mail.python.org (mail.python.org [82.94.164.166]) by
 indigo.pobox.com (Postfix) with ESMTP id 7D89B20B4C5 for <skip@pobox.com>;
 Thu, 17 Dec 2009 06:12:52 -0500 (EST)
Received: from albatross.python.org (localhost.localdomain [127.0.0.1]) by
 mail.python.org (Postfix) with ESMTP id 19561F441 for <skip@pobox.com>; Thu,
 17 Dec 2009 12:12:52 +0100 (CET)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=python.org; s=200901;
 t=1261048372; bh=xc50AEQHl+7OExYE2OBtlObc890aZe4FBxWQ1tAyEl8=;
 h=From:Subject:To:Reply-To:Date:Message-ID:MIME-Version:
 Content-Type:Content-Transfer-Encoding:List-Id:List-Unsubscribe:
 List-Archive:List-Post:List-Help:List-Subscribe:Sender;
 b=vRghEf1faVGSf8QJ4KMlk4bU2WgGVZSPWxynOUSd6tnQj0sep7z9dGjLN4AFBNBDf
 APNfLnj5h13F3wmJH1TlY8XZYTxZ5Bsf0mmyPJm2sRdNxxNiu6MG0SjEAx+zL3nOFI
 IbZXWEJlCUJz0m3YDhAE4Cm963yXrmMUMw8HT3LI=
Message-ID: <mailman.52.1261047604.1204.python-announce-list@python.org>
MIME-Version: 1.0
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: 7bit
X-BeenThere: python-announce-list@python.org
X-Mailman-Version: 2.1.12
Precedence: list
List-Id: Announcement-only list for the Python programming language
 <python-announce-list.python.org>
List-Unsubscribe: <http://mail.python.org/mailman/options/python-announce-list>, 
 <mailto:python-announce-list-request@python.org?subject=unsubscribe>
List-Archive: <http://mail.python.org/pipermail/python-announce-list>
List-Post: <mailto:python-announce-list@python.org>
List-Help: <mailto:python-announce-list-request@python.org?subject=help>
List-Subscribe: <http://mail.python.org/mailman/listinfo/python-announce-list>, 
 <mailto:python-announce-list-request@python.org?subject=subscribe>
Errors-To: python-announce-list-bounces+skip=pobox.com@python.org
X-Pobox-Pass: python-announce-list-bounces+skip=pobox.com@python.org is
 whitelisted
X-Spambayes-Evidence: '*H*': 0.96; '*S*': 0.60; 'code': 0.04; 'they': 0.04;
 'another': 0.05; 'running': 0.07; "i'm": 0.09; 'listed': 0.09; 'person': 0.09;
 'probably': 0.09; 'reference': 0.09; 'skip:- 30': 0.09; 'support': 0.09;
 'url-ip:207/8': 0.09; 'url-ip:82.94.164.162/32': 0.09; 'watch': 0.09;
 '"the': 0.16; '...': 0.16; 'appear': 0.16; 'better': 0.16; 'body': 0.16;
 'carl': 0.16; 'center': 0.16; 'chicago,': 0.16; 'clicks': 0.16;
 'computing': 0.16; 'david': 0.16; 'dec': 0.16; 'definitely': 0.16;
 'derivatives': 0.16; 'edit': 0.16; 'efforts': 0.16; 'eight': 0.16;
 'from:addr:python.org': 0.16; 'gain': 0.16; 'going': 0.16; 'hoping': 0.16;
 'keep': 0.16; 'language': 0.16; 'least': 0.16; 'libraries': 0.16; 'line': 0.16;
 'look': 0.16; 'major': 0.16; 'maybe': 0.16; 'message-id:@python.org': 0.16;
 'monday': 0.16; 'much': 0.16; 'patch': 0.16; 'performance': 0.16;
 'programming': 0.16; 'project.': 0.16; 'python': 0.16; "python.org's": 0.16;
 'quite': 0.16; 'replaced': 0.16; 'several': 0.16; 'skip:- 70': 0.16;
 'source': 0.16; 'string': 0.16; 'subject:Issue': 0.16; 'subject:Python': 0.16;
 'subject:announce': 0.16; 'systems': 0.16; 'take': 0.16; 'techniques,': 0.16;
 'that?': 0.16; 'two': 0.16; 'under': 0.16; 'updates': 0.16;
 'url-ip:64.34/16': 0.16; 'url-ip:67/8': 0.16; 'url:chicago': 0.16;
 'url:code': 0.16; 'url:msg': 0.16; 'url:news': 0.16; 'url:us': 0.16;
 'values': 0.16; 'web,': 0.16; 'wide': 0.16; 'yet.': 0.16; 'skip:u 10': 0.16;
 'since': 0.19; 'url:t': 0.19; 'received:64.74.157': 0.78; 'need': 0.80;
 "'help'": 0.84; '-0600': 0.84; 'all,': 0.84; 'allows': 0.84; 'articles': 0.84;
 'available': 0.84; 'closed': 0.84; 'daily': 0.84; 'date:': 0.84; 'dave': 0.84;
 'different': 0.84; 'enjoy': 0.84; 'every': 0.84; 'everything': 0.84;
 'feel': 0.84; 'firefox': 0.84; 'function': 0.84; 'hours': 0.84; 'issues': 0.84;
 'last': 0.84; 'limited': 0.84; 'makes': 0.84; 'message-id:': 0.84;
 'more?': 0.84; 'next': 0.84; 'notice': 0.84; 'old': 0.84; 'participate': 0.84;
 'recommended': 0.84; 'software': 0.84; 'specific': 0.84; 'statement': 0.84;
 'summarizing': 0.84; 'summary': 0.84; 'takes': 0.84; 'talk': 0.84; 'text/plain;
 ': 0.84; 'tool': 0.84; 'tue,': 0.84; 'url-ip:212/8': 0.84; 'url-ip:76/8': 0.84;
 'url:%0': 0.84; 'url:%40': 0.84; 'url:d': 0.84; 'way': 0.84; 'whom': 0.84;
 'writing': 0.84; 'above': 0.91; 'among': 0.91; 'associated': 0.91;
 'coming': 0.91; 'distributed': 0.91; 'learn': 0.91; 'package': 0.91;
 'these': 0.91; 'think': 0.91; 'unsubscribe.': 0.91; 'url-ip:204/8': 0.91;
 '2010': 0.93; 'check': 0.93; 'each': 0.93; 'inform': 0.93; 'url:net': 0.93;
 'ask': 0.95; 'contact': 0.96; 'free': 0.97
From: python-announce-list-request@python.org
Sender: python-announce-list-bounces+skip=pobox.com@python.org
To: python-announce-list@python.org
Subject: Python-announce-list Digest, Vol 66, Issue 16
Date: Thu, 17 Dec 2009 12:00:04 +0100
Reply-To: python-announce-list@python.org
X-Spambayes-Classification: unsure; 0.32

Send Python-announce-list mailing list submissions to
	python-announce-list@python.org

To subscribe or unsubscribe via the World Wide Web, visit
	http://mail.python.org/mailman/listinfo/python-announce-list
or, via email, send a message with subject or body 'help' to
	python-announce-list-request@python.org

You can reach the person managing the list at
	python-announce-list-owner@python.org

When replying, please edit your Subject line so it is more specific
than "Re: Contents of Python-announce-list digest..."


Today's Topics:

   1. Python-URL! - weekly Python news and links (Dec 15)
      (Gabriel Genellina)
   2. CodeInvestigator 0.20.0 (hans moleman)
   3. [ANN] OpenOpt 0.27 (optimization), FuncDesigner 0.17 (auto
      differentiation) (dmitrey)
   4. Python Concurrency Workshop, January 14-15, 2010 (David Beazley)


----------------------------------------------------------------------

Message: 1
Date: Tue, 15 Dec 2009 16:35:54 +0000 (UTC)
From: "Gabriel Genellina" <python-url@phaseit.net>
To: comp-lang-python-announce@moderators.isc.org
Subject: Python-URL! - weekly Python news and links (Dec 15)
Message-ID: <hg8dta$3sq$1@lairds.us>

QOTW:  "Plus, it's not something that's never foolproof." - Carl Banks,
daring negater
    http://groups.google.com/group/comp.lang.python/msg/e8f3adbf2cc31514

    
    Several graph libraries are available; which one is the best? maybe they
    should be merged?
        http://groups.google.com/group/comp.lang.python/t/785d100681f7d101/
        http://groups.google.com/group/comp.lang.python/t/7e65ca66cd7b511/
    
    list(generator) and the equivalent list comprehension are not always
    equivalent:
        http://groups.google.com/group/comp.lang.python/t/ae70dfa12677c1d5/
    
    A succint way to parse a string of name=value pairs:
        http://groups.google.com/group/comp.lang.python/t/dc725717e63d6295/
    
    Keep only unique elements in a list - and the perils of wrongly defining
    __hash__:
        http://groups.google.com/group/comp.lang.python/t/80491b9bc2f45547/
    
    Python does not have a switch statement - how to overcome that?
        http://groups.google.com/group/comp.lang.python/t/9af90ddc7652beb0/
    
    What are the advantages of an explicit "self"?
        http://groups.google.com/group/comp.lang.python/t/17a3369aef70fd38/
    
    A new guy in the neighborhood, recently moved from PHP:
        http://groups.google.com/group/comp.lang.python/t/6e91d87a9a3a3edb/
        http://groups.google.com/group/comp.lang.python4c295a7ca96f65c3101/
    
    Another convert, this time coming from Perl-land:
        http://groups.google.com/group/comp.lang.python/t/22edc1c7eef569d5/

    
========================================================================
Everything Python-related you want is probably one or two clicks away in
these pages:

    Python.org's Python Language Website is the traditional
    center of Pythonia
        http://www.python.org
    Notice especially the master FAQ
        http://www.python.org/doc/FAQ.html

    PythonWare complements the digest you're reading with the
    marvelous daily python url
         http://www.pythonware.com/daily

    Just beginning with Python?  This page is a great place to start:
	http://wiki.python.org/moin/BeginnersGuide/Programmers

    The Python Papers aims to publish "the efforts of Python enthusiasts":
	http://pythonpapers.org/
    The Python Magazine is a technical monthly devoted to Python:
	http://pythonmagazine.com

    Readers have recommended the "Planet" site:
	http://planet.python.org

    comp.lang.python.announce announces new Python software.  Be
    sure to scan this newsgroup weekly.
        http://groups.google.com/group/comp.lang.python.announce/topics

    Python411 indexes "podcasts ... to help people learn Python ..."
    Updates appear more-than-weekly:
        http://www.awaretek.com/python/index.html

    The Python Package Index catalogues packages.
        http://www.python.org/pypi/

    Much of Python's real work takes place on Special-Interest Group
    mailing lists
        http://www.python.org/sigs/

    Python Success Stories--from air-traffic control to on-line
    match-making--can inspire you or decision-makers to whom you're
    subject with a vision of what the language makes practical.
        http://www.pythonology.com/success

    The Python Software Foundation (PSF) has replaced the Python
    Consortium as an independent nexus of activity.  It has official
    responsibility for Python's development and maintenance.
        http://www.python.org/psf/
    Among the ways you can support PSF is with a donation.
        http://www.python.org/psf/donations/

    The Summary of Python Tracker Issues is an automatically generated
    report summarizing new bugs, closed ones, and patch submissions. 
        http://search.gmane.org/?author=status%40bugs.python.org&group=gmane.comp.python.devel&sort=date

    Although unmaintained since 2002, the Cetus collection of Python
    hyperlinks retains a few gems.
        http://www.cetus-links.org/oo_python.html

    Python FAQTS
        http://python.faqts.com/

    The Cookbook is a collaborative effort to capture useful and
    interesting recipes.
	http://code.activestate.com/recipes/langs/python/

    Many Python conferences around the world are in preparation.
    Watch this space for links to them.

    Among several Python-oriented RSS/RDF feeds available, see:
        http://www.python.org/channews.rdf
    For more, see:
        http://www.syndic8.com/feedlist.php?ShowMatch=python&ShowStatus=all
    The old Python "To-Do List" now lives principally in a
    SourceForge reincarnation.
        http://sourceforge.net/tracker/?atid=355470&group_id=5470&func=browse
	http://www.python.org/dev/peps/pep-0042/

    del.icio.us presents an intriguing approach to reference commentary.
    It already aggregates quite a bit of Python intelligence.
        http://del.icio.us/tag/python

    Enjoy the *Python Magazine*.
	http://pymag.phparch.com/

    *Py: the Journal of the Python Language*
        http://www.pyzine.com

    Dr.Dobb's Portal is another source of Python news and articles:
        http://www.ddj.com/TechSearch/searchResults.jhtml?queryText=python
    and Python articles regularly appear at IBM DeveloperWorks:
        http://www.ibm.com/developerworks/search/searchResults.jsp?searchSite=dW&searchScope=dW&encodedQuery=python&rankprofile=8

Previous - (U)se the (R)esource, (L)uke! - messages are listed here:
  http://search.gmane.org/?query=python+URL+weekly+news+links&group=gmane.comp.python.general&sort=date
  http://groups.google.com/groups/search?q=Python-URL!+group%3Acomp.lang.python&start=0&scoring=d&
  http://lwn.net/Search/DoSearch?words=python-url&ctype3=yes&cat_25=yes

There is *not* an RSS for "Python-URL!"--at least not yet.  Arguments
for and against are occasionally entertained.


Suggestions/corrections for next week's posting are always welcome.
E-mail to <Python-URL@phaseit.net> should get through.

To receive a new issue of this posting in e-mail each Monday morning
(approximately), ask <claird@phaseit.net> to subscribe.  Mention
"Python-URL!".  Write to the same address to unsubscribe.


-- The Python-URL! Team--

Phaseit, Inc. (http://phaseit.net) is pleased to participate in and
sponsor the "Python-URL!" project.  Watch this space for upcoming
news about posting archives.


------------------------------

Message: 2
Date: Tue, 15 Dec 2009 15:47:57 -0800 (PST)
From: hans moleman <martien.friedeman@gmail.com>
To: comp-lang-python-announce@moderators.isc.org
Subject: CodeInvestigator 0.20.0
Message-ID:
	<a00aac30-3bd3-4058-bab2-124e8efcd68e@v15g2000prn.googlegroups.com>
Content-Type: text/plain; charset=ISO-8859-1

CodeInvestigator 0.20.0 was released on December 16.

Changes: UI changes.


You need Python 2.6 and Firefox for CodeInvestigator.

CodeInvestigator is a tracing tool for Python programs.

Running a program through CodeInvestigator creates a recording.
Program flow, function calls, variable values and conditions are all
stored for every line the program executes.
The recording is then viewed with an interface consisting of the
code. The code can be clicked: A clicked variable displays its
value,
a clicked loop displays its iterations.
You read code, and have at your disposal all the run time details of
that code. A computerized desk check tool and another way to learn
about your program.

http://sourceforge.net/project/showfiles.php?group_id=183942


------------------------------

Message: 3
Date: Wed, 16 Dec 2009 01:35:44 -0800 (PST)
From: dmitrey <dmitrey.kroshko@scipy.org>
To: comp-lang-python-announce@moderators.isc.org
Subject: [ANN] OpenOpt 0.27 (optimization), FuncDesigner 0.17 (auto
	differentiation)
Message-ID:
	<d7a196a9-89ba-489f-9354-ad26762766e9@p32g2000vbi.googlegroups.com>
Content-Type: text/plain; charset=ISO-8859-1

Hi all,
I'm glad to inform you about release of OpenOpt 0.27 (numerical
optimization framework), FuncDesigner 0.17 (CAS with automatic
differentiation, convenient modelling of linear/nonlinear functions,
can use convenient modelling for some OpenOpt optimization problems
and systems of linear/nonlinear equations, possibly sparse or
overdetermined), DerApproximator 0.17 (finite-differences derivatives
approximation, get or check user-supplied).

These packages are written in Python language + NumPy; license BSD
allows to use it in both free and closed-code soft

See changelog for details: http://openopt.org/Changelog

Regards, D.


------------------------------

Message: 4
Date: Wed, 16 Dec 2009 06:01:54 -0600
From: David Beazley <dave@dabeaz.com>
To: python-announce@python.org
Cc: David Beazley <dave@dabeaz.com>
Subject: Python Concurrency Workshop, January 14-15, 2010
Message-ID: <7EBD6A9E-0F9F-4FFB-B836-6BCB94DA5AFA@dabeaz.com>
Content-Type: text/plain; charset=us-ascii


	       Python Concurrency Workshop, 2nd Edition
       with David Beazley, author "Python Essential Reference"
			 January 14-15, 2010
			  Chicago, Illinois
		    http://www.dabeaz.com/chicago

Last June, you might have caught my "mindblowing" talk on the Python
GIL (http://www.dabeaz.com/python/GIL.pdf).  However, did you see the
other eight hours of material on threads, multiprocessing, distributed
computing, coroutines, and more?  Probably not unless you were at my
"Concurrency Workshop" the month before.

I'm pleased to announce that that the Concurrency Workshop is back for
another round and is better than ever.  If you have been programming
Python for awhile and want to take your skills up a notch, I think
this may be of interest.  Basically, we're going to take a in-depth
look at concurrent programming idioms and library modules.  Topics
will include such things as threads, message passing, the
multiprocessing library, distributed computing idioms, coroutines,
asynchronous I/O, and other matters with an eye towards writing
programs that can run on multiple CPU cores or clusters.  A major
theme of the workshop is to explore and understand different
programming techniques, their associated performance properties, and
other tradeoffs.  You'll definitely walk away with new insight and a
better understanding of how different parts of Python work under the
covers.  Likewise, I'm hoping to gain new knowledge from your
experience.

The workshop is strictly limited to six attendees.  More details are
available at the above URL.

Please feel free to contact me with further questions.

Cheers,
Dave Beazley


------------------------------

-- 
http://mail.python.org/mailman/listinfo/python-announce-list

        Support the Python Software Foundation:
        http://www.python.org/psf/donations.html


End of Python-announce-list Digest, Vol 66, Issue 16
****************************************************

                                                                                                                                                                                                                                                               
From junk
Delivered-To: skip.montanaro@gmail.com
Received: by 10.216.54.195 with SMTP id i45cs121918wec;
        Thu, 17 Dec 2009 00:03:30 -0800 (PST)
Received: by 10.224.26.87 with SMTP id d23mr1433643qac.55.1261037009016;
        Thu, 17 Dec 2009 00:03:29 -0800 (PST)
Return-Path: <SRS0=sD+I=ID=web.ipb.ac.id=wwwrun@bounce2.pobox.com>
Received: from gold.pobox.com (gold.pobox.com [208.72.237.26])
        by mx.google.com with ESMTP id 37si3682550qyk.122.2009.12.17.00.03.28;
        Thu, 17 Dec 2009 00:03:29 -0800 (PST)
Received-SPF: pass (google.com: domain of SRS0=sD+I=ID=web.ipb.ac.id=wwwrun@bounce2.pobox.com designates 208.72.237.26 as permitted sender) client-ip=208.72.237.26;
Authentication-Results: mx.google.com; spf=pass (google.com: domain of SRS0=sD+I=ID=web.ipb.ac.id=wwwrun@bounce2.pobox.com designates 208.72.237.26 as permitted sender) smtp.mail=SRS0=sD+I=ID=web.ipb.ac.id=wwwrun@bounce2.pobox.com
Received: from gold.pobox.com (localhost [127.0.0.1])
	by gold.pobox.com (Postfix) with ESMTP id 3F6764125A3
	for <skip.montanaro@gmail.com>; Thu, 17 Dec 2009 03:03:28 -0500 (EST)
Delivered-To: skip@pobox.com
X-Pobox-Orig-Sender: <wwwrun@web.ipb.ac.id>
X-Pobox-Delivery-ID:
 A8B2A11E-EAE2-11DE-A4D7-A487CF92AC8C-00107187!gold.pobox.com
x-pobox-client-address: 114.4.12.3
x-pobox-client-name: unknown
Received: from web.ipb.ac.id (unknown [114.4.12.3]) by gold.pobox.com
 (Postfix) with ESMTP id 662BF412396 for <skip@pobox.com>; Thu, 17 Dec 2009
 03:03:26 -0500 (EST)
Received: from wwwrun by web.ipb.ac.id with local (Exim 4.69) (envelope-from
 <wwwrun@web.ipb.ac.id>) id 1NLBR7-0004LM-2l for skip@pobox.com; Thu, 17 Dec
 2009 15:10:13 +0700
To: skip@pobox.com
Subject: Immediate ATM Card Payment Notification
From: Mr. Ban Ki-moon <unitenations001@centrum.sk>
Reply-To: alexbrown06@gmail.com
MIME-Version: 1.0
Content-Type: text/plain
Content-Transfer-Encoding: 8bit
Message-Id: <E1NLBR7-0004LM-2l@web.ipb.ac.id>
Date: Thu, 17 Dec 2009 15:10:12 +0700
X-AntiAbuse: This header was added to track abuse, please include it with any
 abuse report
X-AntiAbuse: Primary Hostname - web.ipb.ac.id
X-AntiAbuse: Original Domain - pobox.com
X-AntiAbuse: Originator/Caller UID/GID - [30 8] / [47 12]
X-AntiAbuse: Sender Address Domain - web.ipb.ac.id

UNITED NATIONS/ WORLD BANK COMPENSATION PROGRAM, IN CONJUNCTION WITH THE UNION  
BANK INT'L.


ATTN:Sir/Madam,


How are you today? Hope all is well with you and family?. Well, I assume that you may not 

understand why this message was sent to you. But I wish to inform you that the UNITED 

NATIONS/WORLD BANK ORGANIZATION facilitated a round-table meeting which just ended 2 days 

ago, and it has been agreed upon by both organization that a compensation payment of 

US$500,000.00 should be paid to 350 individuals whose Name and E-mail were selected randomly 

through an E-mail ballot system.

Your name was among the lists of individual selected to benefit at this end of the year 

compensation program, and that is why we have contacted you. The UNITED NATIONS & WORLD BANK 

ORGANIZATION have agreed to compensate you and other listed 350 individuals with a sum of 

US$500,000.00 each to compensate you for your loss which you might have had in the past in 

the hands of unscrupulous/Fraudulent officials.

This includes all foreign contractors that may have not received their contract payment, and 

people that have had an unfinished transaction or international businesses that failed in 

the past due to corrupt Government officials etc. Therefore, we are glad to inform you that 

a suitable arrangement has been put to place for you to receive your payment in good 

condition without any delay.

However,it is my pleasure to announce to you that an ATM CARD no; 5456 7264 1959 075 has 

been reserved for you which will be funded with your compensation payment of US$500,000.00, 

and sent to your door-step. So you are hereby advised to contact Rev. ALEX BROWN, the CEO, 

UNION BANK PLC for immediate issuance and delivery of your ATM card.

You are to contact Rev. ALEX BROWN at the address below:

CONTACT PERSON:  Rev. ALEX BROWN

E-MAIL: alex_abrown01@yahoo.in

PHONE: +234 803 358 1314.


You are required to contact the above person for your ATM Card, and furnish him with the 

following of your information that will be required to set-up your card.

1.  Your Full Name:
2.  Mailing Address ( P.O Box not acceptable ):
3.  Your Age, Occupation & Marital Status:
4.  Phone Number:


Meanwhile, you will receive your Pin Code which you will require to gain access to your card 

as soon as you have confirmed the receipt of your ATM Card in your custody.

Congratulations, and we are sorry for whatsoever plight/trouble you might have gone through 

in the past.

I look forward to hear from you as soon as you confirm your payment. Making the world a 

better place.

Mr. Ban Ki-Moon.
U.N Secretary (UNITED NATIONS). 


From junk                                                                                                                                                                                                                                                               
Delivered-To: skip.montanaro@gmail.com
Received: by 10.216.54.195 with SMTP id i45cs126521wec;
        Thu, 17 Dec 2009 01:47:51 -0800 (PST)
Received: by 10.224.124.24 with SMTP id s24mr1480919qar.119.1261043270363;
        Thu, 17 Dec 2009 01:47:50 -0800 (PST)
Return-Path: <SRS0=JIvT=ID=elitebed.ru=hellosvd6@bounce2.pobox.com>
Received: from azure.pobox.com (azure.pobox.com [208.72.237.55])
        by mx.google.com with ESMTP id 32si3414431qyk.52.2009.12.17.01.47.50;
        Thu, 17 Dec 2009 01:47:50 -0800 (PST)
Received-SPF: pass (google.com: domain of SRS0=JIvT=ID=elitebed.ru=hellosvd6@bounce2.pobox.com designates 208.72.237.55 as permitted sender) client-ip=208.72.237.55;
Authentication-Results: mx.google.com; spf=pass (google.com: domain of SRS0=JIvT=ID=elitebed.ru=hellosvd6@bounce2.pobox.com designates 208.72.237.55 as permitted sender) smtp.mail=SRS0=JIvT=ID=elitebed.ru=hellosvd6@bounce2.pobox.com
Received: from azure.pobox.com (localhost [127.0.0.1])
	by azure.pobox.com (Postfix) with ESMTP id BA8AE4131F0
	for <skip.montanaro@gmail.com>; Thu, 17 Dec 2009 04:47:49 -0500 (EST)
Delivered-To: skip@pobox.com
X-Pobox-Orig-Sender: <hellosvd6@elitebed.ru>
X-Pobox-Delivery-ID:
 3CCD6826-EAF1-11DE-BEDA-9A959D96F383-00107187!azure.pobox.com
x-pobox-client-address: 91.144.61.213
x-pobox-client-name: unknown
Received: from [91.144.61.213] (unknown [91.144.61.213]) by azure.pobox.com
 (Postfix) with ESMTP id 41E2541181B; Thu, 17 Dec 2009 04:47:45 -0500 (EST)
Received: (from rm.ua@localhost) by rm.ua (8.13.8/8.13.8/Submit) id
 b196yhbj599342; Thu, 17 Dec 2009 01:47:45 -0800 (envelope-from pyzah@rm.ua)
X-Authentication-Warning: rm.ua: ynyl set sender to pyzah@rm.ua using -f
To: Skip <skip@pobox.com>
Subject: =?koi8-r?B?887JzcnUxSDPxsnT?=
Date: Thu, 17 Dec 2009 01:47:45 -0800
From: =?koi8-r?B?5qPEz9IgIPrJzs/X2MXXyd4g?= <pyzah@rm.ua>
Reply-to: =?koi8-r?B?5qPEz9IgIPrJzs/X2MXXyd4g?= <pyzah@rm.ua>
Message-ID: <hec47kysn76832jrxl@localhost.localdomain>
X-Priority: 3Reply-to: =?koi8-r?B?5qPEz9IgIPrJzs/X2MXXyd4g?= <pyzah@rm.ua>
X-Mailer: PHP machine
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
Content-Type: text/plain; charset=koi8-r

ï¿½ ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ ï¿½ï¿½ï¿½ï¿½ï¿½ ï¿½ï¿½ï¿½ï¿½ï¿½!!!

 ï¿½ï¿½ï¿½ï¿½ï¿½ - ï¿½ ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ ï¿½ï¿½ ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ ï¿½ï¿½ï¿½ ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½!

                                                                                ï¿½ï¿½ï¿½ 8 (916) 180 54 67

ï¿½. ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ - 3 ï¿½ï¿½ï¿½
86 ï¿½ï¿½ ï¿½
1 ï¿½ï¿½ï¿½ï¿½ï¿½ ï¿½ï¿½ï¿½ï¿½ï¿½, ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½, 5 ï¿½ï¿½ï¿½ï¿½ï¿½ ï¿½ï¿½ï¿½ï¿½, ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½, ï¿½/ï¿½ ï¿½ ï¿½ï¿½ï¿½ï¿½ï¿½ , 2 ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ ï¿½ï¿½ï¿½ï¿½ï¿½ ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½  ï¿½ ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½.
150 ï¿½ï¿½. 30 ï¿½ï¿½. ï¿½ ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½, ï¿½ï¿½ï¿½ï¿½ ï¿½ ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½

 ï¿½. ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ - 10 ï¿½ï¿½ï¿½
ï¿½ï¿½ ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½, ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½, ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½, 7 ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½, ï¿½ï¿½ï¿½ï¿½ï¿½ 15 ï¿½ï¿½ ï¿½ï¿½ï¿½ï¿½ï¿½, ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ ï¿½ï¿½ ï¿½ï¿½ï¿½ï¿½ï¿½, ï¿½\ï¿½ ï¿½ï¿½ ï¿½ï¿½ï¿½ï¿½ï¿½,5,6 ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½!!!
 60,70 ï¿½ï¿½. ï¿½
                                                                                     
                                                                                   ï¿½ï¿½ï¿½ 8 (916) 180 54 67
 ï¿½. 1905 ï¿½ï¿½ï¿½ï¿½
600 ï¿½ï¿½ ï¿½
ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ ï¿½ï¿½ï¿½ï¿½, ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ (ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½, ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ ï¿½ï¿½ï¿½ï¿½, ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½), ï¿½ï¿½ï¿½ ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½, ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ ï¿½ ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½

ï¿½. ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ - 15 ï¿½ï¿½ï¿½
ï¿½ï¿½ï¿½ï¿½ï¿½ - ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ ï¿½ï¿½ 20 ï¿½ï¿½ 2000 ï¿½ï¿½. ï¿½.
ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ No, ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ ï¿½ï¿½ ï¿½ï¿½ï¿½ï¿½.

ï¿½. ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ - 5 ï¿½ï¿½ï¿½
ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½, ï¿½ï¿½ï¿½ï¿½ï¿½ "B", ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½, ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½.
17, 260, 210 ï¿½ï¿½ ï¿½
80 ï¿½ï¿½.ï¿½  - ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ ï¿½ ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½!
                                                                                     
                                                                                   ï¿½ï¿½ï¿½ 8 (916) 180 54 67
ï¿½. ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½  - 10 ï¿½ï¿½ï¿½
ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ "B" ï¿½ "B+" ï¿½ï¿½ ï¿½ï¿½ï¿½ï¿½ï¿½ ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ ï¿½ ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½, ï¿½ï¿½ï¿½ï¿½ï¿½ ï¿½ï¿½ï¿½ï¿½ï¿½, ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ ï¿½ï¿½ï¿½ ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½, ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½, ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½.

ï¿½. ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½/ï¿½ï¿½ï¿½ï¿½ - 10 ï¿½ï¿½ï¿½
ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ ï¿½ï¿½ï¿½ï¿½ + ï¿½ï¿½ï¿½ï¿½ï¿½ ï¿½ï¿½ ï¿½ï¿½ï¿½ï¿½ ï¿½ï¿½ï¿½ï¿½ï¿½!!!
ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½, ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ ï¿½ï¿½ï¿½ï¿½ï¿½, 2  ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½, ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ ï¿½ï¿½ï¿½ ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½, ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ ï¿½ï¿½ï¿½ï¿½ï¿½. ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½!
16, 18, 22, 25, 125, 150, 176  ï¿½ï¿½.ï¿½

ï¿½. ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ ï¿½ï¿½-ï¿½ - 1 ï¿½ï¿½ï¿½
ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ ï¿½ï¿½ï¿½ï¿½ ï¿½ ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½, ï¿½ï¿½ï¿½ï¿½ï¿½ ï¿½ ï¿½ï¿½ï¿½ï¿½ï¿½, ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½, ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½.
ï¿½ï¿½ï¿½ï¿½ï¿½: 19, 33, 38; 37,6; 36,8, 112 ï¿½ï¿½. ï¿½
                                                                                
                                                                               ï¿½ï¿½ï¿½ 8 (916) 180 54 67
ï¿½. ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½  - 5 ï¿½ï¿½ï¿½
ï¿½ï¿½ï¿½ï¿½ - ï¿½ï¿½ï¿½-ï¿½ï¿½ï¿½, ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ 560 ï¿½ï¿½.ï¿½., ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ ï¿½ï¿½ ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ ï¿½ï¿½ï¿½ï¿½ï¿½ ï¿½ï¿½ï¿½ï¿½ï¿½ ï¿½ ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½. ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½, ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ ï¿½ï¿½ï¿½ï¿½ï¿½. ï¿½ ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½. ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½.
ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ ï¿½ï¿½ ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ ï¿½ï¿½ï¿½ ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½.

ï¿½. ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ ï¿½ï¿½ï¿½/ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½
120, 20 ï¿½ï¿½. ï¿½. ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½, ï¿½ï¿½ï¿½ï¿½ï¿½ ï¿½ ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½

ï¿½. ï¿½ï¿½ï¿½ï¿½/ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½
ï¿½ï¿½ï¿½ï¿½ï¿½ 15, 17, 22, 125, 155, 176 ï¿½ï¿½. ï¿½.
ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ ï¿½ï¿½ï¿½ï¿½!

ï¿½. ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½
5 ï¿½ï¿½ï¿½ ï¿½ï¿½ ï¿½ï¿½ï¿½ï¿½ï¿½
16, 64, 48, 445 ï¿½ï¿½ï¿½ï¿½ï¿½ ï¿½ ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ ï¿½ ï¿½ï¿½ï¿½ ï¿½ ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½

                                                                               ï¿½ï¿½ï¿½ 8 (916) 180 54 67

From junk                                                                                                                                                                                                                                                               
Delivered-To: skip.montanaro@gmail.com
Received: by 10.216.54.195 with SMTP id i45cs99145wec;
        Wed, 16 Dec 2009 15:03:37 -0800 (PST)
Received: by 10.140.82.21 with SMTP id f21mr1196538rvb.50.1261004615366;
        Wed, 16 Dec 2009 15:03:35 -0800 (PST)
Return-Path: <avidhyx@paradise.com>
Received: from ?200.30.70.202? (cl-col-200-30-70-202.orbitel.net.co [200.30.70.202])
        by mx.google.com with ESMTP id 11si1751412pxi.69.2009.12.16.15.03.33;
        Wed, 16 Dec 2009 15:03:35 -0800 (PST)
Received-SPF: softfail (google.com: best guess record for domain of transitioning avidhyx@paradise.com does not designate 200.30.70.202 as permitted sender) client-ip=200.30.70.202;
Authentication-Results: mx.google.com; spf=softfail (google.com: best guess record for domain of transitioning avidhyx@paradise.com does not designate 200.30.70.202 as permitted sender) smtp.mail=avidhyx@paradise.com
Received: from 200.30.70.202 by ; Wed, 16 Dec 2009 18:03:34 -0500
Date:	Wed, 16 Dec 2009 18:03:34 -0500
From:	Affordable-Luxury <avidhyx@paradise.com>
X-Mailer: The Bat! (v2.00.2) Educational
Reply-To: avidhyx@paradise.com
X-Priority: 3 (Normal)
Message-ID: <616719413.78122635210467@paradise.com>
To: skip.mccraw@gmail.com
Subject: Holiday Sale on Rolex/Gucci/Louis Vuitton!
MIME-Version: 1.0
Content-Type: text/plain;
  charset=windows-1250
Content-Transfer-Encoding: 7bit

Stop Paying So much for Luxury!

http://www.smalllinks.com/GKZ


From junk
                                                                                                                                                                                                                                                               
Delivered-To: skip.montanaro@gmail.com
Received: by 10.216.54.195 with SMTP id i45cs141298wec;
        Thu, 17 Dec 2009 06:04:40 -0800 (PST)
Received: by 10.229.93.4 with SMTP id t4mr1393402qcm.93.1261058678986;
        Thu, 17 Dec 2009 06:04:38 -0800 (PST)
Return-Path: <SRS0=3gfn=ID=insing.com=zimrolandd@bounce2.pobox.com>
Received: from gold.pobox.com (gold.pobox.com [208.72.237.26])
        by mx.google.com with ESMTP id 28si4112574qyk.132.2009.12.17.06.04.38;
        Thu, 17 Dec 2009 06:04:38 -0800 (PST)
Received-SPF: pass (google.com: domain of SRS0=3gfn=ID=insing.com=zimrolandd@bounce2.pobox.com designates 208.72.237.26 as permitted sender) client-ip=208.72.237.26;
Authentication-Results: mx.google.com; spf=pass (google.com: domain of SRS0=3gfn=ID=insing.com=zimrolandd@bounce2.pobox.com designates 208.72.237.26 as permitted sender) smtp.mail=SRS0=3gfn=ID=insing.com=zimrolandd@bounce2.pobox.com
Received: from gold.pobox.com (localhost [127.0.0.1])
	by gold.pobox.com (Postfix) with ESMTP id 2A22A4123A5
	for <skip.montanaro@gmail.com>; Thu, 17 Dec 2009 09:04:38 -0500 (EST)
Delivered-To: skip@pobox.com
X-Pobox-Orig-Sender: <zimrolandd@insing.com>
X-Pobox-Delivery-ID:
 1CE879F0-EB15-11DE-B4B3-C973129216F6-00107187!gold.pobox.com
x-pobox-client-address: 203.104.16.213
x-pobox-client-name: web94303.mail.in2.yahoo.com
Received: from web94303.mail.in2.yahoo.com (web94303.mail.in2.yahoo.com
 [203.104.16.213]) by gold.pobox.com (Postfix) with SMTP id C18104125CB for
 <skip@pobox.com>; Thu, 17 Dec 2009 09:04:32 -0500 (EST)
Received: (qmail 90984 invoked by uid 60001); 17 Dec 2009 14:04:28 -0000
Message-ID: <252947.89532.qm@web94303.mail.in2.yahoo.com>
X-YMail-OSG:
 irm2qI0VM1k_3UfsAYVs_8jGkftB_gUubpZEYqaEnaCciew.yhu1tj34PxUfAhU6AAW7054NNU7vtDo8angt932pM8wStQez.MuwGsO470VhafzhLpyi.3LJ11h9CCBLf9nWCi8Zo55ToRNnBPg52JIfZC8YoWkwRsb6DoCpjZYuJNP94R6Hb6SCcQt0vl.4Z_zQuj9BUD3rENnuwBsXkGKnGcFgfpnkHChleC8PZcXiA6fBAuI8Nc0aslBiOkH7NaE.1N0xfoT3IO3nxpEiwRUZMlES9.Fq6xzWk3jKQtuLwulCmhR8TrThbcTUaf.IVxaY_yH52zT0tqJXpfF.04U7RJdWNSoEBUi5hGSF6ni66f9ZZk7aFiuJp8j67C.nHPZ1.00WaFzDEAvZZ91W1XrHV5nPqRVEfzCxK5F1XooHgkV9Cf8IYfmC950SGE5KNdFYj3kx3kt3C1Llf4zo9zQB4rfnpvAksl1kO0pPAhCEleYXtbWCAHYWrnDnuohxR1_Vdn6NoxrrlxrfoJ8e66FiRJUwh8R1HGBf5C.Sy42V8RLbmvX.wyQowsHSvFnZ5wq9PuiujYGTlTdedv6kEiL.AJLrWr5WJKGAX7i0BmyeyL3DwoZeX1I.jpUrryQhaA.xghGZyFstTFtaJ.pYqyQgg2avEtiPo3kMO4HqRehb0eq4ZocGo0TiqPfClAuf5M68KDgWU3zBWas28T2b1WK4XxWbpmubKw_iZE.QcqPmQQLMyY17HGAxlWp.PL.2TusIQKloOZe6zxl6c3dFaIycqLzUOBTJNt4SKbBguX9.DHDqZiH.1Efeyxs4fmH9Lpj3ko.Ry3s6gUxCsO8EPoxh_Inl8Vg13UTo41V52VBwPaNFK1M5XM3ByWWI.VbBpmFw7msCQsZ2OLAwwi51VY_uVX_ReC4rkO3zt_AeD01VY7SsdxFPOW65Fd6SqfqKzifKiinA0IdI.tQiIyd8IP.Jf9zLsqyYvIwWYhAoFR13rw0OdJZ5xbcFzkDsQD9sMX7jd.RGQfVwwO5eOYnJH0XyRF.yABhf_aeVCHO.2MedbZ0ydC2TrVsu56Zmw9zkGA8kukoWrIRiBSRUQFL3xEaP5FZI18qGxG6IFiHh2dTpJUmOFYgK_tlwQCbI3DJPPmXls8K9rpgjYkg-
Received: from [41.203.234.221] by web94303.mail.in2.yahoo.com via HTTP; Thu,
 17 Dec 2009 19:34:28 IST
X-RocketYMMF: drjyoti02
X-Mailer: YahooMailClassic/9.0.19 YahooMailWebService/0.8.100.260964
Date: Thu, 17 Dec 2009 19:34:28 +0530 (IST)
From: Mr Zim Rolad <zimrolandd@insing.com>
Reply-To: zimrolandd@insing.com
Subject: Please kindly call for explanations.
To: undisclosed recipients: ;
MIME-Version: 1.0
Content-Type: multipart/alternative; boundary="0-1953004961-1261058668=:89532"

--0-1953004961-1261058668=:89532
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: quoted-printable

Good=0ADay,=C2=A0
=0A=C2=A0
=0AMy name is Mr Zima Roland; I am the credit officer=C2=A0with Bank of Afr=
ica=0A(BOA)=C2=A0Ouagadougou Burkina Faso.=C2=A0
=0A=C2=A0
=0AI have a business proposal in the tune of $9 m, (Nine Million Us Dollars=
) after=0Athe successful transfer; we shall share in ratio of 40% for you a=
nd 60% for me.=C2=A0
=0A=C2=A0
=0AI want to front you in the bank so that you can apply for the claim of f=
und as=0Athe next of kin to our late customer Mr. Floyd Tarantino who died =
years ago=0Awith his entire family while on holidays and several attempt ha=
s being made to=0Alocate his family without success.
=0A=C2=A0
=0AYou should understand that as an insider in the bank I will do every thi=
ng=0Apossible to protect your interest and to make sure that I follow thing=
s up as=0Asoon as you are willing to work this out with me because I will n=
ot want this=0Amoney to go into the government purse.
=0A=C2=A0
=0AShould you be interested, please contact me through my private email=0A(=
zimrolandd@insing.com)
=0A=C2=A0
=0Aso we can commence on all arrangements and I will give you more informat=
ion on=0Ahow we would handle this project.=C2=A0
=0A=C2=A0
=0APlease treat this business with utmost confidentiality and send me the=
=0AFollowing information:=C2=A0
=0A=C2=A0
=0A(1) Full names:=C2=A0
=0A(2) Private phone number:=C2=A0
=0A(3) Current residential address:=C2=A0
=0A(4) Occupation:=C2=A0
=0A(5) Age and Sex:=C2=A0
=0A(5) photo or ID card:=C2=A0
=0A=C2=A0
=0AThanks for your co-operations Call me for more information=E2=80=99s=C2=
=A0
=0A=C2=A0
=0ATel; (+=C2=A0226)76-97-6733=C2=A0(+=C2=A0226)76-97-6733)
=0A=C2=A0
=0AMr Zima Roland.
=C2=A0=C2=A0=0A=0A=0A      The INTERNET now has a personality. YOURS! See y=
our Yahoo! Homepage. http://in.yahoo.com/
--0-1953004961-1261058668=:89532
Content-Type: text/html; charset=utf-8
Content-Transfer-Encoding: quoted-printable

<table cellspacing=3D"0" cellpadding=3D"0" border=3D"0" ><tr><td valign=3D"=
top" style=3D"font: inherit;"><span lang=3D"EN-GB" style=3D"font-size:12.0p=
t;font-family:=0A&quot;Times New Roman&quot;;mso-fareast-font-family:&quot;=
Times New Roman&quot;;color:black;=0Amso-ansi-language:EN-GB;mso-fareast-la=
nguage:FR;mso-bidi-language:AR-SA">Good=0ADay,<span class=3D"apple-converte=
d-space">&nbsp;</span><br>=0A&nbsp;<br>=0AMy name is Mr Zima Roland; I am t=
he credit officer&nbsp;with Bank of Africa=0A(BOA)&nbsp;Ouagadougou Burkina=
 Faso.<span class=3D"apple-converted-space">&nbsp;</span><br>=0A&nbsp;<br>=
=0AI have a business proposal in the tune of $9 m, (Nine Million Us Dollars=
) after=0Athe successful transfer; we shall share in ratio of 40% for you a=
nd 60% for me.<span class=3D"apple-converted-space">&nbsp;</span><br>=0A&nb=
sp;<br>=0AI want to front you in the bank so that you can apply for the cla=
im of fund as=0Athe next of kin to our late customer Mr. Floyd Tarantino wh=
o died years ago=0Awith his entire family while on holidays and several att=
empt has being made to=0Alocate his family without success.<br>=0A&nbsp;<br=
>=0AYou should understand that as an insider in the bank I will do every th=
ing=0Apossible to protect your interest and to make sure that I follow thin=
gs up as=0Asoon as you are willing to work this out with me because I will =
not want this=0Amoney to go into the government purse.<br>=0A&nbsp;<br>=0AS=
hould you be interested, please contact me through my private email=0A(zimr=
olandd@insing.com)<br>=0A&nbsp;<br>=0Aso we can commence on all arrangement=
s and I will give you more information on=0Ahow we would handle this projec=
t.<span class=3D"apple-converted-space">&nbsp;</span><br>=0A&nbsp;<br>=0APl=
ease treat this business with utmost confidentiality and send me the=0AFoll=
owing information:<span class=3D"apple-converted-space">&nbsp;</span><br>=
=0A&nbsp;<br>=0A(1) Full names:<span class=3D"apple-converted-space">&nbsp;=
</span><br>=0A(2) Private phone number:<span class=3D"apple-converted-space=
">&nbsp;</span><br>=0A(3) Current residential address:<span class=3D"apple-=
converted-space">&nbsp;</span><br>=0A(4) Occupation:<span class=3D"apple-co=
nverted-space">&nbsp;</span><br>=0A(5) Age and Sex:<span class=3D"apple-con=
verted-space">&nbsp;</span><br>=0A(5) photo or ID card:<span class=3D"apple=
-converted-space">&nbsp;</span><br>=0A&nbsp;<br>=0AThanks for your co-opera=
tions Call me for more information=E2=80=99s<span class=3D"apple-converted-=
space">&nbsp;</span><br>=0A&nbsp;<br>=0ATel; <u1:span class=3D"skype_v3_tb_=
injection" id=3D"softomate_v3_highlight_0" title=3D"Call&nbsp;this&nbsp;pho=
ne&nbsp;number&nbsp;in&nbsp;Burkina&nbsp;Faso&nbsp;with&nbsp;Skype:&nbsp;+2=
2676976733" nof=3D"" isfax=3D"" fwidth=3D".w16" freecall=3D"" type=3D".flex=
" mode=3D".compat" path=3D"https://toolbaricons.s4benterprises.com/IEPlugin=
/" skypeid=3D"0" skypeaction=3D"call" durex2=3D"%DADDYHEIGHT%" durex=3D"%DA=
DDYWIDTH%" context=3D"(+ 226)76-97-6733"><u1:span class=3D"skype_v3_tb_imgA=
" id=3D"skype_v3_tb_droppart_0" title=3D"Skype actions" style=3D"BACKGROUND=
-IMAGE: url(https://toolbaricons.s4benterprises.com/IEPlugin/inactive_a.com=
pat.flex.w16.gif)" skypeid=3D"0" skypeaction=3D"drop" skypesms=3D"1"><u1:sp=
an class=3D"skype_v3_tb_imgFlag" id=3D"skype_v3_tb_img_f0" style=3D"BACKGRO=
UND-IMAGE: url(https://toolbaricons.s4benterprises.com/IEPlugin/famfamfam/B=
F.gif)"></u1:span></u1:span><u1:span class=3D"skype_v3_tb_imgS" id=3D"skype=
_v3_tb_img_s0"></u1:span><u1:span class=3D"skype_v3_tb_injectionIn"
 id=3D"skype_v3_tb_text0"><u1:span class=3D"skype_v3_tb_innerText" id=3D"sk=
ype_v3_tb_innerText0">(+&nbsp;226)76-97-6733&nbsp;</u1:span></u1:span><u1:s=
pan class=3D"skype_v3_tb_imgR" id=3D"skype_v3_tb_img_r0"></u1:span></u1:spa=
n>(<u1:span class=3D"skype_v3_tb_injection_print" id=3D"softomate_v3_print_=
0" context=3D"">+&nbsp;226)76-97-6733</u1:span>)<br>=0A&nbsp;<br>=0AMr Zima=
 Roland.<br>&nbsp;&nbsp;</span></td></tr></table><br>=0A=0A=0A=0A      <!--=
1--><hr size=3D1></hr> =0AThe INTERNET now has a personality. YOURS! <a hre=
f=3D"http://in.rd.yahoo.com/tagline_yyi_1/*http://in.yahoo.com/" target=3D"=
_blank">See your Yahoo! Homepage</a>.
--0-1953004961-1261058668=:89532--

From SRS0=br8e=NJ=python.org=python-3000-bounces+skip=pobox.com@bounce2.pobox.com  Sat Aug 11 21:29:43 2007
X-VM-v5-Data: ([nil nil nil nil nil nil nil nil nil]
	["550" "Saturday" "11" "August" "2007" "21:27:51" "-0500" "Collin Winter" "collinw@gmail.com" nil "15" "[Python-3000] Untested py3k regressions" "^From:" nil nil "8" nil "[Python-3000] Untested py3k regressions" (number " " mark "     Collin Winter     Aug 11   15/550   " thread-indent "\"[Python-3000] Untested py3k regressions\"\n") nil nil nil nil nil nil nil]
	nil)
Delivered-To: skip.montanaro@gmail.com
Received: from pop.gmail.com
	by montanaro.dyndns.org with POP3 (fetchmail-6.3.8)
	for <skip@localhost> (single-drop);
	Sat, 11 Aug 2007 21:29:43 -0500 (CDT)
Received: by 10.35.11.16 with SMTP id o16cs135479pyi;
	Sat, 11 Aug 2007 19:28:12 -0700 (PDT)
Received: by 10.70.69.2 with SMTP id r2mr7961095wxa.1186885691861;
	Sat, 11 Aug 2007 19:28:11 -0700 (PDT)
Return-Path: <SRS0=br8e=NJ=python.org=python-3000-bounces+skip=pobox.com@bounce2.pobox.com>
Received: from fence.pobox.com (fence.pobox.com [208.210.124.76])
	by mx.google.com with ESMTP id h40si4869807wxd.2007.08.11.19.28.11;
	Sat, 11 Aug 2007 19:28:11 -0700 (PDT)
Received-SPF: pass (google.com: domain of
	SRS0=br8e=NJ=python.org=python-3000-bounces+skip=pobox.com@bounce2.pobox.com
	designates 208.210.124.76 as permitted sender)
	client-ip=208.210.124.76; 
Received: from fence.pobox.com (localhost [127.0.0.1])
	by fence.pobox.com (Postfix) with ESMTP id 458321F5A4
	for <skip.montanaro@gmail.com>; Sat, 11 Aug 2007 22:28:33 -0400 (EDT)
Delivered-To: skip@pobox.com
X-Pobox-Delivery-ID: <B8C89D6C-487B-11DC-B3A9-233F1315FD8C-00107187@fence.pobox.com>
X-Original-To: python-3000@python.org
Received: from smtp-vbr14.xs4all.nl (smtp-vbr14.xs4all.nl [194.109.24.34]) by
	fence.pobox.com (Postfix) with ESMTP id 0AA581927A for
	<skip@pobox.com>; Sat, 11 Aug 2007 22:28:32 -0400 (EDT)
Received: from bag.python.org (bag.python.org [194.109.207.14]) by
	smtp-vbr14.xs4all.nl (8.13.8/8.13.8) with ESMTP id l7C2SArD013560 for
	<skip@pobox.com>; Sun, 12 Aug 2007 04:28:10 +0200 (CEST) (envelope-from
	python-3000-bounces+skip=pobox.com@python.org)
Received: from bag.python.org (bag [127.0.0.1]) by bag.python.org (Postfix)
	with ESMTP id 4F63E1E4012 for <skip@pobox.com>;
	Sun, 12 Aug 2007 04:28:10 +0200 (CEST)
Delivered-To: python-3000@bag.python.org
Received: from bag.python.org (bag [127.0.0.1]) by bag.python.org (Postfix)
	with ESMTP id 7B2511E400B for <python-3000@python.org>; Sun, 12 Aug 2007
	04:27:55 +0200 (CEST)
X-Spam-Status: OK 0.033
Received: from bag (HELO bag.python.org) (127.0.0.1) by bag.python.org with
	SMTP; 12 Aug 2007 04:27:55 +0200
Received: from an-out-0708.google.com (an-out-0708.google.com
	[209.85.132.251]) by bag.python.org (Postfix) with ESMTP for
	<python-3000@python.org>; Sun, 12 Aug 2007 04:27:52 +0200 (CEST)
Received: by an-out-0708.google.com with SMTP id c8so211914ana for
	<python-3000@python.org>; Sat, 11 Aug 2007 19:27:52 -0700 (PDT)
Received: by 10.100.12.18 with SMTP id 18mr3056744anl.1186885671854; Sat, 11
	Aug 2007 19:27:51 -0700 (PDT)
Received: by 10.100.3.11 with HTTP; Sat, 11 Aug 2007 19:27:51 -0700 (PDT)
Message-ID: <43aa6ff70708111927q5a1d924cx14f73517c0143ff4@mail.gmail.com>
MIME-Version: 1.0
Content-Disposition: inline
X-BeenThere: python-3000@python.org
X-Mailman-Version: 2.1.9
Precedence: list
List-Id: "Python 3000 process, design, development" <python-3000.python.org>
List-Unsubscribe: <http://mail.python.org/mailman/listinfo/python-3000>,
	<mailto:python-3000-request@python.org?subject=unsubscribe>
List-Archive: <http://mail.python.org/pipermail/python-3000>
List-Post: <mailto:python-3000@python.org>
List-Help: <mailto:python-3000-request@python.org?subject=help>
List-Subscribe: <http://mail.python.org/mailman/listinfo/python-3000>,
	<mailto:python-3000-request@python.org?subject=subscribe>
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: 7bit
Errors-To: python-3000-bounces+skip=pobox.com@python.org
X-Virus-Scanned: by XS4ALL Virus Scanner
X-Spambayes-Evidence: '*H*': 0.72; '*S*': 0.00; 'wiki': 0.05; 'objects': 0.07;
	'url:wiki': 0.07; 'url:moin': 0.09; 'produces': 0.16;
	"i've": 0.18; "doesn't": 0.22; "aren't": 0.26; 'page': 0.29;
	'first': 0.32; 'subject:] ': 0.32; 'branch': 0.33; 'patch': 0.33;
	'url:org': 0.33; 'mailing': 0.34; 'subject:[': 0.34;
	'url:listinfo': 0.34; 'sender:no real name:2**0': 0.34;
	'header:Errors-To:1': 0.34; 'url:mailman': 0.34;
	'url:python': 0.35; 'skip:_ 40': 0.36; 'url:mail': 0.36;
	'sender:addr:python.org': 0.37; 'received:google.com': 0.38;
	'all,': 0.38; 'url:pobox': 0.38; 'subject:-': 0.39; 'list': 0.40;
	'charset:us-ascii': 0.40; 'received:194.109.24.34': 0.62;
	'received:smtp-vbr14.xs4all.nl': 0.62; 'received:bag': 0.63;
	'header:Received:14': 0.63; 'started': 0.63;
	'received:208.210.124.76': 0.67;
	'received:fence.pobox.com': 0.67; 'received:209.85.132': 0.70;
	'received:an-out-0708.google.com': 0.70; 'empty': 0.84;
	'url:%40': 0.84
From: "Collin Winter" <collinw@gmail.com>
Sender: python-3000-bounces+skip=pobox.com@python.org
To: "Python 3000" <python-3000@python.org>
Subject: [Python-3000] Untested py3k regressions
Date: Sat, 11 Aug 2007 21:27:51 -0500
X-Spambayes-Classification: ham; 0.14

Hi all,

I've started a wiki page to catalog known regressions in the py3k
branch that aren't covered by the test suite:
http://wiki.python.org/moin/Py3kRegressions.

First up: dir() doesn't work on traceback objects (it now produces an
empty list). A patch for this is up at http://python.org/sf/1772489.

Collin Winter
_______________________________________________
Python-3000 mailing list
Python-3000@python.org
http://mail.python.org/mailman/listinfo/python-3000
Unsubscribe: http://mail.python.org/mailman/options/python-3000/skip%40pobox.com

From SRS0=iqqr=ID=response.grist.org=mill_C00328EBDA3C2BDCC4A8BCBD553D57A1@bounce2.pobox.com  Thu Dec 17 09:21:55 2009
X-VM-v5-Data: ([nil nil nil nil nil nil nil nil nil]
	["8831" "" "17" "December" "2009" "07:19:30" "-0800" "Grist" "grist@grist.org" nil "196" "Last day to give to Grist -- and win sweet prizes" "^From:" nil nil "12" nil nil nil nil nil nil nil nil nil nil]
	nil)
Delivered-To: skip.montanaro@gmail.com
Received: from pop.gmail.com
 by montanaro.dyndns.org with POP3 (fetchmail-6.3.11)
 for <skip@localhost> (single-drop); Thu, 17 Dec 2009 09:21:54 -0600 (CST)
Received: by 10.216.54.195 with SMTP id i45cs146486wec;
 Thu, 17 Dec 2009 07:21:18 -0800 (PST)
Received: by 10.224.59.163 with SMTP id l35mr1652972qah.383.1261063277112;
 Thu, 17 Dec 2009 07:21:17 -0800 (PST)
Return-Path: <SRS0=iqqr=ID=response.grist.org=mill_C00328EBDA3C2BDCC4A8BCBD553D57A1@bounce2.pobox.com>
Received: from indigo.pobox.com (indigo.pobox.com [64.74.157.52])
 by mx.google.com with ESMTP id 37si4251329qyk.122.2009.12.17.07.21.15;
 Thu, 17 Dec 2009 07:21:16 -0800 (PST)
Received-SPF: pass (google.com: domain of
 SRS0=iqqr=ID=response.grist.org=mill_C00328EBDA3C2BDCC4A8BCBD553D57A1@bounce2.pobox.com
 designates 64.74.157.52 as permitted sender) client-ip=64.74.157.52; 
Authentication-Results: mx.google.com; spf=pass (google.com: domain of
 SRS0=iqqr=ID=response.grist.org=mill_C00328EBDA3C2BDCC4A8BCBD553D57A1@bounce2.pobox.com
 designates 64.74.157.52 as permitted sender)
 smtp.mail=SRS0=iqqr=ID=response.grist.org=mill_C00328EBDA3C2BDCC4A8BCBD553D57A1@bounce2.pobox.com;
 dkim=neutral (no signature) header.i=@grist.org
Received: from indigo.pobox.com (localhost [127.0.0.1])
 by indigo.pobox.com (Postfix) with ESMTP id 2D99E20B79F
 for <skip.montanaro@gmail.com>; Thu, 17 Dec 2009 10:21:15 -0500 (EST)
Delivered-To: skip@pobox.com
X-Pobox-Orig-Sender: <mill_C00328EBDA3C2BDCC4A8BCBD553D57A1@response.grist.org>
X-Pobox-Delivery-ID: D0D3C6CC-EB1F-11DE-98CF-D03CBD58303D-00107187!indigo.pobox.com
x-pobox-client-address: 216.182.86.36
x-pobox-client-name: lists.grist.org
Received: from lists.grist.org (lists.grist.org [216.182.86.36]) by
 indigo.pobox.com (Postfix) with ESMTP id 8F48D20B4B4 for <skip@pobox.com>;
 Thu, 17 Dec 2009 10:21:08 -0500 (EST)
DKIM-Signature: a=rsa-sha1; c=relaxed/relaxed; q=dns; s=key1; d=grist.org;
 h=From:To:Subject:Date:Message-ID:MIME-version:Content-type;
 b=cE8uWtt9CzyOc//Li9sX0Lp4oO91M/dMMRqlnGCJk10zhZswqC3j3v2swPGfJaDuNlheFMyJ/JmA
 J5CenyZPPQ==
DomainKey-Signature: a=rsa-sha1; c=nofws; q=dns; s=key1; d=grist.org;
 b=W+XsaYRU+yvtj41G5PE41NkFKQmRZlXgZjUwz0ouznFpfXNB5DQPtFBsxIOtmYI3sjLu0THqc08O
 xkU+n6HNmw==; 
Received: from lists.grist.org (127.0.0.1) by lists.grist.org (PowerMTA(TM)
 v3.2r2) id h5966e0c5pgj for <skip@pobox.com>; Thu, 17 Dec 2009 07:19:30 -0800
 (envelope-from <mill_C00328EBDA3C2BDCC4A8BCBD553D57A1@response.grist.org>)
ENVID: WC-1261063170268-15DA
Message-ID: <C00328EBDA3C2BDCC4A8BCBD553D57A1@response.grist.org>
MIME-version: 1.0
Content-type: multipart/alternative; boundary="======1261063158186======"
X-Mailer: WhatCounts
X-Spambayes-Evidence: '*H*': 0.18; '*S*': 0.82; 'watch': 0.07; 'keep': 0.09;
 'support': 0.09; "we're": 0.09; 'amount': 0.16; 'battery': 0.16; "can't": 0.16;
 'day.': 0.16; 'donate': 0.16; 'electric': 0.16; 'george,': 0.16;
 'giving': 0.16; 'goal': 0.16; "i'll": 0.16; 'passion': 0.16; 'pst': 0.16;
 'second': 0.16; 'subject:and': 0.16; 'url:http': 0.16; 'url:l': 0.16;
 'help': 0.18; 'news': 0.21; 'url:t': 0.21; 'may': 0.22; 'url:org': 0.30;
 'also': 0.32; 'to:': 0.33; 'url-ip:216/8': 0.33; 'last': 0.34; 'reach': 0.34;
 'received:org': 0.34; 'but': 0.37; 'want': 0.61; 'like': 0.62;
 'to:addr:skip': 0.62; 'please': 0.63; 'high': 0.63; 'skip:h 10': 0.63;
 'today': 0.63; 'online': 0.64; 'via': 0.64; 'to:addr:pobox.com': 0.64;
 'content-type:text/html': 0.66; 'content-type:multipart/alternative': 0.66;
 'received:64.74.157.52': 0.68; 'received:indigo.pobox.com': 0.68;
 'check': 0.71; 'received:64': 0.73; 'click': 0.76; 'received:64.74': 0.76;
 'received:64.74.157': 0.76; 'view': 0.80; 'fund': 0.84; 'green': 0.84;
 'p.m.': 0.84; 'saves': 0.84; 'suite': 0.84; 'url:unsubscribe': 0.84;
 'advice': 0.91; 'more.': 0.91; 'most': 0.91; 'neither': 0.91;
 'url-ip:72.21/16': 0.91; 'url:e': 0.91; 'url:r': 0.91; 'give': 0.93;
 'url:email': 0.93; 'url:pobox': 0.93; 'url:skip': 0.93; 'videos': 0.93;
 'here.': 0.95; 'url:gif': 0.95; 'url:jpg': 0.96
From: "Grist" <grist@grist.org>
To: skip@pobox.com
Subject: Last day to give to Grist -- and win sweet prizes
Date: 17 Dec 2009 07:19:30 -0800
Reply-To: "Grist" <mill_C00328EBDA3C2BDCC4A8BCBD553D57A1@response.grist.org>
X-Spambayes-Classification: spam; 0.82

This message is in MIME format. Since your mail reader does not understand
this format, some or all of this message may not be legible.
--======1261063158186======
Content-Type: text/plain; charset="iso-8859-1"
Content-Transfer-Encoding: quoted-printable

View this message in HTML:
<http://lists.grist.org/dm?id=3DC00328EBDA3C2BDCC4A8BCBD553D57A1>
--======1261063158186======
Content-Type: text/html; charset="iso-8859-1"
Content-Transfer-Encoding: quoted-printable

<=21-- To view this message, paste the following into your web browser's =
address bar: http://lists.grist.org/dm?id=3DC00328EBDA3C2BDCC4A8BCBD553D5=
7A1 -->

<center>
<table width=3D=22748=22 bgcolor=3D=22=23ffffff=22 cellpadding=3D=220=22 =
cellspacing=3D=220=22 style=3D=22width: 748px; margin-top: 0;=22>
<tr>
<td width=3D=22748=22 colspan=3D=223=22>
<=21-- Header img -->
<a href=3D=22http://lists.grist.org/t?r=3D2&c=3D5594&l=3D285&ctl=3D48E8A:=
C00328EBDA3C2BDCC4A8BCBD553D57A1&refsrc=3Demail7reg_15&amount=3D15&email=3D=
skip=40pobox.com=22><img src=3D=22http://www2.grist.org/appeals/fwb/simpl=
e-email-header-alt1.gif=22 width=3D=22748=22 height=3D=22122=22 alt=3D=22=
Grist friends with benefits: Give a little, get a lot=22 border=3D=220=22=
 /></a>
</td>
</tr>

<tr>
<td width=3D=22748=22 colspan=3D=223=22><img src=3D=22http://www2.grist.o=
rg/appeals/fwb/pixel.gif=22 height=3D=2220=22 width=3D=22740=22 alt=3D=22=
spacer=22></td>
</tr>

<tr>
<td width=3D=22470=22 valign=3D=22top=22>
<=21-- START Main content area -->

<p style=3D=22font-family: verdana, helvetica, sans-sarif; font-size: 13p=
x; line-height: 140%;=22>Dear George,</p>

<p style=3D=22font-family: verdana, helvetica, sans-sarif; font-size: 13p=
x; line-height: 140%;=22>Today is the FINAL DAY of our winter fund drive,=
 and that means:</p>

<ol style=3D=22font-family: verdana, helvetica, sans-sarif; font-size: 13=
px; line-height: 130%; margin: 10px 0 10px -10px;=22>
<li style=3D=22margin: 0 0 3px 0;=22>LAST DAY for a shot at a bike -- by =
<a href=3D=22http://lists.grist.org/t?r=3D2&c=3D5594&l=3D285&ctl=3D48E8A:=
C00328EBDA3C2BDCC4A8BCBD553D57A1&refsrc=3Demail7reg_15&amount=3D15&email=3D=
skip=40pobox.com=22 style=3D=22color: =23069; font-weight: bold;=22>givin=
g just =2415</a> or more.</li>
<li style=3D=22margin: 0 0 3px 0;=22>LAST DAY for a shot at a Grist water=
 bottle -- by giving any amount.</li>
<li style=3D=22margin: 0 0 8px 0;=22>LAST DAY to watch clever fauxmercial=
 videos like this one:</li>
</ol>

<div align=3D=22left=22 style=3D=22width: 450px;=22><a href=3D=22http://l=
ists.grist.org/t?r=3D2&c=3D5594&l=3D285&ctl=3D48E8A:C00328EBDA3C2BDCC4A8B=
CBD553D57A1&refsrc=3Demail7reg_15&amount=3D15&email=3Dskip=40pobox.com=22=
><img src=3D=22http://www2.grist.org/appeals/fwb/video7-save-cute_450.jpg=
=22 width=3D=22450=22 height=3D=22266=22 alt=3D=22Become a Friend with Be=
nefits=22 align=3D=22left=22 border=3D=220=22 style=3D=22margin: 5px 0 15=
px 0;=22 /></a><br />
</div>


<p style=3D=22font-family: verdana, helvetica, sans-sarif; font-size: 13p=
x; line-height: 140%;=22>Help us meet our goal to get <strong>250 new gif=
ts</strong> today in the hopes of ending our winter campaign on a high no=
te. And remember: gifts of =2410+/month will be matched by our mystery do=
nor.</p>

<p style=3D=22font-family: verdana, helvetica, sans-sarif; font-size: 13p=
x; line-height: 140%;=22>Why give? I'll make it simple: Grist brings you =
the best green news, analysis, and advice available on the web. And we wa=
nt to keep it that way.</p>

<p style=3D=22font-family: verdana, helvetica, sans-sarif; font-size: 13p=
x; line-height: 140%;=22>We're a nonprofit, but we can't survive on passi=
on alone. And neither can the cute cuddlies Grist saves with our wit each=
 day.</p>

<p style=3D=22font-family: verdana, helvetica, sans-sarif; font-size: 13p=
x; line-height: 140%;=22><a href=3D=22http://lists.grist.org/t?r=3D2&c=3D=
5594&l=3D285&ctl=3D48E8A:C00328EBDA3C2BDCC4A8BCBD553D57A1&refsrc=3Demail7=
reg_15&amount=3D15&email=3Dskip=40pobox.com=22 style=3D=22color: =23069; =
font-weight: bold;=22>Please support Grist with a gift today.</a></p>

<p style=3D=22font-family: verdana, helvetica, sans-sarif; font-size: 13p=
x; line-height: 140%;=22>Gratefully,<br />
Ashley Braun<br />
<em>News Producer</em></p>

<p style=3D=22font-family: verdana, helvetica, sans-sarif; font-size: 13p=
x; line-height: 140%; margin-top: 25px;=22>P.S. Giving online give you th=
e heebie-jeebies? You may also send an old-fashioned (but most welcome) c=
heck to: Grist, 710 Second Avenue, Suite 860, Seattle, WA 98104.</p>
<=21-- END Main content area -->
</td>



<td width=3D=2236=22><img src=3D=22http://www2.grist.org/appeals/fwb/pixe=
l.gif=22 width=3D=2236=22 height=3D=2220=22 border=3D=220=22 alt=3D=22=22=
 /></td>




<td width=3D=22242=22 valign=3D=22top=22>
<=21-- Side content area -->
<a href=3D=22http://lists.grist.org/t?r=3D2&c=3D5594&l=3D285&ctl=3D48E8A:=
C00328EBDA3C2BDCC4A8BCBD553D57A1&refsrc=3Demail7reg_15&amount=3D15&email=3D=
skip=40pobox.com=22><img src=3D=22http://www2.grist.org/appeals/fwb/give-=
now-button.gif=22 width=3D=22242=22 height=3D=2256=22 border=3D=220=22 al=
t=3D=22Give now=21=22 style=3D=22border: none; margin: 0 0 0 0;=22 /></a>

<p style=3D=22font-family: verdana, helvetica, sans-sarif; font-size: 14p=
x; line-height: 120%; font-weight: bold; margin-top: 10px;=22>Win an elec=
tric folding bicycle</p>

<p style=3D=22font-family: verdana, helvetica, sans-sarif; font-size: 12p=
x; line-height: 140%;=22>Sign up to give =2415 (or more) by 11:59 p.m. PS=
T 12/17/09 and be entered in a drawing to win an IZIP Via Mezza bicycle.<=
/p>

<a href=3D=22http://lists.grist.org/t?r=3D2&c=3D5594&l=3D285&ctl=3D48E88:=
C00328EBDA3C2BDCC4A8BCBD553D57A1&=22><img src=3D=22http://www2.grist.org/=
appeals/fwb/izip-hybrid-bike-premium2_242.gif=22 width=3D=22242=22 height=
=3D=22223=22 alt=3D=22iZIP hybrid electri bike=22 border=3D=220=22 /></a>
<p style=3D=22font-family: verdana, helvetica, sans-sarif; font-size: 12p=
x; line-height: 140%; padding-bottom: 15px; border-bottom: 1px solid =23c=
cc;=22>The love child of an electric bike and a folding bike, this commut=
er's dream sports a detachable, rechargeable battery; boasts a 20-mile ba=
ttery range; and can reach 15 mph. Value: =24899. Courtesy of <a href=3D=22=
http://lists.grist.org/t?r=3D2&c=3D5594&l=3D285&ctl=3D48E88:C00328EBDA3C2=
BDCC4A8BCBD553D57A1&=22 style=3D=22color: =23069;=22>Currie Technologies<=
/a>.</p>

<p style=3D=22font-family: verdana, helvetica, sans-sarif; font-size: 14p=
x; line-height: 140%; font-weight: bold;=22>Win a Gristy water bottle</p>
<a href=3D=22http://lists.grist.org/t?r=3D2&c=3D5594&l=3D285&ctl=3D48E8A:=
C00328EBDA3C2BDCC4A8BCBD553D57A1&refsrc=3Demail7reg_15&amount=3D15&email=3D=
skip=40pobox.com=22><img src=3D=22http://www2.grist.org/appeals/fwb/klean=
-kanteen-gristified_242.gif=22 width=3D=22242=22 height=3D=22184=22 alt=3D=
=22Gristy Klean Kanteen water bottle=22 border=3D=220=22 style=3D=22margi=
n-top: -5px;=22 /></a>
<p style=3D=22font-family: verdana, helvetica, sans-sarif; font-size: 12p=
x; line-height: 140%;=22>The first 60 people who donate any amount today =
will get a stainless steel, toxin- and BPA-free, lightweight, dishwasher-=
safe Gristy water bottle, courtesy of <a href=3D=22http://lists.grist.org=
/t?r=3D2&c=3D5594&l=3D285&ctl=3D48E87:C00328EBDA3C2BDCC4A8BCBD553D57A1&=22=
 style=3D=22color: =23069;=22>Klean Kanteen</a>=21 Value: =2418.</p>


<p style=3D=22margin-top: 30px; font-family: verdana, helvetica, sans-sar=
if; font-size: 11px; line-height: 130%;=22><a href=3D=22http://lists.gris=
t.org/t?r=3D2&c=3D5594&l=3D285&ctl=3D48E89:C00328EBDA3C2BDCC4A8BCBD553D57=
A1&=22 style=3D=22color: =23069;=22>Rules and regulations.</a></p>


</td>




</tr>

<tr>
<td colspan=3D=223=22><img src=3D=22http://www2.grist.org/appeals/fwb/pix=
el.gif=22 width=3D=22748=22 height=3D=2220=22 border=3D=220=22 alt=3D=22=22=
 /><br />
<p style=3D=22font-family: verdana, helvetica, sans-sarif; font-size: 11p=
x; line-height: 130%; color: =23666;=22>To unsubscribe from this campaign=
, <unsubscribe><a href=3D=22http://lists.grist.org/bin/listunsub?id=3DC00=
328EBDA3C2BDCC4A8BCBD553D57A1&e=3Dhttp://www.grist.org/unsubscribe=22 sty=
le=3D=22color: =23326780;=22>click here</a></unsubscribe>.</p>

<=21-- Footer img -->
<img src=3D=22http://www2.grist.org/appeals/fwb/footer.gif=22 width=3D=22=
748=22 height=3D=2282=22 alt=3D=22Grist.org=22 border=3D=220=22 /></td>
</tr>
</table>
</center>
<img src=3D=22http://lists.grist.org/t?c=3D5594&r=3D2&l=3D285&t=3D10&e=3D=
C00328EBDA3C2BDCC4A8BCBD553D57A1=22 width=3D1 height=3D1 border=3D0>

<img src=3D=22http://lists.grist.org/sf?r=3D2&l=3D285&sid=3DC00328EBDA3C2=
BDCC4A8BCBD553D57A1&f=3D2=22 width=3D1 height=3D1 border=3D0>

--======1261063158186======--

From SRS0=m0Ne=IC=python.org=python-checkins-bounces+skip=pobox.com@bounce2.pobox.com  Wed Dec 16 14:13:59 2009
X-VM-v5-Data: ([nil nil nil nil nil nil nil nil nil]
	["13029" "Wednesday" "16" "December" "2009" "15:13:52" "-0500" "mark.dickinson" "python-checkins@python.org" nil "359" "[Python-checkins] r76861 - in python/trunk: Doc/library/math.rst Lib/test/math_testcases.txt Lib/test/test_math.py Misc/NEWS Modules/Setup.dist Modules/_math.c Modules/_math.h Modules/mathmodule.c PC/VC6/pythoncore.dsp PC/VS7.1/pythoncore.vcproj PC/VS8.0/pythoncore.vcproj PCbuild/pythoncore.vcproj setup.py" "^From:" nil nil "12" nil nil nil nil nil nil nil nil nil nil]
	nil)
Delivered-To: skip.montanaro@gmail.com
Received: from pop.gmail.com
 by montanaro.dyndns.org with POP3 (fetchmail-6.3.11)
 for <skip@localhost> (single-drop); Wed, 16 Dec 2009 14:13:59 -0600 (CST)
Received: by 10.216.54.195 with SMTP id i45cs88419wec;
 Wed, 16 Dec 2009 12:13:55 -0800 (PST)
Received: by 10.229.93.41 with SMTP id t41mr876283qcm.81.1260994433979;
 Wed, 16 Dec 2009 12:13:53 -0800 (PST)
Return-Path: <SRS0=m0Ne=IC=python.org=python-checkins-bounces+skip=pobox.com@bounce2.pobox.com>
Received: from gold.pobox.com (gold.pobox.com [208.72.237.26])
 by mx.google.com with ESMTP id 14si2609476qyk.45.2009.12.16.12.13.53;
 Wed, 16 Dec 2009 12:13:53 -0800 (PST)
Received-SPF: pass (google.com: domain of
 SRS0=m0Ne=IC=python.org=python-checkins-bounces+skip=pobox.com@bounce2.pobox.com
 designates 208.72.237.26 as permitted sender) client-ip=208.72.237.26; 
Authentication-Results: mx.google.com; spf=pass (google.com: domain of
 SRS0=m0Ne=IC=python.org=python-checkins-bounces+skip=pobox.com@bounce2.pobox.com
 designates 208.72.237.26 as permitted sender)
 smtp.mail=SRS0=m0Ne=IC=python.org=python-checkins-bounces+skip=pobox.com@bounce2.pobox.com
Received: from gold.pobox.com (localhost [127.0.0.1])
 by gold.pobox.com (Postfix) with ESMTP id 405164122C7
 for <skip.montanaro@gmail.com>; Wed, 16 Dec 2009 15:13:53 -0500 (EST)
Delivered-To: skip@pobox.com
X-Pobox-Orig-Sender: <python-checkins-bounces+skip=pobox.com@python.org>
X-Pobox-Delivery-ID: 87ED09DC-EA7F-11DE-8136-DEDFC1406F16-00107187!gold.pobox.com
X-Original-To: python-checkins@python.org
x-pobox-client-address: 82.94.164.166
x-pobox-client-name: mail.python.org
Received: from mail.python.org (mail.python.org [82.94.164.166]) by
 gold.pobox.com (Postfix) with ESMTP id 7C9914122F5 for <skip@pobox.com>; Wed,
 16 Dec 2009 15:13:52 -0500 (EST)
Received: from albatross.python.org (localhost.localdomain [127.0.0.1]) by
 mail.python.org (Postfix) with ESMTP id 9BD8AF2F8 for <skip@pobox.com>; Wed,
 16 Dec 2009 21:13:50 +0100 (CET)
Authentication-Results: mail.python.org; dkim=permerror (bad format)
 header.i=unknown
Delivered-To: python-checkins@mail.python.org
Received: from albatross.python.org (localhost.localdomain [127.0.0.1]) by
 mail.python.org (Postfix) with ESMTP id 3554DF2A1 for
 <python-checkins@python.org>; Wed, 16 Dec 2009 21:13:41 +0100 (CET)
Authentication-Results: mail.python.org; dkim=permerror (bad format)
 header.i=unknown
X-Spam-Status: OK 0.006
X-Spam-Evidence: '*H*': 0.99; '*S*': 0.00; 'math': 0.03; '#include': 0.05;
 'array': 0.05; 'else:': 0.05; 'modified:': 0.07; 'raised': 0.07; 'skip:r 30':
 0.07; '(original)': 0.09; '700': 0.09; 'author:': 0.09; 'compute': 0.09;
 'elif': 0.09; 'extreme': 0.09; 'log:': 0.09; 'moderate': 0.09; 'none:': 0.09; 
 'received:82.94.164.162': 0.09; 'received:dinsdale.python.org': 0.09;
 'revision:': 0.09; 'sized': 0.09; 'subject:library': 0.09; 'subject:test':
 0.09; 'subject:trunk': 0.09; 'substitute': 0.09; 'subject:python': 0.10;
 'received:82.94': 0.10; 'received:82.94.164': 0.10; 'from:addr:python.org':
 0.11; 'function': 0.15; 'received:python.org': 0.15; '(empty': 0.16; '+1,9':
 0.16; '-0,0': 0.16; '-lm': 0.16; 'added:': 0.16; 'floats': 0.16;
 'functions.': 0.16; 'module.': 0.16; 'subject:Lib': 0.16;
 'to:addr:python-checkins': 0.16; 'tuple': 0.16; 'values,': 0.16; 'variables':
 0.16; 'fine': 0.17; 'it!': 0.19; 'import': 0.19; 'testing': 0.19;
 'expression': 0.20; 'machine': 0.20; 'string': 0.20; 'skip:u 20': 0.20;
 '(to': 0.23; 'e.g.': 0.23; 'library': 0.24; 'error': 0.27; 'defined': 0.27;
 'else': 0.29; 'source': 0.30; 'skip:[ 10': 0.30; "doesn't": 0.31; 'binary':
 0.31; 'implement': 0.31; 'issue': 0.32; 'significant': 0.32; 'values': 0.32;
 'base': 0.33; 'thanks': 0.34; 'subject:: ': 0.34; 'file': 0.35;
 'received:org': 0.35; 'raise': 0.36; '+++': 0.36; 'skip:7 10': 0.36; 'date:':
 0.36; 'received:82': 0.36; 'test': 0.36; 'system': 0.36; 'skip:" 10': 0.36;
 '>>>': 0.37; 'file)': 0.37; 'float': 0.37; 'functions,': 0.37; 'objects':
 0.37; 'skip:p 30': 0.37; 'windows.': 0.37; 'using': 0.37; 'works': 0.39;
 'trouble': 0.39; 'different': 0.40; 'use': 0.40; 'gives': 0.60; 'evaluate':
 0.61; 'structure': 0.61; 'value': 0.61; 'avoid': 0.61; 'continue': 0.61;
 'due': 0.62; 'skip:m 20': 0.63; 'provides': 0.63; 'smaller': 0.63; 'skip:1
 10': 0.64; 'skip:l 20': 0.65; 'power': 0.65; 'skip:0 10': 0.65; 'platforms':
 0.66; 'quantity': 0.66; 'skip:: 10': 0.66; 'smith': 0.66; 'subject:skip:p
 10': 0.67; '300': 0.67; 'range': 0.68; 'designed': 0.70; 'full': 0.70;
 'begin': 0.70; 'skip:+ 10': 0.72; 'floor,': 0.74; 'skip:{ 10': 0.74; 'safe':
 0.77; '1000': 0.78; 'accurate': 0.78; 'evaluation': 0.78; 'negative': 0.78;
 'skip:5 10': 0.78; 'accuracy': 0.84; '"for': 0.84; '123': 0.84; 'avoids':
 0.84; 'definitions': 0.84; 'general.': 0.84; 'goodies': 0.84; 'implemented':
 0.84; 'skip:1 20': 0.84; 'skip:3 20': 0.84; 'wed': 0.84;
 'message-id:invalid': 0.88; '0.0': 0.91; 'formula': 0.91; 'shift': 0.91;
 'skip:0 20': 0.91; 'subject:NEWS': 0.91; 'criteria': 0.93
Received: from localhost.localdomain (HELO mail.python.org) (127.0.0.1) by
 albatross.python.org with SMTP; 16 Dec 2009 21:13:41 +0100
Received: from dinsdale.python.org (dinsdale.python.org [82.94.164.162]) by
 mail.python.org (Postfix) with ESMTP for <python-checkins@python.org>; Wed,
 16 Dec 2009 21:13:41 +0100 (CET)
MIME-Version: 1.0
X-BeenThere: python-checkins@python.org
X-Mailman-Version: 2.1.12
Precedence: list
List-Id: Check-in messages from the Python maintainers
 <python-checkins.python.org>
List-Unsubscribe: <http://mail.python.org/mailman/options/python-checkins>,
 <mailto:python-checkins-request@python.org?subject=unsubscribe>
List-Archive: <http://mail.python.org/pipermail/python-checkins>
List-Post: <mailto:python-checkins@python.org>
List-Help: <mailto:python-checkins-request@python.org?subject=help>
List-Subscribe: <http://mail.python.org/mailman/listinfo/python-checkins>,
 <mailto:python-checkins-request@python.org?subject=subscribe>
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: 7bit
Errors-To: python-checkins-bounces+skip=pobox.com@python.org
Message-Id: <20091216201352.7C9914122F5@gold.pobox.com>
X-Spambayes-Evidence: '*H*': 1.00; '*S*': 0.00; 'end': 0.04; 'skip:_ 40': 0.04;
 'field': 0.05; 'skip:- 10': 0.05; 'error': 0.07; 'fine': 0.07;
 'implement': 0.07; 'method': 0.07; 'provides': 0.07; 'result': 0.07;
 'similar': 0.07; 'skip:_ 10': 0.07; 'source': 0.07; "we're": 0.07; '+++': 0.09;
 'author:': 0.09; 'base': 0.09; 'double': 0.09; 'from:addr:python.org': 0.09;
 'log:': 0.09; 'modified:': 0.09; 'positive': 0.09; 'revision:': 0.09;
 'skip:+ 10': 0.09; 'skip:s 30': 0.09; 'string': 0.09; 'subject:checkins': 0.09;
 '#include': 0.16; '(original)': 0.16; '(to': 0.16; '+#define': 0.16;
 '+#endif': 0.16; '+#include': 0.16; '+..': 0.16; '+1,31': 0.16; '-0,0': 0.16;
 '1000': 0.16; '>>>': 0.16; 'added:': 0.16; 'argument,': 0.16; 'array': 0.16;
 'binary': 0.16; 'compute': 0.16; 'dec': 0.16; 'definitions': 0.16;
 'e.g.': 0.16; 'email name:python-checkins': 0.16; 'expression': 0.16;
 'extreme': 0.16; 'float': 0.16; 'functions': 0.16; 'general.': 0.16;
 'library': 0.16; 'machine': 0.16; 'math': 0.16;
 'message-id:@gold.pobox.com': 0.16; 'negative': 0.16; 'objects': 0.16;
 'places': 0.16; 'raise': 0.16; 'raised': 0.16; 'received:82.94.164.162': 0.16;
 'received:dinsdale.python.org': 0.16; 'safe': 0.16;
 'sender:addr:python-checkins-bounces+skip=pobox.com': 0.16; 'skip:+ 60': 0.16;
 'skip:= 70': 0.16; 'skip:p 30': 0.16; 'skip:r 30': 0.16; 'subject:test': 0.16;
 'subject:trunk': 0.16; 'to:addr:python-checkins': 0.16;
 'url:python-checkins': 0.16; 'values,': 0.16; 'email addr:python.org': 0.17;
 "don't": 0.17; 'avoid': 0.20; 'set': 0.20; 'skip:- 20': 0.20; 'testing': 0.20;
 'subject:: ': 0.24; '---': 0.24; 'close': 0.24; 'date:': 0.24; "doesn't": 0.24;
 'issue': 0.24; 'outside': 0.24; 'subject:Python': 0.24; 'within': 0.24;
 'works': 0.24; 'way': 0.27; 'where': 0.28; 'header:Received:10': 0.28;
 'list': 0.28; 'thanks': 0.30; 'mailing': 0.30; 'using': 0.30; 'small': 0.31;
 '"this': 0.32; 'else': 0.32; 'function': 0.32; 'significant': 0.32;
 'skip:+ 20': 0.32; 'skip:2 10': 0.32; 'structure': 0.32; 'skip:" 10': 0.32;
 'subject:] ': 0.32; 'url:org': 0.32; 'add': 0.34; 'how': 0.35; 'due': 0.37;
 'skip:1 10': 0.37; 'subject:[': 0.37; 'use': 0.39; 'when': 0.39;
 'subject: - ': 0.39; 'url:python': 0.39; 'allow': 0.61; 'skip:m 20': 0.61;
 'subject:/': 0.61; 'value': 0.61; 'skip:v 10': 0.61; 'those': 0.61;
 'skip:o 10': 0.64; 'full': 0.65; 'skip:c 10': 0.67;
 'sender:addr:python.org': 0.68; 'return': 0.69; 'special': 0.69;
 'trouble': 0.69; 'subject:\n ': 0.70; 'gives': 0.84; 'implemented': 0.84;
 'module.': 0.84; 'platforms': 0.84; 'shift': 0.84; 'skip:1 20': 0.84;
 'skip:2 20': 0.84; 'skip:3 20': 0.84; 'skip:5 10': 0.84; 'smith': 0.84;
 'subject:library': 0.84; 'tiny': 0.84; 'skip:7 10': 0.91; 'test': 0.91;
 'accept': 0.93
From: mark.dickinson <python-checkins@python.org>
Sender: python-checkins-bounces+skip=pobox.com@python.org
To: python-checkins@python.org
Subject: [Python-checkins] r76861 - in python/trunk: Doc/library/math.rst
 Lib/test/math_testcases.txt Lib/test/test_math.py Misc/NEWS
 Modules/Setup.dist Modules/_math.c Modules/_math.h Modules/mathmodule.c
 PC/VC6/pythoncore.dsp PC/VS7.1/pythoncore.vcproj PC/VS8.0/pythoncore.vcproj
 PCbuild/pythoncore.vcproj setup.py
Date: Wed, 16 Dec 2009 15:13:52 -0500 (EST)
X-Spambayes-Classification: ham; 0.00

Author: mark.dickinson
Date: Wed Dec 16 21:13:40 2009
New Revision: 76861

Log:
Issue #3366: Add expm1 function to math module.  Thanks Eric Smith for
testing on Windows.


Added:
   python/trunk/Modules/_math.c
   python/trunk/Modules/_math.h
Modified:
   python/trunk/Doc/library/math.rst
   python/trunk/Lib/test/math_testcases.txt
   python/trunk/Lib/test/test_math.py
   python/trunk/Misc/NEWS
   python/trunk/Modules/Setup.dist
   python/trunk/Modules/mathmodule.c
   python/trunk/PC/VC6/pythoncore.dsp
   python/trunk/PC/VS7.1/pythoncore.vcproj
   python/trunk/PC/VS8.0/pythoncore.vcproj
   python/trunk/PCbuild/pythoncore.vcproj
   python/trunk/setup.py

Modified: python/trunk/Doc/library/math.rst
==============================================================================
--- python/trunk/Doc/library/math.rst	(original)
+++ python/trunk/Doc/library/math.rst	Wed Dec 16 21:13:40 2009
@@ -164,6 +164,20 @@
    Return ``e**x``.
 
 
+.. function:: expm1(x)
+
+   Return ``e**x - 1``.  For small floats *x*, the subtraction in
+   ``exp(x) - 1`` can result in a significant loss of precision; the
+   :func:`expm1` function provides a way to compute this quantity to
+   full precision::
+
+      >>> from math import exp, expm1
+      >>> exp(1e-5) - 1  # gives result accurate to 11 places
+      1.0000050000069649e-05
+      >>> expm1(1e-5)    # result accurate to full precision
+      1.0000050000166668e-05
+
+
 .. function:: log(x[, base])
 
    With one argument, return the natural logarithm of *x* (to base *e*).

Modified: python/trunk/Lib/test/math_testcases.txt
==============================================================================
--- python/trunk/Lib/test/math_testcases.txt	(original)
+++ python/trunk/Lib/test/math_testcases.txt	Wed Dec 16 21:13:40 2009
@@ -249,3 +249,73 @@
 -- thanks to loss of accuracy in 1-x
 gam0140 gamma -63.349078729022985 -> 4.1777971677761880e-88
 gam0141 gamma -127.45117632943295 -> 1.1831110896236810e-214
+
+-----------------------------------------------------------
+-- expm1: exp(x) - 1, without precision loss for small x --
+-----------------------------------------------------------
+
+-- special values
+expm10000 expm1 0.0 -> 0.0
+expm10001 expm1 -0.0 -> -0.0
+expm10002 expm1 inf -> inf
+expm10003 expm1 -inf -> -1.0
+expm10004 expm1 nan -> nan
+
+-- expm1(x) ~ x for tiny x
+expm10010 expm1 5e-324 -> 5e-324
+expm10011 expm1 1e-320 -> 1e-320
+expm10012 expm1 1e-300 -> 1e-300
+expm10013 expm1 1e-150 -> 1e-150
+expm10014 expm1 1e-20 -> 1e-20
+
+expm10020 expm1 -5e-324 -> -5e-324
+expm10021 expm1 -1e-320 -> -1e-320
+expm10022 expm1 -1e-300 -> -1e-300
+expm10023 expm1 -1e-150 -> -1e-150
+expm10024 expm1 -1e-20 -> -1e-20
+
+-- moderate sized values, where direct evaluation runs into trouble
+expm10100 expm1 1e-10 -> 1.0000000000500000e-10
+expm10101 expm1 -9.9999999999999995e-08 -> -9.9999995000000163e-8
+expm10102 expm1 3.0000000000000001e-05 -> 3.0000450004500034e-5
+expm10103 expm1 -0.0070000000000000001 -> -0.0069755570667648951
+expm10104 expm1 -0.071499208740094633 -> -0.069002985744820250
+expm10105 expm1 -0.063296004180116799 -> -0.061334416373633009
+expm10106 expm1 0.02390954035597756 -> 0.024197665143819942
+expm10107 expm1 0.085637352649044901 -> 0.089411184580357767
+expm10108 expm1 0.5966174947411006 -> 0.81596588596501485
+expm10109 expm1 0.30247206212075139 -> 0.35319987035848677
+expm10110 expm1 0.74574727375889516 -> 1.1080161116737459
+expm10111 expm1 0.97767512926555711 -> 1.6582689207372185
+expm10112 expm1 0.8450154566787712 -> 1.3280137976535897
+expm10113 expm1 -0.13979260323125264 -> -0.13046144381396060
+expm10114 expm1 -0.52899322039643271 -> -0.41080213643695923
+expm10115 expm1 -0.74083261478900631 -> -0.52328317124797097
+expm10116 expm1 -0.93847766984546055 -> -0.60877704724085946
+expm10117 expm1 10.0 -> 22025.465794806718
+expm10118 expm1 27.0 -> 532048240600.79865
+expm10119 expm1 123 -> 2.6195173187490626e+53
+expm10120 expm1 -12.0 -> -0.99999385578764666
+expm10121 expm1 -35.100000000000001 -> -0.99999999999999944
+
+-- extreme negative values
+expm10201 expm1 -37.0 -> -0.99999999999999989
+expm10200 expm1 -38.0 -> -1.0
+expm10210 expm1 -710.0 -> -1.0
+-- the formula expm1(x) = 2 * sinh(x/2) * exp(x/2) doesn't work so
+-- well when exp(x/2) is subnormal or underflows to zero; check we're
+-- not using it!
+expm10211 expm1 -1420.0 -> -1.0
+expm10212 expm1 -1450.0 -> -1.0
+expm10213 expm1 -1500.0 -> -1.0
+expm10214 expm1 -1e50 -> -1.0
+expm10215 expm1 -1.79e308 -> -1.0
+
+-- extreme positive values
+expm10300 expm1 300 -> 1.9424263952412558e+130
+expm10301 expm1 700 -> 1.0142320547350045e+304
+expm10302 expm1 709.78271289328393 -> 1.7976931346824240e+308
+expm10303 expm1 709.78271289348402 -> inf overflow
+expm10304 expm1 1000 -> inf overflow
+expm10305 expm1 1e50 -> inf overflow
+expm10306 expm1 1.79e308 -> inf overflow

Modified: python/trunk/Lib/test/test_math.py
==============================================================================
--- python/trunk/Lib/test/test_math.py	(original)
+++ python/trunk/Lib/test/test_math.py	Wed Dec 16 21:13:40 2009
@@ -987,17 +987,16 @@
                 if math.isnan(expected) and math.isnan(got):
                     continue
                 if not math.isnan(expected) and not math.isnan(got):
-                    # we use different closeness criteria for
-                    # different functions.
-                    if fn == 'gamma':
-                        accuracy_failure = ulps_check(expected, got, 20)
-                    elif fn == 'lgamma':
+                    if fn == 'lgamma':
+                        # we use a weaker accuracy test for lgamma;
+                        # lgamma only achieves an absolute error of
+                        # a few multiples of the machine accuracy, in
+                        # general.
                         accuracy_failure = acc_check(expected, got,
                                                   rel_err = 5e-15,
                                                   abs_err = 5e-15)
                     else:
-                        raise ValueError("don't know how to check accuracy "
-                                         "for this function")
+                        accuracy_failure = ulps_check(expected, got, 20)
                     if accuracy_failure is None:
                         continue
 

Modified: python/trunk/Misc/NEWS
==============================================================================
--- python/trunk/Misc/NEWS	(original)
+++ python/trunk/Misc/NEWS	Wed Dec 16 21:13:40 2009
@@ -1683,7 +1683,7 @@
 
 - Issue #7078: Set struct.__doc__ from _struct.__doc__.
 
-- Issue #3366: Add gamma, lgamma functions to math module.
+- Issue #3366: Add expm1, gamma, lgamma functions to math module.
 
 - Issue #6823: Allow time.strftime() to accept a tuple with a isdst field
   outside of the range of [-1, 1] by normalizing the value to within that

Modified: python/trunk/Modules/Setup.dist
==============================================================================
--- python/trunk/Modules/Setup.dist	(original)
+++ python/trunk/Modules/Setup.dist	Wed Dec 16 21:13:40 2009
@@ -169,7 +169,7 @@
 
 #array arraymodule.c	# array objects
 #cmath cmathmodule.c # -lm # complex math library functions
-#math mathmodule.c # -lm # math library functions, e.g. sin()
+#math mathmodule.c _math.c # -lm # math library functions, e.g. sin()
 #_struct _struct.c	# binary structure packing/unpacking
 #time timemodule.c # -lm # time operations and variables
 #operator operator.c	# operator.add() and similar goodies

Added: python/trunk/Modules/_math.c
==============================================================================
--- (empty file)
+++ python/trunk/Modules/_math.c	Wed Dec 16 21:13:40 2009
@@ -0,0 +1,31 @@
+/* Definitions of some C99 math library functions, for those platforms
+   that don't implement these functions already. */
+
+#include <float.h>
+#include <math.h>
+
+/* Mathematically, expm1(x) = exp(x) - 1.  The expm1 function is designed
+   to avoid the significant loss of precision that arises from direct
+   evaluation of the expression exp(x) - 1, for x near 0. */
+
+double
+_Py_expm1(double x)
+{
+    /* For abs(x) >= log(2), it's safe to evaluate exp(x) - 1 directly; this
+       also works fine for infinities and nans.
+
+       For smaller x, we can use a method due to Kahan that achieves close to
+       full accuracy.
+    */
+
+    if (fabs(x) < 0.7) {
+        double u;
+        u = exp(x);
+        if (u == 1.0)
+            return x;
+        else
+            return (u - 1.0) * x / log(u);
+    }
+    else
+        return exp(x) - 1.0;
+}

Added: python/trunk/Modules/_math.h
==============================================================================
--- (empty file)
+++ python/trunk/Modules/_math.h	Wed Dec 16 21:13:40 2009
@@ -0,0 +1,9 @@
+double _Py_expm1(double x);
+
+#ifdef HAVE_EXPM1
+#define m_expm1 expm1
+#else
+/* if the system doesn't have expm1, use the substitute
+   function defined in Modules/_math.c. */
+#define m_expm1 _Py_expm1
+#endif

Modified: python/trunk/Modules/mathmodule.c
==============================================================================
--- python/trunk/Modules/mathmodule.c	(original)
+++ python/trunk/Modules/mathmodule.c	Wed Dec 16 21:13:40 2009
@@ -53,6 +53,7 @@
  */
 
 #include "Python.h"
+#include "_math.h"
 #include "longintrepr.h" /* just for SHIFT */
 
 #ifdef _OSF_SOURCE
@@ -686,6 +687,10 @@
       "cosh(x)\n\nReturn the hyperbolic cosine of x.")
 FUNC1(exp, exp, 1,
       "exp(x)\n\nReturn e raised to the power of x.")
+FUNC1(expm1, m_expm1, 1,
+      "expm1(x)\n\nReturn exp(x)-1.\n"
+      "This function avoids the loss of precision involved in the direct "
+      "evaluation of exp(x)-1 for small x.")
 FUNC1(fabs, fabs, 0,
       "fabs(x)\n\nReturn the absolute value of the float x.")
 FUNC1(floor, floor, 0,
@@ -1420,6 +1425,7 @@
 	{"cosh",	math_cosh,	METH_O,		math_cosh_doc},
 	{"degrees",	math_degrees,	METH_O,		math_degrees_doc},
 	{"exp",		math_exp,	METH_O,		math_exp_doc},
+	{"expm1",	math_expm1,	METH_O,		math_expm1_doc},
 	{"fabs",	math_fabs,	METH_O,		math_fabs_doc},
 	{"factorial",	math_factorial,	METH_O,		math_factorial_doc},
 	{"floor",	math_floor,	METH_O,		math_floor_doc},

Modified: python/trunk/PC/VC6/pythoncore.dsp
==============================================================================
--- python/trunk/PC/VC6/pythoncore.dsp	(original)
+++ python/trunk/PC/VC6/pythoncore.dsp	Wed Dec 16 21:13:40 2009
@@ -161,6 +161,10 @@
 # End Source File
 # Begin Source File
 
+SOURCE=..\..\Modules\_math.c
+# End Source File
+# Begin Source File
+
 SOURCE=..\..\Modules\_randommodule.c
 # End Source File
 # Begin Source File

Modified: python/trunk/PC/VS7.1/pythoncore.vcproj
==============================================================================
--- python/trunk/PC/VS7.1/pythoncore.vcproj	(original)
+++ python/trunk/PC/VS7.1/pythoncore.vcproj	Wed Dec 16 21:13:40 2009
@@ -389,6 +389,9 @@
 			RelativePath="..\..\Modules\_lsprof.c">
 		</File>
 		<File
+			RelativePath="..\..\Modules\_math.c">
+		</File>
+		<File
 			RelativePath="..\..\Modules\_randommodule.c">
 		</File>
 		<File

Modified: python/trunk/PC/VS8.0/pythoncore.vcproj
==============================================================================
--- python/trunk/PC/VS8.0/pythoncore.vcproj	(original)
+++ python/trunk/PC/VS8.0/pythoncore.vcproj	Wed Dec 16 21:13:40 2009
@@ -1027,6 +1027,14 @@
 				>
 			</File>
 			<File
+				RelativePath="..\..\Modules\_math.c"
+				>
+			</File>
+			<File
+				RelativePath="..\..\Modules\_math.h"
+				>
+			</File>
+			<File
 				RelativePath="..\..\Modules\_randommodule.c"
 				>
 			</File>

Modified: python/trunk/PCbuild/pythoncore.vcproj
==============================================================================
--- python/trunk/PCbuild/pythoncore.vcproj	(original)
+++ python/trunk/PCbuild/pythoncore.vcproj	Wed Dec 16 21:13:40 2009
@@ -1027,6 +1027,14 @@
 				>
 			</File>
 			<File
+				RelativePath="..\Modules\_math.c"
+				>
+			</File>
+			<File
+				RelativePath="..\Modules\_math.h"
+				>
+			</File>
+			<File
 				RelativePath="..\Modules\_randommodule.c"
 				>
 			</File>

Modified: python/trunk/setup.py
==============================================================================
--- python/trunk/setup.py	(original)
+++ python/trunk/setup.py	Wed Dec 16 21:13:40 2009
@@ -414,7 +414,7 @@
                                libraries=math_libs) )
 
         # math library functions, e.g. sin()
-        exts.append( Extension('math',  ['mathmodule.c'],
+        exts.append( Extension('math',  ['mathmodule.c', '_math.c'],
                                libraries=math_libs) )
         # fast string operations implemented in C
         exts.append( Extension('strop', ['stropmodule.c']) )
_______________________________________________
Python-checkins mailing list
Python-checkins@python.org
http://mail.python.org/mailman/listinfo/python-checkins

From SRS0=gXzr=IA=python.org=python-checkins-bounces+skip=pobox.com@bounce2.pobox.com  Mon Dec 14 16:00:07 2009
X-VM-v5-Data: ([nil nil nil nil nil nil nil nil nil]
	["2173" "Monday" "14" "December" "2009" "16:58:55" "-0500" "r.david.murray" "python-checkins@python.org" nil "69" "[Python-checkins] r76840 - in python/trunk: Lib/test/test_multiprocessing.py Misc/NEWS" "^From:" nil nil "12" nil nil nil nil nil nil nil nil nil nil]
	nil)
Delivered-To: skip.montanaro@gmail.com
Received: from pop.gmail.com
 by montanaro.dyndns.org with POP3 (fetchmail-6.3.11)
 for <skip@localhost> (single-drop); Mon, 14 Dec 2009 16:00:07 -0600 (CST)
Received: by 10.213.7.80 with SMTP id c16cs133088ebc;
 Mon, 14 Dec 2009 13:59:02 -0800 (PST)
Received: by 10.224.66.71 with SMTP id m7mr3349642qai.173.1260827941218;
 Mon, 14 Dec 2009 13:59:01 -0800 (PST)
Return-Path: <SRS0=gXzr=IA=python.org=python-checkins-bounces+skip=pobox.com@bounce2.pobox.com>
Received: from sienna.pobox.com (sienna.pobox.com [64.74.157.51])
 by mx.google.com with ESMTP id 10si9084671qyk.7.2009.12.14.13.58.59;
 Mon, 14 Dec 2009 13:58:59 -0800 (PST)
Received-SPF: pass (google.com: domain of
 SRS0=gXzr=IA=python.org=python-checkins-bounces+skip=pobox.com@bounce2.pobox.com
 designates 64.74.157.51 as permitted sender) client-ip=64.74.157.51; 
Authentication-Results: mx.google.com; spf=pass (google.com: domain of
 SRS0=gXzr=IA=python.org=python-checkins-bounces+skip=pobox.com@bounce2.pobox.com
 designates 64.74.157.51 as permitted sender)
 smtp.mail=SRS0=gXzr=IA=python.org=python-checkins-bounces+skip=pobox.com@bounce2.pobox.com
Received: from sienna.pobox.com (localhost [127.0.0.1])
 by sienna.pobox.com (Postfix) with ESMTP id CF986208A55
 for <skip.montanaro@gmail.com>; Mon, 14 Dec 2009 16:58:58 -0500 (EST)
Delivered-To: skip@pobox.com
X-Pobox-Orig-Sender: <python-checkins-bounces+skip=pobox.com@python.org>
X-Pobox-Delivery-ID: E147CB00-E8FB-11DE-B068-A0A5AA556207-00107187!sienna.pobox.com
X-Original-To: python-checkins@python.org
x-pobox-client-address: 82.94.164.166
x-pobox-client-name: mail.python.org
Received: from mail.python.org (mail.python.org [82.94.164.166]) by
 sienna.pobox.com (Postfix) with ESMTP id B32C7208ABE for <skip@pobox.com>;
 Mon, 14 Dec 2009 16:58:55 -0500 (EST)
Received: from albatross.python.org (localhost.localdomain [127.0.0.1]) by
 mail.python.org (Postfix) with ESMTP id 34465EF99 for <skip@pobox.com>; Mon,
 14 Dec 2009 22:58:42 +0100 (CET)
Authentication-Results: mail.python.org; dkim=permerror (bad format)
 header.i=unknown
Delivered-To: python-checkins@mail.python.org
Received: from albatross.python.org (localhost.localdomain [127.0.0.1]) by
 mail.python.org (Postfix) with ESMTP id 7D411EE98 for
 <python-checkins@python.org>; Mon, 14 Dec 2009 22:57:39 +0100 (CET)
Authentication-Results: mail.python.org; dkim=permerror (bad format)
 header.i=unknown
X-Spam-Status: OK 0.000
X-Spam-Evidence: '*H*': 1.00; '*S*': 0.00; 'def': 0.02; 'python': 0.05;
 'modified:': 0.07; 'queue': 0.07; '(original)': 0.09; 'author:': 0.09;
 'log:': 0.09; 'mon': 0.09; 'received:82.94.164.162': 0.09;
 'received:dinsdale.python.org': 0.09; 'revision:': 0.09; 'subject:test':
 0.09; 'subject:trunk': 0.09; 'subject:python': 0.10; 'received:82.94': 0.10;
 'received:82.94.164': 0.10; 'from:addr:python.org': 0.11;
 'received:python.org': 0.15; '-------': 0.16; 'subject:Lib': 0.16;
 'to:addr:python-checkins': 0.16; 'uses': 0.23; 'library': 0.24; 'issue':
 0.32; 'subject:: ': 0.34; 'received:org': 0.35; '+++': 0.36; 'date:': 0.36;
 'received:82': 0.36; "what's": 0.37; 'port': 0.38; 'skip:s 20': 0.39; 'use':
 0.40; 'del': 0.63; 'skip:t 30': 0.71; '2.7': 0.84; 'message-id:invalid':
 0.88; 'subject:NEWS': 0.91
Received: from localhost.localdomain (HELO mail.python.org) (127.0.0.1) by
 albatross.python.org with SMTP; 14 Dec 2009 22:57:39 +0100
Received: from dinsdale.python.org (dinsdale.python.org [82.94.164.162]) by
 mail.python.org (Postfix) with ESMTP for <python-checkins@python.org>; Mon,
 14 Dec 2009 22:57:39 +0100 (CET)
MIME-Version: 1.0
X-BeenThere: python-checkins@python.org
X-Mailman-Version: 2.1.12
Precedence: list
List-Id: Check-in messages from the Python maintainers
 <python-checkins.python.org>
List-Unsubscribe: <http://mail.python.org/mailman/options/python-checkins>,
 <mailto:python-checkins-request@python.org?subject=unsubscribe>
List-Archive: <http://mail.python.org/pipermail/python-checkins>
List-Post: <mailto:python-checkins@python.org>
List-Help: <mailto:python-checkins-request@python.org?subject=help>
List-Subscribe: <http://mail.python.org/mailman/listinfo/python-checkins>,
 <mailto:python-checkins-request@python.org?subject=subscribe>
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: 7bit
Errors-To: python-checkins-bounces+skip=pobox.com@python.org
Message-Id: <20091214215855.B32C7208ABE@sienna.pobox.com>
X-Spambayes-Evidence: '*H*': 1.00; '*S*': 0.00; 'python': 0.04;
 'skip:_ 40': 0.04; '+++': 0.09; 'author:': 0.09; 'def': 0.09;
 'from:addr:python.org': 0.09; 'log:': 0.09; 'modified:': 0.09;
 'revision:': 0.09; 'skip:s 30': 0.09; 'subject:checkins': 0.09;
 '(original)': 0.16; '-------': 0.16; 'dec': 0.16;
 'email name:python-checkins': 0.16; 'instead': 0.16; 'library': 0.16;
 'received:82.94.164.162': 0.16; 'received:dinsdale.python.org': 0.16;
 'segmentation': 0.16;
 'sender:addr:python-checkins-bounces+skip=pobox.com': 0.16; 'skip:= 70': 0.16;
 'skip:d 30': 0.16; 'subject:test': 0.16; 'subject:trunk': 0.16;
 'to:addr:python-checkins': 0.16; 'url:python-checkins': 0.16;
 'email addr:python.org': 0.17; 'uses': 0.20; '---': 0.24; 'date:': 0.24;
 'issue': 0.24; 'skip:t 30': 0.24; 'subject:Python': 0.24; "what's": 0.24;
 'header:Received:10': 0.28; 'list': 0.28; 'mailing': 0.30; 'skip:a 20': 0.31;
 'hard': 0.32; 'subject:] ': 0.32; 'url:org': 0.32; 'skip:s 20': 0.36;
 'skip:q 10': 0.37; 'subject:[': 0.37; 'use': 0.39; 'when': 0.39;
 'subject: - ': 0.39; 'url:python': 0.39; 'subject:/': 0.61;
 'received:sienna.pobox.com': 0.62; 'skip:o 10': 0.64;
 'sender:addr:python.org': 0.68; 'coded': 0.84;
 'message-id:@sienna.pobox.com': 0.84; 'subject::\n ': 0.84;
 'subject:skip:t 20': 0.84; 'port': 0.91
From: r.david.murray <python-checkins@python.org>
Sender: python-checkins-bounces+skip=pobox.com@python.org
To: python-checkins@python.org
Subject: [Python-checkins] r76840 - in python/trunk:
 Lib/test/test_multiprocessing.py Misc/NEWS
Date: Mon, 14 Dec 2009 16:58:55 -0500 (EST)
X-Spambayes-Classification: ham; 0.00

Author: r.david.murray
Date: Mon Dec 14 22:57:39 2009
New Revision: 76840

Log:
Issue #7498: make test_multiprocessing use test_support.find_unused_port
instead of a hard coded port number in test_rapid_restart.


Modified:
   python/trunk/Lib/test/test_multiprocessing.py
   python/trunk/Misc/NEWS

Modified: python/trunk/Lib/test/test_multiprocessing.py
==============================================================================
--- python/trunk/Lib/test/test_multiprocessing.py	(original)
+++ python/trunk/Lib/test/test_multiprocessing.py	Mon Dec 14 22:57:39 2009
@@ -1212,8 +1212,9 @@
 
     def test_rapid_restart(self):
         authkey = os.urandom(32)
+        port = test_support.find_unused_port()
         manager = QueueManager(
-            address=('localhost', 9999), authkey=authkey, serializer=SERIALIZER)
+            address=('localhost', port), authkey=authkey, serializer=SERIALIZER)
         manager.start()
 
         p = self.Process(target=self._putter, args=(manager.address, authkey))
@@ -1223,7 +1224,7 @@
         del queue
         manager.shutdown()
         manager = QueueManager(
-            address=('localhost', 9999), authkey=authkey, serializer=SERIALIZER)
+            address=('localhost', port), authkey=authkey, serializer=SERIALIZER)
         manager.start()
         manager.shutdown()
 

Modified: python/trunk/Misc/NEWS
==============================================================================
--- python/trunk/Misc/NEWS	(original)
+++ python/trunk/Misc/NEWS	Mon Dec 14 22:57:39 2009
@@ -20,6 +20,7 @@
 - Issue #7466: segmentation fault when the garbage collector is called
   in the middle of populating a tuple.  Patch by Florent Xicluna.
 
+
 Library
 -------
 
@@ -42,6 +43,14 @@
   distutils.dist.DistributionMetadata.
 
 
+Tests
+-----
+
+- Issue #7498: test_multiprocessing now uses test_support.find_unused_port
+  instead of a hardcoded port number in test_rapid_restart.
+
+
+
 What's New in Python 2.7 alpha 1
 ================================
 
_______________________________________________
Python-checkins mailing list
Python-checkins@python.org
http://mail.python.org/mailman/listinfo/python-checkins

From SRS0=GK0S=H7=python.org=python-checkins-bounces+skip=pobox.com@bounce2.pobox.com  Sun Dec 13 17:25:31 2009
X-VM-v5-Data: ([nil nil nil nil nil nil nil nil nil]
	["11973" "Sunday" "13" "December" "2009" "18:24:25" "-0500" "tarek.ziade" "python-checkins@python.org" nil "236" "[Python-checkins] r76826 - in python/trunk/Doc/distutils: commandref.rst sourcedist.rst" "^From:" nil nil "12" nil nil nil nil nil nil nil nil nil nil]
	nil)
Delivered-To: skip.montanaro@gmail.com
Received: from pop.gmail.com
 by montanaro.dyndns.org with POP3 (fetchmail-6.3.11)
 for <skip@localhost> (single-drop); Sun, 13 Dec 2009 17:25:31 -0600 (CST)
Received: by 10.216.0.80 with SMTP id 58cs96668wea;
 Sun, 13 Dec 2009 15:24:27 -0800 (PST)
Received: by 10.224.110.135 with SMTP id n7mr2467302qap.185.1260746666868;
 Sun, 13 Dec 2009 15:24:26 -0800 (PST)
Return-Path: <SRS0=GK0S=H7=python.org=python-checkins-bounces+skip=pobox.com@bounce2.pobox.com>
Received: from azure.pobox.com (azure.pobox.com [208.72.237.55])
 by mx.google.com with ESMTP id 37si8350040qyk.20.2009.12.13.15.24.26;
 Sun, 13 Dec 2009 15:24:26 -0800 (PST)
Received-SPF: pass (google.com: domain of
 SRS0=GK0S=H7=python.org=python-checkins-bounces+skip=pobox.com@bounce2.pobox.com
 designates 208.72.237.55 as permitted sender) client-ip=208.72.237.55; 
Authentication-Results: mx.google.com; spf=pass (google.com: domain of
 SRS0=GK0S=H7=python.org=python-checkins-bounces+skip=pobox.com@bounce2.pobox.com
 designates 208.72.237.55 as permitted sender)
 smtp.mail=SRS0=GK0S=H7=python.org=python-checkins-bounces+skip=pobox.com@bounce2.pobox.com
Received: from azure.pobox.com (localhost [127.0.0.1])
 by azure.pobox.com (Postfix) with ESMTP id F41DD40CC00
 for <skip.montanaro@gmail.com>; Sun, 13 Dec 2009 18:24:25 -0500 (EST)
Delivered-To: skip@pobox.com
X-Pobox-Orig-Sender: <python-checkins-bounces+skip=pobox.com@python.org>
X-Pobox-Delivery-ID: A71FD124-E83E-11DE-A31B-AFAB66006108-00107187!azure.pobox.com
X-Original-To: python-checkins@python.org
x-pobox-client-address: 82.94.164.166
x-pobox-client-name: mail.python.org
Received: from mail.python.org (mail.python.org [82.94.164.166]) by
 azure.pobox.com (Postfix) with ESMTP id 3B79040C6EE for <skip@pobox.com>;
 Sun, 13 Dec 2009 18:24:25 -0500 (EST)
Received: from albatross.python.org (localhost.localdomain [127.0.0.1]) by
 mail.python.org (Postfix) with ESMTP id 9D6BDF13D for <skip@pobox.com>; Mon,
 14 Dec 2009 00:24:23 +0100 (CET)
Authentication-Results: mail.python.org; dkim=permerror (bad format)
 header.i=unknown
Delivered-To: python-checkins@mail.python.org
Received: from albatross.python.org (localhost.localdomain [127.0.0.1]) by
 mail.python.org (Postfix) with ESMTP id B43FEF0EA for
 <python-checkins@python.org>; Mon, 14 Dec 2009 00:24:13 +0100 (CET)
Authentication-Results: mail.python.org; dkim=permerror (bad format)
 header.i=unknown
X-Spam-Status: OK 0.000
X-Spam-Evidence: '*H*': 1.00; '*S*': 0.00; 'package.': 0.04; 'syntax': 0.04;
 'python': 0.05; 'file,': 0.05; 'adds': 0.07; 'explicit': 0.07; 'line,': 0.07; 
 'modified:': 0.07; 'command': 0.09; '(original)': 0.09; 'author:': 0.09;
 'definition': 0.09; 'described': 0.09; 'log:': 0.09; 'mon': 0.09;
 'platform.': 0.09; 'received:82.94.164.162': 0.09;
 'received:dinsdale.python.org': 0.09; 'revision:': 0.09; 'run,': 0.09;
 'subject:trunk': 0.09; 'unix': 0.09; 'subject:python': 0.10;
 'received:82.94': 0.10; 'received:82.94.164': 0.10; 'from:addr:python.org':
 0.11; 'received:python.org': 0.15; '(e.g.,': 0.16; '(or,': 0.16; '-the':
 0.16; '-you': 0.16; 'filename': 0.16; 'implies': 0.16; 'interpret': 0.16;
 'manifest': 0.16; 'recreate': 0.16; 'reference.': 0.16; 'skip:- 90': 0.16;
 'skip:: 30': 0.16; 'skip:` 10': 0.16; 'specifies': 0.16; 'template.': 0.16;
 'to:addr:python- checkins': 0.16; 'script': 0.18; 'define': 0.20; 'systems.':
 0.20; 'example,': 0.22; 'section': 0.23; 'bit': 0.24; 'anything': 0.26;
 'list': 0.28; 'options': 0.29; 'source': 0.30; "doesn't": 0.31; 'default':
 0.31; 'easier': 0.31; "let's": 0.31; 'description': 0.31; 'project': 0.31;
 'examples': 0.32; 'does': 0.33; 'either': 0.34; 'subject:: ': 0.34; 'there':
 0.35; 'file': 0.35; 'but': 0.35; 'received:org': 0.35; 'down': 0.35;
 'except': 0.35; 'standard': 0.35; 'couple': 0.35; '+++': 0.36; 'follows:':
 0.36; 'moved': 0.36; 'files': 0.36; 'date:': 0.36; 'received:82': 0.36;
 'system': 0.36; 'might': 0.37; 'enough.': 0.37; 'exist,': 0.37; 'specify':
 0.37; 'listed': 0.37; 'skip:- 60': 0.37; 'again': 0.39; 'characters': 0.40;
 'modify': 0.40; 'use': 0.40; 'your': 0.61; 'look': 0.62; 'order': 0.62;
 'first,': 0.63; 'match': 0.63; 'subject:skip:c 10': 0.63; 'template': 0.63;
 'regular': 0.64; 'turn': 0.64; 'per': 0.65; 'included': 0.65; 'case.': 0.66;
 'skip:: 10': 0.66; 'follow': 0.68; 'generated': 0.70; 'skip:+ 10': 0.72;
 'sequence': 0.74; 'subject:skip:s 10': 0.74; 'tree': 0.74; 'matches': 0.78;
 'above:': 0.84; 'characters,': 0.84; 'skip:\\ 10': 0.84; 'skip:\\ 20': 0.84;
 'message-id:invalid': 0.88; 'exclude': 0.91
Received: from localhost.localdomain (HELO mail.python.org) (127.0.0.1) by
 albatross.python.org with SMTP; 14 Dec 2009 00:24:13 +0100
Received: from dinsdale.python.org (dinsdale.python.org [82.94.164.162]) by
 mail.python.org (Postfix) with ESMTP for <python-checkins@python.org>; Mon,
 14 Dec 2009 00:24:13 +0100 (CET)
MIME-Version: 1.0
X-BeenThere: python-checkins@python.org
X-Mailman-Version: 2.1.12
Precedence: list
List-Id: Check-in messages from the Python maintainers
 <python-checkins.python.org>
List-Unsubscribe: <http://mail.python.org/mailman/options/python-checkins>,
 <mailto:python-checkins-request@python.org?subject=unsubscribe>
List-Archive: <http://mail.python.org/pipermail/python-checkins>
List-Post: <mailto:python-checkins@python.org>
List-Help: <mailto:python-checkins-request@python.org?subject=help>
List-Subscribe: <http://mail.python.org/mailman/listinfo/python-checkins>,
 <mailto:python-checkins-request@python.org?subject=subscribe>
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: 7bit
Errors-To: python-checkins-bounces+skip=pobox.com@python.org
Message-Id: <20091213232425.3B79040C6EE@azure.pobox.com>
X-Spambayes-Evidence: '*H*': 1.00; '*S*': 0.00; 'listed': 0.04; 'python': 0.04;
 'skip:_ 40': 0.04; 'command': 0.05; 'skip:- 10': 0.05; 'added': 0.07;
 'built': 0.07; 'default': 0.07; 'define': 0.07; 'reading': 0.07;
 'skip:_ 10': 0.07; 'source': 0.07; '+++': 0.09; 'author:': 0.09; 'bit': 0.09;
 'contains': 0.09; 'force': 0.09; 'from:addr:python.org': 0.09; 'log:': 0.09;
 'modified:': 0.09; 'regular': 0.09; 'revision:': 0.09; 'skip:+ 10': 0.09;
 'subject:checkins': 0.09; 'syntax': 0.09; 'unix': 0.09; 'available': 0.11;
 'look': 0.13; 'support': 0.13; '(original)': 0.16; '+..': 0.16; '+and': 0.16;
 '+the': 0.16; '+this': 0.16; '+you': 0.16; '-..': 0.16; '-the': 0.16;
 '-you': 0.16; 'across': 0.16; 'command.': 0.16; 'dec': 0.16; 'described': 0.16;
 'disable': 0.16; 'email name:python-checkins': 0.16; 'examples': 0.16;
 'except': 0.16; 'explicit': 0.16; 'file,': 0.16; 'filename': 0.16;
 'generate': 0.16; 'line,': 0.16; 'match': 0.16; 'matching': 0.16;
 'needs': 0.16; 'normal': 0.16; 'package.': 0.16; 'patterns': 0.16;
 'platform.': 0.16; 'received:82.94.164.162': 0.16;
 'received:dinsdale.python.org': 0.16;
 'sender:addr:python-checkins-bounces+skip=pobox.com': 0.16; 'sequence': 0.16;
 'skip:- 90': 0.16; 'skip:= 70': 0.16; 'subject:trunk': 0.16; 'template': 0.16;
 'template,': 0.16; 'template.': 0.16; 'to:addr:python-checkins': 0.16;
 'url:python-checkins': 0.16; 'email addr:python.org': 0.17; 'set': 0.20;
 'skip:- 20': 0.20; '---': 0.24; 'apply': 0.24; 'date:': 0.24; "doesn't": 0.24;
 'included': 0.24; 'subject:Python': 0.24; 'tree': 0.24; 'where': 0.28;
 'header:Received:10': 0.28; 'list': 0.28; 'does': 0.30; 'mailing': 0.30;
 'skip:( 10': 0.30; 'include': 0.31; 'couple': 0.32; 'generated': 0.32;
 'option': 0.32; 'skip:+ 20': 0.32; 'standard': 0.32; 'windows': 0.32;
 'order': 0.32; 'subject:] ': 0.32; 'url:org': 0.32; 'them': 0.33;
 'there': 0.35; 'done': 0.37; 'down': 0.37; 'existing': 0.37; 'now.': 0.37;
 'project': 0.37; 'section': 0.37; 'used': 0.37; 'subject:[': 0.37; 'but': 0.37;
 'use': 0.39; 'when': 0.39; 'either': 0.39; 'skip:- 60': 0.39;
 'subject: - ': 0.39; 'url:python': 0.39; 'easier': 0.61;
 'message-id:@azure.pobox.com': 0.61; 'operating': 0.61; 'subject:/': 0.61;
 'per': 0.62; 'other': 0.64; 'own': 0.65; 'sender:addr:python.org': 0.68;
 'each': 0.68; 'distribution': 0.69; 'above': 0.78; 'above,': 0.84;
 'are:': 0.84; 'course': 0.84; 'enough.': 0.84; 'fragment': 0.84;
 'modify': 0.84; 'script': 0.84; 'subject::\n ': 0.84;
 'subject:skip:c 10': 0.84; 'turn': 0.84; 'yet': 0.84; 'first,': 0.91
From: tarek.ziade <python-checkins@python.org>
Sender: python-checkins-bounces+skip=pobox.com@python.org
To: python-checkins@python.org
Subject: [Python-checkins] r76826 - in python/trunk/Doc/distutils:
 commandref.rst sourcedist.rst
Date: Sun, 13 Dec 2009 18:24:25 -0500 (EST)
X-Spambayes-Classification: ham; 0.00

Author: tarek.ziade
Date: Mon Dec 14 00:24:13 2009
New Revision: 76826

Log:
reorganized the distutils doc a bit : the MANIFEST.in template system has its own section now. This is easier to find and follow

Modified:
   python/trunk/Doc/distutils/commandref.rst
   python/trunk/Doc/distutils/sourcedist.rst

Modified: python/trunk/Doc/distutils/commandref.rst
==============================================================================
--- python/trunk/Doc/distutils/commandref.rst	(original)
+++ python/trunk/Doc/distutils/commandref.rst	Mon Dec 14 00:24:13 2009
@@ -48,50 +48,6 @@
 .. % \label{clean-cmd}
 
 
-.. _sdist-cmd:
-
-Creating a source distribution: the :command:`sdist` command
-============================================================
-
-**\*\*** fragment moved down from above: needs context! **\*\***
-
-The manifest template commands are:
-
-+-------------------------------------------+-----------------------------------------------+
-| Command                                   | Description                                   |
-+===========================================+===============================================+
-| :command:`include pat1 pat2 ...`          | include all files matching any of the listed  |
-|                                           | patterns                                      |
-+-------------------------------------------+-----------------------------------------------+
-| :command:`exclude pat1 pat2 ...`          | exclude all files matching any of the listed  |
-|                                           | patterns                                      |
-+-------------------------------------------+-----------------------------------------------+
-| :command:`recursive-include dir pat1 pat2 | include all files under *dir* matching any of |
-| ...`                                      | the listed patterns                           |
-+-------------------------------------------+-----------------------------------------------+
-| :command:`recursive-exclude dir pat1 pat2 | exclude all files under *dir* matching any of |
-| ...`                                      | the listed patterns                           |
-+-------------------------------------------+-----------------------------------------------+
-| :command:`global-include pat1 pat2 ...`   | include all files anywhere in the source tree |
-|                                           | matching --- & any of the listed patterns     |
-+-------------------------------------------+-----------------------------------------------+
-| :command:`global-exclude pat1 pat2 ...`   | exclude all files anywhere in the source tree |
-|                                           | matching --- & any of the listed patterns     |
-+-------------------------------------------+-----------------------------------------------+
-| :command:`prune dir`                      | exclude all files under *dir*                 |
-+-------------------------------------------+-----------------------------------------------+
-| :command:`graft dir`                      | include all files under *dir*                 |
-+-------------------------------------------+-----------------------------------------------+
-
-The patterns here are Unix-style "glob" patterns: ``*`` matches any sequence of
-regular filename characters, ``?`` matches any single regular filename
-character, and ``[range]`` matches any of the characters in *range* (e.g.,
-``a-z``, ``a-zA-Z``, ``a-f0-9_.``).  The definition of "regular filename
-character" is platform-specific: on Unix it is anything except slash; on Windows
-anything except backslash or colon.
-
-**\*\*** Windows support not there yet **\*\***
-
 .. % \section{Creating a built distribution: the
 .. % \protect\command{bdist} command family}
 .. % \label{bdist-cmds}

Modified: python/trunk/Doc/distutils/sourcedist.rst
==============================================================================
--- python/trunk/Doc/distutils/sourcedist.rst	(original)
+++ python/trunk/Doc/distutils/sourcedist.rst	Mon Dec 14 00:24:13 2009
@@ -111,9 +111,68 @@
 :file:`MANIFEST`, you must specify everything: the default set of files
 described above does not apply in this case.
 
+See :ref:`manifest_template` section for a syntax reference.
+
+.. _manifest-options:
+
+Manifest-related options
+========================
+
+The normal course of operations for the :command:`sdist` command is as follows:
+
+* if the manifest file, :file:`MANIFEST` doesn't exist, read :file:`MANIFEST.in`
+  and create the manifest
+
+* if neither :file:`MANIFEST` nor :file:`MANIFEST.in` exist, create a manifest
+  with just the default file set
+
+* if either :file:`MANIFEST.in` or the setup script (:file:`setup.py`) are more
+  recent than :file:`MANIFEST`, recreate :file:`MANIFEST` by reading
+  :file:`MANIFEST.in`
+
+* use the list of files now in :file:`MANIFEST` (either just generated or read
+  in) to create the source distribution archive(s)
+
+There are a couple of options that modify this behaviour.  First, use the
+:option:`--no-defaults` and :option:`--no-prune` to disable the standard
+"include" and "exclude" sets.
+
+Second, you might want to force the manifest to be regenerated---for example, if
+you have added or removed files or directories that match an existing pattern in
+the manifest template, you should regenerate the manifest::
+
+   python setup.py sdist --force-manifest
+
+Or, you might just want to (re)generate the manifest, but not create a source
+distribution::
+
+   python setup.py sdist --manifest-only
+
+:option:`--manifest-only` implies :option:`--force-manifest`. :option:`-o` is a
+shortcut for :option:`--manifest-only`, and :option:`-f` for
+:option:`--force-manifest`.
+
+.. _manifest_template:
+
+The MANIFEST.in template
+========================
+
+A :file:`MANIFEST.in` file can be added in a project to define the list of
+files to include in the distribution built by the :command:`sdist` command.
+
+When :command:`sdist` is run, it will look for the :file:`MANIFEST.in` file
+and interpret it to generate the :file:`MANIFEST` file that contains the
+list of files that will be included in the package.
+
+This mechanism can be used when the default list of files is not enough.
+(See :ref:`manifest`).
+
+Principle
+---------
+
 The manifest template has one command per line, where each command specifies a
 set of files to include or exclude from the source distribution.  For an
-example, again we turn to the Distutils' own manifest template::
+example, let's look at the Distutils' own manifest template::
 
    include *.txt
    recursive-include examples *.txt *.py
@@ -125,9 +184,7 @@
 :file:`examples/sample?/build`.  All of this is done *after* the standard
 include set, so you can exclude files from the standard set with explicit
 instructions in the manifest template.  (Or, you can use the
-:option:`--no-defaults` option to disable the standard set entirely.)  There are
-several other commands available in the manifest template mini-language; see
-section :ref:`sdist-cmd`.
+:option:`--no-defaults` option to disable the standard set entirely.)
 
 The order of commands in the manifest template matters: initially, we have the
 list of default files as described above, and each command in the template adds
@@ -181,44 +238,41 @@
 them to the standard representation on your platform. That way, the manifest
 template is portable across operating systems.
 
+Commands
+--------
 
-.. _manifest-options:
-
-Manifest-related options
-========================
-
-The normal course of operations for the :command:`sdist` command is as follows:
-
-* if the manifest file, :file:`MANIFEST` doesn't exist, read :file:`MANIFEST.in`
-  and create the manifest
-
-* if neither :file:`MANIFEST` nor :file:`MANIFEST.in` exist, create a manifest
-  with just the default file set
-
-* if either :file:`MANIFEST.in` or the setup script (:file:`setup.py`) are more
-  recent than :file:`MANIFEST`, recreate :file:`MANIFEST` by reading
-  :file:`MANIFEST.in`
-
-* use the list of files now in :file:`MANIFEST` (either just generated or read
-  in) to create the source distribution archive(s)
-
-There are a couple of options that modify this behaviour.  First, use the
-:option:`--no-defaults` and :option:`--no-prune` to disable the standard
-"include" and "exclude" sets.
-
-Second, you might want to force the manifest to be regenerated---for example, if
-you have added or removed files or directories that match an existing pattern in
-the manifest template, you should regenerate the manifest::
-
-   python setup.py sdist --force-manifest
-
-Or, you might just want to (re)generate the manifest, but not create a source
-distribution::
-
-   python setup.py sdist --manifest-only
-
-:option:`--manifest-only` implies :option:`--force-manifest`. :option:`-o` is a
-shortcut for :option:`--manifest-only`, and :option:`-f` for
-:option:`--force-manifest`.
+The manifest template commands are:
 
++-------------------------------------------+-----------------------------------------------+
+| Command                                   | Description                                   |
++===========================================+===============================================+
+| :command:`include pat1 pat2 ...`          | include all files matching any of the listed  |
+|                                           | patterns                                      |
++-------------------------------------------+-----------------------------------------------+
+| :command:`exclude pat1 pat2 ...`          | exclude all files matching any of the listed  |
+|                                           | patterns                                      |
++-------------------------------------------+-----------------------------------------------+
+| :command:`recursive-include dir pat1 pat2 | include all files under *dir* matching any of |
+| ...`                                      | the listed patterns                           |
++-------------------------------------------+-----------------------------------------------+
+| :command:`recursive-exclude dir pat1 pat2 | exclude all files under *dir* matching any of |
+| ...`                                      | the listed patterns                           |
++-------------------------------------------+-----------------------------------------------+
+| :command:`global-include pat1 pat2 ...`   | include all files anywhere in the source tree |
+|                                           | matching --- & any of the listed patterns     |
++-------------------------------------------+-----------------------------------------------+
+| :command:`global-exclude pat1 pat2 ...`   | exclude all files anywhere in the source tree |
+|                                           | matching --- & any of the listed patterns     |
++-------------------------------------------+-----------------------------------------------+
+| :command:`prune dir`                      | exclude all files under *dir*                 |
++-------------------------------------------+-----------------------------------------------+
+| :command:`graft dir`                      | include all files under *dir*                 |
++-------------------------------------------+-----------------------------------------------+
+
+The patterns here are Unix-style "glob" patterns: ``*`` matches any sequence of
+regular filename characters, ``?`` matches any single regular filename
+character, and ``[range]`` matches any of the characters in *range* (e.g.,
+``a-z``, ``a-zA-Z``, ``a-f0-9_.``).  The definition of "regular filename
+character" is platform-specific: on Unix it is anything except slash; on Windows
+anything except backslash or colon.
 
_______________________________________________
Python-checkins mailing list
Python-checkins@python.org
http://mail.python.org/mailman/listinfo/python-checkins

From SRS0=GK0S=H7=python.org=python-checkins-bounces+skip=pobox.com@bounce2.pobox.com  Sun Dec 13 13:20:45 2009
X-VM-v5-Data: ([nil nil nil nil nil nil nil nil nil]
	["10844" "Sunday" "13" "December" "2009" "14:19:19" "-0500" "benjamin.peterson" "python-checkins@python.org" nil "303" "[Python-checkins] r76805 - in python/trunk: Lib/test/test_fileio.py Lib/test/test_io.py Misc/NEWS Modules/_io/_iomodule.c Modules/_io/_iomodule.h Modules/_io/bufferedio.c Modules/_io/fileio.c Modules/_io/iobase.c Modules/_io/textio.c" "^From:" nil nil "12" nil nil nil nil nil nil nil nil nil nil]
	nil)
Delivered-To: skip.montanaro@gmail.com
Received: from pop.gmail.com
 by montanaro.dyndns.org with POP3 (fetchmail-6.3.11)
 for <skip@localhost> (single-drop); Sun, 13 Dec 2009 13:20:45 -0600 (CST)
Received: by 10.216.0.80 with SMTP id 58cs84237wea;
 Sun, 13 Dec 2009 11:19:21 -0800 (PST)
Received: by 10.224.87.87 with SMTP id v23mr2360461qal.158.1260731960470;
 Sun, 13 Dec 2009 11:19:20 -0800 (PST)
Return-Path: <SRS0=GK0S=H7=python.org=python-checkins-bounces+skip=pobox.com@bounce2.pobox.com>
Received: from indigo.pobox.com (indigo.pobox.com [64.74.157.52])
 by mx.google.com with ESMTP id 7si9939633qwb.42.2009.12.13.11.19.20;
 Sun, 13 Dec 2009 11:19:20 -0800 (PST)
Received-SPF: pass (google.com: domain of
 SRS0=GK0S=H7=python.org=python-checkins-bounces+skip=pobox.com@bounce2.pobox.com
 designates 64.74.157.52 as permitted sender) client-ip=64.74.157.52; 
Authentication-Results: mx.google.com; spf=pass (google.com: domain of
 SRS0=GK0S=H7=python.org=python-checkins-bounces+skip=pobox.com@bounce2.pobox.com
 designates 64.74.157.52 as permitted sender)
 smtp.mail=SRS0=GK0S=H7=python.org=python-checkins-bounces+skip=pobox.com@bounce2.pobox.com
Received: from indigo.pobox.com (localhost [127.0.0.1])
 by indigo.pobox.com (Postfix) with ESMTP id BD5E420AE2D
 for <skip.montanaro@gmail.com>; Sun, 13 Dec 2009 14:19:19 -0500 (EST)
Delivered-To: skip@pobox.com
X-Pobox-Orig-Sender: <python-checkins-bounces+skip=pobox.com@python.org>
X-Pobox-Delivery-ID: 69A4F986-E81C-11DE-8A0A-806B0D51E4E9-00107187!indigo.pobox.com
X-Original-To: python-checkins@python.org
x-pobox-client-address: 82.94.164.166
x-pobox-client-name: mail.python.org
Received: from mail.python.org (mail.python.org [82.94.164.166]) by
 indigo.pobox.com (Postfix) with ESMTP id 560CB20AE36 for <skip@pobox.com>;
 Sun, 13 Dec 2009 14:19:19 -0500 (EST)
Received: from albatross.python.org (localhost.localdomain [127.0.0.1]) by
 mail.python.org (Postfix) with ESMTP id D7F25F1A9 for <skip@pobox.com>; Sun,
 13 Dec 2009 20:19:18 +0100 (CET)
Authentication-Results: mail.python.org; dkim=permerror (bad format)
 header.i=unknown
Delivered-To: python-checkins@mail.python.org
Received: from albatross.python.org (localhost.localdomain [127.0.0.1]) by
 mail.python.org (Postfix) with ESMTP id 2038FF0F8 for
 <python-checkins@python.org>; Sun, 13 Dec 2009 20:19:09 +0100 (CET)
Authentication-Results: mail.python.org; dkim=permerror (bad format)
 header.i=unknown
X-Spam-Status: OK 0.000
X-Spam-Evidence: '*H*': 1.00; '*S*': 0.00; 'def': 0.02; 'void': 0.05; 'adds':
 0.07; 'modified:': 0.07; 'normally': 0.07; '(original)': 0.09;
 'argument':
 0.09; 'author:': 0.09; 'definition': 0.09; 'int': 0.09; 'log:': 0.09;
 'methods,': 0.09; 'received:82.94.164.162': 0.09;
 'received:dinsdale.python.org': 0.09; 'revision:': 0.09; 'subject:test':
 0.09; 'subject:trunk': 0.09; 'subject:python': 0.10; 'received:82.94': 0.10;
 'received:82.94.164': 0.10; 'from:addr:python.org': 0.11;
 'received:python.org': 0.15; 'none': 0.15; '(result': 0.16; '-------': 0.16;
 '-1,': 0.16; '-19,6': 0.16; '-1;': 0.16; '[1,': 0.16; 'argument.': 0.16;
 'borrowed': 0.16; 'extern': 0.16; 'f.seek(0)': 0.16; 'f.tell()': 0.16;
 'hint': 0.16; 'length': 0.16; 'pyobject': 0.16; 'reference.': 0.16;
 'subject:Lib': 0.16; 'tests,': 0.16; 'to:addr:python-checkins': 0.16;
 'module': 0.17; 'code': 0.21; 'library': 0.24; 'ability': 0.27; 'else': 0.29; 
 'issue': 0.32; 'mean': 0.32; 'skip:b 20': 0.33; 'subject:: ': 0.34; 'file':
 0.35; 'but': 0.35; 'received:org': 0.35; 'format': 0.35; '+++': 0.36; 'skip:s
 40': 0.36; 'got': 0.36; 'date:': 0.36; 'received:82': 0.36; 'test': 0.36;
 'same': 0.36; 'skip:" 10': 0.36; 'commit': 0.37; 'objects': 0.37; 'skip:p
 30': 0.37; 'skip:( 20': 0.37; 'skip:s 20': 0.39; 'skip:_ 20': 0.40;
 'subject:skip:t 10': 0.61; 'turn': 0.64; 'passing': 0.67; 'methods': 0.67;
 'limit': 0.75; '-1)': 0.84; 'consistency': 0.84; 'delegated': 0.84;
 'invalid': 0.84; 'lacking': 0.84; 'message-id:invalid': 0.88; 'equal': 0.91;
 'pair': 0.91; 'skip:+ 30': 0.91; 'subject:NEWS': 0.91
Received: from localhost.localdomain (HELO mail.python.org) (127.0.0.1) by
 albatross.python.org with SMTP; 13 Dec 2009 20:19:09 +0100
Received: from dinsdale.python.org (dinsdale.python.org [82.94.164.162]) by
 mail.python.org (Postfix) with ESMTP for <python-checkins@python.org>; Sun,
 13 Dec 2009 20:19:09 +0100 (CET)
MIME-Version: 1.0
X-BeenThere: python-checkins@python.org
X-Mailman-Version: 2.1.12
Precedence: list
List-Id: Check-in messages from the Python maintainers
 <python-checkins.python.org>
List-Unsubscribe: <http://mail.python.org/mailman/options/python-checkins>,
 <mailto:python-checkins-request@python.org?subject=unsubscribe>
List-Archive: <http://mail.python.org/pipermail/python-checkins>
List-Post: <mailto:python-checkins@python.org>
List-Help: <mailto:python-checkins-request@python.org?subject=help>
List-Subscribe: <http://mail.python.org/mailman/listinfo/python-checkins>,
 <mailto:python-checkins-request@python.org?subject=subscribe>
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: 7bit
Errors-To: python-checkins-bounces+skip=pobox.com@python.org
Message-Id: <20091213191919.560CB20AE36@indigo.pobox.com>
X-Spambayes-Evidence: '*H*': 1.00; '*S*': 0.00; 'skip:_ 40': 0.04;
 'result': 0.07; 'skip:_ 10': 0.07; '+++': 0.09; 'author:': 0.09; 'def': 0.09;
 'from:addr:python.org': 0.09; 'log:': 0.09; 'methods': 0.09; 'modified:': 0.09;
 'passed': 0.09; 'revision:': 0.09; 'skip:* 10': 0.09; 'skip:_ 20': 0.09;
 'skip:s 30': 0.09; 'skip:s 40': 0.09; 'subject:checkins': 0.09;
 '(original)': 0.16; '+int': 0.16; '-------': 0.16; '-1.': 0.16; 'arg': 0.16;
 'args': 0.16; 'argument': 0.16; 'argument.': 0.16; 'basically': 0.16;
 'char': 0.16; 'commit': 0.16; 'dec': 0.16; 'email name:python-checkins': 0.16;
 'equal': 0.16; 'functions': 0.16; 'int': 0.16; 'invalid': 0.16;
 'library': 0.16; 'module': 0.16; 'normally': 0.16; 'null; ': 0.16;
 'objects': 0.16; 'objects.': 0.16; 'reads': 0.16;
 'received:82.94.164.162': 0.16; 'received:dinsdale.python.org': 0.16;
 'sender:addr:python-checkins-bounces+skip=pobox.com': 0.16; 'skip:+ 30': 0.16;
 'skip:= 70': 0.16; 'skip:p 30': 0.16; 'static': 0.16; 'subject:test': 0.16;
 'subject:trunk': 0.16; 'sun': 0.16; 'to:addr:python-checkins': 0.16;
 'types': 0.16; 'url:python-checkins': 0.16; 'void': 0.16;
 'email addr:python.org': 0.17; 'skip:& 20': 0.20; 'subject:: ': 0.24;
 '---': 0.24; 'date:': 0.24; 'issue': 0.24; 'limit': 0.24; 'skip:c 20': 0.24;
 'subject:Python': 0.24; 'where': 0.28; 'header:Received:10': 0.28;
 'list': 0.28; 'code': 0.30; 'mailing': 0.30; 'skip:( 10': 0.30;
 'skip:( 20': 0.31; 'ability': 0.32; 'else': 0.32; 'same': 0.32;
 'skip:e 20': 0.32; 'skip:" 10': 0.32; 'subject:] ': 0.32; 'url:org': 0.32;
 'them': 0.33; 'were': 0.33; 'they': 0.34; 'skip:b 10': 0.34; 'skip:s 20': 0.36;
 'data': 0.37; 'used': 0.37; 'subject:[': 0.37; 'but': 0.37; 'when': 0.39;
 'subject: - ': 0.39; 'received:64.74.157.52': 0.39; 'url:python': 0.39;
 'subject:/': 0.61; 'other': 0.64; 'skip:c 10': 0.67;
 'sender:addr:python.org': 0.68; 'return': 0.69; 'subject:\n ': 0.70;
 'got': 0.75; 'turn': 0.84; 'mean': 0.91; 'test': 0.91; 'accept': 0.93
From: benjamin.peterson <python-checkins@python.org>
Sender: python-checkins-bounces+skip=pobox.com@python.org
To: python-checkins@python.org
Subject: [Python-checkins] r76805 - in python/trunk: Lib/test/test_fileio.py
 Lib/test/test_io.py Misc/NEWS Modules/_io/_iomodule.c Modules/_io/_iomodule.h
 Modules/_io/bufferedio.c Modules/_io/fileio.c Modules/_io/iobase.c
 Modules/_io/textio.c
Date: Sun, 13 Dec 2009 14:19:19 -0500 (EST)
X-Spambayes-Classification: ham; 0.00

Author: benjamin.peterson
Date: Sun Dec 13 20:19:07 2009
New Revision: 76805

Log:
accept None as the same as having passed no argument in file types #7349

This is for consistency with imitation file objects like StringIO and BytesIO.

This commit also adds a few tests, where they were lacking for concerned
methods.


Modified:
   python/trunk/Lib/test/test_fileio.py
   python/trunk/Lib/test/test_io.py
   python/trunk/Misc/NEWS
   python/trunk/Modules/_io/_iomodule.c
   python/trunk/Modules/_io/_iomodule.h
   python/trunk/Modules/_io/bufferedio.c
   python/trunk/Modules/_io/fileio.c
   python/trunk/Modules/_io/iobase.c
   python/trunk/Modules/_io/textio.c

Modified: python/trunk/Lib/test/test_fileio.py
==============================================================================
--- python/trunk/Lib/test/test_fileio.py	(original)
+++ python/trunk/Lib/test/test_fileio.py	Sun Dec 13 20:19:07 2009
@@ -71,6 +71,15 @@
         n = self.f.readinto(a)
         self.assertEquals(array(b'b', [1, 2]), a[:n])
 
+    def test_none_args(self):
+        self.f.write(b"hi\nbye\nabc")
+        self.f.close()
+        self.f = _FileIO(TESTFN, 'r')
+        self.assertEqual(self.f.read(None), b"hi\nbye\nabc")
+        self.f.seek(0)
+        self.assertEqual(self.f.readline(None), b"hi\n")
+        self.assertEqual(self.f.readlines(None), [b"bye\n", b"abc"])
+
     def testRepr(self):
         self.assertEquals(repr(self.f), "<_io.FileIO name=%r mode='%s'>"
                                         % (self.f.name, self.f.mode))

Modified: python/trunk/Lib/test/test_io.py
==============================================================================
--- python/trunk/Lib/test/test_io.py	(original)
+++ python/trunk/Lib/test/test_io.py	Sun Dec 13 20:19:07 2009
@@ -341,7 +341,7 @@
             self.assertEqual(f.readline(2), b"xy")
             self.assertEqual(f.readline(4), b"zzy\n")
             self.assertEqual(f.readline(), b"foo\x00bar\n")
-            self.assertEqual(f.readline(), b"another line")
+            self.assertEqual(f.readline(None), b"another line")
             self.assertRaises(TypeError, f.readline, 5.3)
         with self.open(support.TESTFN, "r") as f:
             self.assertRaises(TypeError, f.readline, 5.3)
@@ -654,9 +654,10 @@
         self.assertEquals(b"abc", bufio.read())
 
     def test_read(self):
-        rawio = self.MockRawIO((b"abc", b"d", b"efg"))
-        bufio = self.tp(rawio)
-        self.assertEquals(b"abcdef", bufio.read(6))
+        for arg in (None, 7):
+            rawio = self.MockRawIO((b"abc", b"d", b"efg"))
+            bufio = self.tp(rawio)
+            self.assertEquals(b"abcdefg", bufio.read(arg))
         # Invalid args
         self.assertRaises(ValueError, bufio.read, -2)
 
@@ -673,6 +674,7 @@
         self.assertEquals(b"efg", bufio.read1(100))
         self.assertEquals(rawio._reads, 3)
         self.assertEquals(b"", bufio.read1(100))
+        self.assertEquals(rawio._reads, 4)
         # Invalid args
         self.assertRaises(ValueError, bufio.read1, -1)
 
@@ -691,6 +693,14 @@
         self.assertEquals(bufio.readinto(b), 0)
         self.assertEquals(b, b"gf")
 
+    def test_readlines(self):
+        def bufio():
+            rawio = self.MockRawIO((b"abc\n", b"d\n", b"ef"))
+            return self.tp(rawio)
+        self.assertEquals(bufio().readlines(), [b"abc\n", b"d\n", b"ef"])
+        self.assertEquals(bufio().readlines(5), [b"abc\n", b"d\n"])
+        self.assertEquals(bufio().readlines(None), [b"abc\n", b"d\n", b"ef"])
+
     def test_buffering(self):
         data = b"abcdefghi"
         dlen = len(data)
@@ -1131,6 +1141,14 @@
         self.assertEqual(pair.read(3), b"abc")
         self.assertEqual(pair.read(1), b"d")
         self.assertEqual(pair.read(), b"ef")
+        pair = self.tp(self.BytesIO(b"abc"), self.MockRawIO())
+        self.assertEqual(pair.read(None), b"abc")
+
+    def test_readlines(self):
+        pair = lambda: self.tp(self.BytesIO(b"abc\ndef\nh"), self.MockRawIO())
+        self.assertEqual(pair().readlines(), [b"abc\n", b"def\n", b"h"])
+        self.assertEqual(pair().readlines(), [b"abc\n", b"def\n", b"h"])
+        self.assertEqual(pair().readlines(5), [b"abc\n", b"def\n"])
 
     def test_read1(self):
         # .read1() is delegated to the underlying reader object, so this test
@@ -1781,6 +1799,8 @@
                 self.assertEquals(f.read(), "abc")
                 cookie = f.tell()
                 self.assertEquals(f.seek(0), 0)
+                self.assertEquals(f.read(None), "abc")
+                f.seek(0)
                 self.assertEquals(f.read(2), "ab")
                 self.assertEquals(f.read(1), "c")
                 self.assertEquals(f.read(1), "")
@@ -1951,6 +1971,14 @@
             reads += c
         self.assertEquals(reads, "AA\nBB")
 
+    def test_readlines(self):
+        txt = self.TextIOWrapper(self.BytesIO(b"AA\nBB\nCC"))
+        self.assertEqual(txt.readlines(), ["AA\n", "BB\n", "CC"])
+        txt.seek(0)
+        self.assertEqual(txt.readlines(None), ["AA\n", "BB\n", "CC"])
+        txt.seek(0)
+        self.assertEqual(txt.readlines(5), ["AA\n", "BB\n"])
+
     # read in amounts equal to TextIOWrapper._CHUNK_SIZE which is 128.
     def test_read_by_chunk(self):
         # make sure "\r\n" straddles 128 char boundary.

Modified: python/trunk/Misc/NEWS
==============================================================================
--- python/trunk/Misc/NEWS	(original)
+++ python/trunk/Misc/NEWS	Sun Dec 13 20:19:07 2009
@@ -20,6 +20,10 @@
 Library
 -------
 
+- Issue #7349: Make methods of file objects in the io module accept None as an
+  argument where file-like objects (ie StringIO and BytesIO) accept them to mean
+  the same as passing no argument.
+
 - Issue #7348: StringIO.StringIO.readline(-1) now acts as if it got no argument
   like other file objects.
 

Modified: python/trunk/Modules/_io/_iomodule.c
==============================================================================
--- python/trunk/Modules/_io/_iomodule.c	(original)
+++ python/trunk/Modules/_io/_iomodule.c	Sun Dec 13 20:19:07 2009
@@ -573,6 +573,29 @@
 }
 
 
+/* Basically the "n" format code with the ability to turn None into -1. */
+int 
+_PyIO_ConvertSsize_t(PyObject *obj, void *result) {
+    Py_ssize_t limit;
+    if (obj == Py_None) {
+        limit = -1;
+    }
+    else if (PyNumber_Check(obj)) {
+        limit = PyNumber_AsSsize_t(obj, PyExc_OverflowError);
+        if (limit == -1 && PyErr_Occurred())
+            return 0;
+    }
+    else {
+        PyErr_Format(PyExc_TypeError,
+                     "integer argument expected, got '%.200s'",
+                     Py_TYPE(obj)->tp_name);
+        return 0;
+    }
+    *((Py_ssize_t *)result) = limit;
+    return 1;
+}
+
+
 /*
  * Module definition
  */

Modified: python/trunk/Modules/_io/_iomodule.h
==============================================================================
--- python/trunk/Modules/_io/_iomodule.h	(original)
+++ python/trunk/Modules/_io/_iomodule.h	Sun Dec 13 20:19:07 2009
@@ -19,6 +19,9 @@
 extern PyTypeObject PyTextIOWrapper_Type;
 extern PyTypeObject PyIncrementalNewlineDecoder_Type;
 
+
+extern int _PyIO_ConvertSsize_t(PyObject *, void *);
+
 /* These functions are used as METH_NOARGS methods, are normally called
  * with args=NULL, and return a new reference.
  * BUT when args=Py_True is passed, they return a borrowed reference.

Modified: python/trunk/Modules/_io/bufferedio.c
==============================================================================
--- python/trunk/Modules/_io/bufferedio.c	(original)
+++ python/trunk/Modules/_io/bufferedio.c	Sun Dec 13 20:19:07 2009
@@ -720,7 +720,7 @@
     PyObject *res;
 
     CHECK_INITIALIZED(self)
-    if (!PyArg_ParseTuple(args, "|n:read", &n)) {
+    if (!PyArg_ParseTuple(args, "|O&:read", &_PyIO_ConvertSsize_t, &n)) {
         return NULL;
     }
     if (n < -1) {
@@ -950,25 +950,11 @@
 static PyObject *
 buffered_readline(buffered *self, PyObject *args)
 {
-    PyObject *limitobj = NULL;
     Py_ssize_t limit = -1;
 
     CHECK_INITIALIZED(self)
-
-    if (!PyArg_ParseTuple(args, "|O:readline", &limitobj)) {
+    if (!PyArg_ParseTuple(args, "|O&:readline", &_PyIO_ConvertSsize_t, &limit))
         return NULL;
-    }
-    if (limitobj) {
-        if (!PyNumber_Check(limitobj)) {
-            PyErr_Format(PyExc_TypeError,
-                         "integer argument expected, got '%.200s'",
-                         Py_TYPE(limitobj)->tp_name);
-            return NULL;
-        }
-        limit = PyNumber_AsSsize_t(limitobj, PyExc_OverflowError);
-        if (limit == -1 && PyErr_Occurred())
-            return NULL;
-    }
     return _buffered_readline(self, limit);
 }
 

Modified: python/trunk/Modules/_io/fileio.c
==============================================================================
--- python/trunk/Modules/_io/fileio.c	(original)
+++ python/trunk/Modules/_io/fileio.c	Sun Dec 13 20:19:07 2009
@@ -599,7 +599,7 @@
 	if (!self->readable)
 		return err_mode("reading");
 
-	if (!PyArg_ParseTuple(args, "|n", &size))
+	if (!PyArg_ParseTuple(args, "|O&", &_PyIO_ConvertSsize_t, &size))
 		return NULL;
 
         if (size < 0) {

Modified: python/trunk/Modules/_io/iobase.c
==============================================================================
--- python/trunk/Modules/_io/iobase.c	(original)
+++ python/trunk/Modules/_io/iobase.c	Sun Dec 13 20:19:07 2009
@@ -455,7 +455,7 @@
     PyObject *buffer, *result;
     Py_ssize_t old_size = -1;
 
-    if (!PyArg_ParseTuple(args, "|n:readline", &limit)) {
+    if (!PyArg_ParseTuple(args, "|O&:readline", &_PyIO_ConvertSsize_t, &limit)) {
         return NULL;
     }
 
@@ -579,14 +579,9 @@
     Py_ssize_t hint = -1, length = 0;
     PyObject *hintobj = Py_None, *result;
 
-    if (!PyArg_ParseTuple(args, "|O:readlines", &hintobj)) {
+    if (!PyArg_ParseTuple(args, "|O&:readlines", &_PyIO_ConvertSsize_t, &hint)) {
         return NULL;
     }
-    if (hintobj != Py_None) {
-        hint = PyNumber_AsSsize_t(hintobj, PyExc_ValueError);
-        if (hint == -1 && PyErr_Occurred())
-            return NULL;
-    }
 
     result = PyList_New(0);
     if (result == NULL)

Modified: python/trunk/Modules/_io/textio.c
==============================================================================
--- python/trunk/Modules/_io/textio.c	(original)
+++ python/trunk/Modules/_io/textio.c	Sun Dec 13 20:19:07 2009
@@ -1455,7 +1455,7 @@
 
     CHECK_INITIALIZED(self);
 
-    if (!PyArg_ParseTuple(args, "|n:read", &n))
+    if (!PyArg_ParseTuple(args, "|O&:read", &_PyIO_ConvertSsize_t, &n))
         return NULL;
 
     CHECK_CLOSED(self);
_______________________________________________
Python-checkins mailing list
Python-checkins@python.org
http://mail.python.org/mailman/listinfo/python-checkins

From SRS0=GK0S=H7=python.org=python-checkins-bounces+skip=pobox.com@bounce2.pobox.com  Sat Dec 12 19:25:56 2009
X-VM-v5-Data: ([nil nil nil nil nil nil nil nil nil]
	["36540" "Saturday" "12" "December" "2009" "20:25:10" "-0500" "benjamin.peterson" "python-checkins@python.org" nil "1105" "[Python-checkins] r76777 - python/branches/py3k/Python/Python-ast.c" "^From:" nil nil "12" nil nil nil nil nil nil nil nil nil nil]
	nil)
Delivered-To: skip.montanaro@gmail.com
Received: from pop.gmail.com
 by montanaro.dyndns.org with POP3 (fetchmail-6.3.11)
 for <skip@localhost> (single-drop); Sat, 12 Dec 2009 19:25:56 -0600 (CST)
Received: by 10.216.0.80 with SMTP id 58cs49517wea;
 Sat, 12 Dec 2009 17:25:14 -0800 (PST)
Received: by 10.229.1.167 with SMTP id 39mr1660344qcf.99.1260667513208;
 Sat, 12 Dec 2009 17:25:13 -0800 (PST)
Return-Path: <SRS0=GK0S=H7=python.org=python-checkins-bounces+skip=pobox.com@bounce2.pobox.com>
Received: from sienna.pobox.com (sienna.pobox.com [64.74.157.51])
 by mx.google.com with ESMTP id 9si6391508qyk.27.2009.12.12.17.25.12;
 Sat, 12 Dec 2009 17:25:12 -0800 (PST)
Received-SPF: pass (google.com: domain of
 SRS0=GK0S=H7=python.org=python-checkins-bounces+skip=pobox.com@bounce2.pobox.com
 designates 64.74.157.51 as permitted sender) client-ip=64.74.157.51; 
Authentication-Results: mx.google.com; spf=pass (google.com: domain of
 SRS0=GK0S=H7=python.org=python-checkins-bounces+skip=pobox.com@bounce2.pobox.com
 designates 64.74.157.51 as permitted sender)
 smtp.mail=SRS0=GK0S=H7=python.org=python-checkins-bounces+skip=pobox.com@bounce2.pobox.com
Received: from sienna.pobox.com (localhost [127.0.0.1])
 by sienna.pobox.com (Postfix) with ESMTP id 81F24208945
 for <skip.montanaro@gmail.com>; Sat, 12 Dec 2009 20:25:11 -0500 (EST)
Delivered-To: skip@pobox.com
X-Pobox-Orig-Sender: <python-checkins-bounces+skip=pobox.com@python.org>
X-Pobox-Delivery-ID: 5B6D5372-E786-11DE-AD96-98C4CB762F1C-00107187!sienna.pobox.com
X-Original-To: python-checkins@python.org
x-pobox-client-address: 82.94.164.166
x-pobox-client-name: mail.python.org
Received: from mail.python.org (mail.python.org [82.94.164.166]) by
 sienna.pobox.com (Postfix) with ESMTP id 6EA7920876F for <skip@pobox.com>;
 Sat, 12 Dec 2009 20:25:10 -0500 (EST)
Received: from albatross.python.org (localhost.localdomain [127.0.0.1]) by
 mail.python.org (Postfix) with ESMTP id 112B8F108 for <skip@pobox.com>; Sun,
 13 Dec 2009 02:25:09 +0100 (CET)
Authentication-Results: mail.python.org; dkim=permerror (bad format)
 header.i=unknown
Delivered-To: python-checkins@mail.python.org
Received: from albatross.python.org (localhost.localdomain [127.0.0.1]) by
 mail.python.org (Postfix) with ESMTP id C284EF082 for
 <python-checkins@python.org>; Sun, 13 Dec 2009 02:24:58 +0100 (CET)
Authentication-Results: mail.python.org; dkim=permerror (bad format)
 header.i=unknown
X-Spam-Status: OK 0.001
X-Spam-Evidence: '*H*': 1.00; '*S*': 0.00; 'subject:Python': 0.02; 'object':
 0.03; 'modified:': 0.07; '(original)': 0.09; 'author:': 0.09; 'int': 0.09;
 'log:': 0.09; 'received:82.94.164.162': 0.09; 'received:dinsdale.python.org':
 0.09; 'revision:': 0.09; 'subject:python': 0.10; 'received:82.94': 0.10;
 'received:82.94.164': 0.10; 'from:addr:python.org': 0.11;
 'received:python.org': 0.15; '"required': 0.16; 'goto': 0.16; 'pyobject':
 0.16; 'subject:py3k': 0.16; 'to:addr:python-checkins': 0.16; 'string': 0.20;
 'skip:o 20': 0.22; 'missing': 0.29; 'mode': 0.29; 'received:org': 0.35;
 '+++': 0.36; 'out,': 0.36; 'got': 0.36; 'date:': 0.36; 'received:82': 0.36;
 'skip:" 10': 0.36; 'skip:p 30': 0.37; 'skip:( 20': 0.37; 'subject:-': 0.37;
 'skip:( 30': 0.61; '-1)': 0.84; 'left; ': 0.84; 'name; ': 0.84; 'right; ': 0.84;
 'skip:\\ 10': 0.84; 'message-id:invalid': 0.88; 'skip:{ 20': 0.91
Received: from localhost.localdomain (HELO mail.python.org) (127.0.0.1) by
 albatross.python.org with SMTP; 13 Dec 2009 02:24:58 +0100
Received: from dinsdale.python.org (dinsdale.python.org [82.94.164.162]) by
 mail.python.org (Postfix) with ESMTP for <python-checkins@python.org>; Sun,
 13 Dec 2009 02:24:58 +0100 (CET)
MIME-Version: 1.0
X-BeenThere: python-checkins@python.org
X-Mailman-Version: 2.1.12
Precedence: list
List-Id: Check-in messages from the Python maintainers
 <python-checkins.python.org>
List-Unsubscribe: <http://mail.python.org/mailman/options/python-checkins>,
 <mailto:python-checkins-request@python.org?subject=unsubscribe>
List-Archive: <http://mail.python.org/pipermail/python-checkins>
List-Post: <mailto:python-checkins@python.org>
List-Help: <mailto:python-checkins-request@python.org?subject=help>
List-Subscribe: <http://mail.python.org/mailman/listinfo/python-checkins>,
 <mailto:python-checkins-request@python.org?subject=subscribe>
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: 7bit
Errors-To: python-checkins-bounces+skip=pobox.com@python.org
Message-Id: <20091213012510.6EA7920876F@sienna.pobox.com>
X-Spambayes-Evidence: '*H*': 1.00; '*S*': 0.00; 'skip:_ 40': 0.04;
 'field': 0.05; '+++': 0.09; 'author:': 0.09; 'from:addr:python.org': 0.09;
 'log:': 0.09; 'modified:': 0.09; 'revision:': 0.09; 'skip:* 10': 0.09;
 'string': 0.09; 'subject:checkins': 0.09; '(original)': 0.16; 'args; ': 0.16;
 'assert(0': 0.16; 'char': 0.16; 'dec': 0.16;
 'email name:python-checkins': 0.16; 'id; ': 0.16; 'identifier': 0.16;
 'int': 0.16; 'mode': 0.16; 'name; ': 0.16; 'null; ': 0.16; 'object': 0.16;
 'param; ': 0.16; 'received:82.94.164.162': 0.16;
 'received:dinsdale.python.org': 0.16;
 'sender:addr:python-checkins-bounces+skip=pobox.com': 0.16; 'skip:( 30': 0.16;
 'skip:= 70': 0.16; 'skip:p 30': 0.16; 'sun': 0.16; 'target; ': 0.16; 'targets;
 ': 0.16; 'tmp': 0.16; 'to:addr:python-checkins': 0.16;
 'url:python-checkins': 0.16; 'value; ': 0.16; 'values; ': 0.16;
 'email addr:python.org': 0.17; '---': 0.24; 'date:': 0.24;
 'subject:Python': 0.24; 'header:Received:10': 0.28; 'list': 0.28;
 'mailing': 0.30; 'skip:( 10': 0.30; 'skip:( 20': 0.31; 'skip:o 20': 0.32;
 'skip:" 10': 0.32; 'subject:] ': 0.32; 'url:org': 0.32; 'skip:b 10': 0.34;
 'subject:[': 0.37; 'subject: - ': 0.39; 'url:python': 0.39; 'missing': 0.61;
 'subject:/': 0.61; 'received:sienna.pobox.com': 0.62; 'skip:o 10': 0.64;
 'skip:c 10': 0.67; 'sender:addr:python.org': 0.68; 'return': 0.69; 'got': 0.75;
 'message-id:@sienna.pobox.com': 0.84
From: benjamin.peterson <python-checkins@python.org>
Sender: python-checkins-bounces+skip=pobox.com@python.org
To: python-checkins@python.org
Subject: [Python-checkins] r76777 - python/branches/py3k/Python/Python-ast.c
Date: Sat, 12 Dec 2009 20:25:10 -0500 (EST)
X-Spambayes-Classification: ham; 0.00

Author: benjamin.peterson
Date: Sun Dec 13 02:24:58 2009
New Revision: 76777

Log:
regenerate Python-ast.c

Modified:
   python/branches/py3k/Python/Python-ast.c

Modified: python/branches/py3k/Python/Python-ast.c
==============================================================================
--- python/branches/py3k/Python/Python-ast.c	(original)
+++ python/branches/py3k/Python/Python-ast.c	Sun Dec 13 02:24:58 2009
@@ -3374,13 +3374,18 @@
 obj2ast_mod(PyObject* obj, mod_ty* out, PyArena* arena)
 {
         PyObject* tmp = NULL;
+        int isinstance;
 
 
         if (obj == Py_None) {
                 *out = NULL;
                 return 0;
         }
-        if (PyObject_IsInstance(obj, (PyObject*)Module_type)) {
+        isinstance = PyObject_IsInstance(obj, (PyObject*)Module_type);
+        if (isinstance == -1) {
+                return 1;
+        }
+        if (isinstance) {
                 asdl_seq* body;
 
                 if (PyObject_HasAttrString(obj, "body")) {
@@ -3412,7 +3417,11 @@
                 if (*out == NULL) goto failed;
                 return 0;
         }
-        if (PyObject_IsInstance(obj, (PyObject*)Interactive_type)) {
+        isinstance = PyObject_IsInstance(obj, (PyObject*)Interactive_type);
+        if (isinstance == -1) {
+                return 1;
+        }
+        if (isinstance) {
                 asdl_seq* body;
 
                 if (PyObject_HasAttrString(obj, "body")) {
@@ -3444,7 +3453,11 @@
                 if (*out == NULL) goto failed;
                 return 0;
         }
-        if (PyObject_IsInstance(obj, (PyObject*)Expression_type)) {
+        isinstance = PyObject_IsInstance(obj, (PyObject*)Expression_type);
+        if (isinstance == -1) {
+                return 1;
+        }
+        if (isinstance) {
                 expr_ty body;
 
                 if (PyObject_HasAttrString(obj, "body")) {
@@ -3463,7 +3476,11 @@
                 if (*out == NULL) goto failed;
                 return 0;
         }
-        if (PyObject_IsInstance(obj, (PyObject*)Suite_type)) {
+        isinstance = PyObject_IsInstance(obj, (PyObject*)Suite_type);
+        if (isinstance == -1) {
+                return 1;
+        }
+        if (isinstance) {
                 asdl_seq* body;
 
                 if (PyObject_HasAttrString(obj, "body")) {
@@ -3508,6 +3525,7 @@
 obj2ast_stmt(PyObject* obj, stmt_ty* out, PyArena* arena)
 {
         PyObject* tmp = NULL;
+        int isinstance;
 
         int lineno;
         int col_offset;
@@ -3540,7 +3558,11 @@
                 PyErr_SetString(PyExc_TypeError, "required field \"col_offset\" missing from stmt");
                 return 1;
         }
-        if (PyObject_IsInstance(obj, (PyObject*)FunctionDef_type)) {
+        isinstance = PyObject_IsInstance(obj, (PyObject*)FunctionDef_type);
+        if (isinstance == -1) {
+                return 1;
+        }
+        if (isinstance) {
                 identifier name;
                 arguments_ty args;
                 asdl_seq* body;
@@ -3637,7 +3659,11 @@
                 if (*out == NULL) goto failed;
                 return 0;
         }
-        if (PyObject_IsInstance(obj, (PyObject*)ClassDef_type)) {
+        isinstance = PyObject_IsInstance(obj, (PyObject*)ClassDef_type);
+        if (isinstance == -1) {
+                return 1;
+        }
+        if (isinstance) {
                 identifier name;
                 asdl_seq* bases;
                 asdl_seq* keywords;
@@ -3785,7 +3811,11 @@
                 if (*out == NULL) goto failed;
                 return 0;
         }
-        if (PyObject_IsInstance(obj, (PyObject*)Return_type)) {
+        isinstance = PyObject_IsInstance(obj, (PyObject*)Return_type);
+        if (isinstance == -1) {
+                return 1;
+        }
+        if (isinstance) {
                 expr_ty value;
 
                 if (PyObject_HasAttrString(obj, "value")) {
@@ -3803,7 +3833,11 @@
                 if (*out == NULL) goto failed;
                 return 0;
         }
-        if (PyObject_IsInstance(obj, (PyObject*)Delete_type)) {
+        isinstance = PyObject_IsInstance(obj, (PyObject*)Delete_type);
+        if (isinstance == -1) {
+                return 1;
+        }
+        if (isinstance) {
                 asdl_seq* targets;
 
                 if (PyObject_HasAttrString(obj, "targets")) {
@@ -3835,7 +3869,11 @@
                 if (*out == NULL) goto failed;
                 return 0;
         }
-        if (PyObject_IsInstance(obj, (PyObject*)Assign_type)) {
+        isinstance = PyObject_IsInstance(obj, (PyObject*)Assign_type);
+        if (isinstance == -1) {
+                return 1;
+        }
+        if (isinstance) {
                 asdl_seq* targets;
                 expr_ty value;
 
@@ -3880,7 +3918,11 @@
                 if (*out == NULL) goto failed;
                 return 0;
         }
-        if (PyObject_IsInstance(obj, (PyObject*)AugAssign_type)) {
+        isinstance = PyObject_IsInstance(obj, (PyObject*)AugAssign_type);
+        if (isinstance == -1) {
+                return 1;
+        }
+        if (isinstance) {
                 expr_ty target;
                 operator_ty op;
                 expr_ty value;
@@ -3925,7 +3967,11 @@
                 if (*out == NULL) goto failed;
                 return 0;
         }
-        if (PyObject_IsInstance(obj, (PyObject*)For_type)) {
+        isinstance = PyObject_IsInstance(obj, (PyObject*)For_type);
+        if (isinstance == -1) {
+                return 1;
+        }
+        if (isinstance) {
                 expr_ty target;
                 expr_ty iter;
                 asdl_seq* body;
@@ -4010,7 +4056,11 @@
                 if (*out == NULL) goto failed;
                 return 0;
         }
-        if (PyObject_IsInstance(obj, (PyObject*)While_type)) {
+        isinstance = PyObject_IsInstance(obj, (PyObject*)While_type);
+        if (isinstance == -1) {
+                return 1;
+        }
+        if (isinstance) {
                 expr_ty test;
                 asdl_seq* body;
                 asdl_seq* orelse;
@@ -4081,7 +4131,11 @@
                 if (*out == NULL) goto failed;
                 return 0;
         }
-        if (PyObject_IsInstance(obj, (PyObject*)If_type)) {
+        isinstance = PyObject_IsInstance(obj, (PyObject*)If_type);
+        if (isinstance == -1) {
+                return 1;
+        }
+        if (isinstance) {
                 expr_ty test;
                 asdl_seq* body;
                 asdl_seq* orelse;
@@ -4152,7 +4206,11 @@
                 if (*out == NULL) goto failed;
                 return 0;
         }
-        if (PyObject_IsInstance(obj, (PyObject*)With_type)) {
+        isinstance = PyObject_IsInstance(obj, (PyObject*)With_type);
+        if (isinstance == -1) {
+                return 1;
+        }
+        if (isinstance) {
                 expr_ty context_expr;
                 expr_ty optional_vars;
                 asdl_seq* body;
@@ -4210,7 +4268,11 @@
                 if (*out == NULL) goto failed;
                 return 0;
         }
-        if (PyObject_IsInstance(obj, (PyObject*)Raise_type)) {
+        isinstance = PyObject_IsInstance(obj, (PyObject*)Raise_type);
+        if (isinstance == -1) {
+                return 1;
+        }
+        if (isinstance) {
                 expr_ty exc;
                 expr_ty cause;
 
@@ -4240,7 +4302,11 @@
                 if (*out == NULL) goto failed;
                 return 0;
         }
-        if (PyObject_IsInstance(obj, (PyObject*)TryExcept_type)) {
+        isinstance = PyObject_IsInstance(obj, (PyObject*)TryExcept_type);
+        if (isinstance == -1) {
+                return 1;
+        }
+        if (isinstance) {
                 asdl_seq* body;
                 asdl_seq* handlers;
                 asdl_seq* orelse;
@@ -4325,7 +4391,11 @@
                 if (*out == NULL) goto failed;
                 return 0;
         }
-        if (PyObject_IsInstance(obj, (PyObject*)TryFinally_type)) {
+        isinstance = PyObject_IsInstance(obj, (PyObject*)TryFinally_type);
+        if (isinstance == -1) {
+                return 1;
+        }
+        if (isinstance) {
                 asdl_seq* body;
                 asdl_seq* finalbody;
 
@@ -4383,7 +4453,11 @@
                 if (*out == NULL) goto failed;
                 return 0;
         }
-        if (PyObject_IsInstance(obj, (PyObject*)Assert_type)) {
+        isinstance = PyObject_IsInstance(obj, (PyObject*)Assert_type);
+        if (isinstance == -1) {
+                return 1;
+        }
+        if (isinstance) {
                 expr_ty test;
                 expr_ty msg;
 
@@ -4414,7 +4488,11 @@
                 if (*out == NULL) goto failed;
                 return 0;
         }
-        if (PyObject_IsInstance(obj, (PyObject*)Import_type)) {
+        isinstance = PyObject_IsInstance(obj, (PyObject*)Import_type);
+        if (isinstance == -1) {
+                return 1;
+        }
+        if (isinstance) {
                 asdl_seq* names;
 
                 if (PyObject_HasAttrString(obj, "names")) {
@@ -4446,7 +4524,11 @@
                 if (*out == NULL) goto failed;
                 return 0;
         }
-        if (PyObject_IsInstance(obj, (PyObject*)ImportFrom_type)) {
+        isinstance = PyObject_IsInstance(obj, (PyObject*)ImportFrom_type);
+        if (isinstance == -1) {
+                return 1;
+        }
+        if (isinstance) {
                 identifier module;
                 asdl_seq* names;
                 int level;
@@ -4503,7 +4585,11 @@
                 if (*out == NULL) goto failed;
                 return 0;
         }
-        if (PyObject_IsInstance(obj, (PyObject*)Global_type)) {
+        isinstance = PyObject_IsInstance(obj, (PyObject*)Global_type);
+        if (isinstance == -1) {
+                return 1;
+        }
+        if (isinstance) {
                 asdl_seq* names;
 
                 if (PyObject_HasAttrString(obj, "names")) {
@@ -4535,7 +4621,11 @@
                 if (*out == NULL) goto failed;
                 return 0;
         }
-        if (PyObject_IsInstance(obj, (PyObject*)Nonlocal_type)) {
+        isinstance = PyObject_IsInstance(obj, (PyObject*)Nonlocal_type);
+        if (isinstance == -1) {
+                return 1;
+        }
+        if (isinstance) {
                 asdl_seq* names;
 
                 if (PyObject_HasAttrString(obj, "names")) {
@@ -4567,7 +4657,11 @@
                 if (*out == NULL) goto failed;
                 return 0;
         }
-        if (PyObject_IsInstance(obj, (PyObject*)Expr_type)) {
+        isinstance = PyObject_IsInstance(obj, (PyObject*)Expr_type);
+        if (isinstance == -1) {
+                return 1;
+        }
+        if (isinstance) {
                 expr_ty value;
 
                 if (PyObject_HasAttrString(obj, "value")) {
@@ -4586,19 +4680,31 @@
                 if (*out == NULL) goto failed;
                 return 0;
         }
-        if (PyObject_IsInstance(obj, (PyObject*)Pass_type)) {
+        isinstance = PyObject_IsInstance(obj, (PyObject*)Pass_type);
+        if (isinstance == -1) {
+                return 1;
+        }
+        if (isinstance) {
 
                 *out = Pass(lineno, col_offset, arena);
                 if (*out == NULL) goto failed;
                 return 0;
         }
-        if (PyObject_IsInstance(obj, (PyObject*)Break_type)) {
+        isinstance = PyObject_IsInstance(obj, (PyObject*)Break_type);
+        if (isinstance == -1) {
+                return 1;
+        }
+        if (isinstance) {
 
                 *out = Break(lineno, col_offset, arena);
                 if (*out == NULL) goto failed;
                 return 0;
         }
-        if (PyObject_IsInstance(obj, (PyObject*)Continue_type)) {
+        isinstance = PyObject_IsInstance(obj, (PyObject*)Continue_type);
+        if (isinstance == -1) {
+                return 1;
+        }
+        if (isinstance) {
 
                 *out = Continue(lineno, col_offset, arena);
                 if (*out == NULL) goto failed;
@@ -4617,6 +4723,7 @@
 obj2ast_expr(PyObject* obj, expr_ty* out, PyArena* arena)
 {
         PyObject* tmp = NULL;
+        int isinstance;
 
         int lineno;
         int col_offset;
@@ -4649,7 +4756,11 @@
                 PyErr_SetString(PyExc_TypeError, "required field \"col_offset\" missing from expr");
                 return 1;
         }
-        if (PyObject_IsInstance(obj, (PyObject*)BoolOp_type)) {
+        isinstance = PyObject_IsInstance(obj, (PyObject*)BoolOp_type);
+        if (isinstance == -1) {
+                return 1;
+        }
+        if (isinstance) {
                 boolop_ty op;
                 asdl_seq* values;
 
@@ -4694,7 +4805,11 @@
                 if (*out == NULL) goto failed;
                 return 0;
         }
-        if (PyObject_IsInstance(obj, (PyObject*)BinOp_type)) {
+        isinstance = PyObject_IsInstance(obj, (PyObject*)BinOp_type);
+        if (isinstance == -1) {
+                return 1;
+        }
+        if (isinstance) {
                 expr_ty left;
                 operator_ty op;
                 expr_ty right;
@@ -4739,7 +4854,11 @@
                 if (*out == NULL) goto failed;
                 return 0;
         }
-        if (PyObject_IsInstance(obj, (PyObject*)UnaryOp_type)) {
+        isinstance = PyObject_IsInstance(obj, (PyObject*)UnaryOp_type);
+        if (isinstance == -1) {
+                return 1;
+        }
+        if (isinstance) {
                 unaryop_ty op;
                 expr_ty operand;
 
@@ -4771,7 +4890,11 @@
                 if (*out == NULL) goto failed;
                 return 0;
         }
-        if (PyObject_IsInstance(obj, (PyObject*)Lambda_type)) {
+        isinstance = PyObject_IsInstance(obj, (PyObject*)Lambda_type);
+        if (isinstance == -1) {
+                return 1;
+        }
+        if (isinstance) {
                 arguments_ty args;
                 expr_ty body;
 
@@ -4803,7 +4926,11 @@
                 if (*out == NULL) goto failed;
                 return 0;
         }
-        if (PyObject_IsInstance(obj, (PyObject*)IfExp_type)) {
+        isinstance = PyObject_IsInstance(obj, (PyObject*)IfExp_type);
+        if (isinstance == -1) {
+                return 1;
+        }
+        if (isinstance) {
                 expr_ty test;
                 expr_ty body;
                 expr_ty orelse;
@@ -4848,7 +4975,11 @@
                 if (*out == NULL) goto failed;
                 return 0;
         }
-        if (PyObject_IsInstance(obj, (PyObject*)Dict_type)) {
+        isinstance = PyObject_IsInstance(obj, (PyObject*)Dict_type);
+        if (isinstance == -1) {
+                return 1;
+        }
+        if (isinstance) {
                 asdl_seq* keys;
                 asdl_seq* values;
 
@@ -4906,7 +5037,11 @@
                 if (*out == NULL) goto failed;
                 return 0;
         }
-        if (PyObject_IsInstance(obj, (PyObject*)Set_type)) {
+        isinstance = PyObject_IsInstance(obj, (PyObject*)Set_type);
+        if (isinstance == -1) {
+                return 1;
+        }
+        if (isinstance) {
                 asdl_seq* elts;
 
                 if (PyObject_HasAttrString(obj, "elts")) {
@@ -4938,7 +5073,11 @@
                 if (*out == NULL) goto failed;
                 return 0;
         }
-        if (PyObject_IsInstance(obj, (PyObject*)ListComp_type)) {
+        isinstance = PyObject_IsInstance(obj, (PyObject*)ListComp_type);
+        if (isinstance == -1) {
+                return 1;
+        }
+        if (isinstance) {
                 expr_ty elt;
                 asdl_seq* generators;
 
@@ -4983,7 +5122,11 @@
                 if (*out == NULL) goto failed;
                 return 0;
         }
-        if (PyObject_IsInstance(obj, (PyObject*)SetComp_type)) {
+        isinstance = PyObject_IsInstance(obj, (PyObject*)SetComp_type);
+        if (isinstance == -1) {
+                return 1;
+        }
+        if (isinstance) {
                 expr_ty elt;
                 asdl_seq* generators;
 
@@ -5028,7 +5171,11 @@
                 if (*out == NULL) goto failed;
                 return 0;
         }
-        if (PyObject_IsInstance(obj, (PyObject*)DictComp_type)) {
+        isinstance = PyObject_IsInstance(obj, (PyObject*)DictComp_type);
+        if (isinstance == -1) {
+                return 1;
+        }
+        if (isinstance) {
                 expr_ty key;
                 expr_ty value;
                 asdl_seq* generators;
@@ -5087,7 +5234,11 @@
                 if (*out == NULL) goto failed;
                 return 0;
         }
-        if (PyObject_IsInstance(obj, (PyObject*)GeneratorExp_type)) {
+        isinstance = PyObject_IsInstance(obj, (PyObject*)GeneratorExp_type);
+        if (isinstance == -1) {
+                return 1;
+        }
+        if (isinstance) {
                 expr_ty elt;
                 asdl_seq* generators;
 
@@ -5132,7 +5283,11 @@
                 if (*out == NULL) goto failed;
                 return 0;
         }
-        if (PyObject_IsInstance(obj, (PyObject*)Yield_type)) {
+        isinstance = PyObject_IsInstance(obj, (PyObject*)Yield_type);
+        if (isinstance == -1) {
+                return 1;
+        }
+        if (isinstance) {
                 expr_ty value;
 
                 if (PyObject_HasAttrString(obj, "value")) {
@@ -5150,7 +5305,11 @@
                 if (*out == NULL) goto failed;
                 return 0;
         }
-        if (PyObject_IsInstance(obj, (PyObject*)Compare_type)) {
+        isinstance = PyObject_IsInstance(obj, (PyObject*)Compare_type);
+        if (isinstance == -1) {
+                return 1;
+        }
+        if (isinstance) {
                 expr_ty left;
                 asdl_int_seq* ops;
                 asdl_seq* comparators;
@@ -5222,7 +5381,11 @@
                 if (*out == NULL) goto failed;
                 return 0;
         }
-        if (PyObject_IsInstance(obj, (PyObject*)Call_type)) {
+        isinstance = PyObject_IsInstance(obj, (PyObject*)Call_type);
+        if (isinstance == -1) {
+                return 1;
+        }
+        if (isinstance) {
                 expr_ty func;
                 asdl_seq* args;
                 asdl_seq* keywords;
@@ -5318,7 +5481,11 @@
                 if (*out == NULL) goto failed;
                 return 0;
         }
-        if (PyObject_IsInstance(obj, (PyObject*)Num_type)) {
+        isinstance = PyObject_IsInstance(obj, (PyObject*)Num_type);
+        if (isinstance == -1) {
+                return 1;
+        }
+        if (isinstance) {
                 object n;
 
                 if (PyObject_HasAttrString(obj, "n")) {
@@ -5337,7 +5504,11 @@
                 if (*out == NULL) goto failed;
                 return 0;
         }
-        if (PyObject_IsInstance(obj, (PyObject*)Str_type)) {
+        isinstance = PyObject_IsInstance(obj, (PyObject*)Str_type);
+        if (isinstance == -1) {
+                return 1;
+        }
+        if (isinstance) {
                 string s;
 
                 if (PyObject_HasAttrString(obj, "s")) {
@@ -5356,7 +5527,11 @@
                 if (*out == NULL) goto failed;
                 return 0;
         }
-        if (PyObject_IsInstance(obj, (PyObject*)Bytes_type)) {
+        isinstance = PyObject_IsInstance(obj, (PyObject*)Bytes_type);
+        if (isinstance == -1) {
+                return 1;
+        }
+        if (isinstance) {
                 string s;
 
                 if (PyObject_HasAttrString(obj, "s")) {
@@ -5375,13 +5550,21 @@
                 if (*out == NULL) goto failed;
                 return 0;
         }
-        if (PyObject_IsInstance(obj, (PyObject*)Ellipsis_type)) {
+        isinstance = PyObject_IsInstance(obj, (PyObject*)Ellipsis_type);
+        if (isinstance == -1) {
+                return 1;
+        }
+        if (isinstance) {
 
                 *out = Ellipsis(lineno, col_offset, arena);
                 if (*out == NULL) goto failed;
                 return 0;
         }
-        if (PyObject_IsInstance(obj, (PyObject*)Attribute_type)) {
+        isinstance = PyObject_IsInstance(obj, (PyObject*)Attribute_type);
+        if (isinstance == -1) {
+                return 1;
+        }
+        if (isinstance) {
                 expr_ty value;
                 identifier attr;
                 expr_context_ty ctx;
@@ -5426,7 +5609,11 @@
                 if (*out == NULL) goto failed;
                 return 0;
         }
-        if (PyObject_IsInstance(obj, (PyObject*)Subscript_type)) {
+        isinstance = PyObject_IsInstance(obj, (PyObject*)Subscript_type);
+        if (isinstance == -1) {
+                return 1;
+        }
+        if (isinstance) {
                 expr_ty value;
                 slice_ty slice;
                 expr_context_ty ctx;
@@ -5471,7 +5658,11 @@
                 if (*out == NULL) goto failed;
                 return 0;
         }
-        if (PyObject_IsInstance(obj, (PyObject*)Starred_type)) {
+        isinstance = PyObject_IsInstance(obj, (PyObject*)Starred_type);
+        if (isinstance == -1) {
+                return 1;
+        }
+        if (isinstance) {
                 expr_ty value;
                 expr_context_ty ctx;
 
@@ -5503,7 +5694,11 @@
                 if (*out == NULL) goto failed;
                 return 0;
         }
-        if (PyObject_IsInstance(obj, (PyObject*)Name_type)) {
+        isinstance = PyObject_IsInstance(obj, (PyObject*)Name_type);
+        if (isinstance == -1) {
+                return 1;
+        }
+        if (isinstance) {
                 identifier id;
                 expr_context_ty ctx;
 
@@ -5535,7 +5730,11 @@
                 if (*out == NULL) goto failed;
                 return 0;
         }
-        if (PyObject_IsInstance(obj, (PyObject*)List_type)) {
+        isinstance = PyObject_IsInstance(obj, (PyObject*)List_type);
+        if (isinstance == -1) {
+                return 1;
+        }
+        if (isinstance) {
                 asdl_seq* elts;
                 expr_context_ty ctx;
 
@@ -5580,7 +5779,11 @@
                 if (*out == NULL) goto failed;
                 return 0;
         }
-        if (PyObject_IsInstance(obj, (PyObject*)Tuple_type)) {
+        isinstance = PyObject_IsInstance(obj, (PyObject*)Tuple_type);
+        if (isinstance == -1) {
+                return 1;
+        }
+        if (isinstance) {
                 asdl_seq* elts;
                 expr_context_ty ctx;
 
@@ -5638,28 +5841,53 @@
 obj2ast_expr_context(PyObject* obj, expr_context_ty* out, PyArena* arena)
 {
         PyObject* tmp = NULL;
+        int isinstance;
 
-        if (PyObject_IsInstance(obj, (PyObject*)Load_type)) {
+        isinstance = PyObject_IsInstance(obj, (PyObject *)Load_type);
+        if (isinstance == -1) {
+                return 1;
+        }
+        if (isinstance) {
                 *out = Load;
                 return 0;
         }
-        if (PyObject_IsInstance(obj, (PyObject*)Store_type)) {
+        isinstance = PyObject_IsInstance(obj, (PyObject *)Store_type);
+        if (isinstance == -1) {
+                return 1;
+        }
+        if (isinstance) {
                 *out = Store;
                 return 0;
         }
-        if (PyObject_IsInstance(obj, (PyObject*)Del_type)) {
+        isinstance = PyObject_IsInstance(obj, (PyObject *)Del_type);
+        if (isinstance == -1) {
+                return 1;
+        }
+        if (isinstance) {
                 *out = Del;
                 return 0;
         }
-        if (PyObject_IsInstance(obj, (PyObject*)AugLoad_type)) {
+        isinstance = PyObject_IsInstance(obj, (PyObject *)AugLoad_type);
+        if (isinstance == -1) {
+                return 1;
+        }
+        if (isinstance) {
                 *out = AugLoad;
                 return 0;
         }
-        if (PyObject_IsInstance(obj, (PyObject*)AugStore_type)) {
+        isinstance = PyObject_IsInstance(obj, (PyObject *)AugStore_type);
+        if (isinstance == -1) {
+                return 1;
+        }
+        if (isinstance) {
                 *out = AugStore;
                 return 0;
         }
-        if (PyObject_IsInstance(obj, (PyObject*)Param_type)) {
+        isinstance = PyObject_IsInstance(obj, (PyObject *)Param_type);
+        if (isinstance == -1) {
+                return 1;
+        }
+        if (isinstance) {
                 *out = Param;
                 return 0;
         }
@@ -5676,13 +5904,18 @@
 obj2ast_slice(PyObject* obj, slice_ty* out, PyArena* arena)
 {
         PyObject* tmp = NULL;
+        int isinstance;
 
 
         if (obj == Py_None) {
                 *out = NULL;
                 return 0;
         }
-        if (PyObject_IsInstance(obj, (PyObject*)Slice_type)) {
+        isinstance = PyObject_IsInstance(obj, (PyObject*)Slice_type);
+        if (isinstance == -1) {
+                return 1;
+        }
+        if (isinstance) {
                 expr_ty lower;
                 expr_ty upper;
                 expr_ty step;
@@ -5724,7 +5957,11 @@
                 if (*out == NULL) goto failed;
                 return 0;
         }
-        if (PyObject_IsInstance(obj, (PyObject*)ExtSlice_type)) {
+        isinstance = PyObject_IsInstance(obj, (PyObject*)ExtSlice_type);
+        if (isinstance == -1) {
+                return 1;
+        }
+        if (isinstance) {
                 asdl_seq* dims;
 
                 if (PyObject_HasAttrString(obj, "dims")) {
@@ -5756,7 +5993,11 @@
                 if (*out == NULL) goto failed;
                 return 0;
         }
-        if (PyObject_IsInstance(obj, (PyObject*)Index_type)) {
+        isinstance = PyObject_IsInstance(obj, (PyObject*)Index_type);
+        if (isinstance == -1) {
+                return 1;
+        }
+        if (isinstance) {
                 expr_ty value;
 
                 if (PyObject_HasAttrString(obj, "value")) {
@@ -5788,12 +6029,21 @@
 obj2ast_boolop(PyObject* obj, boolop_ty* out, PyArena* arena)
 {
         PyObject* tmp = NULL;
+        int isinstance;
 
-        if (PyObject_IsInstance(obj, (PyObject*)And_type)) {
+        isinstance = PyObject_IsInstance(obj, (PyObject *)And_type);
+        if (isinstance == -1) {
+                return 1;
+        }
+        if (isinstance) {
                 *out = And;
                 return 0;
         }
-        if (PyObject_IsInstance(obj, (PyObject*)Or_type)) {
+        isinstance = PyObject_IsInstance(obj, (PyObject *)Or_type);
+        if (isinstance == -1) {
+                return 1;
+        }
+        if (isinstance) {
                 *out = Or;
                 return 0;
         }
@@ -5810,52 +6060,101 @@
 obj2ast_operator(PyObject* obj, operator_ty* out, PyArena* arena)
 {
         PyObject* tmp = NULL;
+        int isinstance;
 
-        if (PyObject_IsInstance(obj, (PyObject*)Add_type)) {
+        isinstance = PyObject_IsInstance(obj, (PyObject *)Add_type);
+        if (isinstance == -1) {
+                return 1;
+        }
+        if (isinstance) {
                 *out = Add;
                 return 0;
         }
-        if (PyObject_IsInstance(obj, (PyObject*)Sub_type)) {
+        isinstance = PyObject_IsInstance(obj, (PyObject *)Sub_type);
+        if (isinstance == -1) {
+                return 1;
+        }
+        if (isinstance) {
                 *out = Sub;
                 return 0;
         }
-        if (PyObject_IsInstance(obj, (PyObject*)Mult_type)) {
+        isinstance = PyObject_IsInstance(obj, (PyObject *)Mult_type);
+        if (isinstance == -1) {
+                return 1;
+        }
+        if (isinstance) {
                 *out = Mult;
                 return 0;
         }
-        if (PyObject_IsInstance(obj, (PyObject*)Div_type)) {
+        isinstance = PyObject_IsInstance(obj, (PyObject *)Div_type);
+        if (isinstance == -1) {
+                return 1;
+        }
+        if (isinstance) {
                 *out = Div;
                 return 0;
         }
-        if (PyObject_IsInstance(obj, (PyObject*)Mod_type)) {
+        isinstance = PyObject_IsInstance(obj, (PyObject *)Mod_type);
+        if (isinstance == -1) {
+                return 1;
+        }
+        if (isinstance) {
                 *out = Mod;
                 return 0;
         }
-        if (PyObject_IsInstance(obj, (PyObject*)Pow_type)) {
+        isinstance = PyObject_IsInstance(obj, (PyObject *)Pow_type);
+        if (isinstance == -1) {
+                return 1;
+        }
+        if (isinstance) {
                 *out = Pow;
                 return 0;
         }
-        if (PyObject_IsInstance(obj, (PyObject*)LShift_type)) {
+        isinstance = PyObject_IsInstance(obj, (PyObject *)LShift_type);
+        if (isinstance == -1) {
+                return 1;
+        }
+        if (isinstance) {
                 *out = LShift;
                 return 0;
         }
-        if (PyObject_IsInstance(obj, (PyObject*)RShift_type)) {
+        isinstance = PyObject_IsInstance(obj, (PyObject *)RShift_type);
+        if (isinstance == -1) {
+                return 1;
+        }
+        if (isinstance) {
                 *out = RShift;
                 return 0;
         }
-        if (PyObject_IsInstance(obj, (PyObject*)BitOr_type)) {
+        isinstance = PyObject_IsInstance(obj, (PyObject *)BitOr_type);
+        if (isinstance == -1) {
+                return 1;
+        }
+        if (isinstance) {
                 *out = BitOr;
                 return 0;
         }
-        if (PyObject_IsInstance(obj, (PyObject*)BitXor_type)) {
+        isinstance = PyObject_IsInstance(obj, (PyObject *)BitXor_type);
+        if (isinstance == -1) {
+                return 1;
+        }
+        if (isinstance) {
                 *out = BitXor;
                 return 0;
         }
-        if (PyObject_IsInstance(obj, (PyObject*)BitAnd_type)) {
+        isinstance = PyObject_IsInstance(obj, (PyObject *)BitAnd_type);
+        if (isinstance == -1) {
+                return 1;
+        }
+        if (isinstance) {
                 *out = BitAnd;
                 return 0;
         }
-        if (PyObject_IsInstance(obj, (PyObject*)FloorDiv_type)) {
+        isinstance = PyObject_IsInstance(obj, (PyObject *)FloorDiv_type);
+        if (isinstance == -1) {
+                return 1;
+        }
+        if (isinstance) {
                 *out = FloorDiv;
                 return 0;
         }
@@ -5872,20 +6171,37 @@
 obj2ast_unaryop(PyObject* obj, unaryop_ty* out, PyArena* arena)
 {
         PyObject* tmp = NULL;
+        int isinstance;
 
-        if (PyObject_IsInstance(obj, (PyObject*)Invert_type)) {
+        isinstance = PyObject_IsInstance(obj, (PyObject *)Invert_type);
+        if (isinstance == -1) {
+                return 1;
+        }
+        if (isinstance) {
                 *out = Invert;
                 return 0;
         }
-        if (PyObject_IsInstance(obj, (PyObject*)Not_type)) {
+        isinstance = PyObject_IsInstance(obj, (PyObject *)Not_type);
+        if (isinstance == -1) {
+                return 1;
+        }
+        if (isinstance) {
                 *out = Not;
                 return 0;
         }
-        if (PyObject_IsInstance(obj, (PyObject*)UAdd_type)) {
+        isinstance = PyObject_IsInstance(obj, (PyObject *)UAdd_type);
+        if (isinstance == -1) {
+                return 1;
+        }
+        if (isinstance) {
                 *out = UAdd;
                 return 0;
         }
-        if (PyObject_IsInstance(obj, (PyObject*)USub_type)) {
+        isinstance = PyObject_IsInstance(obj, (PyObject *)USub_type);
+        if (isinstance == -1) {
+                return 1;
+        }
+        if (isinstance) {
                 *out = USub;
                 return 0;
         }
@@ -5902,44 +6218,85 @@
 obj2ast_cmpop(PyObject* obj, cmpop_ty* out, PyArena* arena)
 {
         PyObject* tmp = NULL;
+        int isinstance;
 
-        if (PyObject_IsInstance(obj, (PyObject*)Eq_type)) {
+        isinstance = PyObject_IsInstance(obj, (PyObject *)Eq_type);
+        if (isinstance == -1) {
+                return 1;
+        }
+        if (isinstance) {
                 *out = Eq;
                 return 0;
         }
-        if (PyObject_IsInstance(obj, (PyObject*)NotEq_type)) {
+        isinstance = PyObject_IsInstance(obj, (PyObject *)NotEq_type);
+        if (isinstance == -1) {
+                return 1;
+        }
+        if (isinstance) {
                 *out = NotEq;
                 return 0;
         }
-        if (PyObject_IsInstance(obj, (PyObject*)Lt_type)) {
+        isinstance = PyObject_IsInstance(obj, (PyObject *)Lt_type);
+        if (isinstance == -1) {
+                return 1;
+        }
+        if (isinstance) {
                 *out = Lt;
                 return 0;
         }
-        if (PyObject_IsInstance(obj, (PyObject*)LtE_type)) {
+        isinstance = PyObject_IsInstance(obj, (PyObject *)LtE_type);
+        if (isinstance == -1) {
+                return 1;
+        }
+        if (isinstance) {
                 *out = LtE;
                 return 0;
         }
-        if (PyObject_IsInstance(obj, (PyObject*)Gt_type)) {
+        isinstance = PyObject_IsInstance(obj, (PyObject *)Gt_type);
+        if (isinstance == -1) {
+                return 1;
+        }
+        if (isinstance) {
                 *out = Gt;
                 return 0;
         }
-        if (PyObject_IsInstance(obj, (PyObject*)GtE_type)) {
+        isinstance = PyObject_IsInstance(obj, (PyObject *)GtE_type);
+        if (isinstance == -1) {
+                return 1;
+        }
+        if (isinstance) {
                 *out = GtE;
                 return 0;
         }
-        if (PyObject_IsInstance(obj, (PyObject*)Is_type)) {
+        isinstance = PyObject_IsInstance(obj, (PyObject *)Is_type);
+        if (isinstance == -1) {
+                return 1;
+        }
+        if (isinstance) {
                 *out = Is;
                 return 0;
         }
-        if (PyObject_IsInstance(obj, (PyObject*)IsNot_type)) {
+        isinstance = PyObject_IsInstance(obj, (PyObject *)IsNot_type);
+        if (isinstance == -1) {
+                return 1;
+        }
+        if (isinstance) {
                 *out = IsNot;
                 return 0;
         }
-        if (PyObject_IsInstance(obj, (PyObject*)In_type)) {
+        isinstance = PyObject_IsInstance(obj, (PyObject *)In_type);
+        if (isinstance == -1) {
+                return 1;
+        }
+        if (isinstance) {
                 *out = In;
                 return 0;
         }
-        if (PyObject_IsInstance(obj, (PyObject*)NotIn_type)) {
+        isinstance = PyObject_IsInstance(obj, (PyObject *)NotIn_type);
+        if (isinstance == -1) {
+                return 1;
+        }
+        if (isinstance) {
                 *out = NotIn;
                 return 0;
         }
@@ -6020,6 +6377,7 @@
 obj2ast_excepthandler(PyObject* obj, excepthandler_ty* out, PyArena* arena)
 {
         PyObject* tmp = NULL;
+        int isinstance;
 
         int lineno;
         int col_offset;
@@ -6052,7 +6410,11 @@
                 PyErr_SetString(PyExc_TypeError, "required field \"col_offset\" missing from excepthandler");
                 return 1;
         }
-        if (PyObject_IsInstance(obj, (PyObject*)ExceptHandler_type)) {
+        isinstance = PyObject_IsInstance(obj, (PyObject*)ExceptHandler_type);
+        if (isinstance == -1) {
+                return 1;
+        }
+        if (isinstance) {
                 expr_ty type;
                 identifier name;
                 asdl_seq* body;
@@ -6629,11 +6991,15 @@
     PyObject *req_type[] = {(PyObject*)Module_type, (PyObject*)Expression_type,
                             (PyObject*)Interactive_type};
     char *req_name[] = {"Module", "Expression", "Interactive"};
+    int isinstance;
     assert(0 <= mode && mode <= 2);
 
     init_types();
 
-    if (!PyObject_IsInstance(ast, req_type[mode])) {
+    isinstance = PyObject_IsInstance(ast, req_type[mode]);
+    if (isinstance == -1)
+        return NULL;
+    if (!isinstance) {
         PyErr_Format(PyExc_TypeError, "expected %s node, got %.400s",
                      req_name[mode], Py_TYPE(ast)->tp_name);
         return NULL;
_______________________________________________
Python-checkins mailing list
Python-checkins@python.org
http://mail.python.org/mailman/listinfo/python-checkins

From SRS0=GK0S=H7=python.org=python-checkins-bounces+skip=pobox.com@bounce2.pobox.com  Sat Dec 12 18:58:44 2009
X-VM-v5-Data: ([nil nil nil nil nil nil nil nil nil]
	["38455" "Saturday" "12" "December" "2009" "19:57:35" "-0500" "benjamin.peterson" "python-checkins@python.org" nil "1152" "[Python-checkins] r76774 - in python/trunk: Parser/asdl_c.py Python/Python-ast.c Python/bltinmodule.c" "^From:" nil nil "12" nil nil nil nil nil nil nil nil nil nil]
	nil)
Delivered-To: skip.montanaro@gmail.com
Received: from pop.gmail.com
 by montanaro.dyndns.org with POP3 (fetchmail-6.3.11)
 for <skip@localhost> (single-drop); Sat, 12 Dec 2009 18:58:44 -0600 (CST)
Received: by 10.216.0.80 with SMTP id 58cs48838wea;
 Sat, 12 Dec 2009 16:57:38 -0800 (PST)
Received: by 10.224.40.137 with SMTP id k9mr1908164qae.262.1260665857688;
 Sat, 12 Dec 2009 16:57:37 -0800 (PST)
Return-Path: <SRS0=GK0S=H7=python.org=python-checkins-bounces+skip=pobox.com@bounce2.pobox.com>
Received: from gold.pobox.com (gold.pobox.com [208.72.237.26])
 by mx.google.com with ESMTP id 37si6809328qyk.122.2009.12.12.16.57.37;
 Sat, 12 Dec 2009 16:57:37 -0800 (PST)
Received-SPF: pass (google.com: domain of
 SRS0=GK0S=H7=python.org=python-checkins-bounces+skip=pobox.com@bounce2.pobox.com
 designates 208.72.237.26 as permitted sender) client-ip=208.72.237.26; 
Authentication-Results: mx.google.com; spf=pass (google.com: domain of
 SRS0=GK0S=H7=python.org=python-checkins-bounces+skip=pobox.com@bounce2.pobox.com
 designates 208.72.237.26 as permitted sender)
 smtp.mail=SRS0=GK0S=H7=python.org=python-checkins-bounces+skip=pobox.com@bounce2.pobox.com
Received: from gold.pobox.com (localhost [127.0.0.1])
 by gold.pobox.com (Postfix) with ESMTP id B5E8C411484
 for <skip.montanaro@gmail.com>; Sat, 12 Dec 2009 19:57:36 -0500 (EST)
Delivered-To: skip@pobox.com
X-Pobox-Orig-Sender: <python-checkins-bounces+skip=pobox.com@python.org>
X-Pobox-Delivery-ID: 810F230C-E782-11DE-AA19-9E35C4411685-00107187!gold.pobox.com
X-Original-To: python-checkins@python.org
x-pobox-client-address: 82.94.164.166
x-pobox-client-name: mail.python.org
Received: from mail.python.org (mail.python.org [82.94.164.166]) by
 gold.pobox.com (Postfix) with ESMTP id C0D884114BA for <skip@pobox.com>; Sat,
 12 Dec 2009 19:57:35 -0500 (EST)
Received: from albatross.python.org (localhost.localdomain [127.0.0.1]) by
 mail.python.org (Postfix) with ESMTP id 539C8F0B1 for <skip@pobox.com>; Sun,
 13 Dec 2009 01:57:35 +0100 (CET)
Authentication-Results: mail.python.org; dkim=permerror (bad format)
 header.i=unknown
Delivered-To: python-checkins@mail.python.org
Received: from albatross.python.org (localhost.localdomain [127.0.0.1]) by
 mail.python.org (Postfix) with ESMTP id 2DA92F0C7 for
 <python-checkins@python.org>; Sun, 13 Dec 2009 01:54:16 +0100 (CET)
Authentication-Results: mail.python.org; dkim=permerror (bad format)
 header.i=unknown
X-Spam-Status: OK 0.000
X-Spam-Evidence: '*H*': 1.00; '*S*': 0.00; 'def': 0.02; 'subject:Python':
 0.02; 'object': 0.03; 'modified:': 0.07; '(original)': 0.09; 'author:': 0.09; 
 'int': 0.09; 'log:': 0.09; 'received:82.94.164.162': 0.09;
 'received:dinsdale.python.org': 0.09; 'revision:': 0.09; 'subject:trunk':
 0.09; 'subject:python': 0.10; 'received:82.94': 0.10; 'received:82.94.164':
 0.10; 'from:addr:python.org': 0.11; 'received:python.org': 0.15; '"required':
 0.16; '-1; ': 0.16; 'goto': 0.16; 'pyobject': 0.16; 'to:addr:python-checkins':
 0.16; 'string': 0.20; 'skip:o 20': 0.22; 'ability': 0.27; 'missing': 0.29;
 'mode': 0.29; 'line': 0.32; 'subject:: ': 0.34; 'received:org': 0.35;
 'name,': 0.35; '+++': 0.36; 'out,': 0.36; 'got': 0.36; 'date:': 0.36;
 'received:82': 0.36; 'skip:" 10': 0.36; 'skip:p 30': 0.37; 'skip:( 20': 0.37; 
 'subject:-': 0.37; 'skip:s 20': 0.39; 'skip:( 30': 0.61; 'account': 0.70;
 '-1)': 0.84; 'left;': 0.84; 'name;': 0.84; 'right;': 0.84; 'skip:\\ 10':
 0.84; 'message-id:invalid': 0.88; 'skip:{ 20': 0.91
Received: from localhost.localdomain (HELO mail.python.org) (127.0.0.1) by
 albatross.python.org with SMTP; 13 Dec 2009 01:54:16 +0100
Received: from dinsdale.python.org (dinsdale.python.org [82.94.164.162]) by
 mail.python.org (Postfix) with ESMTP for <python-checkins@python.org>; Sun,
 13 Dec 2009 01:54:16 +0100 (CET)
MIME-Version: 1.0
X-BeenThere: python-checkins@python.org
X-Mailman-Version: 2.1.12
Precedence: list
List-Id: Check-in messages from the Python maintainers
 <python-checkins.python.org>
List-Unsubscribe: <http://mail.python.org/mailman/options/python-checkins>,
 <mailto:python-checkins-request@python.org?subject=unsubscribe>
List-Archive: <http://mail.python.org/pipermail/python-checkins>
List-Post: <mailto:python-checkins@python.org>
List-Help: <mailto:python-checkins-request@python.org?subject=help>
List-Subscribe: <http://mail.python.org/mailman/listinfo/python-checkins>,
 <mailto:python-checkins-request@python.org?subject=subscribe>
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: 7bit
Errors-To: python-checkins-bounces+skip=pobox.com@python.org
Message-Id: <20091213005735.C0D884114BA@gold.pobox.com>
X-Spambayes-Evidence: '*H*': 1.00; '*S*': 0.00; 'skip:_ 40': 0.04;
 'field': 0.05; 'result': 0.07; '+++': 0.09; 'author:': 0.09; 'def': 0.09;
 'from:addr:python.org': 0.09; 'log:': 0.09; 'modified:': 0.09;
 'revision:': 0.09; 'skip:* 10': 0.09; 'skip:s 30': 0.09; 'string': 0.09;
 'subject:checkins': 0.09; '(original)': 0.16; 'args; ': 0.16; 'assert(0': 0.16;
 'bool': 0.16; 'char': 0.16; 'dec': 0.16; 'email name:python-checkins': 0.16;
 'fail': 0.16; 'id; ': 0.16; 'identifier': 0.16; 'int': 0.16;
 'message-id:@gold.pobox.com': 0.16; 'mode': 0.16; 'name; ': 0.16; 'null;
 ': 0.16; 'object': 0.16; 'param; ': 0.16; 'received:82.94.164.162': 0.16;
 'received:dinsdale.python.org': 0.16;
 'sender:addr:python-checkins-bounces+skip=pobox.com': 0.16; 'skip:( 30': 0.16;
 'skip:= 70': 0.16; 'skip:p 30': 0.16; 'subject:skip:b 10': 0.16;
 'subject:trunk': 0.16; 'sun': 0.16; 'target; ': 0.16; 'targets; ': 0.16;
 'tmp': 0.16; 'to:addr:python-checkins': 0.16; 'url:python-checkins': 0.16;
 'value; ': 0.16; 'values; ': 0.16; 'email addr:python.org': 0.17; 'line': 0.20;
 'subject:: ': 0.24; '---': 0.24; 'date:': 0.24; 'subject:Python': 0.24;
 'header:Received:10': 0.28; 'list': 0.28; 'mailing': 0.30; 'skip:( 10': 0.30;
 'skip:( 20': 0.31; 'ability': 0.32; 'skip:o 20': 0.32; 'skip:" 10': 0.32;
 'subject:] ': 0.32; 'url:org': 0.32; 'skip:b 10': 0.34; 'skip:s 20': 0.36;
 'subject:[': 0.37; 'subject: - ': 0.39; 'url:python': 0.39; 'missing': 0.61;
 'subject:/': 0.61; 'skip:o 10': 0.64; 'skip:c 10': 0.67;
 'sender:addr:python.org': 0.68; 'return': 0.69; 'subject:\n ': 0.70;
 'got': 0.75
From: benjamin.peterson <python-checkins@python.org>
Sender: python-checkins-bounces+skip=pobox.com@python.org
To: python-checkins@python.org
Subject: [Python-checkins] r76774 - in python/trunk: Parser/asdl_c.py
 Python/Python-ast.c Python/bltinmodule.c
Date: Sat, 12 Dec 2009 19:57:35 -0500 (EST)
X-Spambayes-Classification: ham; 0.00

Author: benjamin.peterson
Date: Sun Dec 13 01:54:15 2009
New Revision: 76774

Log:
account for PyObject_IsInstance's new ability to fail

Modified:
   python/trunk/Parser/asdl_c.py
   python/trunk/Python/Python-ast.c
   python/trunk/Python/bltinmodule.c

Modified: python/trunk/Parser/asdl_c.py
==============================================================================
--- python/trunk/Parser/asdl_c.py	(original)
+++ python/trunk/Parser/asdl_c.py	Sun Dec 13 01:54:15 2009
@@ -367,6 +367,7 @@
         self.emit("obj2ast_%s(PyObject* obj, %s* out, PyArena* arena)" % (name, ctype), 0)
         self.emit("{", 0)
         self.emit("PyObject* tmp = NULL;", 1)
+        self.emit("int isinstance;", 1)
         self.emit("", 0)
 
     def sumTrailer(self, name):
@@ -386,7 +387,13 @@
     def simpleSum(self, sum, name):
         self.funcHeader(name)
         for t in sum.types:
-            self.emit("if (PyObject_IsInstance(obj, (PyObject*)%s_type)) {" % t.name, 1)
+            line = ("isinstance = PyObject_IsInstance(obj, "
+                    "(PyObject *)%s_type);")
+            self.emit(line % (t.name,), 1)
+            self.emit("if (isinstance == -1) {", 1)
+            self.emit("return 1;", 2)
+            self.emit("}", 1)
+            self.emit("if (isinstance) {", 1)
             self.emit("*out = %s;" % t.name, 2)
             self.emit("return 0;", 2)
             self.emit("}", 1)
@@ -408,7 +415,12 @@
         for a in sum.attributes:
             self.visitField(a, name, sum=sum, depth=1)
         for t in sum.types:
-            self.emit("if (PyObject_IsInstance(obj, (PyObject*)%s_type)) {" % t.name, 1)
+            line = "isinstance = PyObject_IsInstance(obj, (PyObject*)%s_type);"
+            self.emit(line % (t.name,), 1)
+            self.emit("if (isinstance == -1) {", 1)
+            self.emit("return 1;", 2)
+            self.emit("}", 1)
+            self.emit("if (isinstance) {", 1)
             for f in t.fields:
                 self.visitFieldDeclaration(f, t.name, sum=sum, depth=2)
             self.emit("", 0)
@@ -1093,11 +1105,15 @@
     PyObject *req_type[] = {(PyObject*)Module_type, (PyObject*)Expression_type,
                             (PyObject*)Interactive_type};
     char *req_name[] = {"Module", "Expression", "Interactive"};
+    int isinstance;
     assert(0 <= mode && mode <= 2);
 
     init_types();
 
-    if (!PyObject_IsInstance(ast, req_type[mode])) {
+    isinstance = PyObject_IsInstance(ast, req_type[mode]);
+    if (isinstance == -1)
+        return NULL;
+    if (!isinstance) {
         PyErr_Format(PyExc_TypeError, "expected %s node, got %.400s",
                      req_name[mode], Py_TYPE(ast)->tp_name);
         return NULL;

Modified: python/trunk/Python/Python-ast.c
==============================================================================
--- python/trunk/Python/Python-ast.c	(original)
+++ python/trunk/Python/Python-ast.c	Sun Dec 13 01:54:15 2009
@@ -3175,13 +3175,18 @@
 obj2ast_mod(PyObject* obj, mod_ty* out, PyArena* arena)
 {
         PyObject* tmp = NULL;
+        int isinstance;
 
 
         if (obj == Py_None) {
                 *out = NULL;
                 return 0;
         }
-        if (PyObject_IsInstance(obj, (PyObject*)Module_type)) {
+        isinstance = PyObject_IsInstance(obj, (PyObject*)Module_type);
+        if (isinstance == -1) {
+                return 1;
+        }
+        if (isinstance) {
                 asdl_seq* body;
 
                 if (PyObject_HasAttrString(obj, "body")) {
@@ -3213,7 +3218,11 @@
                 if (*out == NULL) goto failed;
                 return 0;
         }
-        if (PyObject_IsInstance(obj, (PyObject*)Interactive_type)) {
+        isinstance = PyObject_IsInstance(obj, (PyObject*)Interactive_type);
+        if (isinstance == -1) {
+                return 1;
+        }
+        if (isinstance) {
                 asdl_seq* body;
 
                 if (PyObject_HasAttrString(obj, "body")) {
@@ -3245,7 +3254,11 @@
                 if (*out == NULL) goto failed;
                 return 0;
         }
-        if (PyObject_IsInstance(obj, (PyObject*)Expression_type)) {
+        isinstance = PyObject_IsInstance(obj, (PyObject*)Expression_type);
+        if (isinstance == -1) {
+                return 1;
+        }
+        if (isinstance) {
                 expr_ty body;
 
                 if (PyObject_HasAttrString(obj, "body")) {
@@ -3264,7 +3277,11 @@
                 if (*out == NULL) goto failed;
                 return 0;
         }
-        if (PyObject_IsInstance(obj, (PyObject*)Suite_type)) {
+        isinstance = PyObject_IsInstance(obj, (PyObject*)Suite_type);
+        if (isinstance == -1) {
+                return 1;
+        }
+        if (isinstance) {
                 asdl_seq* body;
 
                 if (PyObject_HasAttrString(obj, "body")) {
@@ -3309,6 +3326,7 @@
 obj2ast_stmt(PyObject* obj, stmt_ty* out, PyArena* arena)
 {
         PyObject* tmp = NULL;
+        int isinstance;
 
         int lineno;
         int col_offset;
@@ -3341,7 +3359,11 @@
                 PyErr_SetString(PyExc_TypeError, "required field \"col_offset\" missing from stmt");
                 return 1;
         }
-        if (PyObject_IsInstance(obj, (PyObject*)FunctionDef_type)) {
+        isinstance = PyObject_IsInstance(obj, (PyObject*)FunctionDef_type);
+        if (isinstance == -1) {
+                return 1;
+        }
+        if (isinstance) {
                 identifier name;
                 arguments_ty args;
                 asdl_seq* body;
@@ -3426,7 +3448,11 @@
                 if (*out == NULL) goto failed;
                 return 0;
         }
-        if (PyObject_IsInstance(obj, (PyObject*)ClassDef_type)) {
+        isinstance = PyObject_IsInstance(obj, (PyObject*)ClassDef_type);
+        if (isinstance == -1) {
+                return 1;
+        }
+        if (isinstance) {
                 identifier name;
                 asdl_seq* bases;
                 asdl_seq* body;
@@ -3524,7 +3550,11 @@
                 if (*out == NULL) goto failed;
                 return 0;
         }
-        if (PyObject_IsInstance(obj, (PyObject*)Return_type)) {
+        isinstance = PyObject_IsInstance(obj, (PyObject*)Return_type);
+        if (isinstance == -1) {
+                return 1;
+        }
+        if (isinstance) {
                 expr_ty value;
 
                 if (PyObject_HasAttrString(obj, "value")) {
@@ -3542,7 +3572,11 @@
                 if (*out == NULL) goto failed;
                 return 0;
         }
-        if (PyObject_IsInstance(obj, (PyObject*)Delete_type)) {
+        isinstance = PyObject_IsInstance(obj, (PyObject*)Delete_type);
+        if (isinstance == -1) {
+                return 1;
+        }
+        if (isinstance) {
                 asdl_seq* targets;
 
                 if (PyObject_HasAttrString(obj, "targets")) {
@@ -3574,7 +3608,11 @@
                 if (*out == NULL) goto failed;
                 return 0;
         }
-        if (PyObject_IsInstance(obj, (PyObject*)Assign_type)) {
+        isinstance = PyObject_IsInstance(obj, (PyObject*)Assign_type);
+        if (isinstance == -1) {
+                return 1;
+        }
+        if (isinstance) {
                 asdl_seq* targets;
                 expr_ty value;
 
@@ -3619,7 +3657,11 @@
                 if (*out == NULL) goto failed;
                 return 0;
         }
-        if (PyObject_IsInstance(obj, (PyObject*)AugAssign_type)) {
+        isinstance = PyObject_IsInstance(obj, (PyObject*)AugAssign_type);
+        if (isinstance == -1) {
+                return 1;
+        }
+        if (isinstance) {
                 expr_ty target;
                 operator_ty op;
                 expr_ty value;
@@ -3664,7 +3706,11 @@
                 if (*out == NULL) goto failed;
                 return 0;
         }
-        if (PyObject_IsInstance(obj, (PyObject*)Print_type)) {
+        isinstance = PyObject_IsInstance(obj, (PyObject*)Print_type);
+        if (isinstance == -1) {
+                return 1;
+        }
+        if (isinstance) {
                 expr_ty dest;
                 asdl_seq* values;
                 bool nl;
@@ -3721,7 +3767,11 @@
                 if (*out == NULL) goto failed;
                 return 0;
         }
-        if (PyObject_IsInstance(obj, (PyObject*)For_type)) {
+        isinstance = PyObject_IsInstance(obj, (PyObject*)For_type);
+        if (isinstance == -1) {
+                return 1;
+        }
+        if (isinstance) {
                 expr_ty target;
                 expr_ty iter;
                 asdl_seq* body;
@@ -3806,7 +3856,11 @@
                 if (*out == NULL) goto failed;
                 return 0;
         }
-        if (PyObject_IsInstance(obj, (PyObject*)While_type)) {
+        isinstance = PyObject_IsInstance(obj, (PyObject*)While_type);
+        if (isinstance == -1) {
+                return 1;
+        }
+        if (isinstance) {
                 expr_ty test;
                 asdl_seq* body;
                 asdl_seq* orelse;
@@ -3877,7 +3931,11 @@
                 if (*out == NULL) goto failed;
                 return 0;
         }
-        if (PyObject_IsInstance(obj, (PyObject*)If_type)) {
+        isinstance = PyObject_IsInstance(obj, (PyObject*)If_type);
+        if (isinstance == -1) {
+                return 1;
+        }
+        if (isinstance) {
                 expr_ty test;
                 asdl_seq* body;
                 asdl_seq* orelse;
@@ -3948,7 +4006,11 @@
                 if (*out == NULL) goto failed;
                 return 0;
         }
-        if (PyObject_IsInstance(obj, (PyObject*)With_type)) {
+        isinstance = PyObject_IsInstance(obj, (PyObject*)With_type);
+        if (isinstance == -1) {
+                return 1;
+        }
+        if (isinstance) {
                 expr_ty context_expr;
                 expr_ty optional_vars;
                 asdl_seq* body;
@@ -4006,7 +4068,11 @@
                 if (*out == NULL) goto failed;
                 return 0;
         }
-        if (PyObject_IsInstance(obj, (PyObject*)Raise_type)) {
+        isinstance = PyObject_IsInstance(obj, (PyObject*)Raise_type);
+        if (isinstance == -1) {
+                return 1;
+        }
+        if (isinstance) {
                 expr_ty type;
                 expr_ty inst;
                 expr_ty tback;
@@ -4048,7 +4114,11 @@
                 if (*out == NULL) goto failed;
                 return 0;
         }
-        if (PyObject_IsInstance(obj, (PyObject*)TryExcept_type)) {
+        isinstance = PyObject_IsInstance(obj, (PyObject*)TryExcept_type);
+        if (isinstance == -1) {
+                return 1;
+        }
+        if (isinstance) {
                 asdl_seq* body;
                 asdl_seq* handlers;
                 asdl_seq* orelse;
@@ -4133,7 +4203,11 @@
                 if (*out == NULL) goto failed;
                 return 0;
         }
-        if (PyObject_IsInstance(obj, (PyObject*)TryFinally_type)) {
+        isinstance = PyObject_IsInstance(obj, (PyObject*)TryFinally_type);
+        if (isinstance == -1) {
+                return 1;
+        }
+        if (isinstance) {
                 asdl_seq* body;
                 asdl_seq* finalbody;
 
@@ -4191,7 +4265,11 @@
                 if (*out == NULL) goto failed;
                 return 0;
         }
-        if (PyObject_IsInstance(obj, (PyObject*)Assert_type)) {
+        isinstance = PyObject_IsInstance(obj, (PyObject*)Assert_type);
+        if (isinstance == -1) {
+                return 1;
+        }
+        if (isinstance) {
                 expr_ty test;
                 expr_ty msg;
 
@@ -4222,7 +4300,11 @@
                 if (*out == NULL) goto failed;
                 return 0;
         }
-        if (PyObject_IsInstance(obj, (PyObject*)Import_type)) {
+        isinstance = PyObject_IsInstance(obj, (PyObject*)Import_type);
+        if (isinstance == -1) {
+                return 1;
+        }
+        if (isinstance) {
                 asdl_seq* names;
 
                 if (PyObject_HasAttrString(obj, "names")) {
@@ -4254,7 +4336,11 @@
                 if (*out == NULL) goto failed;
                 return 0;
         }
-        if (PyObject_IsInstance(obj, (PyObject*)ImportFrom_type)) {
+        isinstance = PyObject_IsInstance(obj, (PyObject*)ImportFrom_type);
+        if (isinstance == -1) {
+                return 1;
+        }
+        if (isinstance) {
                 identifier module;
                 asdl_seq* names;
                 int level;
@@ -4311,7 +4397,11 @@
                 if (*out == NULL) goto failed;
                 return 0;
         }
-        if (PyObject_IsInstance(obj, (PyObject*)Exec_type)) {
+        isinstance = PyObject_IsInstance(obj, (PyObject*)Exec_type);
+        if (isinstance == -1) {
+                return 1;
+        }
+        if (isinstance) {
                 expr_ty body;
                 expr_ty globals;
                 expr_ty locals;
@@ -4354,7 +4444,11 @@
                 if (*out == NULL) goto failed;
                 return 0;
         }
-        if (PyObject_IsInstance(obj, (PyObject*)Global_type)) {
+        isinstance = PyObject_IsInstance(obj, (PyObject*)Global_type);
+        if (isinstance == -1) {
+                return 1;
+        }
+        if (isinstance) {
                 asdl_seq* names;
 
                 if (PyObject_HasAttrString(obj, "names")) {
@@ -4386,7 +4480,11 @@
                 if (*out == NULL) goto failed;
                 return 0;
         }
-        if (PyObject_IsInstance(obj, (PyObject*)Expr_type)) {
+        isinstance = PyObject_IsInstance(obj, (PyObject*)Expr_type);
+        if (isinstance == -1) {
+                return 1;
+        }
+        if (isinstance) {
                 expr_ty value;
 
                 if (PyObject_HasAttrString(obj, "value")) {
@@ -4405,19 +4503,31 @@
                 if (*out == NULL) goto failed;
                 return 0;
         }
-        if (PyObject_IsInstance(obj, (PyObject*)Pass_type)) {
+        isinstance = PyObject_IsInstance(obj, (PyObject*)Pass_type);
+        if (isinstance == -1) {
+                return 1;
+        }
+        if (isinstance) {
 
                 *out = Pass(lineno, col_offset, arena);
                 if (*out == NULL) goto failed;
                 return 0;
         }
-        if (PyObject_IsInstance(obj, (PyObject*)Break_type)) {
+        isinstance = PyObject_IsInstance(obj, (PyObject*)Break_type);
+        if (isinstance == -1) {
+                return 1;
+        }
+        if (isinstance) {
 
                 *out = Break(lineno, col_offset, arena);
                 if (*out == NULL) goto failed;
                 return 0;
         }
-        if (PyObject_IsInstance(obj, (PyObject*)Continue_type)) {
+        isinstance = PyObject_IsInstance(obj, (PyObject*)Continue_type);
+        if (isinstance == -1) {
+                return 1;
+        }
+        if (isinstance) {
 
                 *out = Continue(lineno, col_offset, arena);
                 if (*out == NULL) goto failed;
@@ -4436,6 +4546,7 @@
 obj2ast_expr(PyObject* obj, expr_ty* out, PyArena* arena)
 {
         PyObject* tmp = NULL;
+        int isinstance;
 
         int lineno;
         int col_offset;
@@ -4468,7 +4579,11 @@
                 PyErr_SetString(PyExc_TypeError, "required field \"col_offset\" missing from expr");
                 return 1;
         }
-        if (PyObject_IsInstance(obj, (PyObject*)BoolOp_type)) {
+        isinstance = PyObject_IsInstance(obj, (PyObject*)BoolOp_type);
+        if (isinstance == -1) {
+                return 1;
+        }
+        if (isinstance) {
                 boolop_ty op;
                 asdl_seq* values;
 
@@ -4513,7 +4628,11 @@
                 if (*out == NULL) goto failed;
                 return 0;
         }
-        if (PyObject_IsInstance(obj, (PyObject*)BinOp_type)) {
+        isinstance = PyObject_IsInstance(obj, (PyObject*)BinOp_type);
+        if (isinstance == -1) {
+                return 1;
+        }
+        if (isinstance) {
                 expr_ty left;
                 operator_ty op;
                 expr_ty right;
@@ -4558,7 +4677,11 @@
                 if (*out == NULL) goto failed;
                 return 0;
         }
-        if (PyObject_IsInstance(obj, (PyObject*)UnaryOp_type)) {
+        isinstance = PyObject_IsInstance(obj, (PyObject*)UnaryOp_type);
+        if (isinstance == -1) {
+                return 1;
+        }
+        if (isinstance) {
                 unaryop_ty op;
                 expr_ty operand;
 
@@ -4590,7 +4713,11 @@
                 if (*out == NULL) goto failed;
                 return 0;
         }
-        if (PyObject_IsInstance(obj, (PyObject*)Lambda_type)) {
+        isinstance = PyObject_IsInstance(obj, (PyObject*)Lambda_type);
+        if (isinstance == -1) {
+                return 1;
+        }
+        if (isinstance) {
                 arguments_ty args;
                 expr_ty body;
 
@@ -4622,7 +4749,11 @@
                 if (*out == NULL) goto failed;
                 return 0;
         }
-        if (PyObject_IsInstance(obj, (PyObject*)IfExp_type)) {
+        isinstance = PyObject_IsInstance(obj, (PyObject*)IfExp_type);
+        if (isinstance == -1) {
+                return 1;
+        }
+        if (isinstance) {
                 expr_ty test;
                 expr_ty body;
                 expr_ty orelse;
@@ -4667,7 +4798,11 @@
                 if (*out == NULL) goto failed;
                 return 0;
         }
-        if (PyObject_IsInstance(obj, (PyObject*)Dict_type)) {
+        isinstance = PyObject_IsInstance(obj, (PyObject*)Dict_type);
+        if (isinstance == -1) {
+                return 1;
+        }
+        if (isinstance) {
                 asdl_seq* keys;
                 asdl_seq* values;
 
@@ -4725,7 +4860,11 @@
                 if (*out == NULL) goto failed;
                 return 0;
         }
-        if (PyObject_IsInstance(obj, (PyObject*)ListComp_type)) {
+        isinstance = PyObject_IsInstance(obj, (PyObject*)ListComp_type);
+        if (isinstance == -1) {
+                return 1;
+        }
+        if (isinstance) {
                 expr_ty elt;
                 asdl_seq* generators;
 
@@ -4770,7 +4909,11 @@
                 if (*out == NULL) goto failed;
                 return 0;
         }
-        if (PyObject_IsInstance(obj, (PyObject*)GeneratorExp_type)) {
+        isinstance = PyObject_IsInstance(obj, (PyObject*)GeneratorExp_type);
+        if (isinstance == -1) {
+                return 1;
+        }
+        if (isinstance) {
                 expr_ty elt;
                 asdl_seq* generators;
 
@@ -4815,7 +4958,11 @@
                 if (*out == NULL) goto failed;
                 return 0;
         }
-        if (PyObject_IsInstance(obj, (PyObject*)Yield_type)) {
+        isinstance = PyObject_IsInstance(obj, (PyObject*)Yield_type);
+        if (isinstance == -1) {
+                return 1;
+        }
+        if (isinstance) {
                 expr_ty value;
 
                 if (PyObject_HasAttrString(obj, "value")) {
@@ -4833,7 +4980,11 @@
                 if (*out == NULL) goto failed;
                 return 0;
         }
-        if (PyObject_IsInstance(obj, (PyObject*)Compare_type)) {
+        isinstance = PyObject_IsInstance(obj, (PyObject*)Compare_type);
+        if (isinstance == -1) {
+                return 1;
+        }
+        if (isinstance) {
                 expr_ty left;
                 asdl_int_seq* ops;
                 asdl_seq* comparators;
@@ -4905,7 +5056,11 @@
                 if (*out == NULL) goto failed;
                 return 0;
         }
-        if (PyObject_IsInstance(obj, (PyObject*)Call_type)) {
+        isinstance = PyObject_IsInstance(obj, (PyObject*)Call_type);
+        if (isinstance == -1) {
+                return 1;
+        }
+        if (isinstance) {
                 expr_ty func;
                 asdl_seq* args;
                 asdl_seq* keywords;
@@ -5001,7 +5156,11 @@
                 if (*out == NULL) goto failed;
                 return 0;
         }
-        if (PyObject_IsInstance(obj, (PyObject*)Repr_type)) {
+        isinstance = PyObject_IsInstance(obj, (PyObject*)Repr_type);
+        if (isinstance == -1) {
+                return 1;
+        }
+        if (isinstance) {
                 expr_ty value;
 
                 if (PyObject_HasAttrString(obj, "value")) {
@@ -5020,7 +5179,11 @@
                 if (*out == NULL) goto failed;
                 return 0;
         }
-        if (PyObject_IsInstance(obj, (PyObject*)Num_type)) {
+        isinstance = PyObject_IsInstance(obj, (PyObject*)Num_type);
+        if (isinstance == -1) {
+                return 1;
+        }
+        if (isinstance) {
                 object n;
 
                 if (PyObject_HasAttrString(obj, "n")) {
@@ -5039,7 +5202,11 @@
                 if (*out == NULL) goto failed;
                 return 0;
         }
-        if (PyObject_IsInstance(obj, (PyObject*)Str_type)) {
+        isinstance = PyObject_IsInstance(obj, (PyObject*)Str_type);
+        if (isinstance == -1) {
+                return 1;
+        }
+        if (isinstance) {
                 string s;
 
                 if (PyObject_HasAttrString(obj, "s")) {
@@ -5058,7 +5225,11 @@
                 if (*out == NULL) goto failed;
                 return 0;
         }
-        if (PyObject_IsInstance(obj, (PyObject*)Attribute_type)) {
+        isinstance = PyObject_IsInstance(obj, (PyObject*)Attribute_type);
+        if (isinstance == -1) {
+                return 1;
+        }
+        if (isinstance) {
                 expr_ty value;
                 identifier attr;
                 expr_context_ty ctx;
@@ -5103,7 +5274,11 @@
                 if (*out == NULL) goto failed;
                 return 0;
         }
-        if (PyObject_IsInstance(obj, (PyObject*)Subscript_type)) {
+        isinstance = PyObject_IsInstance(obj, (PyObject*)Subscript_type);
+        if (isinstance == -1) {
+                return 1;
+        }
+        if (isinstance) {
                 expr_ty value;
                 slice_ty slice;
                 expr_context_ty ctx;
@@ -5148,7 +5323,11 @@
                 if (*out == NULL) goto failed;
                 return 0;
         }
-        if (PyObject_IsInstance(obj, (PyObject*)Name_type)) {
+        isinstance = PyObject_IsInstance(obj, (PyObject*)Name_type);
+        if (isinstance == -1) {
+                return 1;
+        }
+        if (isinstance) {
                 identifier id;
                 expr_context_ty ctx;
 
@@ -5180,7 +5359,11 @@
                 if (*out == NULL) goto failed;
                 return 0;
         }
-        if (PyObject_IsInstance(obj, (PyObject*)List_type)) {
+        isinstance = PyObject_IsInstance(obj, (PyObject*)List_type);
+        if (isinstance == -1) {
+                return 1;
+        }
+        if (isinstance) {
                 asdl_seq* elts;
                 expr_context_ty ctx;
 
@@ -5225,7 +5408,11 @@
                 if (*out == NULL) goto failed;
                 return 0;
         }
-        if (PyObject_IsInstance(obj, (PyObject*)Tuple_type)) {
+        isinstance = PyObject_IsInstance(obj, (PyObject*)Tuple_type);
+        if (isinstance == -1) {
+                return 1;
+        }
+        if (isinstance) {
                 asdl_seq* elts;
                 expr_context_ty ctx;
 
@@ -5283,28 +5470,53 @@
 obj2ast_expr_context(PyObject* obj, expr_context_ty* out, PyArena* arena)
 {
         PyObject* tmp = NULL;
+        int isinstance;
 
-        if (PyObject_IsInstance(obj, (PyObject*)Load_type)) {
+        isinstance = PyObject_IsInstance(obj, (PyObject *)Load_type);
+        if (isinstance == -1) {
+                return 1;
+        }
+        if (isinstance) {
                 *out = Load;
                 return 0;
         }
-        if (PyObject_IsInstance(obj, (PyObject*)Store_type)) {
+        isinstance = PyObject_IsInstance(obj, (PyObject *)Store_type);
+        if (isinstance == -1) {
+                return 1;
+        }
+        if (isinstance) {
                 *out = Store;
                 return 0;
         }
-        if (PyObject_IsInstance(obj, (PyObject*)Del_type)) {
+        isinstance = PyObject_IsInstance(obj, (PyObject *)Del_type);
+        if (isinstance == -1) {
+                return 1;
+        }
+        if (isinstance) {
                 *out = Del;
                 return 0;
         }
-        if (PyObject_IsInstance(obj, (PyObject*)AugLoad_type)) {
+        isinstance = PyObject_IsInstance(obj, (PyObject *)AugLoad_type);
+        if (isinstance == -1) {
+                return 1;
+        }
+        if (isinstance) {
                 *out = AugLoad;
                 return 0;
         }
-        if (PyObject_IsInstance(obj, (PyObject*)AugStore_type)) {
+        isinstance = PyObject_IsInstance(obj, (PyObject *)AugStore_type);
+        if (isinstance == -1) {
+                return 1;
+        }
+        if (isinstance) {
                 *out = AugStore;
                 return 0;
         }
-        if (PyObject_IsInstance(obj, (PyObject*)Param_type)) {
+        isinstance = PyObject_IsInstance(obj, (PyObject *)Param_type);
+        if (isinstance == -1) {
+                return 1;
+        }
+        if (isinstance) {
                 *out = Param;
                 return 0;
         }
@@ -5321,19 +5533,28 @@
 obj2ast_slice(PyObject* obj, slice_ty* out, PyArena* arena)
 {
         PyObject* tmp = NULL;
+        int isinstance;
 
 
         if (obj == Py_None) {
                 *out = NULL;
                 return 0;
         }
-        if (PyObject_IsInstance(obj, (PyObject*)Ellipsis_type)) {
+        isinstance = PyObject_IsInstance(obj, (PyObject*)Ellipsis_type);
+        if (isinstance == -1) {
+                return 1;
+        }
+        if (isinstance) {
 
                 *out = Ellipsis(arena);
                 if (*out == NULL) goto failed;
                 return 0;
         }
-        if (PyObject_IsInstance(obj, (PyObject*)Slice_type)) {
+        isinstance = PyObject_IsInstance(obj, (PyObject*)Slice_type);
+        if (isinstance == -1) {
+                return 1;
+        }
+        if (isinstance) {
                 expr_ty lower;
                 expr_ty upper;
                 expr_ty step;
@@ -5375,7 +5596,11 @@
                 if (*out == NULL) goto failed;
                 return 0;
         }
-        if (PyObject_IsInstance(obj, (PyObject*)ExtSlice_type)) {
+        isinstance = PyObject_IsInstance(obj, (PyObject*)ExtSlice_type);
+        if (isinstance == -1) {
+                return 1;
+        }
+        if (isinstance) {
                 asdl_seq* dims;
 
                 if (PyObject_HasAttrString(obj, "dims")) {
@@ -5407,7 +5632,11 @@
                 if (*out == NULL) goto failed;
                 return 0;
         }
-        if (PyObject_IsInstance(obj, (PyObject*)Index_type)) {
+        isinstance = PyObject_IsInstance(obj, (PyObject*)Index_type);
+        if (isinstance == -1) {
+                return 1;
+        }
+        if (isinstance) {
                 expr_ty value;
 
                 if (PyObject_HasAttrString(obj, "value")) {
@@ -5439,12 +5668,21 @@
 obj2ast_boolop(PyObject* obj, boolop_ty* out, PyArena* arena)
 {
         PyObject* tmp = NULL;
+        int isinstance;
 
-        if (PyObject_IsInstance(obj, (PyObject*)And_type)) {
+        isinstance = PyObject_IsInstance(obj, (PyObject *)And_type);
+        if (isinstance == -1) {
+                return 1;
+        }
+        if (isinstance) {
                 *out = And;
                 return 0;
         }
-        if (PyObject_IsInstance(obj, (PyObject*)Or_type)) {
+        isinstance = PyObject_IsInstance(obj, (PyObject *)Or_type);
+        if (isinstance == -1) {
+                return 1;
+        }
+        if (isinstance) {
                 *out = Or;
                 return 0;
         }
@@ -5461,52 +5699,101 @@
 obj2ast_operator(PyObject* obj, operator_ty* out, PyArena* arena)
 {
         PyObject* tmp = NULL;
+        int isinstance;
 
-        if (PyObject_IsInstance(obj, (PyObject*)Add_type)) {
+        isinstance = PyObject_IsInstance(obj, (PyObject *)Add_type);
+        if (isinstance == -1) {
+                return 1;
+        }
+        if (isinstance) {
                 *out = Add;
                 return 0;
         }
-        if (PyObject_IsInstance(obj, (PyObject*)Sub_type)) {
+        isinstance = PyObject_IsInstance(obj, (PyObject *)Sub_type);
+        if (isinstance == -1) {
+                return 1;
+        }
+        if (isinstance) {
                 *out = Sub;
                 return 0;
         }
-        if (PyObject_IsInstance(obj, (PyObject*)Mult_type)) {
+        isinstance = PyObject_IsInstance(obj, (PyObject *)Mult_type);
+        if (isinstance == -1) {
+                return 1;
+        }
+        if (isinstance) {
                 *out = Mult;
                 return 0;
         }
-        if (PyObject_IsInstance(obj, (PyObject*)Div_type)) {
+        isinstance = PyObject_IsInstance(obj, (PyObject *)Div_type);
+        if (isinstance == -1) {
+                return 1;
+        }
+        if (isinstance) {
                 *out = Div;
                 return 0;
         }
-        if (PyObject_IsInstance(obj, (PyObject*)Mod_type)) {
+        isinstance = PyObject_IsInstance(obj, (PyObject *)Mod_type);
+        if (isinstance == -1) {
+                return 1;
+        }
+        if (isinstance) {
                 *out = Mod;
                 return 0;
         }
-        if (PyObject_IsInstance(obj, (PyObject*)Pow_type)) {
+        isinstance = PyObject_IsInstance(obj, (PyObject *)Pow_type);
+        if (isinstance == -1) {
+                return 1;
+        }
+        if (isinstance) {
                 *out = Pow;
                 return 0;
         }
-        if (PyObject_IsInstance(obj, (PyObject*)LShift_type)) {
+        isinstance = PyObject_IsInstance(obj, (PyObject *)LShift_type);
+        if (isinstance == -1) {
+                return 1;
+        }
+        if (isinstance) {
                 *out = LShift;
                 return 0;
         }
-        if (PyObject_IsInstance(obj, (PyObject*)RShift_type)) {
+        isinstance = PyObject_IsInstance(obj, (PyObject *)RShift_type);
+        if (isinstance == -1) {
+                return 1;
+        }
+        if (isinstance) {
                 *out = RShift;
                 return 0;
         }
-        if (PyObject_IsInstance(obj, (PyObject*)BitOr_type)) {
+        isinstance = PyObject_IsInstance(obj, (PyObject *)BitOr_type);
+        if (isinstance == -1) {
+                return 1;
+        }
+        if (isinstance) {
                 *out = BitOr;
                 return 0;
         }
-        if (PyObject_IsInstance(obj, (PyObject*)BitXor_type)) {
+        isinstance = PyObject_IsInstance(obj, (PyObject *)BitXor_type);
+        if (isinstance == -1) {
+                return 1;
+        }
+        if (isinstance) {
                 *out = BitXor;
                 return 0;
         }
-        if (PyObject_IsInstance(obj, (PyObject*)BitAnd_type)) {
+        isinstance = PyObject_IsInstance(obj, (PyObject *)BitAnd_type);
+        if (isinstance == -1) {
+                return 1;
+        }
+        if (isinstance) {
                 *out = BitAnd;
                 return 0;
         }
-        if (PyObject_IsInstance(obj, (PyObject*)FloorDiv_type)) {
+        isinstance = PyObject_IsInstance(obj, (PyObject *)FloorDiv_type);
+        if (isinstance == -1) {
+                return 1;
+        }
+        if (isinstance) {
                 *out = FloorDiv;
                 return 0;
         }
@@ -5523,20 +5810,37 @@
 obj2ast_unaryop(PyObject* obj, unaryop_ty* out, PyArena* arena)
 {
         PyObject* tmp = NULL;
+        int isinstance;
 
-        if (PyObject_IsInstance(obj, (PyObject*)Invert_type)) {
+        isinstance = PyObject_IsInstance(obj, (PyObject *)Invert_type);
+        if (isinstance == -1) {
+                return 1;
+        }
+        if (isinstance) {
                 *out = Invert;
                 return 0;
         }
-        if (PyObject_IsInstance(obj, (PyObject*)Not_type)) {
+        isinstance = PyObject_IsInstance(obj, (PyObject *)Not_type);
+        if (isinstance == -1) {
+                return 1;
+        }
+        if (isinstance) {
                 *out = Not;
                 return 0;
         }
-        if (PyObject_IsInstance(obj, (PyObject*)UAdd_type)) {
+        isinstance = PyObject_IsInstance(obj, (PyObject *)UAdd_type);
+        if (isinstance == -1) {
+                return 1;
+        }
+        if (isinstance) {
                 *out = UAdd;
                 return 0;
         }
-        if (PyObject_IsInstance(obj, (PyObject*)USub_type)) {
+        isinstance = PyObject_IsInstance(obj, (PyObject *)USub_type);
+        if (isinstance == -1) {
+                return 1;
+        }
+        if (isinstance) {
                 *out = USub;
                 return 0;
         }
@@ -5553,44 +5857,85 @@
 obj2ast_cmpop(PyObject* obj, cmpop_ty* out, PyArena* arena)
 {
         PyObject* tmp = NULL;
+        int isinstance;
 
-        if (PyObject_IsInstance(obj, (PyObject*)Eq_type)) {
+        isinstance = PyObject_IsInstance(obj, (PyObject *)Eq_type);
+        if (isinstance == -1) {
+                return 1;
+        }
+        if (isinstance) {
                 *out = Eq;
                 return 0;
         }
-        if (PyObject_IsInstance(obj, (PyObject*)NotEq_type)) {
+        isinstance = PyObject_IsInstance(obj, (PyObject *)NotEq_type);
+        if (isinstance == -1) {
+                return 1;
+        }
+        if (isinstance) {
                 *out = NotEq;
                 return 0;
         }
-        if (PyObject_IsInstance(obj, (PyObject*)Lt_type)) {
+        isinstance = PyObject_IsInstance(obj, (PyObject *)Lt_type);
+        if (isinstance == -1) {
+                return 1;
+        }
+        if (isinstance) {
                 *out = Lt;
                 return 0;
         }
-        if (PyObject_IsInstance(obj, (PyObject*)LtE_type)) {
+        isinstance = PyObject_IsInstance(obj, (PyObject *)LtE_type);
+        if (isinstance == -1) {
+                return 1;
+        }
+        if (isinstance) {
                 *out = LtE;
                 return 0;
         }
-        if (PyObject_IsInstance(obj, (PyObject*)Gt_type)) {
+        isinstance = PyObject_IsInstance(obj, (PyObject *)Gt_type);
+        if (isinstance == -1) {
+                return 1;
+        }
+        if (isinstance) {
                 *out = Gt;
                 return 0;
         }
-        if (PyObject_IsInstance(obj, (PyObject*)GtE_type)) {
+        isinstance = PyObject_IsInstance(obj, (PyObject *)GtE_type);
+        if (isinstance == -1) {
+                return 1;
+        }
+        if (isinstance) {
                 *out = GtE;
                 return 0;
         }
-        if (PyObject_IsInstance(obj, (PyObject*)Is_type)) {
+        isinstance = PyObject_IsInstance(obj, (PyObject *)Is_type);
+        if (isinstance == -1) {
+                return 1;
+        }
+        if (isinstance) {
                 *out = Is;
                 return 0;
         }
-        if (PyObject_IsInstance(obj, (PyObject*)IsNot_type)) {
+        isinstance = PyObject_IsInstance(obj, (PyObject *)IsNot_type);
+        if (isinstance == -1) {
+                return 1;
+        }
+        if (isinstance) {
                 *out = IsNot;
                 return 0;
         }
-        if (PyObject_IsInstance(obj, (PyObject*)In_type)) {
+        isinstance = PyObject_IsInstance(obj, (PyObject *)In_type);
+        if (isinstance == -1) {
+                return 1;
+        }
+        if (isinstance) {
                 *out = In;
                 return 0;
         }
-        if (PyObject_IsInstance(obj, (PyObject*)NotIn_type)) {
+        isinstance = PyObject_IsInstance(obj, (PyObject *)NotIn_type);
+        if (isinstance == -1) {
+                return 1;
+        }
+        if (isinstance) {
                 *out = NotIn;
                 return 0;
         }
@@ -5671,6 +6016,7 @@
 obj2ast_excepthandler(PyObject* obj, excepthandler_ty* out, PyArena* arena)
 {
         PyObject* tmp = NULL;
+        int isinstance;
 
         int lineno;
         int col_offset;
@@ -5703,7 +6049,11 @@
                 PyErr_SetString(PyExc_TypeError, "required field \"col_offset\" missing from excepthandler");
                 return 1;
         }
-        if (PyObject_IsInstance(obj, (PyObject*)ExceptHandler_type)) {
+        isinstance = PyObject_IsInstance(obj, (PyObject*)ExceptHandler_type);
+        if (isinstance == -1) {
+                return 1;
+        }
+        if (isinstance) {
                 expr_ty type;
                 expr_ty name;
                 asdl_seq* body;
@@ -6104,11 +6454,15 @@
     PyObject *req_type[] = {(PyObject*)Module_type, (PyObject*)Expression_type,
                             (PyObject*)Interactive_type};
     char *req_name[] = {"Module", "Expression", "Interactive"};
+    int isinstance;
     assert(0 <= mode && mode <= 2);
 
     init_types();
 
-    if (!PyObject_IsInstance(ast, req_type[mode])) {
+    isinstance = PyObject_IsInstance(ast, req_type[mode]);
+    if (isinstance == -1)
+        return NULL;
+    if (!isinstance) {
         PyErr_Format(PyExc_TypeError, "expected %s node, got %.400s",
                      req_name[mode], Py_TYPE(ast)->tp_name);
         return NULL;

Modified: python/trunk/Python/bltinmodule.c
==============================================================================
--- python/trunk/Python/bltinmodule.c	(original)
+++ python/trunk/Python/bltinmodule.c	Sun Dec 13 01:54:15 2009
@@ -466,6 +466,7 @@
 	int mode = -1;
 	int dont_inherit = 0;
 	int supplied_flags = 0;
+	int is_ast;
 	PyCompilerFlags cf;
 	PyObject *result = NULL, *cmd, *tmp = NULL;
 	Py_ssize_t length;
@@ -505,7 +506,10 @@
 		return NULL;
 	}
 
-	if (PyAST_Check(cmd)) {
+	is_ast = PyAST_Check(cmd);
+	if (is_ast == -1)
+		return NULL;
+	if (is_ast) {
 		if (supplied_flags & PyCF_ONLY_AST) {
 			Py_INCREF(cmd);
 			result = cmd;
_______________________________________________
Python-checkins mailing list
Python-checkins@python.org
http://mail.python.org/mailman/listinfo/python-checkins

From SRS0=T7r3=H6=python.org=python-checkins-bounces+skip=pobox.com@bounce2.pobox.com  Sat Dec 12 14:03:02 2009
X-VM-v5-Data: ([nil nil nil nil nil nil nil nil nil]
	["373" "Saturday" "12" "December" "2009" "15:01:47" "-0500" "antoine.pitrou" "python-checkins@python.org" nil "16" "[Python-checkins] r76767 - sandbox/trunk/dbm_sqlite-3783" "^From:" nil nil "12" nil nil nil nil nil nil nil nil nil nil]
	nil)
Delivered-To: skip.montanaro@gmail.com
Received: from pop.gmail.com
 by montanaro.dyndns.org with POP3 (fetchmail-6.3.11)
 for <skip@localhost> (single-drop); Sat, 12 Dec 2009 14:03:02 -0600 (CST)
Received: by 10.216.0.80 with SMTP id 58cs39753wea;
 Sat, 12 Dec 2009 12:01:50 -0800 (PST)
Received: by 10.224.109.141 with SMTP id j13mr1818714qap.84.1260648109242;
 Sat, 12 Dec 2009 12:01:49 -0800 (PST)
Return-Path: <SRS0=T7r3=H6=python.org=python-checkins-bounces+skip=pobox.com@bounce2.pobox.com>
Received: from gold.pobox.com (gold.pobox.com [208.72.237.26])
 by mx.google.com with ESMTP id 8si5818694qyk.22.2009.12.12.12.01.48;
 Sat, 12 Dec 2009 12:01:49 -0800 (PST)
Received-SPF: pass (google.com: domain of
 SRS0=T7r3=H6=python.org=python-checkins-bounces+skip=pobox.com@bounce2.pobox.com
 designates 208.72.237.26 as permitted sender) client-ip=208.72.237.26; 
Authentication-Results: mx.google.com; spf=pass (google.com: domain of
 SRS0=T7r3=H6=python.org=python-checkins-bounces+skip=pobox.com@bounce2.pobox.com
 designates 208.72.237.26 as permitted sender)
 smtp.mail=SRS0=T7r3=H6=python.org=python-checkins-bounces+skip=pobox.com@bounce2.pobox.com
Received: from gold.pobox.com (localhost [127.0.0.1])
 by gold.pobox.com (Postfix) with ESMTP id 8113C41149B
 for <skip.montanaro@gmail.com>; Sat, 12 Dec 2009 15:01:48 -0500 (EST)
Delivered-To: skip@pobox.com
X-Pobox-Orig-Sender: <python-checkins-bounces+skip=pobox.com@python.org>
X-Pobox-Delivery-ID: 2E4DFDBA-E759-11DE-88F2-9192DCB45586-00107187!gold.pobox.com
X-Original-To: python-checkins@python.org
x-pobox-client-address: 82.94.164.166
x-pobox-client-name: mail.python.org
Received: from mail.python.org (mail.python.org [82.94.164.166]) by
 gold.pobox.com (Postfix) with ESMTP id F22E5411496 for <skip@pobox.com>; Sat,
 12 Dec 2009 15:01:47 -0500 (EST)
Received: from albatross.python.org (localhost.localdomain [127.0.0.1]) by
 mail.python.org (Postfix) with ESMTP id 89C29F000 for <skip@pobox.com>; Sat,
 12 Dec 2009 21:01:47 +0100 (CET)
Authentication-Results: mail.python.org; dkim=permerror (bad format)
 header.i=unknown
Delivered-To: python-checkins@mail.python.org
Received: from albatross.python.org (localhost.localdomain [127.0.0.1]) by
 mail.python.org (Postfix) with ESMTP id 16028D55F for
 <python-checkins@python.org>; Sat, 12 Dec 2009 21:01:38 +0100 (CET)
Authentication-Results: mail.python.org; dkim=permerror (bad format)
 header.i=unknown
X-Spam-Status: OK 0.001
X-Spam-Evidence: '*H*': 1.00; '*S*': 0.00; 'skip:/ 20': 0.05; 'author:':
 0.09; 'log:': 0.09; 'received:82.94.164.162': 0.09;
 'received:dinsdale.python.org': 0.09; 'revision:': 0.09; 'subject:trunk':
 0.09; 'received:82.94': 0.10; 'received:82.94.164': 0.10;
 'from:addr:python.org': 0.11; 'received:python.org': 0.15; 'added:': 0.16;
 'to:addr:python- checkins': 0.16; 'received:org': 0.35; 'date:': 0.36;
 'received:82': 0.36; 'subject:-': 0.37; 'message-id:invalid': 0.88; 'sat':
 0.91
Received: from localhost.localdomain (HELO mail.python.org) (127.0.0.1) by
 albatross.python.org with SMTP; 12 Dec 2009 21:01:38 +0100
Received: from dinsdale.python.org (dinsdale.python.org [82.94.164.162]) by
 mail.python.org (Postfix) with ESMTP for <python-checkins@python.org>; Sat,
 12 Dec 2009 21:01:38 +0100 (CET)
MIME-Version: 1.0
X-BeenThere: python-checkins@python.org
X-Mailman-Version: 2.1.12
Precedence: list
List-Id: Check-in messages from the Python maintainers
 <python-checkins.python.org>
List-Unsubscribe: <http://mail.python.org/mailman/options/python-checkins>,
 <mailto:python-checkins-request@python.org?subject=unsubscribe>
List-Archive: <http://mail.python.org/pipermail/python-checkins>
List-Post: <mailto:python-checkins@python.org>
List-Help: <mailto:python-checkins-request@python.org?subject=help>
List-Subscribe: <http://mail.python.org/mailman/listinfo/python-checkins>,
 <mailto:python-checkins-request@python.org?subject=subscribe>
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: 7bit
Errors-To: python-checkins-bounces+skip=pobox.com@python.org
Message-Id: <20091212200147.F22E5411496@gold.pobox.com>
X-Spambayes-Evidence: '*H*': 1.00; '*S*': 0.00; 'skip:_ 40': 0.04;
 'author:': 0.09; 'branch': 0.09; 'from:addr:python.org': 0.09; 'log:': 0.09;
 'revision:': 0.09; 'sat': 0.09; 'skip:s 30': 0.09; 'subject:checkins': 0.09;
 'added:': 0.16; 'dec': 0.16; 'email name:python-checkins': 0.16;
 'message-id:@gold.pobox.com': 0.16; 'received:82.94.164.162': 0.16;
 'received:dinsdale.python.org': 0.16;
 'sender:addr:python-checkins-bounces+skip=pobox.com': 0.16; 'skip:/ 20': 0.16;
 'subject:trunk': 0.16; 'to:addr:python-checkins': 0.16;
 'url:python-checkins': 0.16; 'email addr:python.org': 0.17; 'date:': 0.24;
 'subject:Python': 0.24; 'header:Received:10': 0.28; 'list': 0.28;
 'mailing': 0.30; 'subject:] ': 0.32; 'url:org': 0.32; 'subject:[': 0.37;
 'subject: - ': 0.39; 'url:python': 0.39; 'subject:/': 0.61;
 'sender:addr:python.org': 0.68; 'proper': 0.84
From: antoine.pitrou <python-checkins@python.org>
Sender: python-checkins-bounces+skip=pobox.com@python.org
To: python-checkins@python.org
Subject: [Python-checkins] r76767 - sandbox/trunk/dbm_sqlite-3783
Date: Sat, 12 Dec 2009 15:01:47 -0500 (EST)
X-Spambayes-Classification: ham; 0.00

Author: antoine.pitrou
Date: Sat Dec 12 21:01:37 2009
New Revision: 76767

Log:
Create a proper branch for dbm.sqlite



Added:
   sandbox/trunk/dbm_sqlite-3783/
      - copied from r76766, /python/branches/py3k/
_______________________________________________
Python-checkins mailing list
Python-checkins@python.org
http://mail.python.org/mailman/listinfo/python-checkins

From SRS0=T7r3=H6=python.org=python-checkins-bounces+skip=pobox.com@bounce2.pobox.com  Sat Dec 12 14:09:27 2009
X-VM-v5-Data: ([nil nil nil nil nil nil nil nil nil]
	["433" "Saturday" "12" "December" "2009" "15:09:18" "-0500" "antoine.pitrou" "python-checkins@python.org" nil "15" "[Python-checkins] r76768 - sandbox/trunk/dbm_sqlite-3783" "^From:" nil nil "12" nil nil nil nil nil nil nil nil nil nil]
	nil)
Delivered-To: skip.montanaro@gmail.com
Received: from pop.gmail.com
 by montanaro.dyndns.org with POP3 (fetchmail-6.3.11)
 for <skip@localhost> (single-drop); Sat, 12 Dec 2009 14:09:27 -0600 (CST)
Received: by 10.216.0.80 with SMTP id 58cs40070wea;
 Sat, 12 Dec 2009 12:09:21 -0800 (PST)
Received: by 10.224.80.94 with SMTP id s30mr1804844qak.214.1260648560453;
 Sat, 12 Dec 2009 12:09:20 -0800 (PST)
Return-Path: <SRS0=T7r3=H6=python.org=python-checkins-bounces+skip=pobox.com@bounce2.pobox.com>
Received: from indigo.pobox.com (indigo.pobox.com [64.74.157.52])
 by mx.google.com with ESMTP id 26si7961879qwa.30.2009.12.12.12.09.20;
 Sat, 12 Dec 2009 12:09:20 -0800 (PST)
Received-SPF: pass (google.com: domain of
 SRS0=T7r3=H6=python.org=python-checkins-bounces+skip=pobox.com@bounce2.pobox.com
 designates 64.74.157.52 as permitted sender) client-ip=64.74.157.52; 
Authentication-Results: mx.google.com; spf=pass (google.com: domain of
 SRS0=T7r3=H6=python.org=python-checkins-bounces+skip=pobox.com@bounce2.pobox.com
 designates 64.74.157.52 as permitted sender)
 smtp.mail=SRS0=T7r3=H6=python.org=python-checkins-bounces+skip=pobox.com@bounce2.pobox.com
Received: from indigo.pobox.com (localhost [127.0.0.1])
 by indigo.pobox.com (Postfix) with ESMTP id DAD2C209039
 for <skip.montanaro@gmail.com>; Sat, 12 Dec 2009 15:09:19 -0500 (EST)
Delivered-To: skip@pobox.com
X-Pobox-Orig-Sender: <python-checkins-bounces+skip=pobox.com@python.org>
X-Pobox-Delivery-ID: 3B5F601A-E75A-11DE-BD12-F6D115878676-00107187!indigo.pobox.com
X-Original-To: python-checkins@python.org
x-pobox-client-address: 82.94.164.166
x-pobox-client-name: mail.python.org
Received: from mail.python.org (mail.python.org [82.94.164.166]) by
 indigo.pobox.com (Postfix) with ESMTP id 76CEF209048 for <skip@pobox.com>;
 Sat, 12 Dec 2009 15:09:18 -0500 (EST)
Received: from albatross.python.org (localhost.localdomain [127.0.0.1]) by
 mail.python.org (Postfix) with ESMTP id 3D94BEF83 for <skip@pobox.com>; Sat,
 12 Dec 2009 21:09:18 +0100 (CET)
Authentication-Results: mail.python.org; dkim=permerror (bad format)
 header.i=unknown
Delivered-To: python-checkins@mail.python.org
Received: from albatross.python.org (localhost.localdomain [127.0.0.1]) by
 mail.python.org (Postfix) with ESMTP id 868FAEF13 for
 <python-checkins@python.org>; Sat, 12 Dec 2009 21:09:08 +0100 (CET)
Authentication-Results: mail.python.org; dkim=permerror (bad format)
 header.i=unknown
X-Spam-Status: OK 0.004
X-Spam-Evidence: '*H*': 0.99; '*S*': 0.00; 'modified:': 0.07; 'author:':
 0.09; 'log:': 0.09; 'received:82.94.164.162': 0.09;
 'received:dinsdale.python.org': 0.09; 'revision:': 0.09; 'subject:trunk':
 0.09; 'received:82.94': 0.10; 'received:82.94.164': 0.10;
 'from:addr:python.org': 0.11; 'received:python.org': 0.15; 'merge': 0.16;
 'to:addr:python- checkins': 0.16; 'received:org': 0.35; 'date:': 0.36;
 'received:82': 0.36; 'subject:-': 0.37; 'via': 0.62; 'tracking': 0.82;
 'message-id:invalid': 0.88; 'sat': 0.91
Received: from localhost.localdomain (HELO mail.python.org) (127.0.0.1) by
 albatross.python.org with SMTP; 12 Dec 2009 21:09:08 +0100
Received: from dinsdale.python.org (dinsdale.python.org [82.94.164.162]) by
 mail.python.org (Postfix) with ESMTP for <python-checkins@python.org>; Sat,
 12 Dec 2009 21:09:08 +0100 (CET)
MIME-Version: 1.0
X-BeenThere: python-checkins@python.org
X-Mailman-Version: 2.1.12
Precedence: list
List-Id: Check-in messages from the Python maintainers
 <python-checkins.python.org>
List-Unsubscribe: <http://mail.python.org/mailman/options/python-checkins>,
 <mailto:python-checkins-request@python.org?subject=unsubscribe>
List-Archive: <http://mail.python.org/pipermail/python-checkins>
List-Post: <mailto:python-checkins@python.org>
List-Help: <mailto:python-checkins-request@python.org?subject=help>
List-Subscribe: <http://mail.python.org/mailman/listinfo/python-checkins>,
 <mailto:python-checkins-request@python.org?subject=subscribe>
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: 7bit
Errors-To: python-checkins-bounces+skip=pobox.com@python.org
Message-Id: <20091212200918.76CEF209048@indigo.pobox.com>
X-Spambayes-Evidence: '*H*': 1.00; '*S*': 0.00; 'skip:_ 40': 0.04;
 'author:': 0.09; 'from:addr:python.org': 0.09; 'log:': 0.09; 'merge': 0.09;
 'modified:': 0.09; 'revision:': 0.09; 'sat': 0.09; 'skip:s 30': 0.09;
 'subject:checkins': 0.09; 'dec': 0.16; 'email name:python-checkins': 0.16;
 'initialized': 0.16; 'received:82.94.164.162': 0.16;
 'received:dinsdale.python.org': 0.16;
 'sender:addr:python-checkins-bounces+skip=pobox.com': 0.16; 'skip:s 50': 0.16;
 'subject:trunk': 0.16; 'to:addr:python-checkins': 0.16;
 'url:python-checkins': 0.16; 'email addr:python.org': 0.17; 'date:': 0.24;
 'subject:Python': 0.24; 'header:Received:10': 0.28; 'list': 0.28;
 'mailing': 0.30; 'subject:] ': 0.32; 'url:org': 0.32; 'subject:[': 0.37;
 'subject: - ': 0.39; 'received:64.74.157.52': 0.39; 'url:python': 0.39;
 'subject:/': 0.61; 'sender:addr:python.org': 0.68
From: antoine.pitrou <python-checkins@python.org>
Sender: python-checkins-bounces+skip=pobox.com@python.org
To: python-checkins@python.org
Subject: [Python-checkins] r76768 - sandbox/trunk/dbm_sqlite-3783
Date: Sat, 12 Dec 2009 15:09:18 -0500 (EST)
X-Spambayes-Classification: ham; 0.00

Author: antoine.pitrou
Date: Sat Dec 12 21:09:08 2009
New Revision: 76768

Log:
Initialized merge tracking via "svnmerge" with revisions "1-76766" from 
svn+ssh://pythondev@svn.python.org/python/branches/py3k


Modified:
   sandbox/trunk/dbm_sqlite-3783/   (props changed)
_______________________________________________
Python-checkins mailing list
Python-checkins@python.org
http://mail.python.org/mailman/listinfo/python-checkins

From SRS0=qwR4=H5=python.org=python-checkins-bounces+skip=pobox.com@bounce2.pobox.com  Fri Dec 11 11:29:56 2009
X-VM-v5-Data: ([nil nil nil nil nil nil nil nil nil]
	["12139" "Friday" "11" "December" "2009" "12:29:44" "-0500" "mark.dickinson" "python-checkins@python.org" nil "332" "[Python-checkins] r76755 - in python/trunk: Doc/library/math.rst Lib/test/math_testcases.txt Lib/test/test_math.py Misc/NEWS Modules/mathmodule.c" "^From:" nil nil "12" nil nil nil nil nil nil nil nil nil nil]
	nil)
Delivered-To: skip.montanaro@gmail.com
Received: from pop.gmail.com
 by montanaro.dyndns.org with POP3 (fetchmail-6.3.11)
 for <skip@localhost> (single-drop); Fri, 11 Dec 2009 11:29:56 -0600 (CST)
Received: by 10.216.0.80 with SMTP id 58cs102948wea;
 Fri, 11 Dec 2009 09:29:52 -0800 (PST)
Received: by 10.229.19.82 with SMTP id z18mr921934qca.9.1260552590840;
 Fri, 11 Dec 2009 09:29:50 -0800 (PST)
Return-Path: <SRS0=qwR4=H5=python.org=python-checkins-bounces+skip=pobox.com@bounce2.pobox.com>
Received: from sienna.pobox.com (sienna.pobox.com [64.74.157.51])
 by mx.google.com with ESMTP id 30si3996872qyk.33.2009.12.11.09.29.50;
 Fri, 11 Dec 2009 09:29:50 -0800 (PST)
Received-SPF: pass (google.com: domain of
 SRS0=qwR4=H5=python.org=python-checkins-bounces+skip=pobox.com@bounce2.pobox.com
 designates 64.74.157.51 as permitted sender) client-ip=64.74.157.51; 
Authentication-Results: mx.google.com; spf=pass (google.com: domain of
 SRS0=qwR4=H5=python.org=python-checkins-bounces+skip=pobox.com@bounce2.pobox.com
 designates 64.74.157.51 as permitted sender)
 smtp.mail=SRS0=qwR4=H5=python.org=python-checkins-bounces+skip=pobox.com@bounce2.pobox.com
Received: from sienna.pobox.com (localhost [127.0.0.1])
 by sienna.pobox.com (Postfix) with ESMTP id CF88320870E
 for <skip.montanaro@gmail.com>; Fri, 11 Dec 2009 12:29:49 -0500 (EST)
Delivered-To: skip@pobox.com
X-Pobox-Orig-Sender: <python-checkins-bounces+skip=pobox.com@python.org>
X-Pobox-Delivery-ID: C8786B80-E67A-11DE-973F-870F29B98980-00107187!sienna.pobox.com
X-Original-To: python-checkins@python.org
x-pobox-client-address: 82.94.164.166
x-pobox-client-name: mail.python.org
Received: from mail.python.org (mail.python.org [82.94.164.166]) by
 sienna.pobox.com (Postfix) with ESMTP id B2DE6208753 for <skip@pobox.com>;
 Fri, 11 Dec 2009 12:29:44 -0500 (EST)
Received: from albatross.python.org (localhost.localdomain [127.0.0.1]) by
 mail.python.org (Postfix) with ESMTP id AF19CEE91 for <skip@pobox.com>; Fri,
 11 Dec 2009 18:29:43 +0100 (CET)
Authentication-Results: mail.python.org; dkim=permerror (bad format)
 header.i=unknown
Delivered-To: python-checkins@mail.python.org
Received: from albatross.python.org (localhost.localdomain [127.0.0.1]) by
 mail.python.org (Postfix) with ESMTP id 69B71EA1D for
 <python-checkins@python.org>; Fri, 11 Dec 2009 18:29:33 +0100 (CET)
Authentication-Results: mail.python.org; dkim=permerror (bad format)
 header.i=unknown
X-Spam-Status: OK 0.032
X-Spam-Evidence: '*H*': 0.94; '*S*': 0.00; 'def': 0.02; 'math': 0.03;
 'else:': 0.05; 'modified:': 0.07; '(original)': 0.09; 'argument': 0.09;
 'author:': 0.09; 'elif': 0.09; 'log:': 0.09; 'none:': 0.09;
 'received:82.94.164.162': 0.09; 'received:dinsdale.python.org': 0.09;
 'revision:': 0.09; 'subject:library': 0.09; 'subject:test': 0.09;
 'subject:trunk': 0.09; 'subject:python': 0.10; 'received:82.94': 0.10;
 'received:82.94.164': 0.10; 'from:addr:python.org': 0.11; "skip:' 10": 0.14;
 'function': 0.15; 'received:python.org': 0.15; 'none': 0.15; '+def': 0.16;
 '---------': 0.16; '170': 0.16; 'expected:': 0.16; 'floats': 0.16;
 'functions.': 0.16; 'inputs': 0.16; 'integer': 0.16; 'module.': 0.16;
 'platforms.': 0.16; 'skip:+ 50': 0.16; 'str)': 0.16; 'subject:Lib': 0.16;
 'to:addr:python-checkins': 0.16; 'tuple': 0.16; 'skip:u 20': 0.20; 'error.':
 0.22; 'error': 0.27; 'remaining': 0.29; 'else': 0.29; 'expected': 0.29;
 'platform': 0.29; 'skip:f 20': 0.30; 'default': 0.31; 'probably': 0.31;
 'issue': 0.32; 'values': 0.32; 'it.': 0.33; 'subject:: ': 0.34; 'file': 0.35; 
 'received:org': 0.35; 'except': 0.35; 'raise': 0.36; '+++': 0.36; '2.5':
 0.36; 'skip:7 10': 0.36; 'got': 0.36; 'date:': 0.36; 'received:82': 0.36;
 'test': 0.36; 'skip:" 10': 0.36; 'float': 0.37; 'integral': 0.37; 'skip:p
 30': 0.37; 'between': 0.37; 'skip:( 20': 0.37; 'before': 0.37; 'since': 0.38; 
 'url:org': 0.39; 'works': 0.39; 'different': 0.40; 'use': 0.40; 'success':
 0.60; 'gives': 0.60; '2000': 0.61; 'skip:( 30': 0.61; 'value': 0.61;
 'continue': 0.61; 'worth': 0.63; 'skip:m 20': 0.63; 'skip:1 10': 0.64;
 'skip:l 20': 0.65; 'skip:0 10': 0.65; '0.5': 0.66; 'consistent': 0.66;
 'fraction': 0.66; 'platforms': 0.66; 'represented': 0.66; 'throwing': 0.66;
 'project.': 0.67; 'range': 0.68; 'skip:+ 10': 0.72; 'skip:{ 10': 0.74;
 'largest': 0.75; 'accurate': 0.78; 'negative': 0.78; 'deals': 0.80;
 'accuracy': 0.84; '"for': 0.84; '2.7': 0.84; '3.5': 0.84; 'below;': 0.84;
 'cases.': 0.84; 'skip:1 20': 0.84; 'skip:3 20': 0.84; 'skip:6 20': 0.84;
 'term,': 0.84; 'message-id:invalid': 0.88; '0.0': 0.91; 'equal': 0.91;
 'formula': 0.91; 'permitted': 0.91; 'skip:( 40': 0.91; 'skip:3 10': 0.91;
 'subject:NEWS': 0.91; '1.5': 0.93; 'criteria': 0.93; 'homepage': 0.95
Received: from localhost.localdomain (HELO mail.python.org) (127.0.0.1) by
 albatross.python.org with SMTP; 11 Dec 2009 18:29:33 +0100
Received: from dinsdale.python.org (dinsdale.python.org [82.94.164.162]) by
 mail.python.org (Postfix) with ESMTP for <python-checkins@python.org>; Fri,
 11 Dec 2009 18:29:33 +0100 (CET)
MIME-Version: 1.0
X-BeenThere: python-checkins@python.org
X-Mailman-Version: 2.1.12
Precedence: list
List-Id: Check-in messages from the Python maintainers
 <python-checkins.python.org>
List-Unsubscribe: <http://mail.python.org/mailman/options/python-checkins>,
 <mailto:python-checkins-request@python.org?subject=unsubscribe>
List-Archive: <http://mail.python.org/pipermail/python-checkins>
List-Post: <mailto:python-checkins@python.org>
List-Help: <mailto:python-checkins-request@python.org?subject=help>
List-Subscribe: <http://mail.python.org/mailman/listinfo/python-checkins>,
 <mailto:python-checkins-request@python.org?subject=subscribe>
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: 7bit
Errors-To: python-checkins-bounces+skip=pobox.com@python.org
Message-Id: <20091211172944.B2DE6208753@sienna.pobox.com>
X-Spambayes-Evidence: '*H*': 1.00; '*S*': 0.00; 'skip:_ 40': 0.04;
 'field': 0.05; 'skip:- 10': 0.05; 'case': 0.07; 'default': 0.07; 'error': 0.07;
 'result': 0.07; 'skip:" 20': 0.07; 'skip:_ 10': 0.07; '"the': 0.09;
 '+++': 0.09; 'author:': 0.09; 'def': 0.09; 'double': 0.09;
 'from:addr:python.org': 0.09; 'log:': 0.09; 'modified:': 0.09;
 'positive': 0.09; 'project.': 0.09; 'returns': 0.09; 'revision:': 0.09;
 "skip:' 10": 0.09; 'skip:+ 10': 0.09; 'subject:checkins': 0.09;
 '(original)': 0.16; '+..': 0.16; '+def': 0.16; '+static': 0.16; 'across': 0.16;
 'argument': 0.16; 'arguments': 0.16; 'arguments,': 0.16; 'dec': 0.16;
 'email name:python-checkins': 0.16; 'equal': 0.16; 'error.': 0.16;
 'except': 0.16; 'float': 0.16; 'functions': 0.16; 'half': 0.16; 'inputs': 0.16;
 'integral': 0.16; 'math': 0.16; 'negative': 0.16; 'raise': 0.16;
 'received:82.94.164.162': 0.16; 'received:dinsdale.python.org': 0.16;
 'remaining': 0.16; 'sender:addr:python-checkins-bounces+skip=pobox.com': 0.16;
 'skip:( 30': 0.16; 'skip:+ 50': 0.16; 'skip:= 70': 0.16; 'skip:p 30': 0.16;
 'subject:test': 0.16; 'subject:trunk': 0.16; 'to:addr:python-checkins': 0.16;
 'url:python-checkins': 0.16; '{}; ': 0.16; 'email addr:python.org': 0.17;
 'save': 0.17; 'between': 0.20; 'set': 0.20; 'skip:- 20': 0.20; 'could': 0.23;
 'subject:: ': 0.24; '---': 0.24; 'close': 0.24; 'date:': 0.24; 'issue': 0.24;
 'large': 0.24; 'outside': 0.24; 'subject:Python': 0.24; 'whether': 0.24;
 'within': 0.24; 'works': 0.24; 'way': 0.27; 'where': 0.28;
 'header:Received:10': 0.28; 'list': 0.28; 'since': 0.30; 'mailing': 0.30;
 'skip:( 10': 0.30; 'skip:( 20': 0.31; 'small': 0.31; '"this': 0.32;
 'directly': 0.32; 'else': 0.32; 'function': 0.32; 'given': 0.32;
 'necessary': 0.32; 'probably': 0.32; 'results': 0.32; 'skip:( 40': 0.32;
 'skip:2 10': 0.32; 'skip:f 20': 0.32; 'skip:" 10': 0.32; 'subject:] ': 0.32;
 'url:org': 0.32; 'they': 0.34; 'add': 0.34; 'how': 0.35; 'skip:1 10': 0.37;
 'subject:[': 0.37; 'use': 0.39; 'log': 0.39; 'subject: - ': 0.39;
 'url:python': 0.39; 'allow': 0.61; 'expected': 0.61; 'second': 0.61;
 'skip:m 20': 0.61; 'subject:/': 0.61; 'value': 0.61; 'worth': 0.61;
 'skip:v 10': 0.61; 'give': 0.62; 'received:sienna.pobox.com': 0.62;
 'skip:o 10': 0.64; 'information': 0.65; 'before': 0.65;
 'sender:addr:python.org': 0.68; '2000': 0.69; 'return': 0.69; 'special': 0.69;
 'subject:\n ': 0.70; 'got': 0.75; 'suitable': 0.75; 'here.': 0.78;
 'gives': 0.84; 'message-id:@sienna.pobox.com': 0.84; 'module.': 0.84;
 'permitted': 0.84; 'platforms': 0.84; 'skip:1 20': 0.84; 'skip:2 20': 0.84;
 'skip:3 10': 0.84; 'skip:3 20': 0.84; 'subject:library': 0.84; 'tiny': 0.84;
 'chosen': 0.91; 'skip:7 10': 0.91; 'test': 0.91; 'accept': 0.93;
 'skip:4 10': 0.93
From: mark.dickinson <python-checkins@python.org>
Sender: python-checkins-bounces+skip=pobox.com@python.org
To: python-checkins@python.org
Subject: [Python-checkins] r76755 - in python/trunk: Doc/library/math.rst
 Lib/test/math_testcases.txt Lib/test/test_math.py Misc/NEWS
 Modules/mathmodule.c
Date: Fri, 11 Dec 2009 12:29:44 -0500 (EST)
X-Spambayes-Classification: ham; 0.00

Author: mark.dickinson
Date: Fri Dec 11 18:29:33 2009
New Revision: 76755

Log:
Issue #3366:  Add lgamma function to math module.


Modified:
   python/trunk/Doc/library/math.rst
   python/trunk/Lib/test/math_testcases.txt
   python/trunk/Lib/test/test_math.py
   python/trunk/Misc/NEWS
   python/trunk/Modules/mathmodule.c

Modified: python/trunk/Doc/library/math.rst
==============================================================================
--- python/trunk/Doc/library/math.rst	(original)
+++ python/trunk/Doc/library/math.rst	Fri Dec 11 18:29:33 2009
@@ -318,6 +318,14 @@
    .. versionadded:: 2.7
 
 
+.. function:: lgamma(x)
+
+   Return the natural logarithm of the absolute value of the Gamma
+   function at *x*.
+
+   .. versionadded:: 2.7
+
+
 Constants
 ---------
 

Modified: python/trunk/Lib/test/math_testcases.txt
==============================================================================
--- python/trunk/Lib/test/math_testcases.txt	(original)
+++ python/trunk/Lib/test/math_testcases.txt	Fri Dec 11 18:29:33 2009
@@ -47,6 +47,111 @@
 -- MPFR homepage at http://www.mpfr.org for more information about the
 -- MPFR project.
 
+---------------------------------------------------------
+-- lgamma: log of absolute value of the gamma function --
+---------------------------------------------------------
+
+-- special values
+lgam0000 lgamma 0.0 -> inf      divide-by-zero
+lgam0001 lgamma -0.0 -> inf     divide-by-zero
+lgam0002 lgamma inf -> inf
+lgam0003 lgamma -inf -> inf
+lgam0004 lgamma nan -> nan
+
+-- negative integers
+lgam0010 lgamma -1 -> inf       divide-by-zero
+lgam0011 lgamma -2 -> inf       divide-by-zero
+lgam0012 lgamma -1e16 -> inf    divide-by-zero
+lgam0013 lgamma -1e300 -> inf   divide-by-zero
+lgam0014 lgamma -1.79e308 -> inf divide-by-zero
+
+-- small positive integers give factorials
+lgam0020 lgamma 1 -> 0.0
+lgam0021 lgamma 2 -> 0.0
+lgam0022 lgamma 3 -> 0.69314718055994529
+lgam0023 lgamma 4 -> 1.791759469228055
+lgam0024 lgamma 5 -> 3.1780538303479458
+lgam0025 lgamma 6 -> 4.7874917427820458
+
+-- half integers
+lgam0030 lgamma 0.5 -> 0.57236494292470008
+lgam0031 lgamma 1.5 -> -0.12078223763524522
+lgam0032 lgamma 2.5 -> 0.28468287047291918
+lgam0033 lgamma 3.5 -> 1.2009736023470743
+lgam0034 lgamma -0.5 -> 1.2655121234846454
+lgam0035 lgamma -1.5 -> 0.86004701537648098
+lgam0036 lgamma -2.5 -> -0.056243716497674054
+lgam0037 lgamma -3.5 -> -1.309006684993042
+
+-- values near 0
+lgam0040 lgamma 0.1 -> 2.252712651734206
+lgam0041 lgamma 0.01 -> 4.5994798780420219
+lgam0042 lgamma 1e-8 -> 18.420680738180209
+lgam0043 lgamma 1e-16 -> 36.841361487904734
+lgam0044 lgamma 1e-30 -> 69.077552789821368
+lgam0045 lgamma 1e-160 -> 368.41361487904732
+lgam0046 lgamma 1e-308 -> 709.19620864216608
+lgam0047 lgamma 5.6e-309 -> 709.77602713741896
+lgam0048 lgamma 5.5e-309 -> 709.79404564292167
+lgam0049 lgamma 1e-309 -> 711.49879373516012
+lgam0050 lgamma 1e-323 -> 743.74692474082133
+lgam0051 lgamma 5e-324 -> 744.44007192138122
+lgam0060 lgamma -0.1 -> 2.3689613327287886
+lgam0061 lgamma -0.01 -> 4.6110249927528013
+lgam0062 lgamma -1e-8 -> 18.420680749724522
+lgam0063 lgamma -1e-16 -> 36.841361487904734
+lgam0064 lgamma -1e-30 -> 69.077552789821368
+lgam0065 lgamma -1e-160 -> 368.41361487904732
+lgam0066 lgamma -1e-308 -> 709.19620864216608
+lgam0067 lgamma -5.6e-309 -> 709.77602713741896
+lgam0068 lgamma -5.5e-309 -> 709.79404564292167
+lgam0069 lgamma -1e-309 -> 711.49879373516012
+lgam0070 lgamma -1e-323 -> 743.74692474082133
+lgam0071 lgamma -5e-324 -> 744.44007192138122
+
+-- values near negative integers
+lgam0080 lgamma -0.99999999999999989 -> 36.736800569677101
+lgam0081 lgamma -1.0000000000000002 -> 36.043653389117154
+lgam0082 lgamma -1.9999999999999998 -> 35.350506208557213
+lgam0083 lgamma -2.0000000000000004 -> 34.657359027997266
+lgam0084 lgamma -100.00000000000001 -> -331.85460524980607
+lgam0085 lgamma -99.999999999999986 -> -331.85460524980596
+
+-- large inputs
+lgam0100 lgamma 170 -> 701.43726380873704
+lgam0101 lgamma 171 -> 706.57306224578736
+lgam0102 lgamma 171.624 -> 709.78077443669895
+lgam0103 lgamma 171.625 -> 709.78591682948365
+lgam0104 lgamma 172 -> 711.71472580228999
+lgam0105 lgamma 2000 -> 13198.923448054265
+lgam0106 lgamma 2.55998332785163e305 -> 1.7976931348623099e+308
+lgam0107 lgamma 2.55998332785164e305 -> inf overflow
+lgam0108 lgamma 1.7e308 -> inf overflow
+
+-- inputs for which gamma(x) is tiny
+lgam0120 lgamma -100.5 -> -364.90096830942736
+lgam0121 lgamma -160.5 -> -656.88005261126432
+lgam0122 lgamma -170.5 -> -707.99843314507882
+lgam0123 lgamma -171.5 -> -713.14301641168481
+lgam0124 lgamma -176.5 -> -738.95247590846486
+lgam0125 lgamma -177.5 -> -744.13144651738037
+lgam0126 lgamma -178.5 -> -749.3160351186001
+
+lgam0130 lgamma -1000.5 -> -5914.4377011168517
+lgam0131 lgamma -30000.5 -> -279278.6629959144
+lgam0132 lgamma -4503599627370495.5 -> -1.5782258434492883e+17
+
+-- results close to 0:  positive argument ...
+lgam0150 lgamma 0.99999999999999989 -> 6.4083812134800075e-17
+lgam0151 lgamma 1.0000000000000002 -> -1.2816762426960008e-16
+lgam0152 lgamma 1.9999999999999998 -> -9.3876980655431170e-17
+lgam0153 lgamma 2.0000000000000004 -> 1.8775396131086244e-16
+
+-- ... and negative argument
+lgam0160 lgamma -2.7476826467 -> -5.2477408147689136e-11
+lgam0161 lgamma -2.457024738 -> 3.3464637541912932e-10
+
+
 ---------------------------
 -- gamma: Gamma function --
 ---------------------------

Modified: python/trunk/Lib/test/test_math.py
==============================================================================
--- python/trunk/Lib/test/test_math.py	(original)
+++ python/trunk/Lib/test/test_math.py	Fri Dec 11 18:29:33 2009
@@ -48,6 +48,36 @@
         n = ~(n+2**63)
     return n
 
+def ulps_check(expected, got, ulps=20):
+    """Given non-NaN floats `expected` and `got`,
+    check that they're equal to within the given number of ulps.
+
+    Returns None on success and an error message on failure."""
+
+    ulps_error = to_ulps(got) - to_ulps(expected)
+    if abs(ulps_error) <= ulps:
+        return None
+    return "error = {} ulps; permitted error = {} ulps".format(ulps_error,
+                                                               ulps)
+
+def acc_check(expected, got, rel_err=2e-15, abs_err = 5e-323):
+    """Determine whether non-NaN floats a and b are equal to within a
+    (small) rounding error.  The default values for rel_err and
+    abs_err are chosen to be suitable for platforms where a float is
+    represented by an IEEE 754 double.  They allow an error of between
+    9 and 19 ulps."""
+
+    # need to special case infinities, since inf - inf gives nan
+    if math.isinf(expected) and got == expected:
+        return None
+
+    error = got - expected
+
+    permitted_error = max(abs_err, rel_err * abs(expected))
+    if abs(error) < permitted_error:
+        return None
+    return "error = {}; permitted error = {}".format(error,
+                                                     permitted_error)
 
 def parse_mtestfile(fname):
     """Parse a file with test values
@@ -952,13 +982,23 @@
             except OverflowError:
                 got = 'OverflowError'
 
-            diff_ulps = None
+            accuracy_failure = None
             if isinstance(got, float) and isinstance(expected, float):
                 if math.isnan(expected) and math.isnan(got):
                     continue
                 if not math.isnan(expected) and not math.isnan(got):
-                    diff_ulps = to_ulps(expected) - to_ulps(got)
-                    if abs(diff_ulps) <= ALLOWED_ERROR:
+                    # we use different closeness criteria for
+                    # different functions.
+                    if fn == 'gamma':
+                        accuracy_failure = ulps_check(expected, got, 20)
+                    elif fn == 'lgamma':
+                        accuracy_failure = acc_check(expected, got,
+                                                  rel_err = 5e-15,
+                                                  abs_err = 5e-15)
+                    else:
+                        raise ValueError("don't know how to check accuracy "
+                                         "for this function")
+                    if accuracy_failure is None:
                         continue
 
             if isinstance(got, str) and isinstance(expected, str):
@@ -966,8 +1006,8 @@
                     continue
 
             fail_msg = fail_fmt.format(id, fn, arg, expected, got)
-            if diff_ulps is not None:
-                fail_msg += ' ({} ulps)'.format(diff_ulps)
+            if accuracy_failure is not None:
+                fail_msg += ' ({})'.format(accuracy_failure)
             failures.append(fail_msg)
 
         if failures:

Modified: python/trunk/Misc/NEWS
==============================================================================
--- python/trunk/Misc/NEWS	(original)
+++ python/trunk/Misc/NEWS	Fri Dec 11 18:29:33 2009
@@ -1654,7 +1654,7 @@
 
 - Issue #7078: Set struct.__doc__ from _struct.__doc__.
 
-- Issue #3366: Add gamma function to math module.
+- Issue #3366: Add gamma, lgamma functions to math module.
 
 - Issue #6823: Allow time.strftime() to accept a tuple with a isdst field
   outside of the range of [-1, 1] by normalizing the value to within that

Modified: python/trunk/Modules/mathmodule.c
==============================================================================
--- python/trunk/Modules/mathmodule.c	(original)
+++ python/trunk/Modules/mathmodule.c	Fri Dec 11 18:29:33 2009
@@ -322,6 +322,60 @@
 }
 
 /*
+   lgamma:  natural log of the absolute value of the Gamma function.
+   For large arguments, Lanczos' formula works extremely well here.
+*/
+
+static double
+m_lgamma(double x)
+{
+	double r, absx;
+
+	/* special cases */
+	if (!Py_IS_FINITE(x)) {
+		if (Py_IS_NAN(x))
+			return x;  /* lgamma(nan) = nan */
+		else
+			return Py_HUGE_VAL; /* lgamma(+-inf) = +inf */
+	}
+
+	/* integer arguments */
+	if (x == floor(x) && x <= 2.0) {
+		if (x <= 0.0) {
+			errno = EDOM;  /* lgamma(n) = inf, divide-by-zero for */
+			return Py_HUGE_VAL; /* integers n <= 0 */
+		}
+		else {
+			return 0.0; /* lgamma(1) = lgamma(2) = 0.0 */
+		}
+	}
+
+	absx = fabs(x);
+	/* tiny arguments: lgamma(x) ~ -log(fabs(x)) for small x */
+	if (absx < 1e-20)
+		return -log(absx);
+
+	/* Lanczos' formula */
+	if (x > 0.0) {
+		/* we could save a fraction of a ulp in accuracy by having a
+		   second set of numerator coefficients for lanczos_sum that
+		   absorbed the exp(-lanczos_g) term, and throwing out the
+		   lanczos_g subtraction below; it's probably not worth it. */
+		r = log(lanczos_sum(x)) - lanczos_g +
+			(x-0.5)*(log(x+lanczos_g-0.5)-1);
+	}
+	else {
+		r = log(pi) - log(fabs(sinpi(absx))) - log(absx) -
+			(log(lanczos_sum(absx)) - lanczos_g +
+			 (absx-0.5)*(log(absx+lanczos_g-0.5)-1));
+	}
+	if (Py_IS_INFINITY(r))
+		errno = ERANGE;
+	return r;
+}
+
+
+/*
    wrapper for atan2 that deals directly with special cases before
    delegating to the platform libm for the remaining cases.  This
    is necessary to get consistent behaviour across platforms.
@@ -639,6 +693,8 @@
       "This is the largest integral value <= x.")
 FUNC1A(gamma, m_tgamma,
       "gamma(x)\n\nGamma function at x.")
+FUNC1A(lgamma, m_lgamma,
+      "lgamma(x)\n\nNatural logarithm of absolute value of Gamma function at x.")
 FUNC1(log1p, log1p, 1,
       "log1p(x)\n\nReturn the natural logarithm of 1+x (base e).\n"
       "The result is computed in a way which is accurate for x near zero.")
@@ -1375,6 +1431,7 @@
 	{"isinf",	math_isinf,	METH_O,		math_isinf_doc},
 	{"isnan",	math_isnan,	METH_O,		math_isnan_doc},
 	{"ldexp",	math_ldexp,	METH_VARARGS,	math_ldexp_doc},
+	{"lgamma",	math_lgamma,	METH_O,		math_lgamma_doc},
 	{"log",		math_log,	METH_VARARGS,	math_log_doc},
 	{"log1p",	math_log1p,	METH_O,		math_log1p_doc},
 	{"log10",	math_log10,	METH_O,		math_log10_doc},
_______________________________________________
Python-checkins mailing list
Python-checkins@python.org
http://mail.python.org/mailman/listinfo/python-checkins

From SRS0=u14F=ID=python.org=webmaster@bounce2.pobox.com  Wed Dec 16 22:21:31 2009
X-VM-v5-Data: ([nil nil nil nil nil nil nil nil nil]
	["1558" "Thursday" "17" "December" "2009" "04:20:27" "-0000" "=?utf-8?q?python=2Eorg_Webmaster_?=" "webmaster@python.org" nil "55" #("[PythonInfo Wiki] Update of \"TucsonPythonUserGroup\" by  174.18.26.187" 0 55 (vm-string t vm-charset "utf-8" vm-coding utf-8) 56 69 (vm-string t vm-charset "utf-8" vm-coding utf-8)) "^From:" nil nil "12" nil #("[PythonInfo Wiki] Update of \"TucsonPythonUserGroup\" by 174.18.26.187" 0 11 (vm-string t vm-charset "utf-8" vm-coding utf-8) 12 17 (vm-string t vm-charset "utf-8" vm-coding utf-8) 18 24 (vm-string t vm-charset "utf-8" vm-coding utf-8) 25 27 (vm-string t vm-charset "utf-8" vm-coding utf-8) 28 51 (vm-string t vm-charset "utf-8" vm-coding utf-8) 52 54 (vm-string t vm-charset "utf-8" vm-coding utf-8) 55 68 (vm-string t vm-charset "utf-8" vm-coding utf-8)) nil nil nil nil nil nil nil nil]
	nil)
Delivered-To: skip.montanaro@gmail.com
Received: from pop.gmail.com
 by montanaro.dyndns.org with POP3 (fetchmail-6.3.11)
 for <skip@localhost> (single-drop); Wed, 16 Dec 2009 22:21:31 -0600 (CST)
Received: by 10.213.7.80 with SMTP id c16cs270990ebc;
 Wed, 16 Dec 2009 20:20:31 -0800 (PST)
Received: by 10.224.3.74 with SMTP id 10mr1293550qam.302.1261023629925;
 Wed, 16 Dec 2009 20:20:29 -0800 (PST)
Return-Path: <SRS0=u14F=ID=python.org=webmaster@bounce2.pobox.com>
Received: from gold.pobox.com (gold.pobox.com [208.72.237.26])
 by mx.google.com with ESMTP id 15si3151036qyk.125.2009.12.16.20.20.28;
 Wed, 16 Dec 2009 20:20:28 -0800 (PST)
Received-SPF: pass (google.com: domain of
 SRS0=u14F=ID=python.org=webmaster@bounce2.pobox.com designates 208.72.237.26
 as permitted sender) client-ip=208.72.237.26; 
Authentication-Results: mx.google.com; spf=pass (google.com: domain of
 SRS0=u14F=ID=python.org=webmaster@bounce2.pobox.com designates 208.72.237.26
 as permitted sender)
 smtp.mail=SRS0=u14F=ID=python.org=webmaster@bounce2.pobox.com;
 dkim=pass header.i=@python.org
Received: from gold.pobox.com (localhost [127.0.0.1])
 by gold.pobox.com (Postfix) with ESMTP id 41A09412182
 for <skip.montanaro@gmail.com>; Wed, 16 Dec 2009 23:20:28 -0500 (EST)
Delivered-To: skip@pobox.com
X-Pobox-Orig-Sender: <webmaster@python.org>
X-Pobox-Delivery-ID: 81A3BE42-EAC3-11DE-B6B3-CC74028BA082-00107187!gold.pobox.com
x-pobox-client-address: 82.94.164.166
x-pobox-client-name: mail.python.org
Received: from mail.python.org (mail.python.org [82.94.164.166]) by
 gold.pobox.com (Postfix) with ESMTP id EF3CC4123A5; Wed, 16 Dec 2009 23:20:27
 -0500 (EST)
Received: from albatross.python.org (localhost.localdomain [127.0.0.1]) by
 mail.python.org (Postfix) with ESMTP id 7626FF38C; Thu, 17 Dec 2009 05:20:27
 +0100 (CET)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=python.org; s=200901;
 t=1261023627; bh=gZ7uNB+WW0VduQ6WRsiJm56hCmmRo/sC3lvNXFS87rM=;
 h=MIME-Version:Content-Type:Content-Transfer-Encoding:From:To:Date:
 Message-ID:Subject;
 b=o2Ho96CMBxgSkfiHenw4mWvkhvI6tbgS+yjuZ8RxiHZrP9juUkOp38q9zurXgDupF
 3zkUW2ck0xCwAbuknKSMHRquXtiqq4b6QxLFJlBnpfI1/i0ZldperuGOpMh5nLRkBB
 fIc9QTwWkjD/PIORnNs9Uh0tTPKqOILPX3exJ99g=
Received: from localhost.localdomain (HELO mail.python.org) (127.0.0.1) by
 albatross.python.org with SMTP; 17 Dec 2009 05:20:27 +0100
Received: from ximinez.python.org (ximinez.python.org [82.94.164.163]) by
 mail.python.org (Postfix) with ESMTP; Thu, 17 Dec 2009 05:20:27 +0100 (CET)
MIME-Version: 1.0
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: quoted-printable
Message-ID: <20091217042027.27178.38640@ximinez.python.org>
X-Pobox-Pass: webmaster@python.org is whitelisted
X-Spambayes-Evidence: '*H*': 0.97; '*S*': 0.00; 'november': 0.09;
 'probably': 0.09; 'simple': 0.09; 'url-ip:74.125.95.141/32': 0.09;
 'url-ip:82.94.164.162/32': 0.09; 'url:appspot': 0.09; 'changed': 0.16;
 'from:addr:python.org': 0.16; 'meeting': 0.16; 'meetings': 0.16; 'much': 0.16;
 'part': 0.16; 'possible': 0.16; 'python': 0.16; 'shows': 0.16;
 'skip:" 20': 0.16; 'skip:1 10': 0.16; 'url:13': 0.16; 'url:docs': 0.16;
 'user,': 0.16; 'url-ip:74.125.95/24': 0.19; 'url-ip:74.125/16': 0.19;
 'either': 0.23; 'discussion': 0.25; 'subject:] ': 0.26; 'url:org': 0.28;
 'received:208.72.237.26': 0.29; 'received:gold.pobox.com': 0.29;
 'url-ip:82.94.164/24': 0.29; 'url-ip:82.94/16': 0.29; 'url-ip:82/8': 0.29;
 'url:python': 0.29; 'from:addr:webmaster': 0.30; 'python,': 0.30;
 'url-ip:216/8': 0.30; 'received:208': 0.33; 'received:208.72': 0.33;
 'received:208.72.237': 0.33; 'received:org': 0.36; 'subject:[': 0.36;
 'url-ip:74/8': 0.37; 'received:82': 0.38; 'received:82.94': 0.38;
 'received:82.94.164': 0.38; 'received:82.94.164.166': 0.38;
 'received:albatross.python.org': 0.38; 'received:mail.python.org': 0.38;
 'received:python.org': 0.38; 'all': 0.40; 'google': 0.63; 'been': 0.66;
 'group': 0.66; 'change': 0.67; 'charset:utf-8': 0.80; '2009.': 0.84;
 'latest': 0.84; 'next': 0.84; 'past': 0.84; 'resources': 0.84; 'url:14': 0.84;
 'url:net': 0.93
From: =?utf-8?q?python=2Eorg_Webmaster_?=<webmaster@python.org>
To: =?utf-8?q?python=2Eorg_Webmaster_?=<webmaster@python.org>
Subject: =?utf-8?q?=5BPythonInfo_Wiki=5D_Update_of_=22TucsonPythonUserGroup=22_by_?=
 =?utf-8?q?174=2E18=2E26=2E187?=
Date: Thu, 17 Dec 2009 04:20:27 -0000
X-Spambayes-Classification: ham; 0.01

Dear Wiki user,

You have subscribed to a wiki page or wiki category on "PythonInfo Wiki" fo=
r change notification.

The "TucsonPythonUserGroup" page has been changed by 174.18.26.187:
http://wiki.python.org/moin/TucsonPythonUserGroup?action=3Ddiff&rev1=3D13&r=
ev2=3D14

  <<TableOfContents(1)>>
  =

  =3D Next Meeting =3D
-  * When: Monday, December 14, 2009 at 6:30pm.
+  * When: TENTATIVELY Saturday, January 16, 2009.  Much or all of day?
   * Where: [[http://groups.google.com/group/TuPLEgroup/|PLEASE SEE TuPLE G=
oogle Group FOR LATEST INFO]].
+  * What: probably either a Hack Day or a barbeque.  Or some of both.
+    [[http://groups.google.com/group/TuPLEgroup/|PLEASE SEE TuPLE Google G=
roup FOR LATEST INFO]]
  =

  =3D Resources =3D
   * Website : [[http://tuplegroup.appspot.com/|TuPLEgroup on Appspot]]
@@ -22, +24 @@

  =3D Some Past Meetings =3D
  ----
  =

+ =3D=3D December 14th 2009 =3D=3D
+  * profiling in Python, using =

+    * cProfile (http://docs.python.org/library/profile.html)
+    * timeit (http://docs.python.org/library/timeit.html)
+    * kcachegrind (http://kcachegrind.sourceforge.net/html/Home.html) =

+  * a simple client library for accessing Collecta (http://www.collecta.co=
m/) feeds. =

+    Shows a basic strategy for implementing a client web library using Twi=
sted web APIs. =

+  * discussion of possible Hack Day project ideas.
+ =

  =3D=3D November 9th 2009 =3D=3D
   * Dictionaries in Python 3.0
   * Optimizing pysqlite databases and queries, Part II
- =

  =

  =3D=3D October 12th 2009 =3D=3D
 =20

From SRS0=SQKo=ID=python.org=mailman-bounces@bounce2.pobox.com  Thu Dec 17 00:25:37 2009
X-VM-v5-Data: ([nil nil nil nil nil nil nil nil nil]
	["260" "Thursday" "17" "December" "2009" "07:23:45" "+0100" "python-help-owner@python.org" "python-help-owner@python.org" nil "11" "New subscription request to list Python-Help from lord_korean@hotmail.com" "^From:" nil nil "12" nil "New subscription request to list Python-Help from lord_korean@hotmail.com" nil nil nil nil nil nil nil nil]
	nil)
Delivered-To: skip.montanaro@gmail.com
Received: from pop.gmail.com
 by montanaro.dyndns.org with POP3 (fetchmail-6.3.11)
 for <skip@localhost> (single-drop); Thu, 17 Dec 2009 00:25:37 -0600 (CST)
Received: by 10.216.54.195 with SMTP id i45cs118023wec;
 Wed, 16 Dec 2009 22:23:59 -0800 (PST)
Received: by 10.220.126.214 with SMTP id d22mr441060vcs.114.1261031038779;
 Wed, 16 Dec 2009 22:23:58 -0800 (PST)
Return-Path: <SRS0=SQKo=ID=python.org=mailman-bounces@bounce2.pobox.com>
Received: from sienna.pobox.com (sienna.pobox.com [64.74.157.51])
 by mx.google.com with ESMTP id 14si2015069vws.86.2009.12.16.22.23.57;
 Wed, 16 Dec 2009 22:23:57 -0800 (PST)
Received-SPF: pass (google.com: domain of
 SRS0=SQKo=ID=python.org=mailman-bounces@bounce2.pobox.com designates
 64.74.157.51 as permitted sender) client-ip=64.74.157.51; 
Authentication-Results: mx.google.com; spf=pass (google.com: domain of
 SRS0=SQKo=ID=python.org=mailman-bounces@bounce2.pobox.com designates
 64.74.157.51 as permitted sender)
 smtp.mail=SRS0=SQKo=ID=python.org=mailman-bounces@bounce2.pobox.com;
 dkim=pass header.i=@python.org
Received: from sienna.pobox.com (localhost [127.0.0.1])
 by sienna.pobox.com (Postfix) with ESMTP id C1815200640
 for <skip.montanaro@gmail.com>; Thu, 17 Dec 2009 01:23:56 -0500 (EST)
Delivered-To: skip@pobox.com
X-Pobox-Orig-Sender: <mailman-bounces@python.org>
X-Pobox-Delivery-ID: C16C4696-EAD4-11DE-8626-87C9D598E475-00107187!sienna.pobox.com
X-Original-To: python-help-owner@python.org
x-pobox-client-address: 82.94.164.166
x-pobox-client-name: mail.python.org
Received: from mail.python.org (mail.python.org [82.94.164.166]) by
 sienna.pobox.com (Postfix) with ESMTP id 398C1200648 for <skip@pobox.com>;
 Thu, 17 Dec 2009 01:23:56 -0500 (EST)
Received: from albatross.python.org (localhost.localdomain [127.0.0.1]) by
 mail.python.org (Postfix) with ESMTP id 80CBEF2B8; Thu, 17 Dec 2009 07:23:48
 +0100 (CET)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=python.org; s=200901;
 t=1261031028; bh=Go6WXlLcDwKK0KfrznBeOTZJmnMUkLKLhTOqmK5HBtY=;
 h=MIME-Version:Content-Type:Content-Transfer-Encoding:Subject:From:
 To:Message-ID:Date:List-Id:Sender;
 b=qPBjxDZJwi+6LDEfEXU7VBCZ9Xg4YhtkS1/SJrH9nTe2FLZScx0p6WHyVLoLS/BYK
 qn01gJvoTOOxeooB9nPIhDe2YPLZ85XMh+ZFHFb66SbH7T+9QlfYFMJeeiDKTr0z79
 67FkB0tjfukBiiUcPsgQsEajvsEzK0GiMtBeajL0=
Delivered-To: python-help-owner@mail.python.org
Received: from albatross.python.org (localhost.localdomain [127.0.0.1]) by
 mail.python.org (Postfix) with ESMTP id 61BABF2B8 for
 <python-help-owner@python.org>; Thu, 17 Dec 2009 07:23:46 +0100 (CET)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=python.org; s=200901;
 t=1261031026; bh=Go6WXlLcDwKK0KfrznBeOTZJmnMUkLKLhTOqmK5HBtY=;
 h=MIME-Version:Content-Type:Content-Transfer-Encoding:Subject:From:
 To:Message-ID:Date:List-Id:Sender;
 b=LHojOjh+wCVHAWxux3ex+k37GLlfGNmDasoXxJZ1+LutJQK7J/GH7nIT4WFf+59kF
 O6H+J+wD0d8SdWoKymnwxbzYelhYuZIHbG2D/Zi2Pzo4o8GiCwxNx+DGb5om7U/T1u
 dhcVUxu+sypsAqscMM+5JsMLhfUhklxBz5lkSjhA=
MIME-Version: 1.0
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: 7bit
Message-ID: <mailman.0.1261031025.22994.python-help@python.org>
Precedence: bulk
X-BeenThere: python-help@python.org
X-Mailman-Version: 2.1.12
List-Id: Expert volunteers answer Python-related questions
 <python-help.python.org>
X-List-Administrivia: yes
Errors-To: mailman-bounces@python.org
X-Pobox-Pass: mailman-bounces@python.org is whitelisted
X-Spambayes-Evidence: '*H*': 0.75; '*S*': 0.00; 'convenience,': 0.16;
 'for:': 0.16; 'from:addr:python.org': 0.16; 'list:': 0.16;
 'message-id:@python.org': 0.16; 'request.': 0.16; 'subject:Help': 0.16;
 'subject:Python': 0.16; 'visit:': 0.16; 'email addr:python.org': 0.23;
 'url:org': 0.28; 'url-ip:82.94.164/24': 0.29; 'url-ip:82.94/16': 0.29;
 'url-ip:82/8': 0.29; 'url:python': 0.29; 'header:Received:8': 0.34;
 'mailing': 0.35; 'sender:addr:python.org': 0.35;
 'url-ip:82.94.164.166/32': 0.35; 'url:mail': 0.35; 'subject:-': 0.35;
 'received:org': 0.36; 'list': 0.37; 'charset:us-ascii': 0.38;
 'received:82': 0.38; 'received:82.94': 0.38; 'received:82.94.164': 0.38;
 'received:82.94.164.166': 0.38; 'received:albatross.python.org': 0.38;
 'received:mail.python.org': 0.38; 'received:python.org': 0.38;
 'received:64': 0.73; 'received:64.74': 0.78; 'received:64.74.157': 0.78;
 'received:64.74.157.51': 0.80; 'received:sienna.pobox.com': 0.82;
 'email addr:hotmail.com': 0.84; 'request': 0.91
From: python-help-owner@python.org
Sender: mailman-bounces@python.org
To: python-help-owner@python.org
Subject: New subscription request to list Python-Help from
 lord_korean@hotmail.com
Date: Thu, 17 Dec 2009 07:23:45 +0100
X-Spambayes-Classification: ham; 0.13

Your authorization is required for a mailing list subscription request
approval:

    For:  lord_korean@hotmail.com
    List: python-help@python.org

At your convenience, visit:

    http://mail.python.org/mailman/admindb/python-help
	
to process the request.

From SRS0=GBC3=ID=python.org=new-bugs-announce-bounces+skip=pobox.com@bounce2.pobox.com  Thu Dec 17 02:35:56 2009
X-VM-v5-Data: ([nil nil nil nil nil nil nil nil nil]
	["2302" "Thursday" "17" "December" "2009" "08:35:37" "+0000" "Case Van Horsen" "report@bugs.python.org" nil "74" "[New-bugs-announce] [issue7528] Provide PyLong_AsLongAndOverflow compatibility to Python	2.x" "^From:" nil nil "12" nil "[New-bugs-announce] [issue7528] Provide PyLong_AsLongAndOverflow compatibility to Python 2.x" nil nil nil nil nil nil nil nil]
	nil)
Delivered-To: skip.montanaro@gmail.com
Received: from pop.gmail.com
 by montanaro.dyndns.org with POP3 (fetchmail-6.3.11)
 for <skip@localhost> (single-drop); Thu, 17 Dec 2009 02:35:56 -0600 (CST)
Received: by 10.216.54.195 with SMTP id i45cs123224wec;
 Thu, 17 Dec 2009 00:35:46 -0800 (PST)
Received: by 10.224.20.144 with SMTP id f16mr1438280qab.220.1261038945154;
 Thu, 17 Dec 2009 00:35:45 -0800 (PST)
Return-Path: <SRS0=GBC3=ID=python.org=new-bugs-announce-bounces+skip=pobox.com@bounce2.pobox.com>
Received: from gold.pobox.com (gold.pobox.com [208.72.237.26])
 by mx.google.com with ESMTP id 41si4222413qyk.65.2009.12.17.00.35.43;
 Thu, 17 Dec 2009 00:35:44 -0800 (PST)
Received-SPF: pass (google.com: domain of
 SRS0=GBC3=ID=python.org=new-bugs-announce-bounces+skip=pobox.com@bounce2.pobox.com
 designates 208.72.237.26 as permitted sender) client-ip=208.72.237.26; 
Authentication-Results: mx.google.com; spf=pass (google.com: domain of
 SRS0=GBC3=ID=python.org=new-bugs-announce-bounces+skip=pobox.com@bounce2.pobox.com
 designates 208.72.237.26 as permitted sender)
 smtp.mail=SRS0=GBC3=ID=python.org=new-bugs-announce-bounces+skip=pobox.com@bounce2.pobox.com;
 dkim=pass header.i=@python.org
Received: from gold.pobox.com (localhost [127.0.0.1])
 by gold.pobox.com (Postfix) with ESMTP id 5CEC34123B3
 for <skip.montanaro@gmail.com>; Thu, 17 Dec 2009 03:35:43 -0500 (EST)
Delivered-To: skip@pobox.com
X-Pobox-Orig-Sender: <new-bugs-announce-bounces+skip=pobox.com@python.org>
X-Pobox-Delivery-ID: 2A141BDA-EAE7-11DE-B958-A487CF92AC8C-00107187!gold.pobox.com
X-Original-To: new-bugs-announce@python.org
x-pobox-client-address: 82.94.164.166
x-pobox-client-name: mail.python.org
Received: from mail.python.org (mail.python.org [82.94.164.166]) by
 gold.pobox.com (Postfix) with ESMTP id CC0794125A0 for <skip@pobox.com>; Thu,
 17 Dec 2009 03:35:42 -0500 (EST)
Received: from albatross.python.org (localhost.localdomain [127.0.0.1]) by
 mail.python.org (Postfix) with ESMTP id 0938AF380 for <skip@pobox.com>; Thu,
 17 Dec 2009 09:35:42 +0100 (CET)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=python.org; s=200901;
 t=1261038942; bh=tgs/0ORSkNLsW4CdbDBPiqA9A317DcFyzgSz7VKa7kQ=;
 h=MIME-Version:To:From:Date:Message-Id:In-Reply-To:Subject:Reply-To:
 List-Id:List-Unsubscribe:List-Archive:List-Post:List-Help:
 List-Subscribe:Content-Type:Content-Transfer-Encoding:Sender;
 b=TXYA9Zt/pvU3arnmf2S58UzLwBPrxXmigeiE2tJwyDi5XPp1F3dfgFLu2tHVKMqYy
 AfqsUlCSlk1vLj+oD2cj5wCyoRKjBqQdF7yyXbEnHyIzZ9GP8c7nCk+SsAthRGS6XX
 mGDEy3JKduNXGtYEZmc8U4UsElUHWQKk9RbIFZtI=
Delivered-To: new-bugs-announce@mail.python.org
Received: from albatross.python.org (localhost.localdomain [127.0.0.1]) by
 mail.python.org (Postfix) with ESMTP id 9DEACF36A for
 <new-bugs-announce@python.org>; Thu, 17 Dec 2009 09:35:37 +0100 (CET)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=python.org; s=200901;
 t=1261038937; i=@python.org; bh=lk9DI6FtqmpZGg/aPuayst6cI7DxD/Bwa6md9xBaK/s=; 
 h=MIME-Version:Content-Type:Subject:To:From:Date:Reply-To:
 Message-Id:In-Reply-To:Content-Transfer-Encoding;
 b=NQc1Je11DM1VC42dbRHhWK/PR67fLMD0Btb00HPgveQw/dRmccF51s/eYBCSRvTKj
 JOugURw82UrNG+TGvu5ZfTz9Ni/nyAcFH34OzSBFPl89TqHieucEd4KeW+Yq4QuCRe
 Uob2UbeTew8rHsxvS9zU6A4unpnCEJv03QvtmuRY=
X-Spam-Status: OK 0.001
X-Spam-Evidence: '*H*': 1.00; '*S*': 0.00; 'subject:Python': 0.02;
 '----------': 0.03; 'python': 0.05; 'slightly': 0.05; 'type:': 0.09;
 'url:bugs': 0.09; 'subject:] ': 0.15; 'function': 0.15; '#endif': 0.16;
 '2.x': 0.16; '3.x,': 0.16; 'api': 0.16; 'extracted': 0.16; 'frequently.':
 0.16; 'from:addr:bugs.python.org': 0.16; 'from:addr:report': 0.16;
 'message-id:@psf.upfronthosting.co.za': 0.16; 'nosy:': 0.16;
 'received:10.0.0.1': 0.16; 'received:88.198.142': 0.16;
 'received:88.198.142.26': 0.16; 'received:psf.upfronthosting.co.za': 0.16;
 'received:upfronthosting.co.za': 0.16; 'reply- to:addr:bugs.python.org':
 0.16; 'reply-to:addr:report': 0.16; 'reply-to:name:python tracker': 0.16;
 'tracker': 0.16; 'header:In- Reply-To:1': 0.16; 'possibly': 0.17; '(and':
 0.18; 'like:': 0.20; 'code': 0.21; 'looks': 0.22; 'convert': 0.23;
 'extension': 0.23; 'modules': 0.25; 'stuff': 0.25; "i'm": 0.26; 'version':
 0.26; "i've": 0.27; 'adding': 0.27; 'defined': 0.27; 'example': 0.29;
 'authors': 0.29; 'began': 0.29; 'title:': 0.29; 'else': 0.29; 'subject:[':
 0.29; 'open': 0.30; 'either': 0.34; 'file': 0.35; 'but': 0.35; 'van': 0.35;
 'received:10.0.0': 0.36; 'same': 0.36; 'functions,': 0.37; 'skip:p 30': 0.37; 
 'using': 0.37; 'url:python': 0.38; 'skip:_ 30': 0.38; 'url:org': 0.39;
 'possible': 0.40; 'use': 0.40; 'faster': 0.61; 'favor': 0.61; 'successfully':
 0.61; 'providing': 0.63; 'provides': 0.63; 'subject:skip:c 10': 0.63;
 'attached': 0.64; 'header:Reply-To:1': 0.74; 'willing': 0.74; 'subject:
 \n\t': 0.81; '2.7': 0.84; 'components:': 0.84; 'messages:': 0.84;
 'subject:skip:P 20': 0.84; 'temp': 0.84
Received: from localhost.localdomain (HELO mail.python.org) (127.0.0.1) by
 albatross.python.org with SMTP; 17 Dec 2009 09:35:37 +0100
Received: from psf.upfronthosting.co.za (bugs.python.org [88.198.142.26]) by
 mail.python.org (Postfix) with ESMTP for <new-bugs-announce@python.org>; Thu,
 17 Dec 2009 09:35:37 +0100 (CET)
Received: from psf.upfronthosting.co.za (localhost [10.0.0.1]) by
 psf.upfronthosting.co.za (Postfix) with ESMTP id 4D0F4785A2 for
 <new-bugs-announce@python.org>; Thu, 17 Dec 2009 09:35:37 +0100 (CET)
MIME-Version: 1.0
Precedence: bulk
X-Roundup-Name: Python tracker
X-Roundup-Loop: hello
X-Roundup-Version: 1.4.10
Message-Id: <1261038937.25.0.365277054713.issue7528@psf.upfronthosting.co.za>
X-Roundup-issue-status: open
X-Roundup-issue-type: feature request
X-Roundup-issue-severity: normal
X-Roundup-issue-versions: Python 2.7
X-Roundup-issue-components: Extension Modules
In-Reply-To: <1261038937.25.0.365277054713.issue7528@psf.upfronthosting.co.za>
X-BeenThere: new-bugs-announce@python.org
X-Mailman-Version: 2.1.12
List-Id: List for new Python bug reports <new-bugs-announce.python.org>
List-Unsubscribe: <http://mail.python.org/mailman/options/new-bugs-announce>, 
 <mailto:new-bugs-announce-request@python.org?subject=unsubscribe>
List-Archive: <http://mail.python.org/pipermail/new-bugs-announce>
List-Post: <mailto:new-bugs-announce@python.org>
List-Help: <mailto:new-bugs-announce-request@python.org?subject=help>
List-Subscribe: <http://mail.python.org/mailman/listinfo/new-bugs-announce>,
 <mailto:new-bugs-announce-request@python.org?subject=subscribe>
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: 7bit
Errors-To: new-bugs-announce-bounces+skip=pobox.com@python.org
X-Spambayes-Evidence: '*H*': 0.97; '*S*': 0.00; 'header:In-Reply-To:1': 0.03;
 'code': 0.04; 'additional': 0.09; 'case': 0.09; 'found': 0.09; "i'm": 0.09;
 'provides': 0.09; 'skip:_ 40': 0.09; 'adding': 0.16; 'defined': 0.16;
 'directory.': 0.16; 'etc.': 0.16; 'example': 0.16; 'faster': 0.16;
 'possible': 0.16; 'python': 0.16; 'several': 0.16; 'skip:_ 30': 0.16;
 'status:': 0.16; 'subject:Python': 0.16; 'subject:announce': 0.16;
 'temp': 0.16; 'version': 0.16; 'header:Received:11': 0.22; 'either': 0.23;
 'email addr:python.org': 0.23; 'url:listinfo': 0.23; 'but': 0.26;
 'subject:] ': 0.26; 'url:org': 0.28; 'also': 0.29;
 'received:208.72.237.26': 0.29; 'received:gold.pobox.com': 0.29;
 'url-ip:82.94.164/24': 0.29; 'url-ip:82.94/16': 0.29; 'url-ip:82/8': 0.29;
 'url:python': 0.29; "i've": 0.30; 'than': 0.30; 'their': 0.30;
 'received:208': 0.33; 'received:208.72': 0.33; 'received:208.72.237': 0.33;
 'mailing': 0.35; 'sender:addr:python.org': 0.35;
 'url-ip:82.94.164.166/32': 0.35; 'url:mail': 0.35; 'subject:-': 0.35;
 'received:org': 0.36; 'subject:[': 0.36; 'list': 0.37; 'was': 0.37;
 'charset:us-ascii': 0.38; 'received:82': 0.38; 'received:82.94': 0.38;
 'received:82.94.164': 0.38; 'received:82.94.164.166': 0.38;
 'received:albatross.python.org': 0.38; 'received:mail.python.org': 0.38;
 'received:python.org': 0.38; 'skip:i 10': 0.38; 'header:Reply-To:1': 0.66;
 'add': 0.67; 'file': 0.67; 'skip:p 20': 0.67; 'skip:d 10': 0.73;
 'available': 0.84; 'called': 0.84; 'fragment': 0.84; 'function': 0.84;
 'looks': 0.84; 'received:10.0': 0.84; 'skip:i 20': 0.84; 'use.': 0.84;
 'wanted': 0.84; 'accept': 0.91; 'attached': 0.91; 'request': 0.91
From: Case Van Horsen <report@bugs.python.org>
Sender: new-bugs-announce-bounces+skip=pobox.com@python.org
To: new-bugs-announce@python.org
Subject: [New-bugs-announce] [issue7528] Provide PyLong_AsLongAndOverflow
 compatibility to Python	2.x
Date: Thu, 17 Dec 2009 08:35:37 +0000
Reply-To: Python tracker <report@bugs.python.org>
X-Spambayes-Classification: ham; 0.01


New submission from Case Van Horsen <casevh@gmail.com>:

When I ported gmpy to Python 3.x, I began to use
PyLong_AsLongAndOverflow frequently. I found the code to slightly faster
and cleaner than using PyLong_AsLong and checking for overflow. I had
several code fragments that looked like:

#if PY_MAJOR_VERSION == 2
    if(PyInt_Check(b)) {
        temp = PyInt_AS_LONG(b));
        Do stuff with temp.
    }
#endif
    if(PyLong_Check(b)) {
#if PY_MAJOR_VERSION == 3
        temp = PyLong_AsLongAndOverflow(b, &overflow);
        if(overflow) {
#else
        temp = PyLong_AsLong(b);
        if(PyErr_Occurred()) {
            PyErr_Clear();
#endif
            Convert b to an mpz.
        } else {
            Do stuff with temp.
        }
    }

I wanted to use the PyLong_AsLongAndOverflow method with Python 2.x so I
extracted the code for PyLong_AsLongAndOverflow, tweeked it to accept
either PyInt or PyLong, and called it PyIntOrLong_AsLongAndOverflow. I
also defined PyIntOrLong_Check.

The same code fragment now looks like:

    if(PyIntOrLong_Check(b)) {
        temp = PyIntOrLong_AsLongAndOverflow(b, &overflow);
        if(overflow) {
            Convert b to an mpz.
        } else {
            Do stuff with temp.
        }
    }

Is it possible to include a py3intcompat.c file with Python 2.7 that
provides this function (and possibly others) for extension authors to
include with their extension? A previous example is pymemcompat.h which
was made available in the Misc directory.

I'm specifically not in favor of adding it to the Python 2.7 API but
just in providing a file for extension authors to use. I've attached a
initial version that compiles successfully with Python 2.4+.

I'm willing to add additional functions, documentation, etc.

----------
components: Extension Modules
messages: 96505
nosy: casevh
severity: normal
status: open
title: Provide PyLong_AsLongAndOverflow compatibility to Python 2.x
type: feature request
versions: Python 2.7

_______________________________________
Python tracker <report@bugs.python.org>
<http://bugs.python.org/issue7528>
_______________________________________
_______________________________________________
New-bugs-announce mailing list
New-bugs-announce@python.org
http://mail.python.org/mailman/listinfo/new-bugs-announce

From SRS0=GBC3=ID=python.org=new-bugs-announce-bounces+skip=pobox.com@bounce2.pobox.com  Thu Dec 17 06:42:42 2009
X-VM-v5-Data: ([nil nil nil nil nil nil nil nil nil]
	["1305" "Thursday" "17" "December" "2009" "12:40:49" "+0000" "Stefan Schwarzburg" "report@bugs.python.org" nil "38" "[New-bugs-announce] [issue7530] doc of multiprocessing.managers is wrong (server_forever)" "^From:" nil nil "12" nil "[New-bugs-announce] [issue7530] doc of multiprocessing.managers is wrong (server_forever)" nil nil nil nil nil nil nil nil]
	nil)
Delivered-To: skip.montanaro@gmail.com
Received: from pop.gmail.com
 by montanaro.dyndns.org with POP3 (fetchmail-6.3.11)
 for <skip@localhost> (single-drop); Thu, 17 Dec 2009 06:42:42 -0600 (CST)
Received: by 10.216.54.195 with SMTP id i45cs136215wec;
 Thu, 17 Dec 2009 04:41:41 -0800 (PST)
Received: by 10.220.124.38 with SMTP id s38mr631111vcr.96.1261053700280;
 Thu, 17 Dec 2009 04:41:40 -0800 (PST)
Return-Path: <SRS0=GBC3=ID=python.org=new-bugs-announce-bounces+skip=pobox.com@bounce2.pobox.com>
Received: from maroon.pobox.com (maroon.pobox.com [208.72.237.40])
 by mx.google.com with ESMTP id 6si146664vws.95.2009.12.17.04.41.38;
 Thu, 17 Dec 2009 04:41:39 -0800 (PST)
Received-SPF: pass (google.com: domain of
 SRS0=GBC3=ID=python.org=new-bugs-announce-bounces+skip=pobox.com@bounce2.pobox.com
 designates 208.72.237.40 as permitted sender) client-ip=208.72.237.40; 
Authentication-Results: mx.google.com; spf=pass (google.com: domain of
 SRS0=GBC3=ID=python.org=new-bugs-announce-bounces+skip=pobox.com@bounce2.pobox.com
 designates 208.72.237.40 as permitted sender)
 smtp.mail=SRS0=GBC3=ID=python.org=new-bugs-announce-bounces+skip=pobox.com@bounce2.pobox.com;
 dkim=pass header.i=@python.org
Received: from maroon.pobox.com (localhost [127.0.0.1])
 by maroon.pobox.com (Postfix) with ESMTP id 72B6A415CD9
 for <skip.montanaro@gmail.com>; Thu, 17 Dec 2009 07:41:38 -0500 (EST)
Delivered-To: skip@pobox.com
X-Pobox-Orig-Sender: <new-bugs-announce-bounces+skip=pobox.com@python.org>
X-Pobox-Delivery-ID: 8469700E-EB09-11DE-A170-8D4646CB39D0-00107187!maroon.pobox.com
X-Original-To: new-bugs-announce@python.org
x-pobox-client-address: 82.94.164.166
x-pobox-client-name: mail.python.org
Received: from mail.python.org (mail.python.org [82.94.164.166]) by
 maroon.pobox.com (Postfix) with ESMTP id BBE22415E06 for <skip@pobox.com>;
 Thu, 17 Dec 2009 07:41:08 -0500 (EST)
Received: from albatross.python.org (localhost.localdomain [127.0.0.1]) by
 mail.python.org (Postfix) with ESMTP id BEDA7F34D for <skip@pobox.com>; Thu,
 17 Dec 2009 13:41:00 +0100 (CET)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=python.org; s=200901;
 t=1261053660; bh=uNtlmw7oiUUfe/bBSLZ34kiV8lNBLZNiLHrOX1iIVoU=;
 h=MIME-Version:To:From:Date:Message-Id:In-Reply-To:Subject:Reply-To:
 List-Id:List-Unsubscribe:List-Archive:List-Post:List-Help:
 List-Subscribe:Content-Type:Content-Transfer-Encoding:Sender;
 b=fczziluM4toZW68wVd6vYEFlCyw5nYqSSWkiw2M764NdQlZsO/bzGgjoj+kjlgvt6
 0lNl4qa+ai43X9yhc9Yt7XPSl3yp024svfIuYHrKTnt+2FbKEDziW3dYnolhrXIQgl
 z+oIdorTcVg+hVp3LhzA+dMtfZxBecL5oJDx7VtQ=
Delivered-To: new-bugs-announce@mail.python.org
Received: from albatross.python.org (localhost.localdomain [127.0.0.1]) by
 mail.python.org (Postfix) with ESMTP id 4BDBCF2E2 for
 <new-bugs-announce@python.org>; Thu, 17 Dec 2009 13:40:49 +0100 (CET)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=python.org; s=200901;
 t=1261053649; i=@python.org; bh=E2HQmGLCu5zySFqfOo+o0V/dH3hAl2Pj8kdB+wD+TkU=; 
 h=MIME-Version:Content-Type:Subject:To:From:Date:Reply-To:
 Message-Id:In-Reply-To:Content-Transfer-Encoding;
 b=HK5IPQhC30uJDj5wkiGvduetaAQLzd188bf8uwXO4yb0J8KMyhrIiHokYt8B1JKet
 HgPzq7UdBGN9Ofefo4Jtw+D6b1WgqXGrN3K2XtXO7Xh0HQOqTNksvPgXs9pU/PoEDo
 +pcqy8il2uXKaFFUy+48yGj2/ZKD4LoFi2VipOCc=
X-Spam-Status: OK 0.000
X-Spam-Evidence: '*H*': 1.00; '*S*': 0.00; '----------': 0.03; 'object':
 0.03; 'python': 0.05; 'url:library': 0.07; 'subject:wrong': 0.09; 'type:':
 0.09; 'url:bugs': 0.09; 'subject:] ': 0.15; '2.6': 0.16;
 'from:addr:bugs.python.org': 0.16; 'from:addr:report': 0.16;
 'message-id:@psf.upfronthosting.co.za': 0.16; 'nosy:': 0.16;
 'received:10.0.0.1': 0.16; 'received:88.198.142': 0.16;
 'received:88.198.142.26': 0.16; 'received:psf.upfronthosting.co.za': 0.16;
 'received:upfronthosting.co.za': 0.16; 'reply- to:addr:bugs.python.org':
 0.16; 'reply-to:addr:report': 0.16; 'reply-to:name:python tracker': 0.16;
 'start()': 0.16; 'stefan': 0.16; 'subject:doc': 0.16; 'tracker': 0.16;
 'header:In-Reply- To:1': 0.16; 'behavior': 0.23; 'section': 0.23; 'server':
 0.24; 'skip:g 20': 0.27; 'title:': 0.29; 'subject:[': 0.29; 'open': 0.30;
 '(e.g.': 0.31; 'description': 0.31; 'there': 0.35; 'received:10.0.0': 0.36;
 'would': 0.36; 'skip:" 10': 0.36; 'url:python': 0.38; 'skip:_ 30': 0.38;
 'url:org': 0.39; 'created': 0.40; 'wrong': 0.62; 'skip:m 20': 0.63;
 'subject:)': 0.63; 'subject:skip:s 10': 0.74; 'header:Reply-To:1': 0.74;
 'components:': 0.84; 'messages:': 0.84; 'refers': 0.93
Received: from localhost.localdomain (HELO mail.python.org) (127.0.0.1) by
 albatross.python.org with SMTP; 17 Dec 2009 13:40:49 +0100
Received: from psf.upfronthosting.co.za (bugs.python.org [88.198.142.26]) by
 mail.python.org (Postfix) with ESMTP for <new-bugs-announce@python.org>; Thu,
 17 Dec 2009 13:40:49 +0100 (CET)
Received: from psf.upfronthosting.co.za (localhost [10.0.0.1]) by
 psf.upfronthosting.co.za (Postfix) with ESMTP id 14E9A78616 for
 <new-bugs-announce@python.org>; Thu, 17 Dec 2009 13:40:49 +0100 (CET)
MIME-Version: 1.0
Precedence: bulk
X-Roundup-Name: Python tracker
X-Roundup-Loop: hello
X-Roundup-Version: 1.4.10
Message-Id: <1261053649.05.0.856911963743.issue7530@psf.upfronthosting.co.za>
X-Roundup-issue-status: open
X-Roundup-issue-type: behavior
X-Roundup-issue-severity: normal
X-Roundup-issue-versions: Python 2.6
X-Roundup-issue-components: Documentation
In-Reply-To: <1261053649.05.0.856911963743.issue7530@psf.upfronthosting.co.za>
X-BeenThere: new-bugs-announce@python.org
X-Mailman-Version: 2.1.12
List-Id: List for new Python bug reports <new-bugs-announce.python.org>
List-Unsubscribe: <http://mail.python.org/mailman/options/new-bugs-announce>, 
 <mailto:new-bugs-announce-request@python.org?subject=unsubscribe>
List-Archive: <http://mail.python.org/pipermail/new-bugs-announce>
List-Post: <mailto:new-bugs-announce@python.org>
List-Help: <mailto:new-bugs-announce-request@python.org?subject=help>
List-Subscribe: <http://mail.python.org/mailman/listinfo/new-bugs-announce>,
 <mailto:new-bugs-announce-request@python.org?subject=subscribe>
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: 7bit
Errors-To: new-bugs-announce-bounces+skip=pobox.com@python.org
X-Spambayes-Evidence: '*H*': 0.91; '*S*': 0.00; 'header:In-Reply-To:1': 0.03;
 'additional': 0.09; 'skip:_ 40': 0.09; 'url-ip:82.94.164.162/32': 0.09;
 'instead': 0.16; 'python': 0.16; 'section': 0.16; 'skip:_ 30': 0.16;
 'status:': 0.16; 'subject:announce': 0.16; 'text': 0.16; 'url:docs': 0.16;
 'header:Received:11': 0.22; 'email addr:python.org': 0.23;
 'url:listinfo': 0.23; 'subject:] ': 0.26; 'url:org': 0.28;
 'received:208.72.237.40': 0.29; 'received:maroon.pobox.com': 0.29;
 'url-ip:82.94.164/24': 0.29; 'url-ip:82.94/16': 0.29; 'url-ip:82/8': 0.29;
 'url:python': 0.29; 'subject: (': 0.30; 'subject:)': 0.30; 'one': 0.32;
 'received:208': 0.33; 'received:208.72': 0.33; 'received:208.72.237': 0.33;
 'about': 0.34; 'would': 0.34; 'mailing': 0.35; 'sender:addr:python.org': 0.35;
 'should': 0.35; 'skip:( 10': 0.35; 'url-ip:82.94.164.166/32': 0.35;
 'url:mail': 0.35; 'subject:-': 0.35; 'received:org': 0.36; 'subject:[': 0.36;
 'skip:s 10': 0.37; 'list': 0.37; 'charset:us-ascii': 0.38; 'received:82': 0.38;
 'received:82.94': 0.38; 'received:82.94.164': 0.38;
 'received:82.94.164.166': 0.38; 'received:albatross.python.org': 0.38;
 'received:mail.python.org': 0.38; 'received:python.org': 0.38;
 'header:Reply-To:1': 0.66; 'skip:d 10': 0.73; 'available': 0.84;
 'created': 0.84; 'description': 0.84; 'received:10.0': 0.84; 'skip:m 30': 0.84;
 'subject:skip:s 10': 0.84; 'skip:m 20': 0.91
From: Stefan Schwarzburg <report@bugs.python.org>
Sender: new-bugs-announce-bounces+skip=pobox.com@python.org
To: new-bugs-announce@python.org
Subject: [New-bugs-announce] [issue7530] doc of multiprocessing.managers is
 wrong (server_forever)
Date: Thu, 17 Dec 2009 12:40:49 +0000
Reply-To: Python tracker <report@bugs.python.org>
X-Spambayes-Classification: ham; 0.04


New submission from Stefan Schwarzburg <stefan.schwarzburg@googlemail.com>:

The documentation of multiprocessing.managers.BaseManager 
(http://docs.python.org/library/multiprocessing.html#module-multiprocessing.managers)
refers to a method "serve_forever". This method is only available at the
server object inside BaseManager (e.g.
manager.get_server().serve_forever() ).

I would rephrase the text to:
"Once created one should call start() or get_server().serve_forever()" 

instead of the current phrase:
"Once created one should call start() or serve_forever()" 

The method description for "serve_forever()" should be removed from
BaseManager, instead there should be an additional section about the
server object returned by get_server().

----------
assignee: georg.brandl
components: Documentation
messages: 96512
nosy: georg.brandl, schwarz
severity: normal
status: open
title: doc of multiprocessing.managers is wrong (server_forever)
type: behavior
versions: Python 2.6

_______________________________________
Python tracker <report@bugs.python.org>
<http://bugs.python.org/issue7530>
_______________________________________
_______________________________________________
New-bugs-announce mailing list
New-bugs-announce@python.org
http://mail.python.org/mailman/listinfo/new-bugs-announce

From SRS0=GBC3=ID=python.org=new-bugs-announce-bounces+skip=pobox.com@bounce2.pobox.com  Thu Dec 17 08:33:59 2009
X-VM-v5-Data: ([nil nil nil nil nil nil nil nil nil]
	["1068" "Thursday" "17" "December" "2009" "14:32:21" "+0000" "John Gardner" "report@bugs.python.org" nil "37" "[New-bugs-announce] [issue7531] datetime.timedelta doc has incorrect output" "^From:" nil nil "12" nil "[New-bugs-announce] [issue7531] datetime.timedelta doc has incorrect output" nil nil nil nil nil nil nil nil]
	nil)
Delivered-To: skip.montanaro@gmail.com
Received: from pop.gmail.com
 by montanaro.dyndns.org with POP3 (fetchmail-6.3.11)
 for <skip@localhost> (single-drop); Thu, 17 Dec 2009 08:33:59 -0600 (CST)
Received: by 10.216.54.195 with SMTP id i45cs143076wec;
 Thu, 17 Dec 2009 06:32:42 -0800 (PST)
Received: by 10.224.57.21 with SMTP id a21mr1644226qah.122.1261060361553;
 Thu, 17 Dec 2009 06:32:41 -0800 (PST)
Return-Path: <SRS0=GBC3=ID=python.org=new-bugs-announce-bounces+skip=pobox.com@bounce2.pobox.com>
Received: from azure.pobox.com (azure.pobox.com [208.72.237.55])
 by mx.google.com with ESMTP id 35si4081371qyk.96.2009.12.17.06.32.40;
 Thu, 17 Dec 2009 06:32:40 -0800 (PST)
Received-SPF: pass (google.com: domain of
 SRS0=GBC3=ID=python.org=new-bugs-announce-bounces+skip=pobox.com@bounce2.pobox.com
 designates 208.72.237.55 as permitted sender) client-ip=208.72.237.55; 
Authentication-Results: mx.google.com; spf=pass (google.com: domain of
 SRS0=GBC3=ID=python.org=new-bugs-announce-bounces+skip=pobox.com@bounce2.pobox.com
 designates 208.72.237.55 as permitted sender)
 smtp.mail=SRS0=GBC3=ID=python.org=new-bugs-announce-bounces+skip=pobox.com@bounce2.pobox.com;
 dkim=pass header.i=@python.org
Received: from azure.pobox.com (localhost [127.0.0.1])
 by azure.pobox.com (Postfix) with ESMTP id C2DCF4137B7
 for <skip.montanaro@gmail.com>; Thu, 17 Dec 2009 09:32:39 -0500 (EST)
Delivered-To: skip@pobox.com
X-Pobox-Orig-Sender: <new-bugs-announce-bounces+skip=pobox.com@python.org>
X-Pobox-Delivery-ID: 07388556-EB19-11DE-9F00-EB32B5C8119A-00107187!azure.pobox.com
X-Original-To: new-bugs-announce@python.org
x-pobox-client-address: 82.94.164.166
x-pobox-client-name: mail.python.org
Received: from mail.python.org (mail.python.org [82.94.164.166]) by
 azure.pobox.com (Postfix) with ESMTP id 370534137A6 for <skip@pobox.com>;
 Thu, 17 Dec 2009 09:32:37 -0500 (EST)
Received: from albatross.python.org (localhost.localdomain [127.0.0.1]) by
 mail.python.org (Postfix) with ESMTP id 05953F358 for <skip@pobox.com>; Thu,
 17 Dec 2009 15:32:37 +0100 (CET)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=python.org; s=200901;
 t=1261060357; bh=TS8rI+QE9Z5ghTbDhk9sIIAUKYwdnlpTACm6mFCOSnw=;
 h=MIME-Version:To:From:Date:Message-Id:In-Reply-To:Subject:Reply-To:
 List-Id:List-Unsubscribe:List-Archive:List-Post:List-Help:
 List-Subscribe:Content-Type:Content-Transfer-Encoding:Sender;
 b=Fslz7gQLIuxciAXBj182gDR/QEPERTMiL6zreMFj6DY9LGtlBSXGjaoFyAYbS0RC+
 gynfwTaXndnvRgtzirXyklWYnCl8Z4Uh20O9wqZ7KJDtQemmm6Yu7F+3RmtB0c5mkF
 o4ej94Aa4yBmPYnvj70MFTkKtTlS7uVdq4HT5Fhs=
Delivered-To: new-bugs-announce@mail.python.org
Received: from albatross.python.org (localhost.localdomain [127.0.0.1]) by
 mail.python.org (Postfix) with ESMTP id B45CEF1BE for
 <new-bugs-announce@python.org>; Thu, 17 Dec 2009 15:32:25 +0100 (CET)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=python.org; s=200901;
 t=1261060345; i=@python.org; bh=B0p1v9FExvOGaBKxJ9+tNI+fnDyNACpVpWKlwFLKBGM=; 
 h=MIME-Version:Content-Type:Subject:To:From:Date:Reply-To:
 Message-Id:In-Reply-To:Content-Transfer-Encoding;
 b=UOQYMbzf6M+kRur/yyMHg6XgZDfx72f9QWaorFvgNJt1njC8nvzPGNZMoAxutXEHM
 QFglULpZUtsqIxNy8QR22otWDla1dDKk+g5ch0c6jG6f8CSsyX0673ICFzu8KTNLYu
 xhgCfhiX2WNKs13XRmmARnPS1f0zsD46MY+C8Vl8=
X-Spam-Status: OK 0.000
X-Spam-Evidence: '*H*': 1.00; '*S*': 0.00; '----------': 0.03; 'python':
 0.05; 'output': 0.05; 'be:': 0.07; 'subject:output': 0.09; 'type:': 0.09;
 'url:bugs': 0.09; 'subject:] ': 0.15; '2.6,': 0.16;
 'from:addr:bugs.python.org': 0.16; 'from:addr:report': 0.16;
 'message-id:@psf.upfronthosting.co.za': 0.16; 'nosy:': 0.16; 'output.': 0.16; 
 'received:10.0.0.1': 0.16; 'received:88.198.142': 0.16;
 'received:88.198.142.26': 0.16; 'received:psf.upfronthosting.co.za': 0.16;
 'received:upfronthosting.co.za': 0.16; 'reply- to:addr:bugs.python.org':
 0.16; 'reply-to:addr:report': 0.16; 'reply-to:name:python tracker': 0.16;
 'strange': 0.16; 'subject:doc': 0.16; 'subject:incorrect': 0.16; 'tracker':
 0.16; 'header:In-Reply-To:1': 0.16; 'example:': 0.20; 'behavior': 0.23;
 'subject:skip:d 10': 0.23; 'example': 0.29; 'incorrect': 0.29; 'title:':
 0.29; 'subject:[': 0.29; 'open': 0.30; 'changed': 0.31; '(or': 0.35;
 'received:10.0.0': 0.36; 'seem': 0.36; '>>>': 0.37; 'skip:( 20': 0.37;
 'url:python': 0.38; 'skip:_ 30': 0.38; 'url:org': 0.39; 'wrong': 0.62;
 'subject:has': 0.65; 'years.': 0.70; 'header:Reply-To:1': 0.74;
 'components:': 0.84; 'messages:': 0.84; 'relevant.': 0.84; '365': 0.91
Received: from localhost.localdomain (HELO mail.python.org) (127.0.0.1) by
 albatross.python.org with SMTP; 17 Dec 2009 15:32:25 +0100
Received: from psf.upfronthosting.co.za (bugs.python.org [88.198.142.26]) by
 mail.python.org (Postfix) with ESMTP for <new-bugs-announce@python.org>; Thu,
 17 Dec 2009 15:32:25 +0100 (CET)
Received: from psf.upfronthosting.co.za (localhost [10.0.0.1]) by
 psf.upfronthosting.co.za (Postfix) with ESMTP id 7343578603 for
 <new-bugs-announce@python.org>; Thu, 17 Dec 2009 15:32:21 +0100 (CET)
MIME-Version: 1.0
Precedence: bulk
X-Roundup-Name: Python tracker
X-Roundup-Loop: hello
X-Roundup-Version: 1.4.10
Message-Id: <1261060341.46.0.00177327866162.issue7531@psf.upfronthosting.co.za>
X-Roundup-issue-status: open
X-Roundup-issue-type: behavior
X-Roundup-issue-severity: normal
X-Roundup-issue-versions: Python 2.6, Python 3.0, Python 3.1, Python 2.7
X-Roundup-issue-components: Documentation
In-Reply-To: <1261060341.46.0.00177327866162.issue7531@psf.upfronthosting.co.za>
X-BeenThere: new-bugs-announce@python.org
X-Mailman-Version: 2.1.12
List-Id: List for new Python bug reports <new-bugs-announce.python.org>
List-Unsubscribe: <http://mail.python.org/mailman/options/new-bugs-announce>, 
 <mailto:new-bugs-announce-request@python.org?subject=unsubscribe>
List-Archive: <http://mail.python.org/pipermail/new-bugs-announce>
List-Post: <mailto:new-bugs-announce@python.org>
List-Help: <mailto:new-bugs-announce-request@python.org?subject=help>
List-Subscribe: <http://mail.python.org/mailman/listinfo/new-bugs-announce>,
 <mailto:new-bugs-announce-request@python.org?subject=subscribe>
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: 7bit
Errors-To: new-bugs-announce-bounces+skip=pobox.com@python.org
X-Spambayes-Evidence: '*H*': 0.92; '*S*': 0.00; 'header:In-Reply-To:1': 0.03;
 'also,': 0.07; 'skip:_ 40': 0.09; '(or': 0.16; 'changed': 0.16;
 'comments': 0.16; 'example': 0.16; 'john': 0.16; 'python': 0.16;
 'skip:_ 30': 0.16; 'status:': 0.16; 'subject:announce': 0.16;
 'header:Received:11': 0.22; 'email addr:python.org': 0.23;
 'url:listinfo': 0.23; 'subject:] ': 0.26; 'url:org': 0.28;
 'url-ip:82.94.164/24': 0.29; 'url-ip:82.94/16': 0.29; 'url-ip:82/8': 0.29;
 'url:python': 0.29; 'received:208': 0.33; 'received:208.72': 0.33;
 'received:208.72.237': 0.33; 'mailing': 0.35; 'sender:addr:python.org': 0.35;
 'should': 0.35; 'url-ip:82.94.164.166/32': 0.35; 'url:mail': 0.35;
 'subject:-': 0.35; 'received:org': 0.36; 'subject:[': 0.36; 'list': 0.37;
 'charset:us-ascii': 0.38; 'received:82': 0.38; 'received:82.94': 0.38;
 'received:82.94.164': 0.38; 'received:82.94.164.166': 0.38;
 'received:albatross.python.org': 0.38; 'received:mail.python.org': 0.38;
 'received:python.org': 0.38; 'header:Reply-To:1': 0.66; 'skip:d 10': 0.73;
 'incorrect': 0.84; 'received:10.0': 0.84; 'subject:has': 0.84; 'days': 0.91;
 'package': 0.91; 'these': 0.91
From: John Gardner <report@bugs.python.org>
Sender: new-bugs-announce-bounces+skip=pobox.com@python.org
To: new-bugs-announce@python.org
Subject: [New-bugs-announce] [issue7531] datetime.timedelta doc has incorrect
 output
Date: Thu, 17 Dec 2009 14:32:21 +0000
Reply-To: Python tracker <report@bugs.python.org>
X-Spambayes-Classification: ham; 0.04


New submission from John Gardner <python.20.huxoll@spamgourmet.com>:

The output example for timedelta in datetime package has the wrong 
output for the supplied commands.

For example:
>>> ten_years, ten_years.days // 365
(datetime.timedelta(3650), 10)
should be:
>>> ten_years, ten_years.days 
(datetime.timedelta(3650), 3650)
(or perhaps, days changed to years.

It's very misleading to have these strange numbers as output.

Also, the comments to the right don't seem to be relevant.

----------
assignee: georg.brandl
components: Documentation
messages: 96514
nosy: georg.brandl, huxoll
severity: normal
status: open
title: datetime.timedelta doc has incorrect output
type: behavior
versions: Python 2.6, Python 2.7, Python 3.0, Python 3.1

_______________________________________
Python tracker <report@bugs.python.org>
<http://bugs.python.org/issue7531>
_______________________________________
_______________________________________________
New-bugs-announce mailing list
New-bugs-announce@python.org
http://mail.python.org/mailman/listinfo/new-bugs-announce

From SRS0=HNd0=ID=python.org=python-dev-bounces+skip=pobox.com@bounce2.pobox.com  Wed Dec 16 21:18:18 2009
X-VM-v5-Data: ([nil nil nil nil nil nil nil nil nil]
	["1365" "Thursday" "17" "December" "2009" "12:18:00" "+0900" "Stephen J. Turnbull" "stephen@xemacs.org" nil "27" "Re: [Python-Dev] First draft of \"sysconfig\"" "^From:" nil nil "12" nil "[Python-Dev] First draft of \"sysconfig\"" nil nil nil nil nil nil nil nil]
	nil)
Delivered-To: skip.montanaro@gmail.com
Received: from pop.gmail.com
 by montanaro.dyndns.org with POP3 (fetchmail-6.3.11)
 for <skip@localhost> (single-drop); Wed, 16 Dec 2009 21:18:18 -0600 (CST)
Received: by 10.216.54.195 with SMTP id i45cs111374wec;
 Wed, 16 Dec 2009 19:16:58 -0800 (PST)
Received: by 10.220.127.36 with SMTP id e36mr408304vcs.4.1261019816297;
 Wed, 16 Dec 2009 19:16:56 -0800 (PST)
Return-Path: <SRS0=HNd0=ID=python.org=python-dev-bounces+skip=pobox.com@bounce2.pobox.com>
Received: from sienna.pobox.com (sienna.pobox.com [64.74.157.51])
 by mx.google.com with ESMTP id 34si1745328vws.66.2009.12.16.19.16.54;
 Wed, 16 Dec 2009 19:16:55 -0800 (PST)
Received-SPF: pass (google.com: domain of
 SRS0=HNd0=ID=python.org=python-dev-bounces+skip=pobox.com@bounce2.pobox.com
 designates 64.74.157.51 as permitted sender) client-ip=64.74.157.51; 
Authentication-Results: mx.google.com; spf=pass (google.com: domain of
 SRS0=HNd0=ID=python.org=python-dev-bounces+skip=pobox.com@bounce2.pobox.com
 designates 64.74.157.51 as permitted sender)
 smtp.mail=SRS0=HNd0=ID=python.org=python-dev-bounces+skip=pobox.com@bounce2.pobox.com;
 dkim=pass header.i=@python.org
Received: from sienna.pobox.com (localhost [127.0.0.1])
 by sienna.pobox.com (Postfix) with ESMTP id 94055200095
 for <skip.montanaro@gmail.com>; Wed, 16 Dec 2009 22:16:54 -0500 (EST)
Delivered-To: skip@pobox.com
X-Pobox-Orig-Sender: <python-dev-bounces+skip=pobox.com@python.org>
X-Pobox-Delivery-ID: A06F14EC-EABA-11DE-8F30-8BCF38EE6720-00107187!sienna.pobox.com
X-Original-To: python-dev@python.org
x-pobox-client-address: 82.94.164.166
x-pobox-client-name: mail.python.org
Received: from mail.python.org (mail.python.org [82.94.164.166]) by
 sienna.pobox.com (Postfix) with ESMTP id 1D2D920059A for <skip@pobox.com>;
 Wed, 16 Dec 2009 22:16:54 -0500 (EST)
Received: from albatross.python.org (localhost.localdomain [127.0.0.1]) by
 mail.python.org (Postfix) with ESMTP id 821F6F45F for <skip@pobox.com>; Thu,
 17 Dec 2009 04:16:53 +0100 (CET)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=python.org; s=200901;
 t=1261019813; bh=GMNGZ6lPPjGsyvtA73T4lZGnY7SvpvYoaAlJ1T0Prm0=;
 h=From:To:In-Reply-To:References:Date:Message-ID:MIME-Version:Cc:
 Subject:List-Id:List-Unsubscribe:List-Archive:List-Post:List-Help:
 List-Subscribe:Content-Type:Content-Transfer-Encoding:Sender;
 b=pL6gYnY3p+q2tSyHZwiF0rwkloa+mCE9RYBEu6d8nt6ckNrgOK2DL21TdhKofi2a5
 mvnsFpc3h1OyjcURgyZQ0coeo6xTLNib+LkkWFBo3y/WUw3KiHdLqspOlSLNsWsyfJ
 +BrVG0JmfTDkdiejUZyGE3UG5dDMdAUj1VFxgsFw=
Delivered-To: python-dev@mail.python.org
Received: from albatross.python.org (localhost.localdomain [127.0.0.1]) by
 mail.python.org (Postfix) with ESMTP id 6A801F3AC for
 <python-dev@python.org>; Thu, 17 Dec 2009 04:15:00 +0100 (CET)
X-Spam-Status: OK 0.000
X-Spam-Evidence: '*H*': 1.00; '*S*': 0.00; 'subject:Python': 0.02;
 'libraries': 0.04; 'either.': 0.05; 'writes:': 0.05; 'setuptools': 0.07;
 'subject:: [': 0.07; 'pypi': 0.09; 'received:ac.jp': 0.09; 'subject:] ':
 0.15; 'anyway.': 0.16; 'apparently.': 0.16; 'cc:addr :python-dev': 0.16;
 'crossing': 0.16; 'from:addr:stephen': 0.16; 'from:addr:xemacs.org': 0.16;
 'from:name:stephen j. turnbull': 0.16; 'imo': 0.16;
 'message-id:@uwakimon.sk.tsukuba.ac.jp': 0.16; 'received:130.158': 0.16;
 'received:130.158.97': 0.16; 'received:130.158.99': 0.16;
 'received:130.158.99.156': 0.16; 'received:sk.tsukuba.ac.jp': 0.16;
 'received:tsukuba.ac.jp': 0.16; 'received:uwakimon.sk.tsukuba.ac.jp': 0.16;
 'stupid': 0.16; 'subject:Dev': 0.16; 'subject:draft': 0.16; "weren't": 0.16;
 'header:In-Reply-To:1': 0.16; 'project,': 0.17; 'clearly': 0.19; 'cc:no real
 name:2**0': 0.20; 'that,': 0.23; 'usual': 0.25; 'subject: "': 0.25; "i'm":
 0.26; 'cc:addr:python.org': 0.26; 'problem': 0.27; 'written': 0.27; 'pretty':
 0.28; 'sure.': 0.29; 'user': 0.31; 'nobody': 0.31; 'line': 0.32; 'saying':
 0.32; "there's": 0.34; 'something': 0.34; 'either': 0.34; 'there': 0.35;
 'but': 0.35; 'down': 0.35; 'cc:2**1': 0.35; 'except': 0.35; 'attempts': 0.37; 
 'degree': 0.37; 'coming': 0.37; 'charset:us- ascii': 0.37; 'subject:-': 0.37; 
 'what': 0.39; 'being': 0.39; 'use': 0.40; 'created': 0.40; 'received:jp':
 0.61; 'distribute': 0.64; 'interest': 0.64; 'yourself': 0.65; 'others.':
 0.66; 'product': 0.68; 'received:130': 0.69; 'future': 0.70; '*these': 0.84;
 'buy,': 0.84; 'propose.': 0.84
Received: from localhost.localdomain (HELO mail.python.org) (127.0.0.1) by
 albatross.python.org with SMTP; 17 Dec 2009 04:15:00 +0100
Received: from mtps01.sk.tsukuba.ac.jp (mtps01.sk.tsukuba.ac.jp
 [130.158.97.223]) by mail.python.org (Postfix) with ESMTP for
 <python-dev@python.org>; Thu, 17 Dec 2009 04:14:59 +0100 (CET)
Received: from uwakimon.sk.tsukuba.ac.jp (uwakimon.sk.tsukuba.ac.jp
 [130.158.99.156]) by mtps01.sk.tsukuba.ac.jp (Postfix) with ESMTP id
 3B2E71535AE; Thu, 17 Dec 2009 12:14:54 +0900 (JST)
Received: by uwakimon.sk.tsukuba.ac.jp (Postfix, from userid 1000) id
 E93BD1A2A94; Thu, 17 Dec 2009 12:18:00 +0900 (JST)
In-Reply-To: <22b6fd677f9891bde50c8108bc1c4177@preisshare.net>
References: <94bdd2610912121202l48d39325q6f4cdcd73f972d5c@mail.gmail.com>
 <0a500cc770721944b33036da1cb5b3f3@preisshare.net>
 <4B270548.2090600@gmail.com>
 <e8b797fbaaa6f22cdc43ca843a3a9f83@preisshare.net>
 <4B270AFE.1060505@skippinet.com.au>
 <30a87fe1344a9a8c6aa0e25ee099bb43@preisshare.net>
 <4B270F84.5030802@skippinet.com.au>
 <822785ca33912a9c6656ef6d36ae0be9@preisshare.net>
 <20091215093255.GA13198@laurie.devork>
 <db03dda0ae6182a9a309b70fe79339e5@preisshare.net>
 <4B28C29D.6020400@gmail.com>
 <22b6fd677f9891bde50c8108bc1c4177@preisshare.net>
X-Mailer: VM 8.0.12-devo-585 under 21.5 (beta29) "garbanzo" 1444e28f1a3d
 XEmacs Lucid (x86_64-unknown-linux)
Message-ID: <87hbrq5lw7.fsf@uwakimon.sk.tsukuba.ac.jp>
MIME-Version: 1.0
X-BeenThere: python-dev@python.org
X-Mailman-Version: 2.1.12
Precedence: list
List-Id: Python core developers <python-dev.python.org>
List-Unsubscribe: <http://mail.python.org/mailman/options/python-dev>,
 <mailto:python-dev-request@python.org?subject=unsubscribe>
List-Archive: <http://mail.python.org/pipermail/python-dev>
List-Post: <mailto:python-dev@python.org>
List-Help: <mailto:python-dev-request@python.org?subject=help>
List-Subscribe: <http://mail.python.org/mailman/listinfo/python-dev>,
 <mailto:python-dev-request@python.org?subject=subscribe>
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: 7bit
Errors-To: python-dev-bounces+skip=pobox.com@python.org
X-Spambayes-Evidence: '*H*': 0.87; '*S*': 0.00; 'skip:_ 40': 0.04;
 'built': 0.07; 'subject:: [': 0.07; 'libraries': 0.09; 'understand': 0.09;
 'volunteer': 0.09; 'header:In-Reply-To:1': 0.13; 'support': 0.13;
 'either.': 0.16; 'except': 0.16; 'problem': 0.16; 'project,': 0.16;
 'pypi': 0.16; 'saying': 0.16; 'url:options': 0.16;
 'email addr:python.org': 0.17; "don't": 0.17; 'line': 0.20; 'close': 0.24;
 'created': 0.24; 'needed': 0.24; 'subject:Python': 0.24; 'way': 0.27;
 'list': 0.28; 'mailing': 0.30; 'going': 0.31; 'user': 0.31; 'build': 0.32;
 'david': 0.32; 'degree': 0.32; 'point': 0.32; 'things': 0.32;
 'subject:] ': 0.32; 'url:org': 0.32; 'were': 0.33; 'they': 0.34; 'there': 0.35;
 'what': 0.36; 'already': 0.37; 'done': 0.37; 'down': 0.37; 'last': 0.37;
 'road': 0.37; 'but': 0.37; 'use': 0.39; 'either': 0.39;
 'received:userid': 0.39; 'url:python': 0.39; 'url:%0': 0.61; 'future': 0.61;
 'much': 0.61; 'those': 0.61; 'url:pobox': 0.61; 'url:skip': 0.61;
 'received:sienna.pobox.com': 0.62; 'skip:o 10': 0.64;
 'sender:addr:python.org': 0.68; 'url:%40': 0.69; 'you,': 0.75; 'product': 0.78;
 'attempts': 0.84; 'cc:addr:gmail.com': 0.84; 'interest': 0.84; 'nobody': 0.84;
 'received:jp': 0.84; 'unsubscribe:': 0.84; 'usual': 0.84; 'writes:': 0.84;
 'others.': 0.91
From: "Stephen J. Turnbull" <stephen@xemacs.org>
Sender: python-dev-bounces+skip=pobox.com@python.org
To: David Lyon <david.lyon@preisshare.net>
Cc: Nick Coghlan <ncoghlan@gmail.com>, python-dev@python.org
Subject: Re: [Python-Dev] First draft of "sysconfig"
Date: Thu, 17 Dec 2009 12:18:00 +0900
X-Spambayes-Classification: ham; 0.06

David Lyon writes:

 > I'm not star-gazing, because all these things are already
 > needed and already being done to some degree in some
 > organisations. There's already the libraries on pypi for
 > most of this anyway.

Sure.  But in a volunteer project, it's beg, buy, or build.  Begging
has not worked, and it's not because people don't understand what
you're saying.  Nobody is saying that want you want is stupid or
impossible, either.  It's just that they have created those libraries
you mention, they have built PyPI, they have written distutils and
setuptools and others.  *These work well enough* ... except for you,
apparently.  I have no problem with that, and you're welcome to beg.

But IMO at this point you're coming close to crossing the line from
begging to whining.  There clearly is no interest in going down the
road you propose.  Post a bounty or build it yourself (you were pretty
much done with something last time around, weren't you?), and either
way use the usual channels (eg, PyPI) to distribute the product and
accumulate user interest and support for future attempts at logrolling
to get it into the stdlib.
_______________________________________________
Python-Dev mailing list
Python-Dev@python.org
http://mail.python.org/mailman/listinfo/python-dev
Unsubscribe: http://mail.python.org/mailman/options/python-dev/skip%40pobox.com

From SRS0=4URr=IA=python.org=spambayes-bounces+skip=pobox.com@bounce2.pobox.com  Sun Dec 13 18:37:07 2009
X-VM-v5-Data: ([nil nil nil nil nil nil nil nil nil]
	["1970" "Sunday" "13" "December" "2009" "19:35:45" "-0500" "Mark" "fairlane@springcom.com" nil "47" "[Spambayes] Spambayes log file shows failure and spam not being caught." "^From:" nil nil "12" nil "[Spambayes] Spambayes log file shows failure and spam not being caught." nil nil nil nil nil nil nil nil]
	nil)
Delivered-To: skip.montanaro@gmail.com
Received: from pop.gmail.com
 by montanaro.dyndns.org with POP3 (fetchmail-6.3.11)
 for <skip@localhost> (single-drop); Sun, 13 Dec 2009 18:37:07 -0600 (CST)
Received: by 10.216.0.80 with SMTP id 58cs100760wea;
 Sun, 13 Dec 2009 16:36:06 -0800 (PST)
Received: by 10.229.29.204 with SMTP id r12mr2164161qcc.72.1260750965983;
 Sun, 13 Dec 2009 16:36:05 -0800 (PST)
Return-Path: <SRS0=4URr=IA=python.org=spambayes-bounces+skip=pobox.com@bounce2.pobox.com>
Received: from gold.pobox.com (gold.pobox.com [208.72.237.26])
 by mx.google.com with ESMTP id 32si7504273qyk.18.2009.12.13.16.36.04;
 Sun, 13 Dec 2009 16:36:04 -0800 (PST)
Received-SPF: pass (google.com: domain of
 SRS0=4URr=IA=python.org=spambayes-bounces+skip=pobox.com@bounce2.pobox.com
 designates 208.72.237.26 as permitted sender) client-ip=208.72.237.26; 
Authentication-Results: mx.google.com; spf=pass (google.com: domain of
 SRS0=4URr=IA=python.org=spambayes-bounces+skip=pobox.com@bounce2.pobox.com
 designates 208.72.237.26 as permitted sender)
 smtp.mail=SRS0=4URr=IA=python.org=spambayes-bounces+skip=pobox.com@bounce2.pobox.com;
 dkim=pass header.i=@python.org
Received: from gold.pobox.com (localhost [127.0.0.1])
 by gold.pobox.com (Postfix) with ESMTP id CE494411B73
 for <skip.montanaro@gmail.com>; Sun, 13 Dec 2009 19:36:03 -0500 (EST)
Delivered-To: skip@pobox.com
X-Pobox-Orig-Sender: <spambayes-bounces+skip=pobox.com@python.org>
X-Pobox-Delivery-ID: A8E9A4E4-E848-11DE-91BD-8CD1BD47B7EA-00107187!gold.pobox.com
X-Original-To: spambayes@python.org
x-pobox-client-address: 82.94.164.166
x-pobox-client-name: mail.python.org
Received: from mail.python.org (mail.python.org [82.94.164.166]) by
 gold.pobox.com (Postfix) with ESMTP id 5D91C411B5D for <skip@pobox.com>; Sun,
 13 Dec 2009 19:36:03 -0500 (EST)
Received: from albatross.python.org (localhost.localdomain [127.0.0.1]) by
 mail.python.org (Postfix) with ESMTP id 7942AF16E for <skip@pobox.com>; Mon,
 14 Dec 2009 01:36:02 +0100 (CET)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=python.org; s=200901;
 t=1260750962; bh=/9kXp2ar4zJEs/95a8a9gnx/+vwgIc1dRRPxnwZVgGc=;
 h=Message-ID:Date:From:MIME-Version:To:Subject:List-Id:
 List-Unsubscribe:List-Archive:List-Post:List-Help:List-Subscribe:
 Content-Transfer-Encoding:Content-Type:Sender;
 b=qaW7croTAN6AJ7UL2uDihAg2oODMLDe27JKCQbjWQ5EcbMt3z1piKm2NZhYAS0U4d
 1f7pDiSCLDs6h/8RwSzT5RjmNHmIK4D5ewZjKVP+UhICSgc/5CjAuBRp8Nhp9hyp1M
 1+tDsVhCHamN7scjMRc8XJa1+Lgk68T30acuPBeo=
Delivered-To: spambayes@mail.python.org
Received: from albatross.python.org (localhost.localdomain [127.0.0.1]) by
 mail.python.org (Postfix) with ESMTP id 0F84FF09C for <spambayes@python.org>; 
 Mon, 14 Dec 2009 01:35:49 +0100 (CET)
X-Spam-Status: OK 0.029
X-Spam-Evidence: '*H*': 0.94; '*S*': 0.00; 'last):': 0.07; 'traceback': 0.07; 
 '110,': 0.09; 'subject:log': 0.09; 'assert': 0.16;
 'main()': 0.16; 'skip:"
 50': 0.16; 'spambayes.': 0.16; 'subject:Spambayes': 0.16; 'token': 0.16;
 'bit': 0.24; "i've": 0.27; '(most': 0.29; 'subject:spam': 0.29;
 'header:User-Agent:1': 0.30; 'to:addr:spambayes': 0.31; 'issue': 0.32;
 'line': 0.32; 'file': 0.35; 'skip:/ 40': 0.37; 'skip:s 20': 0.39; 'subject:':
 0.40; 'failure': 0.61; 'showing': 0.61; 'hundred': 0.61; 'clues': 0.66;
 'probability': 0.66; 'anything,': 0.84; 'succeeded': 0.84
Received: from localhost.localdomain (HELO mail.python.org) (127.0.0.1) by
 albatross.python.org with SMTP; 14 Dec 2009 01:35:48 +0100
Received: from qsmtp5.america.net (qsmtp5.america.net [69.60.160.248]) (using
 TLSv1 with cipher DHE-RSA-AES256-SHA (256/256 bits)) (No client
 certificate requested) by mail.python.org (Postfix) with ESMTPS for
 <spambayes@python.org>; Mon, 14 Dec 2009 01:35:48 +0100 (CET)
Received: from [72.35.57.25] (helo=[192.168.123.134]) by qsmtp5.america.net
 with esmtp (Exim 4.68) (envelope-from <fairlane@springcom.com>) id
 1NJyug-0000jt-IC for spambayes@python.org; Sun, 13 Dec 2009 19:35:46 -0500
Message-ID: <4B258861.2020507@springcom.com>
User-Agent: Thunderbird 2.0.0.23 (Windows/20090812)
MIME-Version: 1.0
X-BeenThere: spambayes@python.org
X-Mailman-Version: 2.1.12
Precedence: list
List-Id: Discussion list for Pythonic Bayesian classifier
 <spambayes.python.org>
List-Unsubscribe: <http://mail.python.org/mailman/options/spambayes>,
 <mailto:spambayes-request@python.org?subject=unsubscribe>
List-Archive: <http://mail.python.org/pipermail/spambayes>
List-Post: <mailto:spambayes@python.org>
List-Help: <mailto:spambayes-request@python.org?subject=help>
List-Subscribe: <http://mail.python.org/mailman/listinfo/spambayes>,
 <mailto:spambayes-request@python.org?subject=subscribe>
Content-Transfer-Encoding: 7bit
Content-Type: text/plain; charset="us-ascii"; Format="flowed"
Errors-To: spambayes-bounces+skip=pobox.com@python.org
X-Spambayes-Evidence: '*H*': 0.95; '*S*': 0.00; 'skip:_ 40': 0.04;
 'skip:" 20': 0.07; 'skip:_ 10': 0.07; 'bit': 0.09; 'main': 0.09;
 'skip:/ 40': 0.09; 'skip:s 30': 0.09; 'dec': 0.16; 'failure': 0.16;
 'subject:not': 0.16; 'sun': 0.16; 'token': 0.16; 'true)': 0.16;
 'url-ip:216.34.181/24': 0.16; 'url-ip:216.34/16': 0.16; 'url:sf': 0.16;
 'email addr:python.org': 0.17; 'line': 0.20; 'several': 0.20; 'issue': 0.24;
 'call': 0.30; "i've": 0.32; 'seen': 0.32; 'subject:': 0.32; 'subject:] ': 0.32;
 'url:org': 0.32; 'skip:s 20': 0.36; 'data': 0.37;
 'received:(no client certificate requested)': 0.37; 'subject:[': 0.37;
 'header:Received:11': 0.38; 'log': 0.39; 'url-ip:216/8': 0.39;
 'url:python': 0.39; '(1)': 0.61; 'before': 0.65; 'skip:c 10': 0.67;
 'sender:addr:python.org': 0.68; 'return': 0.69; 'special': 0.69;
 'subject:\n ': 0.70; 'anything,': 0.84; 'catch': 0.84; 'messages.': 0.84;
 'spam': 0.84; 'subject:shows': 0.84; 'hundred': 0.91; 'training': 0.93
From: Mark <fairlane@springcom.com>
Sender: spambayes-bounces+skip=pobox.com@python.org
To: spambayes@python.org
Subject: [Spambayes] Spambayes log file shows failure and spam not being
 caught.
Date: Sun, 13 Dec 2009 19:35:45 -0500
X-Spambayes-Classification: ham; 0.03

The following is a bit of my procmail log file showing an issue with 
spambayes.
I've not seen the filter reliably catch anything, in spite of training 
on several hundred messages. 
Any ideas?

Traceback (most recent call last):
  File "/usr/bin/sb_filter.py", line 283, in <module>
    main()
  File "/usr/bin/sb_filter.py", line 274, in main
    action(msg)
  File "/usr/bin/sb_filter.py", line 192, in filter
    return self.h.filter(msg)
  File "/usr/lib/python2.6/site-packages/spambayes/hammie.py", line 156, 
in filter
    debug, train)
  File "/usr/lib/python2.6/site-packages/spambayes/hammie.py", line 110, 
in score_and_filter
    prob, clues = self._scoremsg(msg, True)
  File "/usr/lib/python2.6/site-packages/spambayes/hammie.py", line 39, 
in _scoremsg
    return self.bayes.spamprob(tokenize(msg), evidence)
  File "/usr/lib/python2.6/site-packages/spambayes/classifier.py", line 
196, in chi2_spamprob
    clues = self._getclues(wordstream)
  File "/usr/lib/python2.6/site-packages/spambayes/classifier.py", line 
499, in _getclues
    tup = self._worddistanceget(word)
  File "/usr/lib/python2.6/site-packages/spambayes/classifier.py", line 
514, in _worddistanceget
    prob = self.probability(record)
  File "/usr/lib/python2.6/site-packages/spambayes/classifier.py", line 
317, in probability
    assert spamcount <= nspam, "Token seen in more spam than spam trained."
AssertionError: Token seen in more spam than spam trained.
procmail: Program failure (1) of "/usr/bin/sb_filter.py"
procmail: Rescue of unfiltered data succeeded
 From mark  Sun Dec 13 19:27:22 2009
 Subject: For fairlane special 80% OFF on Pfizer
  Folder: 
/home/mark/Maildir/new/1260750442.15020_2.cyclops                2158

_______________________________________________
SpamBayes@python.org
http://mail.python.org/mailman/listinfo/spambayes
Info/Unsubscribe: http://mail.python.org/mailman/listinfo/spambayes
Check the FAQ before asking: http://spambayes.sf.net/faq.html

From SRS0=uIp3=KZ=secure3.apollohosting.com=anonymous@bounce2.pobox.com  Thu May 24 05:39:26 2007
X-VM-v5-Data: ([nil nil nil nil nil nil nil nil nil]
	["1115" "" "24" "May" "2007" "05:29:53" "-0500" "Zuma Lindiwe" "mrszuma07@sify.com" nil "18" "Please Assist Us" "^From:" nil nil "5" nil nil nil nil nil nil nil nil nil]
	nil)
Delivered-To: skip.montanaro@gmail.com
Received: from pop.gmail.com
	by montanaro.dyndns.org with POP3 (fetchmail-6.3.6)
	for <skip@localhost> (single-drop);
	Thu, 24 May 2007 05:39:26 -0500 (CDT)
Received: by 10.35.31.19 with SMTP id i19cs443913pyj;
	Thu, 24 May 2007 03:36:47 -0700 (PDT)
Received: by 10.100.153.17 with SMTP id a17mr1396912ane.1180003006899;
	Thu, 24 May 2007 03:36:46 -0700 (PDT)
Return-Path: <SRS0=uIp3=KZ=secure3.apollohosting.com=anonymous@bounce2.pobox.com>
Received: from snug.pobox.com (snug.pobox.com [208.210.124.72])
	by mx.google.com with ESMTP id b11si4486779ana.2007.05.24.03.36.46;
	Thu, 24 May 2007 03:36:46 -0700 (PDT)
Received-SPF: pass (google.com: domain of
	SRS0=uIp3=KZ=secure3.apollohosting.com=anonymous@bounce2.pobox.com
	designates 208.210.124.72 as permitted sender)
Received: from snug.pobox.com (localhost [127.0.0.1])
	by snug.pobox.com (Postfix) with ESMTP id 91CC79A24C
	for <skip.montanaro@gmail.com>; Thu, 24 May 2007 06:37:08 -0400 (EDT)
Delivered-To: skip@pobox.com
X-Pobox-Delivery-ID: <B90780B8-09E2-11DC-99D2-3FC5C02E5092-00107187@snug.pobox.com>
Received: from mx03.mailboxcop.com (mx03.mailboxcop.com [206.125.223.73]) by
	snug.pobox.com (Postfix) with ESMTP id 64C4D99411 for <skip@pobox.com>; 
	Thu, 24 May 2007 06:37:08 -0400 (EDT)
Received: from secure3.apollohosting.com (secure3.apollohosting.com
	[206.125.215.253]) by mx03.mailboxcop.com (8.13.1/8.13.1) with ESMTP id
	l4OAaiFD024154 for <skip@pobox.com>; Thu, 24 May 2007 05:36:45 -0500
Received: (qmail 27123 invoked by uid 10121); 24 May 2007 05:29:53 -0500
Message-ID: <20070524102953.27122.qmail@secure3.apollohosting.com>
X-PHP-Script: saexplorers.org/send.php for 82.128.2.136, 82.128.2.136
MIME-Version: 1.0
Content-Type: text/html
Content-Transfer-Encoding: 8bit
X-Bayes-Prob: 0.9999 (Score 2)
X-CanItPRO-Stream: outgoing (inherits from default)
X-Canit-Stats-ID: Bayes signature not available
X-Scanned-By: CanIt (www . roaringpenguin . com) on 192.168.15.5
From: Zuma Lindiwe <mrszuma07@sify.com>
To: skip@pobox.com
Subject: Please Assist Us
Date: 24 May 2007 05:29:53 -0500
Reply-To: mrszumafamily@excite.com


Dear Friend, 
I am wife of sacked deputy president of south africa, 
jacob zuma. 
It is out of desperation that i am sending you this mail. 

my husband and i need your help in fronting for us as owner of funds that are his which might come under investigation soon if the fund's ownership is not changed soonest. as my husband's finances are 
increasingly becoming the source of investigation by our distractors. the source of these funds which my husband's earnings would not validate, will further sink him into the cesspool dug by our enemies. 

 It is because of the dire strait we find ourselves that we resolved to reach you and ask for your assistance in this matter. we are averse to letting those we know here into this deal because we are no longer sure of who our friends are. you will be rewarded if you choose to help us in partnership in this deal. 

 I will be expecting to hear from you via 
my personal email account (mrszumafamily@excite.com)and will disclose further detail to you upon your response. do well not to disclose the content of this mail to anyone. 

Best Regards, 
Lindiwe Zuma 

From SRS0=DxWX=HL=python.org=spambayes-bounces+skip=pobox.com@bounce2.pobox.com  Mon Nov 23 08:30:49 2009
X-VM-v5-Data: ([nil nil nil nil nil nil nil nil nil]
	["2607" "Sunday" "22" "November" "2009" "22:10:36" "-0600" "bob" "bob@upperspace.com" nil "98" "[Spambayes] Spambayes on Windows 7" "^From:" nil nil "11" nil "[Spambayes] Spambayes on Windows 7" nil nil nil nil nil nil nil nil]
	nil)
Delivered-To: skip.montanaro@gmail.com
Received: from pop.gmail.com
 by montanaro.dyndns.org with POP3 (fetchmail-6.3.11)
 for <skip@localhost> (single-drop); Mon, 23 Nov 2009 08:30:49 -0600 (CST)
Received: by 10.213.7.80 with SMTP id c16cs347686ebc;
 Mon, 23 Nov 2009 06:30:41 -0800 (PST)
Received: by 10.224.75.132 with SMTP id y4mr2484694qaj.116.1258986639290;
 Mon, 23 Nov 2009 06:30:39 -0800 (PST)
Return-Path: <SRS0=DxWX=HL=python.org=spambayes-bounces+skip=pobox.com@bounce2.pobox.com>
Received: from azure.pobox.com (azure.pobox.com [208.72.237.55])
 by mx.google.com with ESMTP id 6si5966074qyk.3.2009.11.23.06.30.37;
 Mon, 23 Nov 2009 06:30:38 -0800 (PST)
Received-SPF: pass (google.com: domain of
 SRS0=DxWX=HL=python.org=spambayes-bounces+skip=pobox.com@bounce2.pobox.com
 designates 208.72.237.55 as permitted sender) client-ip=208.72.237.55; 
Authentication-Results: mx.google.com; spf=pass (google.com: domain of
 SRS0=DxWX=HL=python.org=spambayes-bounces+skip=pobox.com@bounce2.pobox.com
 designates 208.72.237.55 as permitted sender)
 smtp.mail=SRS0=DxWX=HL=python.org=spambayes-bounces+skip=pobox.com@bounce2.pobox.com;
 dkim=pass header.i=@python.org
Received: from azure.pobox.com (localhost [127.0.0.1])
 by azure.pobox.com (Postfix) with ESMTP id 8414B413F3E
 for <skip.montanaro@gmail.com>; Mon, 23 Nov 2009 09:30:37 -0500 (EST)
Delivered-To: skip@pobox.com
X-Pobox-Orig-Sender: <spambayes-bounces+skip=pobox.com@python.org>
X-Pobox-Delivery-ID: C47E19E0-D83C-11DE-9FAD-F7121D43C645-00107187!azure.pobox.com
X-Original-To: spambayes@python.org
x-pobox-client-address: 82.94.164.166
x-pobox-client-name: mail.python.org
Received: from mail.python.org (mail.python.org [82.94.164.166]) by
 azure.pobox.com (Postfix) with ESMTP id 15FD34141C1 for <skip@pobox.com>;
 Mon, 23 Nov 2009 09:30:37 -0500 (EST)
Received: from albatross.python.org (localhost.localdomain [127.0.0.1]) by
 mail.python.org (Postfix) with ESMTP id 9AA11EBA5 for <skip@pobox.com>; Mon,
 23 Nov 2009 15:30:36 +0100 (CET)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=python.org; s=200901;
 t=1258986636; bh=G3C6Fnk3/321ZNZOnwcniEKycLMsUsyj+9gRRzmpmKk=;
 h=From:To:Date:Message-ID:MIME-Version:Subject:List-Id:
 List-Unsubscribe:List-Archive:List-Post:List-Help:List-Subscribe:
 Content-Type:Sender;
 b=TVpkk/uBriyojj9buMN1drKXKIbFFfGSI1aW3sl5nRmSMz5Z7A5enkbOjwABhra1K
 jc+L8Fgqd3eEDT0TeBP/qMSLvLNJlr7QL/otP6/O+VeMNdcorRhHcnaSqpMzlEowLk
 iy1hCwHLrpN9zGj2jFzwoZrpjVl1f77TddUa0fz8=
Delivered-To: spambayes@mail.python.org
Received: from albatross.python.org (localhost.localdomain [127.0.0.1]) by
 mail.python.org (Postfix) with ESMTP id 8E4F3D318 for <spambayes@python.org>; 
 Mon, 23 Nov 2009 06:11:11 +0100 (CET)
X-Spam-Status: OK 0.019
X-Spam-Evidence: '*H*': 0.96; '*S*': 0.00; 'spambayes': 0.05; 'doesn?t':
 0.07; '1.0.4': 0.09; '127.0.0.1': 0.16; 'localhost': 0.16; 'localhost.':
 0.16; 'pop3': 0.16; 'subject:Spambayes': 0.16; "didn't": 0.24;
 'x-mailer:microsoft office outlook 11': 0.26; 'tried': 0.27; 'mode': 0.28;
 "doesn't": 0.29; 'to:addr:spambayes': 0.30; 'work,': 0.33; 'fine.': 0.35;
 'server.': 0.35; 'charset:us- ascii': 0.37; 'url:org': 0.38;
 'url:rec-html40': 0.40; 'use': 0.40; 'pop': 0.60; 'subject:Windows': 0.65;
 'received:74.208': 0.73
Received: from localhost.localdomain (HELO mail.python.org) (127.0.0.1) by
 albatross.python.org with SMTP; 23 Nov 2009 06:11:11 +0100
X-Greylist: delayed 3631 seconds by postgrey-1.31 at albatross; Mon, 23 Nov
 2009 06:11:11 CET
Received: from xpda.com (xpda.com [74.208.174.103]) by mail.python.org
 (Postfix) with SMTP for <spambayes@python.org>; Mon, 23 Nov 2009 06:11:10
 +0100 (CET)
Received: from abacus ([99.184.98.187]) by xpda.com ; Sun, 22 Nov 2009
 22:10:08 -0600
Message-ID: <DEF2447574574FCAB15097ABA2C14F1A@abacus>
MIME-Version: 1.0
X-Mailer: Microsoft Office Outlook 11
Thread-Index: Acpr8tBU1EqjrtNgSDiuVNiLflJRdg==
X-MimeOLE: Produced By Microsoft MimeOLE V6.1.7600.16385
X-Mailman-Approved-At: Mon, 23 Nov 2009 15:26:31 +0100
X-BeenThere: spambayes@python.org
X-Mailman-Version: 2.1.12
Precedence: list
List-Id: Discussion list for Pythonic Bayesian classifier
 <spambayes.python.org>
List-Unsubscribe: <http://mail.python.org/mailman/options/spambayes>,
 <mailto:spambayes-request@python.org?subject=unsubscribe>
List-Archive: <http://mail.python.org/pipermail/spambayes>
List-Post: <mailto:spambayes@python.org>
List-Help: <mailto:spambayes-request@python.org?subject=help>
List-Subscribe: <http://mail.python.org/mailman/listinfo/spambayes>,
 <mailto:spambayes-request@python.org?subject=subscribe>
Content-Type: multipart/mixed; boundary="===============1230161230=="
Errors-To: spambayes-bounces+skip=pobox.com@python.org
X-Spambayes-Evidence: '*H*': 0.94; '*S*': 0.00; 'skip:_ 40': 0.03;
 'email addr:python.org': 0.13; 'instead': 0.16; 'integrated': 0.16;
 'recognize': 0.16; 'tried': 0.16; 'url-ip:216.34.181/24': 0.16;
 'url-ip:216.34/16': 0.16; 'url:sf': 0.16; 'url-ip:128/8': 0.18; 'set': 0.20;
 'url-ip:128.30.52/24': 0.23; 'url-ip:128.30/16': 0.23; 'url:w3': 0.23;
 'windows': 0.24; 'url-ip:128.30.52.166/32': 0.26;
 'url-ip:128.30.52.168/32': 0.26; 'url-ip:128.30.52.170/32': 0.26;
 'url-ip:128.30.52.38/32': 0.26; 'url-ip:128.30.52.51/32': 0.26;
 'url-ip:128.30.52.53/32': 0.26; 'url-ip:128.30.52.54/32': 0.26; 'url:tr': 0.26;
 'url:org': 0.30; "doesn't": 0.32; 'works': 0.32; 'subject:] ': 0.33;
 'url:rec-html40': 0.37; 'header:Received:11': 0.37; 'url:python': 0.38;
 'url-ip:82.94.164/24': 0.40; 'url-ip:82.94/16': 0.40;
 'sender:addr:python.org': 0.62; 'content-type:text/html': 0.62;
 'content-type:multipart/alternative': 0.64; 'before': 0.73; 'pop': 0.84;
 'received:74': 0.84; 'work,': 0.84; "didn't": 0.91
From: "bob" <bob@upperspace.com>
Sender: spambayes-bounces+skip=pobox.com@python.org
To: <spambayes@python.org>
Subject: [Spambayes] Spambayes on Windows 7
Date: Sun, 22 Nov 2009 22:10:36 -0600
X-Spambayes-Classification: ham; 0.03

This is a multi-part message in MIME format.

--===============1230161230==
Content-Type: multipart/alternative;
 boundary="----=_NextPart_000_0003_01CA6BC0.9E45D530"

This is a multi-part message in MIME format.

------=_NextPart_000_0003_01CA6BC0.9E45D530
Content-Type: text/plain;
	charset="us-ascii"
Content-Transfer-Encoding: 7bit

I have just tried out Spambayes 1.0.4 on Windows 7, Outlook 2003. It works
fine. You just have to set it up in Pop3 mode and use 127.0.0.1 instead of
localhost for the Outlook Pop server. The integrated Outlook mode didn't
work, and Windows 7 doesn't recognize localhost.


------=_NextPart_000_0003_01CA6BC0.9E45D530
Content-Type: text/html;
	charset="us-ascii"
Content-Transfer-Encoding: quoted-printable

<html xmlns:o=3D"urn:schemas-microsoft-com:office:office" =
xmlns:w=3D"urn:schemas-microsoft-com:office:word" =
xmlns=3D"http://www.w3.org/TR/REC-html40">

<head>
<META HTTP-EQUIV=3D"Content-Type" CONTENT=3D"text/html; =
charset=3Dus-ascii">
<meta name=3DGenerator content=3D"Microsoft Word 11 (filtered medium)">
<style>
<!--
 /* Style Definitions */
 p.MsoNormal, li.MsoNormal, div.MsoNormal
	{margin:0in;
	margin-bottom:.0001pt;
	font-size:10.0pt;
	font-family:"Times New Roman";}
a:link, span.MsoHyperlink
	{color:blue;
	text-decoration:underline;}
a:visited, span.MsoHyperlinkFollowed
	{color:purple;
	text-decoration:underline;}
span.EmailStyle17
	{mso-style-type:personal-compose;
	font-family:Arial;
	color:windowtext;}
@page Section1
	{size:8.5in 11.0in;
	margin:1.0in 1.25in 1.0in 1.25in;}
div.Section1
	{page:Section1;}
-->
</style>

</head>

<body lang=3DEN-US link=3Dblue vlink=3Dpurple>

<div class=3DSection1>

<p class=3DMsoNormal><font size=3D2 face=3DArial><span =
style=3D'font-size:10.0pt;
font-family:Arial'>I have just tried out Spambayes 1.0.4 on Windows 7, =
Outlook
2003. It works fine. You just have to set it up in Pop3 mode and use =
127.0.0.1
instead of localhost for the Outlook Pop server. The integrated Outlook =
mode
didn&#8217;t work, and Windows 7 doesn&#8217;t recognize =
localhost.<o:p></o:p></span></font></p>

</div>

</body>

</html>

------=_NextPart_000_0003_01CA6BC0.9E45D530--



--===============1230161230==
Content-Type: text/plain; charset="us-ascii"
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit
Content-Disposition: inline

_______________________________________________
SpamBayes@python.org
http://mail.python.org/mailman/listinfo/spambayes
Info/Unsubscribe: http://mail.python.org/mailman/listinfo/spambayes
Check the FAQ before asking: http://spambayes.sf.net/faq.html
--===============1230161230==--


From SRS0=LaUJ=HL=python.org=python-dev-bounces+skip=pobox.com@bounce2.pobox.com  Mon Nov 23 02:58:24 2009
X-VM-v5-Data: ([nil nil nil nil nil nil nil nil nil]
	["2051" "Monday" "23" "November" "2009" "08:54:56" "+0000" "Stefan Ring" "s.r@visotech.at" nil "27" "Re: [Python-Dev] Reworking the GIL" "^From:" nil nil "11" nil "[Python-Dev] Reworking the GIL" nil nil nil nil nil nil nil nil]
	nil)
Delivered-To: skip.montanaro@gmail.com
Received: from pop.gmail.com
 by montanaro.dyndns.org with POP3 (fetchmail-6.3.11)
 for <skip@localhost> (single-drop); Mon, 23 Nov 2009 02:58:24 -0600 (CST)
Received: by 10.213.7.80 with SMTP id c16cs334544ebc;
 Mon, 23 Nov 2009 00:58:18 -0800 (PST)
Received: by 10.220.122.205 with SMTP id m13mr5472495vcr.40.1258966696358;
 Mon, 23 Nov 2009 00:58:16 -0800 (PST)
Return-Path: <SRS0=LaUJ=HL=python.org=python-dev-bounces+skip=pobox.com@bounce2.pobox.com>
Received: from sienna.pobox.com (sienna.pobox.com [64.74.157.51])
 by mx.google.com with ESMTP id 5si6478976vws.69.2009.11.23.00.58.14;
 Mon, 23 Nov 2009 00:58:15 -0800 (PST)
Received-SPF: pass (google.com: domain of
 SRS0=LaUJ=HL=python.org=python-dev-bounces+skip=pobox.com@bounce2.pobox.com
 designates 64.74.157.51 as permitted sender) client-ip=64.74.157.51; 
Authentication-Results: mx.google.com; spf=pass (google.com: domain of
 SRS0=LaUJ=HL=python.org=python-dev-bounces+skip=pobox.com@bounce2.pobox.com
 designates 64.74.157.51 as permitted sender)
 smtp.mail=SRS0=LaUJ=HL=python.org=python-dev-bounces+skip=pobox.com@bounce2.pobox.com;
 dkim=pass header.i=@python.org
Received: from sienna.pobox.com (localhost [127.0.0.1])
 by sienna.pobox.com (Postfix) with ESMTP id 7732F208487
 for <skip.montanaro@gmail.com>; Mon, 23 Nov 2009 03:58:14 -0500 (EST)
Delivered-To: skip@pobox.com
X-Pobox-Orig-Sender: <python-dev-bounces+skip=pobox.com@python.org>
X-Pobox-Delivery-ID: 55034776-D80E-11DE-9DD3-8441759ABA81-00107187!sienna.pobox.com
X-Original-To: python-dev@python.org
x-pobox-client-address: 82.94.164.166
x-pobox-client-name: mail.python.org
Received: from mail.python.org (mail.python.org [82.94.164.166]) by
 sienna.pobox.com (Postfix) with ESMTP id 7ED34207D20 for <skip@pobox.com>;
 Mon, 23 Nov 2009 03:57:55 -0500 (EST)
Received: from albatross.python.org (localhost.localdomain [127.0.0.1]) by
 mail.python.org (Postfix) with ESMTP id F2E17EC62 for <skip@pobox.com>; Mon,
 23 Nov 2009 09:57:17 +0100 (CET)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=python.org; s=200901;
 t=1258966638; bh=KEqoLFbD8JmuPmX22sEZnyDmrjrqcci9GB9E4dZK+TM=;
 h=To:From:Date:Message-ID:References:Mime-Version:Subject:List-Id:
 List-Unsubscribe:List-Archive:List-Post:List-Help:List-Subscribe:
 Content-Type:Content-Transfer-Encoding:Sender;
 b=sDlvjVuJ36QdaGauTvOu2OixqbIDf+fZK+W5tKJpcWZ3/z5HDV17pZan8r/QR527Z
 WQHPEMz3lGrA9Go2QKULbLBs4xiQW78bJy2pus9kJ9n8jG0NFTHOWgzQ8AYVAejrcX
 cz7SDZ8N/waScdKqXkYUgHfTID6BwU2S9p3l2wis=
Delivered-To: python-dev@mail.python.org
Received: from albatross.python.org (localhost.localdomain [127.0.0.1]) by
 mail.python.org (Postfix) with ESMTP id EBE10C941 for
 <python-dev@python.org>; Mon, 23 Nov 2009 09:55:23 +0100 (CET)
X-Spam-Status: OK 0.011
X-Spam-Evidence: '*H*': 0.98; '*S*': 0.00; 'scheduling': 0.04; 'python':
 0.05; 'done,': 0.05; 'seemed': 0.05; 'slightly': 0.05; 'note,': 0.09;
 'bashing,': 0.16; 'cpu': 0.16; 'functions.': 0.16; 'priorities': 0.16;
 'received:80.91': 0.16; 'received:80.91.229': 0.16; 'received:80.91.229.12':
 0.16; 'received:gmane.org': 0.16; 'received:list': 0.16;
 'received:lo.gmane.org': 0.16; 'sender:addr:ger.gmane.org': 0.16;
 'sender:addr:news': 0.16; 'sender:name:news': 0.16; 'stefan': 0.16; 'unfair':
 0.16; 'url:2008-march': 0.16; 'url:python-dev': 0.16; 'yesterday': 0.16;
 'code,': 0.19; 'somehow': 0.23; 'url:pipermail': 0.24; 'header:X
 -Complaints-To:1': 0.26; 'list': 0.28; 'mailing': 0.30; 'header
 :User-Agent:1': 0.30; 'quite': 0.31; 'slow': 0.31; 'header:Mime- Version:1':
 0.32; 'hello,': 0.33; 'something': 0.33; 'posted': 0.33; 'there': 0.33;
 'seem': 0.35; 'measure': 0.35; 'nobody': 0.35; 'subject:: ': 0.36; 'might':
 0.36; 'though': 0.36; 'received:org': 0.36; 'too': 0.36; 'don\xe2\x80\x99t':
 0.36; 'know.': 0.38; 'url:python': 0.38; 'url:2009': 0.38; 'url:org': 0.38;
 'different': 0.39; 'what': 0.39; 'almost': 0.39; 'to:addr :python-dev': 0.39; 
 'few': 0.40; 'url:index': 0.60; 'your': 0.61; 'aware': 0.62; 'received:91':
 0.64; 'came': 0.65; 'customer': 0.65; 'interested.': 0.65; 'url:php': 0.66;
 'mind': 0.67; 'skip:w 20': 0.68; 'year,': 0.71; 'sites': 0.76; 'production':
 0.79; '[2]': 0.84; '[3]': 0.84; 'clock.': 0.84; 'since,': 0.84;
 'observations': 0.91
Received: from localhost.localdomain (HELO mail.python.org) (127.0.0.1) by
 albatross.python.org with SMTP; 23 Nov 2009 09:55:23 +0100
Received: from lo.gmane.org (lo.gmane.org [80.91.229.12]) (using TLSv1 with
 cipher AES256-SHA (256/256 bits)) (No client certificate requested) by
 mail.python.org (Postfix) with ESMTPS for <python-dev@python.org>; Mon, 23
 Nov 2009 09:55:23 +0100 (CET)
Received: from list by lo.gmane.org with local (Exim 4.50) id
 1NCUha-0004EP-Fq for python-dev@python.org; Mon, 23 Nov 2009 09:55:18 +0100
Received: from 91.114.58.158 ([91.114.58.158]) by main.gmane.org with esmtp
 (Gmexim 0.1 (Debian)) id 1AlnuQ-0007hv-00 for <python-dev@python.org>; Mon,
 23 Nov 2009 09:55:18 +0100
Received: from s.r by 91.114.58.158 with local (Gmexim 0.1 (Debian)) id
 1AlnuQ-0007hv-00 for <python-dev@python.org>; Mon, 23 Nov 2009 09:55:18 +0100
X-Injected-Via-Gmane: http://gmane.org/
Lines: 28
Message-ID: <loom.20091123T095336-325@post.gmane.org>
References: <1256502140.5621.163.camel@localhost>
Mime-Version: 1.0
X-Complaints-To: usenet@ger.gmane.org
X-Gmane-NNTP-Posting-Host: sea.gmane.org
User-Agent: Loom/3.14 (http://gmane.org/)
X-Loom-IP: 91.114.58.158 (Mozilla/5.0 (X11; U; Linux x86_64; en-US;
 rv:1.9.1.5) Gecko/20091105 Fedora/3.5.5-1.fc12 Firefox/3.5.5)
X-BeenThere: python-dev@python.org
X-Mailman-Version: 2.1.12
Precedence: list
List-Id: Python core developers <python-dev.python.org>
List-Unsubscribe: <http://mail.python.org/mailman/options/python-dev>,
 <mailto:python-dev-request@python.org?subject=unsubscribe>
List-Archive: <http://mail.python.org/pipermail/python-dev>
List-Post: <mailto:python-dev@python.org>
List-Help: <mailto:python-dev-request@python.org?subject=help>
List-Subscribe: <http://mail.python.org/mailman/listinfo/python-dev>,
 <mailto:python-dev-request@python.org?subject=subscribe>
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Errors-To: python-dev-bounces+skip=pobox.com@python.org
X-Spambayes-Evidence: '*H*': 0.99; '*S*': 0.00; 'python': 0.03;
 'skip:_ 40': 0.03; 'built': 0.05; 'subject:: [': 0.05; 'added': 0.07;
 'received:80': 0.07; 'similar': 0.07; '[1]': 0.09; 'later': 0.09; 'mind': 0.09;
 'email addr:python.org': 0.13; 'across': 0.16; 'aware': 0.16; 'linux.': 0.16;
 'note,': 0.16; 'presentation': 0.16; 'received:80.91': 0.16;
 'received:80.91.229': 0.16; 'received:80.91.229.12': 0.16;
 'received:gmane.org': 0.16; 'received:list': 0.16;
 'received:lo.gmane.org': 0.16; 'subject:the': 0.16; 'url:options': 0.16;
 'usage': 0.16; 'subject:Python': 0.20; 'almost': 0.24; 'regards': 0.24;
 'several': 0.24; 'used': 0.24; 'list': 0.26; 'posted': 0.26; 'url:index': 0.26;
 'mailing': 0.27; 'able': 0.30; 'url:php': 0.30; 'url:org': 0.30;
 'customer': 0.31; 'david': 0.32; 'hello,': 0.32; 'lot': 0.32; 'mac': 0.32;
 'production': 0.32; 'thought': 0.32; 'too': 0.32; 'where': 0.33;
 'subject:] ': 0.33; 'what': 0.33; 'there': 0.34; 'current': 0.37;
 'different': 0.37; 'received:(no client certificate requested)': 0.37;
 'skip:w 20': 0.37; 'url:python': 0.38; 'running': 0.39;
 'url-ip:82.94.164/24': 0.40; 'url-ip:82.94/16': 0.40; 'came': 0.61;
 'url:%0': 0.61; 'url:2009': 0.61; 'great': 0.61; 'made': 0.61; 'time.': 0.61;
 'received:sienna.pobox.com': 0.62; 'sender:addr:python.org': 0.62;
 'time': 0.64; 'header:Received:13': 0.69; 'slow': 0.69; 'url:%40': 0.69;
 'amount': 0.70; 'company': 0.70; 'even': 0.70;
 'header:X-Complaints-To:1': 0.81; 'avg.': 0.84; 'interested.': 0.84;
 'nobody': 0.84; 'though': 0.84; 'unsubscribe:': 0.84; 'vary': 0.84;
 'url-ip:97/8': 0.91
From: Stefan Ring <s.r@visotech.at>
Sender: python-dev-bounces+skip=pobox.com@python.org
To: python-dev@python.org
Subject: Re: [Python-Dev] Reworking the GIL
Date: Mon, 23 Nov 2009 08:54:56 +0000 (UTC)
X-Spambayes-Classification: ham; 0.01

SGVsbG8sCgpJIGJ1aWx0IHNvbWV0aGluZyB2ZXJ5IHNpbWlsYXIgZm9yIG15IGNvbXBhbnkgbGFz
dCB5ZWFyLCBhbmQgaXTigJlzIGJlZW4gcnVubmluZwpmbGF3bGVzc2x5IGluIHByb2R1Y3Rpb24g
YXQgYSBmZXcgY3VzdG9tZXIgc2l0ZXMgc2luY2UsIHdpdGggYXZnLiBDUFUgdXNhZ2UgfjUwJQph
cm91bmQgdGhlIGNsb2NrLiBJIGV2ZW4gcG9zdGVkIGFib3V0IGl0IG9uIHRoZSBQeXRob24gbWFp
bGluZyBsaXN0IFsxXSB3aGVyZQp0aGVyZSB3YXMgYWxtb3N0IG5vIHJlc29uYW5jZSBhdCB0aGF0
IHRpbWUuIEkgbmV2ZXIgcG9zdGVkIGNvZGUsIHRob3VnaCAtLQpub2JvZHkgc2VlbWVkIHRvIGJl
IHRvbyBpbnRlcmVzdGVkLgoKSSBhbSB3ZWxsIGF3YXJlIHRoYXQgeW91ciBjdXJyZW50IHdvcmsg
aXMgYSBsb3QgbW9yZSBmYXItcmVhY2hpbmcgdGhhbiB3aGF0IEnigJl2ZQpkb25lLCB3aGljaCBp
cyBiYXNpY2FsbHkganVzdCBhIEZJRk8gc2NoZWR1bGVyLiBJIGV2ZW4gYWRkZWQgc2NoZWR1bGlu
Zwpwcmlvcml0aWVzIGxhdGVyIHdoaWNoIGRvbuKAmXQgd29yayB0b28gZ3JlYXQgYmVjYXVzZSB0
aGUgYW1vdW50IG9mIHRpbWUgdXNlZCBmb3IKYSAidGljayIgY2FuIHZhcnkgYnkgc2V2ZXJhbCBv
cmRlcnMgb2YgbWFnbml0dWRlLCBhcyB5b3Uga25vdy4KClRob3VnaHQgeW91IG1pZ2h0IGJlIGlu
dGVyZXN0ZWQuCgpSZWdhcmRzClN0ZWZhbgoKWzFdIGh0dHA6Ly9tYWlsLnB5dGhvbi5vcmcvcGlw
ZXJtYWlsL3B5dGhvbi1kZXYvMjAwOC1NYXJjaC8wNzc4MTQuaHRtbApbMl0gaHR0cDovL3d3dy5i
ZXN0aW5jbGFzcy5kay9pbmRleC5waHAvMjAwOS8xMC9weXRob24tdnMtY2xvanVyZS1ldm9sdmlu
Zy8KWzNdIHd3dy5kYWJlYXouY29tL3B5dGhvbi9HSUwucGRmCgpQUyBPbiBhIHNsaWdodGx5IGRp
ZmZlcmVudCBub3RlLCBJIGNhbWUgYWNyb3NzIHNvbWUgUHl0aG9uIGJhc2hpbmcgWzJdIHllc3Rl
cmRheQphbmQgc29tZWhvdyBmcm9tIHRoZXJlIHRvIERhdmlkIEJlYXpsZXnigJlzIHByZXNlbnRh
dGlvbiBhYm91dCB0aGUgR0lMIFszXS4gV2hpbGUKSSBkb27igJl0IG1pbmQgdGhlIGJhc2hpbmcs
IHRoZSBvYnNlcnZhdGlvbnMgYWJvdXQgdGhlIEdJTCBzZWVtIHF1aXRlIHVuZmFpciB0byBtZQpi
ZWNhdXNlIERhdmlk4oCZcyBtZWFzdXJlbWVudHMgaGF2ZSBiZWVuIG1hZGUgb24gTWFjIE9TIFgg
d2l0aCBpdHMgaG9ycmlibHkgc2xvdwpwdGhyZWFkcyBmdW5jdGlvbnMuIEkgd2FzIG5vdCBhYmxl
IHRvIG1lYXN1cmUgYW55IHNsb3dkb3duIG9uIExpbnV4LgoKCl9fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fClB5dGhvbi1EZXYgbWFpbGluZyBsaXN0ClB5dGhv
bi1EZXZAcHl0aG9uLm9yZwpodHRwOi8vbWFpbC5weXRob24ub3JnL21haWxtYW4vbGlzdGluZm8v
cHl0aG9uLWRldgpVbnN1YnNjcmliZTogaHR0cDovL21haWwucHl0aG9uLm9yZy9tYWlsbWFuL29w
dGlvbnMvcHl0aG9uLWRldi9za2lwJTQwcG9ib3guY29tCg==

From collinwinter@google.com  Tue Dec 15 20:50:15 2009
X-VM-v5-Data: ([nil nil nil nil nil nil nil nil nil]
	["2797" "Tuesday" "15" "December" "2009" "18:48:41" "-0800" "Collin Winter" "collinwinter@google.com" nil "72" "[unladen-swallow] Re: Q4 milestone and beyond? (let's re-schedule  GIL-less item)" "^From:" nil nil "12" nil "[unladen-swallow] Re: Q4 milestone and beyond? (let's re-schedule GIL-less item)" nil nil nil nil nil nil nil nil]
	nil)
Delivered-To: skip.montanaro@gmail.com
Received: from pop.gmail.com
 by montanaro.dyndns.org with POP3 (fetchmail-6.3.11)
 for <skip@localhost> (single-drop); Tue, 15 Dec 2009 20:50:15 -0600 (CST)
Received: by 10.216.54.195 with SMTP id i45cs23218wec;
 Tue, 15 Dec 2009 18:49:09 -0800 (PST)
Received: from mr.google.com ([10.91.41.14])
 by 10.91.41.14 with SMTP id t14mr762828agj.17.1260931748019 (num_hops = 1);
 Tue, 15 Dec 2009 18:49:08 -0800 (PST)
Received: by 10.91.41.14 with SMTP id t14mr85829agj.17.1260931747378;
 Tue, 15 Dec 2009 18:49:07 -0800 (PST)
X-BeenThere: unladen-swallow@googlegroups.com
Received: by 10.213.3.206 with SMTP id 14ls145770ebo.0.p; Tue, 15 Dec 2009 
 18:49:06 -0800 (PST)
Received: by 10.213.0.197 with SMTP id 5mr49728ebc.21.1260931745923;
 Tue, 15 Dec 2009 18:49:05 -0800 (PST)
Received: by 10.213.0.197 with SMTP id 5mr49727ebc.21.1260931745900;
 Tue, 15 Dec 2009 18:49:05 -0800 (PST)
Return-Path: <collinwinter@google.com>
Received: from smtp-out.google.com (smtp-out.google.com [216.239.33.17])
 by gmr-mx.google.com with ESMTP id 12si56694ewy.2.2009.12.15.18.49.04;
 Tue, 15 Dec 2009 18:49:04 -0800 (PST)
Received-SPF: pass (google.com: domain of collinwinter@google.com designates
 216.239.33.17 as permitted sender) client-ip=216.239.33.17; 
Received: from spaceape14.eur.corp.google.com (spaceape14.eur.corp.google.com
 [172.28.16.148]) by smtp-out.google.com with ESMTP id nBG2n48C024187
 for <unladen-swallow@googlegroups.com>; Wed, 16 Dec 2009 02:49:04 GMT
Received: from pxi13 (pxi13.prod.google.com [10.243.27.13])
 by spaceape14.eur.corp.google.com with ESMTP id nBG2mcUX011521
 for <unladen-swallow@googlegroups.com>; Tue, 15 Dec 2009 18:49:02 -0800
Received: by pxi13 with SMTP id 13so375403pxi.24
 for <unladen-swallow@googlegroups.com>; Tue, 15 Dec 2009 18:49:01 -0800 (PST)
MIME-Version: 1.0
Received: by 10.142.250.20 with SMTP id x20mr249183wfh.345.1260931741108; Tue, 
 15 Dec 2009 18:49:01 -0800 (PST)
In-Reply-To: <84fecab0912150150o36a0843ao1bd1f55ba2a3d8b@mail.gmail.com>
References: <84fecab0912150150o36a0843ao1bd1f55ba2a3d8b@mail.gmail.com>
Message-ID: <3c8293b60912151848n2cb99c29x381590836cd7d172@mail.gmail.com>
X-System-Of-Record: true
X-Original-Authentication-Results: gmr-mx.google.com; spf=pass (google.com: 
 domain of collinwinter@google.com designates 216.239.33.17 as permitted 
 sender) smtp.mail=collinwinter@google.com; dkim=pass (test mode) 
 header.i=@google.com
X-Original-Sender: collinwinter@google.com
Precedence: list
Mailing-list: list unladen-swallow@googlegroups.com; contact 
 unladen-swallow+owners@googlegroups.com
List-ID: <unladen-swallow.googlegroups.com>
List-Post: <http://groups.google.com/group/unladen-swallow/post?hl=>, 
 <mailto:unladen-swallow@googlegroups.com>
List-Help: <http://groups.google.com/support/?hl=>,
 <mailto:unladen-swallow+help@googlegroups.com>
List-Archive: <http://groups.google.com/group/unladen-swallow?hl=>
X-Thread-Url: http://groups.google.com/group/unladen-swallow/t/904026ef691592e3
X-Message-Url: http://groups.google.com/group/unladen-swallow/msg/3908cae79572d0cd
List-Unsubscribe: <http://groups.google.com/group/unladen-swallow/subscribe?hl=>, 
 <mailto:unladen-swallow+unsubscribe@googlegroups.com>
List-Subscribe: <http://groups.google.com/group/unladen-swallow/subscribe?hl=>, 
 <mailto:unladen-swallow+subscribe@googlegroups.com>
Content-Type: text/plain; charset=ISO-8859-1
X-Spambayes-Evidence: '*H*': 1.00; '*S*': 0.00; 'python': 0.04;
 'application': 0.05; 'thanks,': 0.05; 'consider': 0.07; 'implement': 0.07;
 'individual': 0.07; 'internal': 0.07; 'plan': 0.07; 'python.': 0.07;
 "we're": 0.07; 'am,': 0.09; 'focus': 0.09; 'foundation': 0.09; 'goal': 0.09;
 'goals': 0.09; 'merge': 0.09; 'necessarily': 0.09; 'problems': 0.09;
 'received:10.91': 0.09; 'url-ip:209.85.225.103/32': 0.09;
 'url-ip:209.85.225.104/32': 0.09; 'url-ip:209.85.225.105/32': 0.09;
 'url-ip:209.85.225.106/32': 0.09; 'url-ip:209.85.225.147/32': 0.09;
 'url-ip:209.85.225.99/32': 0.09; 'url:code': 0.09; 'usage': 0.09;
 'header:In-Reply-To:1': 0.13; 'be.': 0.16; 'benchmarks': 0.16;
 'cc:addr:googlegroups.com': 0.16; 'cc:addr:unladen-swallow': 0.16;
 'concrete': 0.16; 'cpython': 0.16; 'dec': 0.16; 'demonstrated': 0.16;
 'desired.': 0.16; 'django': 0.16; 'from:addr:google.com': 0.16;
 'interesting': 0.16; 'overall': 0.16; 'particular': 0.16; 'product,': 0.16;
 'quite': 0.16; 'repeat': 0.16; 'separate': 0.16; 'servers': 0.16;
 'subject:beyond': 0.16; 'subject:milestone': 0.16; 'tests.': 0.16;
 'trying': 0.16; 'unladen': 0.16; 'subject:)': 0.17; 'wrote:': 0.17;
 "don't": 0.17; 'community': 0.20; 'performance': 0.20; 'thread': 0.20;
 'could': 0.23; 'subject:: ': 0.24; 'apply': 0.24; 'date': 0.24; 'least': 0.24;
 'list.': 0.24; 'page': 0.24; 'someone': 0.24; 'thing': 0.24; 'way': 0.27;
 'thanks': 0.30; 'to:addr:gmail.com': 0.30; 'using': 0.30; 'cc:2**0': 0.31;
 'core': 0.31; 'small': 0.31; 'start': 0.31; 'url-ip:209.85.225/24': 0.31;
 'url-ip:209.85/16': 0.31; '(and': 0.32; 'build': 0.32; 'discuss': 0.32;
 'expect': 0.32; 'experience': 0.32; 'four': 0.32; 'hard': 0.32; 'of.': 0.32;
 'prior': 0.32; 'sfxlen:0': 0.32; 'url:unladen-swallow': 0.32; 'order': 0.32;
 'subject:] ': 0.32; 'add': 0.34; 'received:216': 0.34; 'skip:u 10': 0.35;
 'there': 0.35; 'what': 0.36; 'already': 0.37; 'project': 0.37;
 'projects': 0.37; 'subject:[': 0.37; 'but': 0.37; 'through': 0.39; 'put': 0.39;
 'skip:w 20': 0.39; 'url:p': 0.39; 'been': 0.61; 'those': 0.61; 'even': 0.62;
 'skip:o 10': 0.64; 'address': 0.65; 'own': 0.65; 'you,': 0.75; 'happy': 0.78;
 'above,': 0.84; 'according': 0.84; 'burn': 0.84; 'faster.': 0.84;
 'instead,': 0.84; 'potential': 0.84; 'profile': 0.84; 'received:172.28': 0.84;
 'reliable': 0.84; 'somewhat': 0.84; 'speed': 0.84; 'this!': 0.84; 'tue,': 0.84;
 'usual': 0.84; 'huge': 0.91; 'mentioned': 0.91; 'this,': 0.91; '2010': 0.93;
 'gets': 0.93; 'sender:addr:unladen-swallow': 0.96
From: Collin Winter <collinwinter@google.com>
Sender: unladen-swallow@googlegroups.com
To: Valery Khamenya <khamenya@gmail.com>
Cc: Unladen Swallow <unladen-swallow@googlegroups.com>
Subject: [unladen-swallow] Re: Q4 milestone and beyond? (let's re-schedule 
 GIL-less item)
Date: Tue, 15 Dec 2009 18:48:41 -0800
X-Spambayes-Classification: ham; 0.00

Hi Valery,

On Tue, Dec 15, 2009 at 1:50 AM, Valery Khamenya <khamenya@gmail.com> wrote:
> Hi Collin,
>
> thanks for addressing this!
>
>> Our plans have not been terribly interesting from a theoretical
>> perspective for Q3 and Q4: benchmark, profile, apply the literature,
>> address hotspots, repeat; add new benchmarks as relevant.
>
> There is at least 1 goal that many people will *definitely* consider
> as important. This goal is already mentioned in ProjectPlan: removing
> the GIL. Clearly not Q4. Hardly 2010 Q1. Just let put some date as for
> landmark.
>
> let me emphasise. If u-s is even 2x slow, then anyway one could expect
> a boost in multithreading on 4+ core servers (and those servers become
> quite usual today).

That is not necessarily true. I recommend you investigate prior work
into this field: http://code.google.com/p/python-safethread/, for
example, sped up Python on two cores but fell over on four cores and
above, according to the author.

>> Our
>> performance-centric goals have been detoured by needing to fix serious
>> problems in LLVM's just-in-time infrastructure, [...]
>
> could someone start a separate thread on this, please?

This is covered somewhat in
http://code.google.com/p/unladen-swallow/wiki/ProjectPlan#2009_Q3. I'm
happy to elaborate, if need be.

>> [...] as well as working
>> with some internal projects to address their usage of Python.
>
> Oh, yes, ditto, please put in plan concrete performance goals
> regarding Django :)
>
> Don't underestimate this product, its audience and the impact.
> www.djangoproject.com has Google Page Rank 8. (Eight.)
>
> http://trends.google.com/websites?q=www.djangoproject.com
>
> What is your favourite Python project to address? Let's compare... ;)

We do not aim to speed up individual projects; we aim to speed up
*many* projects, using individual projects as a barometers of overall
progress. A goal of "speed up Django by 50%" is worthless if Django is
the only thing that gets faster.

If Django performance is a particular sore spot for you, the best way
to address this is:
1) Profile bm_django, bm_rietveld or your own application using
cProfile or OProfile to find hotspots.
2) Discuss those hotspots on the list.
3) Implement patches and tests.
4) Repeat as desired.

Our experience using LLVM's JIT over the past six months has
demonstrated that we need to focus on stability and infrastructure in
order to create a compelling platform that we can merge into CPython.
There's a huge number of potential optimizations to be implemented,
and the small Unladen Swallow team can't do it alone. Instead, we're
trying to burn through the hard parts, and establish a maintainable,
reliable foundation that the (much) wider CPython development
community can build on top of.

Thanks,
Collin Winter

From SRS0=45Fw=H2=python.org=python-checkins-bounces+skip=pobox.com@bounce2.pobox.com  Tue Dec  8 02:58:33 2009
X-VM-v5-Data: ([nil nil nil nil nil nil nil nil nil]
	["9945" "Tuesday" "8" "December" "2009" "03:57:00" "-0500" "tarek.ziade" "python-checkins@python.org" nil "279" "[Python-checkins] r76702 - in python/trunk: Doc/distutils/examples.rst Doc/whatsnew/2.7.rst Lib/distutils/dist.py Lib/distutils/tests/test_dist.py Misc/NEWS" "^From:" nil nil "12" nil nil nil nil nil nil nil nil nil nil]
	nil)
Delivered-To: skip.montanaro@gmail.com
Received: from pop.gmail.com
 by montanaro.dyndns.org with POP3 (fetchmail-6.3.11)
 for <skip@localhost> (single-drop); Tue, 08 Dec 2009 02:58:33 -0600 (CST)
Received: by 10.216.0.80 with SMTP id 58cs939947wea;
 Tue, 8 Dec 2009 00:57:02 -0800 (PST)
Received: by 10.224.124.24 with SMTP id s24mr4370609qar.119.1260262621834;
 Tue, 08 Dec 2009 00:57:01 -0800 (PST)
Return-Path: <SRS0=45Fw=H2=python.org=python-checkins-bounces+skip=pobox.com@bounce2.pobox.com>
Received: from gold.pobox.com (gold.pobox.com [208.72.237.26])
 by mx.google.com with ESMTP id 16si8902394qyk.83.2009.12.08.00.57.01;
 Tue, 08 Dec 2009 00:57:01 -0800 (PST)
Received-SPF: pass (google.com: domain of
 SRS0=45Fw=H2=python.org=python-checkins-bounces+skip=pobox.com@bounce2.pobox.com
 designates 208.72.237.26 as permitted sender) client-ip=208.72.237.26; 
Authentication-Results: mx.google.com; spf=pass (google.com: domain of
 SRS0=45Fw=H2=python.org=python-checkins-bounces+skip=pobox.com@bounce2.pobox.com
 designates 208.72.237.26 as permitted sender)
 smtp.mail=SRS0=45Fw=H2=python.org=python-checkins-bounces+skip=pobox.com@bounce2.pobox.com
Received: from gold.pobox.com (localhost [127.0.0.1])
 by gold.pobox.com (Postfix) with ESMTP id 23248412A1D
 for <skip.montanaro@gmail.com>; Tue,  8 Dec 2009 03:57:01 -0500 (EST)
Delivered-To: skip@pobox.com
X-Pobox-Orig-Sender: <python-checkins-bounces+skip=pobox.com@python.org>
X-Pobox-Delivery-ID: A5F453D0-E3D7-11DE-93D4-F82023B34E01-00107187!gold.pobox.com
X-Original-To: python-checkins@python.org
x-pobox-client-address: 82.94.164.166
x-pobox-client-name: mail.python.org
Received: from mail.python.org (mail.python.org [82.94.164.166]) by
 gold.pobox.com (Postfix) with ESMTP id 932B5412A41 for <skip@pobox.com>; Tue,
 8 Dec 2009 03:57:00 -0500 (EST)
Received: from albatross.python.org (localhost.localdomain [127.0.0.1]) by
 mail.python.org (Postfix) with ESMTP id E7B50D37E for <skip@pobox.com>; Tue, 
 8 Dec 2009 09:56:59 +0100 (CET)
Authentication-Results: mail.python.org; dkim=permerror (bad format)
 header.i=unknown
Delivered-To: python-checkins@mail.python.org
Received: from albatross.python.org (localhost.localdomain [127.0.0.1]) by
 mail.python.org (Postfix) with ESMTP id 70160C9AE for
 <python-checkins@python.org>; Tue,  8 Dec 2009 09:56:49 +0100 (CET)
Authentication-Results: mail.python.org; dkim=permerror (bad format)
 header.i=unknown
X-Spam-Status: OK 0.000
X-Spam-Evidence: '*H*': 1.00; '*S*': 0.00; 'python,': 0.01; 'def': 0.02;
 'python': 0.05; 'else:': 0.05; 'file,': 0.05; 'modified:': 0.07; 'pep': 0.07; 
 'skip:r 30': 0.07; 'try:': 0.07; 'command': 0.09; '(original)': 0.09;
 '-from': 0.09; 'author:': 0.09; 'filling': 0.09; 'georg': 0.09; 'log:': 0.09; 
 'none)': 0.09; 'none:': 0.09; 'received:82.94.164.162': 0.09;
 'received:dinsdale.python.org': 0.09; 'revision:': 0.09; 'subject:trunk':
 0.09; 'subject:python': 0.10; 'received:82.94': 0.10; 'received:82.94.164':
 0.10; 'from:addr:python.org': 0.11; "skip:' 10": 0.14; 'function': 0.15;
 'received:python.org': 0.15; 'none': 0.15; "'')": 0.16; "'\\n')": 0.16;
 '+class': 0.16; '+from': 0.16; '-------': 0.16; '__init__': 0.16; 'author,':
 0.16; 'metadata': 0.16; 'metadata,': 0.16; 'self.name': 0.16; 'skip:: 30':
 0.16; 'subject:Lib': 0.16; 'to:addr:python-checkins': 0.16; 'tree.': 0.16;
 'uninstall': 0.16; 'install': 0.17; 'project,': 0.17; 'script': 0.18;
 'import': 0.19; 'interface': 0.20; 'skip:u 20': 0.20; 'code': 0.21;
 'extension': 0.23; 'skip:m 40': 0.23; 'version,': 0.23; 'library': 0.24;
 'modules': 0.25; 'version': 0.26; 'written': 0.27; 'defined': 0.27; '1.1':
 0.29; 'skip:d 40': 0.29; 'source': 0.30; 'class': 0.31; 'user': 0.31;
 'binary': 0.31; 'project': 0.31; 'issue': 0.32; 'values': 0.32; 'subject:: ':
 0.34; 'file': 0.35; 'but': 0.35; 'received:org': 0.35; 'name,': 0.35; '+++':
 0.36; 'skip:s 40': 0.36; 'files': 0.36; 'date:': 0.36; 'received:82': 0.36;
 'skip:" 10': 0.36; '>>>': 0.37; 'alongside': 0.37; 'class,': 0.37; 'forth.':
 0.37; 'meta': 0.37; 'path': 0.37; 'query': 0.37; 'skip:p 30': 0.37;
 'warning:': 0.37; 'using': 0.37; 'skip:d 20': 0.37; "what's": 0.37; 'two':
 0.37; 'too': 0.38; 'skip:_ 30': 0.38; 'skip:s 20': 0.39; 'skip:u 10': 0.39;
 'skip:_ 20': 0.40; 'created': 0.40; 'finish': 0.61; 'minor': 0.61; 'value':
 0.61; 'name': 0.61; 'suite': 0.61; 'fields': 0.63; 'skip:m 20': 0.63;
 'provides': 0.63; 'distribute': 0.64; 'back': 0.64; 'skip:: 10': 0.66;
 'skip:w 20': 0.67; 'skip:t 30': 0.71; 'title': 0.71; 'skip:+ 10': 0.72;
 'major': 0.80; '2.7': 0.84; 'skip:+ 40': 0.84; 'skip:\\ 10': 0.84; 'skip:\\
 20': 0.84; 'message-id:invalid': 0.88; 'subject:NEWS': 0.91; 'accepts': 0.93
Received: from localhost.localdomain (HELO mail.python.org) (127.0.0.1) by
 albatross.python.org with SMTP; 08 Dec 2009 09:56:49 +0100
Received: from dinsdale.python.org (dinsdale.python.org [82.94.164.162]) by
 mail.python.org (Postfix) with ESMTP for <python-checkins@python.org>; Tue, 
 8 Dec 2009 09:56:49 +0100 (CET)
MIME-Version: 1.0
X-BeenThere: python-checkins@python.org
X-Mailman-Version: 2.1.12
Precedence: list
List-Id: Check-in messages from the Python maintainers
 <python-checkins.python.org>
List-Unsubscribe: <http://mail.python.org/mailman/options/python-checkins>,
 <mailto:python-checkins-request@python.org?subject=unsubscribe>
List-Archive: <http://mail.python.org/pipermail/python-checkins>
List-Post: <mailto:python-checkins@python.org>
List-Help: <mailto:python-checkins-request@python.org?subject=help>
List-Subscribe: <http://mail.python.org/mailman/listinfo/python-checkins>,
 <mailto:python-checkins-request@python.org?subject=subscribe>
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: 7bit
Errors-To: python-checkins-bounces+skip=pobox.com@python.org
Message-Id: <20091208085700.932B5412A41@gold.pobox.com>
X-Spambayes-Evidence: '*H*': 1.00; '*S*': 0.00; 'python': 0.04;
 'skip:_ 40': 0.04; 'command': 0.05; 'skip:- 10': 0.05; 'added': 0.07;
 'method': 0.07; 'provides': 0.07; 'skip:_ 10': 0.07; 'source': 0.07;
 '+++': 0.09; 'author:': 0.09; 'class': 0.09; 'def': 0.09; 'extension': 0.09;
 'from:addr:python.org': 0.09; 'log:': 0.09; 'modified:': 0.09; 'path': 0.09;
 'revision:': 0.09; "skip:' 10": 0.09; 'skip:+ 10': 0.09; 'skip:_ 20': 0.09;
 'skip:s 30': 0.09; 'skip:s 40': 0.09; 'subject:checkins': 0.09;
 'support': 0.13; '"",': 0.16; '(original)': 0.16; '+and': 0.16; '+class': 0.16;
 '+in': 0.16; '+the': 0.16; '+this': 0.16; '+you': 0.16; '-------': 0.16;
 '-from': 0.16; '>>>': 0.16; 'arguments': 0.16; 'binary': 0.16; 'dec': 0.16;
 'email name:python-checkins': 0.16; 'extension.': 0.16; 'file,': 0.16;
 'instead': 0.16; 'library': 0.16; 'message-id:@gold.pobox.com': 0.16;
 'name)': 0.16; 'parsing.': 0.16; 'project,': 0.16; 'query': 0.16;
 'reads': 0.16; 'received:82.94.164.162': 0.16;
 'received:dinsdale.python.org': 0.16; 'release': 0.16;
 'sender:addr:python-checkins-bounces+skip=pobox.com': 0.16; 'skip:= 70': 0.16;
 'skip:_ 30': 0.16; 'skip:d 30': 0.16; 'skip:d 40': 0.16; 'skip:p 30': 0.16;
 'skip:r 30': 0.16; 'skip:s 50': 0.16; 'static': 0.16; 'subject:trunk': 0.16;
 'to:addr:python-checkins': 0.16; 'url:python-checkins': 0.16;
 'email addr:python.org': 0.17; 'python,': 0.20; 'back': 0.21; 'could': 0.23;
 '---': 0.24; 'created': 0.24; 'date:': 0.24; 'interface': 0.24; 'issue': 0.24;
 'major': 0.24; 'skip:t 30': 0.24; 'subject:Python': 0.24; "what's": 0.24;
 'below.': 0.26; 'header:Received:10': 0.28; 'list': 0.28; 'call': 0.30;
 'code': 0.30; 'mailing': 0.30; 'skip:( 10': 0.30; 'using': 0.30; 'user': 0.31;
 'exist': 0.32; 'function': 0.32; 'given': 0.32; 'skip:+ 20': 0.32;
 'skip:+ 40': 0.32; 'skip:d 20': 0.32; 'skip:m 30': 0.32; 'url-ip:192/8': 0.32;
 'version': 0.32; 'skip:" 10': 0.32; 'subject:] ': 0.32; 'url:org': 0.32;
 'running': 0.34; 'skip:u 10': 0.35; 'skip:s 20': 0.36; 'project': 0.37;
 'subject:[': 0.37; 'but': 0.37; 'through': 0.39; 'when': 0.39;
 'skip:w 20': 0.39; 'subject: - ': 0.39; 'url:python': 0.39; 'fields': 0.61;
 'skip:m 20': 0.61; 'subject:/': 0.61; 'value': 0.61; 'actual': 0.61;
 'skip:c 10': 0.67; 'sender:addr:python.org': 0.68; 'distribution': 0.69;
 'hold': 0.69; 'return': 0.69; 'subject:\n ': 0.70; 'accepts': 0.84;
 'numbers': 0.84; 'packages': 0.84; 'script': 0.84; 'subject::\n ': 0.84;
 'tree.': 0.84; 'warning:': 0.84; 'finish': 0.91
From: tarek.ziade <python-checkins@python.org>
Sender: python-checkins-bounces+skip=pobox.com@python.org
To: python-checkins@python.org
Subject: [Python-checkins] r76702 - in python/trunk:
 Doc/distutils/examples.rst Doc/whatsnew/2.7.rst Lib/distutils/dist.py
 Lib/distutils/tests/test_dist.py Misc/NEWS
Date: Tue,  8 Dec 2009 03:57:00 -0500 (EST)
X-Spambayes-Classification: ham; 0.00

Author: tarek.ziade
Date: Tue Dec  8 09:56:49 2009
New Revision: 76702

Log:
Issue #7457: added a read_pkg_file method to distutils.dist.DistributionMetadata so we can read back PKG-INFO files

Modified:
   python/trunk/Doc/distutils/examples.rst
   python/trunk/Doc/whatsnew/2.7.rst
   python/trunk/Lib/distutils/dist.py
   python/trunk/Lib/distutils/tests/test_dist.py
   python/trunk/Misc/NEWS

Modified: python/trunk/Doc/distutils/examples.rst
==============================================================================
--- python/trunk/Doc/distutils/examples.rst	(original)
+++ python/trunk/Doc/distutils/examples.rst	Tue Dec  8 09:56:49 2009
@@ -285,6 +285,48 @@
     warning: check: Title underline too short. (line 2)
     warning: check: Could not finish the parsing.
 
+Reading the metadata
+=====================
+
+The :func:`distutils.core.setup` function provides a command-line interface
+that allows you to query the metadata fields of a project through the
+`setup.py` script of a given project::
+
+    $ python setup.py --name
+    distribute
+
+This call reads the `name` metadata by running the
+:func:`distutils.core.setup`  function. Although, when a source or binary
+distribution is created with Distutils, the metadata fields are written
+in a static file called :file:`PKG-INFO`. When a Distutils-based project is
+installed in Python, the :file:`PKG-INFO` file is copied alongside the modules
+and packages of the distribution under :file:`NAME-VERSION-pyX.X.egg-info`,
+where `NAME` is the name of the project, `VERSION` its version as defined
+in the Metadata, and `pyX.X` the major and minor version of Python like
+`2.7` or `3.2`.
+
+You can read back this static file, by using the
+:class:`distutils.dist.DistributionMetadata` class and its
+:func:`read_pkg_file` method::
+
+    >>> from distutils.dist import DistributionMetadata
+    >>> metadata = DistributionMetadata()
+    >>> metadata.read_pkg_file(open('distribute-0.6.8-py2.7.egg-info'))
+    >>> metadata.name
+    'distribute'
+    >>> metadata.version
+    '0.6.8'
+    >>> metadata.description
+    'Easily download, build, install, upgrade, and uninstall Python packages'
+
+Notice that the class can also be instanciated with a metadata file path to
+loads its values::
+
+    >>> pkg_info_path = 'distribute-0.6.8-py2.7.egg-info'
+    >>> DistributionMetadata(pkg_info_path).name
+    'distribute'
+
+
 .. % \section{Multiple extension modules}
 .. % \label{multiple-ext}
 

Modified: python/trunk/Doc/whatsnew/2.7.rst
==============================================================================
--- python/trunk/Doc/whatsnew/2.7.rst	(original)
+++ python/trunk/Doc/whatsnew/2.7.rst	Tue Dec  8 09:56:49 2009
@@ -539,6 +539,10 @@
   process, but instead simply not install the failing extension.
   (Contributed by Georg Brandl; :issue:`5583`.)
 
+  Issue #7457: added a read_pkg_file method to.distutils.dist.DistributionMetadata
+  see file:///MacDev/svn.python.org/python-trunk/Doc/build/html/distutils/examples.html#reading-the-metadata
+  (:issue:`7457`, added by Tarek).
+
 * The :class:`Fraction` class now accepts two rational numbers
   as arguments to its constructor.
   (Implemented by Mark Dickinson; :issue:`5812`.)

Modified: python/trunk/Lib/distutils/dist.py
==============================================================================
--- python/trunk/Lib/distutils/dist.py	(original)
+++ python/trunk/Lib/distutils/dist.py	Tue Dec  8 09:56:49 2009
@@ -7,6 +7,7 @@
 __revision__ = "$Id$"
 
 import sys, os, re
+import rfc822
 
 try:
     import warnings
@@ -1006,6 +1007,20 @@
     # to self.metadata.get_XXX.  The actual code is in the
     # DistributionMetadata class, below.
 
+class _MetadataMessage(rfc822.Message):
+
+    def read_field(self, name):
+        value = self[name]
+        if value == 'UNKNOWN':
+            return None
+        return value
+
+    def getheaders(self, name, default):
+        values = rfc822.Message.getheaders(self, name)
+        if values == []:
+            return None
+        return values
+
 class DistributionMetadata:
     """Dummy class to hold the distribution meta-data: name, version,
     author, and so forth.
@@ -1021,25 +1036,67 @@
                          "provides", "requires", "obsoletes",
                          )
 
-    def __init__ (self):
-        self.name = None
-        self.version = None
-        self.author = None
-        self.author_email = None
+    def __init__(self, path=None):
+        if path is not None:
+            self.read_pkg_file(open(path))
+        else:
+            self.name = None
+            self.version = None
+            self.author = None
+            self.author_email = None
+            self.maintainer = None
+            self.maintainer_email = None
+            self.url = None
+            self.license = None
+            self.description = None
+            self.long_description = None
+            self.keywords = None
+            self.platforms = None
+            self.classifiers = None
+            self.download_url = None
+            # PEP 314
+            self.provides = None
+            self.requires = None
+            self.obsoletes = None
+
+    def read_pkg_file(self, file):
+        """Reads the metadata values from a file object."""
+        msg = _MetadataMessage(file)
+        metadata_version = msg['metadata-version']
+        self.name = msg.read_field('name')
+        self.version = msg.read_field('version')
+        self.description = msg.read_field('summary')
+        # we are filling author only.
+        self.author = msg.read_field('author')
         self.maintainer = None
+        self.author_email = msg.read_field('author-email')
         self.maintainer_email = None
-        self.url = None
-        self.license = None
-        self.description = None
-        self.long_description = None
-        self.keywords = None
-        self.platforms = None
-        self.classifiers = None
-        self.download_url = None
-        # PEP 314
-        self.provides = None
-        self.requires = None
-        self.obsoletes = None
+        self.url = msg.read_field('home-page')
+        self.license = msg.read_field('license')
+
+        if 'download-url' in msg:
+            self.download_url = msg.read_field('download-url')
+        else:
+            self.download_url = None
+
+        self.long_description = msg.read_field('description')
+        self.description = msg.read_field('summary')
+
+        if 'keywords' in msg:
+            self.keywords = msg.read_field('keywords').split(',')
+
+        self.platforms = msg.getheaders('platform', None)
+        self.classifiers = msg.getheaders('classifier', None)
+
+        # PEP 314 - these fields only exist in 1.1
+        if metadata_version == '1.1':
+            self.requires = msg.getheaders('requires', None)
+            self.provides = msg.getheaders('provides', None)
+            self.obsoletes = msg.getheaders('obsoletes', None)
+        else:
+            self.requires = None
+            self.provides = None
+            self.obsoletes = None
 
     def write_pkg_info(self, base_dir):
         """Write the PKG-INFO file into the release tree.

Modified: python/trunk/Lib/distutils/tests/test_dist.py
==============================================================================
--- python/trunk/Lib/distutils/tests/test_dist.py	(original)
+++ python/trunk/Lib/distutils/tests/test_dist.py	Tue Dec  8 09:56:49 2009
@@ -8,10 +8,9 @@
 import warnings
 import textwrap
 
-from distutils.dist import Distribution, fix_help_options
+from distutils.dist import Distribution, fix_help_options, DistributionMetadata
 from distutils.cmd import Command
 import distutils.dist
-
 from test.test_support import TESTFN, captured_stdout
 from distutils.tests import support
 
@@ -239,6 +238,7 @@
         # make sure --no-user-cfg disables the user cfg file
         self.assertEquals(len(all_files)-1, len(files))
 
+
 class MetadataTestCase(support.TempdirManager, support.EnvironGuard,
                        unittest.TestCase):
 
@@ -397,6 +397,33 @@
         meta = meta.replace('\n' + 8 * ' ', '\n')
         self.assertTrue(long_desc in meta)
 
+    def test_read_metadata(self):
+        attrs = {"name": "package",
+                 "version": "1.0",
+                 "long_description": "desc",
+                 "description": "xxx",
+                 "download_url": "http://example.com",
+                 "keywords": ['one', 'two'],
+                 "requires": ['foo']}
+
+        dist = Distribution(attrs)
+        metadata = dist.metadata
+
+        # write it then reloads it
+        PKG_INFO = StringIO.StringIO()
+        metadata.write_pkg_file(PKG_INFO)
+        PKG_INFO.seek(0)
+        metadata.read_pkg_file(PKG_INFO)
+
+        self.assertEquals(metadata.name, "package")
+        self.assertEquals(metadata.version, "1.0")
+        self.assertEquals(metadata.description, "xxx")
+        self.assertEquals(metadata.download_url, 'http://example.com')
+        self.assertEquals(metadata.keywords, ['one', 'two'])
+        self.assertEquals(metadata.platforms, ['UNKNOWN'])
+        self.assertEquals(metadata.obsoletes, None)
+        self.assertEquals(metadata.requires, ['foo'])
+
 def test_suite():
     suite = unittest.TestSuite()
     suite.addTest(unittest.makeSuite(DistributionTestCase))

Modified: python/trunk/Misc/NEWS
==============================================================================
--- python/trunk/Misc/NEWS	(original)
+++ python/trunk/Misc/NEWS	Tue Dec  8 09:56:49 2009
@@ -15,6 +15,8 @@
 Library
 -------
 
+- Issue #7457: added a read_pkg_file method to 
+  distutils.dist.DistributionMetadata.
 
 What's New in Python 2.7 alpha 1
 ================================
_______________________________________________
Python-checkins mailing list
Python-checkins@python.org
http://mail.python.org/mailman/listinfo/python-checkins

From SRS0=mBxM=ID=email.bn.com=BarnesandNobleEmail@bounce2.pobox.com  Thu Dec 17 02:10:26 2009
X-VM-v5-Data: ([nil nil nil nil nil nil nil nil nil]
	["14083" "Thursday" "17" "December" "2009" "03:08:57" "-0500" "Barnes & Noble" "BarnesandNobleEmail@email.bn.com" nil "207" "15% Online Coupon, plus 4 Days Left for Free Christmas Delivery" "^From:" nil nil "12" nil nil nil nil nil nil nil nil nil nil]
	nil)
Delivered-To: skip.montanaro@gmail.com
Received: from pop.gmail.com
 by montanaro.dyndns.org with POP3 (fetchmail-6.3.11)
 for <skip@localhost> (single-drop); Thu, 17 Dec 2009 02:10:25 -0600 (CST)
Received: by 10.216.54.195 with SMTP id i45cs122159wec;
 Thu, 17 Dec 2009 00:09:02 -0800 (PST)
Received: by 10.224.108.198 with SMTP id g6mr1429569qap.107.1261037341274;
 Thu, 17 Dec 2009 00:09:01 -0800 (PST)
Return-Path: <SRS0=mBxM=ID=email.bn.com=BarnesandNobleEmail@bounce2.pobox.com>
Received: from sepia.pobox.com (sepia.pobox.com [208.72.237.18])
 by mx.google.com with ESMTP id 6si4957128qwk.21.2009.12.17.00.09.00;
 Thu, 17 Dec 2009 00:09:01 -0800 (PST)
Received-SPF: pass (google.com: domain of
 SRS0=mBxM=ID=email.bn.com=BarnesandNobleEmail@bounce2.pobox.com designates
 208.72.237.18 as permitted sender) client-ip=208.72.237.18; 
Authentication-Results: mx.google.com; spf=pass (google.com: domain of
 SRS0=mBxM=ID=email.bn.com=BarnesandNobleEmail@bounce2.pobox.com designates
 208.72.237.18 as permitted sender)
 smtp.mail=SRS0=mBxM=ID=email.bn.com=BarnesandNobleEmail@bounce2.pobox.com
Received: from sepia.pobox.com (localhost [127.0.0.1])
 by sepia.pobox.com (Postfix) with ESMTP id 484F0415089
 for <skip.montanaro@gmail.com>; Thu, 17 Dec 2009 03:09:00 -0500 (EST)
Delivered-To: skip@pobox.com
X-Pobox-Orig-Sender: <BarnesandNobleEmail@email.bn.com>
X-Pobox-Delivery-ID: 6E6FBFE0-EAE3-11DE-AA43-FC49F28B9240-00107187!sepia.pobox.com
x-pobox-client-address: 198.31.62.91
x-pobox-client-name: mta.email.bn.com
Received: from mta.email.bn.com (mta.email.bn.com [198.31.62.91]) by
 sepia.pobox.com (Postfix) with ESMTP id F187A415152 for <skip@pobox.com>;
 Thu, 17 Dec 2009 03:08:57 -0500 (EST)
Message-Id: <Kilauea103628-38343-222077119-3-1006@flonetwork.com>
MIME-Version: 1.0
Content-Type: multipart/alternative;
 boundary="----000000000000000000000000000000000000000000000000000000000000000"
X-Spambayes-Evidence: '*H*': 0.00; '*S*': 1.00; 'code': 0.04; '50%': 0.16;
 'electronic': 0.16; 'preferences': 0.16; 'url:11': 0.16; 'url:2009': 0.16;
 'skip:u 10': 0.16; 'subject': 0.29; 'one': 0.32; 'received:208': 0.33;
 'received:208.72': 0.33; 'received:208.72.237': 0.33;
 'received:208.72.237.18': 0.35; 'received:sepia.pobox.com': 0.35;
 'receive': 0.37; 'any': 0.38; 'charset:us-ascii': 0.38; 'all': 0.40;
 'email': 0.65; 'header:Reply-To:1': 0.66; 'our': 0.66; 'to:addr:skip': 0.67;
 'add': 0.67; 'address': 0.67; 'details': 0.67; 'having': 0.67; 'top': 0.67;
 'to:addr:pobox.com': 0.69; 'please': 0.71; 'content-type:text/html': 0.75;
 'content-type:multipart/alternative': 0.77; '&copy; ': 0.84; 'below': 0.84;
 'book.': 0.84; 'electronics': 0.84; 'email?': 0.84; 'ensure': 0.84;
 'home': 0.84; 'href=""': 0.84; 'including': 0.84; 'learning': 0.84;
 'marketing': 0.84; 'must': 0.84; 'offer': 0.84; 'sale': 0.84;
 'subject:Delivery': 0.84; 'url-ip:96.17.150/24': 0.84; 'url-ip:96.17/16': 0.84;
 'url-ip:96/8': 0.84; 'above': 0.91; 'choose': 0.91; 'days': 0.91;
 'more.': 0.91; 'tools,': 0.91; 'trouble': 0.91; 'unsubscribe.': 0.91;
 'url-ip:208/8': 0.91; 'url:email': 0.93; 'url:pobox': 0.93; 'url:skip': 0.93;
 'viewing': 0.93; '&amp; ': 0.95; 'delivery': 0.95; 'url:gif': 0.95;
 'here': 0.96; 'url:jpg': 0.96; 'free': 0.97; 'header:Received:6': 0.97
From: "Barnes & Noble" <BarnesandNobleEmail@email.bn.com>
To: skip@pobox.com
Subject: 15% Online Coupon, plus 4 Days Left for Free Christmas Delivery
Date: Thu, 17 Dec 2009 03:08:57 -0500 (EST)
Reply-To: "Barnes & Noble "
 <BarnesandNobleEmail-ctg0aeb64aabstga2pfax5fstzyzaeha@email.bn.com>
X-Spambayes-Classification: spam; 1.00

------000000000000000000000000000000000000000000000000000000000000000
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: 7bit

To ensure you receive your Barnes & Noble emails, please add BarnesandNobleEmail@email.bn.com to your address book.

4 DAYS LEFT FOR FREE DELIVERY BY CHRISTMAS!*

*****

NEW ONLINE HOLIDAY COUPON

Extra 15% Off One Item**
On top of your everyday Member discount

4 Days Only! Expires Sunday, 12/20

>USE BN.com COUPON:
http://email.bn.com/cgi-bin6/DM/y/mcvI0RIIFT0KnD0BYnE0FV

To save 15% online you must enter coupon code V4P9A8V at checkout.

*****

SAVE UP TO 50% IN OUR GIFT GUIDE

Shop the season's hottest gifts including bestselling fiction,
children's books, DVDs, music, toys, games, and more.

>SHOP THE BN.COM HOLIDAY GIFT GUIDE:
http://email.bn.com/cgi-bin6/DM/y/mcvI0RIIFT0KnD0BYnF0FW

*****

HOME & ELECTRONICS SALE AT BN.COM

$10 Off Any $50 Home Electronics Purchase
>See Details:
http://email.bn.com/cgi-bin6/DM/y/mcvI0RIIFT0KnD0BYnG0FX

Choose from over 200 select audio and video gift ideas,
learning tools, gadgets, and accessories in the
BN.com Electronic Store.

Hurry! Offer ends 12/22
The above 15% BN.com coupon is not valid on Electronics.

>SHOP AT BN.COM:
http://email.bn.com/cgi-bin6/DM/y/mcvI0RIIFT0KnD0BYnH0FY

*****

*Free Delivery by Christmas Offer Details:
http://email.bn.com/cgi-bin6/DM/y/mcvI0RIIFT0KnD0BYnI0FZ

**Online Coupon V4P9A8V Offer Details:
http://email.bn.com/cgi-bin6/DM/y/mcvI0RIIFT0KnD0BYnJ0Fa

*****

Subject to availability. Prices are subject to change.

Click below to unsubscribe.
http://email.bn.com/cgi-bin6/DM/y/mcvI0RIIFT0KnD0BMYs0Fi&EmailAddr=skip@pobox.com

(c) 2009 Barnes & Noble. All Rights Reserved.
This email is an advertisement from Barnes & Noble, Inc., 76 Ninth Avenue New York, NY 10011, Attn: Marketing Preferences

------000000000000000000000000000000000000000000000000000000000000000
Content-Type: text/html; charset="us-ascii"
Content-Transfer-Encoding: 7bit

<html>
<head>
<title></title>
<style media="all" type="text/css">
table img { display:block; }
</style>
</head>
<body bgcolor="#bcdedd" marginheight="0" marginwidth="0" topmargin="0" leftmargin="0">

<table width="100%" bgcolor="#bcdedd" cellpadding="0" border="0">
  <tr>
    <td>
    
      <table width="775" border="0" cellpadding="0" cellspacing="0" align="center">
        <tr>
          <td width="775" align="left"><img src="http://images.barnesandnoble.com/pimages/email/gresources/spacer.gif" style="display:inline;" width="20" height="1" border="0" alt=" "><font face="arial" size="1" color="#333333"><font style="font-size:10px;">To ensure you receive your Barnes & Noble emails, please add <a href="mailto:BarnesandNobleEmail@email.bn.com" style="color:#5e8663"><b>BarnesandNobleEmail@email.bn.com</b></a> to your address book.</font></font><br><img src="http://images.barnesandnoble.com/pimages/email/gresources/spacer.gif" style="display:inline;" width="20" height="1" border="0" alt=" "><font face="arial" size="1" color="#003045" style="font-size:10px;">Having trouble viewing the email?&nbsp;<a href="http://email.bn.com/cgi-bin6/DM/y/ncvI0RIIFT0KnD0BYnK0Ea" style="color:#003045">Click Here</a></font></td>
        </tr>
        <tr>
          <td width="775" height="77"><b><img src="http://images.barnesandnoble.com/pimages/email/2009/11/HGG/header_775a_mem.jpg" alt="Barnes & Noble Member card" width="775" height="147" border="0" usemap="#map_member_logo"></b></td>
        </tr>
      </table>

      <table border="0" cellpadding="0" cellspacing="0" align="center" width="775">
        <tr>
          <td valign="middle" align="center"><font color="#003045" face="arial" size="1"><a href="http://email.bn.com/cgi-bin6/DM/y/ncvI0RIIFT0KnD0BYnL0Eb" style="text-decoration:none; color:#003045; font-size:12px;">BOOKS</a></font></td>
          <td valign="middle" align="center"><font color="#003045" face="arial" size="1">&nbsp; | &nbsp;</font></td>
          <td valign="middle" align="center"><font color="#003045" face="arial" size="1"><a href="http://email.bn.com/cgi-bin6/DM/y/ncvI0RIIFT0KnD0BYnM0Ec" style="text-decoration:none; color:#003045; font-size:12px;">eBOOKS</a></font></td>
          <td valign="middle" align="center"><font color="#003045" face="arial" size="1">&nbsp; | &nbsp;</font></td>
          <td valign="middle" align="center"><font color="#003045" face="arial" size="1"><a href="http://email.bn.com/cgi-bin6/DM/y/ncvI0RIIFT0KnD0BYnN0Ed" style="text-decoration:none; color:#003045; font-size:12px;">nook</a></font></td>
          <td valign="middle" align="center"><font color="#003045" face="arial" size="1">&nbsp; | &nbsp;</font></td>
          <td valign="middle" align="center"><font color="#003045" face="arial" size="1"><a href="http://email.bn.com/cgi-bin6/DM/y/ncvI0RIIFT0KnD0BYnO0Ee" style="text-decoration:none; color:#003045; font-size:12px;">DVDs</a></font></td>
          <td valign="middle" align="center"><font color="#003045" face="arial" size="1">&nbsp; | &nbsp;</font></td>
          <td valign="middle" align="center"><font color="#003045" face="arial" size="1"><a href="http://email.bn.com/cgi-bin6/DM/y/ncvI0RIIFT0KnD0BYnP0Ef" style="text-decoration:none; color:#003045; font-size:12px;">MUSIC</a></font></td>
          <td valign="middle" align="center"><font color="#003045" face="arial" size="1">&nbsp; | &nbsp;</font></td>
          <td valign="middle" align="center"><font color="#003045" face="arial" size="1"><a href="http://email.bn.com/cgi-bin6/DM/y/ncvI0RIIFT0KnD0BYnQ0Eg" style="text-decoration:none; color:#003045; font-size:12px;">KIDS</a></font></td>
          <td valign="middle" align="center"><font color="#003045" face="arial" size="1">&nbsp; | &nbsp;</font></td>
          <td valign="middle" align="center"><font color="#003045" face="arial" size="1"><a href="http://email.bn.com/cgi-bin6/DM/y/ncvI0RIIFT0KnD0BYnR0Eh" style="text-decoration:none; color:#003045; font-size:12px;">HOME &amp; GIFT</a></font></td>
          <td valign="middle" align="center"><font color="#003045" face="arial" size="1">&nbsp; | &nbsp;</font></td>
          <td valign="middle" align="center"><font color="#003045" face="arial" size="1"><a href="http://email.bn.com/cgi-bin6/DM/y/ncvI0RIIFT0KnD0BYnS0Ei" style="text-decoration:none; color:#003045; font-size:12px;">GIFT CARDS</a></font></td>
          <td valign="middle" align="center"><font color="#003045" face="arial" size="1">&nbsp; | &nbsp;</font></td>
          <td valign="middle" align="center"><font color="#003045" face="arial" size="1"><a href="http://email.bn.com/cgi-bin6/DM/y/ncvI0RIIFT0KnD0BYnT0Ej" style="text-decoration:none; color:#003045; font-size:12px;">STORE LOCATOR</a></font></td>
          <td valign="middle" align="center"><font color="#003045" face="arial" size="1">&nbsp; | &nbsp;</font></td>
          <td valign="middle" align="center"><font color="#af292e" face="arial" size="1"><a href="http://email.bn.com/cgi-bin6/DM/y/ncvI0RIIFT0KnD0BYnF0EV" style="text-decoration:none; color:#af292e ; font-size:12px;"><strong>GIFT GUIDE</strong></a></font></td>
        </tr>
      </table>
      
      <table width="775" border="0" cellspacing="0" cellpadding="0" align="center">
        <tr>
          <td><img src="http://images.barnesandnoble.com/pimages/email/gresources/spacer.gif" style="display:inline;" width="1" height="10" border="0" alt=" "></td>
        </tr>
      </table>
      
      <table width="775" bgcolor="#ffffff" cellpadding="0" cellspacing="0" border="0" align="center">
        <tr>
          <td width="775" height="77"><a href="http://email.bn.com/cgi-bin6/DM/y/ncvI0RIIFT0KnD0BYnI0EY"><img src="http://images.barnesandnoble.com/pimages/email/2009/12/HGG/OnlineCoup/1217_M_OnlineCoup_01.gif" alt="4 DAYS LEFT for FREE DELIVERY by Christmas! SEE DETAILS" width="775" height="92" border="0"></a></td>
        </tr>
        <tr>
          <td width="775" height="77"><a href="http://email.bn.com/cgi-bin6/DM/y/ncvI0RIIFT0KnD0BYnE0EU"><img src="http://images.barnesandnoble.com/pimages/email/2009/12/HGG/OnlineCoup/1217_M_OnlineCoup_02.gif" alt="NEW - ONLINE Holiday Coupon" width="775" height="205" border="0"></a></td>
        </tr>
        <tr>
          <td width="775" height="77"><a href="http://email.bn.com/cgi-bin6/DM/y/ncvI0RIIFT0KnD0BYnE0EU"><img src="http://images.barnesandnoble.com/pimages/email/2009/12/HGG/OnlineCoup/1217_M_OnlineCoup_03.jpg" alt="Graphic Image: Gift box" width="775" height="296" border="0"></a></td>
        </tr>
        <tr>
          <td width="775" height="77"><a href="http://email.bn.com/cgi-bin6/DM/y/ncvI0RIIFT0KnD0BYnE0EU"><img src="http://images.barnesandnoble.com/pimages/email/2009/12/HGG/OnlineCoup/1217_M_OnlineCoup_04.jpg" alt="Extra 15% OFF ONE ITEM" width="775" height="288" border="0"></a></td>
        </tr>
        <tr>
          <td width="775" height="77"><a href="http://email.bn.com/cgi-bin6/DM/y/ncvI0RIIFT0KnD0BYnE0EU"><img src="http://images.barnesandnoble.com/pimages/email/2009/12/HGG/OnlineCoup/1217_M_OnlineCoup_05.gif" alt="On top of you everyday Member discount. 4 Days Only! Expires Sunday, 12/20. USE BN.COM COUPON" width="775" height="175" border="0"></a></td>
        </tr>
      </table>

      <table width="775" bgcolor="#e3dfb2" cellpadding="0" cellspacing="0" border="0" align="center">
        <tr>
          <td width="267" height="35"><img src="http://images.barnesandnoble.com/pimages/email/2009/12/HGG/1217_B2B_OnlineCoup_06.gif" alt="" width="267" height="35" border="0"></td>
          <td width="247" bgcolor="#e3dfb2" height="35" align="center">

            <font face="arial" size="1" color="#333333">
              <font style="font-size:11px;">
              
                To save 15% online you must enter coupon code <strong><font color="#891a1c">V4P9A8V</font></strong> at checkout. <a href="http://email.bn.com/cgi-bin6/DM/y/ncvI0RIIFT0KnD0BYnJ0EZ" style="color:#000000;"><font style="font-size:10px;"><font color="#000000">SEE DETAILS</font></font></a>
              
              </font>
            </font>

          </td>
          <td width="261" height="35"><img src="http://images.barnesandnoble.com/pimages/email/2009/12/HGG/1217_B2B_OnlineCoup_08.gif" alt="" width="261" height="35" border="0"></td>
        </tr>
      </table>

      <table width="775" bgcolor="#ffffff" cellpadding="0" cellspacing="0" border="0" align="center">
        <tr>
          <td><img src="http://images.barnesandnoble.com/pimages/email/2009/12/HGG/OnlineCoup/1217_M_OnlineCoup_09.gif" alt="" width="775" height="65" border="0"></td>
        </tr>
<!--
        <tr>
          <td width="775" height="77"><a href="http://email.bn.com/cgi-bin6/DM/y/ncvI0RIIFT0KnD0BYnU0Ek"><img src="http://images.barnesandnoble.com/pimages/email/2009/12/HGG/OnlineCoup/1217_M_OnlineCoup_10.jpg" alt="FLIP FOR THIS DEAL - Get 2 Free Accessories with Select Flip Camcorders -- That's a $40 Value! Hurry - First 1,000 Units Only.  The above 15% BN.com coupon is not valid on Flip or Flip accessories. SHOP NOW." width="775" height="312" border="0"></a></td>
        </tr>
-->
      </table>

      <table width="775" bgcolor="#ffffff" cellpadding="0" cellspacing="0" border="0" align="center">
        <tr>
          <td width="386" height="177"><img src="http://images.barnesandnoble.com/pimages/email/2009/12/HGG/OnlineCoup/1217_M_OnlineCoup_11.jpg" alt="HOME & ELECTRONICS SALE AT BN.COM. $10 Off Any $50 Home Electronics Purchase. See Details. Choose from over 200 select audio and video gift ideas, learning tools, gadgets, and accessories in the BN.com Electronic Store. Hurry! Offer ends 12/22. The above 15% BN.com coupon is not valid on Electronics. SHOP AT BN.COM" width="386" height="367" border="0" usemap="#Map"></td>
          <td width="389" height="177"><a href="http://email.bn.com/cgi-bin6/DM/y/ncvI0RIIFT0KnD0BYnF0EV"><img src="http://images.barnesandnoble.com/pimages/email/2009/12/HGG/OnlineCoup/1217_M_OnlineCoup_12.jpg" alt="SAVE UP TO 50% IN OUR GIFT GUIDE. Shop the season's hottest gifts including bestselling fiction, children's books, DVDs, music, toys, games, and more. SHOP THE BN.COM HOLIDAY GIFT GUIDE." width="389" height="367" border="0"></a></td>
        </tr>
      </table>

      <table width="775" cellpadding="0" cellspacing="0" align="center" border="0">
        <tr>
          <td align="left" bgcolor="#bcdedd"><br><font face="arial" size="1" color="#333333"><font style="font-size:11px;">Subject to availability. Prices are subject to change.<br><br>

<a href="http://email.bn.com/cgi-bin6/DM/y/ncvI0RIIFT0KnD0BMYs0Eh&EmailAddr=skip@pobox.com" style="color:#5e8663">Click here</a> to unsubscribe.<br><br>

&copy;&nbsp;2009&nbsp;Barnes & Noble. All Rights Reserved.<br>This email is an advertisement from Barnes & Noble, Inc., 76 Ninth Avenue New York, NY 10011, Attn: Marketing Preferences</font></font><br><br></td>
        </tr>
      </table>

    </td>
  </tr>
</table>

<map name="map_member_logo">
  <area shape="rect" coords="117,43,389,122" href="http://email.bn.com/cgi-bin6/DM/y/ncvI0RIIFT0KnD0BYnE0EU" alt="Barnes & Noble">
  <area shape="rect" coords="15,43,111,122" href="http://email.bn.com/cgi-bin6/DM/y/ncvI0RIIFT0KnD0BYnV0El" alt="Barnes & Noble Member card">
</map>

<map name="Map">
  <area shape="rect" coords="306,118,368,127" href="http://email.bn.com/cgi-bin6/DM/y/ncvI0RIIFT0KnD0BYnG0EW" alt="http://email.bn.com/cgi-bin6/DM/y/ncvI0RIIFT0KnD0BYnG0EW">
  <area shape="poly" coords="2,2,384,2,384,126,368,126,368,117,305,117,305,127,383,127,383,364,2,364" href="http://email.bn.com/cgi-bin6/DM/y/ncvI0RIIFT0KnD0BYnH0EX" alt="HOME & ELECTRONICS SALE AT BN.COM. $10 Off Any $50 Home Electronics Purchase. Choose from over 200 select audio and video gift ideas, learning tools, gadgets, and accessories in the BN.com Electronic Store. Hurry! Offer ends 12/22. The above 15% BN.com coupon is not valid on Electronics. SHOP AT BN.COM">
</map>

</body>

<IMG SRC="http://email.bn.com/cgi-bin6/flosensing?y=cvI0RIIFT0KnD0D6"></html>

------000000000000000000000000000000000000000000000000000000000000000--

From chipx86@gmail.com  Wed Dec 16 23:17:09 2009
X-VM-v5-Data: ([nil nil nil nil nil nil nil nil nil]
	["30100" "Wednesday" "16" "December" "2009" "21:16:37" "-0800" "Christian Hammond" "chipx86@chipx86.com" nil "721" "Re: Re: Re: About Error occured when print \"view diff\" on User WebUI  of ReviewBoard" "^From:" nil nil "12" nil nil nil nil nil nil nil nil nil nil]
	nil)
Delivered-To: skip.montanaro@gmail.com
Received: from pop.gmail.com
 by montanaro.dyndns.org with POP3 (fetchmail-6.3.11)
 for <skip@localhost> (single-drop); Wed, 16 Dec 2009 23:17:09 -0600 (CST)
Received: by 10.213.7.80 with SMTP id c16cs272396ebc;
 Wed, 16 Dec 2009 21:17:03 -0800 (PST)
Received: from mr.google.com ([10.115.101.29])
 by 10.115.101.29 with SMTP id d29mr1212393wam.2.1261027021257 (num_hops = 1); 
 Wed, 16 Dec 2009 21:17:01 -0800 (PST)
Received: by 10.115.101.29 with SMTP id d29mr243552wam.2.1261027021084;
 Wed, 16 Dec 2009 21:17:01 -0800 (PST)
X-BeenThere: reviewboard@googlegroups.com
Received: by 10.114.188.15 with SMTP id l15ls44116waf.3.p; Wed, 16 Dec 2009 
 21:16:58 -0800 (PST)
Received: by 10.114.5.28 with SMTP id 28mr412521wae.5.1261027018390;
 Wed, 16 Dec 2009 21:16:58 -0800 (PST)
Received: by 10.114.5.28 with SMTP id 28mr412519wae.5.1261027018329;
 Wed, 16 Dec 2009 21:16:58 -0800 (PST)
Return-Path: <chipx86@gmail.com>
Received: from mail-pw0-f47.google.com (mail-pw0-f47.google.com
 [209.85.160.47])
 by gmr-mx.google.com with ESMTP id 25si341933pzk.15.2009.12.16.21.16.57;
 Wed, 16 Dec 2009 21:16:57 -0800 (PST)
Received-SPF: pass (google.com: domain of chipx86@gmail.com designates
 209.85.160.47 as permitted sender) client-ip=209.85.160.47; 
Received: by pwi1 with SMTP id 1so1337462pwi.6
 for <reviewboard@googlegroups.com>; Wed, 16 Dec 2009 21:16:57 -0800 (PST)
MIME-Version: 1.0
Received: by 10.142.56.16 with SMTP id e16mr1250674wfa.304.1261027017149; Wed, 
 16 Dec 2009 21:16:57 -0800 (PST)
In-Reply-To: <17885243.133851261021388029.JavaMail.coremail@bj163app29.163.com>
References: <af54a7c0-acd8-43f3-ab48-2085ed70e2c8@m33g2000pri.googlegroups.com> 
 <63ad9213-0c85-4d7b-869b-976fb9761d35@15g2000prz.googlegroups.com> 
 <6f4908f5-c2f9-455f-b243-de052b31ff6d@r24g2000prf.googlegroups.com> 
 <1eb5631b0912160108t403fe8dsc08469e046e07cdf@mail.gmail.com> 
 <5635528.124231261020425040.JavaMail.coremail@bj163app29.163.com> 
 <1eb5631b0912161930n560e7acbwbb0053e4599237@mail.gmail.com> 
 <17885243.133851261021388029.JavaMail.coremail@bj163app29.163.com>
Message-ID: <1eb5631b0912162116h203d1d36u899e431927429e15@mail.gmail.com>
X-Original-Authentication-Results: gmr-mx.google.com; spf=pass (google.com: 
 domain of chipx86@gmail.com designates 209.85.160.47 as permitted sender) 
 smtp.mail=chipx86@gmail.com; dkim=pass (test mode) header.i=@gmail.com
X-Original-Sender: chipx86@gmail.com
Precedence: list
Mailing-list: list reviewboard@googlegroups.com;
 contact reviewboard+owners@googlegroups.com
List-ID: <reviewboard.googlegroups.com>
List-Post: <http://groups.google.com/group/reviewboard/post?hl=>, 
 <mailto:reviewboard@googlegroups.com>
List-Help: <http://groups.google.com/support/?hl=>,
 <mailto:reviewboard+help@googlegroups.com>
List-Archive: <http://groups.google.com/group/reviewboard?hl=>
X-Thread-Url: http://groups.google.com/group/reviewboard/t/7398ae9edb0f49ea
X-Message-Url: http://groups.google.com/group/reviewboard/msg/573012e2cdb4edcc
List-Unsubscribe: <http://groups.google.com/group/reviewboard/subscribe?hl=>, 
 <mailto:reviewboard+unsubscribe@googlegroups.com>
List-Subscribe: <http://groups.google.com/group/reviewboard/subscribe?hl=>, 
 <mailto:reviewboard+subscribe@googlegroups.com>
Content-Type: multipart/alternative; boundary=001636b2bbfd68cf40047ae5bbd7
X-Spambayes-Evidence: '*H*': 0.48; '*S*': 0.30; 'header:In-Reply-To:1': 0.03;
 'code': 0.04; 'they': 0.04; 'case': 0.09; 'topic': 0.09; '"view': 0.16;
 'apply': 0.16; 'changed': 0.16; 'content': 0.16; 'correctly.': 0.16;
 'dec': 0.16; 'error': 0.16; 'going': 0.16; 'hi,': 0.16; 'line': 0.16;
 'linux': 0.16; 'much': 0.16; 'now.': 0.16; 'ok,': 0.16; 'patch': 0.16;
 'pm,': 0.16; 'seems': 0.16; 'show': 0.16; 'skip:" 60': 0.16; 'skip:0 10': 0.16;
 'solve': 0.16; 'source': 0.16; 'still': 0.16; 'text': 0.16; 'url:3': 0.16;
 'user,': 0.16; 'version': 0.16; 'well,': 0.16; 'while': 0.16; 'windows': 0.16;
 'works': 0.16; 'wrong.': 0.16; 'where': 0.16; 'board': 0.19; 'wrote:': 0.23;
 'subject:: ': 0.26; 'but': 0.26; 'url:org': 0.28; 'may': 0.29;
 'received:209': 0.30; 'received:209.85': 0.30; 'clicking': 0.30; 'end': 0.30;
 'help': 0.30; 'one': 0.32; 'would': 0.34; 'how': 0.35; "i'd": 0.35;
 'skip:( 10': 0.35; 'first': 0.37; 'message-id:@mail.gmail.com': 0.37;
 'any': 0.38; 'skip:i 10': 0.38; 'header:Received:10': 0.39; 'what': 0.39;
 'reply-to:addr:googlegroups.com': 0.63; 'sender:addr:googlegroups.com': 0.63;
 'skip:w 10': 0.63; 'many': 0.65; 'skip:r 10': 0.65;
 'reply-to:no real name:2**0': 0.65; 'email': 0.65; 'header:Reply-To:1': 0.66;
 'been': 0.66; 'group': 0.66; 'add': 0.67; 'file': 0.67; 'really': 0.67;
 'skip:f 10': 0.67; 'skip:p 20': 0.67; 'skip:v 10': 0.67; 'group,': 0.68;
 'post': 0.68; 'please': 0.71; 'want': 0.72; 'skip:d 10': 0.73;
 'content-type:text/html': 0.75; 'email addr:googlegroups.com': 0.77;
 'content-type:multipart/alternative': 0.77; 'charset:utf-8': 0.80;
 'need': 0.80; 'options,': 0.80; '---': 0.84; '8bit%:23': 0.84; 'created': 0.84;
 'description': 0.84; "didn't": 0.84; 'different': 0.84; 'errors': 0.84;
 'last': 0.84; 'mac': 0.84; 'must': 0.84; 'saved': 0.84; 'skip:e 20': 0.84;
 'skip:t 60': 0.84; 'subject:Error': 0.84; 'tue,': 0.84; 'url-ip:96/8': 0.84;
 'attached': 0.91; 'before': 0.91; 'kind': 0.91; 'neither': 0.91;
 'request': 0.91; 'url-ip:208/8': 0.91; 'waiting': 0.91; 'give': 0.93;
 'make': 0.93; 'original': 0.93; 'return': 0.93; 'review': 0.93; 'view': 0.96
From: Christian Hammond <chipx86@chipx86.com>
Sender: reviewboard@googlegroups.com
To: reviewboard@googlegroups.com
Subject: Re: Re: Re: About Error occured when print "view diff" on User WebUI 
 of ReviewBoard
Date: Wed, 16 Dec 2009 21:16:37 -0800
Reply-To: reviewboard@googlegroups.com
X-Spambayes-Classification: unsure; 0.41

--001636b2bbfd68cf40047ae5bbd7
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: quoted-printable

That's on the client, not the server, right?

What version of patch is on the server?

Christian

--=20
Christian Hammond - chipx86@chipx86.com
Review Board - http://www.reviewboard.org
VMware, Inc. - http://www.vmware.com


On Wed, Dec 16, 2009 at 7:43 PM, qhlonline <qhlonline@163.com> wrote:

>
> I am using the TortoiseCVS as CVS client, I am not sure what kind of diff
> it support, But my diff command is using as "cvs diff -uN ...". Can you
> please recommand me some GNU-diff-supported CVS client run on Windows OS?
> Thanks.
>
> Best Regards!
>
> =E5=9C=A82009-12-17=EF=BC=8C"Christian Hammond" <chipx86@chipx86.com> =E5=
=86=99=E9=81=93=EF=BC=9A
>
> What version of diff is on the Windows install? It must specifically use
> GNU diff, and not some other diff tool.
>
> Christian
>
> --
> Christian Hammond - chipx86@chipx86.com
> Review Board - http://www.reviewboard.org
> VMware, Inc. - http://www.vmware.com
>
>
> On Wed, Dec 16, 2009 at 7:27 PM, qhlonline <qhlonline@163.com> wrote:
>
>> Hi, Christian,
>>   Now that is the different diff file contents of the same file change:
>> On Windows:
>> WWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWW
>> Index: abc.c
>> =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
>> RCS file: /export/home/cvsroot/test/abc.c,v
>> retrieving revision 1.1
>> diff -u -r1.1 abc.c
>> --- abc.c    2009/12/17 02:37:24    1.1
>> +++ abc.c    2009/12/17 02:43:08
>> @@ -2,6 +2,7 @@
>>  #include <stdlib.h>
>>  int main()
>>  {
>> +    printf("Begin, Begin!");
>>      print("Hello World!");
>>      if(a=3D=3D5)
>>      {
>> @@ -11,4 +12,5 @@
>>      {
>>          printf("Hi,sir!");
>>      }
>> +    printf("Hello, Sir!");
>>  }
>> WWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWW
>> And on Linux:
>> LLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLL
>> Index: abc.c
>> =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
>> RCS file: /export/home/cvsroot/test/abc.c,v
>> retrieving revision 1.1
>> diff -u -r1.1 abc.c
>> --- abc.c    2009/12/17 02:37:24    1.1
>> +++ abc.c    2009/12/17 02:50:30
>> @@ -2,6 +2,7 @@
>>  #include <stdlib.h>
>>  int main()
>>  {
>> +    printf("Begin, Begin!");
>>      print("Hello World!");
>>      if(a=3D=3D5)
>>      {
>> @@ -11,4 +12,5 @@
>>      {
>>          printf("Hi,sir!");
>>      }
>> -}
>> \ No newline at end of file
>> +    printf("Hello, Sir!");
>> +}
>> LLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLL
>> There is no much difference. But the linux diff file ends with a warning=
:
>> "\ No newline at end of file" and the end Brace"}" has been viewed as a
>> change: + and -; This kind of format diff file works well, The Reviewer =
can
>> open the "view diff" correctly. But the windows diff file format, which =
gave
>> no warning and view the last brace as unchanged, with this format, The
>> Reviewers clicking "view diff" will report error as in the first message=
 of
>> this topic I have pointed. And infect I have never add any new-line to t=
he
>> end of the source code file:  neither the original file, nore the chenge=
d
>> files in both Operating System.
>>    And If I had manualy add a blank new line in the changed file in
>> Windows local source code file, I will get the same diff file content as
>> that of linux said above, And that may slove this problem. But I don't k=
now
>> why. and How to  fundamentally solve the problem?
>>
>> Best Regards!
>>
>>
>> =E5=9C=A82009-12-16=EF=BC=8C"Christian Hammond" <chipx86@chipx86.com> =
=E5=86=99=E9=81=93=EF=BC=9A
>>
>> I don't really know what you mean, but I know that many companies using
>> Review Board have clients on Linux, Windows and Mac who post to a Review
>> Board server on Linux without any problems. I'd have to see some diffs a=
nd
>> original source files where this fails to have an idea as to what's goin=
g
>> wrong.
>>
>> Christian
>>
>> --
>> Christian Hammond - chipx86@chipx86.com
>> Review Board - http://www.reviewboard.org
>> VMware, Inc. - http://www.vmware.com
>>
>>
>> On Tue, Dec 15, 2009 at 7:55 PM, JohnHenry <qhlonline@163.com> wrote:
>>
>>> I have viewed the diff file of both Windows and Linux, It seems that
>>> not only they have difference between there "NewLine" character, There
>>> are some file format difference but I am not sure, Can any one give a
>>> description of there difference?
>>>
>>> Best Regards!
>>>
>>> On Dec 15, 4:09 pm, JohnHenry <qhlonl...@163.com> wrote:
>>> > OK, The first problem is that I have Created new ReviewRequest in
>>> > WindowsOS through Web UI while the RB Server is on Linux. When I use
>>> > post-review in linux to create new ReviewRequest , That will be fine.
>>> > But I had not test the windowsOS post-review generated new
>>> > ReviewRequest now.
>>> > But the second problem, How to make Review to the review request
>>> > generated with newly source code( that is the source code has never
>>> > been commited to CVS ) is waiting for suggestion.
>>> >
>>> > Best Regards!
>>> >
>>> > On 12=E6=9C=8815=E6=97=A5, =E4=B8=8B=E5=8D=883=E6=97=B636=E5=88=86, J=
ohnHenry <qhlonl...@163.com> wrote:
>>> >
>>> >
>>> >
>>> > > Hi,
>>> > >    I have tried to post a review request and publish it using one
>>> > > User, But in the Reviewers' UI, when He cilck the "view diff" link =
on
>>> > > the top-right, There will be some error infomation:
>>> > > **************************************************
>>> > > The patch to 'mySouceTest.c' didn't apply cleanly. The temporary
>>> files
>>> > > have been left in '/tmp/reviewboard.zX0n4M' for debugging purposes.
>>> > > `patch` returned: patching file /tmp/reviewboard.zX0n4M/tmphNZpB0
>>> > > patch: **** malformed patch at line 25: - exit(1);
>>> >
>>> > > Traceback (most recent call last):
>>> > >   File
>>> "/data1/John1/bin/develop_tools/python/python2.5/lib/python2.5/
>>> > > site-packages/ReviewBoard-1.0.5.1-py2.5.egg/reviewboard/diffviewer/
>>> > > views.py", line 153, in view_diff
>>> > >     interdiffset, highlighting, True)
>>> > >   File
>>> "/data1/John1/bin/develop_tools/python/python2.5/lib/python2.5/
>>> > > site-packages/ReviewBoard-1.0.5.1-py2.5.egg/reviewboard/diffviewer/
>>> > > diffutils.py", line 623, in get_diff_files
>>> > >     large_data=3DTrue)
>>> > >   File
>>> "/data1/qiaohl/bin/develop_tools/python/python2.5/lib/python2.5/
>>> > > site-packages/Djblets-0.5.6-py2.5.egg/djblets/util/misc.py", line
>>> 162,
>>> > > in cache_memoize
>>> > >     data =3D lookup_callable()
>>> > >   File
>>> "/data1/John1/bin/develop_tools/python/python2.5/lib/python2.5/
>>> > > site-packages/ReviewBoard-1.0.5.1-py2.5.egg/reviewboard/diffviewer/
>>> > > diffutils.py", line 622, in <lambda>
>>> > >     enable_syntax_highlighting),
>>> > >   File
>>> "/data1/John1/bin/develop_tools/python/python2.5/lib/python2.5/
>>> > > site-packages/ReviewBoard-1.0.5.1-py2.5.egg/reviewboard/diffviewer/
>>> > > diffutils.py", line 345, in get_chunks
>>> > >     new =3D get_patched_file(old, filediff)
>>> > >   File
>>> "/data1/John1l/bin/develop_tools/python/python2.5/lib/python2.5/
>>> > > site-packages/ReviewBoard-1.0.5.1-py2.5.egg/reviewboard/diffviewer/
>>> > > diffutils.py", line 261, in get_patched_file
>>> > >     return patch(filediff.diff, buffer, filediff.dest_file)
>>> > >   File
>>> "/data1/John1/bin/develop_tools/python/python2.5/lib/python2.5/
>>> > > site-packages/ReviewBoard-1.0.5.1-py2.5.egg/reviewboard/diffviewer/
>>> > > diffutils.py", line 129, in patch
>>> > >     (filename, tempdir, patch_output))
>>> > > Exception: The patch to 'myUCMobile.c' didn't apply cleanly. The
>>> > > temporary files have been left in '/tmp/reviewboard.zX0n4M' for
>>> > > debugging purposes.
>>> > > `patch` returned: patching file /tmp/reviewboard.zX0n4M/tmphNZpB0
>>> > > patch: **** malformed patch at line 25: -               exit(1);
>>> > > *******************************************************************
>>> > > Need suggestion.
>>> > > And, If I want to make a new reivewrequest with a new file that has
>>> > > never been commited to CVS repository before ,The info would be as
>>> > > follows:
>>> > >
>>> -----------------------------------------------------------------------=
----=C2=AD--->>>
>>> Review request draft saved
>>> > > >>> Uploading diff, size: 50
>>> > > >>> HTTP POSTing tohttp://
>>> 192.168.3.20:8080/api/json/reviewrequests/9/diff/new/:{}<http://192.168=
.3.20:8080/api/json/reviewrequests/9/diff/new/:%7B%7D>
>>> > > >>> {"fields": {"path": ["The diff file is empty"]}, "stat": "fail"=
,
>>> "err": {"msg": "One or more fields had errors", "code": 105}}
>>> >
>>> > > Error uploading diff: One or more fields had errors (105)>>>
>>> {'fields': {'path': ['The diff file is empty']}, 'stat': 'fail', 'err':
>>> {'msg': 'One or more fields had errors', 'code': 105}}
>>> >
>>> > > Your review request still exists, but the diff is not attached
>>> > >
>>> -----------------------------------------------------------------------=
----=C2=AD-----------------
>>> > > In that case , Can the reviewer see the source code in the new file
>>> of
>>> > > ReviewRequestor's any way?
>>> >
>>> > > Best Regards!- Hide quoted text -
>>> >
>>> > - Show quoted text -
>>>
>>> --
>>> Want to help the Review Board project? Donate today at
>>> http://www.reviewboard.org/donate/
>>> Happy user? Let us know at http://www.reviewboard.org/users/
>>> -~----------~----~----~----~------~----~------~--~---
>>> To unsubscribe from this group, send email to
>>> reviewboard+unsubscribe@googlegroups.com<reviewboard%2Bunsubscribe@goog=
legroups.com>
>>> For more options, visit this group at
>>> http://groups.google.com/group/reviewboard?hl=3Den
>>>
>>
>>  --
>> Want to help the Review Board project? Donate today at
>> http://www.reviewboard.org/donate/
>> Happy user? Let us know at http://www.reviewboard.org/users/
>> -~----------~----~----~----~------~----~------~--~---
>> To unsubscribe from this group, send email to reviewboard+
>> unsubscribe@googlegroups.com
>> For more options, visit this group at
>> http://groups.google.com/group/reviewboard?hl=3Den
>>
>>
>>
>>  --
>> Want to help the Review Board project? Donate today at
>> http://www.reviewboard.org/donate/
>> Happy user? Let us know at http://www.reviewboard.org/users/
>> -~----------~----~----~----~------~----~------~--~---
>> To unsubscribe from this group, send email to
>> reviewboard+unsubscribe@googlegroups.com<reviewboard%2Bunsubscribe@googl=
egroups.com>
>> For more options, visit this group at
>> http://groups.google.com/group/reviewboard?hl=3Den
>>
>
>  --
> Want to help the Review Board project? Donate today at
> http://www.reviewboard.org/donate/
> Happy user? Let us know at http://www.reviewboard.org/users/
> -~----------~----~----~----~------~----~------~--~---
> To unsubscribe from this group, send email to reviewboard+
> unsubscribe@googlegroups.com
> For more options, visit this group at
> http://groups.google.com/group/reviewboard?hl=3Den
>
>
>
>  --
> Want to help the Review Board project? Donate today at
> http://www.reviewboard.org/donate/
> Happy user? Let us know at http://www.reviewboard.org/users/
> -~----------~----~----~----~------~----~------~--~---
> To unsubscribe from this group, send email to
> reviewboard+unsubscribe@googlegroups.com<reviewboard%2Bunsubscribe@google=
groups.com>
> For more options, visit this group at
> http://groups.google.com/group/reviewboard?hl=3Den
>

--=20
Want to help the Review Board project? Donate today at http://www.reviewboa=
rd.org/donate/
Happy user? Let us know at http://www.reviewboard.org/users/
-~----------~----~----~----~------~----~------~--~---
To unsubscribe from this group, send email to reviewboard+unsubscribe@googl=
egroups.com
For more options, visit this group at http://groups.google.com/group/review=
board?hl=3Den
--001636b2bbfd68cf40047ae5bbd7
Content-Type: text/html; charset=UTF-8
Content-Transfer-Encoding: quoted-printable

That&#39;s on the client, not the server, right?<br><br>What version of pat=
ch is on the server?<br><br>Christian<br><br clear=3D"all">-- <br>Christian=
 Hammond - <a href=3D"mailto:chipx86@chipx86.com">chipx86@chipx86.com</a><b=
r>

Review Board - <a href=3D"http://www.reviewboard.org">http://www.reviewboar=
d.org</a><br>VMware, Inc. - <a href=3D"http://www.vmware.com">http://www.vm=
ware.com</a><br>
<br><br><div class=3D"gmail_quote">On Wed, Dec 16, 2009 at 7:43 PM, qhlonli=
ne <span dir=3D"ltr">&lt;<a href=3D"mailto:qhlonline@163.com">qhlonline@163=
.com</a>&gt;</span> wrote:<br><blockquote class=3D"gmail_quote" style=3D"bo=
rder-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding=
-left: 1ex;">

<div><br>I am using the TortoiseCVS as CVS client, I am not sure what kind =
of diff it support, But my diff command is using as &quot;cvs diff -uN ...&=
quot;. Can you please recommand me some GNU-diff-supported CVS client run o=
n Windows OS? Thanks.<br>

<br>Best Regards!<br></div><div></div><br>=E5=9C=A82009-12-17=EF=BC=8C&quot=
;Christian Hammond&quot; &lt;<a href=3D"mailto:chipx86@chipx86.com" target=
=3D"_blank">chipx86@chipx86.com</a>&gt; =E5=86=99=E9=81=93=EF=BC=9A<br> <bl=
ockquote style=3D"border-left: 1px solid rgb(204, 204, 204); margin: 0px 0p=
x 0px 0.8ex; padding-left: 1ex;">

<div><div></div><div class=3D"h5">What version of diff is on the Windows in=
stall? It must specifically use GNU diff, and not some other diff tool.<br>=
<br>Christian<br><br clear=3D"all">-- <br>Christian Hammond - <a href=3D"ma=
ilto:chipx86@chipx86.com" target=3D"_blank">chipx86@chipx86.com</a><br>



Review Board - <a href=3D"http://www.reviewboard.org" target=3D"_blank">htt=
p://www.reviewboard.org</a><br>VMware, Inc. - <a href=3D"http://www.vmware.=
com" target=3D"_blank">http://www.vmware.com</a><br>
<br><br><div class=3D"gmail_quote">On Wed, Dec 16, 2009 at 7:27 PM, qhlonli=
ne <span dir=3D"ltr">&lt;<a href=3D"mailto:qhlonline@163.com" target=3D"_bl=
ank">qhlonline@163.com</a>&gt;</span> wrote:<br><blockquote class=3D"gmail_=
quote" style=3D"border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt =
0pt 0.8ex; padding-left: 1ex;">



<div>Hi, Christian,<br>=C2=A0 Now that is the different diff file contents =
of the same file change:<br>On Windows:<br>WWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWW=
WWWWWWWWWWWWWWWWWWWWWWW<br>Index: abc.c<br>=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D<br>



RCS file: /export/home/cvsroot/test/abc.c,v<br>retrieving revision 1.1<br>d=
iff -u -r1.1 abc.c<br>--- abc.c=C2=A0=C2=A0=C2=A0 2009/12/17 02:37:24=C2=A0=
=C2=A0=C2=A0 1.1<br>+++ abc.c=C2=A0=C2=A0=C2=A0 2009/12/17 02:43:08<br>@@ -=
2,6 +2,7 @@<br>=C2=A0#include &lt;stdlib.h&gt;<br>



=C2=A0int main()<br>=C2=A0{<br>+=C2=A0=C2=A0=C2=A0 printf(&quot;Begin, Begi=
n!&quot;);<br>=C2=A0=C2=A0=C2=A0=C2=A0 print(&quot;Hello World!&quot;);<br>=
=C2=A0=C2=A0=C2=A0=C2=A0 if(a=3D=3D5)<br>=C2=A0=C2=A0=C2=A0=C2=A0 {<br>@@ -=
11,4 +12,5 @@<br>=C2=A0=C2=A0=C2=A0=C2=A0 {<br>=C2=A0=C2=A0=C2=A0=C2=A0 =C2=
=A0=C2=A0=C2=A0 printf(&quot;Hi,sir!&quot;);<br>=C2=A0=C2=A0=C2=A0=C2=A0 }<=
br>+=C2=A0=C2=A0=C2=A0 printf(&quot;Hello, Sir!&quot;);<br>



=C2=A0}<br>WWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWW<br>And =
on Linux:<br>LLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLL<br>I=
ndex: abc.c<br>=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D<br>



RCS file: /export/home/cvsroot/test/abc.c,v<br>retrieving revision 1.1<br>d=
iff -u -r1.1 abc.c<br>--- abc.c=C2=A0=C2=A0=C2=A0 2009/12/17 02:37:24=C2=A0=
=C2=A0=C2=A0 1.1<br>+++ abc.c=C2=A0=C2=A0=C2=A0 2009/12/17 02:50:30<br>@@ -=
2,6 +2,7 @@<br>=C2=A0#include &lt;stdlib.h&gt;<br>



=C2=A0int main()<br>=C2=A0{<br>+=C2=A0=C2=A0=C2=A0 printf(&quot;Begin, Begi=
n!&quot;);<br>=C2=A0=C2=A0=C2=A0=C2=A0 print(&quot;Hello World!&quot;);<br>=
=C2=A0=C2=A0=C2=A0=C2=A0 if(a=3D=3D5)<br>=C2=A0=C2=A0=C2=A0=C2=A0 {<br>@@ -=
11,4 +12,5 @@<br>=C2=A0=C2=A0=C2=A0=C2=A0 {<br>=C2=A0=C2=A0=C2=A0=C2=A0 =C2=
=A0=C2=A0=C2=A0 printf(&quot;Hi,sir!&quot;);<br>=C2=A0=C2=A0=C2=A0=C2=A0 }<=
br>-}<br>


\ No newline at end of file<br>
+=C2=A0=C2=A0=C2=A0 printf(&quot;Hello, Sir!&quot;);<br>+}<br>LLLLLLLLLLLLL=
LLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLL<br>There is no much difference. B=
ut the linux diff file ends with a warning:=C2=A0 &quot;\ No newline at end=
 of file&quot; and the end Brace&quot;}&quot; has been viewed as a change: =
+ and -; This kind of format diff file works well, The Reviewer can open th=
e &quot;view diff&quot; correctly. But the windows diff file format, which =
gave no warning and view the last brace as unchanged, with this format, The=
 Reviewers clicking &quot;view diff&quot; will report error as in the first=
 message of this topic I have pointed. And infect I have never add any new-=
line to the end of the source code file:=C2=A0 neither the original file, n=
ore the chenged files in both Operating System.<br>



=C2=A0=C2=A0 And If I had manualy add a blank new line in the changed file =
in Windows local source code file, I will get the same diff file content as=
 that of linux said above, And that may slove this problem. But I don&#39;t=
 know why. and How to=C2=A0 fundamentally solve the problem? <br>



<br>Best Regards!<br>=C2=A0<br></div><div></div><br>=E5=9C=A82009-12-16=EF=
=BC=8C&quot;Christian Hammond&quot; &lt;<a href=3D"mailto:chipx86@chipx86.c=
om" target=3D"_blank">chipx86@chipx86.com</a>&gt; =E5=86=99=E9=81=93=EF=BC=
=9A<br> <blockquote style=3D"border-left: 1px solid rgb(204, 204, 204); mar=
gin: 0px 0px 0px 0.8ex; padding-left: 1ex;">



<div><div></div><div>I don&#39;t really know what you mean, but I know that=
 many companies using Review Board have clients on Linux, Windows and Mac w=
ho post to a Review Board server on Linux without any problems. I&#39;d hav=
e to see some diffs and original source files where this fails to have an i=
dea as to what&#39;s going wrong.<br>





<br>Christian<br><br clear=3D"all">-- <br>Christian Hammond - <a href=3D"ma=
ilto:chipx86@chipx86.com" target=3D"_blank">chipx86@chipx86.com</a><br>Revi=
ew Board - <a href=3D"http://www.reviewboard.org" target=3D"_blank">http://=
www.reviewboard.org</a><br>



VMware, Inc. - <a href=3D"http://www.vmware.com" target=3D"_blank">http://w=
ww.vmware.com</a><br>


<br><br><div class=3D"gmail_quote">On Tue, Dec 15, 2009 at 7:55 PM, JohnHen=
ry <span dir=3D"ltr">&lt;<a href=3D"mailto:qhlonline@163.com" target=3D"_bl=
ank">qhlonline@163.com</a>&gt;</span> wrote:<br><blockquote class=3D"gmail_=
quote" style=3D"border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt =
0pt 0.8ex; padding-left: 1ex;">





I have viewed the diff file of both Windows and Linux, It seems that<br>
not only they have difference between there &quot;NewLine&quot; character, =
There<br>
are some file format difference but I am not sure, Can any one give a<br>
description of there difference?<br>
<br>
Best Regards!<br>
<div><div></div><div><br>
On Dec 15, 4:09=C2=A0pm, JohnHenry &lt;<a href=3D"mailto:qhlonl...@163.com"=
 target=3D"_blank">qhlonl...@163.com</a>&gt; wrote:<br>
&gt; OK, The first problem is that I have Created new ReviewRequest in<br>
&gt; WindowsOS through Web UI while the RB Server is on Linux. When I use<b=
r>
&gt; post-review in linux to create new ReviewRequest , That will be fine.<=
br>
&gt; But I had not test the windowsOS post-review generated new<br>
&gt; ReviewRequest now.<br>
&gt; But the second problem, How to make Review to the review request<br>
&gt; generated with newly source code( that is the source code has never<br=
>
&gt; been commited to CVS ) is waiting for suggestion.<br>
&gt;<br>
&gt; Best Regards!<br>
&gt;<br>
&gt; On 12=E6=9C=8815=E6=97=A5, =E4=B8=8B=E5=8D=883=E6=97=B636=E5=88=86, Jo=
hnHenry &lt;<a href=3D"mailto:qhlonl...@163.com" target=3D"_blank">qhlonl..=
.@163.com</a>&gt; wrote:<br>
&gt;<br>
&gt;<br>
&gt;<br>
&gt; &gt; Hi,<br>
&gt; &gt; =C2=A0 =C2=A0I have tried to post a review request and publish it=
 using one<br>
&gt; &gt; User, But in the Reviewers&#39; UI, when He cilck the &quot;view =
diff&quot; link on<br>
&gt; &gt; the top-right, There will be some error infomation:<br>
&gt; &gt; **************************************************<br>
&gt; &gt; The patch to &#39;mySouceTest.c&#39; didn&#39;t apply cleanly. Th=
e temporary files<br>
&gt; &gt; have been left in &#39;/tmp/reviewboard.zX0n4M&#39; for debugging=
 purposes.<br>
&gt; &gt; `patch` returned: patching file /tmp/reviewboard.zX0n4M/tmphNZpB0=
<br>
&gt; &gt; patch: **** malformed patch at line 25: - exit(1);<br>
&gt;<br>
&gt; &gt; Traceback (most recent call last):<br>
&gt; &gt; =C2=A0 File &quot;/data1/John1/bin/develop_tools/python/python2.5=
/lib/python2.5/<br>
&gt; &gt; site-packages/ReviewBoard-1.0.5.1-py2.5.egg/reviewboard/diffviewe=
r/<br>
&gt; &gt; views.py&quot;, line 153, in view_diff<br>
&gt; &gt; =C2=A0 =C2=A0 interdiffset, highlighting, True)<br>
&gt; &gt; =C2=A0 File &quot;/data1/John1/bin/develop_tools/python/python2.5=
/lib/python2.5/<br>
&gt; &gt; site-packages/ReviewBoard-1.0.5.1-py2.5.egg/reviewboard/diffviewe=
r/<br>
&gt; &gt; diffutils.py&quot;, line 623, in get_diff_files<br>
&gt; &gt; =C2=A0 =C2=A0 large_data=3DTrue)<br>
&gt; &gt; =C2=A0 File &quot;/data1/qiaohl/bin/develop_tools/python/python2.=
5/lib/python2.5/<br>
&gt; &gt; site-packages/Djblets-0.5.6-py2.5.egg/djblets/util/misc.py&quot;,=
 line 162,<br>
&gt; &gt; in cache_memoize<br>
&gt; &gt; =C2=A0 =C2=A0 data =3D lookup_callable()<br>
&gt; &gt; =C2=A0 File &quot;/data1/John1/bin/develop_tools/python/python2.5=
/lib/python2.5/<br>
&gt; &gt; site-packages/ReviewBoard-1.0.5.1-py2.5.egg/reviewboard/diffviewe=
r/<br>
&gt; &gt; diffutils.py&quot;, line 622, in &lt;lambda&gt;<br>
&gt; &gt; =C2=A0 =C2=A0 enable_syntax_highlighting),<br>
&gt; &gt; =C2=A0 File &quot;/data1/John1/bin/develop_tools/python/python2.5=
/lib/python2.5/<br>
&gt; &gt; site-packages/ReviewBoard-1.0.5.1-py2.5.egg/reviewboard/diffviewe=
r/<br>
&gt; &gt; diffutils.py&quot;, line 345, in get_chunks<br>
&gt; &gt; =C2=A0 =C2=A0 new =3D get_patched_file(old, filediff)<br>
&gt; &gt; =C2=A0 File &quot;/data1/John1l/bin/develop_tools/python/python2.=
5/lib/python2.5/<br>
&gt; &gt; site-packages/ReviewBoard-1.0.5.1-py2.5.egg/reviewboard/diffviewe=
r/<br>
&gt; &gt; diffutils.py&quot;, line 261, in get_patched_file<br>
&gt; &gt; =C2=A0 =C2=A0 return patch(filediff.diff, buffer, filediff.dest_f=
ile)<br>
&gt; &gt; =C2=A0 File &quot;/data1/John1/bin/develop_tools/python/python2.5=
/lib/python2.5/<br>
&gt; &gt; site-packages/ReviewBoard-1.0.5.1-py2.5.egg/reviewboard/diffviewe=
r/<br>
&gt; &gt; diffutils.py&quot;, line 129, in patch<br>
&gt; &gt; =C2=A0 =C2=A0 (filename, tempdir, patch_output))<br>
&gt; &gt; Exception: The patch to &#39;myUCMobile.c&#39; didn&#39;t apply c=
leanly. The<br>
&gt; &gt; temporary files have been left in &#39;/tmp/reviewboard.zX0n4M&#3=
9; for<br>
&gt; &gt; debugging purposes.<br>
&gt; &gt; `patch` returned: patching file /tmp/reviewboard.zX0n4M/tmphNZpB0=
<br>
&gt; &gt; patch: **** malformed patch at line 25: - =C2=A0 =C2=A0 =C2=A0 =
=C2=A0 =C2=A0 =C2=A0 =C2=A0 exit(1);<br>
&gt; &gt; *****************************************************************=
**<br>
&gt; &gt; Need suggestion.<br>
&gt; &gt; And, If I want to make a new reivewrequest with a new file that h=
as<br>
&gt; &gt; never been commited to CVS repository before ,The info would be a=
s<br>
&gt; &gt; follows:<br>
&gt; &gt; -----------------------------------------------------------------=
----------=C2=AD---&gt;&gt;&gt; Review request draft saved<br>
&gt; &gt; &gt;&gt;&gt; Uploading diff, size: 50<br>
&gt; &gt; &gt;&gt;&gt; HTTP POSTing tohttp://<a href=3D"http://192.168.3.20=
:8080/api/json/reviewrequests/9/diff/new/:%7B%7D" target=3D"_blank">192.168=
.3.20:8080/api/json/reviewrequests/9/diff/new/:{}</a><br>
&gt; &gt; &gt;&gt;&gt; {&quot;fields&quot;: {&quot;path&quot;: [&quot;The d=
iff file is empty&quot;]}, &quot;stat&quot;: &quot;fail&quot;, &quot;err&qu=
ot;: {&quot;msg&quot;: &quot;One or more fields had errors&quot;, &quot;cod=
e&quot;: 105}}<br>






&gt;<br>
&gt; &gt; Error uploading diff: One or more fields had errors (105)&gt;&gt;=
&gt; {&#39;fields&#39;: {&#39;path&#39;: [&#39;The diff file is empty&#39;]=
}, &#39;stat&#39;: &#39;fail&#39;, &#39;err&#39;: {&#39;msg&#39;: &#39;One =
or more fields had errors&#39;, &#39;code&#39;: 105}}<br>






&gt;<br>
&gt; &gt; Your review request still exists, but the diff is not attached<br=
>
&gt; &gt; -----------------------------------------------------------------=
----------=C2=AD-----------------<br>
&gt; &gt; In that case , Can the reviewer see the source code in the new fi=
le of<br>
&gt; &gt; ReviewRequestor&#39;s any way?<br>
&gt;<br>
</div></div>&gt; &gt; Best Regards!- Hide quoted text -<br>
&gt;<br>
&gt; - Show quoted text -<br>
<div><div></div><div><br>
--<br>
Want to help the Review Board project? Donate today at <a href=3D"http://ww=
w.reviewboard.org/donate/" target=3D"_blank">http://www.reviewboard.org/don=
ate/</a><br>
Happy user? Let us know at <a href=3D"http://www.reviewboard.org/users/" ta=
rget=3D"_blank">http://www.reviewboard.org/users/</a><br>
-~----------~----~----~----~------~----~------~--~---<br>
To unsubscribe from this group, send email to <a href=3D"mailto:reviewboard=
%2Bunsubscribe@googlegroups.com" target=3D"_blank">reviewboard+unsubscribe@=
googlegroups.com</a><br>
For more options, visit this group at <a href=3D"http://groups.google.com/g=
roup/reviewboard?hl=3Den" target=3D"_blank">http://groups.google.com/group/=
reviewboard?hl=3Den</a></div></div></blockquote></div><br>

<p></p></div></div>

-- <br><div>
Want to help the Review Board project? Donate today at <a href=3D"http://ww=
w.reviewboard.org/donate/" target=3D"_blank">http://www.reviewboard.org/don=
ate/</a><br>
Happy user? Let us know at <a href=3D"http://www.reviewboard.org/users/" ta=
rget=3D"_blank">http://www.reviewboard.org/users/</a><br>
-~----------~----~----~----~------~----~------~--~---<br>
To unsubscribe from this group, send email to reviewboard+<a href=3D"mailto=
:unsubscribe@googlegroups.com" target=3D"_blank">unsubscribe@googlegroups.c=
om</a><br>
For more options, visit this group at <a href=3D"http://groups.google.com/g=
roup/reviewboard?hl=3Den" target=3D"_blank">http://groups.google.com/group/=
reviewboard?hl=3Den</a></div></blockquote><br><br><span title=3D"neteasefoo=
ter"></span>

<p></p>

-- <br><div><div></div><div>
Want to help the Review Board project? Donate today at <a href=3D"http://ww=
w.reviewboard.org/donate/" target=3D"_blank">http://www.reviewboard.org/don=
ate/</a><br>
Happy user? Let us know at <a href=3D"http://www.reviewboard.org/users/" ta=
rget=3D"_blank">http://www.reviewboard.org/users/</a><br>
-~----------~----~----~----~------~----~------~--~---<br>
To unsubscribe from this group, send email to <a href=3D"mailto:reviewboard=
%2Bunsubscribe@googlegroups.com" target=3D"_blank">reviewboard+unsubscribe@=
googlegroups.com</a><br>
For more options, visit this group at <a href=3D"http://groups.google.com/g=
roup/reviewboard?hl=3Den" target=3D"_blank">http://groups.google.com/group/=
reviewboard?hl=3Den</a></div></div></blockquote></div><br>

<p></p></div></div>

-- <br><div class=3D"im">
Want to help the Review Board project? Donate today at <a href=3D"http://ww=
w.reviewboard.org/donate/" target=3D"_blank">http://www.reviewboard.org/don=
ate/</a><br>
Happy user? Let us know at <a href=3D"http://www.reviewboard.org/users/" ta=
rget=3D"_blank">http://www.reviewboard.org/users/</a><br>
-~----------~----~----~----~------~----~------~--~---<br>
To unsubscribe from this group, send email to reviewboard+<a href=3D"mailto=
:unsubscribe@googlegroups.com" target=3D"_blank">unsubscribe@googlegroups.c=
om</a><br>
For more options, visit this group at <a href=3D"http://groups.google.com/g=
roup/reviewboard?hl=3Den" target=3D"_blank">http://groups.google.com/group/=
reviewboard?hl=3Den</a></div></blockquote><div><div></div><div class=3D"h5"=
><br>

<br><span title=3D"neteasefooter"></span>

<p></p>

-- <br>
Want to help the Review Board project? Donate today at <a href=3D"http://ww=
w.reviewboard.org/donate/" target=3D"_blank">http://www.reviewboard.org/don=
ate/</a><br>
Happy user? Let us know at <a href=3D"http://www.reviewboard.org/users/" ta=
rget=3D"_blank">http://www.reviewboard.org/users/</a><br>
-~----------~----~----~----~------~----~------~--~---<br>
To unsubscribe from this group, send email to <a href=3D"mailto:reviewboard=
%2Bunsubscribe@googlegroups.com" target=3D"_blank">reviewboard+unsubscribe@=
googlegroups.com</a><br>
For more options, visit this group at <a href=3D"http://groups.google.com/g=
roup/reviewboard?hl=3Den" target=3D"_blank">http://groups.google.com/group/=
reviewboard?hl=3Den</a></div></div></blockquote></div><br>

<p></p>

-- <br />
Want to help the Review Board project? Donate today at <a href=3D"http://ww=
w.reviewboard.org/donate/">http://www.reviewboard.org/donate/</a><br />
Happy user? Let us know at <a href=3D"http://www.reviewboard.org/users/">ht=
tp://www.reviewboard.org/users/</a><br />
-~----------~----~----~----~------~----~------~--~---<br />
To unsubscribe from this group, send email to reviewboard+unsubscribe@googl=
egroups.com<br />
For more options, visit this group at <a href=3D"http://groups.google.com/g=
roup/reviewboard?hl=3Den">http://groups.google.com/group/reviewboard?hl=3De=
n</a>
--001636b2bbfd68cf40047ae5bbd7--

From SRS0=ay5A=ID=pelicanparts.com=pelicanforums@bounce2.pobox.com  Thu Dec 17 02:02:25 2009
X-VM-v5-Data: ([nil nil nil nil nil nil nil nil nil]
	["1709" "Thursday" "17" "December" "2009" "00:02:10" "-0800" "Pelican Parts Technical BBS" "pelicanforums@pelicanparts.com" nil "43" "\"Porsche 914 Used Parts For Sale & Wanted\" update" "^From:" nil nil "12" nil nil nil nil nil nil nil nil nil nil]
	nil)
Delivered-To: skip.montanaro@gmail.com
Received: from pop.gmail.com
 by montanaro.dyndns.org with POP3 (fetchmail-6.3.11)
 for <skip@localhost> (single-drop); Thu, 17 Dec 2009 02:02:25 -0600 (CST)
Received: by 10.216.54.195 with SMTP id i45cs121863wec;
 Thu, 17 Dec 2009 00:02:18 -0800 (PST)
Received: by 10.224.78.214 with SMTP id m22mr1426616qak.95.1261036935737;
 Thu, 17 Dec 2009 00:02:15 -0800 (PST)
Return-Path: <SRS0=ay5A=ID=pelicanparts.com=pelicanforums@bounce2.pobox.com>
Received: from gold.pobox.com (gold.pobox.com [208.72.237.26])
 by mx.google.com with ESMTP id 35si3549866qyk.96.2009.12.17.00.02.14;
 Thu, 17 Dec 2009 00:02:14 -0800 (PST)
Received-SPF: pass (google.com: domain of
 SRS0=ay5A=ID=pelicanparts.com=pelicanforums@bounce2.pobox.com designates
 208.72.237.26 as permitted sender) client-ip=208.72.237.26; 
Authentication-Results: mx.google.com; spf=pass (google.com: domain of
 SRS0=ay5A=ID=pelicanparts.com=pelicanforums@bounce2.pobox.com designates
 208.72.237.26 as permitted sender)
 smtp.mail=SRS0=ay5A=ID=pelicanparts.com=pelicanforums@bounce2.pobox.com;
 dkim=pass (test mode) header.i=@pelicanparts.com
Received: from gold.pobox.com (localhost [127.0.0.1])
 by gold.pobox.com (Postfix) with ESMTP id F273F4125AA
 for <skip.montanaro@gmail.com>; Thu, 17 Dec 2009 03:02:13 -0500 (EST)
Delivered-To: skip@pobox.com
X-Pobox-Orig-Sender: <pelicanforums@pelicanparts.com>
X-Pobox-Delivery-ID: 7C59FFD6-EAE2-11DE-9E35-A487CF92AC8C-00107187!gold.pobox.com
x-pobox-client-address: 66.236.61.177
x-pobox-client-name: forums.pelicanparts.com
Received: from FORUMS.PELICANPARTS.COM (forums.pelicanparts.com
 [66.236.61.177]) by gold.pobox.com (Postfix) with ESMTP id 689EA4125B9 for
 <skip@pobox.com>; Thu, 17 Dec 2009 03:02:13 -0500 (EST)
DKIM-Signature: v=1; a=rsa-sha1; c=relaxed/relaxed; s=s1024;d=pelicanparts.com;
 h=date:subject:to:from:message-id:mime-version:content-type;
 bh=eSP7+ExUw9oBK4KAT71+OLe/Ho8=;
 b=wpjzUMWGbDCtAbOMzWuan/k4r1LanvgRpGlMwuw2kO35V6pYVFNPaV+iEc9fcQGZPdLAjkk3
 49X8S44rNi2iKthcfoOH7c5yKyf71XMWqfInD+3sEdNuUIwHFyGnWVcUOQd1aMoAID1n1DmA
 SZ+8dDJ7MY9BD07lUi6k2omOAek=
DomainKey-Signature: a=rsa-sha1; q=dns; c=nofws; s=s1024;d=pelicanparts.com;
 h=date:subject:to:from:message-id:mime-version:content-type;
 b=EnkMaCNzvjUA3fVt3KnZWDLefIdDHHjfgZEkC7OC8ljqztcqUfuA0EAyydG9fVkS1vwqtpiE
 x/czO3rvN/yMgPkTD1ep3a3o2HmZIaRZIe/sLGZzQ0rXzoPTD0rdSYbtNKfQ0ncORcNFNzsV
 CNDzkDBjif/qISi36S9ec2h7f9s=
Received: from forums3 ([127.0.0.1]) by FORUMS.PELICANPARTS.COM with
 Microsoft SMTPSVC(6.0.3790.3959); Thu, 17 Dec 2009 00:02:10 -0800
Auto-Submitted: auto-generated
Message-ID: <20091217080210.de1dffa40341@forums.pelicanparts.com>
MIME-Version: 1.0
Content-Type: text/plain; charset="ISO-8859-1"
Content-Transfer-Encoding: 8bit
X-Priority: 3
X-Mailer: vBulletin Mail via PHP
X-OriginalArrivalTime: 17 Dec 2009 08:02:10.0083 (UTC)
 FILETIME=[3BE81730:01CA7EEF]
X-Spambayes-Evidence: '*H*': 0.44; '*S*': 0.04; 'forum': 0.09; 'forum:': 0.16;
 'motors': 0.16; 'smontanaro,': 0.16; 'skip:u 10': 0.16; 'url:forums': 0.23;
 'received:208.72.237.26': 0.29; 'received:gold.pobox.com': 0.29;
 'information:': 0.30; 'page:': 0.30; 'skip:~ 30': 0.30; 'url:auth': 0.30;
 'url:do': 0.30; 'url:removesubscription': 0.30; 'url:subscription': 0.30;
 'url:subscriptionid': 0.30; 'url:type': 0.30;
 'x-mailer:vbulletin mail via php': 0.30; 'received:208': 0.33;
 'received:208.72': 0.33; 'received:208.72.237': 0.33; 'url-ip:66/8': 0.35;
 'url:php': 0.37; 'all': 0.40; 'header:Received:7': 0.63; 'been': 0.66;
 'to:addr:skip': 0.67; 'following': 0.67; 'top': 0.67;
 'to:addr:pobox.com': 0.69; 'please': 0.71; 'last': 0.84; 'sale': 0.84;
 'subject: & ': 0.84; 'subject:For': 0.84; 'used': 0.84; 'wanted': 0.84
From: "Pelican Parts Technical BBS" <pelicanforums@pelicanparts.com>
To: skip@pobox.com
Subject: "Porsche 914 Used Parts For Sale & Wanted" update
Date: Thu, 17 Dec 2009 00:02:10 -0800
X-Spambayes-Classification: unsure; 0.30

Dear smontanaro,

You are subscribed to the forum Porsche 914 Used Parts For Sale & Wanted, there have been 2 new thread(s) and 2 updated thread(s).
http://forums.pelicanparts.com/porsche-914-used-parts-sale-wanted/

The following threads are new:
************
WTB:  FI Harness for 70 Model 1.7L
http://forums.pelicanparts.com/porsche-914-used-parts-sale-wanted/516880-wtb-fi-harness-70-model-1-7l.html
In forum: Porsche 914 Used Parts For Sale & Wanted
Started by: Snafu
Last post: 12-16-2009 05:24 PM
************
FS: Targa Latches, Headlight Motors & Bezels, Tach/Speedo, Speaker Grill
http://forums.pelicanparts.com/porsche-914-used-parts-sale-wanted/516885-fs-targa-latches-headlight-motors-bezels-tach-speedo-speaker-grill.html
In forum: Porsche 914 Used Parts For Sale & Wanted
Started by: gearheadgreg
Last post: 12-16-2009 06:00 PM


The following threads have been updated:
************
WTB - '76 bumpers
http://forums.pelicanparts.com/porsche-914-used-parts-sale-wanted/515589-wtb-76-bumpers.html
In forum: Porsche 914 Used Parts For Sale & Wanted
Started by: imnothans
Last post: 12-16-2009 11:11 AM
************
914 Saratoga Top (RARE tinted see through top!)
http://forums.pelicanparts.com/porsche-914-used-parts-sale-wanted/17536-914-saratoga-top-rare-tinted-see-through-top.html
In forum: Porsche 914 Used Parts For Sale & Wanted
Started by: Kent Zilliox
Last post: 12-16-2009 07:14 PM


All the best,
Pelican Parts Technical BBS

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Unsubscription information:

To unsubscribe from this forum, please visit this page:
http://forums.pelicanparts.com/subscription.php?do=removesubscription&type=forum&subscriptionid=6600&auth=49211f76937aa8efbee73fdff7b75720

From SRS0=1uFn=ID=python.org=python-announce-list-bounces+skip=pobox.com@bounce2.pobox.com  Thu Dec 17 05:13:32 2009
X-VM-v5-Data: ([nil nil nil t nil nil nil nil nil]
	["11866" "Thursday" "17" "December" "2009" "12:00:04" "+0100" "python-announce-list-request@python.org" "python-announce-list-request@python.org" nil "310" "Python-announce-list Digest, Vol 66, Issue 16" "^From:" nil nil "12" nil nil nil nil nil nil nil nil nil nil]
	("ham" "trained"))
Delivered-To: skip.montanaro@gmail.com
Received: from pop.gmail.com
 by montanaro.dyndns.org with POP3 (fetchmail-6.3.11)
 for <skip@localhost> (single-drop); Thu, 17 Dec 2009 05:13:32 -0600 (CST)
Received: by 10.216.54.195 with SMTP id i45cs130849wec;
 Thu, 17 Dec 2009 03:12:55 -0800 (PST)
Received: by 10.224.15.206 with SMTP id l14mr1540221qaa.117.1261048374721;
 Thu, 17 Dec 2009 03:12:54 -0800 (PST)
Return-Path: <SRS0=1uFn=ID=python.org=python-announce-list-bounces+skip=pobox.com@bounce2.pobox.com>
Received: from indigo.pobox.com (indigo.pobox.com [64.74.157.52])
 by mx.google.com with ESMTP id 7si5294821qwf.14.2009.12.17.03.12.53;
 Thu, 17 Dec 2009 03:12:53 -0800 (PST)
Received-SPF: pass (google.com: domain of
 SRS0=1uFn=ID=python.org=python-announce-list-bounces+skip=pobox.com@bounce2.pobox.com
 designates 64.74.157.52 as permitted sender) client-ip=64.74.157.52; 
Authentication-Results: mx.google.com; spf=pass (google.com: domain of
 SRS0=1uFn=ID=python.org=python-announce-list-bounces+skip=pobox.com@bounce2.pobox.com
 designates 64.74.157.52 as permitted sender)
 smtp.mail=SRS0=1uFn=ID=python.org=python-announce-list-bounces+skip=pobox.com@bounce2.pobox.com;
 dkim=pass header.i=@python.org
Received: from indigo.pobox.com (localhost [127.0.0.1])
 by indigo.pobox.com (Postfix) with ESMTP id 0BCCF20B4BE
 for <skip.montanaro@gmail.com>; Thu, 17 Dec 2009 06:12:53 -0500 (EST)
Delivered-To: skip@pobox.com
X-Pobox-Orig-Sender: <python-announce-list-bounces+skip=pobox.com@python.org>
X-Pobox-Delivery-ID: 1EA03B4C-EAFD-11DE-BBAB-F12A36EE7A41-00107187!indigo.pobox.com
x-pobox-client-address: 82.94.164.166
x-pobox-client-name: mail.python.org
Received: from mail.python.org (mail.python.org [82.94.164.166]) by
 indigo.pobox.com (Postfix) with ESMTP id 7D89B20B4C5 for <skip@pobox.com>;
 Thu, 17 Dec 2009 06:12:52 -0500 (EST)
Received: from albatross.python.org (localhost.localdomain [127.0.0.1]) by
 mail.python.org (Postfix) with ESMTP id 19561F441 for <skip@pobox.com>; Thu,
 17 Dec 2009 12:12:52 +0100 (CET)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=python.org; s=200901;
 t=1261048372; bh=xc50AEQHl+7OExYE2OBtlObc890aZe4FBxWQ1tAyEl8=;
 h=From:Subject:To:Reply-To:Date:Message-ID:MIME-Version:
 Content-Type:Content-Transfer-Encoding:List-Id:List-Unsubscribe:
 List-Archive:List-Post:List-Help:List-Subscribe:Sender;
 b=vRghEf1faVGSf8QJ4KMlk4bU2WgGVZSPWxynOUSd6tnQj0sep7z9dGjLN4AFBNBDf
 APNfLnj5h13F3wmJH1TlY8XZYTxZ5Bsf0mmyPJm2sRdNxxNiu6MG0SjEAx+zL3nOFI
 IbZXWEJlCUJz0m3YDhAE4Cm963yXrmMUMw8HT3LI=
Message-ID: <mailman.52.1261047604.1204.python-announce-list@python.org>
MIME-Version: 1.0
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: 7bit
X-BeenThere: python-announce-list@python.org
X-Mailman-Version: 2.1.12
Precedence: list
List-Id: Announcement-only list for the Python programming language
 <python-announce-list.python.org>
List-Unsubscribe: <http://mail.python.org/mailman/options/python-announce-list>, 
 <mailto:python-announce-list-request@python.org?subject=unsubscribe>
List-Archive: <http://mail.python.org/pipermail/python-announce-list>
List-Post: <mailto:python-announce-list@python.org>
List-Help: <mailto:python-announce-list-request@python.org?subject=help>
List-Subscribe: <http://mail.python.org/mailman/listinfo/python-announce-list>, 
 <mailto:python-announce-list-request@python.org?subject=subscribe>
Errors-To: python-announce-list-bounces+skip=pobox.com@python.org
X-Pobox-Pass: python-announce-list-bounces+skip=pobox.com@python.org is
 whitelisted
X-Spambayes-Evidence: '*H*': 0.96; '*S*': 0.60; 'code': 0.04; 'they': 0.04;
 'another': 0.05; 'running': 0.07; "i'm": 0.09; 'listed': 0.09; 'person': 0.09;
 'probably': 0.09; 'reference': 0.09; 'skip:- 30': 0.09; 'support': 0.09;
 'url-ip:207/8': 0.09; 'url-ip:82.94.164.162/32': 0.09; 'watch': 0.09;
 '"the': 0.16; '...': 0.16; 'appear': 0.16; 'better': 0.16; 'body': 0.16;
 'carl': 0.16; 'center': 0.16; 'chicago,': 0.16; 'clicks': 0.16;
 'computing': 0.16; 'david': 0.16; 'dec': 0.16; 'definitely': 0.16;
 'derivatives': 0.16; 'edit': 0.16; 'efforts': 0.16; 'eight': 0.16;
 'from:addr:python.org': 0.16; 'gain': 0.16; 'going': 0.16; 'hoping': 0.16;
 'keep': 0.16; 'language': 0.16; 'least': 0.16; 'libraries': 0.16; 'line': 0.16;
 'look': 0.16; 'major': 0.16; 'maybe': 0.16; 'message-id:@python.org': 0.16;
 'monday': 0.16; 'much': 0.16; 'patch': 0.16; 'performance': 0.16;
 'programming': 0.16; 'project.': 0.16; 'python': 0.16; "python.org's": 0.16;
 'quite': 0.16; 'replaced': 0.16; 'several': 0.16; 'skip:- 70': 0.16;
 'source': 0.16; 'string': 0.16; 'subject:Issue': 0.16; 'subject:Python': 0.16;
 'subject:announce': 0.16; 'systems': 0.16; 'take': 0.16; 'techniques,': 0.16;
 'that?': 0.16; 'two': 0.16; 'under': 0.16; 'updates': 0.16;
 'url-ip:64.34/16': 0.16; 'url-ip:67/8': 0.16; 'url:chicago': 0.16;
 'url:code': 0.16; 'url:msg': 0.16; 'url:news': 0.16; 'url:us': 0.16;
 'values': 0.16; 'web,': 0.16; 'wide': 0.16; 'yet.': 0.16; 'skip:u 10': 0.16;
 'since': 0.19; 'url:t': 0.19; 'received:64.74.157': 0.78; 'need': 0.80;
 "'help'": 0.84; '-0600': 0.84; 'all,': 0.84; 'allows': 0.84; 'articles': 0.84;
 'available': 0.84; 'closed': 0.84; 'daily': 0.84; 'date:': 0.84; 'dave': 0.84;
 'different': 0.84; 'enjoy': 0.84; 'every': 0.84; 'everything': 0.84;
 'feel': 0.84; 'firefox': 0.84; 'function': 0.84; 'hours': 0.84; 'issues': 0.84;
 'last': 0.84; 'limited': 0.84; 'makes': 0.84; 'message-id:': 0.84;
 'more?': 0.84; 'next': 0.84; 'notice': 0.84; 'old': 0.84; 'participate': 0.84;
 'recommended': 0.84; 'software': 0.84; 'specific': 0.84; 'statement': 0.84;
 'summarizing': 0.84; 'summary': 0.84; 'takes': 0.84; 'talk': 0.84; 'text/plain;
 ': 0.84; 'tool': 0.84; 'tue,': 0.84; 'url-ip:212/8': 0.84; 'url-ip:76/8': 0.84;
 'url:%0': 0.84; 'url:%40': 0.84; 'url:d': 0.84; 'way': 0.84; 'whom': 0.84;
 'writing': 0.84; 'above': 0.91; 'among': 0.91; 'associated': 0.91;
 'coming': 0.91; 'distributed': 0.91; 'learn': 0.91; 'package': 0.91;
 'these': 0.91; 'think': 0.91; 'unsubscribe.': 0.91; 'url-ip:204/8': 0.91;
 '2010': 0.93; 'check': 0.93; 'each': 0.93; 'inform': 0.93; 'url:net': 0.93;
 'ask': 0.95; 'contact': 0.96; 'free': 0.97
From: python-announce-list-request@python.org
Sender: python-announce-list-bounces+skip=pobox.com@python.org
To: python-announce-list@python.org
Subject: Python-announce-list Digest, Vol 66, Issue 16
Date: Thu, 17 Dec 2009 12:00:04 +0100
Reply-To: python-announce-list@python.org
X-Spambayes-Classification: unsure; 0.32

Send Python-announce-list mailing list submissions to
	python-announce-list@python.org

To subscribe or unsubscribe via the World Wide Web, visit
	http://mail.python.org/mailman/listinfo/python-announce-list
or, via email, send a message with subject or body 'help' to
	python-announce-list-request@python.org

You can reach the person managing the list at
	python-announce-list-owner@python.org

When replying, please edit your Subject line so it is more specific
than "Re: Contents of Python-announce-list digest..."


Today's Topics:

   1. Python-URL! - weekly Python news and links (Dec 15)
      (Gabriel Genellina)
   2. CodeInvestigator 0.20.0 (hans moleman)
   3. [ANN] OpenOpt 0.27 (optimization), FuncDesigner 0.17 (auto
      differentiation) (dmitrey)
   4. Python Concurrency Workshop, January 14-15, 2010 (David Beazley)


----------------------------------------------------------------------

Message: 1
Date: Tue, 15 Dec 2009 16:35:54 +0000 (UTC)
From: "Gabriel Genellina" <python-url@phaseit.net>
To: comp-lang-python-announce@moderators.isc.org
Subject: Python-URL! - weekly Python news and links (Dec 15)
Message-ID: <hg8dta$3sq$1@lairds.us>

QOTW:  "Plus, it's not something that's never foolproof." - Carl Banks,
daring negater
    http://groups.google.com/group/comp.lang.python/msg/e8f3adbf2cc31514

    
    Several graph libraries are available; which one is the best? maybe they
    should be merged?
        http://groups.google.com/group/comp.lang.python/t/785d100681f7d101/
        http://groups.google.com/group/comp.lang.python/t/7e65ca66cd7b511/
    
    list(generator) and the equivalent list comprehension are not always
    equivalent:
        http://groups.google.com/group/comp.lang.python/t/ae70dfa12677c1d5/
    
    A succint way to parse a string of name=value pairs:
        http://groups.google.com/group/comp.lang.python/t/dc725717e63d6295/
    
    Keep only unique elements in a list - and the perils of wrongly defining
    __hash__:
        http://groups.google.com/group/comp.lang.python/t/80491b9bc2f45547/
    
    Python does not have a switch statement - how to overcome that?
        http://groups.google.com/group/comp.lang.python/t/9af90ddc7652beb0/
    
    What are the advantages of an explicit "self"?
        http://groups.google.com/group/comp.lang.python/t/17a3369aef70fd38/
    
    A new guy in the neighborhood, recently moved from PHP:
        http://groups.google.com/group/comp.lang.python/t/6e91d87a9a3a3edb/
        http://groups.google.com/group/comp.lang.python4c295a7ca96f65c3101/
    
    Another convert, this time coming from Perl-land:
        http://groups.google.com/group/comp.lang.python/t/22edc1c7eef569d5/

    
========================================================================
Everything Python-related you want is probably one or two clicks away in
these pages:

    Python.org's Python Language Website is the traditional
    center of Pythonia
        http://www.python.org
    Notice especially the master FAQ
        http://www.python.org/doc/FAQ.html

    PythonWare complements the digest you're reading with the
    marvelous daily python url
         http://www.pythonware.com/daily

    Just beginning with Python?  This page is a great place to start:
	http://wiki.python.org/moin/BeginnersGuide/Programmers

    The Python Papers aims to publish "the efforts of Python enthusiasts":
	http://pythonpapers.org/
    The Python Magazine is a technical monthly devoted to Python:
	http://pythonmagazine.com

    Readers have recommended the "Planet" site:
	http://planet.python.org

    comp.lang.python.announce announces new Python software.  Be
    sure to scan this newsgroup weekly.
        http://groups.google.com/group/comp.lang.python.announce/topics

    Python411 indexes "podcasts ... to help people learn Python ..."
    Updates appear more-than-weekly:
        http://www.awaretek.com/python/index.html

    The Python Package Index catalogues packages.
        http://www.python.org/pypi/

    Much of Python's real work takes place on Special-Interest Group
    mailing lists
        http://www.python.org/sigs/

    Python Success Stories--from air-traffic control to on-line
    match-making--can inspire you or decision-makers to whom you're
    subject with a vision of what the language makes practical.
        http://www.pythonology.com/success

    The Python Software Foundation (PSF) has replaced the Python
    Consortium as an independent nexus of activity.  It has official
    responsibility for Python's development and maintenance.
        http://www.python.org/psf/
    Among the ways you can support PSF is with a donation.
        http://www.python.org/psf/donations/

    The Summary of Python Tracker Issues is an automatically generated
    report summarizing new bugs, closed ones, and patch submissions. 
        http://search.gmane.org/?author=status%40bugs.python.org&group=gmane.comp.python.devel&sort=date

    Although unmaintained since 2002, the Cetus collection of Python
    hyperlinks retains a few gems.
        http://www.cetus-links.org/oo_python.html

    Python FAQTS
        http://python.faqts.com/

    The Cookbook is a collaborative effort to capture useful and
    interesting recipes.
	http://code.activestate.com/recipes/langs/python/

    Many Python conferences around the world are in preparation.
    Watch this space for links to them.

    Among several Python-oriented RSS/RDF feeds available, see:
        http://www.python.org/channews.rdf
    For more, see:
        http://www.syndic8.com/feedlist.php?ShowMatch=python&ShowStatus=all
    The old Python "To-Do List" now lives principally in a
    SourceForge reincarnation.
        http://sourceforge.net/tracker/?atid=355470&group_id=5470&func=browse
	http://www.python.org/dev/peps/pep-0042/

    del.icio.us presents an intriguing approach to reference commentary.
    It already aggregates quite a bit of Python intelligence.
        http://del.icio.us/tag/python

    Enjoy the *Python Magazine*.
	http://pymag.phparch.com/

    *Py: the Journal of the Python Language*
        http://www.pyzine.com

    Dr.Dobb's Portal is another source of Python news and articles:
        http://www.ddj.com/TechSearch/searchResults.jhtml?queryText=python
    and Python articles regularly appear at IBM DeveloperWorks:
        http://www.ibm.com/developerworks/search/searchResults.jsp?searchSite=dW&searchScope=dW&encodedQuery=python&rankprofile=8

Previous - (U)se the (R)esource, (L)uke! - messages are listed here:
  http://search.gmane.org/?query=python+URL+weekly+news+links&group=gmane.comp.python.general&sort=date
  http://groups.google.com/groups/search?q=Python-URL!+group%3Acomp.lang.python&start=0&scoring=d&
  http://lwn.net/Search/DoSearch?words=python-url&ctype3=yes&cat_25=yes

There is *not* an RSS for "Python-URL!"--at least not yet.  Arguments
for and against are occasionally entertained.


Suggestions/corrections for next week's posting are always welcome.
E-mail to <Python-URL@phaseit.net> should get through.

To receive a new issue of this posting in e-mail each Monday morning
(approximately), ask <claird@phaseit.net> to subscribe.  Mention
"Python-URL!".  Write to the same address to unsubscribe.


-- The Python-URL! Team--

Phaseit, Inc. (http://phaseit.net) is pleased to participate in and
sponsor the "Python-URL!" project.  Watch this space for upcoming
news about posting archives.


------------------------------

Message: 2
Date: Tue, 15 Dec 2009 15:47:57 -0800 (PST)
From: hans moleman <martien.friedeman@gmail.com>
To: comp-lang-python-announce@moderators.isc.org
Subject: CodeInvestigator 0.20.0
Message-ID:
	<a00aac30-3bd3-4058-bab2-124e8efcd68e@v15g2000prn.googlegroups.com>
Content-Type: text/plain; charset=ISO-8859-1

CodeInvestigator 0.20.0 was released on December 16.

Changes: UI changes.


You need Python 2.6 and Firefox for CodeInvestigator.

CodeInvestigator is a tracing tool for Python programs.

Running a program through CodeInvestigator creates a recording.
Program flow, function calls, variable values and conditions are all
stored for every line the program executes.
The recording is then viewed with an interface consisting of the
code. The code can be clicked: A clicked variable displays its
value,
a clicked loop displays its iterations.
You read code, and have at your disposal all the run time details of
that code. A computerized desk check tool and another way to learn
about your program.

http://sourceforge.net/project/showfiles.php?group_id=183942


------------------------------

Message: 3
Date: Wed, 16 Dec 2009 01:35:44 -0800 (PST)
From: dmitrey <dmitrey.kroshko@scipy.org>
To: comp-lang-python-announce@moderators.isc.org
Subject: [ANN] OpenOpt 0.27 (optimization), FuncDesigner 0.17 (auto
	differentiation)
Message-ID:
	<d7a196a9-89ba-489f-9354-ad26762766e9@p32g2000vbi.googlegroups.com>
Content-Type: text/plain; charset=ISO-8859-1

Hi all,
I'm glad to inform you about release of OpenOpt 0.27 (numerical
optimization framework), FuncDesigner 0.17 (CAS with automatic
differentiation, convenient modelling of linear/nonlinear functions,
can use convenient modelling for some OpenOpt optimization problems
and systems of linear/nonlinear equations, possibly sparse or
overdetermined), DerApproximator 0.17 (finite-differences derivatives
approximation, get or check user-supplied).

These packages are written in Python language + NumPy; license BSD
allows to use it in both free and closed-code soft

See changelog for details: http://openopt.org/Changelog

Regards, D.


------------------------------

Message: 4
Date: Wed, 16 Dec 2009 06:01:54 -0600
From: David Beazley <dave@dabeaz.com>
To: python-announce@python.org
Cc: David Beazley <dave@dabeaz.com>
Subject: Python Concurrency Workshop, January 14-15, 2010
Message-ID: <7EBD6A9E-0F9F-4FFB-B836-6BCB94DA5AFA@dabeaz.com>
Content-Type: text/plain; charset=us-ascii


	       Python Concurrency Workshop, 2nd Edition
       with David Beazley, author "Python Essential Reference"
			 January 14-15, 2010
			  Chicago, Illinois
		    http://www.dabeaz.com/chicago

Last June, you might have caught my "mindblowing" talk on the Python
GIL (http://www.dabeaz.com/python/GIL.pdf).  However, did you see the
other eight hours of material on threads, multiprocessing, distributed
computing, coroutines, and more?  Probably not unless you were at my
"Concurrency Workshop" the month before.

I'm pleased to announce that that the Concurrency Workshop is back for
another round and is better than ever.  If you have been programming
Python for awhile and want to take your skills up a notch, I think
this may be of interest.  Basically, we're going to take a in-depth
look at concurrent programming idioms and library modules.  Topics
will include such things as threads, message passing, the
multiprocessing library, distributed computing idioms, coroutines,
asynchronous I/O, and other matters with an eye towards writing
programs that can run on multiple CPU cores or clusters.  A major
theme of the workshop is to explore and understand different
programming techniques, their associated performance properties, and
other tradeoffs.  You'll definitely walk away with new insight and a
better understanding of how different parts of Python work under the
covers.  Likewise, I'm hoping to gain new knowledge from your
experience.

The workshop is strictly limited to six attendees.  More details are
available at the above URL.

Please feel free to contact me with further questions.

Cheers,
Dave Beazley


------------------------------

-- 
http://mail.python.org/mailman/listinfo/python-announce-list

        Support the Python Software Foundation:
        http://www.python.org/psf/donations.html


End of Python-announce-list Digest, Vol 66, Issue 16
****************************************************

                                                                                                                                                                                                                                                               
From junk
Delivered-To: skip.montanaro@gmail.com
Received: by 10.216.54.195 with SMTP id i45cs121918wec;
        Thu, 17 Dec 2009 00:03:30 -0800 (PST)
Received: by 10.224.26.87 with SMTP id d23mr1433643qac.55.1261037009016;
        Thu, 17 Dec 2009 00:03:29 -0800 (PST)
Return-Path: <SRS0=sD+I=ID=web.ipb.ac.id=wwwrun@bounce2.pobox.com>
Received: from gold.pobox.com (gold.pobox.com [208.72.237.26])
        by mx.google.com with ESMTP id 37si3682550qyk.122.2009.12.17.00.03.28;
        Thu, 17 Dec 2009 00:03:29 -0800 (PST)
Received-SPF: pass (google.com: domain of SRS0=sD+I=ID=web.ipb.ac.id=wwwrun@bounce2.pobox.com designates 208.72.237.26 as permitted sender) client-ip=208.72.237.26;
Authentication-Results: mx.google.com; spf=pass (google.com: domain of SRS0=sD+I=ID=web.ipb.ac.id=wwwrun@bounce2.pobox.com designates 208.72.237.26 as permitted sender) smtp.mail=SRS0=sD+I=ID=web.ipb.ac.id=wwwrun@bounce2.pobox.com
Received: from gold.pobox.com (localhost [127.0.0.1])
	by gold.pobox.com (Postfix) with ESMTP id 3F6764125A3
	for <skip.montanaro@gmail.com>; Thu, 17 Dec 2009 03:03:28 -0500 (EST)
Delivered-To: skip@pobox.com
X-Pobox-Orig-Sender: <wwwrun@web.ipb.ac.id>
X-Pobox-Delivery-ID:
 A8B2A11E-EAE2-11DE-A4D7-A487CF92AC8C-00107187!gold.pobox.com
x-pobox-client-address: 114.4.12.3
x-pobox-client-name: unknown
Received: from web.ipb.ac.id (unknown [114.4.12.3]) by gold.pobox.com
 (Postfix) with ESMTP id 662BF412396 for <skip@pobox.com>; Thu, 17 Dec 2009
 03:03:26 -0500 (EST)
Received: from wwwrun by web.ipb.ac.id with local (Exim 4.69) (envelope-from
 <wwwrun@web.ipb.ac.id>) id 1NLBR7-0004LM-2l for skip@pobox.com; Thu, 17 Dec
 2009 15:10:13 +0700
To: skip@pobox.com
Subject: Immediate ATM Card Payment Notification
From: Mr. Ban Ki-moon <unitenations001@centrum.sk>
Reply-To: alexbrown06@gmail.com
MIME-Version: 1.0
Content-Type: text/plain
Content-Transfer-Encoding: 8bit
Message-Id: <E1NLBR7-0004LM-2l@web.ipb.ac.id>
Date: Thu, 17 Dec 2009 15:10:12 +0700
X-AntiAbuse: This header was added to track abuse, please include it with any
 abuse report
X-AntiAbuse: Primary Hostname - web.ipb.ac.id
X-AntiAbuse: Original Domain - pobox.com
X-AntiAbuse: Originator/Caller UID/GID - [30 8] / [47 12]
X-AntiAbuse: Sender Address Domain - web.ipb.ac.id

UNITED NATIONS/ WORLD BANK COMPENSATION PROGRAM, IN CONJUNCTION WITH THE UNION  
BANK INT'L.


ATTN:Sir/Madam,


How are you today? Hope all is well with you and family?. Well, I assume that you may not 

understand why this message was sent to you. But I wish to inform you that the UNITED 

NATIONS/WORLD BANK ORGANIZATION facilitated a round-table meeting which just ended 2 days 

ago, and it has been agreed upon by both organization that a compensation payment of 

US$500,000.00 should be paid to 350 individuals whose Name and E-mail were selected randomly 

through an E-mail ballot system.

Your name was among the lists of individual selected to benefit at this end of the year 

compensation program, and that is why we have contacted you. The UNITED NATIONS & WORLD BANK 

ORGANIZATION have agreed to compensate you and other listed 350 individuals with a sum of 

US$500,000.00 each to compensate you for your loss which you might have had in the past in 

the hands of unscrupulous/Fraudulent officials.

This includes all foreign contractors that may have not received their contract payment, and 

people that have had an unfinished transaction or international businesses that failed in 

the past due to corrupt Government officials etc. Therefore, we are glad to inform you that 

a suitable arrangement has been put to place for you to receive your payment in good 

condition without any delay.

However,it is my pleasure to announce to you that an ATM CARD no; 5456 7264 1959 075 has 

been reserved for you which will be funded with your compensation payment of US$500,000.00, 

and sent to your door-step. So you are hereby advised to contact Rev. ALEX BROWN, the CEO, 

UNION BANK PLC for immediate issuance and delivery of your ATM card.

You are to contact Rev. ALEX BROWN at the address below:

CONTACT PERSON:  Rev. ALEX BROWN

E-MAIL: alex_abrown01@yahoo.in

PHONE: +234 803 358 1314.


You are required to contact the above person for your ATM Card, and furnish him with the 

following of your information that will be required to set-up your card.

1.  Your Full Name:
2.  Mailing Address ( P.O Box not acceptable ):
3.  Your Age, Occupation & Marital Status:
4.  Phone Number:


Meanwhile, you will receive your Pin Code which you will require to gain access to your card 

as soon as you have confirmed the receipt of your ATM Card in your custody.

Congratulations, and we are sorry for whatsoever plight/trouble you might have gone through 

in the past.

I look forward to hear from you as soon as you confirm your payment. Making the world a 

better place.

Mr. Ban Ki-Moon.
U.N Secretary (UNITED NATIONS). 


From junk                                                                                                                                                                                                                                                               
Delivered-To: skip.montanaro@gmail.com
Received: by 10.216.54.195 with SMTP id i45cs126521wec;
        Thu, 17 Dec 2009 01:47:51 -0800 (PST)
Received: by 10.224.124.24 with SMTP id s24mr1480919qar.119.1261043270363;
        Thu, 17 Dec 2009 01:47:50 -0800 (PST)
Return-Path: <SRS0=JIvT=ID=elitebed.ru=hellosvd6@bounce2.pobox.com>
Received: from azure.pobox.com (azure.pobox.com [208.72.237.55])
        by mx.google.com with ESMTP id 32si3414431qyk.52.2009.12.17.01.47.50;
        Thu, 17 Dec 2009 01:47:50 -0800 (PST)
Received-SPF: pass (google.com: domain of SRS0=JIvT=ID=elitebed.ru=hellosvd6@bounce2.pobox.com designates 208.72.237.55 as permitted sender) client-ip=208.72.237.55;
Authentication-Results: mx.google.com; spf=pass (google.com: domain of SRS0=JIvT=ID=elitebed.ru=hellosvd6@bounce2.pobox.com designates 208.72.237.55 as permitted sender) smtp.mail=SRS0=JIvT=ID=elitebed.ru=hellosvd6@bounce2.pobox.com
Received: from azure.pobox.com (localhost [127.0.0.1])
	by azure.pobox.com (Postfix) with ESMTP id BA8AE4131F0
	for <skip.montanaro@gmail.com>; Thu, 17 Dec 2009 04:47:49 -0500 (EST)
Delivered-To: skip@pobox.com
X-Pobox-Orig-Sender: <hellosvd6@elitebed.ru>
X-Pobox-Delivery-ID:
 3CCD6826-EAF1-11DE-BEDA-9A959D96F383-00107187!azure.pobox.com
x-pobox-client-address: 91.144.61.213
x-pobox-client-name: unknown
Received: from [91.144.61.213] (unknown [91.144.61.213]) by azure.pobox.com
 (Postfix) with ESMTP id 41E2541181B; Thu, 17 Dec 2009 04:47:45 -0500 (EST)
Received: (from rm.ua@localhost) by rm.ua (8.13.8/8.13.8/Submit) id
 b196yhbj599342; Thu, 17 Dec 2009 01:47:45 -0800 (envelope-from pyzah@rm.ua)
X-Authentication-Warning: rm.ua: ynyl set sender to pyzah@rm.ua using -f
To: Skip <skip@pobox.com>
Subject: =?koi8-r?B?887JzcnUxSDPxsnT?=
Date: Thu, 17 Dec 2009 01:47:45 -0800
From: =?koi8-r?B?5qPEz9IgIPrJzs/X2MXXyd4g?= <pyzah@rm.ua>
Reply-to: =?koi8-r?B?5qPEz9IgIPrJzs/X2MXXyd4g?= <pyzah@rm.ua>
Message-ID: <hec47kysn76832jrxl@localhost.localdomain>
X-Priority: 3Reply-to: =?koi8-r?B?5qPEz9IgIPrJzs/X2MXXyd4g?= <pyzah@rm.ua>
X-Mailer: PHP machine
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
Content-Type: text/plain; charset=koi8-r

ï¿½ ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ ï¿½ï¿½ï¿½ï¿½ï¿½ ï¿½ï¿½ï¿½ï¿½ï¿½!!!

 ï¿½ï¿½ï¿½ï¿½ï¿½ - ï¿½ ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ ï¿½ï¿½ ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ ï¿½ï¿½ï¿½ ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½!

                                                                                ï¿½ï¿½ï¿½ 8 (916) 180 54 67

ï¿½. ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ - 3 ï¿½ï¿½ï¿½
86 ï¿½ï¿½ ï¿½
1 ï¿½ï¿½ï¿½ï¿½ï¿½ ï¿½ï¿½ï¿½ï¿½ï¿½, ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½, 5 ï¿½ï¿½ï¿½ï¿½ï¿½ ï¿½ï¿½ï¿½ï¿½, ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½, ï¿½/ï¿½ ï¿½ ï¿½ï¿½ï¿½ï¿½ï¿½ , 2 ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ ï¿½ï¿½ï¿½ï¿½ï¿½ ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½  ï¿½ ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½.
150 ï¿½ï¿½. 30 ï¿½ï¿½. ï¿½ ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½, ï¿½ï¿½ï¿½ï¿½ ï¿½ ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½

 ï¿½. ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ - 10 ï¿½ï¿½ï¿½
ï¿½ï¿½ ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½, ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½, ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½, 7 ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½, ï¿½ï¿½ï¿½ï¿½ï¿½ 15 ï¿½ï¿½ ï¿½ï¿½ï¿½ï¿½ï¿½, ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ ï¿½ï¿½ ï¿½ï¿½ï¿½ï¿½ï¿½, ï¿½\ï¿½ ï¿½ï¿½ ï¿½ï¿½ï¿½ï¿½ï¿½,5,6 ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½!!!
 60,70 ï¿½ï¿½. ï¿½
                                                                                     
                                                                                   ï¿½ï¿½ï¿½ 8 (916) 180 54 67
 ï¿½. 1905 ï¿½ï¿½ï¿½ï¿½
600 ï¿½ï¿½ ï¿½
ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ ï¿½ï¿½ï¿½ï¿½, ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ (ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½, ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ ï¿½ï¿½ï¿½ï¿½, ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½), ï¿½ï¿½ï¿½ ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½, ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ ï¿½ ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½

ï¿½. ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ - 15 ï¿½ï¿½ï¿½
ï¿½ï¿½ï¿½ï¿½ï¿½ - ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ ï¿½ï¿½ 20 ï¿½ï¿½ 2000 ï¿½ï¿½. ï¿½.
ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ No, ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ ï¿½ï¿½ ï¿½ï¿½ï¿½ï¿½.

ï¿½. ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ - 5 ï¿½ï¿½ï¿½
ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½, ï¿½ï¿½ï¿½ï¿½ï¿½ "B", ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½, ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½.
17, 260, 210 ï¿½ï¿½ ï¿½
80 ï¿½ï¿½.ï¿½  - ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ ï¿½ ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½!
                                                                                     
                                                                                   ï¿½ï¿½ï¿½ 8 (916) 180 54 67
ï¿½. ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½  - 10 ï¿½ï¿½ï¿½
ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ "B" ï¿½ "B+" ï¿½ï¿½ ï¿½ï¿½ï¿½ï¿½ï¿½ ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ ï¿½ ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½, ï¿½ï¿½ï¿½ï¿½ï¿½ ï¿½ï¿½ï¿½ï¿½ï¿½, ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ ï¿½ï¿½ï¿½ ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½, ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½, ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½.

ï¿½. ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½/ï¿½ï¿½ï¿½ï¿½ - 10 ï¿½ï¿½ï¿½
ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ ï¿½ï¿½ï¿½ï¿½ + ï¿½ï¿½ï¿½ï¿½ï¿½ ï¿½ï¿½ ï¿½ï¿½ï¿½ï¿½ ï¿½ï¿½ï¿½ï¿½ï¿½!!!
ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½, ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ ï¿½ï¿½ï¿½ï¿½ï¿½, 2  ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½, ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ ï¿½ï¿½ï¿½ ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½, ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ ï¿½ï¿½ï¿½ï¿½ï¿½. ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½!
16, 18, 22, 25, 125, 150, 176  ï¿½ï¿½.ï¿½

ï¿½. ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ ï¿½ï¿½-ï¿½ - 1 ï¿½ï¿½ï¿½
ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ ï¿½ï¿½ï¿½ï¿½ ï¿½ ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½, ï¿½ï¿½ï¿½ï¿½ï¿½ ï¿½ ï¿½ï¿½ï¿½ï¿½ï¿½, ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½, ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½.
ï¿½ï¿½ï¿½ï¿½ï¿½: 19, 33, 38; 37,6; 36,8, 112 ï¿½ï¿½. ï¿½
                                                                                
                                                                               ï¿½ï¿½ï¿½ 8 (916) 180 54 67
ï¿½. ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½  - 5 ï¿½ï¿½ï¿½
ï¿½ï¿½ï¿½ï¿½ - ï¿½ï¿½ï¿½-ï¿½ï¿½ï¿½, ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ 560 ï¿½ï¿½.ï¿½., ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ ï¿½ï¿½ ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ ï¿½ï¿½ï¿½ï¿½ï¿½ ï¿½ï¿½ï¿½ï¿½ï¿½ ï¿½ ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½. ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½, ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ ï¿½ï¿½ï¿½ï¿½ï¿½. ï¿½ ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½. ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½.
ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ ï¿½ï¿½ ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ ï¿½ï¿½ï¿½ ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½.

ï¿½. ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ ï¿½ï¿½ï¿½/ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½
120, 20 ï¿½ï¿½. ï¿½. ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½, ï¿½ï¿½ï¿½ï¿½ï¿½ ï¿½ ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½

ï¿½. ï¿½ï¿½ï¿½ï¿½/ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½
ï¿½ï¿½ï¿½ï¿½ï¿½ 15, 17, 22, 125, 155, 176 ï¿½ï¿½. ï¿½.
ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ ï¿½ï¿½ï¿½ï¿½!

ï¿½. ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½
5 ï¿½ï¿½ï¿½ ï¿½ï¿½ ï¿½ï¿½ï¿½ï¿½ï¿½
16, 64, 48, 445 ï¿½ï¿½ï¿½ï¿½ï¿½ ï¿½ ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ ï¿½ ï¿½ï¿½ï¿½ ï¿½ ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½

                                                                               ï¿½ï¿½ï¿½ 8 (916) 180 54 67

From junk                                                                                                                                                                                                                                                               
Delivered-To: skip.montanaro@gmail.com
Received: by 10.216.54.195 with SMTP id i45cs99145wec;
        Wed, 16 Dec 2009 15:03:37 -0800 (PST)
Received: by 10.140.82.21 with SMTP id f21mr1196538rvb.50.1261004615366;
        Wed, 16 Dec 2009 15:03:35 -0800 (PST)
Return-Path: <avidhyx@paradise.com>
Received: from ?200.30.70.202? (cl-col-200-30-70-202.orbitel.net.co [200.30.70.202])
        by mx.google.com with ESMTP id 11si1751412pxi.69.2009.12.16.15.03.33;
        Wed, 16 Dec 2009 15:03:35 -0800 (PST)
Received-SPF: softfail (google.com: best guess record for domain of transitioning avidhyx@paradise.com does not designate 200.30.70.202 as permitted sender) client-ip=200.30.70.202;
Authentication-Results: mx.google.com; spf=softfail (google.com: best guess record for domain of transitioning avidhyx@paradise.com does not designate 200.30.70.202 as permitted sender) smtp.mail=avidhyx@paradise.com
Received: from 200.30.70.202 by ; Wed, 16 Dec 2009 18:03:34 -0500
Date:	Wed, 16 Dec 2009 18:03:34 -0500
From:	Affordable-Luxury <avidhyx@paradise.com>
X-Mailer: The Bat! (v2.00.2) Educational
Reply-To: avidhyx@paradise.com
X-Priority: 3 (Normal)
Message-ID: <616719413.78122635210467@paradise.com>
To: skip.mccraw@gmail.com
Subject: Holiday Sale on Rolex/Gucci/Louis Vuitton!
MIME-Version: 1.0
Content-Type: text/plain;
  charset=windows-1250
Content-Transfer-Encoding: 7bit

Stop Paying So much for Luxury!

http://www.smalllinks.com/GKZ


From junk
                                                                                                                                                                                                                                                               
Delivered-To: skip.montanaro@gmail.com
Received: by 10.216.54.195 with SMTP id i45cs141298wec;
        Thu, 17 Dec 2009 06:04:40 -0800 (PST)
Received: by 10.229.93.4 with SMTP id t4mr1393402qcm.93.1261058678986;
        Thu, 17 Dec 2009 06:04:38 -0800 (PST)
Return-Path: <SRS0=3gfn=ID=insing.com=zimrolandd@bounce2.pobox.com>
Received: from gold.pobox.com (gold.pobox.com [208.72.237.26])
        by mx.google.com with ESMTP id 28si4112574qyk.132.2009.12.17.06.04.38;
        Thu, 17 Dec 2009 06:04:38 -0800 (PST)
Received-SPF: pass (google.com: domain of SRS0=3gfn=ID=insing.com=zimrolandd@bounce2.pobox.com designates 208.72.237.26 as permitted sender) client-ip=208.72.237.26;
Authentication-Results: mx.google.com; spf=pass (google.com: domain of SRS0=3gfn=ID=insing.com=zimrolandd@bounce2.pobox.com designates 208.72.237.26 as permitted sender) smtp.mail=SRS0=3gfn=ID=insing.com=zimrolandd@bounce2.pobox.com
Received: from gold.pobox.com (localhost [127.0.0.1])
	by gold.pobox.com (Postfix) with ESMTP id 2A22A4123A5
	for <skip.montanaro@gmail.com>; Thu, 17 Dec 2009 09:04:38 -0500 (EST)
Delivered-To: skip@pobox.com
X-Pobox-Orig-Sender: <zimrolandd@insing.com>
X-Pobox-Delivery-ID:
 1CE879F0-EB15-11DE-B4B3-C973129216F6-00107187!gold.pobox.com
x-pobox-client-address: 203.104.16.213
x-pobox-client-name: web94303.mail.in2.yahoo.com
Received: from web94303.mail.in2.yahoo.com (web94303.mail.in2.yahoo.com
 [203.104.16.213]) by gold.pobox.com (Postfix) with SMTP id C18104125CB for
 <skip@pobox.com>; Thu, 17 Dec 2009 09:04:32 -0500 (EST)
Received: (qmail 90984 invoked by uid 60001); 17 Dec 2009 14:04:28 -0000
Message-ID: <252947.89532.qm@web94303.mail.in2.yahoo.com>
X-YMail-OSG:
 irm2qI0VM1k_3UfsAYVs_8jGkftB_gUubpZEYqaEnaCciew.yhu1tj34PxUfAhU6AAW7054NNU7vtDo8angt932pM8wStQez.MuwGsO470VhafzhLpyi.3LJ11h9CCBLf9nWCi8Zo55ToRNnBPg52JIfZC8YoWkwRsb6DoCpjZYuJNP94R6Hb6SCcQt0vl.4Z_zQuj9BUD3rENnuwBsXkGKnGcFgfpnkHChleC8PZcXiA6fBAuI8Nc0aslBiOkH7NaE.1N0xfoT3IO3nxpEiwRUZMlES9.Fq6xzWk3jKQtuLwulCmhR8TrThbcTUaf.IVxaY_yH52zT0tqJXpfF.04U7RJdWNSoEBUi5hGSF6ni66f9ZZk7aFiuJp8j67C.nHPZ1.00WaFzDEAvZZ91W1XrHV5nPqRVEfzCxK5F1XooHgkV9Cf8IYfmC950SGE5KNdFYj3kx3kt3C1Llf4zo9zQB4rfnpvAksl1kO0pPAhCEleYXtbWCAHYWrnDnuohxR1_Vdn6NoxrrlxrfoJ8e66FiRJUwh8R1HGBf5C.Sy42V8RLbmvX.wyQowsHSvFnZ5wq9PuiujYGTlTdedv6kEiL.AJLrWr5WJKGAX7i0BmyeyL3DwoZeX1I.jpUrryQhaA.xghGZyFstTFtaJ.pYqyQgg2avEtiPo3kMO4HqRehb0eq4ZocGo0TiqPfClAuf5M68KDgWU3zBWas28T2b1WK4XxWbpmubKw_iZE.QcqPmQQLMyY17HGAxlWp.PL.2TusIQKloOZe6zxl6c3dFaIycqLzUOBTJNt4SKbBguX9.DHDqZiH.1Efeyxs4fmH9Lpj3ko.Ry3s6gUxCsO8EPoxh_Inl8Vg13UTo41V52VBwPaNFK1M5XM3ByWWI.VbBpmFw7msCQsZ2OLAwwi51VY_uVX_ReC4rkO3zt_AeD01VY7SsdxFPOW65Fd6SqfqKzifKiinA0IdI.tQiIyd8IP.Jf9zLsqyYvIwWYhAoFR13rw0OdJZ5xbcFzkDsQD9sMX7jd.RGQfVwwO5eOYnJH0XyRF.yABhf_aeVCHO.2MedbZ0ydC2TrVsu56Zmw9zkGA8kukoWrIRiBSRUQFL3xEaP5FZI18qGxG6IFiHh2dTpJUmOFYgK_tlwQCbI3DJPPmXls8K9rpgjYkg-
Received: from [41.203.234.221] by web94303.mail.in2.yahoo.com via HTTP; Thu,
 17 Dec 2009 19:34:28 IST
X-RocketYMMF: drjyoti02
X-Mailer: YahooMailClassic/9.0.19 YahooMailWebService/0.8.100.260964
Date: Thu, 17 Dec 2009 19:34:28 +0530 (IST)
From: Mr Zim Rolad <zimrolandd@insing.com>
Reply-To: zimrolandd@insing.com
Subject: Please kindly call for explanations.
To: undisclosed recipients: ;
MIME-Version: 1.0
Content-Type: multipart/alternative; boundary="0-1953004961-1261058668=:89532"

--0-1953004961-1261058668=:89532
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: quoted-printable

Good=0ADay,=C2=A0
=0A=C2=A0
=0AMy name is Mr Zima Roland; I am the credit officer=C2=A0with Bank of Afr=
ica=0A(BOA)=C2=A0Ouagadougou Burkina Faso.=C2=A0
=0A=C2=A0
=0AI have a business proposal in the tune of $9 m, (Nine Million Us Dollars=
) after=0Athe successful transfer; we shall share in ratio of 40% for you a=
nd 60% for me.=C2=A0
=0A=C2=A0
=0AI want to front you in the bank so that you can apply for the claim of f=
und as=0Athe next of kin to our late customer Mr. Floyd Tarantino who died =
years ago=0Awith his entire family while on holidays and several attempt ha=
s being made to=0Alocate his family without success.
=0A=C2=A0
=0AYou should understand that as an insider in the bank I will do every thi=
ng=0Apossible to protect your interest and to make sure that I follow thing=
s up as=0Asoon as you are willing to work this out with me because I will n=
ot want this=0Amoney to go into the government purse.
=0A=C2=A0
=0AShould you be interested, please contact me through my private email=0A(=
zimrolandd@insing.com)
=0A=C2=A0
=0Aso we can commence on all arrangements and I will give you more informat=
ion on=0Ahow we would handle this project.=C2=A0
=0A=C2=A0
=0APlease treat this business with utmost confidentiality and send me the=
=0AFollowing information:=C2=A0
=0A=C2=A0
=0A(1) Full names:=C2=A0
=0A(2) Private phone number:=C2=A0
=0A(3) Current residential address:=C2=A0
=0A(4) Occupation:=C2=A0
=0A(5) Age and Sex:=C2=A0
=0A(5) photo or ID card:=C2=A0
=0A=C2=A0
=0AThanks for your co-operations Call me for more information=E2=80=99s=C2=
=A0
=0A=C2=A0
=0ATel; (+=C2=A0226)76-97-6733=C2=A0(+=C2=A0226)76-97-6733)
=0A=C2=A0
=0AMr Zima Roland.
=C2=A0=C2=A0=0A=0A=0A      The INTERNET now has a personality. YOURS! See y=
our Yahoo! Homepage. http://in.yahoo.com/
--0-1953004961-1261058668=:89532
Content-Type: text/html; charset=utf-8
Content-Transfer-Encoding: quoted-printable

<table cellspacing=3D"0" cellpadding=3D"0" border=3D"0" ><tr><td valign=3D"=
top" style=3D"font: inherit;"><span lang=3D"EN-GB" style=3D"font-size:12.0p=
t;font-family:=0A&quot;Times New Roman&quot;;mso-fareast-font-family:&quot;=
Times New Roman&quot;;color:black;=0Amso-ansi-language:EN-GB;mso-fareast-la=
nguage:FR;mso-bidi-language:AR-SA">Good=0ADay,<span class=3D"apple-converte=
d-space">&nbsp;</span><br>=0A&nbsp;<br>=0AMy name is Mr Zima Roland; I am t=
he credit officer&nbsp;with Bank of Africa=0A(BOA)&nbsp;Ouagadougou Burkina=
 Faso.<span class=3D"apple-converted-space">&nbsp;</span><br>=0A&nbsp;<br>=
=0AI have a business proposal in the tune of $9 m, (Nine Million Us Dollars=
) after=0Athe successful transfer; we shall share in ratio of 40% for you a=
nd 60% for me.<span class=3D"apple-converted-space">&nbsp;</span><br>=0A&nb=
sp;<br>=0AI want to front you in the bank so that you can apply for the cla=
im of fund as=0Athe next of kin to our late customer Mr. Floyd Tarantino wh=
o died years ago=0Awith his entire family while on holidays and several att=
empt has being made to=0Alocate his family without success.<br>=0A&nbsp;<br=
>=0AYou should understand that as an insider in the bank I will do every th=
ing=0Apossible to protect your interest and to make sure that I follow thin=
gs up as=0Asoon as you are willing to work this out with me because I will =
not want this=0Amoney to go into the government purse.<br>=0A&nbsp;<br>=0AS=
hould you be interested, please contact me through my private email=0A(zimr=
olandd@insing.com)<br>=0A&nbsp;<br>=0Aso we can commence on all arrangement=
s and I will give you more information on=0Ahow we would handle this projec=
t.<span class=3D"apple-converted-space">&nbsp;</span><br>=0A&nbsp;<br>=0APl=
ease treat this business with utmost confidentiality and send me the=0AFoll=
owing information:<span class=3D"apple-converted-space">&nbsp;</span><br>=
=0A&nbsp;<br>=0A(1) Full names:<span class=3D"apple-converted-space">&nbsp;=
</span><br>=0A(2) Private phone number:<span class=3D"apple-converted-space=
">&nbsp;</span><br>=0A(3) Current residential address:<span class=3D"apple-=
converted-space">&nbsp;</span><br>=0A(4) Occupation:<span class=3D"apple-co=
nverted-space">&nbsp;</span><br>=0A(5) Age and Sex:<span class=3D"apple-con=
verted-space">&nbsp;</span><br>=0A(5) photo or ID card:<span class=3D"apple=
-converted-space">&nbsp;</span><br>=0A&nbsp;<br>=0AThanks for your co-opera=
tions Call me for more information=E2=80=99s<span class=3D"apple-converted-=
space">&nbsp;</span><br>=0A&nbsp;<br>=0ATel; <u1:span class=3D"skype_v3_tb_=
injection" id=3D"softomate_v3_highlight_0" title=3D"Call&nbsp;this&nbsp;pho=
ne&nbsp;number&nbsp;in&nbsp;Burkina&nbsp;Faso&nbsp;with&nbsp;Skype:&nbsp;+2=
2676976733" nof=3D"" isfax=3D"" fwidth=3D".w16" freecall=3D"" type=3D".flex=
" mode=3D".compat" path=3D"https://toolbaricons.s4benterprises.com/IEPlugin=
/" skypeid=3D"0" skypeaction=3D"call" durex2=3D"%DADDYHEIGHT%" durex=3D"%DA=
DDYWIDTH%" context=3D"(+ 226)76-97-6733"><u1:span class=3D"skype_v3_tb_imgA=
" id=3D"skype_v3_tb_droppart_0" title=3D"Skype actions" style=3D"BACKGROUND=
-IMAGE: url(https://toolbaricons.s4benterprises.com/IEPlugin/inactive_a.com=
pat.flex.w16.gif)" skypeid=3D"0" skypeaction=3D"drop" skypesms=3D"1"><u1:sp=
an class=3D"skype_v3_tb_imgFlag" id=3D"skype_v3_tb_img_f0" style=3D"BACKGRO=
UND-IMAGE: url(https://toolbaricons.s4benterprises.com/IEPlugin/famfamfam/B=
F.gif)"></u1:span></u1:span><u1:span class=3D"skype_v3_tb_imgS" id=3D"skype=
_v3_tb_img_s0"></u1:span><u1:span class=3D"skype_v3_tb_injectionIn"
 id=3D"skype_v3_tb_text0"><u1:span class=3D"skype_v3_tb_innerText" id=3D"sk=
ype_v3_tb_innerText0">(+&nbsp;226)76-97-6733&nbsp;</u1:span></u1:span><u1:s=
pan class=3D"skype_v3_tb_imgR" id=3D"skype_v3_tb_img_r0"></u1:span></u1:spa=
n>(<u1:span class=3D"skype_v3_tb_injection_print" id=3D"softomate_v3_print_=
0" context=3D"">+&nbsp;226)76-97-6733</u1:span>)<br>=0A&nbsp;<br>=0AMr Zima=
 Roland.<br>&nbsp;&nbsp;</span></td></tr></table><br>=0A=0A=0A=0A      <!--=
1--><hr size=3D1></hr> =0AThe INTERNET now has a personality. YOURS! <a hre=
f=3D"http://in.rd.yahoo.com/tagline_yyi_1/*http://in.yahoo.com/" target=3D"=
_blank">See your Yahoo! Homepage</a>.
--0-1953004961-1261058668=:89532--

From SRS0=br8e=NJ=python.org=python-3000-bounces+skip=pobox.com@bounce2.pobox.com  Sat Aug 11 21:29:43 2007
X-VM-v5-Data: ([nil nil nil nil nil nil nil nil nil]
	["550" "Saturday" "11" "August" "2007" "21:27:51" "-0500" "Collin Winter" "collinw@gmail.com" nil "15" "[Python-3000] Untested py3k regressions" "^From:" nil nil "8" nil "[Python-3000] Untested py3k regressions" (number " " mark "     Collin Winter     Aug 11   15/550   " thread-indent "\"[Python-3000] Untested py3k regressions\"\n") nil nil nil nil nil nil nil]
	nil)
Delivered-To: skip.montanaro@gmail.com
Received: from pop.gmail.com
	by montanaro.dyndns.org with POP3 (fetchmail-6.3.8)
	for <skip@localhost> (single-drop);
	Sat, 11 Aug 2007 21:29:43 -0500 (CDT)
Received: by 10.35.11.16 with SMTP id o16cs135479pyi;
	Sat, 11 Aug 2007 19:28:12 -0700 (PDT)
Received: by 10.70.69.2 with SMTP id r2mr7961095wxa.1186885691861;
	Sat, 11 Aug 2007 19:28:11 -0700 (PDT)
Return-Path: <SRS0=br8e=NJ=python.org=python-3000-bounces+skip=pobox.com@bounce2.pobox.com>
Received: from fence.pobox.com (fence.pobox.com [208.210.124.76])
	by mx.google.com with ESMTP id h40si4869807wxd.2007.08.11.19.28.11;
	Sat, 11 Aug 2007 19:28:11 -0700 (PDT)
Received-SPF: pass (google.com: domain of
	SRS0=br8e=NJ=python.org=python-3000-bounces+skip=pobox.com@bounce2.pobox.com
	designates 208.210.124.76 as permitted sender)
	client-ip=208.210.124.76; 
Received: from fence.pobox.com (localhost [127.0.0.1])
	by fence.pobox.com (Postfix) with ESMTP id 458321F5A4
	for <skip.montanaro@gmail.com>; Sat, 11 Aug 2007 22:28:33 -0400 (EDT)
Delivered-To: skip@pobox.com
X-Pobox-Delivery-ID: <B8C89D6C-487B-11DC-B3A9-233F1315FD8C-00107187@fence.pobox.com>
X-Original-To: python-3000@python.org
Received: from smtp-vbr14.xs4all.nl (smtp-vbr14.xs4all.nl [194.109.24.34]) by
	fence.pobox.com (Postfix) with ESMTP id 0AA581927A for
	<skip@pobox.com>; Sat, 11 Aug 2007 22:28:32 -0400 (EDT)
Received: from bag.python.org (bag.python.org [194.109.207.14]) by
	smtp-vbr14.xs4all.nl (8.13.8/8.13.8) with ESMTP id l7C2SArD013560 for
	<skip@pobox.com>; Sun, 12 Aug 2007 04:28:10 +0200 (CEST) (envelope-from
	python-3000-bounces+skip=pobox.com@python.org)
Received: from bag.python.org (bag [127.0.0.1]) by bag.python.org (Postfix)
	with ESMTP id 4F63E1E4012 for <skip@pobox.com>;
	Sun, 12 Aug 2007 04:28:10 +0200 (CEST)
Delivered-To: python-3000@bag.python.org
Received: from bag.python.org (bag [127.0.0.1]) by bag.python.org (Postfix)
	with ESMTP id 7B2511E400B for <python-3000@python.org>; Sun, 12 Aug 2007
	04:27:55 +0200 (CEST)
X-Spam-Status: OK 0.033
Received: from bag (HELO bag.python.org) (127.0.0.1) by bag.python.org with
	SMTP; 12 Aug 2007 04:27:55 +0200
Received: from an-out-0708.google.com (an-out-0708.google.com
	[209.85.132.251]) by bag.python.org (Postfix) with ESMTP for
	<python-3000@python.org>; Sun, 12 Aug 2007 04:27:52 +0200 (CEST)
Received: by an-out-0708.google.com with SMTP id c8so211914ana for
	<python-3000@python.org>; Sat, 11 Aug 2007 19:27:52 -0700 (PDT)
Received: by 10.100.12.18 with SMTP id 18mr3056744anl.1186885671854; Sat, 11
	Aug 2007 19:27:51 -0700 (PDT)
Received: by 10.100.3.11 with HTTP; Sat, 11 Aug 2007 19:27:51 -0700 (PDT)
Message-ID: <43aa6ff70708111927q5a1d924cx14f73517c0143ff4@mail.gmail.com>
MIME-Version: 1.0
Content-Disposition: inline
X-BeenThere: python-3000@python.org
X-Mailman-Version: 2.1.9
Precedence: list
List-Id: "Python 3000 process, design, development" <python-3000.python.org>
List-Unsubscribe: <http://mail.python.org/mailman/listinfo/python-3000>,
	<mailto:python-3000-request@python.org?subject=unsubscribe>
List-Archive: <http://mail.python.org/pipermail/python-3000>
List-Post: <mailto:python-3000@python.org>
List-Help: <mailto:python-3000-request@python.org?subject=help>
List-Subscribe: <http://mail.python.org/mailman/listinfo/python-3000>,
	<mailto:python-3000-request@python.org?subject=subscribe>
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: 7bit
Errors-To: python-3000-bounces+skip=pobox.com@python.org
X-Virus-Scanned: by XS4ALL Virus Scanner
X-Spambayes-Evidence: '*H*': 0.72; '*S*': 0.00; 'wiki': 0.05; 'objects': 0.07;
	'url:wiki': 0.07; 'url:moin': 0.09; 'produces': 0.16;
	"i've": 0.18; "doesn't": 0.22; "aren't": 0.26; 'page': 0.29;
	'first': 0.32; 'subject:] ': 0.32; 'branch': 0.33; 'patch': 0.33;
	'url:org': 0.33; 'mailing': 0.34; 'subject:[': 0.34;
	'url:listinfo': 0.34; 'sender:no real name:2**0': 0.34;
	'header:Errors-To:1': 0.34; 'url:mailman': 0.34;
	'url:python': 0.35; 'skip:_ 40': 0.36; 'url:mail': 0.36;
	'sender:addr:python.org': 0.37; 'received:google.com': 0.38;
	'all,': 0.38; 'url:pobox': 0.38; 'subject:-': 0.39; 'list': 0.40;
	'charset:us-ascii': 0.40; 'received:194.109.24.34': 0.62;
	'received:smtp-vbr14.xs4all.nl': 0.62; 'received:bag': 0.63;
	'header:Received:14': 0.63; 'started': 0.63;
	'received:208.210.124.76': 0.67;
	'received:fence.pobox.com': 0.67; 'received:209.85.132': 0.70;
	'received:an-out-0708.google.com': 0.70; 'empty': 0.84;
	'url:%40': 0.84
From: "Collin Winter" <collinw@gmail.com>
Sender: python-3000-bounces+skip=pobox.com@python.org
To: "Python 3000" <python-3000@python.org>
Subject: [Python-3000] Untested py3k regressions
Date: Sat, 11 Aug 2007 21:27:51 -0500
X-Spambayes-Classification: ham; 0.14

Hi all,

I've started a wiki page to catalog known regressions in the py3k
branch that aren't covered by the test suite:
http://wiki.python.org/moin/Py3kRegressions.

First up: dir() doesn't work on traceback objects (it now produces an
empty list). A patch for this is up at http://python.org/sf/1772489.

Collin Winter
_______________________________________________
Python-3000 mailing list
Python-3000@python.org
http://mail.python.org/mailman/listinfo/python-3000
Unsubscribe: http://mail.python.org/mailman/options/python-3000/skip%40pobox.com

From SRS0=iqqr=ID=response.grist.org=mill_C00328EBDA3C2BDCC4A8BCBD553D57A1@bounce2.pobox.com  Thu Dec 17 09:21:55 2009
X-VM-v5-Data: ([nil nil nil nil nil nil nil nil nil]
	["8831" "" "17" "December" "2009" "07:19:30" "-0800" "Grist" "grist@grist.org" nil "196" "Last day to give to Grist -- and win sweet prizes" "^From:" nil nil "12" nil nil nil nil nil nil nil nil nil nil]
	nil)
Delivered-To: skip.montanaro@gmail.com
Received: from pop.gmail.com
 by montanaro.dyndns.org with POP3 (fetchmail-6.3.11)
 for <skip@localhost> (single-drop); Thu, 17 Dec 2009 09:21:54 -0600 (CST)
Received: by 10.216.54.195 with SMTP id i45cs146486wec;
 Thu, 17 Dec 2009 07:21:18 -0800 (PST)
Received: by 10.224.59.163 with SMTP id l35mr1652972qah.383.1261063277112;
 Thu, 17 Dec 2009 07:21:17 -0800 (PST)
Return-Path: <SRS0=iqqr=ID=response.grist.org=mill_C00328EBDA3C2BDCC4A8BCBD553D57A1@bounce2.pobox.com>
Received: from indigo.pobox.com (indigo.pobox.com [64.74.157.52])
 by mx.google.com with ESMTP id 37si4251329qyk.122.2009.12.17.07.21.15;
 Thu, 17 Dec 2009 07:21:16 -0800 (PST)
Received-SPF: pass (google.com: domain of
 SRS0=iqqr=ID=response.grist.org=mill_C00328EBDA3C2BDCC4A8BCBD553D57A1@bounce2.pobox.com
 designates 64.74.157.52 as permitted sender) client-ip=64.74.157.52; 
Authentication-Results: mx.google.com; spf=pass (google.com: domain of
 SRS0=iqqr=ID=response.grist.org=mill_C00328EBDA3C2BDCC4A8BCBD553D57A1@bounce2.pobox.com
 designates 64.74.157.52 as permitted sender)
 smtp.mail=SRS0=iqqr=ID=response.grist.org=mill_C00328EBDA3C2BDCC4A8BCBD553D57A1@bounce2.pobox.com;
 dkim=neutral (no signature) header.i=@grist.org
Received: from indigo.pobox.com (localhost [127.0.0.1])
 by indigo.pobox.com (Postfix) with ESMTP id 2D99E20B79F
 for <skip.montanaro@gmail.com>; Thu, 17 Dec 2009 10:21:15 -0500 (EST)
Delivered-To: skip@pobox.com
X-Pobox-Orig-Sender: <mill_C00328EBDA3C2BDCC4A8BCBD553D57A1@response.grist.org>
X-Pobox-Delivery-ID: D0D3C6CC-EB1F-11DE-98CF-D03CBD58303D-00107187!indigo.pobox.com
x-pobox-client-address: 216.182.86.36
x-pobox-client-name: lists.grist.org
Received: from lists.grist.org (lists.grist.org [216.182.86.36]) by
 indigo.pobox.com (Postfix) with ESMTP id 8F48D20B4B4 for <skip@pobox.com>;
 Thu, 17 Dec 2009 10:21:08 -0500 (EST)
DKIM-Signature: a=rsa-sha1; c=relaxed/relaxed; q=dns; s=key1; d=grist.org;
 h=From:To:Subject:Date:Message-ID:MIME-version:Content-type;
 b=cE8uWtt9CzyOc//Li9sX0Lp4oO91M/dMMRqlnGCJk10zhZswqC3j3v2swPGfJaDuNlheFMyJ/JmA
 J5CenyZPPQ==
DomainKey-Signature: a=rsa-sha1; c=nofws; q=dns; s=key1; d=grist.org;
 b=W+XsaYRU+yvtj41G5PE41NkFKQmRZlXgZjUwz0ouznFpfXNB5DQPtFBsxIOtmYI3sjLu0THqc08O
 xkU+n6HNmw==; 
Received: from lists.grist.org (127.0.0.1) by lists.grist.org (PowerMTA(TM)
 v3.2r2) id h5966e0c5pgj for <skip@pobox.com>; Thu, 17 Dec 2009 07:19:30 -0800
 (envelope-from <mill_C00328EBDA3C2BDCC4A8BCBD553D57A1@response.grist.org>)
ENVID: WC-1261063170268-15DA
Message-ID: <C00328EBDA3C2BDCC4A8BCBD553D57A1@response.grist.org>
MIME-version: 1.0
Content-type: multipart/alternative; boundary="======1261063158186======"
X-Mailer: WhatCounts
X-Spambayes-Evidence: '*H*': 0.18; '*S*': 0.82; 'watch': 0.07; 'keep': 0.09;
 'support': 0.09; "we're": 0.09; 'amount': 0.16; 'battery': 0.16; "can't": 0.16;
 'day.': 0.16; 'donate': 0.16; 'electric': 0.16; 'george,': 0.16;
 'giving': 0.16; 'goal': 0.16; "i'll": 0.16; 'passion': 0.16; 'pst': 0.16;
 'second': 0.16; 'subject:and': 0.16; 'url:http': 0.16; 'url:l': 0.16;
 'help': 0.18; 'news': 0.21; 'url:t': 0.21; 'may': 0.22; 'url:org': 0.30;
 'also': 0.32; 'to:': 0.33; 'url-ip:216/8': 0.33; 'last': 0.34; 'reach': 0.34;
 'received:org': 0.34; 'but': 0.37; 'want': 0.61; 'like': 0.62;
 'to:addr:skip': 0.62; 'please': 0.63; 'high': 0.63; 'skip:h 10': 0.63;
 'today': 0.63; 'online': 0.64; 'via': 0.64; 'to:addr:pobox.com': 0.64;
 'content-type:text/html': 0.66; 'content-type:multipart/alternative': 0.66;
 'received:64.74.157.52': 0.68; 'received:indigo.pobox.com': 0.68;
 'check': 0.71; 'received:64': 0.73; 'click': 0.76; 'received:64.74': 0.76;
 'received:64.74.157': 0.76; 'view': 0.80; 'fund': 0.84; 'green': 0.84;
 'p.m.': 0.84; 'saves': 0.84; 'suite': 0.84; 'url:unsubscribe': 0.84;
 'advice': 0.91; 'more.': 0.91; 'most': 0.91; 'neither': 0.91;
 'url-ip:72.21/16': 0.91; 'url:e': 0.91; 'url:r': 0.91; 'give': 0.93;
 'url:email': 0.93; 'url:pobox': 0.93; 'url:skip': 0.93; 'videos': 0.93;
 'here.': 0.95; 'url:gif': 0.95; 'url:jpg': 0.96
From: "Grist" <grist@grist.org>
To: skip@pobox.com
Subject: Last day to give to Grist -- and win sweet prizes
Date: 17 Dec 2009 07:19:30 -0800
Reply-To: "Grist" <mill_C00328EBDA3C2BDCC4A8BCBD553D57A1@response.grist.org>
X-Spambayes-Classification: spam; 0.82

This message is in MIME format. Since your mail reader does not understand
this format, some or all of this message may not be legible.
--======1261063158186======
Content-Type: text/plain; charset="iso-8859-1"
Content-Transfer-Encoding: quoted-printable

View this message in HTML:
<http://lists.grist.org/dm?id=3DC00328EBDA3C2BDCC4A8BCBD553D57A1>
--======1261063158186======
Content-Type: text/html; charset="iso-8859-1"
Content-Transfer-Encoding: quoted-printable

<=21-- To view this message, paste the following into your web browser's =
address bar: http://lists.grist.org/dm?id=3DC00328EBDA3C2BDCC4A8BCBD553D5=
7A1 -->

<center>
<table width=3D=22748=22 bgcolor=3D=22=23ffffff=22 cellpadding=3D=220=22 =
cellspacing=3D=220=22 style=3D=22width: 748px; margin-top: 0;=22>
<tr>
<td width=3D=22748=22 colspan=3D=223=22>
<=21-- Header img -->
<a href=3D=22http://lists.grist.org/t?r=3D2&c=3D5594&l=3D285&ctl=3D48E8A:=
C00328EBDA3C2BDCC4A8BCBD553D57A1&refsrc=3Demail7reg_15&amount=3D15&email=3D=
skip=40pobox.com=22><img src=3D=22http://www2.grist.org/appeals/fwb/simpl=
e-email-header-alt1.gif=22 width=3D=22748=22 height=3D=22122=22 alt=3D=22=
Grist friends with benefits: Give a little, get a lot=22 border=3D=220=22=
 /></a>
</td>
</tr>

<tr>
<td width=3D=22748=22 colspan=3D=223=22><img src=3D=22http://www2.grist.o=
rg/appeals/fwb/pixel.gif=22 height=3D=2220=22 width=3D=22740=22 alt=3D=22=
spacer=22></td>
</tr>

<tr>
<td width=3D=22470=22 valign=3D=22top=22>
<=21-- START Main content area -->

<p style=3D=22font-family: verdana, helvetica, sans-sarif; font-size: 13p=
x; line-height: 140%;=22>Dear George,</p>

<p style=3D=22font-family: verdana, helvetica, sans-sarif; font-size: 13p=
x; line-height: 140%;=22>Today is the FINAL DAY of our winter fund drive,=
 and that means:</p>

<ol style=3D=22font-family: verdana, helvetica, sans-sarif; font-size: 13=
px; line-height: 130%; margin: 10px 0 10px -10px;=22>
<li style=3D=22margin: 0 0 3px 0;=22>LAST DAY for a shot at a bike -- by =
<a href=3D=22http://lists.grist.org/t?r=3D2&c=3D5594&l=3D285&ctl=3D48E8A:=
C00328EBDA3C2BDCC4A8BCBD553D57A1&refsrc=3Demail7reg_15&amount=3D15&email=3D=
skip=40pobox.com=22 style=3D=22color: =23069; font-weight: bold;=22>givin=
g just =2415</a> or more.</li>
<li style=3D=22margin: 0 0 3px 0;=22>LAST DAY for a shot at a Grist water=
 bottle -- by giving any amount.</li>
<li style=3D=22margin: 0 0 8px 0;=22>LAST DAY to watch clever fauxmercial=
 videos like this one:</li>
</ol>

<div align=3D=22left=22 style=3D=22width: 450px;=22><a href=3D=22http://l=
ists.grist.org/t?r=3D2&c=3D5594&l=3D285&ctl=3D48E8A:C00328EBDA3C2BDCC4A8B=
CBD553D57A1&refsrc=3Demail7reg_15&amount=3D15&email=3Dskip=40pobox.com=22=
><img src=3D=22http://www2.grist.org/appeals/fwb/video7-save-cute_450.jpg=
=22 width=3D=22450=22 height=3D=22266=22 alt=3D=22Become a Friend with Be=
nefits=22 align=3D=22left=22 border=3D=220=22 style=3D=22margin: 5px 0 15=
px 0;=22 /></a><br />
</div>


<p style=3D=22font-family: verdana, helvetica, sans-sarif; font-size: 13p=
x; line-height: 140%;=22>Help us meet our goal to get <strong>250 new gif=
ts</strong> today in the hopes of ending our winter campaign on a high no=
te. And remember: gifts of =2410+/month will be matched by our mystery do=
nor.</p>

<p style=3D=22font-family: verdana, helvetica, sans-sarif; font-size: 13p=
x; line-height: 140%;=22>Why give? I'll make it simple: Grist brings you =
the best green news, analysis, and advice available on the web. And we wa=
nt to keep it that way.</p>

<p style=3D=22font-family: verdana, helvetica, sans-sarif; font-size: 13p=
x; line-height: 140%;=22>We're a nonprofit, but we can't survive on passi=
on alone. And neither can the cute cuddlies Grist saves with our wit each=
 day.</p>

<p style=3D=22font-family: verdana, helvetica, sans-sarif; font-size: 13p=
x; line-height: 140%;=22><a href=3D=22http://lists.grist.org/t?r=3D2&c=3D=
5594&l=3D285&ctl=3D48E8A:C00328EBDA3C2BDCC4A8BCBD553D57A1&refsrc=3Demail7=
reg_15&amount=3D15&email=3Dskip=40pobox.com=22 style=3D=22color: =23069; =
font-weight: bold;=22>Please support Grist with a gift today.</a></p>

<p style=3D=22font-family: verdana, helvetica, sans-sarif; font-size: 13p=
x; line-height: 140%;=22>Gratefully,<br />
Ashley Braun<br />
<em>News Producer</em></p>

<p style=3D=22font-family: verdana, helvetica, sans-sarif; font-size: 13p=
x; line-height: 140%; margin-top: 25px;=22>P.S. Giving online give you th=
e heebie-jeebies? You may also send an old-fashioned (but most welcome) c=
heck to: Grist, 710 Second Avenue, Suite 860, Seattle, WA 98104.</p>
<=21-- END Main content area -->
</td>



<td width=3D=2236=22><img src=3D=22http://www2.grist.org/appeals/fwb/pixe=
l.gif=22 width=3D=2236=22 height=3D=2220=22 border=3D=220=22 alt=3D=22=22=
 /></td>




<td width=3D=22242=22 valign=3D=22top=22>
<=21-- Side content area -->
<a href=3D=22http://lists.grist.org/t?r=3D2&c=3D5594&l=3D285&ctl=3D48E8A:=
C00328EBDA3C2BDCC4A8BCBD553D57A1&refsrc=3Demail7reg_15&amount=3D15&email=3D=
skip=40pobox.com=22><img src=3D=22http://www2.grist.org/appeals/fwb/give-=
now-button.gif=22 width=3D=22242=22 height=3D=2256=22 border=3D=220=22 al=
t=3D=22Give now=21=22 style=3D=22border: none; margin: 0 0 0 0;=22 /></a>

<p style=3D=22font-family: verdana, helvetica, sans-sarif; font-size: 14p=
x; line-height: 120%; font-weight: bold; margin-top: 10px;=22>Win an elec=
tric folding bicycle</p>

<p style=3D=22font-family: verdana, helvetica, sans-sarif; font-size: 12p=
x; line-height: 140%;=22>Sign up to give =2415 (or more) by 11:59 p.m. PS=
T 12/17/09 and be entered in a drawing to win an IZIP Via Mezza bicycle.<=
/p>

<a href=3D=22http://lists.grist.org/t?r=3D2&c=3D5594&l=3D285&ctl=3D48E88:=
C00328EBDA3C2BDCC4A8BCBD553D57A1&=22><img src=3D=22http://www2.grist.org/=
appeals/fwb/izip-hybrid-bike-premium2_242.gif=22 width=3D=22242=22 height=
=3D=22223=22 alt=3D=22iZIP hybrid electri bike=22 border=3D=220=22 /></a>
<p style=3D=22font-family: verdana, helvetica, sans-sarif; font-size: 12p=
x; line-height: 140%; padding-bottom: 15px; border-bottom: 1px solid =23c=
cc;=22>The love child of an electric bike and a folding bike, this commut=
er's dream sports a detachable, rechargeable battery; boasts a 20-mile ba=
ttery range; and can reach 15 mph. Value: =24899. Courtesy of <a href=3D=22=
http://lists.grist.org/t?r=3D2&c=3D5594&l=3D285&ctl=3D48E88:C00328EBDA3C2=
BDCC4A8BCBD553D57A1&=22 style=3D=22color: =23069;=22>Currie Technologies<=
/a>.</p>

<p style=3D=22font-family: verdana, helvetica, sans-sarif; font-size: 14p=
x; line-height: 140%; font-weight: bold;=22>Win a Gristy water bottle</p>
<a href=3D=22http://lists.grist.org/t?r=3D2&c=3D5594&l=3D285&ctl=3D48E8A:=
C00328EBDA3C2BDCC4A8BCBD553D57A1&refsrc=3Demail7reg_15&amount=3D15&email=3D=
skip=40pobox.com=22><img src=3D=22http://www2.grist.org/appeals/fwb/klean=
-kanteen-gristified_242.gif=22 width=3D=22242=22 height=3D=22184=22 alt=3D=
=22Gristy Klean Kanteen water bottle=22 border=3D=220=22 style=3D=22margi=
n-top: -5px;=22 /></a>
<p style=3D=22font-family: verdana, helvetica, sans-sarif; font-size: 12p=
x; line-height: 140%;=22>The first 60 people who donate any amount today =
will get a stainless steel, toxin- and BPA-free, lightweight, dishwasher-=
safe Gristy water bottle, courtesy of <a href=3D=22http://lists.grist.org=
/t?r=3D2&c=3D5594&l=3D285&ctl=3D48E87:C00328EBDA3C2BDCC4A8BCBD553D57A1&=22=
 style=3D=22color: =23069;=22>Klean Kanteen</a>=21 Value: =2418.</p>


<p style=3D=22margin-top: 30px; font-family: verdana, helvetica, sans-sar=
if; font-size: 11px; line-height: 130%;=22><a href=3D=22http://lists.gris=
t.org/t?r=3D2&c=3D5594&l=3D285&ctl=3D48E89:C00328EBDA3C2BDCC4A8BCBD553D57=
A1&=22 style=3D=22color: =23069;=22>Rules and regulations.</a></p>


</td>




</tr>

<tr>
<td colspan=3D=223=22><img src=3D=22http://www2.grist.org/appeals/fwb/pix=
el.gif=22 width=3D=22748=22 height=3D=2220=22 border=3D=220=22 alt=3D=22=22=
 /><br />
<p style=3D=22font-family: verdana, helvetica, sans-sarif; font-size: 11p=
x; line-height: 130%; color: =23666;=22>To unsubscribe from this campaign=
, <unsubscribe><a href=3D=22http://lists.grist.org/bin/listunsub?id=3DC00=
328EBDA3C2BDCC4A8BCBD553D57A1&e=3Dhttp://www.grist.org/unsubscribe=22 sty=
le=3D=22color: =23326780;=22>click here</a></unsubscribe>.</p>

<=21-- Footer img -->
<img src=3D=22http://www2.grist.org/appeals/fwb/footer.gif=22 width=3D=22=
748=22 height=3D=2282=22 alt=3D=22Grist.org=22 border=3D=220=22 /></td>
</tr>
</table>
</center>
<img src=3D=22http://lists.grist.org/t?c=3D5594&r=3D2&l=3D285&t=3D10&e=3D=
C00328EBDA3C2BDCC4A8BCBD553D57A1=22 width=3D1 height=3D1 border=3D0>

<img src=3D=22http://lists.grist.org/sf?r=3D2&l=3D285&sid=3DC00328EBDA3C2=
BDCC4A8BCBD553D57A1&f=3D2=22 width=3D1 height=3D1 border=3D0>

--======1261063158186======--

From SRS0=m0Ne=IC=python.org=python-checkins-bounces+skip=pobox.com@bounce2.pobox.com  Wed Dec 16 14:13:59 2009
X-VM-v5-Data: ([nil nil nil nil nil nil nil nil nil]
	["13029" "Wednesday" "16" "December" "2009" "15:13:52" "-0500" "mark.dickinson" "python-checkins@python.org" nil "359" "[Python-checkins] r76861 - in python/trunk: Doc/library/math.rst Lib/test/math_testcases.txt Lib/test/test_math.py Misc/NEWS Modules/Setup.dist Modules/_math.c Modules/_math.h Modules/mathmodule.c PC/VC6/pythoncore.dsp PC/VS7.1/pythoncore.vcproj PC/VS8.0/pythoncore.vcproj PCbuild/pythoncore.vcproj setup.py" "^From:" nil nil "12" nil nil nil nil nil nil nil nil nil nil]
	nil)
Delivered-To: skip.montanaro@gmail.com
Received: from pop.gmail.com
 by montanaro.dyndns.org with POP3 (fetchmail-6.3.11)
 for <skip@localhost> (single-drop); Wed, 16 Dec 2009 14:13:59 -0600 (CST)
Received: by 10.216.54.195 with SMTP id i45cs88419wec;
 Wed, 16 Dec 2009 12:13:55 -0800 (PST)
Received: by 10.229.93.41 with SMTP id t41mr876283qcm.81.1260994433979;
 Wed, 16 Dec 2009 12:13:53 -0800 (PST)
Return-Path: <SRS0=m0Ne=IC=python.org=python-checkins-bounces+skip=pobox.com@bounce2.pobox.com>
Received: from gold.pobox.com (gold.pobox.com [208.72.237.26])
 by mx.google.com with ESMTP id 14si2609476qyk.45.2009.12.16.12.13.53;
 Wed, 16 Dec 2009 12:13:53 -0800 (PST)
Received-SPF: pass (google.com: domain of
 SRS0=m0Ne=IC=python.org=python-checkins-bounces+skip=pobox.com@bounce2.pobox.com
 designates 208.72.237.26 as permitted sender) client-ip=208.72.237.26; 
Authentication-Results: mx.google.com; spf=pass (google.com: domain of
 SRS0=m0Ne=IC=python.org=python-checkins-bounces+skip=pobox.com@bounce2.pobox.com
 designates 208.72.237.26 as permitted sender)
 smtp.mail=SRS0=m0Ne=IC=python.org=python-checkins-bounces+skip=pobox.com@bounce2.pobox.com
Received: from gold.pobox.com (localhost [127.0.0.1])
 by gold.pobox.com (Postfix) with ESMTP id 405164122C7
 for <skip.montanaro@gmail.com>; Wed, 16 Dec 2009 15:13:53 -0500 (EST)
Delivered-To: skip@pobox.com
X-Pobox-Orig-Sender: <python-checkins-bounces+skip=pobox.com@python.org>
X-Pobox-Delivery-ID: 87ED09DC-EA7F-11DE-8136-DEDFC1406F16-00107187!gold.pobox.com
X-Original-To: python-checkins@python.org
x-pobox-client-address: 82.94.164.166
x-pobox-client-name: mail.python.org
Received: from mail.python.org (mail.python.org [82.94.164.166]) by
 gold.pobox.com (Postfix) with ESMTP id 7C9914122F5 for <skip@pobox.com>; Wed,
 16 Dec 2009 15:13:52 -0500 (EST)
Received: from albatross.python.org (localhost.localdomain [127.0.0.1]) by
 mail.python.org (Postfix) with ESMTP id 9BD8AF2F8 for <skip@pobox.com>; Wed,
 16 Dec 2009 21:13:50 +0100 (CET)
Authentication-Results: mail.python.org; dkim=permerror (bad format)
 header.i=unknown
Delivered-To: python-checkins@mail.python.org
Received: from albatross.python.org (localhost.localdomain [127.0.0.1]) by
 mail.python.org (Postfix) with ESMTP id 3554DF2A1 for
 <python-checkins@python.org>; Wed, 16 Dec 2009 21:13:41 +0100 (CET)
Authentication-Results: mail.python.org; dkim=permerror (bad format)
 header.i=unknown
X-Spam-Status: OK 0.006
X-Spam-Evidence: '*H*': 0.99; '*S*': 0.00; 'math': 0.03; '#include': 0.05;
 'array': 0.05; 'else:': 0.05; 'modified:': 0.07; 'raised': 0.07; 'skip:r 30':
 0.07; '(original)': 0.09; '700': 0.09; 'author:': 0.09; 'compute': 0.09;
 'elif': 0.09; 'extreme': 0.09; 'log:': 0.09; 'moderate': 0.09; 'none:': 0.09; 
 'received:82.94.164.162': 0.09; 'received:dinsdale.python.org': 0.09;
 'revision:': 0.09; 'sized': 0.09; 'subject:library': 0.09; 'subject:test':
 0.09; 'subject:trunk': 0.09; 'substitute': 0.09; 'subject:python': 0.10;
 'received:82.94': 0.10; 'received:82.94.164': 0.10; 'from:addr:python.org':
 0.11; 'function': 0.15; 'received:python.org': 0.15; '(empty': 0.16; '+1,9':
 0.16; '-0,0': 0.16; '-lm': 0.16; 'added:': 0.16; 'floats': 0.16;
 'functions.': 0.16; 'module.': 0.16; 'subject:Lib': 0.16;
 'to:addr:python-checkins': 0.16; 'tuple': 0.16; 'values,': 0.16; 'variables':
 0.16; 'fine': 0.17; 'it!': 0.19; 'import': 0.19; 'testing': 0.19;
 'expression': 0.20; 'machine': 0.20; 'string': 0.20; 'skip:u 20': 0.20;
 '(to': 0.23; 'e.g.': 0.23; 'library': 0.24; 'error': 0.27; 'defined': 0.27;
 'else': 0.29; 'source': 0.30; 'skip:[ 10': 0.30; "doesn't": 0.31; 'binary':
 0.31; 'implement': 0.31; 'issue': 0.32; 'significant': 0.32; 'values': 0.32;
 'base': 0.33; 'thanks': 0.34; 'subject:: ': 0.34; 'file': 0.35;
 'received:org': 0.35; 'raise': 0.36; '+++': 0.36; 'skip:7 10': 0.36; 'date:':
 0.36; 'received:82': 0.36; 'test': 0.36; 'system': 0.36; 'skip:" 10': 0.36;
 '>>>': 0.37; 'file)': 0.37; 'float': 0.37; 'functions,': 0.37; 'objects':
 0.37; 'skip:p 30': 0.37; 'windows.': 0.37; 'using': 0.37; 'works': 0.39;
 'trouble': 0.39; 'different': 0.40; 'use': 0.40; 'gives': 0.60; 'evaluate':
 0.61; 'structure': 0.61; 'value': 0.61; 'avoid': 0.61; 'continue': 0.61;
 'due': 0.62; 'skip:m 20': 0.63; 'provides': 0.63; 'smaller': 0.63; 'skip:1
 10': 0.64; 'skip:l 20': 0.65; 'power': 0.65; 'skip:0 10': 0.65; 'platforms':
 0.66; 'quantity': 0.66; 'skip:: 10': 0.66; 'smith': 0.66; 'subject:skip:p
 10': 0.67; '300': 0.67; 'range': 0.68; 'designed': 0.70; 'full': 0.70;
 'begin': 0.70; 'skip:+ 10': 0.72; 'floor,': 0.74; 'skip:{ 10': 0.74; 'safe':
 0.77; '1000': 0.78; 'accurate': 0.78; 'evaluation': 0.78; 'negative': 0.78;
 'skip:5 10': 0.78; 'accuracy': 0.84; '"for': 0.84; '123': 0.84; 'avoids':
 0.84; 'definitions': 0.84; 'general.': 0.84; 'goodies': 0.84; 'implemented':
 0.84; 'skip:1 20': 0.84; 'skip:3 20': 0.84; 'wed': 0.84;
 'message-id:invalid': 0.88; '0.0': 0.91; 'formula': 0.91; 'shift': 0.91;
 'skip:0 20': 0.91; 'subject:NEWS': 0.91; 'criteria': 0.93
Received: from localhost.localdomain (HELO mail.python.org) (127.0.0.1) by
 albatross.python.org with SMTP; 16 Dec 2009 21:13:41 +0100
Received: from dinsdale.python.org (dinsdale.python.org [82.94.164.162]) by
 mail.python.org (Postfix) with ESMTP for <python-checkins@python.org>; Wed,
 16 Dec 2009 21:13:41 +0100 (CET)
MIME-Version: 1.0
X-BeenThere: python-checkins@python.org
X-Mailman-Version: 2.1.12
Precedence: list
List-Id: Check-in messages from the Python maintainers
 <python-checkins.python.org>
List-Unsubscribe: <http://mail.python.org/mailman/options/python-checkins>,
 <mailto:python-checkins-request@python.org?subject=unsubscribe>
List-Archive: <http://mail.python.org/pipermail/python-checkins>
List-Post: <mailto:python-checkins@python.org>
List-Help: <mailto:python-checkins-request@python.org?subject=help>
List-Subscribe: <http://mail.python.org/mailman/listinfo/python-checkins>,
 <mailto:python-checkins-request@python.org?subject=subscribe>
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: 7bit
Errors-To: python-checkins-bounces+skip=pobox.com@python.org
Message-Id: <20091216201352.7C9914122F5@gold.pobox.com>
X-Spambayes-Evidence: '*H*': 1.00; '*S*': 0.00; 'end': 0.04; 'skip:_ 40': 0.04;
 'field': 0.05; 'skip:- 10': 0.05; 'error': 0.07; 'fine': 0.07;
 'implement': 0.07; 'method': 0.07; 'provides': 0.07; 'result': 0.07;
 'similar': 0.07; 'skip:_ 10': 0.07; 'source': 0.07; "we're": 0.07; '+++': 0.09;
 'author:': 0.09; 'base': 0.09; 'double': 0.09; 'from:addr:python.org': 0.09;
 'log:': 0.09; 'modified:': 0.09; 'positive': 0.09; 'revision:': 0.09;
 'skip:+ 10': 0.09; 'skip:s 30': 0.09; 'string': 0.09; 'subject:checkins': 0.09;
 '#include': 0.16; '(original)': 0.16; '(to': 0.16; '+#define': 0.16;
 '+#endif': 0.16; '+#include': 0.16; '+..': 0.16; '+1,31': 0.16; '-0,0': 0.16;
 '1000': 0.16; '>>>': 0.16; 'added:': 0.16; 'argument,': 0.16; 'array': 0.16;
 'binary': 0.16; 'compute': 0.16; 'dec': 0.16; 'definitions': 0.16;
 'e.g.': 0.16; 'email name:python-checkins': 0.16; 'expression': 0.16;
 'extreme': 0.16; 'float': 0.16; 'functions': 0.16; 'general.': 0.16;
 'library': 0.16; 'machine': 0.16; 'math': 0.16;
 'message-id:@gold.pobox.com': 0.16; 'negative': 0.16; 'objects': 0.16;
 'places': 0.16; 'raise': 0.16; 'raised': 0.16; 'received:82.94.164.162': 0.16;
 'received:dinsdale.python.org': 0.16; 'safe': 0.16;
 'sender:addr:python-checkins-bounces+skip=pobox.com': 0.16; 'skip:+ 60': 0.16;
 'skip:= 70': 0.16; 'skip:p 30': 0.16; 'skip:r 30': 0.16; 'subject:test': 0.16;
 'subject:trunk': 0.16; 'to:addr:python-checkins': 0.16;
 'url:python-checkins': 0.16; 'values,': 0.16; 'email addr:python.org': 0.17;
 "don't": 0.17; 'avoid': 0.20; 'set': 0.20; 'skip:- 20': 0.20; 'testing': 0.20;
 'subject:: ': 0.24; '---': 0.24; 'close': 0.24; 'date:': 0.24; "doesn't": 0.24;
 'issue': 0.24; 'outside': 0.24; 'subject:Python': 0.24; 'within': 0.24;
 'works': 0.24; 'way': 0.27; 'where': 0.28; 'header:Received:10': 0.28;
 'list': 0.28; 'thanks': 0.30; 'mailing': 0.30; 'using': 0.30; 'small': 0.31;
 '"this': 0.32; 'else': 0.32; 'function': 0.32; 'significant': 0.32;
 'skip:+ 20': 0.32; 'skip:2 10': 0.32; 'structure': 0.32; 'skip:" 10': 0.32;
 'subject:] ': 0.32; 'url:org': 0.32; 'add': 0.34; 'how': 0.35; 'due': 0.37;
 'skip:1 10': 0.37; 'subject:[': 0.37; 'use': 0.39; 'when': 0.39;
 'subject: - ': 0.39; 'url:python': 0.39; 'allow': 0.61; 'skip:m 20': 0.61;
 'subject:/': 0.61; 'value': 0.61; 'skip:v 10': 0.61; 'those': 0.61;
 'skip:o 10': 0.64; 'full': 0.65; 'skip:c 10': 0.67;
 'sender:addr:python.org': 0.68; 'return': 0.69; 'special': 0.69;
 'trouble': 0.69; 'subject:\n ': 0.70; 'gives': 0.84; 'implemented': 0.84;
 'module.': 0.84; 'platforms': 0.84; 'shift': 0.84; 'skip:1 20': 0.84;
 'skip:2 20': 0.84; 'skip:3 20': 0.84; 'skip:5 10': 0.84; 'smith': 0.84;
 'subject:library': 0.84; 'tiny': 0.84; 'skip:7 10': 0.91; 'test': 0.91;
 'accept': 0.93
From: mark.dickinson <python-checkins@python.org>
Sender: python-checkins-bounces+skip=pobox.com@python.org
To: python-checkins@python.org
Subject: [Python-checkins] r76861 - in python/trunk: Doc/library/math.rst
 Lib/test/math_testcases.txt Lib/test/test_math.py Misc/NEWS
 Modules/Setup.dist Modules/_math.c Modules/_math.h Modules/mathmodule.c
 PC/VC6/pythoncore.dsp PC/VS7.1/pythoncore.vcproj PC/VS8.0/pythoncore.vcproj
 PCbuild/pythoncore.vcproj setup.py
Date: Wed, 16 Dec 2009 15:13:52 -0500 (EST)
X-Spambayes-Classification: ham; 0.00

Author: mark.dickinson
Date: Wed Dec 16 21:13:40 2009
New Revision: 76861

Log:
Issue #3366: Add expm1 function to math module.  Thanks Eric Smith for
testing on Windows.


Added:
   python/trunk/Modules/_math.c
   python/trunk/Modules/_math.h
Modified:
   python/trunk/Doc/library/math.rst
   python/trunk/Lib/test/math_testcases.txt
   python/trunk/Lib/test/test_math.py
   python/trunk/Misc/NEWS
   python/trunk/Modules/Setup.dist
   python/trunk/Modules/mathmodule.c
   python/trunk/PC/VC6/pythoncore.dsp
   python/trunk/PC/VS7.1/pythoncore.vcproj
   python/trunk/PC/VS8.0/pythoncore.vcproj
   python/trunk/PCbuild/pythoncore.vcproj
   python/trunk/setup.py

Modified: python/trunk/Doc/library/math.rst
==============================================================================
--- python/trunk/Doc/library/math.rst	(original)
+++ python/trunk/Doc/library/math.rst	Wed Dec 16 21:13:40 2009
@@ -164,6 +164,20 @@
    Return ``e**x``.
 
 
+.. function:: expm1(x)
+
+   Return ``e**x - 1``.  For small floats *x*, the subtraction in
+   ``exp(x) - 1`` can result in a significant loss of precision; the
+   :func:`expm1` function provides a way to compute this quantity to
+   full precision::
+
+      >>> from math import exp, expm1
+      >>> exp(1e-5) - 1  # gives result accurate to 11 places
+      1.0000050000069649e-05
+      >>> expm1(1e-5)    # result accurate to full precision
+      1.0000050000166668e-05
+
+
 .. function:: log(x[, base])
 
    With one argument, return the natural logarithm of *x* (to base *e*).

Modified: python/trunk/Lib/test/math_testcases.txt
==============================================================================
--- python/trunk/Lib/test/math_testcases.txt	(original)
+++ python/trunk/Lib/test/math_testcases.txt	Wed Dec 16 21:13:40 2009
@@ -249,3 +249,73 @@
 -- thanks to loss of accuracy in 1-x
 gam0140 gamma -63.349078729022985 -> 4.1777971677761880e-88
 gam0141 gamma -127.45117632943295 -> 1.1831110896236810e-214
+
+-----------------------------------------------------------
+-- expm1: exp(x) - 1, without precision loss for small x --
+-----------------------------------------------------------
+
+-- special values
+expm10000 expm1 0.0 -> 0.0
+expm10001 expm1 -0.0 -> -0.0
+expm10002 expm1 inf -> inf
+expm10003 expm1 -inf -> -1.0
+expm10004 expm1 nan -> nan
+
+-- expm1(x) ~ x for tiny x
+expm10010 expm1 5e-324 -> 5e-324
+expm10011 expm1 1e-320 -> 1e-320
+expm10012 expm1 1e-300 -> 1e-300
+expm10013 expm1 1e-150 -> 1e-150
+expm10014 expm1 1e-20 -> 1e-20
+
+expm10020 expm1 -5e-324 -> -5e-324
+expm10021 expm1 -1e-320 -> -1e-320
+expm10022 expm1 -1e-300 -> -1e-300
+expm10023 expm1 -1e-150 -> -1e-150
+expm10024 expm1 -1e-20 -> -1e-20
+
+-- moderate sized values, where direct evaluation runs into trouble
+expm10100 expm1 1e-10 -> 1.0000000000500000e-10
+expm10101 expm1 -9.9999999999999995e-08 -> -9.9999995000000163e-8
+expm10102 expm1 3.0000000000000001e-05 -> 3.0000450004500034e-5
+expm10103 expm1 -0.0070000000000000001 -> -0.0069755570667648951
+expm10104 expm1 -0.071499208740094633 -> -0.069002985744820250
+expm10105 expm1 -0.063296004180116799 -> -0.061334416373633009
+expm10106 expm1 0.02390954035597756 -> 0.024197665143819942
+expm10107 expm1 0.085637352649044901 -> 0.089411184580357767
+expm10108 expm1 0.5966174947411006 -> 0.81596588596501485
+expm10109 expm1 0.30247206212075139 -> 0.35319987035848677
+expm10110 expm1 0.74574727375889516 -> 1.1080161116737459
+expm10111 expm1 0.97767512926555711 -> 1.6582689207372185
+expm10112 expm1 0.8450154566787712 -> 1.3280137976535897
+expm10113 expm1 -0.13979260323125264 -> -0.13046144381396060
+expm10114 expm1 -0.52899322039643271 -> -0.41080213643695923
+expm10115 expm1 -0.74083261478900631 -> -0.52328317124797097
+expm10116 expm1 -0.93847766984546055 -> -0.60877704724085946
+expm10117 expm1 10.0 -> 22025.465794806718
+expm10118 expm1 27.0 -> 532048240600.79865
+expm10119 expm1 123 -> 2.6195173187490626e+53
+expm10120 expm1 -12.0 -> -0.99999385578764666
+expm10121 expm1 -35.100000000000001 -> -0.99999999999999944
+
+-- extreme negative values
+expm10201 expm1 -37.0 -> -0.99999999999999989
+expm10200 expm1 -38.0 -> -1.0
+expm10210 expm1 -710.0 -> -1.0
+-- the formula expm1(x) = 2 * sinh(x/2) * exp(x/2) doesn't work so
+-- well when exp(x/2) is subnormal or underflows to zero; check we're
+-- not using it!
+expm10211 expm1 -1420.0 -> -1.0
+expm10212 expm1 -1450.0 -> -1.0
+expm10213 expm1 -1500.0 -> -1.0
+expm10214 expm1 -1e50 -> -1.0
+expm10215 expm1 -1.79e308 -> -1.0
+
+-- extreme positive values
+expm10300 expm1 300 -> 1.9424263952412558e+130
+expm10301 expm1 700 -> 1.0142320547350045e+304
+expm10302 expm1 709.78271289328393 -> 1.7976931346824240e+308
+expm10303 expm1 709.78271289348402 -> inf overflow
+expm10304 expm1 1000 -> inf overflow
+expm10305 expm1 1e50 -> inf overflow
+expm10306 expm1 1.79e308 -> inf overflow

Modified: python/trunk/Lib/test/test_math.py
==============================================================================
--- python/trunk/Lib/test/test_math.py	(original)
+++ python/trunk/Lib/test/test_math.py	Wed Dec 16 21:13:40 2009
@@ -987,17 +987,16 @@
                 if math.isnan(expected) and math.isnan(got):
                     continue
                 if not math.isnan(expected) and not math.isnan(got):
-                    # we use different closeness criteria for
-                    # different functions.
-                    if fn == 'gamma':
-                        accuracy_failure = ulps_check(expected, got, 20)
-                    elif fn == 'lgamma':
+                    if fn == 'lgamma':
+                        # we use a weaker accuracy test for lgamma;
+                        # lgamma only achieves an absolute error of
+                        # a few multiples of the machine accuracy, in
+                        # general.
                         accuracy_failure = acc_check(expected, got,
                                                   rel_err = 5e-15,
                                                   abs_err = 5e-15)
                     else:
-                        raise ValueError("don't know how to check accuracy "
-                                         "for this function")
+                        accuracy_failure = ulps_check(expected, got, 20)
                     if accuracy_failure is None:
                         continue
 

Modified: python/trunk/Misc/NEWS
==============================================================================
--- python/trunk/Misc/NEWS	(original)
+++ python/trunk/Misc/NEWS	Wed Dec 16 21:13:40 2009
@@ -1683,7 +1683,7 @@
 
 - Issue #7078: Set struct.__doc__ from _struct.__doc__.
 
-- Issue #3366: Add gamma, lgamma functions to math module.
+- Issue #3366: Add expm1, gamma, lgamma functions to math module.
 
 - Issue #6823: Allow time.strftime() to accept a tuple with a isdst field
   outside of the range of [-1, 1] by normalizing the value to within that

Modified: python/trunk/Modules/Setup.dist
==============================================================================
--- python/trunk/Modules/Setup.dist	(original)
+++ python/trunk/Modules/Setup.dist	Wed Dec 16 21:13:40 2009
@@ -169,7 +169,7 @@
 
 #array arraymodule.c	# array objects
 #cmath cmathmodule.c # -lm # complex math library functions
-#math mathmodule.c # -lm # math library functions, e.g. sin()
+#math mathmodule.c _math.c # -lm # math library functions, e.g. sin()
 #_struct _struct.c	# binary structure packing/unpacking
 #time timemodule.c # -lm # time operations and variables
 #operator operator.c	# operator.add() and similar goodies

Added: python/trunk/Modules/_math.c
==============================================================================
--- (empty file)
+++ python/trunk/Modules/_math.c	Wed Dec 16 21:13:40 2009
@@ -0,0 +1,31 @@
+/* Definitions of some C99 math library functions, for those platforms
+   that don't implement these functions already. */
+
+#include <float.h>
+#include <math.h>
+
+/* Mathematically, expm1(x) = exp(x) - 1.  The expm1 function is designed
+   to avoid the significant loss of precision that arises from direct
+   evaluation of the expression exp(x) - 1, for x near 0. */
+
+double
+_Py_expm1(double x)
+{
+    /* For abs(x) >= log(2), it's safe to evaluate exp(x) - 1 directly; this
+       also works fine for infinities and nans.
+
+       For smaller x, we can use a method due to Kahan that achieves close to
+       full accuracy.
+    */
+
+    if (fabs(x) < 0.7) {
+        double u;
+        u = exp(x);
+        if (u == 1.0)
+            return x;
+        else
+            return (u - 1.0) * x / log(u);
+    }
+    else
+        return exp(x) - 1.0;
+}

Added: python/trunk/Modules/_math.h
==============================================================================
--- (empty file)
+++ python/trunk/Modules/_math.h	Wed Dec 16 21:13:40 2009
@@ -0,0 +1,9 @@
+double _Py_expm1(double x);
+
+#ifdef HAVE_EXPM1
+#define m_expm1 expm1
+#else
+/* if the system doesn't have expm1, use the substitute
+   function defined in Modules/_math.c. */
+#define m_expm1 _Py_expm1
+#endif

Modified: python/trunk/Modules/mathmodule.c
==============================================================================
--- python/trunk/Modules/mathmodule.c	(original)
+++ python/trunk/Modules/mathmodule.c	Wed Dec 16 21:13:40 2009
@@ -53,6 +53,7 @@
  */
 
 #include "Python.h"
+#include "_math.h"
 #include "longintrepr.h" /* just for SHIFT */
 
 #ifdef _OSF_SOURCE
@@ -686,6 +687,10 @@
       "cosh(x)\n\nReturn the hyperbolic cosine of x.")
 FUNC1(exp, exp, 1,
       "exp(x)\n\nReturn e raised to the power of x.")
+FUNC1(expm1, m_expm1, 1,
+      "expm1(x)\n\nReturn exp(x)-1.\n"
+      "This function avoids the loss of precision involved in the direct "
+      "evaluation of exp(x)-1 for small x.")
 FUNC1(fabs, fabs, 0,
       "fabs(x)\n\nReturn the absolute value of the float x.")
 FUNC1(floor, floor, 0,
@@ -1420,6 +1425,7 @@
 	{"cosh",	math_cosh,	METH_O,		math_cosh_doc},
 	{"degrees",	math_degrees,	METH_O,		math_degrees_doc},
 	{"exp",		math_exp,	METH_O,		math_exp_doc},
+	{"expm1",	math_expm1,	METH_O,		math_expm1_doc},
 	{"fabs",	math_fabs,	METH_O,		math_fabs_doc},
 	{"factorial",	math_factorial,	METH_O,		math_factorial_doc},
 	{"floor",	math_floor,	METH_O,		math_floor_doc},

Modified: python/trunk/PC/VC6/pythoncore.dsp
==============================================================================
--- python/trunk/PC/VC6/pythoncore.dsp	(original)
+++ python/trunk/PC/VC6/pythoncore.dsp	Wed Dec 16 21:13:40 2009
@@ -161,6 +161,10 @@
 # End Source File
 # Begin Source File
 
+SOURCE=..\..\Modules\_math.c
+# End Source File
+# Begin Source File
+
 SOURCE=..\..\Modules\_randommodule.c
 # End Source File
 # Begin Source File

Modified: python/trunk/PC/VS7.1/pythoncore.vcproj
==============================================================================
--- python/trunk/PC/VS7.1/pythoncore.vcproj	(original)
+++ python/trunk/PC/VS7.1/pythoncore.vcproj	Wed Dec 16 21:13:40 2009
@@ -389,6 +389,9 @@
 			RelativePath="..\..\Modules\_lsprof.c">
 		</File>
 		<File
+			RelativePath="..\..\Modules\_math.c">
+		</File>
+		<File
 			RelativePath="..\..\Modules\_randommodule.c">
 		</File>
 		<File

Modified: python/trunk/PC/VS8.0/pythoncore.vcproj
==============================================================================
--- python/trunk/PC/VS8.0/pythoncore.vcproj	(original)
+++ python/trunk/PC/VS8.0/pythoncore.vcproj	Wed Dec 16 21:13:40 2009
@@ -1027,6 +1027,14 @@
 				>
 			</File>
 			<File
+				RelativePath="..\..\Modules\_math.c"
+				>
+			</File>
+			<File
+				RelativePath="..\..\Modules\_math.h"
+				>
+			</File>
+			<File
 				RelativePath="..\..\Modules\_randommodule.c"
 				>
 			</File>

Modified: python/trunk/PCbuild/pythoncore.vcproj
==============================================================================
--- python/trunk/PCbuild/pythoncore.vcproj	(original)
+++ python/trunk/PCbuild/pythoncore.vcproj	Wed Dec 16 21:13:40 2009
@@ -1027,6 +1027,14 @@
 				>
 			</File>
 			<File
+				RelativePath="..\Modules\_math.c"
+				>
+			</File>
+			<File
+				RelativePath="..\Modules\_math.h"
+				>
+			</File>
+			<File
 				RelativePath="..\Modules\_randommodule.c"
 				>
 			</File>

Modified: python/trunk/setup.py
==============================================================================
--- python/trunk/setup.py	(original)
+++ python/trunk/setup.py	Wed Dec 16 21:13:40 2009
@@ -414,7 +414,7 @@
                                libraries=math_libs) )
 
         # math library functions, e.g. sin()
-        exts.append( Extension('math',  ['mathmodule.c'],
+        exts.append( Extension('math',  ['mathmodule.c', '_math.c'],
                                libraries=math_libs) )
         # fast string operations implemented in C
         exts.append( Extension('strop', ['stropmodule.c']) )
_______________________________________________
Python-checkins mailing list
Python-checkins@python.org
http://mail.python.org/mailman/listinfo/python-checkins

From SRS0=gXzr=IA=python.org=python-checkins-bounces+skip=pobox.com@bounce2.pobox.com  Mon Dec 14 16:00:07 2009
X-VM-v5-Data: ([nil nil nil nil nil nil nil nil nil]
	["2173" "Monday" "14" "December" "2009" "16:58:55" "-0500" "r.david.murray" "python-checkins@python.org" nil "69" "[Python-checkins] r76840 - in python/trunk: Lib/test/test_multiprocessing.py Misc/NEWS" "^From:" nil nil "12" nil nil nil nil nil nil nil nil nil nil]
	nil)
Delivered-To: skip.montanaro@gmail.com
Received: from pop.gmail.com
 by montanaro.dyndns.org with POP3 (fetchmail-6.3.11)
 for <skip@localhost> (single-drop); Mon, 14 Dec 2009 16:00:07 -0600 (CST)
Received: by 10.213.7.80 with SMTP id c16cs133088ebc;
 Mon, 14 Dec 2009 13:59:02 -0800 (PST)
Received: by 10.224.66.71 with SMTP id m7mr3349642qai.173.1260827941218;
 Mon, 14 Dec 2009 13:59:01 -0800 (PST)
Return-Path: <SRS0=gXzr=IA=python.org=python-checkins-bounces+skip=pobox.com@bounce2.pobox.com>
Received: from sienna.pobox.com (sienna.pobox.com [64.74.157.51])
 by mx.google.com with ESMTP id 10si9084671qyk.7.2009.12.14.13.58.59;
 Mon, 14 Dec 2009 13:58:59 -0800 (PST)
Received-SPF: pass (google.com: domain of
 SRS0=gXzr=IA=python.org=python-checkins-bounces+skip=pobox.com@bounce2.pobox.com
 designates 64.74.157.51 as permitted sender) client-ip=64.74.157.51; 
Authentication-Results: mx.google.com; spf=pass (google.com: domain of
 SRS0=gXzr=IA=python.org=python-checkins-bounces+skip=pobox.com@bounce2.pobox.com
 designates 64.74.157.51 as permitted sender)
 smtp.mail=SRS0=gXzr=IA=python.org=python-checkins-bounces+skip=pobox.com@bounce2.pobox.com
Received: from sienna.pobox.com (localhost [127.0.0.1])
 by sienna.pobox.com (Postfix) with ESMTP id CF986208A55
 for <skip.montanaro@gmail.com>; Mon, 14 Dec 2009 16:58:58 -0500 (EST)
Delivered-To: skip@pobox.com
X-Pobox-Orig-Sender: <python-checkins-bounces+skip=pobox.com@python.org>
X-Pobox-Delivery-ID: E147CB00-E8FB-11DE-B068-A0A5AA556207-00107187!sienna.pobox.com
X-Original-To: python-checkins@python.org
x-pobox-client-address: 82.94.164.166
x-pobox-client-name: mail.python.org
Received: from mail.python.org (mail.python.org [82.94.164.166]) by
 sienna.pobox.com (Postfix) with ESMTP id B32C7208ABE for <skip@pobox.com>;
 Mon, 14 Dec 2009 16:58:55 -0500 (EST)
Received: from albatross.python.org (localhost.localdomain [127.0.0.1]) by
 mail.python.org (Postfix) with ESMTP id 34465EF99 for <skip@pobox.com>; Mon,
 14 Dec 2009 22:58:42 +0100 (CET)
Authentication-Results: mail.python.org; dkim=permerror (bad format)
 header.i=unknown
Delivered-To: python-checkins@mail.python.org
Received: from albatross.python.org (localhost.localdomain [127.0.0.1]) by
 mail.python.org (Postfix) with ESMTP id 7D411EE98 for
 <python-checkins@python.org>; Mon, 14 Dec 2009 22:57:39 +0100 (CET)
Authentication-Results: mail.python.org; dkim=permerror (bad format)
 header.i=unknown
X-Spam-Status: OK 0.000
X-Spam-Evidence: '*H*': 1.00; '*S*': 0.00; 'def': 0.02; 'python': 0.05;
 'modified:': 0.07; 'queue': 0.07; '(original)': 0.09; 'author:': 0.09;
 'log:': 0.09; 'mon': 0.09; 'received:82.94.164.162': 0.09;
 'received:dinsdale.python.org': 0.09; 'revision:': 0.09; 'subject:test':
 0.09; 'subject:trunk': 0.09; 'subject:python': 0.10; 'received:82.94': 0.10;
 'received:82.94.164': 0.10; 'from:addr:python.org': 0.11;
 'received:python.org': 0.15; '-------': 0.16; 'subject:Lib': 0.16;
 'to:addr:python-checkins': 0.16; 'uses': 0.23; 'library': 0.24; 'issue':
 0.32; 'subject:: ': 0.34; 'received:org': 0.35; '+++': 0.36; 'date:': 0.36;
 'received:82': 0.36; "what's": 0.37; 'port': 0.38; 'skip:s 20': 0.39; 'use':
 0.40; 'del': 0.63; 'skip:t 30': 0.71; '2.7': 0.84; 'message-id:invalid':
 0.88; 'subject:NEWS': 0.91
Received: from localhost.localdomain (HELO mail.python.org) (127.0.0.1) by
 albatross.python.org with SMTP; 14 Dec 2009 22:57:39 +0100
Received: from dinsdale.python.org (dinsdale.python.org [82.94.164.162]) by
 mail.python.org (Postfix) with ESMTP for <python-checkins@python.org>; Mon,
 14 Dec 2009 22:57:39 +0100 (CET)
MIME-Version: 1.0
X-BeenThere: python-checkins@python.org
X-Mailman-Version: 2.1.12
Precedence: list
List-Id: Check-in messages from the Python maintainers
 <python-checkins.python.org>
List-Unsubscribe: <http://mail.python.org/mailman/options/python-checkins>,
 <mailto:python-checkins-request@python.org?subject=unsubscribe>
List-Archive: <http://mail.python.org/pipermail/python-checkins>
List-Post: <mailto:python-checkins@python.org>
List-Help: <mailto:python-checkins-request@python.org?subject=help>
List-Subscribe: <http://mail.python.org/mailman/listinfo/python-checkins>,
 <mailto:python-checkins-request@python.org?subject=subscribe>
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: 7bit
Errors-To: python-checkins-bounces+skip=pobox.com@python.org
Message-Id: <20091214215855.B32C7208ABE@sienna.pobox.com>
X-Spambayes-Evidence: '*H*': 1.00; '*S*': 0.00; 'python': 0.04;
 'skip:_ 40': 0.04; '+++': 0.09; 'author:': 0.09; 'def': 0.09;
 'from:addr:python.org': 0.09; 'log:': 0.09; 'modified:': 0.09;
 'revision:': 0.09; 'skip:s 30': 0.09; 'subject:checkins': 0.09;
 '(original)': 0.16; '-------': 0.16; 'dec': 0.16;
 'email name:python-checkins': 0.16; 'instead': 0.16; 'library': 0.16;
 'received:82.94.164.162': 0.16; 'received:dinsdale.python.org': 0.16;
 'segmentation': 0.16;
 'sender:addr:python-checkins-bounces+skip=pobox.com': 0.16; 'skip:= 70': 0.16;
 'skip:d 30': 0.16; 'subject:test': 0.16; 'subject:trunk': 0.16;
 'to:addr:python-checkins': 0.16; 'url:python-checkins': 0.16;
 'email addr:python.org': 0.17; 'uses': 0.20; '---': 0.24; 'date:': 0.24;
 'issue': 0.24; 'skip:t 30': 0.24; 'subject:Python': 0.24; "what's": 0.24;
 'header:Received:10': 0.28; 'list': 0.28; 'mailing': 0.30; 'skip:a 20': 0.31;
 'hard': 0.32; 'subject:] ': 0.32; 'url:org': 0.32; 'skip:s 20': 0.36;
 'skip:q 10': 0.37; 'subject:[': 0.37; 'use': 0.39; 'when': 0.39;
 'subject: - ': 0.39; 'url:python': 0.39; 'subject:/': 0.61;
 'received:sienna.pobox.com': 0.62; 'skip:o 10': 0.64;
 'sender:addr:python.org': 0.68; 'coded': 0.84;
 'message-id:@sienna.pobox.com': 0.84; 'subject::\n ': 0.84;
 'subject:skip:t 20': 0.84; 'port': 0.91
From: r.david.murray <python-checkins@python.org>
Sender: python-checkins-bounces+skip=pobox.com@python.org
To: python-checkins@python.org
Subject: [Python-checkins] r76840 - in python/trunk:
 Lib/test/test_multiprocessing.py Misc/NEWS
Date: Mon, 14 Dec 2009 16:58:55 -0500 (EST)
X-Spambayes-Classification: ham; 0.00

Author: r.david.murray
Date: Mon Dec 14 22:57:39 2009
New Revision: 76840

Log:
Issue #7498: make test_multiprocessing use test_support.find_unused_port
instead of a hard coded port number in test_rapid_restart.


Modified:
   python/trunk/Lib/test/test_multiprocessing.py
   python/trunk/Misc/NEWS

Modified: python/trunk/Lib/test/test_multiprocessing.py
==============================================================================
--- python/trunk/Lib/test/test_multiprocessing.py	(original)
+++ python/trunk/Lib/test/test_multiprocessing.py	Mon Dec 14 22:57:39 2009
@@ -1212,8 +1212,9 @@
 
     def test_rapid_restart(self):
         authkey = os.urandom(32)
+        port = test_support.find_unused_port()
         manager = QueueManager(
-            address=('localhost', 9999), authkey=authkey, serializer=SERIALIZER)
+            address=('localhost', port), authkey=authkey, serializer=SERIALIZER)
         manager.start()
 
         p = self.Process(target=self._putter, args=(manager.address, authkey))
@@ -1223,7 +1224,7 @@
         del queue
         manager.shutdown()
         manager = QueueManager(
-            address=('localhost', 9999), authkey=authkey, serializer=SERIALIZER)
+            address=('localhost', port), authkey=authkey, serializer=SERIALIZER)
         manager.start()
         manager.shutdown()
 

Modified: python/trunk/Misc/NEWS
==============================================================================
--- python/trunk/Misc/NEWS	(original)
+++ python/trunk/Misc/NEWS	Mon Dec 14 22:57:39 2009
@@ -20,6 +20,7 @@
 - Issue #7466: segmentation fault when the garbage collector is called
   in the middle of populating a tuple.  Patch by Florent Xicluna.
 
+
 Library
 -------
 
@@ -42,6 +43,14 @@
   distutils.dist.DistributionMetadata.
 
 
+Tests
+-----
+
+- Issue #7498: test_multiprocessing now uses test_support.find_unused_port
+  instead of a hardcoded port number in test_rapid_restart.
+
+
+
 What's New in Python 2.7 alpha 1
 ================================
 
_______________________________________________
Python-checkins mailing list
Python-checkins@python.org
http://mail.python.org/mailman/listinfo/python-checkins

From SRS0=GK0S=H7=python.org=python-checkins-bounces+skip=pobox.com@bounce2.pobox.com  Sun Dec 13 17:25:31 2009
X-VM-v5-Data: ([nil nil nil nil nil nil nil nil nil]
	["11973" "Sunday" "13" "December" "2009" "18:24:25" "-0500" "tarek.ziade" "python-checkins@python.org" nil "236" "[Python-checkins] r76826 - in python/trunk/Doc/distutils: commandref.rst sourcedist.rst" "^From:" nil nil "12" nil nil nil nil nil nil nil nil nil nil]
	nil)
Delivered-To: skip.montanaro@gmail.com
Received: from pop.gmail.com
 by montanaro.dyndns.org with POP3 (fetchmail-6.3.11)
 for <skip@localhost> (single-drop); Sun, 13 Dec 2009 17:25:31 -0600 (CST)
Received: by 10.216.0.80 with SMTP id 58cs96668wea;
 Sun, 13 Dec 2009 15:24:27 -0800 (PST)
Received: by 10.224.110.135 with SMTP id n7mr2467302qap.185.1260746666868;
 Sun, 13 Dec 2009 15:24:26 -0800 (PST)
Return-Path: <SRS0=GK0S=H7=python.org=python-checkins-bounces+skip=pobox.com@bounce2.pobox.com>
Received: from azure.pobox.com (azure.pobox.com [208.72.237.55])
 by mx.google.com with ESMTP id 37si8350040qyk.20.2009.12.13.15.24.26;
 Sun, 13 Dec 2009 15:24:26 -0800 (PST)
Received-SPF: pass (google.com: domain of
 SRS0=GK0S=H7=python.org=python-checkins-bounces+skip=pobox.com@bounce2.pobox.com
 designates 208.72.237.55 as permitted sender) client-ip=208.72.237.55; 
Authentication-Results: mx.google.com; spf=pass (google.com: domain of
 SRS0=GK0S=H7=python.org=python-checkins-bounces+skip=pobox.com@bounce2.pobox.com
 designates 208.72.237.55 as permitted sender)
 smtp.mail=SRS0=GK0S=H7=python.org=python-checkins-bounces+skip=pobox.com@bounce2.pobox.com
Received: from azure.pobox.com (localhost [127.0.0.1])
 by azure.pobox.com (Postfix) with ESMTP id F41DD40CC00
 for <skip.montanaro@gmail.com>; Sun, 13 Dec 2009 18:24:25 -0500 (EST)
Delivered-To: skip@pobox.com
X-Pobox-Orig-Sender: <python-checkins-bounces+skip=pobox.com@python.org>
X-Pobox-Delivery-ID: A71FD124-E83E-11DE-A31B-AFAB66006108-00107187!azure.pobox.com
X-Original-To: python-checkins@python.org
x-pobox-client-address: 82.94.164.166
x-pobox-client-name: mail.python.org
Received: from mail.python.org (mail.python.org [82.94.164.166]) by
 azure.pobox.com (Postfix) with ESMTP id 3B79040C6EE for <skip@pobox.com>;
 Sun, 13 Dec 2009 18:24:25 -0500 (EST)
Received: from albatross.python.org (localhost.localdomain [127.0.0.1]) by
 mail.python.org (Postfix) with ESMTP id 9D6BDF13D for <skip@pobox.com>; Mon,
 14 Dec 2009 00:24:23 +0100 (CET)
Authentication-Results: mail.python.org; dkim=permerror (bad format)
 header.i=unknown
Delivered-To: python-checkins@mail.python.org
Received: from albatross.python.org (localhost.localdomain [127.0.0.1]) by
 mail.python.org (Postfix) with ESMTP id B43FEF0EA for
 <python-checkins@python.org>; Mon, 14 Dec 2009 00:24:13 +0100 (CET)
Authentication-Results: mail.python.org; dkim=permerror (bad format)
 header.i=unknown
X-Spam-Status: OK 0.000
X-Spam-Evidence: '*H*': 1.00; '*S*': 0.00; 'package.': 0.04; 'syntax': 0.04;
 'python': 0.05; 'file,': 0.05; 'adds': 0.07; 'explicit': 0.07; 'line,': 0.07; 
 'modified:': 0.07; 'command': 0.09; '(original)': 0.09; 'author:': 0.09;
 'definition': 0.09; 'described': 0.09; 'log:': 0.09; 'mon': 0.09;
 'platform.': 0.09; 'received:82.94.164.162': 0.09;
 'received:dinsdale.python.org': 0.09; 'revision:': 0.09; 'run,': 0.09;
 'subject:trunk': 0.09; 'unix': 0.09; 'subject:python': 0.10;
 'received:82.94': 0.10; 'received:82.94.164': 0.10; 'from:addr:python.org':
 0.11; 'received:python.org': 0.15; '(e.g.,': 0.16; '(or,': 0.16; '-the':
 0.16; '-you': 0.16; 'filename': 0.16; 'implies': 0.16; 'interpret': 0.16;
 'manifest': 0.16; 'recreate': 0.16; 'reference.': 0.16; 'skip:- 90': 0.16;
 'skip:: 30': 0.16; 'skip:` 10': 0.16; 'specifies': 0.16; 'template.': 0.16;
 'to:addr:python- checkins': 0.16; 'script': 0.18; 'define': 0.20; 'systems.':
 0.20; 'example,': 0.22; 'section': 0.23; 'bit': 0.24; 'anything': 0.26;
 'list': 0.28; 'options': 0.29; 'source': 0.30; "doesn't": 0.31; 'default':
 0.31; 'easier': 0.31; "let's": 0.31; 'description': 0.31; 'project': 0.31;
 'examples': 0.32; 'does': 0.33; 'either': 0.34; 'subject:: ': 0.34; 'there':
 0.35; 'file': 0.35; 'but': 0.35; 'received:org': 0.35; 'down': 0.35;
 'except': 0.35; 'standard': 0.35; 'couple': 0.35; '+++': 0.36; 'follows:':
 0.36; 'moved': 0.36; 'files': 0.36; 'date:': 0.36; 'received:82': 0.36;
 'system': 0.36; 'might': 0.37; 'enough.': 0.37; 'exist,': 0.37; 'specify':
 0.37; 'listed': 0.37; 'skip:- 60': 0.37; 'again': 0.39; 'characters': 0.40;
 'modify': 0.40; 'use': 0.40; 'your': 0.61; 'look': 0.62; 'order': 0.62;
 'first,': 0.63; 'match': 0.63; 'subject:skip:c 10': 0.63; 'template': 0.63;
 'regular': 0.64; 'turn': 0.64; 'per': 0.65; 'included': 0.65; 'case.': 0.66;
 'skip:: 10': 0.66; 'follow': 0.68; 'generated': 0.70; 'skip:+ 10': 0.72;
 'sequence': 0.74; 'subject:skip:s 10': 0.74; 'tree': 0.74; 'matches': 0.78;
 'above:': 0.84; 'characters,': 0.84; 'skip:\\ 10': 0.84; 'skip:\\ 20': 0.84;
 'message-id:invalid': 0.88; 'exclude': 0.91
Received: from localhost.localdomain (HELO mail.python.org) (127.0.0.1) by
 albatross.python.org with SMTP; 14 Dec 2009 00:24:13 +0100
Received: from dinsdale.python.org (dinsdale.python.org [82.94.164.162]) by
 mail.python.org (Postfix) with ESMTP for <python-checkins@python.org>; Mon,
 14 Dec 2009 00:24:13 +0100 (CET)
MIME-Version: 1.0
X-BeenThere: python-checkins@python.org
X-Mailman-Version: 2.1.12
Precedence: list
List-Id: Check-in messages from the Python maintainers
 <python-checkins.python.org>
List-Unsubscribe: <http://mail.python.org/mailman/options/python-checkins>,
 <mailto:python-checkins-request@python.org?subject=unsubscribe>
List-Archive: <http://mail.python.org/pipermail/python-checkins>
List-Post: <mailto:python-checkins@python.org>
List-Help: <mailto:python-checkins-request@python.org?subject=help>
List-Subscribe: <http://mail.python.org/mailman/listinfo/python-checkins>,
 <mailto:python-checkins-request@python.org?subject=subscribe>
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: 7bit
Errors-To: python-checkins-bounces+skip=pobox.com@python.org
Message-Id: <20091213232425.3B79040C6EE@azure.pobox.com>
X-Spambayes-Evidence: '*H*': 1.00; '*S*': 0.00; 'listed': 0.04; 'python': 0.04;
 'skip:_ 40': 0.04; 'command': 0.05; 'skip:- 10': 0.05; 'added': 0.07;
 'built': 0.07; 'default': 0.07; 'define': 0.07; 'reading': 0.07;
 'skip:_ 10': 0.07; 'source': 0.07; '+++': 0.09; 'author:': 0.09; 'bit': 0.09;
 'contains': 0.09; 'force': 0.09; 'from:addr:python.org': 0.09; 'log:': 0.09;
 'modified:': 0.09; 'regular': 0.09; 'revision:': 0.09; 'skip:+ 10': 0.09;
 'subject:checkins': 0.09; 'syntax': 0.09; 'unix': 0.09; 'available': 0.11;
 'look': 0.13; 'support': 0.13; '(original)': 0.16; '+..': 0.16; '+and': 0.16;
 '+the': 0.16; '+this': 0.16; '+you': 0.16; '-..': 0.16; '-the': 0.16;
 '-you': 0.16; 'across': 0.16; 'command.': 0.16; 'dec': 0.16; 'described': 0.16;
 'disable': 0.16; 'email name:python-checkins': 0.16; 'examples': 0.16;
 'except': 0.16; 'explicit': 0.16; 'file,': 0.16; 'filename': 0.16;
 'generate': 0.16; 'line,': 0.16; 'match': 0.16; 'matching': 0.16;
 'needs': 0.16; 'normal': 0.16; 'package.': 0.16; 'patterns': 0.16;
 'platform.': 0.16; 'received:82.94.164.162': 0.16;
 'received:dinsdale.python.org': 0.16;
 'sender:addr:python-checkins-bounces+skip=pobox.com': 0.16; 'sequence': 0.16;
 'skip:- 90': 0.16; 'skip:= 70': 0.16; 'subject:trunk': 0.16; 'template': 0.16;
 'template,': 0.16; 'template.': 0.16; 'to:addr:python-checkins': 0.16;
 'url:python-checkins': 0.16; 'email addr:python.org': 0.17; 'set': 0.20;
 'skip:- 20': 0.20; '---': 0.24; 'apply': 0.24; 'date:': 0.24; "doesn't": 0.24;
 'included': 0.24; 'subject:Python': 0.24; 'tree': 0.24; 'where': 0.28;
 'header:Received:10': 0.28; 'list': 0.28; 'does': 0.30; 'mailing': 0.30;
 'skip:( 10': 0.30; 'include': 0.31; 'couple': 0.32; 'generated': 0.32;
 'option': 0.32; 'skip:+ 20': 0.32; 'standard': 0.32; 'windows': 0.32;
 'order': 0.32; 'subject:] ': 0.32; 'url:org': 0.32; 'them': 0.33;
 'there': 0.35; 'done': 0.37; 'down': 0.37; 'existing': 0.37; 'now.': 0.37;
 'project': 0.37; 'section': 0.37; 'used': 0.37; 'subject:[': 0.37; 'but': 0.37;
 'use': 0.39; 'when': 0.39; 'either': 0.39; 'skip:- 60': 0.39;
 'subject: - ': 0.39; 'url:python': 0.39; 'easier': 0.61;
 'message-id:@azure.pobox.com': 0.61; 'operating': 0.61; 'subject:/': 0.61;
 'per': 0.62; 'other': 0.64; 'own': 0.65; 'sender:addr:python.org': 0.68;
 'each': 0.68; 'distribution': 0.69; 'above': 0.78; 'above,': 0.84;
 'are:': 0.84; 'course': 0.84; 'enough.': 0.84; 'fragment': 0.84;
 'modify': 0.84; 'script': 0.84; 'subject::\n ': 0.84;
 'subject:skip:c 10': 0.84; 'turn': 0.84; 'yet': 0.84; 'first,': 0.91
From: tarek.ziade <python-checkins@python.org>
Sender: python-checkins-bounces+skip=pobox.com@python.org
To: python-checkins@python.org
Subject: [Python-checkins] r76826 - in python/trunk/Doc/distutils:
 commandref.rst sourcedist.rst
Date: Sun, 13 Dec 2009 18:24:25 -0500 (EST)
X-Spambayes-Classification: ham; 0.00

Author: tarek.ziade
Date: Mon Dec 14 00:24:13 2009
New Revision: 76826

Log:
reorganized the distutils doc a bit : the MANIFEST.in template system has its own section now. This is easier to find and follow

Modified:
   python/trunk/Doc/distutils/commandref.rst
   python/trunk/Doc/distutils/sourcedist.rst

Modified: python/trunk/Doc/distutils/commandref.rst
==============================================================================
--- python/trunk/Doc/distutils/commandref.rst	(original)
+++ python/trunk/Doc/distutils/commandref.rst	Mon Dec 14 00:24:13 2009
@@ -48,50 +48,6 @@
 .. % \label{clean-cmd}
 
 
-.. _sdist-cmd:
-
-Creating a source distribution: the :command:`sdist` command
-============================================================
-
-**\*\*** fragment moved down from above: needs context! **\*\***
-
-The manifest template commands are:
-
-+-------------------------------------------+-----------------------------------------------+
-| Command                                   | Description                                   |
-+===========================================+===============================================+
-| :command:`include pat1 pat2 ...`          | include all files matching any of the listed  |
-|                                           | patterns                                      |
-+-------------------------------------------+-----------------------------------------------+
-| :command:`exclude pat1 pat2 ...`          | exclude all files matching any of the listed  |
-|                                           | patterns                                      |
-+-------------------------------------------+-----------------------------------------------+
-| :command:`recursive-include dir pat1 pat2 | include all files under *dir* matching any of |
-| ...`                                      | the listed patterns                           |
-+-------------------------------------------+-----------------------------------------------+
-| :command:`recursive-exclude dir pat1 pat2 | exclude all files under *dir* matching any of |
-| ...`                                      | the listed patterns                           |
-+-------------------------------------------+-----------------------------------------------+
-| :command:`global-include pat1 pat2 ...`   | include all files anywhere in the source tree |
-|                                           | matching --- & any of the listed patterns     |
-+-------------------------------------------+-----------------------------------------------+
-| :command:`global-exclude pat1 pat2 ...`   | exclude all files anywhere in the source tree |
-|                                           | matching --- & any of the listed patterns     |
-+-------------------------------------------+-----------------------------------------------+
-| :command:`prune dir`                      | exclude all files under *dir*                 |
-+-------------------------------------------+-----------------------------------------------+
-| :command:`graft dir`                      | include all files under *dir*                 |
-+-------------------------------------------+-----------------------------------------------+
-
-The patterns here are Unix-style "glob" patterns: ``*`` matches any sequence of
-regular filename characters, ``?`` matches any single regular filename
-character, and ``[range]`` matches any of the characters in *range* (e.g.,
-``a-z``, ``a-zA-Z``, ``a-f0-9_.``).  The definition of "regular filename
-character" is platform-specific: on Unix it is anything except slash; on Windows
-anything except backslash or colon.
-
-**\*\*** Windows support not there yet **\*\***
-
 .. % \section{Creating a built distribution: the
 .. % \protect\command{bdist} command family}
 .. % \label{bdist-cmds}

Modified: python/trunk/Doc/distutils/sourcedist.rst
==============================================================================
--- python/trunk/Doc/distutils/sourcedist.rst	(original)
+++ python/trunk/Doc/distutils/sourcedist.rst	Mon Dec 14 00:24:13 2009
@@ -111,9 +111,68 @@
 :file:`MANIFEST`, you must specify everything: the default set of files
 described above does not apply in this case.
 
+See :ref:`manifest_template` section for a syntax reference.
+
+.. _manifest-options:
+
+Manifest-related options
+========================
+
+The normal course of operations for the :command:`sdist` command is as follows:
+
+* if the manifest file, :file:`MANIFEST` doesn't exist, read :file:`MANIFEST.in`
+  and create the manifest
+
+* if neither :file:`MANIFEST` nor :file:`MANIFEST.in` exist, create a manifest
+  with just the default file set
+
+* if either :file:`MANIFEST.in` or the setup script (:file:`setup.py`) are more
+  recent than :file:`MANIFEST`, recreate :file:`MANIFEST` by reading
+  :file:`MANIFEST.in`
+
+* use the list of files now in :file:`MANIFEST` (either just generated or read
+  in) to create the source distribution archive(s)
+
+There are a couple of options that modify this behaviour.  First, use the
+:option:`--no-defaults` and :option:`--no-prune` to disable the standard
+"include" and "exclude" sets.
+
+Second, you might want to force the manifest to be regenerated---for example, if
+you have added or removed files or directories that match an existing pattern in
+the manifest template, you should regenerate the manifest::
+
+   python setup.py sdist --force-manifest
+
+Or, you might just want to (re)generate the manifest, but not create a source
+distribution::
+
+   python setup.py sdist --manifest-only
+
+:option:`--manifest-only` implies :option:`--force-manifest`. :option:`-o` is a
+shortcut for :option:`--manifest-only`, and :option:`-f` for
+:option:`--force-manifest`.
+
+.. _manifest_template:
+
+The MANIFEST.in template
+========================
+
+A :file:`MANIFEST.in` file can be added in a project to define the list of
+files to include in the distribution built by the :command:`sdist` command.
+
+When :command:`sdist` is run, it will look for the :file:`MANIFEST.in` file
+and interpret it to generate the :file:`MANIFEST` file that contains the
+list of files that will be included in the package.
+
+This mechanism can be used when the default list of files is not enough.
+(See :ref:`manifest`).
+
+Principle
+---------
+
 The manifest template has one command per line, where each command specifies a
 set of files to include or exclude from the source distribution.  For an
-example, again we turn to the Distutils' own manifest template::
+example, let's look at the Distutils' own manifest template::
 
    include *.txt
    recursive-include examples *.txt *.py
@@ -125,9 +184,7 @@
 :file:`examples/sample?/build`.  All of this is done *after* the standard
 include set, so you can exclude files from the standard set with explicit
 instructions in the manifest template.  (Or, you can use the
-:option:`--no-defaults` option to disable the standard set entirely.)  There are
-several other commands available in the manifest template mini-language; see
-section :ref:`sdist-cmd`.
+:option:`--no-defaults` option to disable the standard set entirely.)
 
 The order of commands in the manifest template matters: initially, we have the
 list of default files as described above, and each command in the template adds
@@ -181,44 +238,41 @@
 them to the standard representation on your platform. That way, the manifest
 template is portable across operating systems.
 
+Commands
+--------
 
-.. _manifest-options:
-
-Manifest-related options
-========================
-
-The normal course of operations for the :command:`sdist` command is as follows:
-
-* if the manifest file, :file:`MANIFEST` doesn't exist, read :file:`MANIFEST.in`
-  and create the manifest
-
-* if neither :file:`MANIFEST` nor :file:`MANIFEST.in` exist, create a manifest
-  with just the default file set
-
-* if either :file:`MANIFEST.in` or the setup script (:file:`setup.py`) are more
-  recent than :file:`MANIFEST`, recreate :file:`MANIFEST` by reading
-  :file:`MANIFEST.in`
-
-* use the list of files now in :file:`MANIFEST` (either just generated or read
-  in) to create the source distribution archive(s)
-
-There are a couple of options that modify this behaviour.  First, use the
-:option:`--no-defaults` and :option:`--no-prune` to disable the standard
-"include" and "exclude" sets.
-
-Second, you might want to force the manifest to be regenerated---for example, if
-you have added or removed files or directories that match an existing pattern in
-the manifest template, you should regenerate the manifest::
-
-   python setup.py sdist --force-manifest
-
-Or, you might just want to (re)generate the manifest, but not create a source
-distribution::
-
-   python setup.py sdist --manifest-only
-
-:option:`--manifest-only` implies :option:`--force-manifest`. :option:`-o` is a
-shortcut for :option:`--manifest-only`, and :option:`-f` for
-:option:`--force-manifest`.
+The manifest template commands are:
 
++-------------------------------------------+-----------------------------------------------+
+| Command                                   | Description                                   |
++===========================================+===============================================+
+| :command:`include pat1 pat2 ...`          | include all files matching any of the listed  |
+|                                           | patterns                                      |
++-------------------------------------------+-----------------------------------------------+
+| :command:`exclude pat1 pat2 ...`          | exclude all files matching any of the listed  |
+|                                           | patterns                                      |
++-------------------------------------------+-----------------------------------------------+
+| :command:`recursive-include dir pat1 pat2 | include all files under *dir* matching any of |
+| ...`                                      | the listed patterns                           |
++-------------------------------------------+-----------------------------------------------+
+| :command:`recursive-exclude dir pat1 pat2 | exclude all files under *dir* matching any of |
+| ...`                                      | the listed patterns                           |
++-------------------------------------------+-----------------------------------------------+
+| :command:`global-include pat1 pat2 ...`   | include all files anywhere in the source tree |
+|                                           | matching --- & any of the listed patterns     |
++-------------------------------------------+-----------------------------------------------+
+| :command:`global-exclude pat1 pat2 ...`   | exclude all files anywhere in the source tree |
+|                                           | matching --- & any of the listed patterns     |
++-------------------------------------------+-----------------------------------------------+
+| :command:`prune dir`                      | exclude all files under *dir*                 |
++-------------------------------------------+-----------------------------------------------+
+| :command:`graft dir`                      | include all files under *dir*                 |
++-------------------------------------------+-----------------------------------------------+
+
+The patterns here are Unix-style "glob" patterns: ``*`` matches any sequence of
+regular filename characters, ``?`` matches any single regular filename
+character, and ``[range]`` matches any of the characters in *range* (e.g.,
+``a-z``, ``a-zA-Z``, ``a-f0-9_.``).  The definition of "regular filename
+character" is platform-specific: on Unix it is anything except slash; on Windows
+anything except backslash or colon.
 
_______________________________________________
Python-checkins mailing list
Python-checkins@python.org
http://mail.python.org/mailman/listinfo/python-checkins

From SRS0=GK0S=H7=python.org=python-checkins-bounces+skip=pobox.com@bounce2.pobox.com  Sun Dec 13 13:20:45 2009
X-VM-v5-Data: ([nil nil nil nil nil nil nil nil nil]
	["10844" "Sunday" "13" "December" "2009" "14:19:19" "-0500" "benjamin.peterson" "python-checkins@python.org" nil "303" "[Python-checkins] r76805 - in python/trunk: Lib/test/test_fileio.py Lib/test/test_io.py Misc/NEWS Modules/_io/_iomodule.c Modules/_io/_iomodule.h Modules/_io/bufferedio.c Modules/_io/fileio.c Modules/_io/iobase.c Modules/_io/textio.c" "^From:" nil nil "12" nil nil nil nil nil nil nil nil nil nil]
	nil)
Delivered-To: skip.montanaro@gmail.com
Received: from pop.gmail.com
 by montanaro.dyndns.org with POP3 (fetchmail-6.3.11)
 for <skip@localhost> (single-drop); Sun, 13 Dec 2009 13:20:45 -0600 (CST)
Received: by 10.216.0.80 with SMTP id 58cs84237wea;
 Sun, 13 Dec 2009 11:19:21 -0800 (PST)
Received: by 10.224.87.87 with SMTP id v23mr2360461qal.158.1260731960470;
 Sun, 13 Dec 2009 11:19:20 -0800 (PST)
Return-Path: <SRS0=GK0S=H7=python.org=python-checkins-bounces+skip=pobox.com@bounce2.pobox.com>
Received: from indigo.pobox.com (indigo.pobox.com [64.74.157.52])
 by mx.google.com with ESMTP id 7si9939633qwb.42.2009.12.13.11.19.20;
 Sun, 13 Dec 2009 11:19:20 -0800 (PST)
Received-SPF: pass (google.com: domain of
 SRS0=GK0S=H7=python.org=python-checkins-bounces+skip=pobox.com@bounce2.pobox.com
 designates 64.74.157.52 as permitted sender) client-ip=64.74.157.52; 
Authentication-Results: mx.google.com; spf=pass (google.com: domain of
 SRS0=GK0S=H7=python.org=python-checkins-bounces+skip=pobox.com@bounce2.pobox.com
 designates 64.74.157.52 as permitted sender)
 smtp.mail=SRS0=GK0S=H7=python.org=python-checkins-bounces+skip=pobox.com@bounce2.pobox.com
Received: from indigo.pobox.com (localhost [127.0.0.1])
 by indigo.pobox.com (Postfix) with ESMTP id BD5E420AE2D
 for <skip.montanaro@gmail.com>; Sun, 13 Dec 2009 14:19:19 -0500 (EST)
Delivered-To: skip@pobox.com
X-Pobox-Orig-Sender: <python-checkins-bounces+skip=pobox.com@python.org>
X-Pobox-Delivery-ID: 69A4F986-E81C-11DE-8A0A-806B0D51E4E9-00107187!indigo.pobox.com
X-Original-To: python-checkins@python.org
x-pobox-client-address: 82.94.164.166
x-pobox-client-name: mail.python.org
Received: from mail.python.org (mail.python.org [82.94.164.166]) by
 indigo.pobox.com (Postfix) with ESMTP id 560CB20AE36 for <skip@pobox.com>;
 Sun, 13 Dec 2009 14:19:19 -0500 (EST)
Received: from albatross.python.org (localhost.localdomain [127.0.0.1]) by
 mail.python.org (Postfix) with ESMTP id D7F25F1A9 for <skip@pobox.com>; Sun,
 13 Dec 2009 20:19:18 +0100 (CET)
Authentication-Results: mail.python.org; dkim=permerror (bad format)
 header.i=unknown
Delivered-To: python-checkins@mail.python.org
Received: from albatross.python.org (localhost.localdomain [127.0.0.1]) by
 mail.python.org (Postfix) with ESMTP id 2038FF0F8 for
 <python-checkins@python.org>; Sun, 13 Dec 2009 20:19:09 +0100 (CET)
Authentication-Results: mail.python.org; dkim=permerror (bad format)
 header.i=unknown
X-Spam-Status: OK 0.000
X-Spam-Evidence: '*H*': 1.00; '*S*': 0.00; 'def': 0.02; 'void': 0.05; 'adds':
 0.07; 'modified:': 0.07; 'normally': 0.07; '(original)': 0.09;
 'argument':
 0.09; 'author:': 0.09; 'definition': 0.09; 'int': 0.09; 'log:': 0.09;
 'methods,': 0.09; 'received:82.94.164.162': 0.09;
 'received:dinsdale.python.org': 0.09; 'revision:': 0.09; 'subject:test':
 0.09; 'subject:trunk': 0.09; 'subject:python': 0.10; 'received:82.94': 0.10;
 'received:82.94.164': 0.10; 'from:addr:python.org': 0.11;
 'received:python.org': 0.15; 'none': 0.15; '(result': 0.16; '-------': 0.16;
 '-1,': 0.16; '-19,6': 0.16; '-1;': 0.16; '[1,': 0.16; 'argument.': 0.16;
 'borrowed': 0.16; 'extern': 0.16; 'f.seek(0)': 0.16; 'f.tell()': 0.16;
 'hint': 0.16; 'length': 0.16; 'pyobject': 0.16; 'reference.': 0.16;
 'subject:Lib': 0.16; 'tests,': 0.16; 'to:addr:python-checkins': 0.16;
 'module': 0.17; 'code': 0.21; 'library': 0.24; 'ability': 0.27; 'else': 0.29; 
 'issue': 0.32; 'mean': 0.32; 'skip:b 20': 0.33; 'subject:: ': 0.34; 'file':
 0.35; 'but': 0.35; 'received:org': 0.35; 'format': 0.35; '+++': 0.36; 'skip:s
 40': 0.36; 'got': 0.36; 'date:': 0.36; 'received:82': 0.36; 'test': 0.36;
 'same': 0.36; 'skip:" 10': 0.36; 'commit': 0.37; 'objects': 0.37; 'skip:p
 30': 0.37; 'skip:( 20': 0.37; 'skip:s 20': 0.39; 'skip:_ 20': 0.40;
 'subject:skip:t 10': 0.61; 'turn': 0.64; 'passing': 0.67; 'methods': 0.67;
 'limit': 0.75; '-1)': 0.84; 'consistency': 0.84; 'delegated': 0.84;
 'invalid': 0.84; 'lacking': 0.84; 'message-id:invalid': 0.88; 'equal': 0.91;
 'pair': 0.91; 'skip:+ 30': 0.91; 'subject:NEWS': 0.91
Received: from localhost.localdomain (HELO mail.python.org) (127.0.0.1) by
 albatross.python.org with SMTP; 13 Dec 2009 20:19:09 +0100
Received: from dinsdale.python.org (dinsdale.python.org [82.94.164.162]) by
 mail.python.org (Postfix) with ESMTP for <python-checkins@python.org>; Sun,
 13 Dec 2009 20:19:09 +0100 (CET)
MIME-Version: 1.0
X-BeenThere: python-checkins@python.org
X-Mailman-Version: 2.1.12
Precedence: list
List-Id: Check-in messages from the Python maintainers
 <python-checkins.python.org>
List-Unsubscribe: <http://mail.python.org/mailman/options/python-checkins>,
 <mailto:python-checkins-request@python.org?subject=unsubscribe>
List-Archive: <http://mail.python.org/pipermail/python-checkins>
List-Post: <mailto:python-checkins@python.org>
List-Help: <mailto:python-checkins-request@python.org?subject=help>
List-Subscribe: <http://mail.python.org/mailman/listinfo/python-checkins>,
 <mailto:python-checkins-request@python.org?subject=subscribe>
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: 7bit
Errors-To: python-checkins-bounces+skip=pobox.com@python.org
Message-Id: <20091213191919.560CB20AE36@indigo.pobox.com>
X-Spambayes-Evidence: '*H*': 1.00; '*S*': 0.00; 'skip:_ 40': 0.04;
 'result': 0.07; 'skip:_ 10': 0.07; '+++': 0.09; 'author:': 0.09; 'def': 0.09;
 'from:addr:python.org': 0.09; 'log:': 0.09; 'methods': 0.09; 'modified:': 0.09;
 'passed': 0.09; 'revision:': 0.09; 'skip:* 10': 0.09; 'skip:_ 20': 0.09;
 'skip:s 30': 0.09; 'skip:s 40': 0.09; 'subject:checkins': 0.09;
 '(original)': 0.16; '+int': 0.16; '-------': 0.16; '-1.': 0.16; 'arg': 0.16;
 'args': 0.16; 'argument': 0.16; 'argument.': 0.16; 'basically': 0.16;
 'char': 0.16; 'commit': 0.16; 'dec': 0.16; 'email name:python-checkins': 0.16;
 'equal': 0.16; 'functions': 0.16; 'int': 0.16; 'invalid': 0.16;
 'library': 0.16; 'module': 0.16; 'normally': 0.16; 'null; ': 0.16;
 'objects': 0.16; 'objects.': 0.16; 'reads': 0.16;
 'received:82.94.164.162': 0.16; 'received:dinsdale.python.org': 0.16;
 'sender:addr:python-checkins-bounces+skip=pobox.com': 0.16; 'skip:+ 30': 0.16;
 'skip:= 70': 0.16; 'skip:p 30': 0.16; 'static': 0.16; 'subject:test': 0.16;
 'subject:trunk': 0.16; 'sun': 0.16; 'to:addr:python-checkins': 0.16;
 'types': 0.16; 'url:python-checkins': 0.16; 'void': 0.16;
 'email addr:python.org': 0.17; 'skip:& 20': 0.20; 'subject:: ': 0.24;
 '---': 0.24; 'date:': 0.24; 'issue': 0.24; 'limit': 0.24; 'skip:c 20': 0.24;
 'subject:Python': 0.24; 'where': 0.28; 'header:Received:10': 0.28;
 'list': 0.28; 'code': 0.30; 'mailing': 0.30; 'skip:( 10': 0.30;
 'skip:( 20': 0.31; 'ability': 0.32; 'else': 0.32; 'same': 0.32;
 'skip:e 20': 0.32; 'skip:" 10': 0.32; 'subject:] ': 0.32; 'url:org': 0.32;
 'them': 0.33; 'were': 0.33; 'they': 0.34; 'skip:b 10': 0.34; 'skip:s 20': 0.36;
 'data': 0.37; 'used': 0.37; 'subject:[': 0.37; 'but': 0.37; 'when': 0.39;
 'subject: - ': 0.39; 'received:64.74.157.52': 0.39; 'url:python': 0.39;
 'subject:/': 0.61; 'other': 0.64; 'skip:c 10': 0.67;
 'sender:addr:python.org': 0.68; 'return': 0.69; 'subject:\n ': 0.70;
 'got': 0.75; 'turn': 0.84; 'mean': 0.91; 'test': 0.91; 'accept': 0.93
From: benjamin.peterson <python-checkins@python.org>
Sender: python-checkins-bounces+skip=pobox.com@python.org
To: python-checkins@python.org
Subject: [Python-checkins] r76805 - in python/trunk: Lib/test/test_fileio.py
 Lib/test/test_io.py Misc/NEWS Modules/_io/_iomodule.c Modules/_io/_iomodule.h
 Modules/_io/bufferedio.c Modules/_io/fileio.c Modules/_io/iobase.c
 Modules/_io/textio.c
Date: Sun, 13 Dec 2009 14:19:19 -0500 (EST)
X-Spambayes-Classification: ham; 0.00

Author: benjamin.peterson
Date: Sun Dec 13 20:19:07 2009
New Revision: 76805

Log:
accept None as the same as having passed no argument in file types #7349

This is for consistency with imitation file objects like StringIO and BytesIO.

This commit also adds a few tests, where they were lacking for concerned
methods.


Modified:
   python/trunk/Lib/test/test_fileio.py
   python/trunk/Lib/test/test_io.py
   python/trunk/Misc/NEWS
   python/trunk/Modules/_io/_iomodule.c
   python/trunk/Modules/_io/_iomodule.h
   python/trunk/Modules/_io/bufferedio.c
   python/trunk/Modules/_io/fileio.c
   python/trunk/Modules/_io/iobase.c
   python/trunk/Modules/_io/textio.c

Modified: python/trunk/Lib/test/test_fileio.py
==============================================================================
--- python/trunk/Lib/test/test_fileio.py	(original)
+++ python/trunk/Lib/test/test_fileio.py	Sun Dec 13 20:19:07 2009
@@ -71,6 +71,15 @@
         n = self.f.readinto(a)
         self.assertEquals(array(b'b', [1, 2]), a[:n])
 
+    def test_none_args(self):
+        self.f.write(b"hi\nbye\nabc")
+        self.f.close()
+        self.f = _FileIO(TESTFN, 'r')
+        self.assertEqual(self.f.read(None), b"hi\nbye\nabc")
+        self.f.seek(0)
+        self.assertEqual(self.f.readline(None), b"hi\n")
+        self.assertEqual(self.f.readlines(None), [b"bye\n", b"abc"])
+
     def testRepr(self):
         self.assertEquals(repr(self.f), "<_io.FileIO name=%r mode='%s'>"
                                         % (self.f.name, self.f.mode))

Modified: python/trunk/Lib/test/test_io.py
==============================================================================
--- python/trunk/Lib/test/test_io.py	(original)
+++ python/trunk/Lib/test/test_io.py	Sun Dec 13 20:19:07 2009
@@ -341,7 +341,7 @@
             self.assertEqual(f.readline(2), b"xy")
             self.assertEqual(f.readline(4), b"zzy\n")
             self.assertEqual(f.readline(), b"foo\x00bar\n")
-            self.assertEqual(f.readline(), b"another line")
+            self.assertEqual(f.readline(None), b"another line")
             self.assertRaises(TypeError, f.readline, 5.3)
         with self.open(support.TESTFN, "r") as f:
             self.assertRaises(TypeError, f.readline, 5.3)
@@ -654,9 +654,10 @@
         self.assertEquals(b"abc", bufio.read())
 
     def test_read(self):
-        rawio = self.MockRawIO((b"abc", b"d", b"efg"))
-        bufio = self.tp(rawio)
-        self.assertEquals(b"abcdef", bufio.read(6))
+        for arg in (None, 7):
+            rawio = self.MockRawIO((b"abc", b"d", b"efg"))
+            bufio = self.tp(rawio)
+            self.assertEquals(b"abcdefg", bufio.read(arg))
         # Invalid args
         self.assertRaises(ValueError, bufio.read, -2)
 
@@ -673,6 +674,7 @@
         self.assertEquals(b"efg", bufio.read1(100))
         self.assertEquals(rawio._reads, 3)
         self.assertEquals(b"", bufio.read1(100))
+        self.assertEquals(rawio._reads, 4)
         # Invalid args
         self.assertRaises(ValueError, bufio.read1, -1)
 
@@ -691,6 +693,14 @@
         self.assertEquals(bufio.readinto(b), 0)
         self.assertEquals(b, b"gf")
 
+    def test_readlines(self):
+        def bufio():
+            rawio = self.MockRawIO((b"abc\n", b"d\n", b"ef"))
+            return self.tp(rawio)
+        self.assertEquals(bufio().readlines(), [b"abc\n", b"d\n", b"ef"])
+        self.assertEquals(bufio().readlines(5), [b"abc\n", b"d\n"])
+        self.assertEquals(bufio().readlines(None), [b"abc\n", b"d\n", b"ef"])
+
     def test_buffering(self):
         data = b"abcdefghi"
         dlen = len(data)
@@ -1131,6 +1141,14 @@
         self.assertEqual(pair.read(3), b"abc")
         self.assertEqual(pair.read(1), b"d")
         self.assertEqual(pair.read(), b"ef")
+        pair = self.tp(self.BytesIO(b"abc"), self.MockRawIO())
+        self.assertEqual(pair.read(None), b"abc")
+
+    def test_readlines(self):
+        pair = lambda: self.tp(self.BytesIO(b"abc\ndef\nh"), self.MockRawIO())
+        self.assertEqual(pair().readlines(), [b"abc\n", b"def\n", b"h"])
+        self.assertEqual(pair().readlines(), [b"abc\n", b"def\n", b"h"])
+        self.assertEqual(pair().readlines(5), [b"abc\n", b"def\n"])
 
     def test_read1(self):
         # .read1() is delegated to the underlying reader object, so this test
@@ -1781,6 +1799,8 @@
                 self.assertEquals(f.read(), "abc")
                 cookie = f.tell()
                 self.assertEquals(f.seek(0), 0)
+                self.assertEquals(f.read(None), "abc")
+                f.seek(0)
                 self.assertEquals(f.read(2), "ab")
                 self.assertEquals(f.read(1), "c")
                 self.assertEquals(f.read(1), "")
@@ -1951,6 +1971,14 @@
             reads += c
         self.assertEquals(reads, "AA\nBB")
 
+    def test_readlines(self):
+        txt = self.TextIOWrapper(self.BytesIO(b"AA\nBB\nCC"))
+        self.assertEqual(txt.readlines(), ["AA\n", "BB\n", "CC"])
+        txt.seek(0)
+        self.assertEqual(txt.readlines(None), ["AA\n", "BB\n", "CC"])
+        txt.seek(0)
+        self.assertEqual(txt.readlines(5), ["AA\n", "BB\n"])
+
     # read in amounts equal to TextIOWrapper._CHUNK_SIZE which is 128.
     def test_read_by_chunk(self):
         # make sure "\r\n" straddles 128 char boundary.

Modified: python/trunk/Misc/NEWS
==============================================================================
--- python/trunk/Misc/NEWS	(original)
+++ python/trunk/Misc/NEWS	Sun Dec 13 20:19:07 2009
@@ -20,6 +20,10 @@
 Library
 -------
 
+- Issue #7349: Make methods of file objects in the io module accept None as an
+  argument where file-like objects (ie StringIO and BytesIO) accept them to mean
+  the same as passing no argument.
+
 - Issue #7348: StringIO.StringIO.readline(-1) now acts as if it got no argument
   like other file objects.
 

Modified: python/trunk/Modules/_io/_iomodule.c
==============================================================================
--- python/trunk/Modules/_io/_iomodule.c	(original)
+++ python/trunk/Modules/_io/_iomodule.c	Sun Dec 13 20:19:07 2009
@@ -573,6 +573,29 @@
 }
 
 
+/* Basically the "n" format code with the ability to turn None into -1. */
+int 
+_PyIO_ConvertSsize_t(PyObject *obj, void *result) {
+    Py_ssize_t limit;
+    if (obj == Py_None) {
+        limit = -1;
+    }
+    else if (PyNumber_Check(obj)) {
+        limit = PyNumber_AsSsize_t(obj, PyExc_OverflowError);
+        if (limit == -1 && PyErr_Occurred())
+            return 0;
+    }
+    else {
+        PyErr_Format(PyExc_TypeError,
+                     "integer argument expected, got '%.200s'",
+                     Py_TYPE(obj)->tp_name);
+        return 0;
+    }
+    *((Py_ssize_t *)result) = limit;
+    return 1;
+}
+
+
 /*
  * Module definition
  */

Modified: python/trunk/Modules/_io/_iomodule.h
==============================================================================
--- python/trunk/Modules/_io/_iomodule.h	(original)
+++ python/trunk/Modules/_io/_iomodule.h	Sun Dec 13 20:19:07 2009
@@ -19,6 +19,9 @@
 extern PyTypeObject PyTextIOWrapper_Type;
 extern PyTypeObject PyIncrementalNewlineDecoder_Type;
 
+
+extern int _PyIO_ConvertSsize_t(PyObject *, void *);
+
 /* These functions are used as METH_NOARGS methods, are normally called
  * with args=NULL, and return a new reference.
  * BUT when args=Py_True is passed, they return a borrowed reference.

Modified: python/trunk/Modules/_io/bufferedio.c
==============================================================================
--- python/trunk/Modules/_io/bufferedio.c	(original)
+++ python/trunk/Modules/_io/bufferedio.c	Sun Dec 13 20:19:07 2009
@@ -720,7 +720,7 @@
     PyObject *res;
 
     CHECK_INITIALIZED(self)
-    if (!PyArg_ParseTuple(args, "|n:read", &n)) {
+    if (!PyArg_ParseTuple(args, "|O&:read", &_PyIO_ConvertSsize_t, &n)) {
         return NULL;
     }
     if (n < -1) {
@@ -950,25 +950,11 @@
 static PyObject *
 buffered_readline(buffered *self, PyObject *args)
 {
-    PyObject *limitobj = NULL;
     Py_ssize_t limit = -1;
 
     CHECK_INITIALIZED(self)
-
-    if (!PyArg_ParseTuple(args, "|O:readline", &limitobj)) {
+    if (!PyArg_ParseTuple(args, "|O&:readline", &_PyIO_ConvertSsize_t, &limit))
         return NULL;
-    }
-    if (limitobj) {
-        if (!PyNumber_Check(limitobj)) {
-            PyErr_Format(PyExc_TypeError,
-                         "integer argument expected, got '%.200s'",
-                         Py_TYPE(limitobj)->tp_name);
-            return NULL;
-        }
-        limit = PyNumber_AsSsize_t(limitobj, PyExc_OverflowError);
-        if (limit == -1 && PyErr_Occurred())
-            return NULL;
-    }
     return _buffered_readline(self, limit);
 }
 

Modified: python/trunk/Modules/_io/fileio.c
==============================================================================
--- python/trunk/Modules/_io/fileio.c	(original)
+++ python/trunk/Modules/_io/fileio.c	Sun Dec 13 20:19:07 2009
@@ -599,7 +599,7 @@
 	if (!self->readable)
 		return err_mode("reading");
 
-	if (!PyArg_ParseTuple(args, "|n", &size))
+	if (!PyArg_ParseTuple(args, "|O&", &_PyIO_ConvertSsize_t, &size))
 		return NULL;
 
         if (size < 0) {

Modified: python/trunk/Modules/_io/iobase.c
==============================================================================
--- python/trunk/Modules/_io/iobase.c	(original)
+++ python/trunk/Modules/_io/iobase.c	Sun Dec 13 20:19:07 2009
@@ -455,7 +455,7 @@
     PyObject *buffer, *result;
     Py_ssize_t old_size = -1;
 
-    if (!PyArg_ParseTuple(args, "|n:readline", &limit)) {
+    if (!PyArg_ParseTuple(args, "|O&:readline", &_PyIO_ConvertSsize_t, &limit)) {
         return NULL;
     }
 
@@ -579,14 +579,9 @@
     Py_ssize_t hint = -1, length = 0;
     PyObject *hintobj = Py_None, *result;
 
-    if (!PyArg_ParseTuple(args, "|O:readlines", &hintobj)) {
+    if (!PyArg_ParseTuple(args, "|O&:readlines", &_PyIO_ConvertSsize_t, &hint)) {
         return NULL;
     }
-    if (hintobj != Py_None) {
-        hint = PyNumber_AsSsize_t(hintobj, PyExc_ValueError);
-        if (hint == -1 && PyErr_Occurred())
-            return NULL;
-    }
 
     result = PyList_New(0);
     if (result == NULL)

Modified: python/trunk/Modules/_io/textio.c
==============================================================================
--- python/trunk/Modules/_io/textio.c	(original)
+++ python/trunk/Modules/_io/textio.c	Sun Dec 13 20:19:07 2009
@@ -1455,7 +1455,7 @@
 
     CHECK_INITIALIZED(self);
 
-    if (!PyArg_ParseTuple(args, "|n:read", &n))
+    if (!PyArg_ParseTuple(args, "|O&:read", &_PyIO_ConvertSsize_t, &n))
         return NULL;
 
     CHECK_CLOSED(self);
_______________________________________________
Python-checkins mailing list
Python-checkins@python.org
http://mail.python.org/mailman/listinfo/python-checkins

From SRS0=GK0S=H7=python.org=python-checkins-bounces+skip=pobox.com@bounce2.pobox.com  Sat Dec 12 19:25:56 2009
X-VM-v5-Data: ([nil nil nil nil nil nil nil nil nil]
	["36540" "Saturday" "12" "December" "2009" "20:25:10" "-0500" "benjamin.peterson" "python-checkins@python.org" nil "1105" "[Python-checkins] r76777 - python/branches/py3k/Python/Python-ast.c" "^From:" nil nil "12" nil nil nil nil nil nil nil nil nil nil]
	nil)
Delivered-To: skip.montanaro@gmail.com
Received: from pop.gmail.com
 by montanaro.dyndns.org with POP3 (fetchmail-6.3.11)
 for <skip@localhost> (single-drop); Sat, 12 Dec 2009 19:25:56 -0600 (CST)
Received: by 10.216.0.80 with SMTP id 58cs49517wea;
 Sat, 12 Dec 2009 17:25:14 -0800 (PST)
Received: by 10.229.1.167 with SMTP id 39mr1660344qcf.99.1260667513208;
 Sat, 12 Dec 2009 17:25:13 -0800 (PST)
Return-Path: <SRS0=GK0S=H7=python.org=python-checkins-bounces+skip=pobox.com@bounce2.pobox.com>
Received: from sienna.pobox.com (sienna.pobox.com [64.74.157.51])
 by mx.google.com with ESMTP id 9si6391508qyk.27.2009.12.12.17.25.12;
 Sat, 12 Dec 2009 17:25:12 -0800 (PST)
Received-SPF: pass (google.com: domain of
 SRS0=GK0S=H7=python.org=python-checkins-bounces+skip=pobox.com@bounce2.pobox.com
 designates 64.74.157.51 as permitted sender) client-ip=64.74.157.51; 
Authentication-Results: mx.google.com; spf=pass (google.com: domain of
 SRS0=GK0S=H7=python.org=python-checkins-bounces+skip=pobox.com@bounce2.pobox.com
 designates 64.74.157.51 as permitted sender)
 smtp.mail=SRS0=GK0S=H7=python.org=python-checkins-bounces+skip=pobox.com@bounce2.pobox.com
Received: from sienna.pobox.com (localhost [127.0.0.1])
 by sienna.pobox.com (Postfix) with ESMTP id 81F24208945
 for <skip.montanaro@gmail.com>; Sat, 12 Dec 2009 20:25:11 -0500 (EST)
Delivered-To: skip@pobox.com
X-Pobox-Orig-Sender: <python-checkins-bounces+skip=pobox.com@python.org>
X-Pobox-Delivery-ID: 5B6D5372-E786-11DE-AD96-98C4CB762F1C-00107187!sienna.pobox.com
X-Original-To: python-checkins@python.org
x-pobox-client-address: 82.94.164.166
x-pobox-client-name: mail.python.org
Received: from mail.python.org (mail.python.org [82.94.164.166]) by
 sienna.pobox.com (Postfix) with ESMTP id 6EA7920876F for <skip@pobox.com>;
 Sat, 12 Dec 2009 20:25:10 -0500 (EST)
Received: from albatross.python.org (localhost.localdomain [127.0.0.1]) by
 mail.python.org (Postfix) with ESMTP id 112B8F108 for <skip@pobox.com>; Sun,
 13 Dec 2009 02:25:09 +0100 (CET)
Authentication-Results: mail.python.org; dkim=permerror (bad format)
 header.i=unknown
Delivered-To: python-checkins@mail.python.org
Received: from albatross.python.org (localhost.localdomain [127.0.0.1]) by
 mail.python.org (Postfix) with ESMTP id C284EF082 for
 <python-checkins@python.org>; Sun, 13 Dec 2009 02:24:58 +0100 (CET)
Authentication-Results: mail.python.org; dkim=permerror (bad format)
 header.i=unknown
X-Spam-Status: OK 0.001
X-Spam-Evidence: '*H*': 1.00; '*S*': 0.00; 'subject:Python': 0.02; 'object':
 0.03; 'modified:': 0.07; '(original)': 0.09; 'author:': 0.09; 'int': 0.09;
 'log:': 0.09; 'received:82.94.164.162': 0.09; 'received:dinsdale.python.org':
 0.09; 'revision:': 0.09; 'subject:python': 0.10; 'received:82.94': 0.10;
 'received:82.94.164': 0.10; 'from:addr:python.org': 0.11;
 'received:python.org': 0.15; '"required': 0.16; 'goto': 0.16; 'pyobject':
 0.16; 'subject:py3k': 0.16; 'to:addr:python-checkins': 0.16; 'string': 0.20;
 'skip:o 20': 0.22; 'missing': 0.29; 'mode': 0.29; 'received:org': 0.35;
 '+++': 0.36; 'out,': 0.36; 'got': 0.36; 'date:': 0.36; 'received:82': 0.36;
 'skip:" 10': 0.36; 'skip:p 30': 0.37; 'skip:( 20': 0.37; 'subject:-': 0.37;
 'skip:( 30': 0.61; '-1)': 0.84; 'left; ': 0.84; 'name; ': 0.84; 'right; ': 0.84;
 'skip:\\ 10': 0.84; 'message-id:invalid': 0.88; 'skip:{ 20': 0.91
Received: from localhost.localdomain (HELO mail.python.org) (127.0.0.1) by
 albatross.python.org with SMTP; 13 Dec 2009 02:24:58 +0100
Received: from dinsdale.python.org (dinsdale.python.org [82.94.164.162]) by
 mail.python.org (Postfix) with ESMTP for <python-checkins@python.org>; Sun,
 13 Dec 2009 02:24:58 +0100 (CET)
MIME-Version: 1.0
X-BeenThere: python-checkins@python.org
X-Mailman-Version: 2.1.12
Precedence: list
List-Id: Check-in messages from the Python maintainers
 <python-checkins.python.org>
List-Unsubscribe: <http://mail.python.org/mailman/options/python-checkins>,
 <mailto:python-checkins-request@python.org?subject=unsubscribe>
List-Archive: <http://mail.python.org/pipermail/python-checkins>
List-Post: <mailto:python-checkins@python.org>
List-Help: <mailto:python-checkins-request@python.org?subject=help>
List-Subscribe: <http://mail.python.org/mailman/listinfo/python-checkins>,
 <mailto:python-checkins-request@python.org?subject=subscribe>
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: 7bit
Errors-To: python-checkins-bounces+skip=pobox.com@python.org
Message-Id: <20091213012510.6EA7920876F@sienna.pobox.com>
X-Spambayes-Evidence: '*H*': 1.00; '*S*': 0.00; 'skip:_ 40': 0.04;
 'field': 0.05; '+++': 0.09; 'author:': 0.09; 'from:addr:python.org': 0.09;
 'log:': 0.09; 'modified:': 0.09; 'revision:': 0.09; 'skip:* 10': 0.09;
 'string': 0.09; 'subject:checkins': 0.09; '(original)': 0.16; 'args; ': 0.16;
 'assert(0': 0.16; 'char': 0.16; 'dec': 0.16;
 'email name:python-checkins': 0.16; 'id; ': 0.16; 'identifier': 0.16;
 'int': 0.16; 'mode': 0.16; 'name; ': 0.16; 'null; ': 0.16; 'object': 0.16;
 'param; ': 0.16; 'received:82.94.164.162': 0.16;
 'received:dinsdale.python.org': 0.16;
 'sender:addr:python-checkins-bounces+skip=pobox.com': 0.16; 'skip:( 30': 0.16;
 'skip:= 70': 0.16; 'skip:p 30': 0.16; 'sun': 0.16; 'target; ': 0.16; 'targets;
 ': 0.16; 'tmp': 0.16; 'to:addr:python-checkins': 0.16;
 'url:python-checkins': 0.16; 'value; ': 0.16; 'values; ': 0.16;
 'email addr:python.org': 0.17; '---': 0.24; 'date:': 0.24;
 'subject:Python': 0.24; 'header:Received:10': 0.28; 'list': 0.28;
 'mailing': 0.30; 'skip:( 10': 0.30; 'skip:( 20': 0.31; 'skip:o 20': 0.32;
 'skip:" 10': 0.32; 'subject:] ': 0.32; 'url:org': 0.32; 'skip:b 10': 0.34;
 'subject:[': 0.37; 'subject: - ': 0.39; 'url:python': 0.39; 'missing': 0.61;
 'subject:/': 0.61; 'received:sienna.pobox.com': 0.62; 'skip:o 10': 0.64;
 'skip:c 10': 0.67; 'sender:addr:python.org': 0.68; 'return': 0.69; 'got': 0.75;
 'message-id:@sienna.pobox.com': 0.84
From: benjamin.peterson <python-checkins@python.org>
Sender: python-checkins-bounces+skip=pobox.com@python.org
To: python-checkins@python.org
Subject: [Python-checkins] r76777 - python/branches/py3k/Python/Python-ast.c
Date: Sat, 12 Dec 2009 20:25:10 -0500 (EST)
X-Spambayes-Classification: ham; 0.00

Author: benjamin.peterson
Date: Sun Dec 13 02:24:58 2009
New Revision: 76777

Log:
regenerate Python-ast.c

Modified:
   python/branches/py3k/Python/Python-ast.c

Modified: python/branches/py3k/Python/Python-ast.c
==============================================================================
--- python/branches/py3k/Python/Python-ast.c	(original)
+++ python/branches/py3k/Python/Python-ast.c	Sun Dec 13 02:24:58 2009
@@ -3374,13 +3374,18 @@
 obj2ast_mod(PyObject* obj, mod_ty* out, PyArena* arena)
 {
         PyObject* tmp = NULL;
+        int isinstance;
 
 
         if (obj == Py_None) {
                 *out = NULL;
                 return 0;
         }
-        if (PyObject_IsInstance(obj, (PyObject*)Module_type)) {
+        isinstance = PyObject_IsInstance(obj, (PyObject*)Module_type);
+        if (isinstance == -1) {
+                return 1;
+        }
+        if (isinstance) {
                 asdl_seq* body;
 
                 if (PyObject_HasAttrString(obj, "body")) {
@@ -3412,7 +3417,11 @@
                 if (*out == NULL) goto failed;
                 return 0;
         }
-        if (PyObject_IsInstance(obj, (PyObject*)Interactive_type)) {
+        isinstance = PyObject_IsInstance(obj, (PyObject*)Interactive_type);
+        if (isinstance == -1) {
+                return 1;
+        }
+        if (isinstance) {
                 asdl_seq* body;
 
                 if (PyObject_HasAttrString(obj, "body")) {
@@ -3444,7 +3453,11 @@
                 if (*out == NULL) goto failed;
                 return 0;
         }
-        if (PyObject_IsInstance(obj, (PyObject*)Expression_type)) {
+        isinstance = PyObject_IsInstance(obj, (PyObject*)Expression_type);
+        if (isinstance == -1) {
+                return 1;
+        }
+        if (isinstance) {
                 expr_ty body;
 
                 if (PyObject_HasAttrString(obj, "body")) {
@@ -3463,7 +3476,11 @@
                 if (*out == NULL) goto failed;
                 return 0;
         }
-        if (PyObject_IsInstance(obj, (PyObject*)Suite_type)) {
+        isinstance = PyObject_IsInstance(obj, (PyObject*)Suite_type);
+        if (isinstance == -1) {
+                return 1;
+        }
+        if (isinstance) {
                 asdl_seq* body;
 
                 if (PyObject_HasAttrString(obj, "body")) {
@@ -3508,6 +3525,7 @@
 obj2ast_stmt(PyObject* obj, stmt_ty* out, PyArena* arena)
 {
         PyObject* tmp = NULL;
+        int isinstance;
 
         int lineno;
         int col_offset;
@@ -3540,7 +3558,11 @@
                 PyErr_SetString(PyExc_TypeError, "required field \"col_offset\" missing from stmt");
                 return 1;
         }
-        if (PyObject_IsInstance(obj, (PyObject*)FunctionDef_type)) {
+        isinstance = PyObject_IsInstance(obj, (PyObject*)FunctionDef_type);
+        if (isinstance == -1) {
+                return 1;
+        }
+        if (isinstance) {
                 identifier name;
                 arguments_ty args;
                 asdl_seq* body;
@@ -3637,7 +3659,11 @@
                 if (*out == NULL) goto failed;
                 return 0;
         }
-        if (PyObject_IsInstance(obj, (PyObject*)ClassDef_type)) {
+        isinstance = PyObject_IsInstance(obj, (PyObject*)ClassDef_type);
+        if (isinstance == -1) {
+                return 1;
+        }
+        if (isinstance) {
                 identifier name;
                 asdl_seq* bases;
                 asdl_seq* keywords;
@@ -3785,7 +3811,11 @@
                 if (*out == NULL) goto failed;
                 return 0;
         }
-        if (PyObject_IsInstance(obj, (PyObject*)Return_type)) {
+        isinstance = PyObject_IsInstance(obj, (PyObject*)Return_type);
+        if (isinstance == -1) {
+                return 1;
+        }
+        if (isinstance) {
                 expr_ty value;
 
                 if (PyObject_HasAttrString(obj, "value")) {
@@ -3803,7 +3833,11 @@
                 if (*out == NULL) goto failed;
                 return 0;
         }
-        if (PyObject_IsInstance(obj, (PyObject*)Delete_type)) {
+        isinstance = PyObject_IsInstance(obj, (PyObject*)Delete_type);
+        if (isinstance == -1) {
+                return 1;
+        }
+        if (isinstance) {
                 asdl_seq* targets;
 
                 if (PyObject_HasAttrString(obj, "targets")) {
@@ -3835,7 +3869,11 @@
                 if (*out == NULL) goto failed;
                 return 0;
         }
-        if (PyObject_IsInstance(obj, (PyObject*)Assign_type)) {
+        isinstance = PyObject_IsInstance(obj, (PyObject*)Assign_type);
+        if (isinstance == -1) {
+                return 1;
+        }
+        if (isinstance) {
                 asdl_seq* targets;
                 expr_ty value;
 
@@ -3880,7 +3918,11 @@
                 if (*out == NULL) goto failed;
                 return 0;
         }
-        if (PyObject_IsInstance(obj, (PyObject*)AugAssign_type)) {
+        isinstance = PyObject_IsInstance(obj, (PyObject*)AugAssign_type);
+        if (isinstance == -1) {
+                return 1;
+        }
+        if (isinstance) {
                 expr_ty target;
                 operator_ty op;
                 expr_ty value;
@@ -3925,7 +3967,11 @@
                 if (*out == NULL) goto failed;
                 return 0;
         }
-        if (PyObject_IsInstance(obj, (PyObject*)For_type)) {
+        isinstance = PyObject_IsInstance(obj, (PyObject*)For_type);
+        if (isinstance == -1) {
+                return 1;
+        }
+        if (isinstance) {
                 expr_ty target;
                 expr_ty iter;
                 asdl_seq* body;
@@ -4010,7 +4056,11 @@
                 if (*out == NULL) goto failed;
                 return 0;
         }
-        if (PyObject_IsInstance(obj, (PyObject*)While_type)) {
+        isinstance = PyObject_IsInstance(obj, (PyObject*)While_type);
+        if (isinstance == -1) {
+                return 1;
+        }
+        if (isinstance) {
                 expr_ty test;
                 asdl_seq* body;
                 asdl_seq* orelse;
@@ -4081,7 +4131,11 @@
                 if (*out == NULL) goto failed;
                 return 0;
         }
-        if (PyObject_IsInstance(obj, (PyObject*)If_type)) {
+        isinstance = PyObject_IsInstance(obj, (PyObject*)If_type);
+        if (isinstance == -1) {
+                return 1;
+        }
+        if (isinstance) {
                 expr_ty test;
                 asdl_seq* body;
                 asdl_seq* orelse;
@@ -4152,7 +4206,11 @@
                 if (*out == NULL) goto failed;
                 return 0;
         }
-        if (PyObject_IsInstance(obj, (PyObject*)With_type)) {
+        isinstance = PyObject_IsInstance(obj, (PyObject*)With_type);
+        if (isinstance == -1) {
+                return 1;
+        }
+        if (isinstance) {
                 expr_ty context_expr;
                 expr_ty optional_vars;
                 asdl_seq* body;
@@ -4210,7 +4268,11 @@
                 if (*out == NULL) goto failed;
                 return 0;
         }
-        if (PyObject_IsInstance(obj, (PyObject*)Raise_type)) {
+        isinstance = PyObject_IsInstance(obj, (PyObject*)Raise_type);
+        if (isinstance == -1) {
+                return 1;
+        }
+        if (isinstance) {
                 expr_ty exc;
                 expr_ty cause;
 
@@ -4240,7 +4302,11 @@
                 if (*out == NULL) goto failed;
                 return 0;
         }
-        if (PyObject_IsInstance(obj, (PyObject*)TryExcept_type)) {
+        isinstance = PyObject_IsInstance(obj, (PyObject*)TryExcept_type);
+        if (isinstance == -1) {
+                return 1;
+        }
+        if (isinstance) {
                 asdl_seq* body;
                 asdl_seq* handlers;
                 asdl_seq* orelse;
@@ -4325,7 +4391,11 @@
                 if (*out == NULL) goto failed;
                 return 0;
         }
-        if (PyObject_IsInstance(obj, (PyObject*)TryFinally_type)) {
+        isinstance = PyObject_IsInstance(obj, (PyObject*)TryFinally_type);
+        if (isinstance == -1) {
+                return 1;
+        }
+        if (isinstance) {
                 asdl_seq* body;
                 asdl_seq* finalbody;
 
@@ -4383,7 +4453,11 @@
                 if (*out == NULL) goto failed;
                 return 0;
         }
-        if (PyObject_IsInstance(obj, (PyObject*)Assert_type)) {
+        isinstance = PyObject_IsInstance(obj, (PyObject*)Assert_type);
+        if (isinstance == -1) {
+                return 1;
+        }
+        if (isinstance) {
                 expr_ty test;
                 expr_ty msg;
 
@@ -4414,7 +4488,11 @@
                 if (*out == NULL) goto failed;
                 return 0;
         }
-        if (PyObject_IsInstance(obj, (PyObject*)Import_type)) {
+        isinstance = PyObject_IsInstance(obj, (PyObject*)Import_type);
+        if (isinstance == -1) {
+                return 1;
+        }
+        if (isinstance) {
                 asdl_seq* names;
 
                 if (PyObject_HasAttrString(obj, "names")) {
@@ -4446,7 +4524,11 @@
                 if (*out == NULL) goto failed;
                 return 0;
         }
-        if (PyObject_IsInstance(obj, (PyObject*)ImportFrom_type)) {
+        isinstance = PyObject_IsInstance(obj, (PyObject*)ImportFrom_type);
+        if (isinstance == -1) {
+                return 1;
+        }
+        if (isinstance) {
                 identifier module;
                 asdl_seq* names;
                 int level;
@@ -4503,7 +4585,11 @@
                 if (*out == NULL) goto failed;
                 return 0;
         }
-        if (PyObject_IsInstance(obj, (PyObject*)Global_type)) {
+        isinstance = PyObject_IsInstance(obj, (PyObject*)Global_type);
+        if (isinstance == -1) {
+                return 1;
+        }
+        if (isinstance) {
                 asdl_seq* names;
 
                 if (PyObject_HasAttrString(obj, "names")) {
@@ -4535,7 +4621,11 @@
                 if (*out == NULL) goto failed;
                 return 0;
         }
-        if (PyObject_IsInstance(obj, (PyObject*)Nonlocal_type)) {
+        isinstance = PyObject_IsInstance(obj, (PyObject*)Nonlocal_type);
+        if (isinstance == -1) {
+                return 1;
+        }
+        if (isinstance) {
                 asdl_seq* names;
 
                 if (PyObject_HasAttrString(obj, "names")) {
@@ -4567,7 +4657,11 @@
                 if (*out == NULL) goto failed;
                 return 0;
         }
-        if (PyObject_IsInstance(obj, (PyObject*)Expr_type)) {
+        isinstance = PyObject_IsInstance(obj, (PyObject*)Expr_type);
+        if (isinstance == -1) {
+                return 1;
+        }
+        if (isinstance) {
                 expr_ty value;
 
                 if (PyObject_HasAttrString(obj, "value")) {
@@ -4586,19 +4680,31 @@
                 if (*out == NULL) goto failed;
                 return 0;
         }
-        if (PyObject_IsInstance(obj, (PyObject*)Pass_type)) {
+        isinstance = PyObject_IsInstance(obj, (PyObject*)Pass_type);
+        if (isinstance == -1) {
+                return 1;
+        }
+        if (isinstance) {
 
                 *out = Pass(lineno, col_offset, arena);
                 if (*out == NULL) goto failed;
                 return 0;
         }
-        if (PyObject_IsInstance(obj, (PyObject*)Break_type)) {
+        isinstance = PyObject_IsInstance(obj, (PyObject*)Break_type);
+        if (isinstance == -1) {
+                return 1;
+        }
+        if (isinstance) {
 
                 *out = Break(lineno, col_offset, arena);
                 if (*out == NULL) goto failed;
                 return 0;
         }
-        if (PyObject_IsInstance(obj, (PyObject*)Continue_type)) {
+        isinstance = PyObject_IsInstance(obj, (PyObject*)Continue_type);
+        if (isinstance == -1) {
+                return 1;
+        }
+        if (isinstance) {
 
                 *out = Continue(lineno, col_offset, arena);
                 if (*out == NULL) goto failed;
@@ -4617,6 +4723,7 @@
 obj2ast_expr(PyObject* obj, expr_ty* out, PyArena* arena)
 {
         PyObject* tmp = NULL;
+        int isinstance;
 
         int lineno;
         int col_offset;
@@ -4649,7 +4756,11 @@
                 PyErr_SetString(PyExc_TypeError, "required field \"col_offset\" missing from expr");
                 return 1;
         }
-        if (PyObject_IsInstance(obj, (PyObject*)BoolOp_type)) {
+        isinstance = PyObject_IsInstance(obj, (PyObject*)BoolOp_type);
+        if (isinstance == -1) {
+                return 1;
+        }
+        if (isinstance) {
                 boolop_ty op;
                 asdl_seq* values;
 
@@ -4694,7 +4805,11 @@
                 if (*out == NULL) goto failed;
                 return 0;
         }
-        if (PyObject_IsInstance(obj, (PyObject*)BinOp_type)) {
+        isinstance = PyObject_IsInstance(obj, (PyObject*)BinOp_type);
+        if (isinstance == -1) {
+                return 1;
+        }
+        if (isinstance) {
                 expr_ty left;
                 operator_ty op;
                 expr_ty right;
@@ -4739,7 +4854,11 @@
                 if (*out == NULL) goto failed;
                 return 0;
         }
-        if (PyObject_IsInstance(obj, (PyObject*)UnaryOp_type)) {
+        isinstance = PyObject_IsInstance(obj, (PyObject*)UnaryOp_type);
+        if (isinstance == -1) {
+                return 1;
+        }
+        if (isinstance) {
                 unaryop_ty op;
                 expr_ty operand;
 
@@ -4771,7 +4890,11 @@
                 if (*out == NULL) goto failed;
                 return 0;
         }
-        if (PyObject_IsInstance(obj, (PyObject*)Lambda_type)) {
+        isinstance = PyObject_IsInstance(obj, (PyObject*)Lambda_type);
+        if (isinstance == -1) {
+                return 1;
+        }
+        if (isinstance) {
                 arguments_ty args;
                 expr_ty body;
 
@@ -4803,7 +4926,11 @@
                 if (*out == NULL) goto failed;
                 return 0;
         }
-        if (PyObject_IsInstance(obj, (PyObject*)IfExp_type)) {
+        isinstance = PyObject_IsInstance(obj, (PyObject*)IfExp_type);
+        if (isinstance == -1) {
+                return 1;
+        }
+        if (isinstance) {
                 expr_ty test;
                 expr_ty body;
                 expr_ty orelse;
@@ -4848,7 +4975,11 @@
                 if (*out == NULL) goto failed;
                 return 0;
         }
-        if (PyObject_IsInstance(obj, (PyObject*)Dict_type)) {
+        isinstance = PyObject_IsInstance(obj, (PyObject*)Dict_type);
+        if (isinstance == -1) {
+                return 1;
+        }
+        if (isinstance) {
                 asdl_seq* keys;
                 asdl_seq* values;
 
@@ -4906,7 +5037,11 @@
                 if (*out == NULL) goto failed;
                 return 0;
         }
-        if (PyObject_IsInstance(obj, (PyObject*)Set_type)) {
+        isinstance = PyObject_IsInstance(obj, (PyObject*)Set_type);
+        if (isinstance == -1) {
+                return 1;
+        }
+        if (isinstance) {
                 asdl_seq* elts;
 
                 if (PyObject_HasAttrString(obj, "elts")) {
@@ -4938,7 +5073,11 @@
                 if (*out == NULL) goto failed;
                 return 0;
         }
-        if (PyObject_IsInstance(obj, (PyObject*)ListComp_type)) {
+        isinstance = PyObject_IsInstance(obj, (PyObject*)ListComp_type);
+        if (isinstance == -1) {
+                return 1;
+        }
+        if (isinstance) {
                 expr_ty elt;
                 asdl_seq* generators;
 
@@ -4983,7 +5122,11 @@
                 if (*out == NULL) goto failed;
                 return 0;
         }
-        if (PyObject_IsInstance(obj, (PyObject*)SetComp_type)) {
+        isinstance = PyObject_IsInstance(obj, (PyObject*)SetComp_type);
+        if (isinstance == -1) {
+                return 1;
+        }
+        if (isinstance) {
                 expr_ty elt;
                 asdl_seq* generators;
 
@@ -5028,7 +5171,11 @@
                 if (*out == NULL) goto failed;
                 return 0;
         }
-        if (PyObject_IsInstance(obj, (PyObject*)DictComp_type)) {
+        isinstance = PyObject_IsInstance(obj, (PyObject*)DictComp_type);
+        if (isinstance == -1) {
+                return 1;
+        }
+        if (isinstance) {
                 expr_ty key;
                 expr_ty value;
                 asdl_seq* generators;
@@ -5087,7 +5234,11 @@
                 if (*out == NULL) goto failed;
                 return 0;
         }
-        if (PyObject_IsInstance(obj, (PyObject*)GeneratorExp_type)) {
+        isinstance = PyObject_IsInstance(obj, (PyObject*)GeneratorExp_type);
+        if (isinstance == -1) {
+                return 1;
+        }
+        if (isinstance) {
                 expr_ty elt;
                 asdl_seq* generators;
 
@@ -5132,7 +5283,11 @@
                 if (*out == NULL) goto failed;
                 return 0;
         }
-        if (PyObject_IsInstance(obj, (PyObject*)Yield_type)) {
+        isinstance = PyObject_IsInstance(obj, (PyObject*)Yield_type);
+        if (isinstance == -1) {
+                return 1;
+        }
+        if (isinstance) {
                 expr_ty value;
 
                 if (PyObject_HasAttrString(obj, "value")) {
@@ -5150,7 +5305,11 @@
                 if (*out == NULL) goto failed;
                 return 0;
         }
-        if (PyObject_IsInstance(obj, (PyObject*)Compare_type)) {
+        isinstance = PyObject_IsInstance(obj, (PyObject*)Compare_type);
+        if (isinstance == -1) {
+                return 1;
+        }
+        if (isinstance) {
                 expr_ty left;
                 asdl_int_seq* ops;
                 asdl_seq* comparators;
@@ -5222,7 +5381,11 @@
                 if (*out == NULL) goto failed;
                 return 0;
         }
-        if (PyObject_IsInstance(obj, (PyObject*)Call_type)) {
+        isinstance = PyObject_IsInstance(obj, (PyObject*)Call_type);
+        if (isinstance == -1) {
+                return 1;
+        }
+        if (isinstance) {
                 expr_ty func;
                 asdl_seq* args;
                 asdl_seq* keywords;
@@ -5318,7 +5481,11 @@
                 if (*out == NULL) goto failed;
                 return 0;
         }
-        if (PyObject_IsInstance(obj, (PyObject*)Num_type)) {
+        isinstance = PyObject_IsInstance(obj, (PyObject*)Num_type);
+        if (isinstance == -1) {
+                return 1;
+        }
+        if (isinstance) {
                 object n;
 
                 if (PyObject_HasAttrString(obj, "n")) {
@@ -5337,7 +5504,11 @@
                 if (*out == NULL) goto failed;
                 return 0;
         }
-        if (PyObject_IsInstance(obj, (PyObject*)Str_type)) {
+        isinstance = PyObject_IsInstance(obj, (PyObject*)Str_type);
+        if (isinstance == -1) {
+                return 1;
+        }
+        if (isinstance) {
                 string s;
 
                 if (PyObject_HasAttrString(obj, "s")) {
@@ -5356,7 +5527,11 @@
                 if (*out == NULL) goto failed;
                 return 0;
         }
-        if (PyObject_IsInstance(obj, (PyObject*)Bytes_type)) {
+        isinstance = PyObject_IsInstance(obj, (PyObject*)Bytes_type);
+        if (isinstance == -1) {
+                return 1;
+        }
+        if (isinstance) {
                 string s;
 
                 if (PyObject_HasAttrString(obj, "s")) {
@@ -5375,13 +5550,21 @@
                 if (*out == NULL) goto failed;
                 return 0;
         }
-        if (PyObject_IsInstance(obj, (PyObject*)Ellipsis_type)) {
+        isinstance = PyObject_IsInstance(obj, (PyObject*)Ellipsis_type);
+        if (isinstance == -1) {
+                return 1;
+        }
+        if (isinstance) {
 
                 *out = Ellipsis(lineno, col_offset, arena);
                 if (*out == NULL) goto failed;
                 return 0;
         }
-        if (PyObject_IsInstance(obj, (PyObject*)Attribute_type)) {
+        isinstance = PyObject_IsInstance(obj, (PyObject*)Attribute_type);
+        if (isinstance == -1) {
+                return 1;
+        }
+        if (isinstance) {
                 expr_ty value;
                 identifier attr;
                 expr_context_ty ctx;
@@ -5426,7 +5609,11 @@
                 if (*out == NULL) goto failed;
                 return 0;
         }
-        if (PyObject_IsInstance(obj, (PyObject*)Subscript_type)) {
+        isinstance = PyObject_IsInstance(obj, (PyObject*)Subscript_type);
+        if (isinstance == -1) {
+                return 1;
+        }
+        if (isinstance) {
                 expr_ty value;
                 slice_ty slice;
                 expr_context_ty ctx;
@@ -5471,7 +5658,11 @@
                 if (*out == NULL) goto failed;
                 return 0;
         }
-        if (PyObject_IsInstance(obj, (PyObject*)Starred_type)) {
+        isinstance = PyObject_IsInstance(obj, (PyObject*)Starred_type);
+        if (isinstance == -1) {
+                return 1;
+        }
+        if (isinstance) {
                 expr_ty value;
                 expr_context_ty ctx;
 
@@ -5503,7 +5694,11 @@
                 if (*out == NULL) goto failed;
                 return 0;
         }
-        if (PyObject_IsInstance(obj, (PyObject*)Name_type)) {
+        isinstance = PyObject_IsInstance(obj, (PyObject*)Name_type);
+        if (isinstance == -1) {
+                return 1;
+        }
+        if (isinstance) {
                 identifier id;
                 expr_context_ty ctx;
 
@@ -5535,7 +5730,11 @@
                 if (*out == NULL) goto failed;
                 return 0;
         }
-        if (PyObject_IsInstance(obj, (PyObject*)List_type)) {
+        isinstance = PyObject_IsInstance(obj, (PyObject*)List_type);
+        if (isinstance == -1) {
+                return 1;
+        }
+        if (isinstance) {
                 asdl_seq* elts;
                 expr_context_ty ctx;
 
@@ -5580,7 +5779,11 @@
                 if (*out == NULL) goto failed;
                 return 0;
         }
-        if (PyObject_IsInstance(obj, (PyObject*)Tuple_type)) {
+        isinstance = PyObject_IsInstance(obj, (PyObject*)Tuple_type);
+        if (isinstance == -1) {
+                return 1;
+        }
+        if (isinstance) {
                 asdl_seq* elts;
                 expr_context_ty ctx;
 
@@ -5638,28 +5841,53 @@
 obj2ast_expr_context(PyObject* obj, expr_context_ty* out, PyArena* arena)
 {
         PyObject* tmp = NULL;
+        int isinstance;
 
-        if (PyObject_IsInstance(obj, (PyObject*)Load_type)) {
+        isinstance = PyObject_IsInstance(obj, (PyObject *)Load_type);
+        if (isinstance == -1) {
+                return 1;
+        }
+        if (isinstance) {
                 *out = Load;
                 return 0;
         }
-        if (PyObject_IsInstance(obj, (PyObject*)Store_type)) {
+        isinstance = PyObject_IsInstance(obj, (PyObject *)Store_type);
+        if (isinstance == -1) {
+                return 1;
+        }
+        if (isinstance) {
                 *out = Store;
                 return 0;
         }
-        if (PyObject_IsInstance(obj, (PyObject*)Del_type)) {
+        isinstance = PyObject_IsInstance(obj, (PyObject *)Del_type);
+        if (isinstance == -1) {
+                return 1;
+        }
+        if (isinstance) {
                 *out = Del;
                 return 0;
         }
-        if (PyObject_IsInstance(obj, (PyObject*)AugLoad_type)) {
+        isinstance = PyObject_IsInstance(obj, (PyObject *)AugLoad_type);
+        if (isinstance == -1) {
+                return 1;
+        }
+        if (isinstance) {
                 *out = AugLoad;
                 return 0;
         }
-        if (PyObject_IsInstance(obj, (PyObject*)AugStore_type)) {
+        isinstance = PyObject_IsInstance(obj, (PyObject *)AugStore_type);
+        if (isinstance == -1) {
+                return 1;
+        }
+        if (isinstance) {
                 *out = AugStore;
                 return 0;
         }
-        if (PyObject_IsInstance(obj, (PyObject*)Param_type)) {
+        isinstance = PyObject_IsInstance(obj, (PyObject *)Param_type);
+        if (isinstance == -1) {
+                return 1;
+        }
+        if (isinstance) {
                 *out = Param;
                 return 0;
         }
@@ -5676,13 +5904,18 @@
 obj2ast_slice(PyObject* obj, slice_ty* out, PyArena* arena)
 {
         PyObject* tmp = NULL;
+        int isinstance;
 
 
         if (obj == Py_None) {
                 *out = NULL;
                 return 0;
         }
-        if (PyObject_IsInstance(obj, (PyObject*)Slice_type)) {
+        isinstance = PyObject_IsInstance(obj, (PyObject*)Slice_type);
+        if (isinstance == -1) {
+                return 1;
+        }
+        if (isinstance) {
                 expr_ty lower;
                 expr_ty upper;
                 expr_ty step;
@@ -5724,7 +5957,11 @@
                 if (*out == NULL) goto failed;
                 return 0;
         }
-        if (PyObject_IsInstance(obj, (PyObject*)ExtSlice_type)) {
+        isinstance = PyObject_IsInstance(obj, (PyObject*)ExtSlice_type);
+        if (isinstance == -1) {
+                return 1;
+        }
+        if (isinstance) {
                 asdl_seq* dims;
 
                 if (PyObject_HasAttrString(obj, "dims")) {
@@ -5756,7 +5993,11 @@
                 if (*out == NULL) goto failed;
                 return 0;
         }
-        if (PyObject_IsInstance(obj, (PyObject*)Index_type)) {
+        isinstance = PyObject_IsInstance(obj, (PyObject*)Index_type);
+        if (isinstance == -1) {
+                return 1;
+        }
+        if (isinstance) {
                 expr_ty value;
 
                 if (PyObject_HasAttrString(obj, "value")) {
@@ -5788,12 +6029,21 @@
 obj2ast_boolop(PyObject* obj, boolop_ty* out, PyArena* arena)
 {
         PyObject* tmp = NULL;
+        int isinstance;
 
-        if (PyObject_IsInstance(obj, (PyObject*)And_type)) {
+        isinstance = PyObject_IsInstance(obj, (PyObject *)And_type);
+        if (isinstance == -1) {
+                return 1;
+        }
+        if (isinstance) {
                 *out = And;
                 return 0;
         }
-        if (PyObject_IsInstance(obj, (PyObject*)Or_type)) {
+        isinstance = PyObject_IsInstance(obj, (PyObject *)Or_type);
+        if (isinstance == -1) {
+                return 1;
+        }
+        if (isinstance) {
                 *out = Or;
                 return 0;
         }
@@ -5810,52 +6060,101 @@
 obj2ast_operator(PyObject* obj, operator_ty* out, PyArena* arena)
 {
         PyObject* tmp = NULL;
+        int isinstance;
 
-        if (PyObject_IsInstance(obj, (PyObject*)Add_type)) {
+        isinstance = PyObject_IsInstance(obj, (PyObject *)Add_type);
+        if (isinstance == -1) {
+                return 1;
+        }
+        if (isinstance) {
                 *out = Add;
                 return 0;
         }
-        if (PyObject_IsInstance(obj, (PyObject*)Sub_type)) {
+        isinstance = PyObject_IsInstance(obj, (PyObject *)Sub_type);
+        if (isinstance == -1) {
+                return 1;
+        }
+        if (isinstance) {
                 *out = Sub;
                 return 0;
         }
-        if (PyObject_IsInstance(obj, (PyObject*)Mult_type)) {
+        isinstance = PyObject_IsInstance(obj, (PyObject *)Mult_type);
+        if (isinstance == -1) {
+                return 1;
+        }
+        if (isinstance) {
                 *out = Mult;
                 return 0;
         }
-        if (PyObject_IsInstance(obj, (PyObject*)Div_type)) {
+        isinstance = PyObject_IsInstance(obj, (PyObject *)Div_type);
+        if (isinstance == -1) {
+                return 1;
+        }
+        if (isinstance) {
                 *out = Div;
                 return 0;
         }
-        if (PyObject_IsInstance(obj, (PyObject*)Mod_type)) {
+        isinstance = PyObject_IsInstance(obj, (PyObject *)Mod_type);
+        if (isinstance == -1) {
+                return 1;
+        }
+        if (isinstance) {
                 *out = Mod;
                 return 0;
         }
-        if (PyObject_IsInstance(obj, (PyObject*)Pow_type)) {
+        isinstance = PyObject_IsInstance(obj, (PyObject *)Pow_type);
+        if (isinstance == -1) {
+                return 1;
+        }
+        if (isinstance) {
                 *out = Pow;
                 return 0;
         }
-        if (PyObject_IsInstance(obj, (PyObject*)LShift_type)) {
+        isinstance = PyObject_IsInstance(obj, (PyObject *)LShift_type);
+        if (isinstance == -1) {
+                return 1;
+        }
+        if (isinstance) {
                 *out = LShift;
                 return 0;
         }
-        if (PyObject_IsInstance(obj, (PyObject*)RShift_type)) {
+        isinstance = PyObject_IsInstance(obj, (PyObject *)RShift_type);
+        if (isinstance == -1) {
+                return 1;
+        }
+        if (isinstance) {
                 *out = RShift;
                 return 0;
         }
-        if (PyObject_IsInstance(obj, (PyObject*)BitOr_type)) {
+        isinstance = PyObject_IsInstance(obj, (PyObject *)BitOr_type);
+        if (isinstance == -1) {
+                return 1;
+        }
+        if (isinstance) {
                 *out = BitOr;
                 return 0;
         }
-        if (PyObject_IsInstance(obj, (PyObject*)BitXor_type)) {
+        isinstance = PyObject_IsInstance(obj, (PyObject *)BitXor_type);
+        if (isinstance == -1) {
+                return 1;
+        }
+        if (isinstance) {
                 *out = BitXor;
                 return 0;
         }
-        if (PyObject_IsInstance(obj, (PyObject*)BitAnd_type)) {
+        isinstance = PyObject_IsInstance(obj, (PyObject *)BitAnd_type);
+        if (isinstance == -1) {
+                return 1;
+        }
+        if (isinstance) {
                 *out = BitAnd;
                 return 0;
         }
-        if (PyObject_IsInstance(obj, (PyObject*)FloorDiv_type)) {
+        isinstance = PyObject_IsInstance(obj, (PyObject *)FloorDiv_type);
+        if (isinstance == -1) {
+                return 1;
+        }
+        if (isinstance) {
                 *out = FloorDiv;
                 return 0;
         }
@@ -5872,20 +6171,37 @@
 obj2ast_unaryop(PyObject* obj, unaryop_ty* out, PyArena* arena)
 {
         PyObject* tmp = NULL;
+        int isinstance;
 
-        if (PyObject_IsInstance(obj, (PyObject*)Invert_type)) {
+        isinstance = PyObject_IsInstance(obj, (PyObject *)Invert_type);
+        if (isinstance == -1) {
+                return 1;
+        }
+        if (isinstance) {
                 *out = Invert;
                 return 0;
         }
-        if (PyObject_IsInstance(obj, (PyObject*)Not_type)) {
+        isinstance = PyObject_IsInstance(obj, (PyObject *)Not_type);
+        if (isinstance == -1) {
+                return 1;
+        }
+        if (isinstance) {
                 *out = Not;
                 return 0;
         }
-        if (PyObject_IsInstance(obj, (PyObject*)UAdd_type)) {
+        isinstance = PyObject_IsInstance(obj, (PyObject *)UAdd_type);
+        if (isinstance == -1) {
+                return 1;
+        }
+        if (isinstance) {
                 *out = UAdd;
                 return 0;
         }
-        if (PyObject_IsInstance(obj, (PyObject*)USub_type)) {
+        isinstance = PyObject_IsInstance(obj, (PyObject *)USub_type);
+        if (isinstance == -1) {
+                return 1;
+        }
+        if (isinstance) {
                 *out = USub;
                 return 0;
         }
@@ -5902,44 +6218,85 @@
 obj2ast_cmpop(PyObject* obj, cmpop_ty* out, PyArena* arena)
 {
         PyObject* tmp = NULL;
+        int isinstance;
 
-        if (PyObject_IsInstance(obj, (PyObject*)Eq_type)) {
+        isinstance = PyObject_IsInstance(obj, (PyObject *)Eq_type);
+        if (isinstance == -1) {
+                return 1;
+        }
+        if (isinstance) {
                 *out = Eq;
                 return 0;
         }
-        if (PyObject_IsInstance(obj, (PyObject*)NotEq_type)) {
+        isinstance = PyObject_IsInstance(obj, (PyObject *)NotEq_type);
+        if (isinstance == -1) {
+                return 1;
+        }
+        if (isinstance) {
                 *out = NotEq;
                 return 0;
         }
-        if (PyObject_IsInstance(obj, (PyObject*)Lt_type)) {
+        isinstance = PyObject_IsInstance(obj, (PyObject *)Lt_type);
+        if (isinstance == -1) {
+                return 1;
+        }
+        if (isinstance) {
                 *out = Lt;
                 return 0;
         }
-        if (PyObject_IsInstance(obj, (PyObject*)LtE_type)) {
+        isinstance = PyObject_IsInstance(obj, (PyObject *)LtE_type);
+        if (isinstance == -1) {
+                return 1;
+        }
+        if (isinstance) {
                 *out = LtE;
                 return 0;
         }
-        if (PyObject_IsInstance(obj, (PyObject*)Gt_type)) {
+        isinstance = PyObject_IsInstance(obj, (PyObject *)Gt_type);
+        if (isinstance == -1) {
+                return 1;
+        }
+        if (isinstance) {
                 *out = Gt;
                 return 0;
         }
-        if (PyObject_IsInstance(obj, (PyObject*)GtE_type)) {
+        isinstance = PyObject_IsInstance(obj, (PyObject *)GtE_type);
+        if (isinstance == -1) {
+                return 1;
+        }
+        if (isinstance) {
                 *out = GtE;
                 return 0;
         }
-        if (PyObject_IsInstance(obj, (PyObject*)Is_type)) {
+        isinstance = PyObject_IsInstance(obj, (PyObject *)Is_type);
+        if (isinstance == -1) {
+                return 1;
+        }
+        if (isinstance) {
                 *out = Is;
                 return 0;
         }
-        if (PyObject_IsInstance(obj, (PyObject*)IsNot_type)) {
+        isinstance = PyObject_IsInstance(obj, (PyObject *)IsNot_type);
+        if (isinstance == -1) {
+                return 1;
+        }
+        if (isinstance) {
                 *out = IsNot;
                 return 0;
         }
-        if (PyObject_IsInstance(obj, (PyObject*)In_type)) {
+        isinstance = PyObject_IsInstance(obj, (PyObject *)In_type);
+        if (isinstance == -1) {
+                return 1;
+        }
+        if (isinstance) {
                 *out = In;
                 return 0;
         }
-        if (PyObject_IsInstance(obj, (PyObject*)NotIn_type)) {
+        isinstance = PyObject_IsInstance(obj, (PyObject *)NotIn_type);
+        if (isinstance == -1) {
+                return 1;
+        }
+        if (isinstance) {
                 *out = NotIn;
                 return 0;
         }
@@ -6020,6 +6377,7 @@
 obj2ast_excepthandler(PyObject* obj, excepthandler_ty* out, PyArena* arena)
 {
         PyObject* tmp = NULL;
+        int isinstance;
 
         int lineno;
         int col_offset;
@@ -6052,7 +6410,11 @@
                 PyErr_SetString(PyExc_TypeError, "required field \"col_offset\" missing from excepthandler");
                 return 1;
         }
-        if (PyObject_IsInstance(obj, (PyObject*)ExceptHandler_type)) {
+        isinstance = PyObject_IsInstance(obj, (PyObject*)ExceptHandler_type);
+        if (isinstance == -1) {
+                return 1;
+        }
+        if (isinstance) {
                 expr_ty type;
                 identifier name;
                 asdl_seq* body;
@@ -6629,11 +6991,15 @@
     PyObject *req_type[] = {(PyObject*)Module_type, (PyObject*)Expression_type,
                             (PyObject*)Interactive_type};
     char *req_name[] = {"Module", "Expression", "Interactive"};
+    int isinstance;
     assert(0 <= mode && mode <= 2);
 
     init_types();
 
-    if (!PyObject_IsInstance(ast, req_type[mode])) {
+    isinstance = PyObject_IsInstance(ast, req_type[mode]);
+    if (isinstance == -1)
+        return NULL;
+    if (!isinstance) {
         PyErr_Format(PyExc_TypeError, "expected %s node, got %.400s",
                      req_name[mode], Py_TYPE(ast)->tp_name);
         return NULL;
_______________________________________________
Python-checkins mailing list
Python-checkins@python.org
http://mail.python.org/mailman/listinfo/python-checkins

From SRS0=GK0S=H7=python.org=python-checkins-bounces+skip=pobox.com@bounce2.pobox.com  Sat Dec 12 18:58:44 2009
X-VM-v5-Data: ([nil nil nil nil nil nil nil nil nil]
	["38455" "Saturday" "12" "December" "2009" "19:57:35" "-0500" "benjamin.peterson" "python-checkins@python.org" nil "1152" "[Python-checkins] r76774 - in python/trunk: Parser/asdl_c.py Python/Python-ast.c Python/bltinmodule.c" "^From:" nil nil "12" nil nil nil nil nil nil nil nil nil nil]
	nil)
Delivered-To: skip.montanaro@gmail.com
Received: from pop.gmail.com
 by montanaro.dyndns.org with POP3 (fetchmail-6.3.11)
 for <skip@localhost> (single-drop); Sat, 12 Dec 2009 18:58:44 -0600 (CST)
Received: by 10.216.0.80 with SMTP id 58cs48838wea;
 Sat, 12 Dec 2009 16:57:38 -0800 (PST)
Received: by 10.224.40.137 with SMTP id k9mr1908164qae.262.1260665857688;
 Sat, 12 Dec 2009 16:57:37 -0800 (PST)
Return-Path: <SRS0=GK0S=H7=python.org=python-checkins-bounces+skip=pobox.com@bounce2.pobox.com>
Received: from gold.pobox.com (gold.pobox.com [208.72.237.26])
 by mx.google.com with ESMTP id 37si6809328qyk.122.2009.12.12.16.57.37;
 Sat, 12 Dec 2009 16:57:37 -0800 (PST)
Received-SPF: pass (google.com: domain of
 SRS0=GK0S=H7=python.org=python-checkins-bounces+skip=pobox.com@bounce2.pobox.com
 designates 208.72.237.26 as permitted sender) client-ip=208.72.237.26; 
Authentication-Results: mx.google.com; spf=pass (google.com: domain of
 SRS0=GK0S=H7=python.org=python-checkins-bounces+skip=pobox.com@bounce2.pobox.com
 designates 208.72.237.26 as permitted sender)
 smtp.mail=SRS0=GK0S=H7=python.org=python-checkins-bounces+skip=pobox.com@bounce2.pobox.com
Received: from gold.pobox.com (localhost [127.0.0.1])
 by gold.pobox.com (Postfix) with ESMTP id B5E8C411484
 for <skip.montanaro@gmail.com>; Sat, 12 Dec 2009 19:57:36 -0500 (EST)
Delivered-To: skip@pobox.com
X-Pobox-Orig-Sender: <python-checkins-bounces+skip=pobox.com@python.org>
X-Pobox-Delivery-ID: 810F230C-E782-11DE-AA19-9E35C4411685-00107187!gold.pobox.com
X-Original-To: python-checkins@python.org
x-pobox-client-address: 82.94.164.166
x-pobox-client-name: mail.python.org
Received: from mail.python.org (mail.python.org [82.94.164.166]) by
 gold.pobox.com (Postfix) with ESMTP id C0D884114BA for <skip@pobox.com>; Sat,
 12 Dec 2009 19:57:35 -0500 (EST)
Received: from albatross.python.org (localhost.localdomain [127.0.0.1]) by
 mail.python.org (Postfix) with ESMTP id 539C8F0B1 for <skip@pobox.com>; Sun,
 13 Dec 2009 01:57:35 +0100 (CET)
Authentication-Results: mail.python.org; dkim=permerror (bad format)
 header.i=unknown
Delivered-To: python-checkins@mail.python.org
Received: from albatross.python.org (localhost.localdomain [127.0.0.1]) by
 mail.python.org (Postfix) with ESMTP id 2DA92F0C7 for
 <python-checkins@python.org>; Sun, 13 Dec 2009 01:54:16 +0100 (CET)
Authentication-Results: mail.python.org; dkim=permerror (bad format)
 header.i=unknown
X-Spam-Status: OK 0.000
X-Spam-Evidence: '*H*': 1.00; '*S*': 0.00; 'def': 0.02; 'subject:Python':
 0.02; 'object': 0.03; 'modified:': 0.07; '(original)': 0.09; 'author:': 0.09; 
 'int': 0.09; 'log:': 0.09; 'received:82.94.164.162': 0.09;
 'received:dinsdale.python.org': 0.09; 'revision:': 0.09; 'subject:trunk':
 0.09; 'subject:python': 0.10; 'received:82.94': 0.10; 'received:82.94.164':
 0.10; 'from:addr:python.org': 0.11; 'received:python.org': 0.15; '"required':
 0.16; '-1; ': 0.16; 'goto': 0.16; 'pyobject': 0.16; 'to:addr:python-checkins':
 0.16; 'string': 0.20; 'skip:o 20': 0.22; 'ability': 0.27; 'missing': 0.29;
 'mode': 0.29; 'line': 0.32; 'subject:: ': 0.34; 'received:org': 0.35;
 'name,': 0.35; '+++': 0.36; 'out,': 0.36; 'got': 0.36; 'date:': 0.36;
 'received:82': 0.36; 'skip:" 10': 0.36; 'skip:p 30': 0.37; 'skip:( 20': 0.37; 
 'subject:-': 0.37; 'skip:s 20': 0.39; 'skip:( 30': 0.61; 'account': 0.70;
 '-1)': 0.84; 'left;': 0.84; 'name;': 0.84; 'right;': 0.84; 'skip:\\ 10':
 0.84; 'message-id:invalid': 0.88; 'skip:{ 20': 0.91
Received: from localhost.localdomain (HELO mail.python.org) (127.0.0.1) by
 albatross.python.org with SMTP; 13 Dec 2009 01:54:16 +0100
Received: from dinsdale.python.org (dinsdale.python.org [82.94.164.162]) by
 mail.python.org (Postfix) with ESMTP for <python-checkins@python.org>; Sun,
 13 Dec 2009 01:54:16 +0100 (CET)
MIME-Version: 1.0
X-BeenThere: python-checkins@python.org
X-Mailman-Version: 2.1.12
Precedence: list
List-Id: Check-in messages from the Python maintainers
 <python-checkins.python.org>
List-Unsubscribe: <http://mail.python.org/mailman/options/python-checkins>,
 <mailto:python-checkins-request@python.org?subject=unsubscribe>
List-Archive: <http://mail.python.org/pipermail/python-checkins>
List-Post: <mailto:python-checkins@python.org>
List-Help: <mailto:python-checkins-request@python.org?subject=help>
List-Subscribe: <http://mail.python.org/mailman/listinfo/python-checkins>,
 <mailto:python-checkins-request@python.org?subject=subscribe>
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: 7bit
Errors-To: python-checkins-bounces+skip=pobox.com@python.org
Message-Id: <20091213005735.C0D884114BA@gold.pobox.com>
X-Spambayes-Evidence: '*H*': 1.00; '*S*': 0.00; 'skip:_ 40': 0.04;
 'field': 0.05; 'result': 0.07; '+++': 0.09; 'author:': 0.09; 'def': 0.09;
 'from:addr:python.org': 0.09; 'log:': 0.09; 'modified:': 0.09;
 'revision:': 0.09; 'skip:* 10': 0.09; 'skip:s 30': 0.09; 'string': 0.09;
 'subject:checkins': 0.09; '(original)': 0.16; 'args; ': 0.16; 'assert(0': 0.16;
 'bool': 0.16; 'char': 0.16; 'dec': 0.16; 'email name:python-checkins': 0.16;
 'fail': 0.16; 'id; ': 0.16; 'identifier': 0.16; 'int': 0.16;
 'message-id:@gold.pobox.com': 0.16; 'mode': 0.16; 'name; ': 0.16; 'null;
 ': 0.16; 'object': 0.16; 'param; ': 0.16; 'received:82.94.164.162': 0.16;
 'received:dinsdale.python.org': 0.16;
 'sender:addr:python-checkins-bounces+skip=pobox.com': 0.16; 'skip:( 30': 0.16;
 'skip:= 70': 0.16; 'skip:p 30': 0.16; 'subject:skip:b 10': 0.16;
 'subject:trunk': 0.16; 'sun': 0.16; 'target; ': 0.16; 'targets; ': 0.16;
 'tmp': 0.16; 'to:addr:python-checkins': 0.16; 'url:python-checkins': 0.16;
 'value; ': 0.16; 'values; ': 0.16; 'email addr:python.org': 0.17; 'line': 0.20;
 'subject:: ': 0.24; '---': 0.24; 'date:': 0.24; 'subject:Python': 0.24;
 'header:Received:10': 0.28; 'list': 0.28; 'mailing': 0.30; 'skip:( 10': 0.30;
 'skip:( 20': 0.31; 'ability': 0.32; 'skip:o 20': 0.32; 'skip:" 10': 0.32;
 'subject:] ': 0.32; 'url:org': 0.32; 'skip:b 10': 0.34; 'skip:s 20': 0.36;
 'subject:[': 0.37; 'subject: - ': 0.39; 'url:python': 0.39; 'missing': 0.61;
 'subject:/': 0.61; 'skip:o 10': 0.64; 'skip:c 10': 0.67;
 'sender:addr:python.org': 0.68; 'return': 0.69; 'subject:\n ': 0.70;
 'got': 0.75
From: benjamin.peterson <python-checkins@python.org>
Sender: python-checkins-bounces+skip=pobox.com@python.org
To: python-checkins@python.org
Subject: [Python-checkins] r76774 - in python/trunk: Parser/asdl_c.py
 Python/Python-ast.c Python/bltinmodule.c
Date: Sat, 12 Dec 2009 19:57:35 -0500 (EST)
X-Spambayes-Classification: ham; 0.00

Author: benjamin.peterson
Date: Sun Dec 13 01:54:15 2009
New Revision: 76774

Log:
account for PyObject_IsInstance's new ability to fail

Modified:
   python/trunk/Parser/asdl_c.py
   python/trunk/Python/Python-ast.c
   python/trunk/Python/bltinmodule.c

Modified: python/trunk/Parser/asdl_c.py
==============================================================================
--- python/trunk/Parser/asdl_c.py	(original)
+++ python/trunk/Parser/asdl_c.py	Sun Dec 13 01:54:15 2009
@@ -367,6 +367,7 @@
         self.emit("obj2ast_%s(PyObject* obj, %s* out, PyArena* arena)" % (name, ctype), 0)
         self.emit("{", 0)
         self.emit("PyObject* tmp = NULL;", 1)
+        self.emit("int isinstance;", 1)
         self.emit("", 0)
 
     def sumTrailer(self, name):
@@ -386,7 +387,13 @@
     def simpleSum(self, sum, name):
         self.funcHeader(name)
         for t in sum.types:
-            self.emit("if (PyObject_IsInstance(obj, (PyObject*)%s_type)) {" % t.name, 1)
+            line = ("isinstance = PyObject_IsInstance(obj, "
+                    "(PyObject *)%s_type);")
+            self.emit(line % (t.name,), 1)
+            self.emit("if (isinstance == -1) {", 1)
+            self.emit("return 1;", 2)
+            self.emit("}", 1)
+            self.emit("if (isinstance) {", 1)
             self.emit("*out = %s;" % t.name, 2)
             self.emit("return 0;", 2)
             self.emit("}", 1)
@@ -408,7 +415,12 @@
         for a in sum.attributes:
             self.visitField(a, name, sum=sum, depth=1)
         for t in sum.types:
-            self.emit("if (PyObject_IsInstance(obj, (PyObject*)%s_type)) {" % t.name, 1)
+            line = "isinstance = PyObject_IsInstance(obj, (PyObject*)%s_type);"
+            self.emit(line % (t.name,), 1)
+            self.emit("if (isinstance == -1) {", 1)
+            self.emit("return 1;", 2)
+            self.emit("}", 1)
+            self.emit("if (isinstance) {", 1)
             for f in t.fields:
                 self.visitFieldDeclaration(f, t.name, sum=sum, depth=2)
             self.emit("", 0)
@@ -1093,11 +1105,15 @@
     PyObject *req_type[] = {(PyObject*)Module_type, (PyObject*)Expression_type,
                             (PyObject*)Interactive_type};
     char *req_name[] = {"Module", "Expression", "Interactive"};
+    int isinstance;
     assert(0 <= mode && mode <= 2);
 
     init_types();
 
-    if (!PyObject_IsInstance(ast, req_type[mode])) {
+    isinstance = PyObject_IsInstance(ast, req_type[mode]);
+    if (isinstance == -1)
+        return NULL;
+    if (!isinstance) {
         PyErr_Format(PyExc_TypeError, "expected %s node, got %.400s",
                      req_name[mode], Py_TYPE(ast)->tp_name);
         return NULL;

Modified: python/trunk/Python/Python-ast.c
==============================================================================
--- python/trunk/Python/Python-ast.c	(original)
+++ python/trunk/Python/Python-ast.c	Sun Dec 13 01:54:15 2009
@@ -3175,13 +3175,18 @@
 obj2ast_mod(PyObject* obj, mod_ty* out, PyArena* arena)
 {
         PyObject* tmp = NULL;
+        int isinstance;
 
 
         if (obj == Py_None) {
                 *out = NULL;
                 return 0;
         }
-        if (PyObject_IsInstance(obj, (PyObject*)Module_type)) {
+        isinstance = PyObject_IsInstance(obj, (PyObject*)Module_type);
+        if (isinstance == -1) {
+                return 1;
+        }
+        if (isinstance) {
                 asdl_seq* body;
 
                 if (PyObject_HasAttrString(obj, "body")) {
@@ -3213,7 +3218,11 @@
                 if (*out == NULL) goto failed;
                 return 0;
         }
-        if (PyObject_IsInstance(obj, (PyObject*)Interactive_type)) {
+        isinstance = PyObject_IsInstance(obj, (PyObject*)Interactive_type);
+        if (isinstance == -1) {
+                return 1;
+        }
+        if (isinstance) {
                 asdl_seq* body;
 
                 if (PyObject_HasAttrString(obj, "body")) {
@@ -3245,7 +3254,11 @@
                 if (*out == NULL) goto failed;
                 return 0;
         }
-        if (PyObject_IsInstance(obj, (PyObject*)Expression_type)) {
+        isinstance = PyObject_IsInstance(obj, (PyObject*)Expression_type);
+        if (isinstance == -1) {
+                return 1;
+        }
+        if (isinstance) {
                 expr_ty body;
 
                 if (PyObject_HasAttrString(obj, "body")) {
@@ -3264,7 +3277,11 @@
                 if (*out == NULL) goto failed;
                 return 0;
         }
-        if (PyObject_IsInstance(obj, (PyObject*)Suite_type)) {
+        isinstance = PyObject_IsInstance(obj, (PyObject*)Suite_type);
+        if (isinstance == -1) {
+                return 1;
+        }
+        if (isinstance) {
                 asdl_seq* body;
 
                 if (PyObject_HasAttrString(obj, "body")) {
@@ -3309,6 +3326,7 @@
 obj2ast_stmt(PyObject* obj, stmt_ty* out, PyArena* arena)
 {
         PyObject* tmp = NULL;
+        int isinstance;
 
         int lineno;
         int col_offset;
@@ -3341,7 +3359,11 @@
                 PyErr_SetString(PyExc_TypeError, "required field \"col_offset\" missing from stmt");
                 return 1;
         }
-        if (PyObject_IsInstance(obj, (PyObject*)FunctionDef_type)) {
+        isinstance = PyObject_IsInstance(obj, (PyObject*)FunctionDef_type);
+        if (isinstance == -1) {
+                return 1;
+        }
+        if (isinstance) {
                 identifier name;
                 arguments_ty args;
                 asdl_seq* body;
@@ -3426,7 +3448,11 @@
                 if (*out == NULL) goto failed;
                 return 0;
         }
-        if (PyObject_IsInstance(obj, (PyObject*)ClassDef_type)) {
+        isinstance = PyObject_IsInstance(obj, (PyObject*)ClassDef_type);
+        if (isinstance == -1) {
+                return 1;
+        }
+        if (isinstance) {
                 identifier name;
                 asdl_seq* bases;
                 asdl_seq* body;
@@ -3524,7 +3550,11 @@
                 if (*out == NULL) goto failed;
                 return 0;
         }
-        if (PyObject_IsInstance(obj, (PyObject*)Return_type)) {
+        isinstance = PyObject_IsInstance(obj, (PyObject*)Return_type);
+        if (isinstance == -1) {
+                return 1;
+        }
+        if (isinstance) {
                 expr_ty value;
 
                 if (PyObject_HasAttrString(obj, "value")) {
@@ -3542,7 +3572,11 @@
                 if (*out == NULL) goto failed;
                 return 0;
         }
-        if (PyObject_IsInstance(obj, (PyObject*)Delete_type)) {
+        isinstance = PyObject_IsInstance(obj, (PyObject*)Delete_type);
+        if (isinstance == -1) {
+                return 1;
+        }
+        if (isinstance) {
                 asdl_seq* targets;
 
                 if (PyObject_HasAttrString(obj, "targets")) {
@@ -3574,7 +3608,11 @@
                 if (*out == NULL) goto failed;
                 return 0;
         }
-        if (PyObject_IsInstance(obj, (PyObject*)Assign_type)) {
+        isinstance = PyObject_IsInstance(obj, (PyObject*)Assign_type);
+        if (isinstance == -1) {
+                return 1;
+        }
+        if (isinstance) {
                 asdl_seq* targets;
                 expr_ty value;
 
@@ -3619,7 +3657,11 @@
                 if (*out == NULL) goto failed;
                 return 0;
         }
-        if (PyObject_IsInstance(obj, (PyObject*)AugAssign_type)) {
+        isinstance = PyObject_IsInstance(obj, (PyObject*)AugAssign_type);
+        if (isinstance == -1) {
+                return 1;
+        }
+        if (isinstance) {
                 expr_ty target;
                 operator_ty op;
                 expr_ty value;
@@ -3664,7 +3706,11 @@
                 if (*out == NULL) goto failed;
                 return 0;
         }
-        if (PyObject_IsInstance(obj, (PyObject*)Print_type)) {
+        isinstance = PyObject_IsInstance(obj, (PyObject*)Print_type);
+        if (isinstance == -1) {
+                return 1;
+        }
+        if (isinstance) {
                 expr_ty dest;
                 asdl_seq* values;
                 bool nl;
@@ -3721,7 +3767,11 @@
                 if (*out == NULL) goto failed;
                 return 0;
         }
-        if (PyObject_IsInstance(obj, (PyObject*)For_type)) {
+        isinstance = PyObject_IsInstance(obj, (PyObject*)For_type);
+        if (isinstance == -1) {
+                return 1;
+        }
+        if (isinstance) {
                 expr_ty target;
                 expr_ty iter;
                 asdl_seq* body;
@@ -3806,7 +3856,11 @@
                 if (*out == NULL) goto failed;
                 return 0;
         }
-        if (PyObject_IsInstance(obj, (PyObject*)While_type)) {
+        isinstance = PyObject_IsInstance(obj, (PyObject*)While_type);
+        if (isinstance == -1) {
+                return 1;
+        }
+        if (isinstance) {
                 expr_ty test;
                 asdl_seq* body;
                 asdl_seq* orelse;
@@ -3877,7 +3931,11 @@
                 if (*out == NULL) goto failed;
                 return 0;
         }
-        if (PyObject_IsInstance(obj, (PyObject*)If_type)) {
+        isinstance = PyObject_IsInstance(obj, (PyObject*)If_type);
+        if (isinstance == -1) {
+                return 1;
+        }
+        if (isinstance) {
                 expr_ty test;
                 asdl_seq* body;
                 asdl_seq* orelse;
@@ -3948,7 +4006,11 @@
                 if (*out == NULL) goto failed;
                 return 0;
         }
-        if (PyObject_IsInstance(obj, (PyObject*)With_type)) {
+        isinstance = PyObject_IsInstance(obj, (PyObject*)With_type);
+        if (isinstance == -1) {
+                return 1;
+        }
+        if (isinstance) {
                 expr_ty context_expr;
                 expr_ty optional_vars;
                 asdl_seq* body;
@@ -4006,7 +4068,11 @@
                 if (*out == NULL) goto failed;
                 return 0;
         }
-        if (PyObject_IsInstance(obj, (PyObject*)Raise_type)) {
+        isinstance = PyObject_IsInstance(obj, (PyObject*)Raise_type);
+        if (isinstance == -1) {
+                return 1;
+        }
+        if (isinstance) {
                 expr_ty type;
                 expr_ty inst;
                 expr_ty tback;
@@ -4048,7 +4114,11 @@
                 if (*out == NULL) goto failed;
                 return 0;
         }
-        if (PyObject_IsInstance(obj, (PyObject*)TryExcept_type)) {
+        isinstance = PyObject_IsInstance(obj, (PyObject*)TryExcept_type);
+        if (isinstance == -1) {
+                return 1;
+        }
+        if (isinstance) {
                 asdl_seq* body;
                 asdl_seq* handlers;
                 asdl_seq* orelse;
@@ -4133,7 +4203,11 @@
                 if (*out == NULL) goto failed;
                 return 0;
         }
-        if (PyObject_IsInstance(obj, (PyObject*)TryFinally_type)) {
+        isinstance = PyObject_IsInstance(obj, (PyObject*)TryFinally_type);
+        if (isinstance == -1) {
+                return 1;
+        }
+        if (isinstance) {
                 asdl_seq* body;
                 asdl_seq* finalbody;
 
@@ -4191,7 +4265,11 @@
                 if (*out == NULL) goto failed;
                 return 0;
         }
-        if (PyObject_IsInstance(obj, (PyObject*)Assert_type)) {
+        isinstance = PyObject_IsInstance(obj, (PyObject*)Assert_type);
+        if (isinstance == -1) {
+                return 1;
+        }
+        if (isinstance) {
                 expr_ty test;
                 expr_ty msg;
 
@@ -4222,7 +4300,11 @@
                 if (*out == NULL) goto failed;
                 return 0;
         }
-        if (PyObject_IsInstance(obj, (PyObject*)Import_type)) {
+        isinstance = PyObject_IsInstance(obj, (PyObject*)Import_type);
+        if (isinstance == -1) {
+                return 1;
+        }
+        if (isinstance) {
                 asdl_seq* names;
 
                 if (PyObject_HasAttrString(obj, "names")) {
@@ -4254,7 +4336,11 @@
                 if (*out == NULL) goto failed;
                 return 0;
         }
-        if (PyObject_IsInstance(obj, (PyObject*)ImportFrom_type)) {
+        isinstance = PyObject_IsInstance(obj, (PyObject*)ImportFrom_type);
+        if (isinstance == -1) {
+                return 1;
+        }
+        if (isinstance) {
                 identifier module;
                 asdl_seq* names;
                 int level;
@@ -4311,7 +4397,11 @@
                 if (*out == NULL) goto failed;
                 return 0;
         }
-        if (PyObject_IsInstance(obj, (PyObject*)Exec_type)) {
+        isinstance = PyObject_IsInstance(obj, (PyObject*)Exec_type);
+        if (isinstance == -1) {
+                return 1;
+        }
+        if (isinstance) {
                 expr_ty body;
                 expr_ty globals;
                 expr_ty locals;
@@ -4354,7 +4444,11 @@
                 if (*out == NULL) goto failed;
                 return 0;
         }
-        if (PyObject_IsInstance(obj, (PyObject*)Global_type)) {
+        isinstance = PyObject_IsInstance(obj, (PyObject*)Global_type);
+        if (isinstance == -1) {
+                return 1;
+        }
+        if (isinstance) {
                 asdl_seq* names;
 
                 if (PyObject_HasAttrString(obj, "names")) {
@@ -4386,7 +4480,11 @@
                 if (*out == NULL) goto failed;
                 return 0;
         }
-        if (PyObject_IsInstance(obj, (PyObject*)Expr_type)) {
+        isinstance = PyObject_IsInstance(obj, (PyObject*)Expr_type);
+        if (isinstance == -1) {
+                return 1;
+        }
+        if (isinstance) {
                 expr_ty value;
 
                 if (PyObject_HasAttrString(obj, "value")) {
@@ -4405,19 +4503,31 @@
                 if (*out == NULL) goto failed;
                 return 0;
         }
-        if (PyObject_IsInstance(obj, (PyObject*)Pass_type)) {
+        isinstance = PyObject_IsInstance(obj, (PyObject*)Pass_type);
+        if (isinstance == -1) {
+                return 1;
+        }
+        if (isinstance) {
 
                 *out = Pass(lineno, col_offset, arena);
                 if (*out == NULL) goto failed;
                 return 0;
         }
-        if (PyObject_IsInstance(obj, (PyObject*)Break_type)) {
+        isinstance = PyObject_IsInstance(obj, (PyObject*)Break_type);
+        if (isinstance == -1) {
+                return 1;
+        }
+        if (isinstance) {
 
                 *out = Break(lineno, col_offset, arena);
                 if (*out == NULL) goto failed;
                 return 0;
         }
-        if (PyObject_IsInstance(obj, (PyObject*)Continue_type)) {
+        isinstance = PyObject_IsInstance(obj, (PyObject*)Continue_type);
+        if (isinstance == -1) {
+                return 1;
+        }
+        if (isinstance) {
 
                 *out = Continue(lineno, col_offset, arena);
                 if (*out == NULL) goto failed;
@@ -4436,6 +4546,7 @@
 obj2ast_expr(PyObject* obj, expr_ty* out, PyArena* arena)
 {
         PyObject* tmp = NULL;
+        int isinstance;
 
         int lineno;
         int col_offset;
@@ -4468,7 +4579,11 @@
                 PyErr_SetString(PyExc_TypeError, "required field \"col_offset\" missing from expr");
                 return 1;
         }
-        if (PyObject_IsInstance(obj, (PyObject*)BoolOp_type)) {
+        isinstance = PyObject_IsInstance(obj, (PyObject*)BoolOp_type);
+        if (isinstance == -1) {
+                return 1;
+        }
+        if (isinstance) {
                 boolop_ty op;
                 asdl_seq* values;
 
@@ -4513,7 +4628,11 @@
                 if (*out == NULL) goto failed;
                 return 0;
         }
-        if (PyObject_IsInstance(obj, (PyObject*)BinOp_type)) {
+        isinstance = PyObject_IsInstance(obj, (PyObject*)BinOp_type);
+        if (isinstance == -1) {
+                return 1;
+        }
+        if (isinstance) {
                 expr_ty left;
                 operator_ty op;
                 expr_ty right;
@@ -4558,7 +4677,11 @@
                 if (*out == NULL) goto failed;
                 return 0;
         }
-        if (PyObject_IsInstance(obj, (PyObject*)UnaryOp_type)) {
+        isinstance = PyObject_IsInstance(obj, (PyObject*)UnaryOp_type);
+        if (isinstance == -1) {
+                return 1;
+        }
+        if (isinstance) {
                 unaryop_ty op;
                 expr_ty operand;
 
@@ -4590,7 +4713,11 @@
                 if (*out == NULL) goto failed;
                 return 0;
         }
-        if (PyObject_IsInstance(obj, (PyObject*)Lambda_type)) {
+        isinstance = PyObject_IsInstance(obj, (PyObject*)Lambda_type);
+        if (isinstance == -1) {
+                return 1;
+        }
+        if (isinstance) {
                 arguments_ty args;
                 expr_ty body;
 
@@ -4622,7 +4749,11 @@
                 if (*out == NULL) goto failed;
                 return 0;
         }
-        if (PyObject_IsInstance(obj, (PyObject*)IfExp_type)) {
+        isinstance = PyObject_IsInstance(obj, (PyObject*)IfExp_type);
+        if (isinstance == -1) {
+                return 1;
+        }
+        if (isinstance) {
                 expr_ty test;
                 expr_ty body;
                 expr_ty orelse;
@@ -4667,7 +4798,11 @@
                 if (*out == NULL) goto failed;
                 return 0;
         }
-        if (PyObject_IsInstance(obj, (PyObject*)Dict_type)) {
+        isinstance = PyObject_IsInstance(obj, (PyObject*)Dict_type);
+        if (isinstance == -1) {
+                return 1;
+        }
+        if (isinstance) {
                 asdl_seq* keys;
                 asdl_seq* values;
 
@@ -4725,7 +4860,11 @@
                 if (*out == NULL) goto failed;
                 return 0;
         }
-        if (PyObject_IsInstance(obj, (PyObject*)ListComp_type)) {
+        isinstance = PyObject_IsInstance(obj, (PyObject*)ListComp_type);
+        if (isinstance == -1) {
+                return 1;
+        }
+        if (isinstance) {
                 expr_ty elt;
                 asdl_seq* generators;
 
@@ -4770,7 +4909,11 @@
                 if (*out == NULL) goto failed;
                 return 0;
         }
-        if (PyObject_IsInstance(obj, (PyObject*)GeneratorExp_type)) {
+        isinstance = PyObject_IsInstance(obj, (PyObject*)GeneratorExp_type);
+        if (isinstance == -1) {
+                return 1;
+        }
+        if (isinstance) {
                 expr_ty elt;
                 asdl_seq* generators;
 
@@ -4815,7 +4958,11 @@
                 if (*out == NULL) goto failed;
                 return 0;
         }
-        if (PyObject_IsInstance(obj, (PyObject*)Yield_type)) {
+        isinstance = PyObject_IsInstance(obj, (PyObject*)Yield_type);
+        if (isinstance == -1) {
+                return 1;
+        }
+        if (isinstance) {
                 expr_ty value;
 
                 if (PyObject_HasAttrString(obj, "value")) {
@@ -4833,7 +4980,11 @@
                 if (*out == NULL) goto failed;
                 return 0;
         }
-        if (PyObject_IsInstance(obj, (PyObject*)Compare_type)) {
+        isinstance = PyObject_IsInstance(obj, (PyObject*)Compare_type);
+        if (isinstance == -1) {
+                return 1;
+        }
+        if (isinstance) {
                 expr_ty left;
                 asdl_int_seq* ops;
                 asdl_seq* comparators;
@@ -4905,7 +5056,11 @@
                 if (*out == NULL) goto failed;
                 return 0;
         }
-        if (PyObject_IsInstance(obj, (PyObject*)Call_type)) {
+        isinstance = PyObject_IsInstance(obj, (PyObject*)Call_type);
+        if (isinstance == -1) {
+                return 1;
+        }
+        if (isinstance) {
                 expr_ty func;
                 asdl_seq* args;
                 asdl_seq* keywords;
@@ -5001,7 +5156,11 @@
                 if (*out == NULL) goto failed;
                 return 0;
         }
-        if (PyObject_IsInstance(obj, (PyObject*)Repr_type)) {
+        isinstance = PyObject_IsInstance(obj, (PyObject*)Repr_type);
+        if (isinstance == -1) {
+                return 1;
+        }
+        if (isinstance) {
                 expr_ty value;
 
                 if (PyObject_HasAttrString(obj, "value")) {
@@ -5020,7 +5179,11 @@
                 if (*out == NULL) goto failed;
                 return 0;
         }
-        if (PyObject_IsInstance(obj, (PyObject*)Num_type)) {
+        isinstance = PyObject_IsInstance(obj, (PyObject*)Num_type);
+        if (isinstance == -1) {
+                return 1;
+        }
+        if (isinstance) {
                 object n;
 
                 if (PyObject_HasAttrString(obj, "n")) {
@@ -5039,7 +5202,11 @@
                 if (*out == NULL) goto failed;
                 return 0;
         }
-        if (PyObject_IsInstance(obj, (PyObject*)Str_type)) {
+        isinstance = PyObject_IsInstance(obj, (PyObject*)Str_type);
+        if (isinstance == -1) {
+                return 1;
+        }
+        if (isinstance) {
                 string s;
 
                 if (PyObject_HasAttrString(obj, "s")) {
@@ -5058,7 +5225,11 @@
                 if (*out == NULL) goto failed;
                 return 0;
         }
-        if (PyObject_IsInstance(obj, (PyObject*)Attribute_type)) {
+        isinstance = PyObject_IsInstance(obj, (PyObject*)Attribute_type);
+        if (isinstance == -1) {
+                return 1;
+        }
+        if (isinstance) {
                 expr_ty value;
                 identifier attr;
                 expr_context_ty ctx;
@@ -5103,7 +5274,11 @@
                 if (*out == NULL) goto failed;
                 return 0;
         }
-        if (PyObject_IsInstance(obj, (PyObject*)Subscript_type)) {
+        isinstance = PyObject_IsInstance(obj, (PyObject*)Subscript_type);
+        if (isinstance == -1) {
+                return 1;
+        }
+        if (isinstance) {
                 expr_ty value;
                 slice_ty slice;
                 expr_context_ty ctx;
@@ -5148,7 +5323,11 @@
                 if (*out == NULL) goto failed;
                 return 0;
         }
-        if (PyObject_IsInstance(obj, (PyObject*)Name_type)) {
+        isinstance = PyObject_IsInstance(obj, (PyObject*)Name_type);
+        if (isinstance == -1) {
+                return 1;
+        }
+        if (isinstance) {
                 identifier id;
                 expr_context_ty ctx;
 
@@ -5180,7 +5359,11 @@
                 if (*out == NULL) goto failed;
                 return 0;
         }
-        if (PyObject_IsInstance(obj, (PyObject*)List_type)) {
+        isinstance = PyObject_IsInstance(obj, (PyObject*)List_type);
+        if (isinstance == -1) {
+                return 1;
+        }
+        if (isinstance) {
                 asdl_seq* elts;
                 expr_context_ty ctx;
 
@@ -5225,7 +5408,11 @@
                 if (*out == NULL) goto failed;
                 return 0;
         }
-        if (PyObject_IsInstance(obj, (PyObject*)Tuple_type)) {
+        isinstance = PyObject_IsInstance(obj, (PyObject*)Tuple_type);
+        if (isinstance == -1) {
+                return 1;
+        }
+        if (isinstance) {
                 asdl_seq* elts;
                 expr_context_ty ctx;
 
@@ -5283,28 +5470,53 @@
 obj2ast_expr_context(PyObject* obj, expr_context_ty* out, PyArena* arena)
 {
         PyObject* tmp = NULL;
+        int isinstance;
 
-        if (PyObject_IsInstance(obj, (PyObject*)Load_type)) {
+        isinstance = PyObject_IsInstance(obj, (PyObject *)Load_type);
+        if (isinstance == -1) {
+                return 1;
+        }
+        if (isinstance) {
                 *out = Load;
                 return 0;
         }
-        if (PyObject_IsInstance(obj, (PyObject*)Store_type)) {
+        isinstance = PyObject_IsInstance(obj, (PyObject *)Store_type);
+        if (isinstance == -1) {
+                return 1;
+        }
+        if (isinstance) {
                 *out = Store;
                 return 0;
         }
-        if (PyObject_IsInstance(obj, (PyObject*)Del_type)) {
+        isinstance = PyObject_IsInstance(obj, (PyObject *)Del_type);
+        if (isinstance == -1) {
+                return 1;
+        }
+        if (isinstance) {
                 *out = Del;
                 return 0;
         }
-        if (PyObject_IsInstance(obj, (PyObject*)AugLoad_type)) {
+        isinstance = PyObject_IsInstance(obj, (PyObject *)AugLoad_type);
+        if (isinstance == -1) {
+                return 1;
+        }
+        if (isinstance) {
                 *out = AugLoad;
                 return 0;
         }
-        if (PyObject_IsInstance(obj, (PyObject*)AugStore_type)) {
+        isinstance = PyObject_IsInstance(obj, (PyObject *)AugStore_type);
+        if (isinstance == -1) {
+                return 1;
+        }
+        if (isinstance) {
                 *out = AugStore;
                 return 0;
         }
-        if (PyObject_IsInstance(obj, (PyObject*)Param_type)) {
+        isinstance = PyObject_IsInstance(obj, (PyObject *)Param_type);
+        if (isinstance == -1) {
+                return 1;
+        }
+        if (isinstance) {
                 *out = Param;
                 return 0;
         }
@@ -5321,19 +5533,28 @@
 obj2ast_slice(PyObject* obj, slice_ty* out, PyArena* arena)
 {
         PyObject* tmp = NULL;
+        int isinstance;
 
 
         if (obj == Py_None) {
                 *out = NULL;
                 return 0;
         }
-        if (PyObject_IsInstance(obj, (PyObject*)Ellipsis_type)) {
+        isinstance = PyObject_IsInstance(obj, (PyObject*)Ellipsis_type);
+        if (isinstance == -1) {
+                return 1;
+        }
+        if (isinstance) {
 
                 *out = Ellipsis(arena);
                 if (*out == NULL) goto failed;
                 return 0;
         }
-        if (PyObject_IsInstance(obj, (PyObject*)Slice_type)) {
+        isinstance = PyObject_IsInstance(obj, (PyObject*)Slice_type);
+        if (isinstance == -1) {
+                return 1;
+        }
+        if (isinstance) {
                 expr_ty lower;
                 expr_ty upper;
                 expr_ty step;
@@ -5375,7 +5596,11 @@
                 if (*out == NULL) goto failed;
                 return 0;
         }
-        if (PyObject_IsInstance(obj, (PyObject*)ExtSlice_type)) {
+        isinstance = PyObject_IsInstance(obj, (PyObject*)ExtSlice_type);
+        if (isinstance == -1) {
+                return 1;
+        }
+        if (isinstance) {
                 asdl_seq* dims;
 
                 if (PyObject_HasAttrString(obj, "dims")) {
@@ -5407,7 +5632,11 @@
                 if (*out == NULL) goto failed;
                 return 0;
         }
-        if (PyObject_IsInstance(obj, (PyObject*)Index_type)) {
+        isinstance = PyObject_IsInstance(obj, (PyObject*)Index_type);
+        if (isinstance == -1) {
+                return 1;
+        }
+        if (isinstance) {
                 expr_ty value;
 
                 if (PyObject_HasAttrString(obj, "value")) {
@@ -5439,12 +5668,21 @@
 obj2ast_boolop(PyObject* obj, boolop_ty* out, PyArena* arena)
 {
         PyObject* tmp = NULL;
+        int isinstance;
 
-        if (PyObject_IsInstance(obj, (PyObject*)And_type)) {
+        isinstance = PyObject_IsInstance(obj, (PyObject *)And_type);
+        if (isinstance == -1) {
+                return 1;
+        }
+        if (isinstance) {
                 *out = And;
                 return 0;
         }
-        if (PyObject_IsInstance(obj, (PyObject*)Or_type)) {
+        isinstance = PyObject_IsInstance(obj, (PyObject *)Or_type);
+        if (isinstance == -1) {
+                return 1;
+        }
+        if (isinstance) {
                 *out = Or;
                 return 0;
         }
@@ -5461,52 +5699,101 @@
 obj2ast_operator(PyObject* obj, operator_ty* out, PyArena* arena)
 {
         PyObject* tmp = NULL;
+        int isinstance;
 
-        if (PyObject_IsInstance(obj, (PyObject*)Add_type)) {
+        isinstance = PyObject_IsInstance(obj, (PyObject *)Add_type);
+        if (isinstance == -1) {
+                return 1;
+        }
+        if (isinstance) {
                 *out = Add;
                 return 0;
         }
-        if (PyObject_IsInstance(obj, (PyObject*)Sub_type)) {
+        isinstance = PyObject_IsInstance(obj, (PyObject *)Sub_type);
+        if (isinstance == -1) {
+                return 1;
+        }
+        if (isinstance) {
                 *out = Sub;
                 return 0;
         }
-        if (PyObject_IsInstance(obj, (PyObject*)Mult_type)) {
+        isinstance = PyObject_IsInstance(obj, (PyObject *)Mult_type);
+        if (isinstance == -1) {
+                return 1;
+        }
+        if (isinstance) {
                 *out = Mult;
                 return 0;
         }
-        if (PyObject_IsInstance(obj, (PyObject*)Div_type)) {
+        isinstance = PyObject_IsInstance(obj, (PyObject *)Div_type);
+        if (isinstance == -1) {
+                return 1;
+        }
+        if (isinstance) {
                 *out = Div;
                 return 0;
         }
-        if (PyObject_IsInstance(obj, (PyObject*)Mod_type)) {
+        isinstance = PyObject_IsInstance(obj, (PyObject *)Mod_type);
+        if (isinstance == -1) {
+                return 1;
+        }
+        if (isinstance) {
                 *out = Mod;
                 return 0;
         }
-        if (PyObject_IsInstance(obj, (PyObject*)Pow_type)) {
+        isinstance = PyObject_IsInstance(obj, (PyObject *)Pow_type);
+        if (isinstance == -1) {
+                return 1;
+        }
+        if (isinstance) {
                 *out = Pow;
                 return 0;
         }
-        if (PyObject_IsInstance(obj, (PyObject*)LShift_type)) {
+        isinstance = PyObject_IsInstance(obj, (PyObject *)LShift_type);
+        if (isinstance == -1) {
+                return 1;
+        }
+        if (isinstance) {
                 *out = LShift;
                 return 0;
         }
-        if (PyObject_IsInstance(obj, (PyObject*)RShift_type)) {
+        isinstance = PyObject_IsInstance(obj, (PyObject *)RShift_type);
+        if (isinstance == -1) {
+                return 1;
+        }
+        if (isinstance) {
                 *out = RShift;
                 return 0;
         }
-        if (PyObject_IsInstance(obj, (PyObject*)BitOr_type)) {
+        isinstance = PyObject_IsInstance(obj, (PyObject *)BitOr_type);
+        if (isinstance == -1) {
+                return 1;
+        }
+        if (isinstance) {
                 *out = BitOr;
                 return 0;
         }
-        if (PyObject_IsInstance(obj, (PyObject*)BitXor_type)) {
+        isinstance = PyObject_IsInstance(obj, (PyObject *)BitXor_type);
+        if (isinstance == -1) {
+                return 1;
+        }
+        if (isinstance) {
                 *out = BitXor;
                 return 0;
         }
-        if (PyObject_IsInstance(obj, (PyObject*)BitAnd_type)) {
+        isinstance = PyObject_IsInstance(obj, (PyObject *)BitAnd_type);
+        if (isinstance == -1) {
+                return 1;
+        }
+        if (isinstance) {
                 *out = BitAnd;
                 return 0;
         }
-        if (PyObject_IsInstance(obj, (PyObject*)FloorDiv_type)) {
+        isinstance = PyObject_IsInstance(obj, (PyObject *)FloorDiv_type);
+        if (isinstance == -1) {
+                return 1;
+        }
+        if (isinstance) {
                 *out = FloorDiv;
                 return 0;
         }
@@ -5523,20 +5810,37 @@
 obj2ast_unaryop(PyObject* obj, unaryop_ty* out, PyArena* arena)
 {
         PyObject* tmp = NULL;
+        int isinstance;
 
-        if (PyObject_IsInstance(obj, (PyObject*)Invert_type)) {
+        isinstance = PyObject_IsInstance(obj, (PyObject *)Invert_type);
+        if (isinstance == -1) {
+                return 1;
+        }
+        if (isinstance) {
                 *out = Invert;
                 return 0;
         }
-        if (PyObject_IsInstance(obj, (PyObject*)Not_type)) {
+        isinstance = PyObject_IsInstance(obj, (PyObject *)Not_type);
+        if (isinstance == -1) {
+                return 1;
+        }
+        if (isinstance) {
                 *out = Not;
                 return 0;
         }
-        if (PyObject_IsInstance(obj, (PyObject*)UAdd_type)) {
+        isinstance = PyObject_IsInstance(obj, (PyObject *)UAdd_type);
+        if (isinstance == -1) {
+                return 1;
+        }
+        if (isinstance) {
                 *out = UAdd;
                 return 0;
         }
-        if (PyObject_IsInstance(obj, (PyObject*)USub_type)) {
+        isinstance = PyObject_IsInstance(obj, (PyObject *)USub_type);
+        if (isinstance == -1) {
+                return 1;
+        }
+        if (isinstance) {
                 *out = USub;
                 return 0;
         }
@@ -5553,44 +5857,85 @@
 obj2ast_cmpop(PyObject* obj, cmpop_ty* out, PyArena* arena)
 {
         PyObject* tmp = NULL;
+        int isinstance;
 
-        if (PyObject_IsInstance(obj, (PyObject*)Eq_type)) {
+        isinstance = PyObject_IsInstance(obj, (PyObject *)Eq_type);
+        if (isinstance == -1) {
+                return 1;
+        }
+        if (isinstance) {
                 *out = Eq;
                 return 0;
         }
-        if (PyObject_IsInstance(obj, (PyObject*)NotEq_type)) {
+        isinstance = PyObject_IsInstance(obj, (PyObject *)NotEq_type);
+        if (isinstance == -1) {
+                return 1;
+        }
+        if (isinstance) {
                 *out = NotEq;
                 return 0;
         }
-        if (PyObject_IsInstance(obj, (PyObject*)Lt_type)) {
+        isinstance = PyObject_IsInstance(obj, (PyObject *)Lt_type);
+        if (isinstance == -1) {
+                return 1;
+        }
+        if (isinstance) {
                 *out = Lt;
                 return 0;
         }
-        if (PyObject_IsInstance(obj, (PyObject*)LtE_type)) {
+        isinstance = PyObject_IsInstance(obj, (PyObject *)LtE_type);
+        if (isinstance == -1) {
+                return 1;
+        }
+        if (isinstance) {
                 *out = LtE;
                 return 0;
         }
-        if (PyObject_IsInstance(obj, (PyObject*)Gt_type)) {
+        isinstance = PyObject_IsInstance(obj, (PyObject *)Gt_type);
+        if (isinstance == -1) {
+                return 1;
+        }
+        if (isinstance) {
                 *out = Gt;
                 return 0;
         }
-        if (PyObject_IsInstance(obj, (PyObject*)GtE_type)) {
+        isinstance = PyObject_IsInstance(obj, (PyObject *)GtE_type);
+        if (isinstance == -1) {
+                return 1;
+        }
+        if (isinstance) {
                 *out = GtE;
                 return 0;
         }
-        if (PyObject_IsInstance(obj, (PyObject*)Is_type)) {
+        isinstance = PyObject_IsInstance(obj, (PyObject *)Is_type);
+        if (isinstance == -1) {
+                return 1;
+        }
+        if (isinstance) {
                 *out = Is;
                 return 0;
         }
-        if (PyObject_IsInstance(obj, (PyObject*)IsNot_type)) {
+        isinstance = PyObject_IsInstance(obj, (PyObject *)IsNot_type);
+        if (isinstance == -1) {
+                return 1;
+        }
+        if (isinstance) {
                 *out = IsNot;
                 return 0;
         }
-        if (PyObject_IsInstance(obj, (PyObject*)In_type)) {
+        isinstance = PyObject_IsInstance(obj, (PyObject *)In_type);
+        if (isinstance == -1) {
+                return 1;
+        }
+        if (isinstance) {
                 *out = In;
                 return 0;
         }
-        if (PyObject_IsInstance(obj, (PyObject*)NotIn_type)) {
+        isinstance = PyObject_IsInstance(obj, (PyObject *)NotIn_type);
+        if (isinstance == -1) {
+                return 1;
+        }
+        if (isinstance) {
                 *out = NotIn;
                 return 0;
         }
@@ -5671,6 +6016,7 @@
 obj2ast_excepthandler(PyObject* obj, excepthandler_ty* out, PyArena* arena)
 {
         PyObject* tmp = NULL;
+        int isinstance;
 
         int lineno;
         int col_offset;
@@ -5703,7 +6049,11 @@
                 PyErr_SetString(PyExc_TypeError, "required field \"col_offset\" missing from excepthandler");
                 return 1;
         }
-        if (PyObject_IsInstance(obj, (PyObject*)ExceptHandler_type)) {
+        isinstance = PyObject_IsInstance(obj, (PyObject*)ExceptHandler_type);
+        if (isinstance == -1) {
+                return 1;
+        }
+        if (isinstance) {
                 expr_ty type;
                 expr_ty name;
                 asdl_seq* body;
@@ -6104,11 +6454,15 @@
     PyObject *req_type[] = {(PyObject*)Module_type, (PyObject*)Expression_type,
                             (PyObject*)Interactive_type};
     char *req_name[] = {"Module", "Expression", "Interactive"};
+    int isinstance;
     assert(0 <= mode && mode <= 2);
 
     init_types();
 
-    if (!PyObject_IsInstance(ast, req_type[mode])) {
+    isinstance = PyObject_IsInstance(ast, req_type[mode]);
+    if (isinstance == -1)
+        return NULL;
+    if (!isinstance) {
         PyErr_Format(PyExc_TypeError, "expected %s node, got %.400s",
                      req_name[mode], Py_TYPE(ast)->tp_name);
         return NULL;

Modified: python/trunk/Python/bltinmodule.c
==============================================================================
--- python/trunk/Python/bltinmodule.c	(original)
+++ python/trunk/Python/bltinmodule.c	Sun Dec 13 01:54:15 2009
@@ -466,6 +466,7 @@
 	int mode = -1;
 	int dont_inherit = 0;
 	int supplied_flags = 0;
+	int is_ast;
 	PyCompilerFlags cf;
 	PyObject *result = NULL, *cmd, *tmp = NULL;
 	Py_ssize_t length;
@@ -505,7 +506,10 @@
 		return NULL;
 	}
 
-	if (PyAST_Check(cmd)) {
+	is_ast = PyAST_Check(cmd);
+	if (is_ast == -1)
+		return NULL;
+	if (is_ast) {
 		if (supplied_flags & PyCF_ONLY_AST) {
 			Py_INCREF(cmd);
 			result = cmd;
_______________________________________________
Python-checkins mailing list
Python-checkins@python.org
http://mail.python.org/mailman/listinfo/python-checkins

From SRS0=T7r3=H6=python.org=python-checkins-bounces+skip=pobox.com@bounce2.pobox.com  Sat Dec 12 14:03:02 2009
X-VM-v5-Data: ([nil nil nil nil nil nil nil nil nil]
	["373" "Saturday" "12" "December" "2009" "15:01:47" "-0500" "antoine.pitrou" "python-checkins@python.org" nil "16" "[Python-checkins] r76767 - sandbox/trunk/dbm_sqlite-3783" "^From:" nil nil "12" nil nil nil nil nil nil nil nil nil nil]
	nil)
Delivered-To: skip.montanaro@gmail.com
Received: from pop.gmail.com
 by montanaro.dyndns.org with POP3 (fetchmail-6.3.11)
 for <skip@localhost> (single-drop); Sat, 12 Dec 2009 14:03:02 -0600 (CST)
Received: by 10.216.0.80 with SMTP id 58cs39753wea;
 Sat, 12 Dec 2009 12:01:50 -0800 (PST)
Received: by 10.224.109.141 with SMTP id j13mr1818714qap.84.1260648109242;
 Sat, 12 Dec 2009 12:01:49 -0800 (PST)
Return-Path: <SRS0=T7r3=H6=python.org=python-checkins-bounces+skip=pobox.com@bounce2.pobox.com>
Received: from gold.pobox.com (gold.pobox.com [208.72.237.26])
 by mx.google.com with ESMTP id 8si5818694qyk.22.2009.12.12.12.01.48;
 Sat, 12 Dec 2009 12:01:49 -0800 (PST)
Received-SPF: pass (google.com: domain of
 SRS0=T7r3=H6=python.org=python-checkins-bounces+skip=pobox.com@bounce2.pobox.com
 designates 208.72.237.26 as permitted sender) client-ip=208.72.237.26; 
Authentication-Results: mx.google.com; spf=pass (google.com: domain of
 SRS0=T7r3=H6=python.org=python-checkins-bounces+skip=pobox.com@bounce2.pobox.com
 designates 208.72.237.26 as permitted sender)
 smtp.mail=SRS0=T7r3=H6=python.org=python-checkins-bounces+skip=pobox.com@bounce2.pobox.com
Received: from gold.pobox.com (localhost [127.0.0.1])
 by gold.pobox.com (Postfix) with ESMTP id 8113C41149B
 for <skip.montanaro@gmail.com>; Sat, 12 Dec 2009 15:01:48 -0500 (EST)
Delivered-To: skip@pobox.com
X-Pobox-Orig-Sender: <python-checkins-bounces+skip=pobox.com@python.org>
X-Pobox-Delivery-ID: 2E4DFDBA-E759-11DE-88F2-9192DCB45586-00107187!gold.pobox.com
X-Original-To: python-checkins@python.org
x-pobox-client-address: 82.94.164.166
x-pobox-client-name: mail.python.org
Received: from mail.python.org (mail.python.org [82.94.164.166]) by
 gold.pobox.com (Postfix) with ESMTP id F22E5411496 for <skip@pobox.com>; Sat,
 12 Dec 2009 15:01:47 -0500 (EST)
Received: from albatross.python.org (localhost.localdomain [127.0.0.1]) by
 mail.python.org (Postfix) with ESMTP id 89C29F000 for <skip@pobox.com>; Sat,
 12 Dec 2009 21:01:47 +0100 (CET)
Authentication-Results: mail.python.org; dkim=permerror (bad format)
 header.i=unknown
Delivered-To: python-checkins@mail.python.org
Received: from albatross.python.org (localhost.localdomain [127.0.0.1]) by
 mail.python.org (Postfix) with ESMTP id 16028D55F for
 <python-checkins@python.org>; Sat, 12 Dec 2009 21:01:38 +0100 (CET)
Authentication-Results: mail.python.org; dkim=permerror (bad format)
 header.i=unknown
X-Spam-Status: OK 0.001
X-Spam-Evidence: '*H*': 1.00; '*S*': 0.00; 'skip:/ 20': 0.05; 'author:':
 0.09; 'log:': 0.09; 'received:82.94.164.162': 0.09;
 'received:dinsdale.python.org': 0.09; 'revision:': 0.09; 'subject:trunk':
 0.09; 'received:82.94': 0.10; 'received:82.94.164': 0.10;
 'from:addr:python.org': 0.11; 'received:python.org': 0.15; 'added:': 0.16;
 'to:addr:python- checkins': 0.16; 'received:org': 0.35; 'date:': 0.36;
 'received:82': 0.36; 'subject:-': 0.37; 'message-id:invalid': 0.88; 'sat':
 0.91
Received: from localhost.localdomain (HELO mail.python.org) (127.0.0.1) by
 albatross.python.org with SMTP; 12 Dec 2009 21:01:38 +0100
Received: from dinsdale.python.org (dinsdale.python.org [82.94.164.162]) by
 mail.python.org (Postfix) with ESMTP for <python-checkins@python.org>; Sat,
 12 Dec 2009 21:01:38 +0100 (CET)
MIME-Version: 1.0
X-BeenThere: python-checkins@python.org
X-Mailman-Version: 2.1.12
Precedence: list
List-Id: Check-in messages from the Python maintainers
 <python-checkins.python.org>
List-Unsubscribe: <http://mail.python.org/mailman/options/python-checkins>,
 <mailto:python-checkins-request@python.org?subject=unsubscribe>
List-Archive: <http://mail.python.org/pipermail/python-checkins>
List-Post: <mailto:python-checkins@python.org>
List-Help: <mailto:python-checkins-request@python.org?subject=help>
List-Subscribe: <http://mail.python.org/mailman/listinfo/python-checkins>,
 <mailto:python-checkins-request@python.org?subject=subscribe>
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: 7bit
Errors-To: python-checkins-bounces+skip=pobox.com@python.org
Message-Id: <20091212200147.F22E5411496@gold.pobox.com>
X-Spambayes-Evidence: '*H*': 1.00; '*S*': 0.00; 'skip:_ 40': 0.04;
 'author:': 0.09; 'branch': 0.09; 'from:addr:python.org': 0.09; 'log:': 0.09;
 'revision:': 0.09; 'sat': 0.09; 'skip:s 30': 0.09; 'subject:checkins': 0.09;
 'added:': 0.16; 'dec': 0.16; 'email name:python-checkins': 0.16;
 'message-id:@gold.pobox.com': 0.16; 'received:82.94.164.162': 0.16;
 'received:dinsdale.python.org': 0.16;
 'sender:addr:python-checkins-bounces+skip=pobox.com': 0.16; 'skip:/ 20': 0.16;
 'subject:trunk': 0.16; 'to:addr:python-checkins': 0.16;
 'url:python-checkins': 0.16; 'email addr:python.org': 0.17; 'date:': 0.24;
 'subject:Python': 0.24; 'header:Received:10': 0.28; 'list': 0.28;
 'mailing': 0.30; 'subject:] ': 0.32; 'url:org': 0.32; 'subject:[': 0.37;
 'subject: - ': 0.39; 'url:python': 0.39; 'subject:/': 0.61;
 'sender:addr:python.org': 0.68; 'proper': 0.84
From: antoine.pitrou <python-checkins@python.org>
Sender: python-checkins-bounces+skip=pobox.com@python.org
To: python-checkins@python.org
Subject: [Python-checkins] r76767 - sandbox/trunk/dbm_sqlite-3783
Date: Sat, 12 Dec 2009 15:01:47 -0500 (EST)
X-Spambayes-Classification: ham; 0.00

Author: antoine.pitrou
Date: Sat Dec 12 21:01:37 2009
New Revision: 76767

Log:
Create a proper branch for dbm.sqlite



Added:
   sandbox/trunk/dbm_sqlite-3783/
      - copied from r76766, /python/branches/py3k/
_______________________________________________
Python-checkins mailing list
Python-checkins@python.org
http://mail.python.org/mailman/listinfo/python-checkins

From SRS0=T7r3=H6=python.org=python-checkins-bounces+skip=pobox.com@bounce2.pobox.com  Sat Dec 12 14:09:27 2009
X-VM-v5-Data: ([nil nil nil nil nil nil nil nil nil]
	["433" "Saturday" "12" "December" "2009" "15:09:18" "-0500" "antoine.pitrou" "python-checkins@python.org" nil "15" "[Python-checkins] r76768 - sandbox/trunk/dbm_sqlite-3783" "^From:" nil nil "12" nil nil nil nil nil nil nil nil nil nil]
	nil)
Delivered-To: skip.montanaro@gmail.com
Received: from pop.gmail.com
 by montanaro.dyndns.org with POP3 (fetchmail-6.3.11)
 for <skip@localhost> (single-drop); Sat, 12 Dec 2009 14:09:27 -0600 (CST)
Received: by 10.216.0.80 with SMTP id 58cs40070wea;
 Sat, 12 Dec 2009 12:09:21 -0800 (PST)
Received: by 10.224.80.94 with SMTP id s30mr1804844qak.214.1260648560453;
 Sat, 12 Dec 2009 12:09:20 -0800 (PST)
Return-Path: <SRS0=T7r3=H6=python.org=python-checkins-bounces+skip=pobox.com@bounce2.pobox.com>
Received: from indigo.pobox.com (indigo.pobox.com [64.74.157.52])
 by mx.google.com with ESMTP id 26si7961879qwa.30.2009.12.12.12.09.20;
 Sat, 12 Dec 2009 12:09:20 -0800 (PST)
Received-SPF: pass (google.com: domain of
 SRS0=T7r3=H6=python.org=python-checkins-bounces+skip=pobox.com@bounce2.pobox.com
 designates 64.74.157.52 as permitted sender) client-ip=64.74.157.52; 
Authentication-Results: mx.google.com; spf=pass (google.com: domain of
 SRS0=T7r3=H6=python.org=python-checkins-bounces+skip=pobox.com@bounce2.pobox.com
 designates 64.74.157.52 as permitted sender)
 smtp.mail=SRS0=T7r3=H6=python.org=python-checkins-bounces+skip=pobox.com@bounce2.pobox.com
Received: from indigo.pobox.com (localhost [127.0.0.1])
 by indigo.pobox.com (Postfix) with ESMTP id DAD2C209039
 for <skip.montanaro@gmail.com>; Sat, 12 Dec 2009 15:09:19 -0500 (EST)
Delivered-To: skip@pobox.com
X-Pobox-Orig-Sender: <python-checkins-bounces+skip=pobox.com@python.org>
X-Pobox-Delivery-ID: 3B5F601A-E75A-11DE-BD12-F6D115878676-00107187!indigo.pobox.com
X-Original-To: python-checkins@python.org
x-pobox-client-address: 82.94.164.166
x-pobox-client-name: mail.python.org
Received: from mail.python.org (mail.python.org [82.94.164.166]) by
 indigo.pobox.com (Postfix) with ESMTP id 76CEF209048 for <skip@pobox.com>;
 Sat, 12 Dec 2009 15:09:18 -0500 (EST)
Received: from albatross.python.org (localhost.localdomain [127.0.0.1]) by
 mail.python.org (Postfix) with ESMTP id 3D94BEF83 for <skip@pobox.com>; Sat,
 12 Dec 2009 21:09:18 +0100 (CET)
Authentication-Results: mail.python.org; dkim=permerror (bad format)
 header.i=unknown
Delivered-To: python-checkins@mail.python.org
Received: from albatross.python.org (localhost.localdomain [127.0.0.1]) by
 mail.python.org (Postfix) with ESMTP id 868FAEF13 for
 <python-checkins@python.org>; Sat, 12 Dec 2009 21:09:08 +0100 (CET)
Authentication-Results: mail.python.org; dkim=permerror (bad format)
 header.i=unknown
X-Spam-Status: OK 0.004
X-Spam-Evidence: '*H*': 0.99; '*S*': 0.00; 'modified:': 0.07; 'author:':
 0.09; 'log:': 0.09; 'received:82.94.164.162': 0.09;
 'received:dinsdale.python.org': 0.09; 'revision:': 0.09; 'subject:trunk':
 0.09; 'received:82.94': 0.10; 'received:82.94.164': 0.10;
 'from:addr:python.org': 0.11; 'received:python.org': 0.15; 'merge': 0.16;
 'to:addr:python- checkins': 0.16; 'received:org': 0.35; 'date:': 0.36;
 'received:82': 0.36; 'subject:-': 0.37; 'via': 0.62; 'tracking': 0.82;
 'message-id:invalid': 0.88; 'sat': 0.91
Received: from localhost.localdomain (HELO mail.python.org) (127.0.0.1) by
 albatross.python.org with SMTP; 12 Dec 2009 21:09:08 +0100
Received: from dinsdale.python.org (dinsdale.python.org [82.94.164.162]) by
 mail.python.org (Postfix) with ESMTP for <python-checkins@python.org>; Sat,
 12 Dec 2009 21:09:08 +0100 (CET)
MIME-Version: 1.0
X-BeenThere: python-checkins@python.org
X-Mailman-Version: 2.1.12
Precedence: list
List-Id: Check-in messages from the Python maintainers
 <python-checkins.python.org>
List-Unsubscribe: <http://mail.python.org/mailman/options/python-checkins>,
 <mailto:python-checkins-request@python.org?subject=unsubscribe>
List-Archive: <http://mail.python.org/pipermail/python-checkins>
List-Post: <mailto:python-checkins@python.org>
List-Help: <mailto:python-checkins-request@python.org?subject=help>
List-Subscribe: <http://mail.python.org/mailman/listinfo/python-checkins>,
 <mailto:python-checkins-request@python.org?subject=subscribe>
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: 7bit
Errors-To: python-checkins-bounces+skip=pobox.com@python.org
Message-Id: <20091212200918.76CEF209048@indigo.pobox.com>
X-Spambayes-Evidence: '*H*': 1.00; '*S*': 0.00; 'skip:_ 40': 0.04;
 'author:': 0.09; 'from:addr:python.org': 0.09; 'log:': 0.09; 'merge': 0.09;
 'modified:': 0.09; 'revision:': 0.09; 'sat': 0.09; 'skip:s 30': 0.09;
 'subject:checkins': 0.09; 'dec': 0.16; 'email name:python-checkins': 0.16;
 'initialized': 0.16; 'received:82.94.164.162': 0.16;
 'received:dinsdale.python.org': 0.16;
 'sender:addr:python-checkins-bounces+skip=pobox.com': 0.16; 'skip:s 50': 0.16;
 'subject:trunk': 0.16; 'to:addr:python-checkins': 0.16;
 'url:python-checkins': 0.16; 'email addr:python.org': 0.17; 'date:': 0.24;
 'subject:Python': 0.24; 'header:Received:10': 0.28; 'list': 0.28;
 'mailing': 0.30; 'subject:] ': 0.32; 'url:org': 0.32; 'subject:[': 0.37;
 'subject: - ': 0.39; 'received:64.74.157.52': 0.39; 'url:python': 0.39;
 'subject:/': 0.61; 'sender:addr:python.org': 0.68
From: antoine.pitrou <python-checkins@python.org>
Sender: python-checkins-bounces+skip=pobox.com@python.org
To: python-checkins@python.org
Subject: [Python-checkins] r76768 - sandbox/trunk/dbm_sqlite-3783
Date: Sat, 12 Dec 2009 15:09:18 -0500 (EST)
X-Spambayes-Classification: ham; 0.00

Author: antoine.pitrou
Date: Sat Dec 12 21:09:08 2009
New Revision: 76768

Log:
Initialized merge tracking via "svnmerge" with revisions "1-76766" from 
svn+ssh://pythondev@svn.python.org/python/branches/py3k


Modified:
   sandbox/trunk/dbm_sqlite-3783/   (props changed)
_______________________________________________
Python-checkins mailing list
Python-checkins@python.org
http://mail.python.org/mailman/listinfo/python-checkins

From SRS0=qwR4=H5=python.org=python-checkins-bounces+skip=pobox.com@bounce2.pobox.com  Fri Dec 11 11:29:56 2009
X-VM-v5-Data: ([nil nil nil nil nil nil nil nil nil]
	["12139" "Friday" "11" "December" "2009" "12:29:44" "-0500" "mark.dickinson" "python-checkins@python.org" nil "332" "[Python-checkins] r76755 - in python/trunk: Doc/library/math.rst Lib/test/math_testcases.txt Lib/test/test_math.py Misc/NEWS Modules/mathmodule.c" "^From:" nil nil "12" nil nil nil nil nil nil nil nil nil nil]
	nil)
Delivered-To: skip.montanaro@gmail.com
Received: from pop.gmail.com
 by montanaro.dyndns.org with POP3 (fetchmail-6.3.11)
 for <skip@localhost> (single-drop); Fri, 11 Dec 2009 11:29:56 -0600 (CST)
Received: by 10.216.0.80 with SMTP id 58cs102948wea;
 Fri, 11 Dec 2009 09:29:52 -0800 (PST)
Received: by 10.229.19.82 with SMTP id z18mr921934qca.9.1260552590840;
 Fri, 11 Dec 2009 09:29:50 -0800 (PST)
Return-Path: <SRS0=qwR4=H5=python.org=python-checkins-bounces+skip=pobox.com@bounce2.pobox.com>
Received: from sienna.pobox.com (sienna.pobox.com [64.74.157.51])
 by mx.google.com with ESMTP id 30si3996872qyk.33.2009.12.11.09.29.50;
 Fri, 11 Dec 2009 09:29:50 -0800 (PST)
Received-SPF: pass (google.com: domain of
 SRS0=qwR4=H5=python.org=python-checkins-bounces+skip=pobox.com@bounce2.pobox.com
 designates 64.74.157.51 as permitted sender) client-ip=64.74.157.51; 
Authentication-Results: mx.google.com; spf=pass (google.com: domain of
 SRS0=qwR4=H5=python.org=python-checkins-bounces+skip=pobox.com@bounce2.pobox.com
 designates 64.74.157.51 as permitted sender)
 smtp.mail=SRS0=qwR4=H5=python.org=python-checkins-bounces+skip=pobox.com@bounce2.pobox.com
Received: from sienna.pobox.com (localhost [127.0.0.1])
 by sienna.pobox.com (Postfix) with ESMTP id CF88320870E
 for <skip.montanaro@gmail.com>; Fri, 11 Dec 2009 12:29:49 -0500 (EST)
Delivered-To: skip@pobox.com
X-Pobox-Orig-Sender: <python-checkins-bounces+skip=pobox.com@python.org>
X-Pobox-Delivery-ID: C8786B80-E67A-11DE-973F-870F29B98980-00107187!sienna.pobox.com
X-Original-To: python-checkins@python.org
x-pobox-client-address: 82.94.164.166
x-pobox-client-name: mail.python.org
Received: from mail.python.org (mail.python.org [82.94.164.166]) by
 sienna.pobox.com (Postfix) with ESMTP id B2DE6208753 for <skip@pobox.com>;
 Fri, 11 Dec 2009 12:29:44 -0500 (EST)
Received: from albatross.python.org (localhost.localdomain [127.0.0.1]) by
 mail.python.org (Postfix) with ESMTP id AF19CEE91 for <skip@pobox.com>; Fri,
 11 Dec 2009 18:29:43 +0100 (CET)
Authentication-Results: mail.python.org; dkim=permerror (bad format)
 header.i=unknown
Delivered-To: python-checkins@mail.python.org
Received: from albatross.python.org (localhost.localdomain [127.0.0.1]) by
 mail.python.org (Postfix) with ESMTP id 69B71EA1D for
 <python-checkins@python.org>; Fri, 11 Dec 2009 18:29:33 +0100 (CET)
Authentication-Results: mail.python.org; dkim=permerror (bad format)
 header.i=unknown
X-Spam-Status: OK 0.032
X-Spam-Evidence: '*H*': 0.94; '*S*': 0.00; 'def': 0.02; 'math': 0.03;
 'else:': 0.05; 'modified:': 0.07; '(original)': 0.09; 'argument': 0.09;
 'author:': 0.09; 'elif': 0.09; 'log:': 0.09; 'none:': 0.09;
 'received:82.94.164.162': 0.09; 'received:dinsdale.python.org': 0.09;
 'revision:': 0.09; 'subject:library': 0.09; 'subject:test': 0.09;
 'subject:trunk': 0.09; 'subject:python': 0.10; 'received:82.94': 0.10;
 'received:82.94.164': 0.10; 'from:addr:python.org': 0.11; "skip:' 10": 0.14;
 'function': 0.15; 'received:python.org': 0.15; 'none': 0.15; '+def': 0.16;
 '---------': 0.16; '170': 0.16; 'expected:': 0.16; 'floats': 0.16;
 'functions.': 0.16; 'inputs': 0.16; 'integer': 0.16; 'module.': 0.16;
 'platforms.': 0.16; 'skip:+ 50': 0.16; 'str)': 0.16; 'subject:Lib': 0.16;
 'to:addr:python-checkins': 0.16; 'tuple': 0.16; 'skip:u 20': 0.20; 'error.':
 0.22; 'error': 0.27; 'remaining': 0.29; 'else': 0.29; 'expected': 0.29;
 'platform': 0.29; 'skip:f 20': 0.30; 'default': 0.31; 'probably': 0.31;
 'issue': 0.32; 'values': 0.32; 'it.': 0.33; 'subject:: ': 0.34; 'file': 0.35; 
 'received:org': 0.35; 'except': 0.35; 'raise': 0.36; '+++': 0.36; '2.5':
 0.36; 'skip:7 10': 0.36; 'got': 0.36; 'date:': 0.36; 'received:82': 0.36;
 'test': 0.36; 'skip:" 10': 0.36; 'float': 0.37; 'integral': 0.37; 'skip:p
 30': 0.37; 'between': 0.37; 'skip:( 20': 0.37; 'before': 0.37; 'since': 0.38; 
 'url:org': 0.39; 'works': 0.39; 'different': 0.40; 'use': 0.40; 'success':
 0.60; 'gives': 0.60; '2000': 0.61; 'skip:( 30': 0.61; 'value': 0.61;
 'continue': 0.61; 'worth': 0.63; 'skip:m 20': 0.63; 'skip:1 10': 0.64;
 'skip:l 20': 0.65; 'skip:0 10': 0.65; '0.5': 0.66; 'consistent': 0.66;
 'fraction': 0.66; 'platforms': 0.66; 'represented': 0.66; 'throwing': 0.66;
 'project.': 0.67; 'range': 0.68; 'skip:+ 10': 0.72; 'skip:{ 10': 0.74;
 'largest': 0.75; 'accurate': 0.78; 'negative': 0.78; 'deals': 0.80;
 'accuracy': 0.84; '"for': 0.84; '2.7': 0.84; '3.5': 0.84; 'below;': 0.84;
 'cases.': 0.84; 'skip:1 20': 0.84; 'skip:3 20': 0.84; 'skip:6 20': 0.84;
 'term,': 0.84; 'message-id:invalid': 0.88; '0.0': 0.91; 'equal': 0.91;
 'formula': 0.91; 'permitted': 0.91; 'skip:( 40': 0.91; 'skip:3 10': 0.91;
 'subject:NEWS': 0.91; '1.5': 0.93; 'criteria': 0.93; 'homepage': 0.95
Received: from localhost.localdomain (HELO mail.python.org) (127.0.0.1) by
 albatross.python.org with SMTP; 11 Dec 2009 18:29:33 +0100
Received: from dinsdale.python.org (dinsdale.python.org [82.94.164.162]) by
 mail.python.org (Postfix) with ESMTP for <python-checkins@python.org>; Fri,
 11 Dec 2009 18:29:33 +0100 (CET)
MIME-Version: 1.0
X-BeenThere: python-checkins@python.org
X-Mailman-Version: 2.1.12
Precedence: list
List-Id: Check-in messages from the Python maintainers
 <python-checkins.python.org>
List-Unsubscribe: <http://mail.python.org/mailman/options/python-checkins>,
 <mailto:python-checkins-request@python.org?subject=unsubscribe>
List-Archive: <http://mail.python.org/pipermail/python-checkins>
List-Post: <mailto:python-checkins@python.org>
List-Help: <mailto:python-checkins-request@python.org?subject=help>
List-Subscribe: <http://mail.python.org/mailman/listinfo/python-checkins>,
 <mailto:python-checkins-request@python.org?subject=subscribe>
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: 7bit
Errors-To: python-checkins-bounces+skip=pobox.com@python.org
Message-Id: <20091211172944.B2DE6208753@sienna.pobox.com>
X-Spambayes-Evidence: '*H*': 1.00; '*S*': 0.00; 'skip:_ 40': 0.04;
 'field': 0.05; 'skip:- 10': 0.05; 'case': 0.07; 'default': 0.07; 'error': 0.07;
 'result': 0.07; 'skip:" 20': 0.07; 'skip:_ 10': 0.07; '"the': 0.09;
 '+++': 0.09; 'author:': 0.09; 'def': 0.09; 'double': 0.09;
 'from:addr:python.org': 0.09; 'log:': 0.09; 'modified:': 0.09;
 'positive': 0.09; 'project.': 0.09; 'returns': 0.09; 'revision:': 0.09;
 "skip:' 10": 0.09; 'skip:+ 10': 0.09; 'subject:checkins': 0.09;
 '(original)': 0.16; '+..': 0.16; '+def': 0.16; '+static': 0.16; 'across': 0.16;
 'argument': 0.16; 'arguments': 0.16; 'arguments,': 0.16; 'dec': 0.16;
 'email name:python-checkins': 0.16; 'equal': 0.16; 'error.': 0.16;
 'except': 0.16; 'float': 0.16; 'functions': 0.16; 'half': 0.16; 'inputs': 0.16;
 'integral': 0.16; 'math': 0.16; 'negative': 0.16; 'raise': 0.16;
 'received:82.94.164.162': 0.16; 'received:dinsdale.python.org': 0.16;
 'remaining': 0.16; 'sender:addr:python-checkins-bounces+skip=pobox.com': 0.16;
 'skip:( 30': 0.16; 'skip:+ 50': 0.16; 'skip:= 70': 0.16; 'skip:p 30': 0.16;
 'subject:test': 0.16; 'subject:trunk': 0.16; 'to:addr:python-checkins': 0.16;
 'url:python-checkins': 0.16; '{}; ': 0.16; 'email addr:python.org': 0.17;
 'save': 0.17; 'between': 0.20; 'set': 0.20; 'skip:- 20': 0.20; 'could': 0.23;
 'subject:: ': 0.24; '---': 0.24; 'close': 0.24; 'date:': 0.24; 'issue': 0.24;
 'large': 0.24; 'outside': 0.24; 'subject:Python': 0.24; 'whether': 0.24;
 'within': 0.24; 'works': 0.24; 'way': 0.27; 'where': 0.28;
 'header:Received:10': 0.28; 'list': 0.28; 'since': 0.30; 'mailing': 0.30;
 'skip:( 10': 0.30; 'skip:( 20': 0.31; 'small': 0.31; '"this': 0.32;
 'directly': 0.32; 'else': 0.32; 'function': 0.32; 'given': 0.32;
 'necessary': 0.32; 'probably': 0.32; 'results': 0.32; 'skip:( 40': 0.32;
 'skip:2 10': 0.32; 'skip:f 20': 0.32; 'skip:" 10': 0.32; 'subject:] ': 0.32;
 'url:org': 0.32; 'they': 0.34; 'add': 0.34; 'how': 0.35; 'skip:1 10': 0.37;
 'subject:[': 0.37; 'use': 0.39; 'log': 0.39; 'subject: - ': 0.39;
 'url:python': 0.39; 'allow': 0.61; 'expected': 0.61; 'second': 0.61;
 'skip:m 20': 0.61; 'subject:/': 0.61; 'value': 0.61; 'worth': 0.61;
 'skip:v 10': 0.61; 'give': 0.62; 'received:sienna.pobox.com': 0.62;
 'skip:o 10': 0.64; 'information': 0.65; 'before': 0.65;
 'sender:addr:python.org': 0.68; '2000': 0.69; 'return': 0.69; 'special': 0.69;
 'subject:\n ': 0.70; 'got': 0.75; 'suitable': 0.75; 'here.': 0.78;
 'gives': 0.84; 'message-id:@sienna.pobox.com': 0.84; 'module.': 0.84;
 'permitted': 0.84; 'platforms': 0.84; 'skip:1 20': 0.84; 'skip:2 20': 0.84;
 'skip:3 10': 0.84; 'skip:3 20': 0.84; 'subject:library': 0.84; 'tiny': 0.84;
 'chosen': 0.91; 'skip:7 10': 0.91; 'test': 0.91; 'accept': 0.93;
 'skip:4 10': 0.93
From: mark.dickinson <python-checkins@python.org>
Sender: python-checkins-bounces+skip=pobox.com@python.org
To: python-checkins@python.org
Subject: [Python-checkins] r76755 - in python/trunk: Doc/library/math.rst
 Lib/test/math_testcases.txt Lib/test/test_math.py Misc/NEWS
 Modules/mathmodule.c
Date: Fri, 11 Dec 2009 12:29:44 -0500 (EST)
X-Spambayes-Classification: ham; 0.00

Author: mark.dickinson
Date: Fri Dec 11 18:29:33 2009
New Revision: 76755

Log:
Issue #3366:  Add lgamma function to math module.


Modified:
   python/trunk/Doc/library/math.rst
   python/trunk/Lib/test/math_testcases.txt
   python/trunk/Lib/test/test_math.py
   python/trunk/Misc/NEWS
   python/trunk/Modules/mathmodule.c

Modified: python/trunk/Doc/library/math.rst
==============================================================================
--- python/trunk/Doc/library/math.rst	(original)
+++ python/trunk/Doc/library/math.rst	Fri Dec 11 18:29:33 2009
@@ -318,6 +318,14 @@
    .. versionadded:: 2.7
 
 
+.. function:: lgamma(x)
+
+   Return the natural logarithm of the absolute value of the Gamma
+   function at *x*.
+
+   .. versionadded:: 2.7
+
+
 Constants
 ---------
 

Modified: python/trunk/Lib/test/math_testcases.txt
==============================================================================
--- python/trunk/Lib/test/math_testcases.txt	(original)
+++ python/trunk/Lib/test/math_testcases.txt	Fri Dec 11 18:29:33 2009
@@ -47,6 +47,111 @@
 -- MPFR homepage at http://www.mpfr.org for more information about the
 -- MPFR project.
 
+---------------------------------------------------------
+-- lgamma: log of absolute value of the gamma function --
+---------------------------------------------------------
+
+-- special values
+lgam0000 lgamma 0.0 -> inf      divide-by-zero
+lgam0001 lgamma -0.0 -> inf     divide-by-zero
+lgam0002 lgamma inf -> inf
+lgam0003 lgamma -inf -> inf
+lgam0004 lgamma nan -> nan
+
+-- negative integers
+lgam0010 lgamma -1 -> inf       divide-by-zero
+lgam0011 lgamma -2 -> inf       divide-by-zero
+lgam0012 lgamma -1e16 -> inf    divide-by-zero
+lgam0013 lgamma -1e300 -> inf   divide-by-zero
+lgam0014 lgamma -1.79e308 -> inf divide-by-zero
+
+-- small positive integers give factorials
+lgam0020 lgamma 1 -> 0.0
+lgam0021 lgamma 2 -> 0.0
+lgam0022 lgamma 3 -> 0.69314718055994529
+lgam0023 lgamma 4 -> 1.791759469228055
+lgam0024 lgamma 5 -> 3.1780538303479458
+lgam0025 lgamma 6 -> 4.7874917427820458
+
+-- half integers
+lgam0030 lgamma 0.5 -> 0.57236494292470008
+lgam0031 lgamma 1.5 -> -0.12078223763524522
+lgam0032 lgamma 2.5 -> 0.28468287047291918
+lgam0033 lgamma 3.5 -> 1.2009736023470743
+lgam0034 lgamma -0.5 -> 1.2655121234846454
+lgam0035 lgamma -1.5 -> 0.86004701537648098
+lgam0036 lgamma -2.5 -> -0.056243716497674054
+lgam0037 lgamma -3.5 -> -1.309006684993042
+
+-- values near 0
+lgam0040 lgamma 0.1 -> 2.252712651734206
+lgam0041 lgamma 0.01 -> 4.5994798780420219
+lgam0042 lgamma 1e-8 -> 18.420680738180209
+lgam0043 lgamma 1e-16 -> 36.841361487904734
+lgam0044 lgamma 1e-30 -> 69.077552789821368
+lgam0045 lgamma 1e-160 -> 368.41361487904732
+lgam0046 lgamma 1e-308 -> 709.19620864216608
+lgam0047 lgamma 5.6e-309 -> 709.77602713741896
+lgam0048 lgamma 5.5e-309 -> 709.79404564292167
+lgam0049 lgamma 1e-309 -> 711.49879373516012
+lgam0050 lgamma 1e-323 -> 743.74692474082133
+lgam0051 lgamma 5e-324 -> 744.44007192138122
+lgam0060 lgamma -0.1 -> 2.3689613327287886
+lgam0061 lgamma -0.01 -> 4.6110249927528013
+lgam0062 lgamma -1e-8 -> 18.420680749724522
+lgam0063 lgamma -1e-16 -> 36.841361487904734
+lgam0064 lgamma -1e-30 -> 69.077552789821368
+lgam0065 lgamma -1e-160 -> 368.41361487904732
+lgam0066 lgamma -1e-308 -> 709.19620864216608
+lgam0067 lgamma -5.6e-309 -> 709.77602713741896
+lgam0068 lgamma -5.5e-309 -> 709.79404564292167
+lgam0069 lgamma -1e-309 -> 711.49879373516012
+lgam0070 lgamma -1e-323 -> 743.74692474082133
+lgam0071 lgamma -5e-324 -> 744.44007192138122
+
+-- values near negative integers
+lgam0080 lgamma -0.99999999999999989 -> 36.736800569677101
+lgam0081 lgamma -1.0000000000000002 -> 36.043653389117154
+lgam0082 lgamma -1.9999999999999998 -> 35.350506208557213
+lgam0083 lgamma -2.0000000000000004 -> 34.657359027997266
+lgam0084 lgamma -100.00000000000001 -> -331.85460524980607
+lgam0085 lgamma -99.999999999999986 -> -331.85460524980596
+
+-- large inputs
+lgam0100 lgamma 170 -> 701.43726380873704
+lgam0101 lgamma 171 -> 706.57306224578736
+lgam0102 lgamma 171.624 -> 709.78077443669895
+lgam0103 lgamma 171.625 -> 709.78591682948365
+lgam0104 lgamma 172 -> 711.71472580228999
+lgam0105 lgamma 2000 -> 13198.923448054265
+lgam0106 lgamma 2.55998332785163e305 -> 1.7976931348623099e+308
+lgam0107 lgamma 2.55998332785164e305 -> inf overflow
+lgam0108 lgamma 1.7e308 -> inf overflow
+
+-- inputs for which gamma(x) is tiny
+lgam0120 lgamma -100.5 -> -364.90096830942736
+lgam0121 lgamma -160.5 -> -656.88005261126432
+lgam0122 lgamma -170.5 -> -707.99843314507882
+lgam0123 lgamma -171.5 -> -713.14301641168481
+lgam0124 lgamma -176.5 -> -738.95247590846486
+lgam0125 lgamma -177.5 -> -744.13144651738037
+lgam0126 lgamma -178.5 -> -749.3160351186001
+
+lgam0130 lgamma -1000.5 -> -5914.4377011168517
+lgam0131 lgamma -30000.5 -> -279278.6629959144
+lgam0132 lgamma -4503599627370495.5 -> -1.5782258434492883e+17
+
+-- results close to 0:  positive argument ...
+lgam0150 lgamma 0.99999999999999989 -> 6.4083812134800075e-17
+lgam0151 lgamma 1.0000000000000002 -> -1.2816762426960008e-16
+lgam0152 lgamma 1.9999999999999998 -> -9.3876980655431170e-17
+lgam0153 lgamma 2.0000000000000004 -> 1.8775396131086244e-16
+
+-- ... and negative argument
+lgam0160 lgamma -2.7476826467 -> -5.2477408147689136e-11
+lgam0161 lgamma -2.457024738 -> 3.3464637541912932e-10
+
+
 ---------------------------
 -- gamma: Gamma function --
 ---------------------------

Modified: python/trunk/Lib/test/test_math.py
==============================================================================
--- python/trunk/Lib/test/test_math.py	(original)
+++ python/trunk/Lib/test/test_math.py	Fri Dec 11 18:29:33 2009
@@ -48,6 +48,36 @@
         n = ~(n+2**63)
     return n
 
+def ulps_check(expected, got, ulps=20):
+    """Given non-NaN floats `expected` and `got`,
+    check that they're equal to within the given number of ulps.
+
+    Returns None on success and an error message on failure."""
+
+    ulps_error = to_ulps(got) - to_ulps(expected)
+    if abs(ulps_error) <= ulps:
+        return None
+    return "error = {} ulps; permitted error = {} ulps".format(ulps_error,
+                                                               ulps)
+
+def acc_check(expected, got, rel_err=2e-15, abs_err = 5e-323):
+    """Determine whether non-NaN floats a and b are equal to within a
+    (small) rounding error.  The default values for rel_err and
+    abs_err are chosen to be suitable for platforms where a float is
+    represented by an IEEE 754 double.  They allow an error of between
+    9 and 19 ulps."""
+
+    # need to special case infinities, since inf - inf gives nan
+    if math.isinf(expected) and got == expected:
+        return None
+
+    error = got - expected
+
+    permitted_error = max(abs_err, rel_err * abs(expected))
+    if abs(error) < permitted_error:
+        return None
+    return "error = {}; permitted error = {}".format(error,
+                                                     permitted_error)
 
 def parse_mtestfile(fname):
     """Parse a file with test values
@@ -952,13 +982,23 @@
             except OverflowError:
                 got = 'OverflowError'
 
-            diff_ulps = None
+            accuracy_failure = None
             if isinstance(got, float) and isinstance(expected, float):
                 if math.isnan(expected) and math.isnan(got):
                     continue
                 if not math.isnan(expected) and not math.isnan(got):
-                    diff_ulps = to_ulps(expected) - to_ulps(got)
-                    if abs(diff_ulps) <= ALLOWED_ERROR:
+                    # we use different closeness criteria for
+                    # different functions.
+                    if fn == 'gamma':
+                        accuracy_failure = ulps_check(expected, got, 20)
+                    elif fn == 'lgamma':
+                        accuracy_failure = acc_check(expected, got,
+                                                  rel_err = 5e-15,
+                                                  abs_err = 5e-15)
+                    else:
+                        raise ValueError("don't know how to check accuracy "
+                                         "for this function")
+                    if accuracy_failure is None:
                         continue
 
             if isinstance(got, str) and isinstance(expected, str):
@@ -966,8 +1006,8 @@
                     continue
 
             fail_msg = fail_fmt.format(id, fn, arg, expected, got)
-            if diff_ulps is not None:
-                fail_msg += ' ({} ulps)'.format(diff_ulps)
+            if accuracy_failure is not None:
+                fail_msg += ' ({})'.format(accuracy_failure)
             failures.append(fail_msg)
 
         if failures:

Modified: python/trunk/Misc/NEWS
==============================================================================
--- python/trunk/Misc/NEWS	(original)
+++ python/trunk/Misc/NEWS	Fri Dec 11 18:29:33 2009
@@ -1654,7 +1654,7 @@
 
 - Issue #7078: Set struct.__doc__ from _struct.__doc__.
 
-- Issue #3366: Add gamma function to math module.
+- Issue #3366: Add gamma, lgamma functions to math module.
 
 - Issue #6823: Allow time.strftime() to accept a tuple with a isdst field
   outside of the range of [-1, 1] by normalizing the value to within that

Modified: python/trunk/Modules/mathmodule.c
==============================================================================
--- python/trunk/Modules/mathmodule.c	(original)
+++ python/trunk/Modules/mathmodule.c	Fri Dec 11 18:29:33 2009
@@ -322,6 +322,60 @@
 }
 
 /*
+   lgamma:  natural log of the absolute value of the Gamma function.
+   For large arguments, Lanczos' formula works extremely well here.
+*/
+
+static double
+m_lgamma(double x)
+{
+	double r, absx;
+
+	/* special cases */
+	if (!Py_IS_FINITE(x)) {
+		if (Py_IS_NAN(x))
+			return x;  /* lgamma(nan) = nan */
+		else
+			return Py_HUGE_VAL; /* lgamma(+-inf) = +inf */
+	}
+
+	/* integer arguments */
+	if (x == floor(x) && x <= 2.0) {
+		if (x <= 0.0) {
+			errno = EDOM;  /* lgamma(n) = inf, divide-by-zero for */
+			return Py_HUGE_VAL; /* integers n <= 0 */
+		}
+		else {
+			return 0.0; /* lgamma(1) = lgamma(2) = 0.0 */
+		}
+	}
+
+	absx = fabs(x);
+	/* tiny arguments: lgamma(x) ~ -log(fabs(x)) for small x */
+	if (absx < 1e-20)
+		return -log(absx);
+
+	/* Lanczos' formula */
+	if (x > 0.0) {
+		/* we could save a fraction of a ulp in accuracy by having a
+		   second set of numerator coefficients for lanczos_sum that
+		   absorbed the exp(-lanczos_g) term, and throwing out the
+		   lanczos_g subtraction below; it's probably not worth it. */
+		r = log(lanczos_sum(x)) - lanczos_g +
+			(x-0.5)*(log(x+lanczos_g-0.5)-1);
+	}
+	else {
+		r = log(pi) - log(fabs(sinpi(absx))) - log(absx) -
+			(log(lanczos_sum(absx)) - lanczos_g +
+			 (absx-0.5)*(log(absx+lanczos_g-0.5)-1));
+	}
+	if (Py_IS_INFINITY(r))
+		errno = ERANGE;
+	return r;
+}
+
+
+/*
    wrapper for atan2 that deals directly with special cases before
    delegating to the platform libm for the remaining cases.  This
    is necessary to get consistent behaviour across platforms.
@@ -639,6 +693,8 @@
       "This is the largest integral value <= x.")
 FUNC1A(gamma, m_tgamma,
       "gamma(x)\n\nGamma function at x.")
+FUNC1A(lgamma, m_lgamma,
+      "lgamma(x)\n\nNatural logarithm of absolute value of Gamma function at x.")
 FUNC1(log1p, log1p, 1,
       "log1p(x)\n\nReturn the natural logarithm of 1+x (base e).\n"
       "The result is computed in a way which is accurate for x near zero.")
@@ -1375,6 +1431,7 @@
 	{"isinf",	math_isinf,	METH_O,		math_isinf_doc},
 	{"isnan",	math_isnan,	METH_O,		math_isnan_doc},
 	{"ldexp",	math_ldexp,	METH_VARARGS,	math_ldexp_doc},
+	{"lgamma",	math_lgamma,	METH_O,		math_lgamma_doc},
 	{"log",		math_log,	METH_VARARGS,	math_log_doc},
 	{"log1p",	math_log1p,	METH_O,		math_log1p_doc},
 	{"log10",	math_log10,	METH_O,		math_log10_doc},
_______________________________________________
Python-checkins mailing list
Python-checkins@python.org
http://mail.python.org/mailman/listinfo/python-checkins

From SRS0=u14F=ID=python.org=webmaster@bounce2.pobox.com  Wed Dec 16 22:21:31 2009
X-VM-v5-Data: ([nil nil nil nil nil nil nil nil nil]
	["1558" "Thursday" "17" "December" "2009" "04:20:27" "-0000" "=?utf-8?q?python=2Eorg_Webmaster_?=" "webmaster@python.org" nil "55" #("[PythonInfo Wiki] Update of \"TucsonPythonUserGroup\" by  174.18.26.187" 0 55 (vm-string t vm-charset "utf-8" vm-coding utf-8) 56 69 (vm-string t vm-charset "utf-8" vm-coding utf-8)) "^From:" nil nil "12" nil #("[PythonInfo Wiki] Update of \"TucsonPythonUserGroup\" by 174.18.26.187" 0 11 (vm-string t vm-charset "utf-8" vm-coding utf-8) 12 17 (vm-string t vm-charset "utf-8" vm-coding utf-8) 18 24 (vm-string t vm-charset "utf-8" vm-coding utf-8) 25 27 (vm-string t vm-charset "utf-8" vm-coding utf-8) 28 51 (vm-string t vm-charset "utf-8" vm-coding utf-8) 52 54 (vm-string t vm-charset "utf-8" vm-coding utf-8) 55 68 (vm-string t vm-charset "utf-8" vm-coding utf-8)) nil nil nil nil nil nil nil nil]
	nil)
Delivered-To: skip.montanaro@gmail.com
Received: from pop.gmail.com
 by montanaro.dyndns.org with POP3 (fetchmail-6.3.11)
 for <skip@localhost> (single-drop); Wed, 16 Dec 2009 22:21:31 -0600 (CST)
Received: by 10.213.7.80 with SMTP id c16cs270990ebc;
 Wed, 16 Dec 2009 20:20:31 -0800 (PST)
Received: by 10.224.3.74 with SMTP id 10mr1293550qam.302.1261023629925;
 Wed, 16 Dec 2009 20:20:29 -0800 (PST)
Return-Path: <SRS0=u14F=ID=python.org=webmaster@bounce2.pobox.com>
Received: from gold.pobox.com (gold.pobox.com [208.72.237.26])
 by mx.google.com with ESMTP id 15si3151036qyk.125.2009.12.16.20.20.28;
 Wed, 16 Dec 2009 20:20:28 -0800 (PST)
Received-SPF: pass (google.com: domain of
 SRS0=u14F=ID=python.org=webmaster@bounce2.pobox.com designates 208.72.237.26
 as permitted sender) client-ip=208.72.237.26; 
Authentication-Results: mx.google.com; spf=pass (google.com: domain of
 SRS0=u14F=ID=python.org=webmaster@bounce2.pobox.com designates 208.72.237.26
 as permitted sender)
 smtp.mail=SRS0=u14F=ID=python.org=webmaster@bounce2.pobox.com;
 dkim=pass header.i=@python.org
Received: from gold.pobox.com (localhost [127.0.0.1])
 by gold.pobox.com (Postfix) with ESMTP id 41A09412182
 for <skip.montanaro@gmail.com>; Wed, 16 Dec 2009 23:20:28 -0500 (EST)
Delivered-To: skip@pobox.com
X-Pobox-Orig-Sender: <webmaster@python.org>
X-Pobox-Delivery-ID: 81A3BE42-EAC3-11DE-B6B3-CC74028BA082-00107187!gold.pobox.com
x-pobox-client-address: 82.94.164.166
x-pobox-client-name: mail.python.org
Received: from mail.python.org (mail.python.org [82.94.164.166]) by
 gold.pobox.com (Postfix) with ESMTP id EF3CC4123A5; Wed, 16 Dec 2009 23:20:27
 -0500 (EST)
Received: from albatross.python.org (localhost.localdomain [127.0.0.1]) by
 mail.python.org (Postfix) with ESMTP id 7626FF38C; Thu, 17 Dec 2009 05:20:27
 +0100 (CET)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=python.org; s=200901;
 t=1261023627; bh=gZ7uNB+WW0VduQ6WRsiJm56hCmmRo/sC3lvNXFS87rM=;
 h=MIME-Version:Content-Type:Content-Transfer-Encoding:From:To:Date:
 Message-ID:Subject;
 b=o2Ho96CMBxgSkfiHenw4mWvkhvI6tbgS+yjuZ8RxiHZrP9juUkOp38q9zurXgDupF
 3zkUW2ck0xCwAbuknKSMHRquXtiqq4b6QxLFJlBnpfI1/i0ZldperuGOpMh5nLRkBB
 fIc9QTwWkjD/PIORnNs9Uh0tTPKqOILPX3exJ99g=
Received: from localhost.localdomain (HELO mail.python.org) (127.0.0.1) by
 albatross.python.org with SMTP; 17 Dec 2009 05:20:27 +0100
Received: from ximinez.python.org (ximinez.python.org [82.94.164.163]) by
 mail.python.org (Postfix) with ESMTP; Thu, 17 Dec 2009 05:20:27 +0100 (CET)
MIME-Version: 1.0
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: quoted-printable
Message-ID: <20091217042027.27178.38640@ximinez.python.org>
X-Pobox-Pass: webmaster@python.org is whitelisted
X-Spambayes-Evidence: '*H*': 0.97; '*S*': 0.00; 'november': 0.09;
 'probably': 0.09; 'simple': 0.09; 'url-ip:74.125.95.141/32': 0.09;
 'url-ip:82.94.164.162/32': 0.09; 'url:appspot': 0.09; 'changed': 0.16;
 'from:addr:python.org': 0.16; 'meeting': 0.16; 'meetings': 0.16; 'much': 0.16;
 'part': 0.16; 'possible': 0.16; 'python': 0.16; 'shows': 0.16;
 'skip:" 20': 0.16; 'skip:1 10': 0.16; 'url:13': 0.16; 'url:docs': 0.16;
 'user,': 0.16; 'url-ip:74.125.95/24': 0.19; 'url-ip:74.125/16': 0.19;
 'either': 0.23; 'discussion': 0.25; 'subject:] ': 0.26; 'url:org': 0.28;
 'received:208.72.237.26': 0.29; 'received:gold.pobox.com': 0.29;
 'url-ip:82.94.164/24': 0.29; 'url-ip:82.94/16': 0.29; 'url-ip:82/8': 0.29;
 'url:python': 0.29; 'from:addr:webmaster': 0.30; 'python,': 0.30;
 'url-ip:216/8': 0.30; 'received:208': 0.33; 'received:208.72': 0.33;
 'received:208.72.237': 0.33; 'received:org': 0.36; 'subject:[': 0.36;
 'url-ip:74/8': 0.37; 'received:82': 0.38; 'received:82.94': 0.38;
 'received:82.94.164': 0.38; 'received:82.94.164.166': 0.38;
 'received:albatross.python.org': 0.38; 'received:mail.python.org': 0.38;
 'received:python.org': 0.38; 'all': 0.40; 'google': 0.63; 'been': 0.66;
 'group': 0.66; 'change': 0.67; 'charset:utf-8': 0.80; '2009.': 0.84;
 'latest': 0.84; 'next': 0.84; 'past': 0.84; 'resources': 0.84; 'url:14': 0.84;
 'url:net': 0.93
From: =?utf-8?q?python=2Eorg_Webmaster_?=<webmaster@python.org>
To: =?utf-8?q?python=2Eorg_Webmaster_?=<webmaster@python.org>
Subject: =?utf-8?q?=5BPythonInfo_Wiki=5D_Update_of_=22TucsonPythonUserGroup=22_by_?=
 =?utf-8?q?174=2E18=2E26=2E187?=
Date: Thu, 17 Dec 2009 04:20:27 -0000
X-Spambayes-Classification: ham; 0.01

Dear Wiki user,

You have subscribed to a wiki page or wiki category on "PythonInfo Wiki" fo=
r change notification.

The "TucsonPythonUserGroup" page has been changed by 174.18.26.187:
http://wiki.python.org/moin/TucsonPythonUserGroup?action=3Ddiff&rev1=3D13&r=
ev2=3D14

  <<TableOfContents(1)>>
  =

  =3D Next Meeting =3D
-  * When: Monday, December 14, 2009 at 6:30pm.
+  * When: TENTATIVELY Saturday, January 16, 2009.  Much or all of day?
   * Where: [[http://groups.google.com/group/TuPLEgroup/|PLEASE SEE TuPLE G=
oogle Group FOR LATEST INFO]].
+  * What: probably either a Hack Day or a barbeque.  Or some of both.
+    [[http://groups.google.com/group/TuPLEgroup/|PLEASE SEE TuPLE Google G=
roup FOR LATEST INFO]]
  =

  =3D Resources =3D
   * Website : [[http://tuplegroup.appspot.com/|TuPLEgroup on Appspot]]
@@ -22, +24 @@

  =3D Some Past Meetings =3D
  ----
  =

+ =3D=3D December 14th 2009 =3D=3D
+  * profiling in Python, using =

+    * cProfile (http://docs.python.org/library/profile.html)
+    * timeit (http://docs.python.org/library/timeit.html)
+    * kcachegrind (http://kcachegrind.sourceforge.net/html/Home.html) =

+  * a simple client library for accessing Collecta (http://www.collecta.co=
m/) feeds. =

+    Shows a basic strategy for implementing a client web library using Twi=
sted web APIs. =

+  * discussion of possible Hack Day project ideas.
+ =

  =3D=3D November 9th 2009 =3D=3D
   * Dictionaries in Python 3.0
   * Optimizing pysqlite databases and queries, Part II
- =

  =

  =3D=3D October 12th 2009 =3D=3D
 =20

From SRS0=SQKo=ID=python.org=mailman-bounces@bounce2.pobox.com  Thu Dec 17 00:25:37 2009
X-VM-v5-Data: ([nil nil nil nil nil nil nil nil nil]
	["260" "Thursday" "17" "December" "2009" "07:23:45" "+0100" "python-help-owner@python.org" "python-help-owner@python.org" nil "11" "New subscription request to list Python-Help from lord_korean@hotmail.com" "^From:" nil nil "12" nil "New subscription request to list Python-Help from lord_korean@hotmail.com" nil nil nil nil nil nil nil nil]
	nil)
Delivered-To: skip.montanaro@gmail.com
Received: from pop.gmail.com
 by montanaro.dyndns.org with POP3 (fetchmail-6.3.11)
 for <skip@localhost> (single-drop); Thu, 17 Dec 2009 00:25:37 -0600 (CST)
Received: by 10.216.54.195 with SMTP id i45cs118023wec;
 Wed, 16 Dec 2009 22:23:59 -0800 (PST)
Received: by 10.220.126.214 with SMTP id d22mr441060vcs.114.1261031038779;
 Wed, 16 Dec 2009 22:23:58 -0800 (PST)
Return-Path: <SRS0=SQKo=ID=python.org=mailman-bounces@bounce2.pobox.com>
Received: from sienna.pobox.com (sienna.pobox.com [64.74.157.51])
 by mx.google.com with ESMTP id 14si2015069vws.86.2009.12.16.22.23.57;
 Wed, 16 Dec 2009 22:23:57 -0800 (PST)
Received-SPF: pass (google.com: domain of
 SRS0=SQKo=ID=python.org=mailman-bounces@bounce2.pobox.com designates
 64.74.157.51 as permitted sender) client-ip=64.74.157.51; 
Authentication-Results: mx.google.com; spf=pass (google.com: domain of
 SRS0=SQKo=ID=python.org=mailman-bounces@bounce2.pobox.com designates
 64.74.157.51 as permitted sender)
 smtp.mail=SRS0=SQKo=ID=python.org=mailman-bounces@bounce2.pobox.com;
 dkim=pass header.i=@python.org
Received: from sienna.pobox.com (localhost [127.0.0.1])
 by sienna.pobox.com (Postfix) with ESMTP id C1815200640
 for <skip.montanaro@gmail.com>; Thu, 17 Dec 2009 01:23:56 -0500 (EST)
Delivered-To: skip@pobox.com
X-Pobox-Orig-Sender: <mailman-bounces@python.org>
X-Pobox-Delivery-ID: C16C4696-EAD4-11DE-8626-87C9D598E475-00107187!sienna.pobox.com
X-Original-To: python-help-owner@python.org
x-pobox-client-address: 82.94.164.166
x-pobox-client-name: mail.python.org
Received: from mail.python.org (mail.python.org [82.94.164.166]) by
 sienna.pobox.com (Postfix) with ESMTP id 398C1200648 for <skip@pobox.com>;
 Thu, 17 Dec 2009 01:23:56 -0500 (EST)
Received: from albatross.python.org (localhost.localdomain [127.0.0.1]) by
 mail.python.org (Postfix) with ESMTP id 80CBEF2B8; Thu, 17 Dec 2009 07:23:48
 +0100 (CET)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=python.org; s=200901;
 t=1261031028; bh=Go6WXlLcDwKK0KfrznBeOTZJmnMUkLKLhTOqmK5HBtY=;
 h=MIME-Version:Content-Type:Content-Transfer-Encoding:Subject:From:
 To:Message-ID:Date:List-Id:Sender;
 b=qPBjxDZJwi+6LDEfEXU7VBCZ9Xg4YhtkS1/SJrH9nTe2FLZScx0p6WHyVLoLS/BYK
 qn01gJvoTOOxeooB9nPIhDe2YPLZ85XMh+ZFHFb66SbH7T+9QlfYFMJeeiDKTr0z79
 67FkB0tjfukBiiUcPsgQsEajvsEzK0GiMtBeajL0=
Delivered-To: python-help-owner@mail.python.org
Received: from albatross.python.org (localhost.localdomain [127.0.0.1]) by
 mail.python.org (Postfix) with ESMTP id 61BABF2B8 for
 <python-help-owner@python.org>; Thu, 17 Dec 2009 07:23:46 +0100 (CET)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=python.org; s=200901;
 t=1261031026; bh=Go6WXlLcDwKK0KfrznBeOTZJmnMUkLKLhTOqmK5HBtY=;
 h=MIME-Version:Content-Type:Content-Transfer-Encoding:Subject:From:
 To:Message-ID:Date:List-Id:Sender;
 b=LHojOjh+wCVHAWxux3ex+k37GLlfGNmDasoXxJZ1+LutJQK7J/GH7nIT4WFf+59kF
 O6H+J+wD0d8SdWoKymnwxbzYelhYuZIHbG2D/Zi2Pzo4o8GiCwxNx+DGb5om7U/T1u
 dhcVUxu+sypsAqscMM+5JsMLhfUhklxBz5lkSjhA=
MIME-Version: 1.0
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: 7bit
Message-ID: <mailman.0.1261031025.22994.python-help@python.org>
Precedence: bulk
X-BeenThere: python-help@python.org
X-Mailman-Version: 2.1.12
List-Id: Expert volunteers answer Python-related questions
 <python-help.python.org>
X-List-Administrivia: yes
Errors-To: mailman-bounces@python.org
X-Pobox-Pass: mailman-bounces@python.org is whitelisted
X-Spambayes-Evidence: '*H*': 0.75; '*S*': 0.00; 'convenience,': 0.16;
 'for:': 0.16; 'from:addr:python.org': 0.16; 'list:': 0.16;
 'message-id:@python.org': 0.16; 'request.': 0.16; 'subject:Help': 0.16;
 'subject:Python': 0.16; 'visit:': 0.16; 'email addr:python.org': 0.23;
 'url:org': 0.28; 'url-ip:82.94.164/24': 0.29; 'url-ip:82.94/16': 0.29;
 'url-ip:82/8': 0.29; 'url:python': 0.29; 'header:Received:8': 0.34;
 'mailing': 0.35; 'sender:addr:python.org': 0.35;
 'url-ip:82.94.164.166/32': 0.35; 'url:mail': 0.35; 'subject:-': 0.35;
 'received:org': 0.36; 'list': 0.37; 'charset:us-ascii': 0.38;
 'received:82': 0.38; 'received:82.94': 0.38; 'received:82.94.164': 0.38;
 'received:82.94.164.166': 0.38; 'received:albatross.python.org': 0.38;
 'received:mail.python.org': 0.38; 'received:python.org': 0.38;
 'received:64': 0.73; 'received:64.74': 0.78; 'received:64.74.157': 0.78;
 'received:64.74.157.51': 0.80; 'received:sienna.pobox.com': 0.82;
 'email addr:hotmail.com': 0.84; 'request': 0.91
From: python-help-owner@python.org
Sender: mailman-bounces@python.org
To: python-help-owner@python.org
Subject: New subscription request to list Python-Help from
 lord_korean@hotmail.com
Date: Thu, 17 Dec 2009 07:23:45 +0100
X-Spambayes-Classification: ham; 0.13

Your authorization is required for a mailing list subscription request
approval:

    For:  lord_korean@hotmail.com
    List: python-help@python.org

At your convenience, visit:

    http://mail.python.org/mailman/admindb/python-help
	
to process the request.

From SRS0=GBC3=ID=python.org=new-bugs-announce-bounces+skip=pobox.com@bounce2.pobox.com  Thu Dec 17 02:35:56 2009
X-VM-v5-Data: ([nil nil nil nil nil nil nil nil nil]
	["2302" "Thursday" "17" "December" "2009" "08:35:37" "+0000" "Case Van Horsen" "report@bugs.python.org" nil "74" "[New-bugs-announce] [issue7528] Provide PyLong_AsLongAndOverflow compatibility to Python	2.x" "^From:" nil nil "12" nil "[New-bugs-announce] [issue7528] Provide PyLong_AsLongAndOverflow compatibility to Python 2.x" nil nil nil nil nil nil nil nil]
	nil)
Delivered-To: skip.montanaro@gmail.com
Received: from pop.gmail.com
 by montanaro.dyndns.org with POP3 (fetchmail-6.3.11)
 for <skip@localhost> (single-drop); Thu, 17 Dec 2009 02:35:56 -0600 (CST)
Received: by 10.216.54.195 with SMTP id i45cs123224wec;
 Thu, 17 Dec 2009 00:35:46 -0800 (PST)
Received: by 10.224.20.144 with SMTP id f16mr1438280qab.220.1261038945154;
 Thu, 17 Dec 2009 00:35:45 -0800 (PST)
Return-Path: <SRS0=GBC3=ID=python.org=new-bugs-announce-bounces+skip=pobox.com@bounce2.pobox.com>
Received: from gold.pobox.com (gold.pobox.com [208.72.237.26])
 by mx.google.com with ESMTP id 41si4222413qyk.65.2009.12.17.00.35.43;
 Thu, 17 Dec 2009 00:35:44 -0800 (PST)
Received-SPF: pass (google.com: domain of
 SRS0=GBC3=ID=python.org=new-bugs-announce-bounces+skip=pobox.com@bounce2.pobox.com
 designates 208.72.237.26 as permitted sender) client-ip=208.72.237.26; 
Authentication-Results: mx.google.com; spf=pass (google.com: domain of
 SRS0=GBC3=ID=python.org=new-bugs-announce-bounces+skip=pobox.com@bounce2.pobox.com
 designates 208.72.237.26 as permitted sender)
 smtp.mail=SRS0=GBC3=ID=python.org=new-bugs-announce-bounces+skip=pobox.com@bounce2.pobox.com;
 dkim=pass header.i=@python.org
Received: from gold.pobox.com (localhost [127.0.0.1])
 by gold.pobox.com (Postfix) with ESMTP id 5CEC34123B3
 for <skip.montanaro@gmail.com>; Thu, 17 Dec 2009 03:35:43 -0500 (EST)
Delivered-To: skip@pobox.com
X-Pobox-Orig-Sender: <new-bugs-announce-bounces+skip=pobox.com@python.org>
X-Pobox-Delivery-ID: 2A141BDA-EAE7-11DE-B958-A487CF92AC8C-00107187!gold.pobox.com
X-Original-To: new-bugs-announce@python.org
x-pobox-client-address: 82.94.164.166
x-pobox-client-name: mail.python.org
Received: from mail.python.org (mail.python.org [82.94.164.166]) by
 gold.pobox.com (Postfix) with ESMTP id CC0794125A0 for <skip@pobox.com>; Thu,
 17 Dec 2009 03:35:42 -0500 (EST)
Received: from albatross.python.org (localhost.localdomain [127.0.0.1]) by
 mail.python.org (Postfix) with ESMTP id 0938AF380 for <skip@pobox.com>; Thu,
 17 Dec 2009 09:35:42 +0100 (CET)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=python.org; s=200901;
 t=1261038942; bh=tgs/0ORSkNLsW4CdbDBPiqA9A317DcFyzgSz7VKa7kQ=;
 h=MIME-Version:To:From:Date:Message-Id:In-Reply-To:Subject:Reply-To:
 List-Id:List-Unsubscribe:List-Archive:List-Post:List-Help:
 List-Subscribe:Content-Type:Content-Transfer-Encoding:Sender;
 b=TXYA9Zt/pvU3arnmf2S58UzLwBPrxXmigeiE2tJwyDi5XPp1F3dfgFLu2tHVKMqYy
 AfqsUlCSlk1vLj+oD2cj5wCyoRKjBqQdF7yyXbEnHyIzZ9GP8c7nCk+SsAthRGS6XX
 mGDEy3JKduNXGtYEZmc8U4UsElUHWQKk9RbIFZtI=
Delivered-To: new-bugs-announce@mail.python.org
Received: from albatross.python.org (localhost.localdomain [127.0.0.1]) by
 mail.python.org (Postfix) with ESMTP id 9DEACF36A for
 <new-bugs-announce@python.org>; Thu, 17 Dec 2009 09:35:37 +0100 (CET)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=python.org; s=200901;
 t=1261038937; i=@python.org; bh=lk9DI6FtqmpZGg/aPuayst6cI7DxD/Bwa6md9xBaK/s=; 
 h=MIME-Version:Content-Type:Subject:To:From:Date:Reply-To:
 Message-Id:In-Reply-To:Content-Transfer-Encoding;
 b=NQc1Je11DM1VC42dbRHhWK/PR67fLMD0Btb00HPgveQw/dRmccF51s/eYBCSRvTKj
 JOugURw82UrNG+TGvu5ZfTz9Ni/nyAcFH34OzSBFPl89TqHieucEd4KeW+Yq4QuCRe
 Uob2UbeTew8rHsxvS9zU6A4unpnCEJv03QvtmuRY=
X-Spam-Status: OK 0.001
X-Spam-Evidence: '*H*': 1.00; '*S*': 0.00; 'subject:Python': 0.02;
 '----------': 0.03; 'python': 0.05; 'slightly': 0.05; 'type:': 0.09;
 'url:bugs': 0.09; 'subject:] ': 0.15; 'function': 0.15; '#endif': 0.16;
 '2.x': 0.16; '3.x,': 0.16; 'api': 0.16; 'extracted': 0.16; 'frequently.':
 0.16; 'from:addr:bugs.python.org': 0.16; 'from:addr:report': 0.16;
 'message-id:@psf.upfronthosting.co.za': 0.16; 'nosy:': 0.16;
 'received:10.0.0.1': 0.16; 'received:88.198.142': 0.16;
 'received:88.198.142.26': 0.16; 'received:psf.upfronthosting.co.za': 0.16;
 'received:upfronthosting.co.za': 0.16; 'reply- to:addr:bugs.python.org':
 0.16; 'reply-to:addr:report': 0.16; 'reply-to:name:python tracker': 0.16;
 'tracker': 0.16; 'header:In- Reply-To:1': 0.16; 'possibly': 0.17; '(and':
 0.18; 'like:': 0.20; 'code': 0.21; 'looks': 0.22; 'convert': 0.23;
 'extension': 0.23; 'modules': 0.25; 'stuff': 0.25; "i'm": 0.26; 'version':
 0.26; "i've": 0.27; 'adding': 0.27; 'defined': 0.27; 'example': 0.29;
 'authors': 0.29; 'began': 0.29; 'title:': 0.29; 'else': 0.29; 'subject:[':
 0.29; 'open': 0.30; 'either': 0.34; 'file': 0.35; 'but': 0.35; 'van': 0.35;
 'received:10.0.0': 0.36; 'same': 0.36; 'functions,': 0.37; 'skip:p 30': 0.37; 
 'using': 0.37; 'url:python': 0.38; 'skip:_ 30': 0.38; 'url:org': 0.39;
 'possible': 0.40; 'use': 0.40; 'faster': 0.61; 'favor': 0.61; 'successfully':
 0.61; 'providing': 0.63; 'provides': 0.63; 'subject:skip:c 10': 0.63;
 'attached': 0.64; 'header:Reply-To:1': 0.74; 'willing': 0.74; 'subject:
 \n\t': 0.81; '2.7': 0.84; 'components:': 0.84; 'messages:': 0.84;
 'subject:skip:P 20': 0.84; 'temp': 0.84
Received: from localhost.localdomain (HELO mail.python.org) (127.0.0.1) by
 albatross.python.org with SMTP; 17 Dec 2009 09:35:37 +0100
Received: from psf.upfronthosting.co.za (bugs.python.org [88.198.142.26]) by
 mail.python.org (Postfix) with ESMTP for <new-bugs-announce@python.org>; Thu,
 17 Dec 2009 09:35:37 +0100 (CET)
Received: from psf.upfronthosting.co.za (localhost [10.0.0.1]) by
 psf.upfronthosting.co.za (Postfix) with ESMTP id 4D0F4785A2 for
 <new-bugs-announce@python.org>; Thu, 17 Dec 2009 09:35:37 +0100 (CET)
MIME-Version: 1.0
Precedence: bulk
X-Roundup-Name: Python tracker
X-Roundup-Loop: hello
X-Roundup-Version: 1.4.10
Message-Id: <1261038937.25.0.365277054713.issue7528@psf.upfronthosting.co.za>
X-Roundup-issue-status: open
X-Roundup-issue-type: feature request
X-Roundup-issue-severity: normal
X-Roundup-issue-versions: Python 2.7
X-Roundup-issue-components: Extension Modules
In-Reply-To: <1261038937.25.0.365277054713.issue7528@psf.upfronthosting.co.za>
X-BeenThere: new-bugs-announce@python.org
X-Mailman-Version: 2.1.12
List-Id: List for new Python bug reports <new-bugs-announce.python.org>
List-Unsubscribe: <http://mail.python.org/mailman/options/new-bugs-announce>, 
 <mailto:new-bugs-announce-request@python.org?subject=unsubscribe>
List-Archive: <http://mail.python.org/pipermail/new-bugs-announce>
List-Post: <mailto:new-bugs-announce@python.org>
List-Help: <mailto:new-bugs-announce-request@python.org?subject=help>
List-Subscribe: <http://mail.python.org/mailman/listinfo/new-bugs-announce>,
 <mailto:new-bugs-announce-request@python.org?subject=subscribe>
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: 7bit
Errors-To: new-bugs-announce-bounces+skip=pobox.com@python.org
X-Spambayes-Evidence: '*H*': 0.97; '*S*': 0.00; 'header:In-Reply-To:1': 0.03;
 'code': 0.04; 'additional': 0.09; 'case': 0.09; 'found': 0.09; "i'm": 0.09;
 'provides': 0.09; 'skip:_ 40': 0.09; 'adding': 0.16; 'defined': 0.16;
 'directory.': 0.16; 'etc.': 0.16; 'example': 0.16; 'faster': 0.16;
 'possible': 0.16; 'python': 0.16; 'several': 0.16; 'skip:_ 30': 0.16;
 'status:': 0.16; 'subject:Python': 0.16; 'subject:announce': 0.16;
 'temp': 0.16; 'version': 0.16; 'header:Received:11': 0.22; 'either': 0.23;
 'email addr:python.org': 0.23; 'url:listinfo': 0.23; 'but': 0.26;
 'subject:] ': 0.26; 'url:org': 0.28; 'also': 0.29;
 'received:208.72.237.26': 0.29; 'received:gold.pobox.com': 0.29;
 'url-ip:82.94.164/24': 0.29; 'url-ip:82.94/16': 0.29; 'url-ip:82/8': 0.29;
 'url:python': 0.29; "i've": 0.30; 'than': 0.30; 'their': 0.30;
 'received:208': 0.33; 'received:208.72': 0.33; 'received:208.72.237': 0.33;
 'mailing': 0.35; 'sender:addr:python.org': 0.35;
 'url-ip:82.94.164.166/32': 0.35; 'url:mail': 0.35; 'subject:-': 0.35;
 'received:org': 0.36; 'subject:[': 0.36; 'list': 0.37; 'was': 0.37;
 'charset:us-ascii': 0.38; 'received:82': 0.38; 'received:82.94': 0.38;
 'received:82.94.164': 0.38; 'received:82.94.164.166': 0.38;
 'received:albatross.python.org': 0.38; 'received:mail.python.org': 0.38;
 'received:python.org': 0.38; 'skip:i 10': 0.38; 'header:Reply-To:1': 0.66;
 'add': 0.67; 'file': 0.67; 'skip:p 20': 0.67; 'skip:d 10': 0.73;
 'available': 0.84; 'called': 0.84; 'fragment': 0.84; 'function': 0.84;
 'looks': 0.84; 'received:10.0': 0.84; 'skip:i 20': 0.84; 'use.': 0.84;
 'wanted': 0.84; 'accept': 0.91; 'attached': 0.91; 'request': 0.91
From: Case Van Horsen <report@bugs.python.org>
Sender: new-bugs-announce-bounces+skip=pobox.com@python.org
To: new-bugs-announce@python.org
Subject: [New-bugs-announce] [issue7528] Provide PyLong_AsLongAndOverflow
 compatibility to Python	2.x
Date: Thu, 17 Dec 2009 08:35:37 +0000
Reply-To: Python tracker <report@bugs.python.org>
X-Spambayes-Classification: ham; 0.01


New submission from Case Van Horsen <casevh@gmail.com>:

When I ported gmpy to Python 3.x, I began to use
PyLong_AsLongAndOverflow frequently. I found the code to slightly faster
and cleaner than using PyLong_AsLong and checking for overflow. I had
several code fragments that looked like:

#if PY_MAJOR_VERSION == 2
    if(PyInt_Check(b)) {
        temp = PyInt_AS_LONG(b));
        Do stuff with temp.
    }
#endif
    if(PyLong_Check(b)) {
#if PY_MAJOR_VERSION == 3
        temp = PyLong_AsLongAndOverflow(b, &overflow);
        if(overflow) {
#else
        temp = PyLong_AsLong(b);
        if(PyErr_Occurred()) {
            PyErr_Clear();
#endif
            Convert b to an mpz.
        } else {
            Do stuff with temp.
        }
    }

I wanted to use the PyLong_AsLongAndOverflow method with Python 2.x so I
extracted the code for PyLong_AsLongAndOverflow, tweeked it to accept
either PyInt or PyLong, and called it PyIntOrLong_AsLongAndOverflow. I
also defined PyIntOrLong_Check.

The same code fragment now looks like:

    if(PyIntOrLong_Check(b)) {
        temp = PyIntOrLong_AsLongAndOverflow(b, &overflow);
        if(overflow) {
            Convert b to an mpz.
        } else {
            Do stuff with temp.
        }
    }

Is it possible to include a py3intcompat.c file with Python 2.7 that
provides this function (and possibly others) for extension authors to
include with their extension? A previous example is pymemcompat.h which
was made available in the Misc directory.

I'm specifically not in favor of adding it to the Python 2.7 API but
just in providing a file for extension authors to use. I've attached a
initial version that compiles successfully with Python 2.4+.

I'm willing to add additional functions, documentation, etc.

----------
components: Extension Modules
messages: 96505
nosy: casevh
severity: normal
status: open
title: Provide PyLong_AsLongAndOverflow compatibility to Python 2.x
type: feature request
versions: Python 2.7

_______________________________________
Python tracker <report@bugs.python.org>
<http://bugs.python.org/issue7528>
_______________________________________
_______________________________________________
New-bugs-announce mailing list
New-bugs-announce@python.org
http://mail.python.org/mailman/listinfo/new-bugs-announce

From SRS0=GBC3=ID=python.org=new-bugs-announce-bounces+skip=pobox.com@bounce2.pobox.com  Thu Dec 17 06:42:42 2009
X-VM-v5-Data: ([nil nil nil nil nil nil nil nil nil]
	["1305" "Thursday" "17" "December" "2009" "12:40:49" "+0000" "Stefan Schwarzburg" "report@bugs.python.org" nil "38" "[New-bugs-announce] [issue7530] doc of multiprocessing.managers is wrong (server_forever)" "^From:" nil nil "12" nil "[New-bugs-announce] [issue7530] doc of multiprocessing.managers is wrong (server_forever)" nil nil nil nil nil nil nil nil]
	nil)
Delivered-To: skip.montanaro@gmail.com
Received: from pop.gmail.com
 by montanaro.dyndns.org with POP3 (fetchmail-6.3.11)
 for <skip@localhost> (single-drop); Thu, 17 Dec 2009 06:42:42 -0600 (CST)
Received: by 10.216.54.195 with SMTP id i45cs136215wec;
 Thu, 17 Dec 2009 04:41:41 -0800 (PST)
Received: by 10.220.124.38 with SMTP id s38mr631111vcr.96.1261053700280;
 Thu, 17 Dec 2009 04:41:40 -0800 (PST)
Return-Path: <SRS0=GBC3=ID=python.org=new-bugs-announce-bounces+skip=pobox.com@bounce2.pobox.com>
Received: from maroon.pobox.com (maroon.pobox.com [208.72.237.40])
 by mx.google.com with ESMTP id 6si146664vws.95.2009.12.17.04.41.38;
 Thu, 17 Dec 2009 04:41:39 -0800 (PST)
Received-SPF: pass (google.com: domain of
 SRS0=GBC3=ID=python.org=new-bugs-announce-bounces+skip=pobox.com@bounce2.pobox.com
 designates 208.72.237.40 as permitted sender) client-ip=208.72.237.40; 
Authentication-Results: mx.google.com; spf=pass (google.com: domain of
 SRS0=GBC3=ID=python.org=new-bugs-announce-bounces+skip=pobox.com@bounce2.pobox.com
 designates 208.72.237.40 as permitted sender)
 smtp.mail=SRS0=GBC3=ID=python.org=new-bugs-announce-bounces+skip=pobox.com@bounce2.pobox.com;
 dkim=pass header.i=@python.org
Received: from maroon.pobox.com (localhost [127.0.0.1])
 by maroon.pobox.com (Postfix) with ESMTP id 72B6A415CD9
 for <skip.montanaro@gmail.com>; Thu, 17 Dec 2009 07:41:38 -0500 (EST)
Delivered-To: skip@pobox.com
X-Pobox-Orig-Sender: <new-bugs-announce-bounces+skip=pobox.com@python.org>
X-Pobox-Delivery-ID: 8469700E-EB09-11DE-A170-8D4646CB39D0-00107187!maroon.pobox.com
X-Original-To: new-bugs-announce@python.org
x-pobox-client-address: 82.94.164.166
x-pobox-client-name: mail.python.org
Received: from mail.python.org (mail.python.org [82.94.164.166]) by
 maroon.pobox.com (Postfix) with ESMTP id BBE22415E06 for <skip@pobox.com>;
 Thu, 17 Dec 2009 07:41:08 -0500 (EST)
Received: from albatross.python.org (localhost.localdomain [127.0.0.1]) by
 mail.python.org (Postfix) with ESMTP id BEDA7F34D for <skip@pobox.com>; Thu,
 17 Dec 2009 13:41:00 +0100 (CET)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=python.org; s=200901;
 t=1261053660; bh=uNtlmw7oiUUfe/bBSLZ34kiV8lNBLZNiLHrOX1iIVoU=;
 h=MIME-Version:To:From:Date:Message-Id:In-Reply-To:Subject:Reply-To:
 List-Id:List-Unsubscribe:List-Archive:List-Post:List-Help:
 List-Subscribe:Content-Type:Content-Transfer-Encoding:Sender;
 b=fczziluM4toZW68wVd6vYEFlCyw5nYqSSWkiw2M764NdQlZsO/bzGgjoj+kjlgvt6
 0lNl4qa+ai43X9yhc9Yt7XPSl3yp024svfIuYHrKTnt+2FbKEDziW3dYnolhrXIQgl
 z+oIdorTcVg+hVp3LhzA+dMtfZxBecL5oJDx7VtQ=
Delivered-To: new-bugs-announce@mail.python.org
Received: from albatross.python.org (localhost.localdomain [127.0.0.1]) by
 mail.python.org (Postfix) with ESMTP id 4BDBCF2E2 for
 <new-bugs-announce@python.org>; Thu, 17 Dec 2009 13:40:49 +0100 (CET)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=python.org; s=200901;
 t=1261053649; i=@python.org; bh=E2HQmGLCu5zySFqfOo+o0V/dH3hAl2Pj8kdB+wD+TkU=; 
 h=MIME-Version:Content-Type:Subject:To:From:Date:Reply-To:
 Message-Id:In-Reply-To:Content-Transfer-Encoding;
 b=HK5IPQhC30uJDj5wkiGvduetaAQLzd188bf8uwXO4yb0J8KMyhrIiHokYt8B1JKet
 HgPzq7UdBGN9Ofefo4Jtw+D6b1WgqXGrN3K2XtXO7Xh0HQOqTNksvPgXs9pU/PoEDo
 +pcqy8il2uXKaFFUy+48yGj2/ZKD4LoFi2VipOCc=
X-Spam-Status: OK 0.000
X-Spam-Evidence: '*H*': 1.00; '*S*': 0.00; '----------': 0.03; 'object':
 0.03; 'python': 0.05; 'url:library': 0.07; 'subject:wrong': 0.09; 'type:':
 0.09; 'url:bugs': 0.09; 'subject:] ': 0.15; '2.6': 0.16;
 'from:addr:bugs.python.org': 0.16; 'from:addr:report': 0.16;
 'message-id:@psf.upfronthosting.co.za': 0.16; 'nosy:': 0.16;
 'received:10.0.0.1': 0.16; 'received:88.198.142': 0.16;
 'received:88.198.142.26': 0.16; 'received:psf.upfronthosting.co.za': 0.16;
 'received:upfronthosting.co.za': 0.16; 'reply- to:addr:bugs.python.org':
 0.16; 'reply-to:addr:report': 0.16; 'reply-to:name:python tracker': 0.16;
 'start()': 0.16; 'stefan': 0.16; 'subject:doc': 0.16; 'tracker': 0.16;
 'header:In-Reply- To:1': 0.16; 'behavior': 0.23; 'section': 0.23; 'server':
 0.24; 'skip:g 20': 0.27; 'title:': 0.29; 'subject:[': 0.29; 'open': 0.30;
 '(e.g.': 0.31; 'description': 0.31; 'there': 0.35; 'received:10.0.0': 0.36;
 'would': 0.36; 'skip:" 10': 0.36; 'url:python': 0.38; 'skip:_ 30': 0.38;
 'url:org': 0.39; 'created': 0.40; 'wrong': 0.62; 'skip:m 20': 0.63;
 'subject:)': 0.63; 'subject:skip:s 10': 0.74; 'header:Reply-To:1': 0.74;
 'components:': 0.84; 'messages:': 0.84; 'refers': 0.93
Received: from localhost.localdomain (HELO mail.python.org) (127.0.0.1) by
 albatross.python.org with SMTP; 17 Dec 2009 13:40:49 +0100
Received: from psf.upfronthosting.co.za (bugs.python.org [88.198.142.26]) by
 mail.python.org (Postfix) with ESMTP for <new-bugs-announce@python.org>; Thu,
 17 Dec 2009 13:40:49 +0100 (CET)
Received: from psf.upfronthosting.co.za (localhost [10.0.0.1]) by
 psf.upfronthosting.co.za (Postfix) with ESMTP id 14E9A78616 for
 <new-bugs-announce@python.org>; Thu, 17 Dec 2009 13:40:49 +0100 (CET)
MIME-Version: 1.0
Precedence: bulk
X-Roundup-Name: Python tracker
X-Roundup-Loop: hello
X-Roundup-Version: 1.4.10
Message-Id: <1261053649.05.0.856911963743.issue7530@psf.upfronthosting.co.za>
X-Roundup-issue-status: open
X-Roundup-issue-type: behavior
X-Roundup-issue-severity: normal
X-Roundup-issue-versions: Python 2.6
X-Roundup-issue-components: Documentation
In-Reply-To: <1261053649.05.0.856911963743.issue7530@psf.upfronthosting.co.za>
X-BeenThere: new-bugs-announce@python.org
X-Mailman-Version: 2.1.12
List-Id: List for new Python bug reports <new-bugs-announce.python.org>
List-Unsubscribe: <http://mail.python.org/mailman/options/new-bugs-announce>, 
 <mailto:new-bugs-announce-request@python.org?subject=unsubscribe>
List-Archive: <http://mail.python.org/pipermail/new-bugs-announce>
List-Post: <mailto:new-bugs-announce@python.org>
List-Help: <mailto:new-bugs-announce-request@python.org?subject=help>
List-Subscribe: <http://mail.python.org/mailman/listinfo/new-bugs-announce>,
 <mailto:new-bugs-announce-request@python.org?subject=subscribe>
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: 7bit
Errors-To: new-bugs-announce-bounces+skip=pobox.com@python.org
X-Spambayes-Evidence: '*H*': 0.91; '*S*': 0.00; 'header:In-Reply-To:1': 0.03;
 'additional': 0.09; 'skip:_ 40': 0.09; 'url-ip:82.94.164.162/32': 0.09;
 'instead': 0.16; 'python': 0.16; 'section': 0.16; 'skip:_ 30': 0.16;
 'status:': 0.16; 'subject:announce': 0.16; 'text': 0.16; 'url:docs': 0.16;
 'header:Received:11': 0.22; 'email addr:python.org': 0.23;
 'url:listinfo': 0.23; 'subject:] ': 0.26; 'url:org': 0.28;
 'received:208.72.237.40': 0.29; 'received:maroon.pobox.com': 0.29;
 'url-ip:82.94.164/24': 0.29; 'url-ip:82.94/16': 0.29; 'url-ip:82/8': 0.29;
 'url:python': 0.29; 'subject: (': 0.30; 'subject:)': 0.30; 'one': 0.32;
 'received:208': 0.33; 'received:208.72': 0.33; 'received:208.72.237': 0.33;
 'about': 0.34; 'would': 0.34; 'mailing': 0.35; 'sender:addr:python.org': 0.35;
 'should': 0.35; 'skip:( 10': 0.35; 'url-ip:82.94.164.166/32': 0.35;
 'url:mail': 0.35; 'subject:-': 0.35; 'received:org': 0.36; 'subject:[': 0.36;
 'skip:s 10': 0.37; 'list': 0.37; 'charset:us-ascii': 0.38; 'received:82': 0.38;
 'received:82.94': 0.38; 'received:82.94.164': 0.38;
 'received:82.94.164.166': 0.38; 'received:albatross.python.org': 0.38;
 'received:mail.python.org': 0.38; 'received:python.org': 0.38;
 'header:Reply-To:1': 0.66; 'skip:d 10': 0.73; 'available': 0.84;
 'created': 0.84; 'description': 0.84; 'received:10.0': 0.84; 'skip:m 30': 0.84;
 'subject:skip:s 10': 0.84; 'skip:m 20': 0.91
From: Stefan Schwarzburg <report@bugs.python.org>
Sender: new-bugs-announce-bounces+skip=pobox.com@python.org
To: new-bugs-announce@python.org
Subject: [New-bugs-announce] [issue7530] doc of multiprocessing.managers is
 wrong (server_forever)
Date: Thu, 17 Dec 2009 12:40:49 +0000
Reply-To: Python tracker <report@bugs.python.org>
X-Spambayes-Classification: ham; 0.04


New submission from Stefan Schwarzburg <stefan.schwarzburg@googlemail.com>:

The documentation of multiprocessing.managers.BaseManager 
(http://docs.python.org/library/multiprocessing.html#module-multiprocessing.managers)
refers to a method "serve_forever". This method is only available at the
server object inside BaseManager (e.g.
manager.get_server().serve_forever() ).

I would rephrase the text to:
"Once created one should call start() or get_server().serve_forever()" 

instead of the current phrase:
"Once created one should call start() or serve_forever()" 

The method description for "serve_forever()" should be removed from
BaseManager, instead there should be an additional section about the
server object returned by get_server().

----------
assignee: georg.brandl
components: Documentation
messages: 96512
nosy: georg.brandl, schwarz
severity: normal
status: open
title: doc of multiprocessing.managers is wrong (server_forever)
type: behavior
versions: Python 2.6

_______________________________________
Python tracker <report@bugs.python.org>
<http://bugs.python.org/issue7530>
_______________________________________
_______________________________________________
New-bugs-announce mailing list
New-bugs-announce@python.org
http://mail.python.org/mailman/listinfo/new-bugs-announce

From SRS0=GBC3=ID=python.org=new-bugs-announce-bounces+skip=pobox.com@bounce2.pobox.com  Thu Dec 17 08:33:59 2009
X-VM-v5-Data: ([nil nil nil nil nil nil nil nil nil]
	["1068" "Thursday" "17" "December" "2009" "14:32:21" "+0000" "John Gardner" "report@bugs.python.org" nil "37" "[New-bugs-announce] [issue7531] datetime.timedelta doc has incorrect output" "^From:" nil nil "12" nil "[New-bugs-announce] [issue7531] datetime.timedelta doc has incorrect output" nil nil nil nil nil nil nil nil]
	nil)
Delivered-To: skip.montanaro@gmail.com
Received: from pop.gmail.com
 by montanaro.dyndns.org with POP3 (fetchmail-6.3.11)
 for <skip@localhost> (single-drop); Thu, 17 Dec 2009 08:33:59 -0600 (CST)
Received: by 10.216.54.195 with SMTP id i45cs143076wec;
 Thu, 17 Dec 2009 06:32:42 -0800 (PST)
Received: by 10.224.57.21 with SMTP id a21mr1644226qah.122.1261060361553;
 Thu, 17 Dec 2009 06:32:41 -0800 (PST)
Return-Path: <SRS0=GBC3=ID=python.org=new-bugs-announce-bounces+skip=pobox.com@bounce2.pobox.com>
Received: from azure.pobox.com (azure.pobox.com [208.72.237.55])
 by mx.google.com with ESMTP id 35si4081371qyk.96.2009.12.17.06.32.40;
 Thu, 17 Dec 2009 06:32:40 -0800 (PST)
Received-SPF: pass (google.com: domain of
 SRS0=GBC3=ID=python.org=new-bugs-announce-bounces+skip=pobox.com@bounce2.pobox.com
 designates 208.72.237.55 as permitted sender) client-ip=208.72.237.55; 
Authentication-Results: mx.google.com; spf=pass (google.com: domain of
 SRS0=GBC3=ID=python.org=new-bugs-announce-bounces+skip=pobox.com@bounce2.pobox.com
 designates 208.72.237.55 as permitted sender)
 smtp.mail=SRS0=GBC3=ID=python.org=new-bugs-announce-bounces+skip=pobox.com@bounce2.pobox.com;
 dkim=pass header.i=@python.org
Received: from azure.pobox.com (localhost [127.0.0.1])
 by azure.pobox.com (Postfix) with ESMTP id C2DCF4137B7
 for <skip.montanaro@gmail.com>; Thu, 17 Dec 2009 09:32:39 -0500 (EST)
Delivered-To: skip@pobox.com
X-Pobox-Orig-Sender: <new-bugs-announce-bounces+skip=pobox.com@python.org>
X-Pobox-Delivery-ID: 07388556-EB19-11DE-9F00-EB32B5C8119A-00107187!azure.pobox.com
X-Original-To: new-bugs-announce@python.org
x-pobox-client-address: 82.94.164.166
x-pobox-client-name: mail.python.org
Received: from mail.python.org (mail.python.org [82.94.164.166]) by
 azure.pobox.com (Postfix) with ESMTP id 370534137A6 for <skip@pobox.com>;
 Thu, 17 Dec 2009 09:32:37 -0500 (EST)
Received: from albatross.python.org (localhost.localdomain [127.0.0.1]) by
 mail.python.org (Postfix) with ESMTP id 05953F358 for <skip@pobox.com>; Thu,
 17 Dec 2009 15:32:37 +0100 (CET)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=python.org; s=200901;
 t=1261060357; bh=TS8rI+QE9Z5ghTbDhk9sIIAUKYwdnlpTACm6mFCOSnw=;
 h=MIME-Version:To:From:Date:Message-Id:In-Reply-To:Subject:Reply-To:
 List-Id:List-Unsubscribe:List-Archive:List-Post:List-Help:
 List-Subscribe:Content-Type:Content-Transfer-Encoding:Sender;
 b=Fslz7gQLIuxciAXBj182gDR/QEPERTMiL6zreMFj6DY9LGtlBSXGjaoFyAYbS0RC+
 gynfwTaXndnvRgtzirXyklWYnCl8Z4Uh20O9wqZ7KJDtQemmm6Yu7F+3RmtB0c5mkF
 o4ej94Aa4yBmPYnvj70MFTkKtTlS7uVdq4HT5Fhs=
Delivered-To: new-bugs-announce@mail.python.org
Received: from albatross.python.org (localhost.localdomain [127.0.0.1]) by
 mail.python.org (Postfix) with ESMTP id B45CEF1BE for
 <new-bugs-announce@python.org>; Thu, 17 Dec 2009 15:32:25 +0100 (CET)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=python.org; s=200901;
 t=1261060345; i=@python.org; bh=B0p1v9FExvOGaBKxJ9+tNI+fnDyNACpVpWKlwFLKBGM=; 
 h=MIME-Version:Content-Type:Subject:To:From:Date:Reply-To:
 Message-Id:In-Reply-To:Content-Transfer-Encoding;
 b=UOQYMbzf6M+kRur/yyMHg6XgZDfx72f9QWaorFvgNJt1njC8nvzPGNZMoAxutXEHM
 QFglULpZUtsqIxNy8QR22otWDla1dDKk+g5ch0c6jG6f8CSsyX0673ICFzu8KTNLYu
 xhgCfhiX2WNKs13XRmmARnPS1f0zsD46MY+C8Vl8=
X-Spam-Status: OK 0.000
X-Spam-Evidence: '*H*': 1.00; '*S*': 0.00; '----------': 0.03; 'python':
 0.05; 'output': 0.05; 'be:': 0.07; 'subject:output': 0.09; 'type:': 0.09;
 'url:bugs': 0.09; 'subject:] ': 0.15; '2.6,': 0.16;
 'from:addr:bugs.python.org': 0.16; 'from:addr:report': 0.16;
 'message-id:@psf.upfronthosting.co.za': 0.16; 'nosy:': 0.16; 'output.': 0.16; 
 'received:10.0.0.1': 0.16; 'received:88.198.142': 0.16;
 'received:88.198.142.26': 0.16; 'received:psf.upfronthosting.co.za': 0.16;
 'received:upfronthosting.co.za': 0.16; 'reply- to:addr:bugs.python.org':
 0.16; 'reply-to:addr:report': 0.16; 'reply-to:name:python tracker': 0.16;
 'strange': 0.16; 'subject:doc': 0.16; 'subject:incorrect': 0.16; 'tracker':
 0.16; 'header:In-Reply-To:1': 0.16; 'example:': 0.20; 'behavior': 0.23;
 'subject:skip:d 10': 0.23; 'example': 0.29; 'incorrect': 0.29; 'title:':
 0.29; 'subject:[': 0.29; 'open': 0.30; 'changed': 0.31; '(or': 0.35;
 'received:10.0.0': 0.36; 'seem': 0.36; '>>>': 0.37; 'skip:( 20': 0.37;
 'url:python': 0.38; 'skip:_ 30': 0.38; 'url:org': 0.39; 'wrong': 0.62;
 'subject:has': 0.65; 'years.': 0.70; 'header:Reply-To:1': 0.74;
 'components:': 0.84; 'messages:': 0.84; 'relevant.': 0.84; '365': 0.91
Received: from localhost.localdomain (HELO mail.python.org) (127.0.0.1) by
 albatross.python.org with SMTP; 17 Dec 2009 15:32:25 +0100
Received: from psf.upfronthosting.co.za (bugs.python.org [88.198.142.26]) by
 mail.python.org (Postfix) with ESMTP for <new-bugs-announce@python.org>; Thu,
 17 Dec 2009 15:32:25 +0100 (CET)
Received: from psf.upfronthosting.co.za (localhost [10.0.0.1]) by
 psf.upfronthosting.co.za (Postfix) with ESMTP id 7343578603 for
 <new-bugs-announce@python.org>; Thu, 17 Dec 2009 15:32:21 +0100 (CET)
MIME-Version: 1.0
Precedence: bulk
X-Roundup-Name: Python tracker
X-Roundup-Loop: hello
X-Roundup-Version: 1.4.10
Message-Id: <1261060341.46.0.00177327866162.issue7531@psf.upfronthosting.co.za>
X-Roundup-issue-status: open
X-Roundup-issue-type: behavior
X-Roundup-issue-severity: normal
X-Roundup-issue-versions: Python 2.6, Python 3.0, Python 3.1, Python 2.7
X-Roundup-issue-components: Documentation
In-Reply-To: <1261060341.46.0.00177327866162.issue7531@psf.upfronthosting.co.za>
X-BeenThere: new-bugs-announce@python.org
X-Mailman-Version: 2.1.12
List-Id: List for new Python bug reports <new-bugs-announce.python.org>
List-Unsubscribe: <http://mail.python.org/mailman/options/new-bugs-announce>, 
 <mailto:new-bugs-announce-request@python.org?subject=unsubscribe>
List-Archive: <http://mail.python.org/pipermail/new-bugs-announce>
List-Post: <mailto:new-bugs-announce@python.org>
List-Help: <mailto:new-bugs-announce-request@python.org?subject=help>
List-Subscribe: <http://mail.python.org/mailman/listinfo/new-bugs-announce>,
 <mailto:new-bugs-announce-request@python.org?subject=subscribe>
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: 7bit
Errors-To: new-bugs-announce-bounces+skip=pobox.com@python.org
X-Spambayes-Evidence: '*H*': 0.92; '*S*': 0.00; 'header:In-Reply-To:1': 0.03;
 'also,': 0.07; 'skip:_ 40': 0.09; '(or': 0.16; 'changed': 0.16;
 'comments': 0.16; 'example': 0.16; 'john': 0.16; 'python': 0.16;
 'skip:_ 30': 0.16; 'status:': 0.16; 'subject:announce': 0.16;
 'header:Received:11': 0.22; 'email addr:python.org': 0.23;
 'url:listinfo': 0.23; 'subject:] ': 0.26; 'url:org': 0.28;
 'url-ip:82.94.164/24': 0.29; 'url-ip:82.94/16': 0.29; 'url-ip:82/8': 0.29;
 'url:python': 0.29; 'received:208': 0.33; 'received:208.72': 0.33;
 'received:208.72.237': 0.33; 'mailing': 0.35; 'sender:addr:python.org': 0.35;
 'should': 0.35; 'url-ip:82.94.164.166/32': 0.35; 'url:mail': 0.35;
 'subject:-': 0.35; 'received:org': 0.36; 'subject:[': 0.36; 'list': 0.37;
 'charset:us-ascii': 0.38; 'received:82': 0.38; 'received:82.94': 0.38;
 'received:82.94.164': 0.38; 'received:82.94.164.166': 0.38;
 'received:albatross.python.org': 0.38; 'received:mail.python.org': 0.38;
 'received:python.org': 0.38; 'header:Reply-To:1': 0.66; 'skip:d 10': 0.73;
 'incorrect': 0.84; 'received:10.0': 0.84; 'subject:has': 0.84; 'days': 0.91;
 'package': 0.91; 'these': 0.91
From: John Gardner <report@bugs.python.org>
Sender: new-bugs-announce-bounces+skip=pobox.com@python.org
To: new-bugs-announce@python.org
Subject: [New-bugs-announce] [issue7531] datetime.timedelta doc has incorrect
 output
Date: Thu, 17 Dec 2009 14:32:21 +0000
Reply-To: Python tracker <report@bugs.python.org>
X-Spambayes-Classification: ham; 0.04


New submission from John Gardner <python.20.huxoll@spamgourmet.com>:

The output example for timedelta in datetime package has the wrong 
output for the supplied commands.

For example:
>>> ten_years, ten_years.days // 365
(datetime.timedelta(3650), 10)
should be:
>>> ten_years, ten_years.days 
(datetime.timedelta(3650), 3650)
(or perhaps, days changed to years.

It's very misleading to have these strange numbers as output.

Also, the comments to the right don't seem to be relevant.

----------
assignee: georg.brandl
components: Documentation
messages: 96514
nosy: georg.brandl, huxoll
severity: normal
status: open
title: datetime.timedelta doc has incorrect output
type: behavior
versions: Python 2.6, Python 2.7, Python 3.0, Python 3.1

_______________________________________
Python tracker <report@bugs.python.org>
<http://bugs.python.org/issue7531>
_______________________________________
_______________________________________________
New-bugs-announce mailing list
New-bugs-announce@python.org
http://mail.python.org/mailman/listinfo/new-bugs-announce

From SRS0=HNd0=ID=python.org=python-dev-bounces+skip=pobox.com@bounce2.pobox.com  Wed Dec 16 21:18:18 2009
X-VM-v5-Data: ([nil nil nil nil nil nil nil nil nil]
	["1365" "Thursday" "17" "December" "2009" "12:18:00" "+0900" "Stephen J. Turnbull" "stephen@xemacs.org" nil "27" "Re: [Python-Dev] First draft of \"sysconfig\"" "^From:" nil nil "12" nil "[Python-Dev] First draft of \"sysconfig\"" nil nil nil nil nil nil nil nil]
	nil)
Delivered-To: skip.montanaro@gmail.com
Received: from pop.gmail.com
 by montanaro.dyndns.org with POP3 (fetchmail-6.3.11)
 for <skip@localhost> (single-drop); Wed, 16 Dec 2009 21:18:18 -0600 (CST)
Received: by 10.216.54.195 with SMTP id i45cs111374wec;
 Wed, 16 Dec 2009 19:16:58 -0800 (PST)
Received: by 10.220.127.36 with SMTP id e36mr408304vcs.4.1261019816297;
 Wed, 16 Dec 2009 19:16:56 -0800 (PST)
Return-Path: <SRS0=HNd0=ID=python.org=python-dev-bounces+skip=pobox.com@bounce2.pobox.com>
Received: from sienna.pobox.com (sienna.pobox.com [64.74.157.51])
 by mx.google.com with ESMTP id 34si1745328vws.66.2009.12.16.19.16.54;
 Wed, 16 Dec 2009 19:16:55 -0800 (PST)
Received-SPF: pass (google.com: domain of
 SRS0=HNd0=ID=python.org=python-dev-bounces+skip=pobox.com@bounce2.pobox.com
 designates 64.74.157.51 as permitted sender) client-ip=64.74.157.51; 
Authentication-Results: mx.google.com; spf=pass (google.com: domain of
 SRS0=HNd0=ID=python.org=python-dev-bounces+skip=pobox.com@bounce2.pobox.com
 designates 64.74.157.51 as permitted sender)
 smtp.mail=SRS0=HNd0=ID=python.org=python-dev-bounces+skip=pobox.com@bounce2.pobox.com;
 dkim=pass header.i=@python.org
Received: from sienna.pobox.com (localhost [127.0.0.1])
 by sienna.pobox.com (Postfix) with ESMTP id 94055200095
 for <skip.montanaro@gmail.com>; Wed, 16 Dec 2009 22:16:54 -0500 (EST)
Delivered-To: skip@pobox.com
X-Pobox-Orig-Sender: <python-dev-bounces+skip=pobox.com@python.org>
X-Pobox-Delivery-ID: A06F14EC-EABA-11DE-8F30-8BCF38EE6720-00107187!sienna.pobox.com
X-Original-To: python-dev@python.org
x-pobox-client-address: 82.94.164.166
x-pobox-client-name: mail.python.org
Received: from mail.python.org (mail.python.org [82.94.164.166]) by
 sienna.pobox.com (Postfix) with ESMTP id 1D2D920059A for <skip@pobox.com>;
 Wed, 16 Dec 2009 22:16:54 -0500 (EST)
Received: from albatross.python.org (localhost.localdomain [127.0.0.1]) by
 mail.python.org (Postfix) with ESMTP id 821F6F45F for <skip@pobox.com>; Thu,
 17 Dec 2009 04:16:53 +0100 (CET)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=python.org; s=200901;
 t=1261019813; bh=GMNGZ6lPPjGsyvtA73T4lZGnY7SvpvYoaAlJ1T0Prm0=;
 h=From:To:In-Reply-To:References:Date:Message-ID:MIME-Version:Cc:
 Subject:List-Id:List-Unsubscribe:List-Archive:List-Post:List-Help:
 List-Subscribe:Content-Type:Content-Transfer-Encoding:Sender;
 b=pL6gYnY3p+q2tSyHZwiF0rwkloa+mCE9RYBEu6d8nt6ckNrgOK2DL21TdhKofi2a5
 mvnsFpc3h1OyjcURgyZQ0coeo6xTLNib+LkkWFBo3y/WUw3KiHdLqspOlSLNsWsyfJ
 +BrVG0JmfTDkdiejUZyGE3UG5dDMdAUj1VFxgsFw=
Delivered-To: python-dev@mail.python.org
Received: from albatross.python.org (localhost.localdomain [127.0.0.1]) by
 mail.python.org (Postfix) with ESMTP id 6A801F3AC for
 <python-dev@python.org>; Thu, 17 Dec 2009 04:15:00 +0100 (CET)
X-Spam-Status: OK 0.000
X-Spam-Evidence: '*H*': 1.00; '*S*': 0.00; 'subject:Python': 0.02;
 'libraries': 0.04; 'either.': 0.05; 'writes:': 0.05; 'setuptools': 0.07;
 'subject:: [': 0.07; 'pypi': 0.09; 'received:ac.jp': 0.09; 'subject:] ':
 0.15; 'anyway.': 0.16; 'apparently.': 0.16; 'cc:addr :python-dev': 0.16;
 'crossing': 0.16; 'from:addr:stephen': 0.16; 'from:addr:xemacs.org': 0.16;
 'from:name:stephen j. turnbull': 0.16; 'imo': 0.16;
 'message-id:@uwakimon.sk.tsukuba.ac.jp': 0.16; 'received:130.158': 0.16;
 'received:130.158.97': 0.16; 'received:130.158.99': 0.16;
 'received:130.158.99.156': 0.16; 'received:sk.tsukuba.ac.jp': 0.16;
 'received:tsukuba.ac.jp': 0.16; 'received:uwakimon.sk.tsukuba.ac.jp': 0.16;
 'stupid': 0.16; 'subject:Dev': 0.16; 'subject:draft': 0.16; "weren't": 0.16;
 'header:In-Reply-To:1': 0.16; 'project,': 0.17; 'clearly': 0.19; 'cc:no real
 name:2**0': 0.20; 'that,': 0.23; 'usual': 0.25; 'subject: "': 0.25; "i'm":
 0.26; 'cc:addr:python.org': 0.26; 'problem': 0.27; 'written': 0.27; 'pretty':
 0.28; 'sure.': 0.29; 'user': 0.31; 'nobody': 0.31; 'line': 0.32; 'saying':
 0.32; "there's": 0.34; 'something': 0.34; 'either': 0.34; 'there': 0.35;
 'but': 0.35; 'down': 0.35; 'cc:2**1': 0.35; 'except': 0.35; 'attempts': 0.37; 
 'degree': 0.37; 'coming': 0.37; 'charset:us- ascii': 0.37; 'subject:-': 0.37; 
 'what': 0.39; 'being': 0.39; 'use': 0.40; 'created': 0.40; 'received:jp':
 0.61; 'distribute': 0.64; 'interest': 0.64; 'yourself': 0.65; 'others.':
 0.66; 'product': 0.68; 'received:130': 0.69; 'future': 0.70; '*these': 0.84;
 'buy,': 0.84; 'propose.': 0.84
Received: from localhost.localdomain (HELO mail.python.org) (127.0.0.1) by
 albatross.python.org with SMTP; 17 Dec 2009 04:15:00 +0100
Received: from mtps01.sk.tsukuba.ac.jp (mtps01.sk.tsukuba.ac.jp
 [130.158.97.223]) by mail.python.org (Postfix) with ESMTP for
 <python-dev@python.org>; Thu, 17 Dec 2009 04:14:59 +0100 (CET)
Received: from uwakimon.sk.tsukuba.ac.jp (uwakimon.sk.tsukuba.ac.jp
 [130.158.99.156]) by mtps01.sk.tsukuba.ac.jp (Postfix) with ESMTP id
 3B2E71535AE; Thu, 17 Dec 2009 12:14:54 +0900 (JST)
Received: by uwakimon.sk.tsukuba.ac.jp (Postfix, from userid 1000) id
 E93BD1A2A94; Thu, 17 Dec 2009 12:18:00 +0900 (JST)
In-Reply-To: <22b6fd677f9891bde50c8108bc1c4177@preisshare.net>
References: <94bdd2610912121202l48d39325q6f4cdcd73f972d5c@mail.gmail.com>
 <0a500cc770721944b33036da1cb5b3f3@preisshare.net>
 <4B270548.2090600@gmail.com>
 <e8b797fbaaa6f22cdc43ca843a3a9f83@preisshare.net>
 <4B270AFE.1060505@skippinet.com.au>
 <30a87fe1344a9a8c6aa0e25ee099bb43@preisshare.net>
 <4B270F84.5030802@skippinet.com.au>
 <822785ca33912a9c6656ef6d36ae0be9@preisshare.net>
 <20091215093255.GA13198@laurie.devork>
 <db03dda0ae6182a9a309b70fe79339e5@preisshare.net>
 <4B28C29D.6020400@gmail.com>
 <22b6fd677f9891bde50c8108bc1c4177@preisshare.net>
X-Mailer: VM 8.0.12-devo-585 under 21.5 (beta29) "garbanzo" 1444e28f1a3d
 XEmacs Lucid (x86_64-unknown-linux)
Message-ID: <87hbrq5lw7.fsf@uwakimon.sk.tsukuba.ac.jp>
MIME-Version: 1.0
X-BeenThere: python-dev@python.org
X-Mailman-Version: 2.1.12
Precedence: list
List-Id: Python core developers <python-dev.python.org>
List-Unsubscribe: <http://mail.python.org/mailman/options/python-dev>,
 <mailto:python-dev-request@python.org?subject=unsubscribe>
List-Archive: <http://mail.python.org/pipermail/python-dev>
List-Post: <mailto:python-dev@python.org>
List-Help: <mailto:python-dev-request@python.org?subject=help>
List-Subscribe: <http://mail.python.org/mailman/listinfo/python-dev>,
 <mailto:python-dev-request@python.org?subject=subscribe>
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: 7bit
Errors-To: python-dev-bounces+skip=pobox.com@python.org
X-Spambayes-Evidence: '*H*': 0.87; '*S*': 0.00; 'skip:_ 40': 0.04;
 'built': 0.07; 'subject:: [': 0.07; 'libraries': 0.09; 'understand': 0.09;
 'volunteer': 0.09; 'header:In-Reply-To:1': 0.13; 'support': 0.13;
 'either.': 0.16; 'except': 0.16; 'problem': 0.16; 'project,': 0.16;
 'pypi': 0.16; 'saying': 0.16; 'url:options': 0.16;
 'email addr:python.org': 0.17; "don't": 0.17; 'line': 0.20; 'close': 0.24;
 'created': 0.24; 'needed': 0.24; 'subject:Python': 0.24; 'way': 0.27;
 'list': 0.28; 'mailing': 0.30; 'going': 0.31; 'user': 0.31; 'build': 0.32;
 'david': 0.32; 'degree': 0.32; 'point': 0.32; 'things': 0.32;
 'subject:] ': 0.32; 'url:org': 0.32; 'were': 0.33; 'they': 0.34; 'there': 0.35;
 'what': 0.36; 'already': 0.37; 'done': 0.37; 'down': 0.37; 'last': 0.37;
 'road': 0.37; 'but': 0.37; 'use': 0.39; 'either': 0.39;
 'received:userid': 0.39; 'url:python': 0.39; 'url:%0': 0.61; 'future': 0.61;
 'much': 0.61; 'those': 0.61; 'url:pobox': 0.61; 'url:skip': 0.61;
 'received:sienna.pobox.com': 0.62; 'skip:o 10': 0.64;
 'sender:addr:python.org': 0.68; 'url:%40': 0.69; 'you,': 0.75; 'product': 0.78;
 'attempts': 0.84; 'cc:addr:gmail.com': 0.84; 'interest': 0.84; 'nobody': 0.84;
 'received:jp': 0.84; 'unsubscribe:': 0.84; 'usual': 0.84; 'writes:': 0.84;
 'others.': 0.91
From: "Stephen J. Turnbull" <stephen@xemacs.org>
Sender: python-dev-bounces+skip=pobox.com@python.org
To: David Lyon <david.lyon@preisshare.net>
Cc: Nick Coghlan <ncoghlan@gmail.com>, python-dev@python.org
Subject: Re: [Python-Dev] First draft of "sysconfig"
Date: Thu, 17 Dec 2009 12:18:00 +0900
X-Spambayes-Classification: ham; 0.06

David Lyon writes:

 > I'm not star-gazing, because all these things are already
 > needed and already being done to some degree in some
 > organisations. There's already the libraries on pypi for
 > most of this anyway.

Sure.  But in a volunteer project, it's beg, buy, or build.  Begging
has not worked, and it's not because people don't understand what
you're saying.  Nobody is saying that want you want is stupid or
impossible, either.  It's just that they have created those libraries
you mention, they have built PyPI, they have written distutils and
setuptools and others.  *These work well enough* ... except for you,
apparently.  I have no problem with that, and you're welcome to beg.

But IMO at this point you're coming close to crossing the line from
begging to whining.  There clearly is no interest in going down the
road you propose.  Post a bounty or build it yourself (you were pretty
much done with something last time around, weren't you?), and either
way use the usual channels (eg, PyPI) to distribute the product and
accumulate user interest and support for future attempts at logrolling
to get it into the stdlib.
_______________________________________________
Python-Dev mailing list
Python-Dev@python.org
http://mail.python.org/mailman/listinfo/python-dev
Unsubscribe: http://mail.python.org/mailman/options/python-dev/skip%40pobox.com

From SRS0=4URr=IA=python.org=spambayes-bounces+skip=pobox.com@bounce2.pobox.com  Sun Dec 13 18:37:07 2009
X-VM-v5-Data: ([nil nil nil nil nil nil nil nil nil]
	["1970" "Sunday" "13" "December" "2009" "19:35:45" "-0500" "Mark" "fairlane@springcom.com" nil "47" "[Spambayes] Spambayes log file shows failure and spam not being caught." "^From:" nil nil "12" nil "[Spambayes] Spambayes log file shows failure and spam not being caught." nil nil nil nil nil nil nil nil]
	nil)
Delivered-To: skip.montanaro@gmail.com
Received: from pop.gmail.com
 by montanaro.dyndns.org with POP3 (fetchmail-6.3.11)
 for <skip@localhost> (single-drop); Sun, 13 Dec 2009 18:37:07 -0600 (CST)
Received: by 10.216.0.80 with SMTP id 58cs100760wea;
 Sun, 13 Dec 2009 16:36:06 -0800 (PST)
Received: by 10.229.29.204 with SMTP id r12mr2164161qcc.72.1260750965983;
 Sun, 13 Dec 2009 16:36:05 -0800 (PST)
Return-Path: <SRS0=4URr=IA=python.org=spambayes-bounces+skip=pobox.com@bounce2.pobox.com>
Received: from gold.pobox.com (gold.pobox.com [208.72.237.26])
 by mx.google.com with ESMTP id 32si7504273qyk.18.2009.12.13.16.36.04;
 Sun, 13 Dec 2009 16:36:04 -0800 (PST)
Received-SPF: pass (google.com: domain of
 SRS0=4URr=IA=python.org=spambayes-bounces+skip=pobox.com@bounce2.pobox.com
 designates 208.72.237.26 as permitted sender) client-ip=208.72.237.26; 
Authentication-Results: mx.google.com; spf=pass (google.com: domain of
 SRS0=4URr=IA=python.org=spambayes-bounces+skip=pobox.com@bounce2.pobox.com
 designates 208.72.237.26 as permitted sender)
 smtp.mail=SRS0=4URr=IA=python.org=spambayes-bounces+skip=pobox.com@bounce2.pobox.com;
 dkim=pass header.i=@python.org
Received: from gold.pobox.com (localhost [127.0.0.1])
 by gold.pobox.com (Postfix) with ESMTP id CE494411B73
 for <skip.montanaro@gmail.com>; Sun, 13 Dec 2009 19:36:03 -0500 (EST)
Delivered-To: skip@pobox.com
X-Pobox-Orig-Sender: <spambayes-bounces+skip=pobox.com@python.org>
X-Pobox-Delivery-ID: A8E9A4E4-E848-11DE-91BD-8CD1BD47B7EA-00107187!gold.pobox.com
X-Original-To: spambayes@python.org
x-pobox-client-address: 82.94.164.166
x-pobox-client-name: mail.python.org
Received: from mail.python.org (mail.python.org [82.94.164.166]) by
 gold.pobox.com (Postfix) with ESMTP id 5D91C411B5D for <skip@pobox.com>; Sun,
 13 Dec 2009 19:36:03 -0500 (EST)
Received: from albatross.python.org (localhost.localdomain [127.0.0.1]) by
 mail.python.org (Postfix) with ESMTP id 7942AF16E for <skip@pobox.com>; Mon,
 14 Dec 2009 01:36:02 +0100 (CET)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=python.org; s=200901;
 t=1260750962; bh=/9kXp2ar4zJEs/95a8a9gnx/+vwgIc1dRRPxnwZVgGc=;
 h=Message-ID:Date:From:MIME-Version:To:Subject:List-Id:
 List-Unsubscribe:List-Archive:List-Post:List-Help:List-Subscribe:
 Content-Transfer-Encoding:Content-Type:Sender;
 b=qaW7croTAN6AJ7UL2uDihAg2oODMLDe27JKCQbjWQ5EcbMt3z1piKm2NZhYAS0U4d
 1f7pDiSCLDs6h/8RwSzT5RjmNHmIK4D5ewZjKVP+UhICSgc/5CjAuBRp8Nhp9hyp1M
 1+tDsVhCHamN7scjMRc8XJa1+Lgk68T30acuPBeo=
Delivered-To: spambayes@mail.python.org
Received: from albatross.python.org (localhost.localdomain [127.0.0.1]) by
 mail.python.org (Postfix) with ESMTP id 0F84FF09C for <spambayes@python.org>; 
 Mon, 14 Dec 2009 01:35:49 +0100 (CET)
X-Spam-Status: OK 0.029
X-Spam-Evidence: '*H*': 0.94; '*S*': 0.00; 'last):': 0.07; 'traceback': 0.07; 
 '110,': 0.09; 'subject:log': 0.09; 'assert': 0.16;
 'main()': 0.16; 'skip:"
 50': 0.16; 'spambayes.': 0.16; 'subject:Spambayes': 0.16; 'token': 0.16;
 'bit': 0.24; "i've": 0.27; '(most': 0.29; 'subject:spam': 0.29;
 'header:User-Agent:1': 0.30; 'to:addr:spambayes': 0.31; 'issue': 0.32;
 'line': 0.32; 'file': 0.35; 'skip:/ 40': 0.37; 'skip:s 20': 0.39; 'subject:':
 0.40; 'failure': 0.61; 'showing': 0.61; 'hundred': 0.61; 'clues': 0.66;
 'probability': 0.66; 'anything,': 0.84; 'succeeded': 0.84
Received: from localhost.localdomain (HELO mail.python.org) (127.0.0.1) by
 albatross.python.org with SMTP; 14 Dec 2009 01:35:48 +0100
Received: from qsmtp5.america.net (qsmtp5.america.net [69.60.160.248]) (using
 TLSv1 with cipher DHE-RSA-AES256-SHA (256/256 bits)) (No client
 certificate requested) by mail.python.org (Postfix) with ESMTPS for
 <spambayes@python.org>; Mon, 14 Dec 2009 01:35:48 +0100 (CET)
Received: from [72.35.57.25] (helo=[192.168.123.134]) by qsmtp5.america.net
 with esmtp (Exim 4.68) (envelope-from <fairlane@springcom.com>) id
 1NJyug-0000jt-IC for spambayes@python.org; Sun, 13 Dec 2009 19:35:46 -0500
Message-ID: <4B258861.2020507@springcom.com>
User-Agent: Thunderbird 2.0.0.23 (Windows/20090812)
MIME-Version: 1.0
X-BeenThere: spambayes@python.org
X-Mailman-Version: 2.1.12
Precedence: list
List-Id: Discussion list for Pythonic Bayesian classifier
 <spambayes.python.org>
List-Unsubscribe: <http://mail.python.org/mailman/options/spambayes>,
 <mailto:spambayes-request@python.org?subject=unsubscribe>
List-Archive: <http://mail.python.org/pipermail/spambayes>
List-Post: <mailto:spambayes@python.org>
List-Help: <mailto:spambayes-request@python.org?subject=help>
List-Subscribe: <http://mail.python.org/mailman/listinfo/spambayes>,
 <mailto:spambayes-request@python.org?subject=subscribe>
Content-Transfer-Encoding: 7bit
Content-Type: text/plain; charset="us-ascii"; Format="flowed"
Errors-To: spambayes-bounces+skip=pobox.com@python.org
X-Spambayes-Evidence: '*H*': 0.95; '*S*': 0.00; 'skip:_ 40': 0.04;
 'skip:" 20': 0.07; 'skip:_ 10': 0.07; 'bit': 0.09; 'main': 0.09;
 'skip:/ 40': 0.09; 'skip:s 30': 0.09; 'dec': 0.16; 'failure': 0.16;
 'subject:not': 0.16; 'sun': 0.16; 'token': 0.16; 'true)': 0.16;
 'url-ip:216.34.181/24': 0.16; 'url-ip:216.34/16': 0.16; 'url:sf': 0.16;
 'email addr:python.org': 0.17; 'line': 0.20; 'several': 0.20; 'issue': 0.24;
 'call': 0.30; "i've": 0.32; 'seen': 0.32; 'subject:': 0.32; 'subject:] ': 0.32;
 'url:org': 0.32; 'skip:s 20': 0.36; 'data': 0.37;
 'received:(no client certificate requested)': 0.37; 'subject:[': 0.37;
 'header:Received:11': 0.38; 'log': 0.39; 'url-ip:216/8': 0.39;
 'url:python': 0.39; '(1)': 0.61; 'before': 0.65; 'skip:c 10': 0.67;
 'sender:addr:python.org': 0.68; 'return': 0.69; 'special': 0.69;
 'subject:\n ': 0.70; 'anything,': 0.84; 'catch': 0.84; 'messages.': 0.84;
 'spam': 0.84; 'subject:shows': 0.84; 'hundred': 0.91; 'training': 0.93
From: Mark <fairlane@springcom.com>
Sender: spambayes-bounces+skip=pobox.com@python.org
To: spambayes@python.org
Subject: [Spambayes] Spambayes log file shows failure and spam not being
 caught.
Date: Sun, 13 Dec 2009 19:35:45 -0500
X-Spambayes-Classification: ham; 0.03

The following is a bit of my procmail log file showing an issue with 
spambayes.
I've not seen the filter reliably catch anything, in spite of training 
on several hundred messages. 
Any ideas?

Traceback (most recent call last):
  File "/usr/bin/sb_filter.py", line 283, in <module>
    main()
  File "/usr/bin/sb_filter.py", line 274, in main
    action(msg)
  File "/usr/bin/sb_filter.py", line 192, in filter
    return self.h.filter(msg)
  File "/usr/lib/python2.6/site-packages/spambayes/hammie.py", line 156, 
in filter
    debug, train)
  File "/usr/lib/python2.6/site-packages/spambayes/hammie.py", line 110, 
in score_and_filter
    prob, clues = self._scoremsg(msg, True)
  File "/usr/lib/python2.6/site-packages/spambayes/hammie.py", line 39, 
in _scoremsg
    return self.bayes.spamprob(tokenize(msg), evidence)
  File "/usr/lib/python2.6/site-packages/spambayes/classifier.py", line 
196, in chi2_spamprob
    clues = self._getclues(wordstream)
  File "/usr/lib/python2.6/site-packages/spambayes/classifier.py", line 
499, in _getclues
    tup = self._worddistanceget(word)
  File "/usr/lib/python2.6/site-packages/spambayes/classifier.py", line 
514, in _worddistanceget
    prob = self.probability(record)
  File "/usr/lib/python2.6/site-packages/spambayes/classifier.py", line 
317, in probability
    assert spamcount <= nspam, "Token seen in more spam than spam trained."
AssertionError: Token seen in more spam than spam trained.
procmail: Program failure (1) of "/usr/bin/sb_filter.py"
procmail: Rescue of unfiltered data succeeded
 From mark  Sun Dec 13 19:27:22 2009
 Subject: For fairlane special 80% OFF on Pfizer
  Folder: 
/home/mark/Maildir/new/1260750442.15020_2.cyclops                2158

_______________________________________________
SpamBayes@python.org
http://mail.python.org/mailman/listinfo/spambayes
Info/Unsubscribe: http://mail.python.org/mailman/listinfo/spambayes
Check the FAQ before asking: http://spambayes.sf.net/faq.html

From nikunjbadjatya@gmail.com  Thu Dec 17 05:07:07 2009
X-VM-v5-Data: ([nil nil nil t nil nil nil nil nil]
	["1352" "Thursday" "17" "December" "2009" "03:06:38" "-0800" "NikunjBadjatya" "nikunjbadjatya@gmail.com" nil "42" "[pyxl] problem while using xlrd in introspection" "^From:" nil nil "12" nil nil nil nil nil nil nil nil nil nil]
	("ham" "trained"))
Delivered-To: skip.montanaro@gmail.com
Received: from pop.gmail.com
 by montanaro.dyndns.org with POP3 (fetchmail-6.3.11)
 for <skip@localhost> (single-drop); Thu, 17 Dec 2009 05:07:07 -0600 (CST)
Received: by 10.216.54.195 with SMTP id i45cs130521wec;
 Thu, 17 Dec 2009 03:06:40 -0800 (PST)
Received: from mr.google.com ([10.101.168.31])
 by 10.101.168.31 with SMTP id v31mr223931ano.42.1261047999922 (num_hops = 1); 
 Thu, 17 Dec 2009 03:06:39 -0800 (PST)
Received: by 10.101.168.31 with SMTP id v31mr223931ano.42.1261047999921;
 Thu, 17 Dec 2009 03:06:39 -0800 (PST)
X-BeenThere: python-excel@googlegroups.com
Received: by 10.101.214.12 with SMTP id r12ls254681anq.0.p; Thu, 17 Dec 2009 
 03:06:38 -0800 (PST)
Received: by 10.101.135.33 with SMTP id m33mr2357696ann.8.1261047998435;
 Thu, 17 Dec 2009 03:06:38 -0800 (PST)
Received: by 10.101.135.33 with SMTP id m33mr2357695ann.8.1261047998414;
 Thu, 17 Dec 2009 03:06:38 -0800 (PST)
Return-Path: <nikunjbadjatya@gmail.com>
Received: from mail-yx0-f147.google.com (mail-yx0-f147.google.com
 [209.85.210.147])
 by gmr-mx.google.com with ESMTP id 25si218638yxe.5.2009.12.17.03.06.38;
 Thu, 17 Dec 2009 03:06:38 -0800 (PST)
Received-SPF: pass (google.com: domain of nikunjbadjatya@gmail.com designates
 209.85.210.147 as permitted sender) client-ip=209.85.210.147; 
Received: by mail-yx0-f147.google.com with SMTP id 11so3644949yxe.15
 for <python-excel@googlegroups.com>; Thu, 17 Dec 2009 03:06:38 -0800 (PST)
MIME-Version: 1.0
Received: by 10.150.45.39 with SMTP id s39mr214897ybs.56.1261047998379; Thu, 
 17 Dec 2009 03:06:38 -0800 (PST)
X-IP: 160.33.66.121
User-Agent: G2/1.0
X-HTTP-UserAgent: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.0.15) 
 Gecko/2009102918 CentOS/3.0.15-3.el5.centos Firefox/3.0.15, gzip(gfe),
 gzip(gfe)
Message-ID: <4ff5dcab-a780-40e8-b4f4-0acf53ea9db3@m16g2000yqc.googlegroups.com>
X-Original-Authentication-Results: gmr-mx.google.com; spf=pass (google.com: 
 domain of nikunjbadjatya@gmail.com designates 209.85.210.147 as permitted 
 sender) smtp.mail=nikunjbadjatya@gmail.com
X-Original-Sender: nikunjbadjatya@gmail.com
Precedence: list
Mailing-list: list python-excel@googlegroups.com;
 contact python-excel+owners@googlegroups.com
List-ID: <python-excel.googlegroups.com>
List-Post: <http://groups.google.com/group/python-excel/post?hl=>, 
 <mailto:python-excel@googlegroups.com>
List-Help: <http://groups.google.com/support/?hl=>,
 <mailto:python-excel+help@googlegroups.com>
List-Archive: <http://groups.google.com/group/python-excel?hl=>
X-Thread-Url: http://groups.google.com/group/python-excel/t/23621e3db8f0ec81
X-Message-Url: http://groups.google.com/group/python-excel/msg/d4ccbe30e0ccb571
List-Unsubscribe: <http://groups.google.com/group/python-excel/subscribe?hl=>, 
 <mailto:python-excel+unsubscribe@googlegroups.com>
List-Subscribe: <http://groups.google.com/group/python-excel/subscribe?hl=>, 
 <mailto:python-excel+subscribe@googlegroups.com>
Content-Type: text/plain; charset=ISO-8859-1
X-Spambayes-Evidence: '*H*': 0.07; '*S*': 0.65; 'code': 0.04; 'book': 0.16;
 'hi,': 0.16; 'import': 0.16; 'installed': 0.16; 'received:10.101': 0.16;
 'skip:o 20': 0.16; 'taken': 0.16; 'thanks,': 0.16; 'does': 0.23;
 'subject:] ': 0.26; 'its': 0.29; 'received:209': 0.30; 'received:209.85': 0.30;
 'help': 0.30; 'would': 0.34; 'subject:[': 0.36; 'any': 0.38;
 'header:Received:10': 0.39; 'reply-to:addr:googlegroups.com': 0.63;
 'sender:addr:googlegroups.com': 0.63; 'google': 0.63; 'skip:o 10': 0.65;
 'reply-to:no real name:2**0': 0.65; 'email': 0.65; 'header:Reply-To:1': 0.66;
 'group': 0.66; 'following': 0.67; 'group,': 0.68; 'post': 0.68;
 'received': 0.71; 'groups': 0.72; 'group.': 0.80; 'options,': 0.80;
 'email addr:googlegroups.com.': 0.84; 'email name:python-excel': 0.84;
 'reply-to:addr:python-excel': 0.84; 'sender:addr:python-excel': 0.84;
 'subject:pyxl': 0.84; 'to:addr:python-excel': 0.84;
 'to:name:python-excel': 0.84; 'url:en-gb': 0.84; 'url:python-excel': 0.84;
 'greatly': 0.91; 'skip:r 20': 0.91; 'skip:x 10': 0.91; 'skip:p 40': 0.93
From: NikunjBadjatya <nikunjbadjatya@gmail.com>
Sender: python-excel@googlegroups.com
To: python-excel <python-excel@googlegroups.com>
Subject: [pyxl] problem while using xlrd in introspection
Date: Thu, 17 Dec 2009 03:06:38 -0800 (PST)
Reply-To: python-excel@googlegroups.com
X-Spambayes-Classification: spam; 0.79

hi,
I have tested the following code taken from python-excel.com
#!/usr/bin/python2.6
from xlrd import open_workbook
book = open_workbook('simple.xls')
print book.nsheets
for sheet_index in range(book.nsheets):
    print book.sheet_by_index(sheet_index)
print book.sheet_names()
for sheet_name in book.sheet_names():
    print book.sheet_by_name(sheet_name)
for sheet in book.sheets():
    print sheet


its giving me following output :
2
<xlrd.sheet.Sheet object at 0xa24bf6c>         #what does this mean??
<xlrd.sheet.Sheet object at 0xa2503ec>       #what does this mean??
[u'Sheet 1', u'Sheet 2']
<xlrd.sheet.Sheet object at 0xa24bf6c>        #what does this mean??
<xlrd.sheet.Sheet object at 0xa2503ec>                  ''
<xlrd.sheet.Sheet object at 0xa24bf6c>                   ''
<xlrd.sheet.Sheet object at 0xa2503ec>                  ''

the modules xlrd,xlutils,xlwt are installed properly.
i am using python2.6

Any help would be greatly appreciated!!

Thanks,
Niks
Bangalore, INDIA


--

You received this message because you are subscribed to the Google Groups "python-excel" group.
To post to this group, send an email to python-excel@googlegroups.com.
To unsubscribe from this group, send email to python-excel+unsubscribe@googlegroups.com.
For more options, visit this group at http://groups.google.com/group/python-excel?hl=en-GB.


From SRS0=5Qcy=ID=romacomoda.it=info@bounce2.pobox.com  Thu Dec 17 11:38:52 2009
X-VM-v5-Data: ([nil nil nil nil nil nil nil nil nil]
	["2837" "Thursday" "17" "December" "2009" "" "+0100" "RomaComoda" "info@romacomoda.it" nil "51" "RomaComoda " "^From:" nil nil "12" nil nil nil nil nil nil nil nil nil nil]
	nil)
Delivered-To: skip.montanaro@gmail.com
Received: from pop.gmail.com
 by montanaro.dyndns.org with POP3 (fetchmail-6.3.11)
 for <skip@localhost> (single-drop); Thu, 17 Dec 2009 11:38:51 -0600 (CST)
Received: by 10.216.54.195 with SMTP id i45cs157561wec;
 Thu, 17 Dec 2009 09:38:22 -0800 (PST)
Received: by 10.220.125.40 with SMTP id w40mr1066148vcr.17.1261071501172;
 Thu, 17 Dec 2009 09:38:21 -0800 (PST)
Return-Path: <SRS0=5Qcy=ID=romacomoda.it=info@bounce2.pobox.com>
Received: from maroon.pobox.com (maroon.pobox.com [208.72.237.40])
 by mx.google.com with ESMTP id 10si794836vws.60.2009.12.17.09.38.20;
 Thu, 17 Dec 2009 09:38:21 -0800 (PST)
Received-SPF: pass (google.com: domain of
 SRS0=5Qcy=ID=romacomoda.it=info@bounce2.pobox.com designates 208.72.237.40 as
 permitted sender) client-ip=208.72.237.40; 
Authentication-Results: mx.google.com; spf=pass (google.com: domain of
 SRS0=5Qcy=ID=romacomoda.it=info@bounce2.pobox.com designates 208.72.237.40 as
 permitted sender) smtp.mail=SRS0=5Qcy=ID=romacomoda.it=info@bounce2.pobox.com
Received: from maroon.pobox.com (localhost [127.0.0.1])
 by maroon.pobox.com (Postfix) with ESMTP id 485DA415E1B
 for <skip.montanaro@gmail.com>; Thu, 17 Dec 2009 12:38:20 -0500 (EST)
Delivered-To: skip@pobox.com
X-Pobox-Orig-Sender: <info@romacomoda.it>
X-Pobox-Delivery-ID: F73D8F92-EB32-11DE-9D44-DFE75A7D1DDC-00107187!maroon.pobox.com
x-pobox-client-address: 62.149.128.207
x-pobox-client-name: smtpd2.aruba.it
Received: from smtp3.aruba.it (smtpd2.aruba.it [62.149.128.207]) by
 maroon.pobox.com (Postfix) with SMTP id C4D7A415E07 for <skip@pobox.com>;
 Thu, 17 Dec 2009 12:38:10 -0500 (EST)
Received: (qmail 13470 invoked by uid 89); 17 Dec 2009 17:37:59 -0000
Received: from unknown (HELO 192.168.1.63) (info@romacomoda.it@95.224.90.154)
 by smtp3.ad.aruba.it with SMTP; 17 Dec 2009 17:37:59 -0000
Organization: RomaComoda
MIME-Version: 1.0
Content-Type: multipart/alternative;
 boundary="----=_NextPart_000_0000_01C6527E.AE8904D0"
X-Antivirus: avast! (VPS 091217-0, 17/12/2009), Outbound message
X-Antivirus-Status: Clean
X-Spam-Rating: smtp3.ad.aruba.it 1.6.2 0/1000/N
Message-Id: <20091217173810.C4D7A415E07@maroon.pobox.com>
X-Spambayes-Evidence: '*H*': 0.06; '*S*': 0.75; 'received:unknown': 0.16;
 'received:208.72.237.40': 0.22; 'received:maroon.pobox.com': 0.22;
 'received:208': 0.33; 'received:208.72': 0.33; 'received:208.72.237': 0.33;
 'header:Received:8': 0.38; 'to:addr:skip': 0.62; 'to:addr:pobox.com': 0.64;
 'content-type:text/html': 0.66; 'content-type:multipart/alternative': 0.66;
 'from:addr:info': 0.84; 'header:Organization:1': 0.84; 'received:62': 0.84;
 'received:it': 0.84; 'www': 0.84; 'per': 0.91; 'to:name:skip': 0.91
From: "RomaComoda" <info@romacomoda.it>
To: "skip" <skip@pobox.com>
Subject: RomaComoda 
Date: Thu, 17 Dec 2009 18.38.00 +0100
X-Spambayes-Classification: spam; 0.84

This is a multi-part message in MIME format.

------=_NextPart_000_0000_01C6527E.AE8904D0
Content-Type: text/plain;
 charset="iso-8859-1"
Content-Transfer-Encoding: 8bit

Salve. 
Ti invitiamo a visitiare il nuovo Portale www romacomoda.it
ideato per cercare e trovare tutto quello che c'è a Roma e dintorni.
Un portale dove potrai pubblicizzare la tua azienda o semplicemente 
inserire gratuitamente i tuoi annunci di ricerca e vendita.
Cordiali Saluti
------=_NextPart_000_0000_01C6527E.AE8904D0
Content-Type: text/html;
 charset="iso-8859-1"

<HTML>
<HEAD>
<META NAME="GENERATOR" Content="Microsoft DHTML Editing Control">
</HEAD>
<BODY>
<P style="LINE-HEIGHT: 12pt; MARGIN: 6pt 0cm 12pt"><SPAN 
style="FONT-FAMILY: Consolas; mso-fareast-font-family: '@Kozuka Gothic Pro B'; mso-bidi-font-family: Arial">Salve. 
</SPAN><SPAN 
style="FONT-FAMILY: Consolas; FONT-SIZE: 13.5pt; mso-fareast-font-family: '@Kozuka Gothic Pro B'"><o:p></o:p></SPAN></P>
<P style="LINE-HEIGHT: 12pt; MARGIN: 6pt 0cm 12pt"><SPAN 
style="FONT-FAMILY: Consolas; mso-fareast-font-family: '@Kozuka Gothic Pro B'; mso-bidi-font-family: Arial">Ti&nbsp;invitiamo 
a visitiare il nuovo Portale www romacomoda.it<O:P></O:P></SPAN><SPAN 
style="FONT-FAMILY: Consolas; FONT-SIZE: 13.5pt; mso-fareast-font-family: '@Kozuka Gothic Pro B'"><o:p></o:p></SPAN></P>
<P style="LINE-HEIGHT: 12pt; MARGIN: 6pt 0cm 12pt"><SPAN 
style="FONT-FAMILY: Consolas; mso-fareast-font-family: '@Kozuka Gothic Pro B'; mso-bidi-font-family: Arial">ideato 
per cercare e trovare tutto quello che c'è a Roma e dintorni.</SPAN><SPAN 
style="FONT-FAMILY: Consolas; FONT-SIZE: 13.5pt; mso-fareast-font-family: '@Kozuka Gothic Pro B'"><O:P></O:P><o:p></o:p></SPAN></P>
<P style="LINE-HEIGHT: 12pt; MARGIN: 6pt 0cm 12pt"><SPAN 
style="FONT-FAMILY: Consolas; mso-fareast-font-family: '@Kozuka Gothic Pro B'; mso-bidi-font-family: Arial">Un 
portale dove potrai pubblicizzare la tua azienda o 
semplicemente&nbsp;</SPAN><SPAN 
style="FONT-FAMILY: Consolas; FONT-SIZE: 13.5pt; mso-fareast-font-family: '@Kozuka Gothic Pro B'"><o:p></o:p></SPAN></P>
<P style="LINE-HEIGHT: 12pt; MARGIN: 6pt 0cm 12pt"><SPAN 
style="FONT-FAMILY: Consolas; mso-fareast-font-family: '@Kozuka Gothic Pro B'; mso-bidi-font-family: Arial">inserire 
gratuitamente i tuoi annunci di ricerca e vendita.</SPAN><SPAN 
style="FONT-FAMILY: Consolas; FONT-SIZE: 13.5pt; mso-fareast-font-family: '@Kozuka Gothic Pro B'"><o:p></o:p></SPAN></P>
<P style="LINE-HEIGHT: 12pt; MARGIN: 6pt 0cm 12pt"><SPAN 
style="FONT-FAMILY: Consolas; mso-fareast-font-family: '@Kozuka Gothic Pro B'; mso-bidi-font-family: Arial">Cordiali 
Saluti</SPAN><SPAN 
style="FONT-FAMILY: Consolas; FONT-SIZE: 13.5pt; mso-fareast-font-family: '@Kozuka Gothic Pro B'"><o:p></o:p></SPAN></P>
<P>&nbsp;</P>
</BODY>
</HTML>
------=_NextPart_000_0000_01C6527E.AE8904D0--

