Path: csiph.com!usenet.pasdenom.info!weretis.net!feeder4.news.weretis.net!ecngs!feeder2.ecngs.de!newsfeed.freenet.ag!news2.euro.net!newsgate.cistron.nl!newsgate.news.xs4all.nl!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.000 X-Spam-Evidence: '*H*': 1.00; '*S*': 0.00; 'interpreter': 0.04; 'attribute': 0.05; 'method.': 0.05; '"c"': 0.07; 'api': 0.09; 'python': 0.09; 'subject:()': 0.09; 'stored': 0.10; 'static': 0.13; ':-)': 0.13; '.py': 0.16; 'code?': 0.16; 'comparisons,': 0.16; 'discussion.': 0.16; 'members?': 0.16; 'oct': 0.16; 'pymemberdef': 0.16; 'subject:array': 0.16; 'tuples,': 0.16; '{0}': 0.16; 'wrote:': 0.17; 'comparing': 0.17; 'appears': 0.18; 'bit': 0.21; 'struct': 0.22; 'tuples': 0.22; 'defined': 0.22; 'header:In-Reply-To:1': 0.25; 'am,': 0.27; 'andrew': 0.27; 'start,': 0.27; 'message-id:@mail.gmail.com': 0.27; 'interface': 0.27; 'source': 0.29; 'received:209.85.215.46': 0.30; 'code': 0.31; 'implement': 0.32; 'file': 0.32; 'legacy': 0.33; 'to:addr :python-list': 0.33; 'received:google.com': 0.34; 'done': 0.34; 'mapping': 0.35; 'pm,': 0.35; 'received:209.85': 0.35; 'but': 0.36; 'level': 0.37; 'received:209': 0.37; 'data': 0.37; 'subject:: ': 0.38; 'copying': 0.38; 'mean': 0.38; 'skip:o 20': 0.38; 'to:addr:python.org': 0.39; 'step': 0.39; 'header:Received:5': 0.40; '30,': 0.62; 'mentioned': 0.63; 'step),': 0.84; 'stop,': 0.84; 'to:name:python': 0.84 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=mime-version:in-reply-to:references:from:date:message-id:subject:to :content-type; bh=9lleG1g4XGN6jpot20G9UkgmQ9b6234E4gjVZFJj41w=; b=dfsVchjveQM5ZTytbAY/Wb8Z1kZS6yisZLOM90WY1llGkbugZiA/gxcbG6AoUz9oA4 +nYQoEwpkpAs9mN5dJqvIBq6NWFGTWXTifKsbLgRbonK3LvuKSJ4gCx5D91uYA274YR4 nLk7lu+7VaPAJnrtK4UpUAvQc05KyWoYiZIDm25e+gIdLIEUVqGJ2QmWPbS30oFpPAW5 LwXvDJw7BzTWT6CVE3kxW7BjahAjYKeR32R0KeAtTK5t1h3dPeXqwTpXucOrhSmsZ0Vw yrSME9qUOjiLESnAtsoJFPb4Jten29LMNSeZVwR0bPVx+len5GnkojA2Ivk4cSpRVLPt tcSg== MIME-Version: 1.0 In-Reply-To: References: <6998a955-7b34-4f4f-b8d6-62d1028f7561@googlegroups.com> <4c024364-84df-403b-8b9e-4a4c8f06121c@googlegroups.com> <508e6649$0$29967$c3e8da3$5496439d@news.astraweb.com> <508E1BC9.3000308@r3dsolutions.com> <508EC428.5080808@r3dsolutions.com> <508FFCD6.3010305@stoneleaf.us> <508FE24E.1060501@r3dsolutions.com> From: Ian Kelly Date: Tue, 30 Oct 2012 16:02:06 -0600 Subject: Re: Negative array indicies and slice() To: Python Content-Type: text/plain; charset=ISO-8859-1 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: 24 NNTP-Posting-Host: 2001:888:2000:d::a6 X-Trace: 1351634559 news.xs4all.nl 6920 [2001:888:2000:d::a6]:35595 X-Complaints-To: abuse@xs4all.nl Xref: csiph.com comp.lang.python:32510 On Tue, Oct 30, 2012 at 3:55 PM, Ian Kelly wrote: > On Tue, Oct 30, 2012 at 8:21 AM, Andrew Robinson > wrote: >> D'Apriano mentioned the named values, start, stop, step in a slice() which >> are an API and legacy issue; These three names must also be stored in the >> interpreter someplace. Since slice is defined at the "C" level as a struct, >> have you already found these names in the source code (hard-coded), or are >> they part of a .py file associated with the interface to the "C" code? > > You mean the mapping of Python attribute names to C struct members? > That's in sliceobject.c: > > static PyMemberDef slice_members[] = { > {"start", T_OBJECT, offsetof(PySliceObject, start), READONLY}, > {"stop", T_OBJECT, offsetof(PySliceObject, stop), READONLY}, > {"step", T_OBJECT, offsetof(PySliceObject, step), READONLY}, > {0} > }; Note that the slice API also includes the slice.indices method. They also implement rich comparisons, but this appears to be done by copying the data to tuples and comparing the tuples, which is actually a bit ironic considering this discussion. :-)