#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.

Reply via email to