<div dir="ltr"><div class="gmail_extra"><div class="gmail_quote">On Mon, Sep 11, 2017 at 8:21 PM, Barry Warsaw <span dir="ltr"><<a href="mailto:barry@python.org" target="_blank">barry@python.org</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 Sep 11, 2017, at 19:16, Guido van Rossum <<a href="mailto:guido@python.org">guido@python.org</a>> wrote:<br>
><br>
> Or we could just have two arguments, eq=<bool> and order=<bool>, and some rule so that you only need to specify one or the other but not both. (E.g. order=True implies eq=True.) That seems better than needing new constants just for this flag.<br>
<br>
</span>You’d have to disallow the combination `order=True, eq=False` then, right?  Or would you ignore eq for any value of order=True?  Seems like a clumsier API than a single tri-value parameter.  Do the module constants bother you that much?</blockquote><div><br></div><div>Yes they do. You may have to import them, or you have to prefix them with the module name -- whereas keyword args and True/False require neither.</div><div><br></div><div>We could disallow order=True, eq=True. Or we could have the default being to generate __eq__, __ne__ and __hash__, and a flag to prevent these (since equality by object identity is probably less popular than equality by elementwise comparison).  <br></div><div><br></div><div>Perhaps:</div><div><br></div><div>order: bool = False</div><div>eq: bool = True</div><div><br></div><div>and disallowing order=True, eq=False.<br></div></div><br>-- <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>