Re: [Zope-dev] Optional C extensions

2010-03-11 Thread Lennart Regebro
On Thu, Mar 11, 2010 at 00:46, Jim Fulton j...@zope.com wrote:
 On Wed, Mar 10, 2010 at 7:17 AM, Tim Hoffman zutes...@gmail.com wrote:
 ...
 Unfortunately I needed deferredimport and was completely unsure how
 else to proceed at the time.
 I use code generation for gae based models, and the unfortunately
 reference entities need actual models/classes which means you can very
 easily create
 cyclic dependancies.  Storm allows references to be defined strings
 such as model.MyClass  but gae doesn't implement such a thing,
 so deferredimport was the next best thing.

 I thought about this a bit and realized that I could implement
 deferred import without using proxies. I don't know why I didn't think
 of this before.

 Then I looked at the Importing project, which provides the
 peak.util.imports package:

  http://peak.telecommunity.com/DevCenter/Importing

 This looks like a good alternative to zope.deferredimport.  Maybe we
 should deprecate zope.deferredimport in favor of Importing.  If there
 are interesting things that depend on zope.deferredimport that we
 don't want to update, we could reimplement zope.deferredimport using
 Importing.

+1 for Not Invented Here things.

-- 
Lennart Regebro: Python, Zope, Plone, Grok
http://regebro.wordpress.com/
+33 661 58 14 64
___
Zope-Dev maillist  -  Zope-Dev@zope.org
https://mail.zope.org/mailman/listinfo/zope-dev
**  No cross posts or HTML encoding!  **
(Related lists - 
 https://mail.zope.org/mailman/listinfo/zope-announce
 https://mail.zope.org/mailman/listinfo/zope )


Re: [Zope-dev] Optional C extensions

2010-03-10 Thread Jim Fulton
On Tue, Mar 9, 2010 at 6:15 PM, Tim Hoffman zutes...@gmail.com wrote:
 Hi

 As Attila pointed out, zope.proxy is possible to implement using
 peak.util.proxies
 if you only want some limited zope.proxy support.  You won't get
 zope.security going down
 this path.

 I do that specifically so that I can use zope.deferredimport on app engine.

 Below is the awful hacking I do to zope.proxy.__init__ to make it
 support zope.deferredimport on appengine.

Please don't encourage this.

People reading this, please forget you read Tim's email. :)
(Jim whips out special pen and asks that everyone look in his
direction for a moement.)

zope.deferred import should, perhaps, be modified to use
peak.util.proxies, but we should not have packages floating around
that modify zope.proxy to weaken it.

I wish I had agitated to make changes to Python to make deferred
imports use of zope.proxy unnecessary.

Jim

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


Re: [Zope-dev] Optional C extensions

2010-03-10 Thread Tim Hoffman
Hi Jim

Yeah I agree with you.

I haven't ever distributed that version of zope.proxy , just used it
internally to support deferredimport.

zope.security could never to what it does with a pure python version
of zope.proxy. the 'c' wrappers are very important to ensure security.

Unfortunately I needed deferredimport and was completely unsure how
else to proceed at the time.
I use code generation for gae based models, and the unfortunately
reference entities need actual models/classes which means you can very
easily create
cyclic dependancies.  Storm allows references to be defined strings
such as model.MyClass  but gae doesn't implement such a thing,
so deferredimport was the next best thing.


T

On Wed, Mar 10, 2010 at 8:05 PM, Jim Fulton j...@zope.com wrote:
 On Tue, Mar 9, 2010 at 6:15 PM, Tim Hoffman zutes...@gmail.com wrote:
 Hi

 As Attila pointed out, zope.proxy is possible to implement using
 peak.util.proxies
 if you only want some limited zope.proxy support.  You won't get
 zope.security going down
 this path.

 I do that specifically so that I can use zope.deferredimport on app engine.

 Below is the awful hacking I do to zope.proxy.__init__ to make it
 support zope.deferredimport on appengine.

 Please don't encourage this.

 People reading this, please forget you read Tim's email. :)
 (Jim whips out special pen and asks that everyone look in his
 direction for a moement.)

 zope.deferred import should, perhaps, be modified to use
 peak.util.proxies, but we should not have packages floating around
 that modify zope.proxy to weaken it.

 I wish I had agitated to make changes to Python to make deferred
 imports use of zope.proxy unnecessary.

 Jim

 --
 Jim Fulton

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


Re: [Zope-dev] Optional C extensions

2010-03-10 Thread Jim Fulton
On Wed, Mar 10, 2010 at 7:17 AM, Tim Hoffman zutes...@gmail.com wrote:
...
 Unfortunately I needed deferredimport and was completely unsure how
 else to proceed at the time.
 I use code generation for gae based models, and the unfortunately
 reference entities need actual models/classes which means you can very
 easily create
 cyclic dependancies.  Storm allows references to be defined strings
 such as model.MyClass  but gae doesn't implement such a thing,
 so deferredimport was the next best thing.

I thought about this a bit and realized that I could implement
deferred import without using proxies. I don't know why I didn't think
of this before.

Then I looked at the Importing project, which provides the
peak.util.imports package:

  http://peak.telecommunity.com/DevCenter/Importing

This looks like a good alternative to zope.deferredimport.  Maybe we
should deprecate zope.deferredimport in favor of Importing.  If there
are interesting things that depend on zope.deferredimport that we
don't want to update, we could reimplement zope.deferredimport using
Importing.

Importing has other nice features beyond lazy importing.

Personally, I'm going to start switching my uses of
zope.deferredimport to use Importing.

Jim

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


[Zope-dev] Optional C extensions

2010-03-09 Thread Baiju M
Hi,
Any idea how difficult it is to create optional C extensions
for these packages:

zope.container
zope.hookable
zope.proxy
zope.security

I think for all other packages in ZTK has optional C extensions:
http://wiki.zope.org/bluebream/StatusOfWindowsBinaryPackages

Regards,
Baiju M
___
Zope-Dev maillist  -  Zope-Dev@zope.org
https://mail.zope.org/mailman/listinfo/zope-dev
**  No cross posts or HTML encoding!  **
(Related lists - 
 https://mail.zope.org/mailman/listinfo/zope-announce
 https://mail.zope.org/mailman/listinfo/zope )


Re: [Zope-dev] Optional C extensions

2010-03-09 Thread Fred Drake
On Tue, Mar 9, 2010 at 10:53 AM, Baiju M mba...@zeomega.com wrote:
    Any idea how difficult it is to create optional C extensions
 for these packages:

zope.proxy will be fairly difficult to implement without C.  Alternate
Python implementations may be able to use extensions written in other
ways, however.  (Java for Jython, C# for IronPython, etc.)


  -Fred

-- 
Fred L. Drake, Jr.fdrake at gmail.com
Chaos is the score upon which reality is written. --Henry Miller
___
Zope-Dev maillist  -  Zope-Dev@zope.org
https://mail.zope.org/mailman/listinfo/zope-dev
**  No cross posts or HTML encoding!  **
(Related lists - 
 https://mail.zope.org/mailman/listinfo/zope-announce
 https://mail.zope.org/mailman/listinfo/zope )


Re: [Zope-dev] Optional C extensions

2010-03-09 Thread Jim Fulton
On Tue, Mar 9, 2010 at 10:53 AM, Baiju M mba...@zeomega.com wrote:
 Hi,
   Any idea how difficult it is to create optional C extensions
 for these packages:

 zope.container
 zope.hookable
 zope.proxy
 zope.security

I believe it is very hard, if not impossible, for zope.proxy and
zope.security.  I suspect the best approach would be to make a new
package (or set of packages) that provides everything that
zope.security providex except the zope.security.proxy package.  If I
were going to do that though, I would rethink the way proxies and
checkers are managed.

Jim

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


Re: [Zope-dev] Optional C extensions

2010-03-09 Thread Tim Hoffman
Hi

As Attila pointed out, zope.proxy is possible to implement using
peak.util.proxies
if you only want some limited zope.proxy support.  You won't get
zope.security going down
this path.

I do that specifically so that I can use zope.deferredimport on app engine.

Below is the awful hacking I do to zope.proxy.__init__ to make it
support zope.deferredimport on appengine.

Rgds

T

===


from zope.interface import moduleProvides
from zope.proxy.interfaces import IProxyIntrospection

from peak.util.proxies import ObjectProxy

class ProxyBase(ObjectProxy):
 pass

def getProxiedObject(obj):

 if hasattr(obj,'__subject__'):
 return obj.__subject__
 else:
 return obj

def removeAllProxies(obj):
return getProxiedObject(obj)


def sameProxiedObjects(obj1,obj2):
if getProxiedObject(obj1) == getProxiedObject(obj2):
return True
else:
return False






moduleProvides(IProxyIntrospection)
__all__ = tuple(IProxyIntrospection)

def ProxyIterator(p):
yield p
while isProxy(p):
p = getProxiedObject(p)
yield p

def non_overridable(func):
return property(lambda self: func.__get__(self))



On Wed, Mar 10, 2010 at 1:03 AM, Jim Fulton j...@zope.com wrote:
 On Tue, Mar 9, 2010 at 10:53 AM, Baiju M mba...@zeomega.com wrote:
 Hi,
   Any idea how difficult it is to create optional C extensions
 for these packages:

 zope.container
 zope.hookable
 zope.proxy
 zope.security

 I believe it is very hard, if not impossible, for zope.proxy and
 zope.security.  I suspect the best approach would be to make a new
 package (or set of packages) that provides everything that
 zope.security providex except the zope.security.proxy package.  If I
 were going to do that though, I would rethink the way proxies and
 checkers are managed.

 Jim

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

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