Am 22.12.2011 03:08, schrieb Alexey U. Gudchenko:
15.12.2011 13:07, Joachim Durchholz пишет:
int_tested was supposed to do
if x!=int(x) raise error, else x = int(x)
which happens in a couple of handful cases in the SymPy code.
(In fact the whole int_tested idea sprouted from issue #1740, where this
idiom was not applied but should have been.)

Chris proposed using a decorator, Aaron proposed to extend it to float,
my proposal here is to use a decorator that can handle arbitrary types
and even arbitrary "normalization functions".
I also reworked the interface so that the decorator can use an arbitrary
mixture of normalizers; e.g.


As I found, the original discussion is here.

https://github.com/sympy/sympy/pull/713

Yes.

Note that there is a REP 3107 for the type checking (It is stalled though):

http://markmail.org/message/onxlt4t5mjqkls6k?q=thread:pruvsejfjvarfodk

That's for Python 3, so it's not going to help us as long as we're based on 2.x.

In particular there exist an old third side module (2006 last updated,
overgrown with the other functionality a little, though):

http://oakwinter.com/code/typecheck/tutorial/basics.html

I'd prefer to remain focused on the task given: Unify and simplify the error handling around cases like

  def f(a)
    a = int(a)

A fully general type checking framework, interesting as it would be, would be too far outside the scope of my Python competence to promise any useful results. Besides, the typecheck module is dead. Even the users mailing list had its last activity in 2009: three mails, all of them questions and none answers.

At least the name-token 'accept' is more understandable for me if we
only check the types and raise an error (and do not transform/align the
types of th arguments)

The code does transform/align the argument type.

It's right in the docstring:

    If each result compares equal with the original argument, the result
    is passed to the wrapped function;

The checking aspect is more an afterthought, as the docstring continues:

    if any result does not compare
    equal, the wrapped function is not called and a ValueError is raised
    instead.

It's obvious that this wasn't visible enough on first glance if you missed that; do you have an idea how to change the docstring to avoid the next person reading the function falling to that trap?

Regards,
Jo

--
You received this message because you are subscribed to the Google Groups 
"sympy" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to 
[email protected].
For more options, visit this group at 
http://groups.google.com/group/sympy?hl=en.

Reply via email to