<div dir="ltr">Hi all,<div><br></div><div>I have a slight variant of the decorator proposal.</div><div>Rather than specify a count, let the decorator implement the typeshed dunder convention:</div><div><br></div><div><span style="font-family:monospace,monospace;font-size:12.8px">@positional_only</span><span class="gmail-im" style="font-family:monospace,monospace;font-size:12.8px"><br><span style="color:rgb(33,33,33);font-size:13px"> def replace(self, __old, __new, count=-1):</span></span><br></div><div><span class="gmail-im" style="font-family:monospace,monospace;font-size:12.8px"><span style="color:rgb(33,33,33);font-size:13px"><br></span></span></div><div><span class="gmail-im" style="font-family:monospace,monospace;font-size:12.8px"><span style="color:rgb(33,33,33);font-size:13px">(I imagine this decorator would also treat "self" as position_only,</span></span></div><div><span class="gmail-im" style="font-family:monospace,monospace;font-size:12.8px"><span style="color:rgb(33,33,33);font-size:13px">so no need for __self.)</span></span></div><div><span class="gmail-im" style="font-family:monospace,monospace;font-size:12.8px"><span style="color:rgb(33,33,33);font-size:13px"><br></span></span></div><div><span class="gmail-im" style="font-family:monospace,monospace;font-size:12.8px"><span style="color:rgb(33,33,33);font-size:13px">Pros:</span></span></div><div><span class="gmail-im" style="font-family:monospace,monospace;font-size:12.8px"><span style="color:rgb(33,33,33);font-size:13px">1. Consistent with the typeshed convention.</span></span></div><div><span class="gmail-im" style="font-family:monospace,monospace;font-size:12.8px"><span style="color:rgb(33,33,33);font-size:13px">2. Avoids a count.</span></span></div><div><span class="gmail-im" style="font-family:monospace,monospace;font-size:12.8px"><span style="color:rgb(33,33,33);font-size:13px">3. Strictly opt-in, so hopefully keeps those @#?! underscore preservationists from picketing my lawn (again!).</span></span></div><div><span class="gmail-im" style="font-family:monospace,monospace;font-size:12.8px"><span style="color:rgb(33,33,33);font-size:13px"><br></span></span></div><div><span class="gmail-im" style="font-family:monospace,monospace;font-size:12.8px"><span style="color:rgb(33,33,33);font-size:13px">Stephan</span></span></div><div><span class="gmail-im" style="font-family:monospace,monospace;font-size:12.8px"><span style="color:rgb(33,33,33);font-size:13px"><br></span></span></div><div><span class="gmail-im" style="font-family:monospace,monospace;font-size:12.8px"><span style="color:rgb(33,33,33);font-size:13px"><br></span></span></div><div class="gmail_extra"><br><div class="gmail_quote">2017-03-02 4:16 GMT+01:00 Chris Barker <span dir="ltr"><<a href="mailto:chris.barker@noaa.gov" target="_blank">chris.barker@noaa.gov</a>></span>:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr"><span class="">On Wed, Mar 1, 2017 at 2:16 PM, אלעזר <span dir="ltr"><<a href="mailto:elazarg@gmail.com" target="_blank">elazarg@gmail.com</a>></span> wrote:<br></span><div class="gmail_extra"><div class="gmail_quote"><span class=""><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="ltr">I like the idea, but I wanted to note that since it has no meaning from the point of view of the defined function, it can be done with a magic decorator, so new syntax is not required:<div class="gmail_quote"><div><br></div><div>@positional_only[:4]</div><div><span style="color:rgb(33,33,33);font-size:13px">def replace(self, old, new, count=-1):</span><br></div><div><span style="color:rgb(33,33,33);font-size:13px"> ...</span></div></div></div></blockquote><div><br></div></span><div>I"m confused, what does the [:4] mean?<br><br></div><div>if you want old and new to be positional only, wouldn't it be something like:<br><br></div><div><span style="font-family:monospace,monospace">@positional_only(3)<span class=""><br><span style="color:rgb(33,33,33);font-size:13px"> def replace(self, old, new, count=-1):</span></span></span></div><div><span style="font-family:monospace,monospace"> ...<br></span><br></div><div>i.e. the first three parameters are positional only.<br></div><div><br></div><div>and why indexing/slice syntax???<br></div><div><br></div><div>+! on the idea -- still on the fence about syntax.<br><br></div><div>-CHB<span class="HOEnZb"><font color="#888888"><br></font></span></div><span class="HOEnZb"><font color="#888888"><div><br clear="all"></div></font></span></div><span class="HOEnZb"><font color="#888888"><br>-- <br><div class="m_1780345453572453406gmail_signature"><br>Christopher Barker, Ph.D.<br>Oceanographer<br><br>Emergency Response Division<br>NOAA/NOS/OR&R (206) 526-6959 voice<br>7600 Sand Point Way NE (206) 526-6329 fax<br>Seattle, WA 98115 (206) 526-6317 main reception<br><br><a href="mailto:Chris.Barker@noaa.gov" target="_blank">Chris.Barker@noaa.gov</a></div>
</font></span></div></div>
<br>______________________________<wbr>_________________<br>
Python-ideas mailing list<br>
<a href="mailto:Python-ideas@python.org">Python-ideas@python.org</a><br>
<a href="https://mail.python.org/mailman/listinfo/python-ideas" rel="noreferrer" target="_blank">https://mail.python.org/<wbr>mailman/listinfo/python-ideas</a><br>
Code of Conduct: <a href="http://python.org/psf/codeofconduct/" rel="noreferrer" target="_blank">http://python.org/psf/<wbr>codeofconduct/</a><br></blockquote></div><br></div></div>