<div dir="ltr"><br><div class="gmail_extra"><br><div class="gmail_quote">On Wed, Feb 15, 2017 at 4:05 PM, Ilhan Polat <span dir="ltr"><<a href="mailto:ilhanpolat@gmail.com" target="_blank">ilhanpolat@gmail.com</a>></span> wrote:<br><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"><div><div>On the last item, do we really have to follow that strange, `d`,`g` and so on conventions on formatting? With all respect to the humongous historical baggage, I think that notation is pretty archaic and terminal like. If being pythonic is of a concern here, maybe it is better to use a more verbose syntax. Just throwing out an idea after 15 seconds of thought (so by no means an alternative suggestion)<br><br></div><div>eng:6i5d -> engineering notation (always powers of ten of multiples of 3) 6 integral digits and 5 decimal digits. <br></div><div>float (whatever the default is)<br></div><div>float:4i2d (you get the idea)<br><br></div><div>etc.<br></div><div><br></div></div></div></blockquote><div><br></div><div>While I agree with you that printf format codes are arcane, unfortunately they need to be used here since they are supported by Python:</div><div><br></div><div><a href="https://docs.python.org/3.1/library/string.html#formatspec">https://docs.python.org/3.1/library/string.html#formatspec</a><br></div><div> </div><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"><div><div><br></div>FULL DISCLOSURE: I am a very displeased customer of `fprintf ` of matlab (and others) and this archaic formatting. I never got a hang of it so it might be the case that I don't quite get the rationale behind it and I almost always get it wrong. Maybe at least the rationale can be clarified. <br><br><br></div>Lastly, repeating what others mentioned: thank you for this well prepared initiative<br><br><br><div><br></div></div><div class="gmail-HOEnZb"><div class="gmail-h5"><div class="gmail_extra"><br><div class="gmail_quote">On Wed, Feb 15, 2017 at 10:48 PM, Gustav Larsson <span dir="ltr"><<a href="mailto:larsson@cs.uchicago.edu" target="_blank">larsson@cs.uchicago.edu</a>></span> wrote:<br><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"><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">This is great!</blockquote><div><br></div><div>Thanks! Glad to be met by enthusiasm about this.<span><br><br><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">1. You basically have a NEP already! Making a PR from it allows to<br>
give line-by-line comments, so would help!</blockquote><div><br></div></span><div>I will do this soon.<span><br><br><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">2. Don't worry about supporting python2 specifics; just try to ensure<br>
it doesn't break; I would not say more about it!</blockquote><div><br></div></span><div>Sounds good to me.<span><br><br><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">3. On `set_printoptions` -- ideally, it will become possible to use<br>
this as a context (i.e., `with set_printoption(...)`). It might make<br>
sense to have an `override_format` keyword argument to it.</blockquote><div><br></div></span><div>Having a `with np.printoptions(...)` context manager is a great idea. It does sound orthogonal to __format__ though, so it could be addressed separately.<span><br><br><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">4. Otherwise, my main suggestion is to start small with the more<br>
obvious ones, and not worry too much about format validation, but<br>
rather about getting the simple ones to work well (e.g., for an object<br>
array, just apply the format given; if it doesn't work, it will error<br>
out on its own, which is OK).</blockquote><div><br></div></span><div>Sounds good to me. I was thinking of approaching the implementation by writing unit tests first and group them into different priority tiers. That way, the unit tests can go through another review before implementation gets going. I agree that __format__ doesn't have to check format validation if a ValueError is going to be raised anyway by sub-calls.<span><br><br><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">5. One bit of detail: the "g" one does confuse me.</blockquote><div><br></div></span><div>I will re-write this a bit to make it clearer. Basically, the 'g' with the mix of 'e'/'f' depending on max/min>1000 is all from the current numpy behavior, so it is not something I had much creative input on at all. Although, as it is written right now it may seem so. That is, the goal is to have {:} == {:g} for float arrays, analogous to how {:} == {:g} for built-in floats. Then, if the user departs a bit, like {:.2g}, it will simply be identical to calling np.set_printoptions(precision=<wbr>2) first.<span class="gmail-m_4704890116302133606HOEnZb"><font color="#888888"><br><br></font></span></div><span class="gmail-m_4704890116302133606HOEnZb"><font color="#888888"><div>Gustav<br></div></font></span></div></div></div></div></div></div><div class="gmail-m_4704890116302133606HOEnZb"><div class="gmail-m_4704890116302133606h5"><div class="gmail_extra"><br><div class="gmail_quote">On Wed, Feb 15, 2017 at 8:03 AM, Marten van Kerkwijk <span dir="ltr"><<a href="mailto:m.h.vankerkwijk@gmail.com" target="_blank">m.h.vankerkwijk@gmail.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">Hi Gustav,<br>
<br>
This is great!  A few quick comments (mostly echo-ing Stephan's).<br>
<br>
1. You basically have a NEP already! Making a PR from it allows to<br>
give line-by-line comments, so would help!<br>
<br>
2. Don't worry about supporting python2 specifics; just try to ensure<br>
it doesn't break; I would not say more about it!<br>
<br>
3. On `set_printoptions` -- ideally, it will become possible to use<br>
this as a context (i.e., `with set_printoption(...)`). It might make<br>
sense to have an `override_format` keyword argument to it.<br>
<br>
4. Otherwise, my main suggestion is to start small with the more<br>
obvious ones, and not worry too much about format validation, but<br>
rather about getting the simple ones to work well (e.g., for an object<br>
array, just apply the format given; if it doesn't work, it will error<br>
out on its own, which is OK).<br>
<br>
5. One bit of detail: the "g" one does confuse me.<br>
<br>
All the best,<br>
<br>
Marten<br>
<div class="gmail-m_4704890116302133606m_-916240367325059924HOEnZb"><div class="gmail-m_4704890116302133606m_-916240367325059924h5">______________________________<wbr>_________________<br>
NumPy-Discussion mailing list<br>
<a href="mailto:NumPy-Discussion@scipy.org" target="_blank">NumPy-Discussion@scipy.org</a><br>
<a href="https://mail.scipy.org/mailman/listinfo/numpy-discussion" rel="noreferrer" target="_blank">https://mail.scipy.org/mailman<wbr>/listinfo/numpy-discussion</a><br>
</div></div></blockquote></div><br></div>
</div></div><br>______________________________<wbr>_________________<br>
NumPy-Discussion mailing list<br>
<a href="mailto:NumPy-Discussion@scipy.org" target="_blank">NumPy-Discussion@scipy.org</a><br>
<a href="https://mail.scipy.org/mailman/listinfo/numpy-discussion" rel="noreferrer" target="_blank">https://mail.scipy.org/mailman<wbr>/listinfo/numpy-discussion</a><br>
<br></blockquote></div><br></div>
</div></div><br>______________________________<wbr>_________________<br>
NumPy-Discussion mailing list<br>
<a href="mailto:NumPy-Discussion@scipy.org">NumPy-Discussion@scipy.org</a><br>
<a href="https://mail.scipy.org/mailman/listinfo/numpy-discussion" rel="noreferrer" target="_blank">https://mail.scipy.org/<wbr>mailman/listinfo/numpy-<wbr>discussion</a><br>
<br></blockquote></div><br></div></div>