Utility factory handling for zope.component

View: New views
6 Messages — Rating Filter:   Alert me  

Utility factory handling for zope.component

by wichert :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

Tools like GenericSetup which deal with mangement of utility
registration are a bit handicapped at the moment: even though you can
register a utility using a factory the utility registration itself
only runs the factory methods but does not keep any information on it.
As a result you can not round-trip utility registration information or
check if the current configuration has changed from an original
configuration.

To fix that I made a wichert-utility-factories branch of zope.component
which adds the factory information to the utility registration. All
changes are fully backbwards compatible at both the API and persistence
level.

If there are no objections I intend to merge the branch to trunk in a
few days.

Wichert.

--
Wichert Akkerman <wichert@...>    It is simple to make things.
http://www.wiggy.net/                   It is hard to make things simple.
_______________________________________________
Zope-Dev maillist  -  Zope-Dev@...
http://mail.zope.org/mailman/listinfo/zope-dev
**  No cross posts or HTML encoding!  **
(Related lists -
 http://mail.zope.org/mailman/listinfo/zope-announce
 http://mail.zope.org/mailman/listinfo/zope )

Re: Utility factory handling for zope.component

by Stephan Richter-2 :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

On Wednesday 23 July 2008, Wichert Akkerman wrote:
> If there are no objections I intend to merge the branch to trunk in a
> few days

I am uncomfortable with the way you approached this. I think there are at
least two other possibilities that I can see without having looked closer:

1. Use the info object. The point of the info is to contain this sort of
information.

2. Make the component have a "factory" attribute. I have done this at some
places for APIDOC as well.

Option 1 seems the cleanest because it was designed d for this.

Regards,
Stephan
--
Stephan Richter
Web Software Design, Development and Training
Google me. "Zope Stephan Richter"
_______________________________________________
Zope-Dev maillist  -  Zope-Dev@...
http://mail.zope.org/mailman/listinfo/zope-dev
**  No cross posts or HTML encoding!  **
(Related lists -
 http://mail.zope.org/mailman/listinfo/zope-announce
 http://mail.zope.org/mailman/listinfo/zope )

Re: Utility factory handling for zope.component

by wichert :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

Stephan Richter wrote:
On Wednesday 23 July 2008, Wichert Akkerman wrote:
  
If there are no objections I intend to merge the branch to trunk in a
few days
    

I am uncomfortable with the way you approached this. I think there are at 
least two other possibilities that I can see without having looked closer:

1. Use the info object. The point of the info is to contain this sort of 
information.
  

Which info object are you referring to? The only information I could see for utility registration is a tuple, not an object. This is used to build the UtilityRegistration object when querying registration information, and I added a factory method there.

2. Make the component have a "factory" attribute. I have done this at some 
places for APIDOC as well.
  

Why would a component need to know how it was created? I can envision that a component may very well have an attribute named factory for something else entirely.

Wichert.

-- 
Wichert Akkerman wichert@...   It is simple to make things.
http://www.wiggy.net/                  It is hard to make things simple.

_______________________________________________
Zope-Dev maillist  -  Zope-Dev@...
http://mail.zope.org/mailman/listinfo/zope-dev
**  No cross posts or HTML encoding!  **
(Related lists -
 http://mail.zope.org/mailman/listinfo/zope-announce
 http://mail.zope.org/mailman/listinfo/zope )

Re: Utility factory handling for zope.component

by Tres Seaver :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

Wichert Akkerman wrote:

> Tools like GenericSetup which deal with mangement of utility
> registration are a bit handicapped at the moment: even though you can
> register a utility using a factory the utility registration itself
> only runs the factory methods but does not keep any information on it.
> As a result you can not round-trip utility registration information or
> check if the current configuration has changed from an original
> configuration.
>
> To fix that I made a wichert-utility-factories branch of zope.component
> which adds the factory information to the utility registration. All
> changes are fully backbwards compatible at both the API and persistence
> level.
>
> If there are no objections I intend to merge the branch to trunk in a
> few days.

+1.


Tres.
- --
===================================================================
Tres Seaver          +1 540-429-0999          tseaver@...
Palladion Software   "Excellence by Design"    http://palladion.com
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.6 (GNU/Linux)
Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org

iD8DBQFIh0/1+gerLs4ltQ4RAqvmAJ9ZhukVeDLQ+MiBTTYtDC6NkEEwYACcCIUn
CpxkKLgOfJjmdulFMgOuqtE=
=rKeM
-----END PGP SIGNATURE-----
_______________________________________________
Zope-Dev maillist  -  Zope-Dev@...
http://mail.zope.org/mailman/listinfo/zope-dev
**  No cross posts or HTML encoding!  **
(Related lists -
 http://mail.zope.org/mailman/listinfo/zope-announce
 http://mail.zope.org/mailman/listinfo/zope )

Re: Utility factory handling for zope.component

by Philipp von Weitershausen :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

Wichert Akkerman wrote:

> Stephan Richter wrote:
>> On Wednesday 23 July 2008, Wichert Akkerman wrote:
>>  
>>> If there are no objections I intend to merge the branch to trunk in a
>>> few days
>>>    
>>
>> I am uncomfortable with the way you approached this. I think there are at
>> least two other possibilities that I can see without having looked closer:
>>
>> 1. Use the info object. The point of the info is to contain this sort of
>> information.
>>  
>
> Which info object are you referring to? The only information I could see
> for utility registration is a tuple, not an object. This is used to
> build the UtilityRegistration object when querying registration
> information, and I added a factory method there.

I think Stephan is referring to the (formerly) last item of the tuple,
which is available as utility_reg.info. It contains information about
how the component was registered, for instance the ZCML file name + line
number.

It looks like Stephan is suggesting to do something like this:

   component = factory()
   registry.registerUtility(component, info=InfoAbout(factory))

whereas Wichert's approach allows you to write:

   registry.registerUtility(factory=factory)

I prefer Wichert's approach.
_______________________________________________
Zope-Dev maillist  -  Zope-Dev@...
http://mail.zope.org/mailman/listinfo/zope-dev
**  No cross posts or HTML encoding!  **
(Related lists -
 http://mail.zope.org/mailman/listinfo/zope-announce
 http://mail.zope.org/mailman/listinfo/zope )

Re: Re: Utility factory handling for zope.component

by Stephan Richter-2 :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

On Wednesday 23 July 2008, Philipp von Weitershausen wrote:

> I think Stephan is referring to the (formerly) last item of the tuple,
> which is available as utility_reg.info. It contains information about
> how the component was registered, for instance the ZCML file name + line
> number.
>
> It looks like Stephan is suggesting to do something like this:
>
>    component = factory()
>    registry.registerUtility(component, info=InfoAbout(factory))
>
> whereas Wichert's approach allows you to write:
>
>    registry.registerUtility(factory=factory)
>
> I prefer Wichert's approach.

Oh, I thought the "component" argument was still required making factory a
documentation artifact. In this case I am okay.

Regards,
Stephan
--
Stephan Richter
Web Software Design, Development and Training
Google me. "Zope Stephan Richter"
_______________________________________________
Zope-Dev maillist  -  Zope-Dev@...
http://mail.zope.org/mailman/listinfo/zope-dev
**  No cross posts or HTML encoding!  **
(Related lists -
 http://mail.zope.org/mailman/listinfo/zope-announce
 http://mail.zope.org/mailman/listinfo/zope )
LightInTheBox - Buy quality products at wholesale price