Path: csiph.com!usenet.pasdenom.info!news.etla.org!news.stack.nl!newsfeed.xs4all.nl!newsfeed3.news.xs4all.nl!xs4all!post.news.xs4all.nl!not-for-mail Return-Path: X-Original-To: python-list@python.org Delivered-To: python-list@mail.python.org X-Spam-Status: OK 0.015 X-Spam-Evidence: '*H*': 0.97; '*S*': 0.00; 'algorithm': 0.04; '(python': 0.07; 'none:': 0.07; 'alias': 0.09; 'attributes': 0.09; 'hiding': 0.09; 'skip:# 60': 0.09; 'cc:addr:python-list': 0.11; 'python': 0.11; 'def': 0.12; '"""return': 0.16; '@property': 0.16; '__lt__(self,': 0.16; 'add(self,': 0.16; 'dict': 0.16; 'incomplete': 0.16; 'len(self)': 0.16; 'otherwise:': 0.16; 'remove(self,': 0.16; 'skip:l 90': 0.16; 'skip:{ 30': 0.16; 'smith"': 0.16; 'uppercase': 0.16; 'numerical': 0.19; 'split': 0.19; 'written': 0.21; 'code,': 0.22; 'example': 0.22; 'import': 0.22; 'tests': 0.22; 'cc:addr:python.org': 0.22; 'instance,': 0.24; 'logical': 0.24; 'replace': 0.24; 'subject:Code': 0.24; 'helpful': 0.24; "haven't": 0.24; 'cc:2**0': 0.24; 'cc:no real name:2**0': 0.24; 'sort': 0.25; 'header:In-Reply-To:1': 0.27; 'correct': 0.29; 'wondering': 0.29; 'code': 0.31; 'comments': 0.31; 'keys': 0.31; 'class': 0.32; 'worked': 0.33; '-----': 0.33; 'skip:_ 10': 0.34; 'could': 0.34; 'advice': 0.35; 'classes': 0.35; 'skip:s 30': 0.35; 'hundreds': 0.35; 'test': 0.35; 'but': 0.35; 'add': 0.35; 'functions.': 0.36; 'in.': 0.36; 'ordered': 0.36; 'sequence': 0.36; 'done': 0.36; "i'll": 0.36; 'too': 0.37; 'list': 0.37; 'email addr:python.org': 0.37; 'feedback': 0.38; 'thank': 0.38; 'subject:': 0.39; 'enough': 0.39; 'read': 0.60; 'most': 0.60; 'you.': 0.62; 'back': 0.62; 'information': 0.63; 'card': 0.63; 'reached': 0.63; 'received:194': 0.64; 'more': 0.64; 'cards': 0.65; 'email name:python-list': 0.65; 'to:addr:gmail.com': 0.65; 'biggest': 0.67; 'notice:': 0.67; 'on...': 0.68; 'person,': 0.68; 'privileged.': 0.69; 'disclose': 0.74; 'hand': 0.80; '14:': 0.84; 'amateur': 0.84; 'cards,': 0.84; 'random,': 0.84; 'unitary': 0.84; 'medium.': 0.91; 'rank': 0.93 X-IronPort-AV: E=Sophos;i="5.07,314,1413237600"; d="scan'208";a="3550858" Date: Tue, 4 Nov 2014 20:10:29 +0100 (CET) From: Jean-Michel Pichavant To: C Smith In-Reply-To: Subject: Re: Code review MIME-Version: 1.0 X-Mailer: Zimbra 7.2.7_GA_2942 (ZimbraWebClient - GC37 (Linux)/7.2.7_GA_2942) Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Cc: python-list@python.org X-BeenThere: python-list@python.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: General discussion list for the Python programming language List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Newsgroups: comp.lang.python Message-ID: Lines: 70 NNTP-Posting-Host: 2001:888:2000:d::a6 X-Trace: 1415128232 news.xs4all.nl 2945 [2001:888:2000:d::a6]:60933 X-Complaints-To: abuse@xs4all.nl Xref: csiph.com comp.lang.python:80221 LS0tLS0gT3JpZ2luYWwgTWVzc2FnZSAtLS0tLQo+IEZyb206ICJDIFNtaXRoIiA8aWxsdXNpb250 ZWNobmlxdWVzQGdtYWlsLmNvbT4KPiBUbzogcHl0aG9uLWxpc3RAcHl0aG9uLm9yZwo+IFNlbnQ6 IFR1ZXNkYXksIDQgTm92ZW1iZXIsIDIwMTQgNDoyODozMyBQTQo+IFN1YmplY3Q6IENvZGUgcmV2 aWV3Cj4gCj4gSSB3YXMgd29uZGVyaW5nIGlmIEkgY291bGQgZ2V0IHNvbWUgZmVlZGJhY2sgb24g dGhlIGJpZ2dlc3QgdGhpbmcgSQo+IGhhdmUgZG9uZSBhcyBhbiBhbWF0ZXVyIFB5dGhvbiBjb2Rl ci4gVGhlIHNpZGVwb3RzIGFsZ29yaXRobSBpc24ndAo+IGNvcnJlY3QgeWV0LCBidXQgSSBoYXZl bid0IHdvcmtlZCBvbiBpdCBpbiBhIHdoaWxlIGFuZCB0aG91Z2h0IEkKPiB3b3VsZAo+IGdldCBz b21lIGFkdmljZSBiZWZvcmUgZGl2aW5nIGJhY2sgaW4uCj4gCj4gaW1wb3J0IHJhbmRvbSwgb3MK PiAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMKPiBjbGFzcyBUYWJsZShvYmplY3QpOgo+ICAgICBkZWYgX19pbml0X18oc2Vs ZixiaWdibGluZD0yMCxQTEFZRVJOVU09MCxwb3Q9MCxQTEFZRVJPUkRFUj1Ob25lLAo+IGhhbmRf ZG9uZT0wLFwKPiAgICAgbGVmdF90b19hY3Q9Tm9uZSxjb3N0X3RvX3BsYXk9MCxpbl9oYW5kPU5v bmUsbGFzdF9yYWlzZT0wLGNhcmRzX2luX3BsYXk9Tm9uZSxyb3VuZD0ncHJlZmxvcCcpOgo+ICAg ICAgICAgaWYgY2FyZHNfaW5fcGxheSBpcyBOb25lOgo+ICAgICAgICAgICAgIGNhcmRzX2luX3Bs YXkgPSBbXQo+ICAgICAgICAgaWYgaW5faGFuZCBpcyBOb25lOgo+ICAgICAgICAgICAgIGluX2hh bmQgPSBbXQo+ICAgICAgICAgaWYgUExBWUVST1JERVIgaXMgTm9uZToKPiAgICAgICAgICAgICBQ TEFZRVJPUkRFUiA9IFtdCj4gICAgICAgICBpZiBsZWZ0X3RvX2FjdCBpcyBOb25lOgo+ICAgICAg ICAgICAgIGxlZnRfdG9fYWN0ID0gW10KCltzbmlwIGh1bmRyZWRzIG9mIGNvZGUgbGluZXNdCgog IC0gTW9zdCBtZXRob2RzIGhhdmUgdG9vIG11Y2ggY29kZSwgc3BsaXQgbWV0aG9kcyBpbnRvIG1v cmUgdW5pdGFyeSBsb2dpY2FsIGZ1bmN0aW9ucy4KICAgICAtIEZvciBpbnN0YW5jZSwgYWRkIGNs YXNzZXMgJ0hhbmQnIGFuZCAnQ2FyZCcKICAtIG5vdCBlbm91Z2ggY29tbWVudHMKICAtIGhhdmUg eW91IHdyaXR0ZW4gc29tZSB0ZXN0cz8gVGhlIGNvZGUgcmVhY2hlZCBhIHJlYXNvbmFibGUgc2l6 ZSB3aGVyZSB0ZXN0cyB3b3VsZCBiZSB2ZXJ5IGhlbHBmdWwgKG1vZHVsZSB1bml0dGVzdCkKICAt IHdoeSBkbyB5b3UgdXNlIHVwcGVyY2FzZSBhdHRyaWJ1dGVzID8gbGlrZSBQTEFZRVJPUkRFUi4g VGhlc2UgYXJlIG5vdCAnY29uc3RhbnRzJywgeW91IGNoYW5nZSB0aGVtCgoKRXhhbXBsZSBvZiAo aW5jb21wbGV0ZSkgQ2FyZCAgYW5kIEhhbmQgaW1wbGVtZW50YXRpb24gKHB5dGhvbiAyLjcpOgoK Y2xhc3MgQ2FyZChvYmplY3QpOgogICIiIkNhcmQgaW1wbGVtZW50YXRpb24uIiIiCiAgZGVmIF9f aW5pdF9fKHNlbGYsIHN1aXQsIHJhbmspOgogICAgc2VsZi5fc3VpdCA9IHN1aXQKICAgIHNlbGYu X3JhbmsgPSByYW5rCgogICMgd3JpdGUgdGVzdCBjYXJkMSA9PSBjYXJkMgogIGRlZiBfX2VxX18o c2VsZiwgb3RoZXIpOgogICAgcmV0dXJuIChzZWxmLnN1aXQsIHNlbGYucmFuaykgPT0gKG90aGVy LnN1aXQsIG90aGVyLnJhbmspCgogICMgdXNlIGNhcmRzIGFzIGRpY3Qga2V5cwogIGRlZiBfX2hh c2hfXyhzZWxmKToKICAgIHJldHVybiBoYXNoKHNlbGYuc3VpdCwgc2VsZi5yYW5rKQoKICAjIHdp bGwgYWxsb3cgcHl0aG9uIHRvIHNvcnQgYSBsaXN0IG9mIGNhcmRzCiAgZGVmIF9fbHRfXyhzZWxm LCBvdGhlcik6CiAgICByZXR1cm4gaW50KHNlbGYpIDwgaW50KG90aGVyKQoKICBkZWYgX19pbnRf XyhzZWxmKToKICAgICIiIlJldHVybiB0aGUgbnVtZXJpY2FsIHZhbHVlIG9mIGEgY2FyZCIiIgog ICAgIyB0aGUgZGljdGlvbmFyeSBpcyBpbmNvbXBsZXRlCiAgICByZXR1cm4geycxJzoxLCcyJzoy LCdKJzoxMSwnUSc6MTJ9W3NlbGYucmFua10KCiAgZGVmIF9fc3RyX18oc2VsZik6CiAgICByZXR1 cm4gJzxDYXJkKCVzIG9mICVzKT4nICUgKHNlbGYucmFuaywgc2VsZi5zdWl0KQoKICAjIGFsaWFz IGluIGNhc2UgY2FyZC5yYW5rIGhhcyBtb3JlIG1lYW5pbmcgdGhhbiBpbnQoY2FyZCkKICBAcHJv cGVydHkKICBkZWYgcmFuayhzZWxmKToKICAgIHJldHVybiBpbnQoc2VsZikKCiAgIyByZWFkIG9u bHkgYWNjZXNzIHRvIHN1aXQKICBAcHJvcGVydHkKICBkZWYgc3VpdChzZWxmKToKICAgIHJldHVy biBzZWxmLl9zdWl0CgoKY2xhc3MgSGFuZChvYmplY3QpOgogICIiIlNob3J0IGluY29tcGxldGUg ZXhhbXBsZSBvZiBIYW5kIGNsYXNzIiIiCiAgIGRlZiBfX2luaXRfXyhzZWxmKToKICAgICAgc2Vs Zi5fY2FyZHMgPSBbXQoKICAgZGVmIGFkZChzZWxmLCBjYXJkKToKICAgICBpZiBub3Qgc2VsZi5m dWxsOgogICAgICAgIHNlbGYuX2NhcmRzLmFwcGVuZChjYXJkKQogICAgICAgIGlmIGNhcmQucmFu ayA9PSAxNDogIyBpdCdzIGFuIEFjZQogICAgICAgICAgICMgdHJpY2sgdG8gZ2V0IEFjZSBjb25z aWRlcmVkIGFzIDEgYXMgd2VsbAogICAgICAgICAgIHNlbGYuX2NhcmRzLmFwcGVuZChDYXJkKGNh cmQuc3VpdGUsICcxJykpCgogICAjIGdlbmVyYXRlIHRoZSBvcmRlcmVkIHNlcXVlbmNlIG9mIGNh cmRzLCBoaWRpbmcgdGhlICcxJyBjYXJkcwogICBAcHJvcGVydHkKICAgZGVmIGNhcmRzKHNlbGYp OgogICAgIHJldHVybiAoY2FyZCBmb3IgY2FyZCBpbiBzb3J0ZWQoc2VsZi5fY2FyZHMpIGlmIGNh cmQucmFuayA+IDEpCgogICAjIGFsbG93IHRvIHdyaXRlIGxlbihoYW5kKQogICBkZWYgX19sZW5f XyhzZWxmKToKICAgICByZXR1cm4gbGVuKGxpc3Qoc2VsZi5jYXJkcykpCiAgCiAgI3Byb3BlcnR5 CiAgZGVmIGZ1bGwoc2VsZik6CiAgICByZXR1cm4gbGVuKHNlbGYpID09IDUKCiAgIyBhbGxvdyB0 byB3cml0ZSAnZm9yIGNhcmQgaW4gaGFuZDonCiAgZGVmIF9faXRlcl9fKHNlbGYpOgogICAgIHJl dHVybiBpdGVyKHNlbGYuY2FyZHMpCiAgICAgICAgICAKICBkZWYgcmVtb3ZlKHNlbGYsIGNhcmQp OgogICAgICMgYW5kIHNvIG9uLi4uCgoKT3RoZXJ3aXNlOgoKcmVwbGFjZSAKICBpZiBsZWZ0X3Rv X2FjdCBpcyBOb25lOgogICAgbGVmdF90b19hY3QgPSBbXQogIHNlbGYubGVmdF90b19hY3QgPSBs ZWZ0X3RvX2FjdApieQogIHNlbGYubGVmdF90b19hY3QgPSBsZWZ0X3RvX2FjdCBvciBbXQoKcmVw bGFjZQogIGlmIHJhbmt5ID09IDkgb3IgcmFua3kgPT0gNQpieQogIGlmIHJhbmt5IGluIFs5LDVd CgpyZXBsYWNlIAogIGlmIGZvbyA9PSBUcnVlCmJ5CiAgaWYgZm9vCgpyZXBsYWNlCiAgaWYgbGVu KHNlbGYubGVmdF90b19hY3QpID09IDAKYnkgCiAgaWYgc2VsZi5sZWZ0X3RvX2FjdAoKQW5kIG11 Y2ggbW9yZS4uLiBidXQgaG9uZXN0bHksIHRoZXJlJ3MgdG9vIG11Y2ggY29kZSA6KQpJJ2xsIGxl dCB5b3UgY2hldyBvbiB0aGlzIG9uZS4KCkpNCgoKLS0gSU1QT1JUQU5UIE5PVElDRTogCgpUaGUg Y29udGVudHMgb2YgdGhpcyBlbWFpbCBhbmQgYW55IGF0dGFjaG1lbnRzIGFyZSBjb25maWRlbnRp YWwgYW5kIG1heSBhbHNvIGJlIHByaXZpbGVnZWQuIElmIHlvdSBhcmUgbm90IHRoZSBpbnRlbmRl ZCByZWNpcGllbnQsIHBsZWFzZSBub3RpZnkgdGhlIHNlbmRlciBpbW1lZGlhdGVseSBhbmQgZG8g bm90IGRpc2Nsb3NlIHRoZSBjb250ZW50cyB0byBhbnkgb3RoZXIgcGVyc29uLCB1c2UgaXQgZm9y IGFueSBwdXJwb3NlLCBvciBzdG9yZSBvciBjb3B5IHRoZSBpbmZvcm1hdGlvbiBpbiBhbnkgbWVk aXVtLiBUaGFuayB5b3UuCg==