#676: Relax constraints on ProductEnvironment callable contract
---------------------------+-----------------------------------
  Reporter:  olemis        |      Owner:  olemis
      Type:  enhancement   |     Status:  accepted
  Priority:  major         |  Milestone:  Release 8
 Component:  multiproduct  |    Version:  0.7.0
Resolution:                |   Keywords:  product env, bep-0003
---------------------------+-----------------------------------

Old description:

> When invoking `multiproduct.ProductEnvironment` the initial versions of
> bep:0003 limited the type of the first argument to
> `trac.env.Environment`. Eventually this led to a considerable number of
> [http://goo.gl/dGZvcE failures] .
>
> In spite of uniformity and simplicity the following enhancements are
> needed :
>
>   - The first argument in a call to `multiproduct.ProductEnvironment`
> class
>      may be an instance of either `multiproduct.ProductEnvironment` or
>      `trac.env.Environment`
>   - The meta-class `__call__` method has to be wrapped with logic
>     similar to `lookup_env` class method
>     * The initializer must still restrict argument type for cache
> consistency
>   - Both `ProductEnvironment.lookup_env` and `lookup_product_env`
>     should be phased out and replaced with direct calls to
>     `ProductEnvironment` class.
>   - Test cases

New description:

 When invoking `multiproduct.ProductEnvironment` the initial versions of
 bep:0003 limited the type of the first argument to `trac.env.Environment`.
 Eventually this led to a considerable number of [http://goo.gl/dGZvcE
 failures] .

 In spite of uniformity and simplicity the following enhancements are
 needed :

   - The first argument in a call to `multiproduct.ProductEnvironment`
 class
     may be an instance of either `multiproduct.ProductEnvironment` or
     `trac.env.Environment`
   - The meta-class `__call__` method has to be wrapped with logic
     similar to `lookup_env` class method
     * The initializer must still restrict argument type for cache
 consistency
   - ~~Both `ProductEnvironment.lookup_env` and `lookup_product_env` should
 be phased out and replaced with direct calls to `ProductEnvironment`
 class.~~
   - Test cases

--

Comment (by olemis):

 Attached patches will solve current issues . Details

 {{{#!sh

 $ hg qapplied
 t676/t676_r1526822_product_env_typecheck.diff
 t676/t676_r1526822_product_env_typecheck.tests.diff

 $ hg log -r qparent
 changeset:   449:ec411de59e61
 tag:         qparent
 tag:         svn-1526822
 user:        astaric@13f79535-47bb-0310-9956-ffa450edef68
 date:        Fri Sep 27 07:59:57 2013 +0000
 summary:     Display relation type in all rows.

 }}}

 PS: `lookup_env` should not be deprecated because it also performs
 environment lookup by name , so it's ok to keep it as an integral part of
 the API .

-- 
Ticket URL: <https://issues.apache.org/bloodhound/ticket/676#comment:4>
Apache Bloodhound <https://issues.apache.org/bloodhound/>
The Apache Bloodhound issue tracker

Reply via email to