On Tuesday, February 1, 2011 3:16:12 PM UTC-5, Massimo Di Pierro wrote: 

> In web2py you cannot store instances of objects into session. While 
> Armin makes it tool like this is a web2py problem this is more complex 
> and general than that. In Python if you pickle and object that is 
> instance of a class defined in /path1/mymodule.py and then you 
> unpickle on a different installation where the class is defined in / 
> path2/mymodule.py you may run into problems. Because web2py does not 
> require installation (it is a feature) and has hot plug and play of 
> apps (another feature) we cannot pickle instances (the price we pay 
> for those features). To me it is worth it.
>
 
Is this limitation documented anywhere?
 

> I agree with Armin that in the case of exec (and web2py uses exec), 
> the self references are created whether you want them or not. That 
> means one should not define classes in Models and Controllers. I have 
> issued that warning already to our users and, I have never seen this 
> being a problem in practice.
>
 
My understanding is that with the recent fix (using gc), we can include 
classes in models and controllers, as long as they don't have a __del__ 
method (
https://groups.google.com/forum/#!msg/web2py/zE1cGK2x288/R6fTdEQjNOoJ). Is 
that right? That should be documented as well.
 

> Nothing in life is perfect and every design decision has a tradeoff.
>
 
A quote from Armin's post:

"Because one of the things we all have to keep in mind: if a Python 
developer starts his journeys in the twisted world of wrongly executed 
Python modules they will be very confused when they continue their travels 
in another Python environment. And having different semantics in different 
frameworks/modules/libraries is very hurtful for Python as a runtime and 
language."

He (and Jacob, and others) seems to be very concerned about following 
conventions. Of course, that's reasonable, as conventions can be very 
helpful, but there's always going to be some tension be convention and 
innovation. The above quote implies dire consequences if a few libraries and 
frameworks happen to buck this particular convention, but is there actual 
evidence of significant developer confusion or other supposed harm to 
Python? If we extend this logic, Python itself probably shouldn't exist 
because it violates conventions established by C and other earlier languages 
and might confuse developers as they move between environments.
 
Anyway, it's interesting that Armin didn't find arguments about the 
importance of convention so compelling when it came to creating an 
alternative to the Standard Library logging module: 
http://plumberjack.blogspot.com/2010/09/python-logging-functionality-facts-vs.html
 
Anthony 

Reply via email to