#12978: conditionally_defined decorator for methods and nested classes
-------------------------------------------------+-------------------------
Reporter: nthiery | Owner: jason
Type: enhancement | Status: new
Priority: major | Milestone: sage-
Component: misc | wishlist
Keywords: categories, | Resolution:
conditionally_defined | Merged in:
Authors: | Reviewers:
Report Upstream: N/A | Work issues:
Branch: | Commit:
Dependencies: | Stopgaps:
-------------------------------------------------+-------------------------
Comment (by SimonKing):
Replying to [comment:11 nthiery]:
> Just being curious: does this play well with @cached_method? That is,
can we do something like:
> {{{
> @conditionally_defined(...)
> @cached_method
> def ...
> }}}
Didn't try yet. Ideally, it would also work to do
{{{
@cached_method
@conditionally_defined
}}}
meaning that we have a cached method whose underlying implementation
depends on a condition. I.e., if the condition is not met, then the method
inherited from the super-class is taken, and then cached (even when it is
not cached in the super-class).
> Could you further implement the {{{has="..."}}} (or {{{hasattr="..."}}})
argument to {{{@conditionally_defined}}} as in the example of the ticket
description?
I hope so.
> The ticket description also mentions conditionally defined nested
classes. I actually don't remember putting this there; did I really? Do we
have any strong use case? Otherwise I guess we can postpone the feature.
I think nobody has changed the ticket description after you created it :)
But anyway, I think it can not work with the current implementation, yet.
Namely, if the condition is met, then the wrapped "function" will be
turned into a bound method (by calling `types.MethodType`). I guess this
would fail if the "function" is in fact a class.
--
Ticket URL: <http://trac.sagemath.org/ticket/12978#comment:12>
Sage <http://www.sagemath.org>
Sage: Creating a Viable Open Source Alternative to Magma, Maple, Mathematica,
and MATLAB
--
You received this message because you are subscribed to the Google Groups
"sage-trac" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
To post to this group, send email to [email protected].
Visit this group at http://groups.google.com/group/sage-trac.
For more options, visit https://groups.google.com/groups/opt_out.