<div dir="ltr"><div class="gmail_extra"><div class="gmail_quote">On Sun, Jan 7, 2018 at 9:09 AM, Eric V. Smith <span dir="ltr"><<a href="mailto:eric@trueblade.com" target="_blank">eric@trueblade.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><span class="">On 1/3/2018 1:17 PM, Eric V. Smith wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
I’ll open an issue after I have time to read this thread and comment on it.<br>
</blockquote>
<br>
</span><a href="https://bugs.python.org/issue32513" rel="noreferrer" target="_blank">https://bugs.python.org/issue3<wbr>2513</a><br>
I need to think though how __eq__ and __ne__ work, as well as the ordering operators.<br>
<br>
My specific concern with __ne__ is that there's one flag to control their generation, but python will use "not __eq__" if you don't provide __ne__. I need to think through what happens if the user only provides __eq__: does dataclasses do nothing, does it add __ne__, and how does this interact with a base class that does provide __ne__.<span class="HOEnZb"><font color="#888888"></font></span></blockquote><div><br></div><div>Maybe dataclasses should only ever provide __eq__ and always assume Python's default for __ne__ kicks in? If that's not acceptable (maybe there are cases where a user did write an explicit __ne__ that needs to be overridden) I would recommend the following rule:</div><div><br></div><div>- If there's an __eq__, don't do anything (regardless of whether there's an __ne__)<br></div><div>- If there no __eq__ but there is an __ne__, generate __eq__ but don't generate __ne__</div><div>- If neither exists, generate both<br></div><div> </div></div>-- <br><div class="gmail_signature" data-smartmail="gmail_signature">--Guido van Rossum (<a href="http://python.org/~guido" target="_blank">python.org/~guido</a>)</div>
</div></div>