From: Tristan K. <tri...@jc...> - 2007-09-23 23:10:15
|
you were close :) "return unicode(self)" instead i've attached a test file to the bug i submitted at: https://sourceforge.net/tracker/index.php?func=detail&aid=1800378&group_id=12867&atid=112867 On Sun, 2007-09-23 at 12:55 -0700, Charlie Groves wrote: > Hi Tristan, > > Would you mind coming up with a small test case that shows this going > off the rails? From reading your description, the basic object setup > sounds like the following: > > class Model(object): > def __str__(self): > return self.__unicode__() > > class Poll(Model): > pass > > However, that code complains about the lack of __unicode__ under > CPython or Jython with your changes in place, so I must be missing > something. > > Charlie > > On 9/21/07, Tristan King <tri...@jc...> wrote: > > Ok I've been working on the problem quoted at the end of this email and have > > come up with a solution. but i'm not sure what to make of it. > > > > Poll extends from Model and does not implement __str__ or __unicode__, but > > inherits __str__ from Model, which calls __unicode__, and __unicode__ from > > object. however, object.__unicode__ calls __str__, which in this case is > > model.__str__ and so the loop begins. > > > > of course this code works fine in CPython. so what's different? > > simple: > > > > tristan@quiver:~$ python > > Python 2.5.1 (r251:54863, May 2 2007, 16:56:35) > > [GCC 4.1.2 (Ubuntu 4.1.2-0ubuntu4)] on linux2 > > Type "help", "copyright", "credits" or "license" for more information. > > >>> hasattr(object, '__unicode__') > > False > > >>> > > tristan@quiver:~$ jython > > Jython 2.3a0 on java1.5.0_11 > > Type "copyright", "credits" or "license" for more information. > > >>> hasattr(object, '__unicode__') > > True > > >>> > > > > so, applying the following patch to jython fixes the aforementioned problem. > > and running 'ant bugtests' shows no change > > Index: jython/src/org/python/core/PyObject.java > > =================================================================== > > --- jython/src/org/python/core/PyObject.java (revision > > 3484) > > +++ jython/src/org/python/core/PyObject.java (working > > copy) > > @@ -224,7 +224,7 @@ > > } > > } > > - dict.__setitem__("__unicode__",new > > PyMethodDescr("__unicode__",PyObject.class,0,0,new > > exposed___unicode__(null,null))); > > + //dict.__setitem__("__unicode__",new > > PyMethodDescr("__unicode__", PyObject.class,0,0,new > > exposed___unicode__(null,null))); > > class exposed___init__ extends PyBuiltinMethod { > > exposed___init__(PyObject self,PyBuiltinFunction.Info info) { > > > > My question is. Why, if in CPython object.__unicode__ doesn't exist, why > > does it in jython? > > > > > > On 20/09/2007, at 7:30 PM, Tristan King wrote: > > > > I've been working on getting the django tutorial to work, and got up to: > > --------------- > > # objects.all() displays all the polls in the database. > > Poll.objects.all() > > [<Poll: Poll object>] > > -------------- > > before writing this (i'm about to pack it in for the day), which threw me a > > nasty error: > > .......... > > File > > "/usr/local/share/jython/Lib/django/db/models/base.py", > > line 101, in __str__ > > File > > "/usr/local/share/jython/Lib/django/utils/encoding.py", > > line 37, in force_unicode > > File > > "/usr/local/share/jython/Lib/django/db/models/base.py", > > line 101, in __str__ > > File > > "/usr/local/share/jython/Lib/django/utils/encoding.py", > > line 37, in force_unicode > > java.lang.StackOverflowError: java.lang.StackOverflowError > > > > > > ------------------------------------------------------------------------- > > This SF.net email is sponsored by: Microsoft > > Defy all challenges. Microsoft(R) Visual Studio 2005. > > http://clk.atdmt.com/MRT/go/vse0120000070mrt/direct/01/ > > _______________________________________________ > > Jython-dev mailing list > > Jyt...@li... > > https://lists.sourceforge.net/lists/listinfo/jython-dev > > > > > > --~--~---------~--~----~------------~-------~--~----~ > You received this message because you are subscribed to the Google Groups "Django developers" group. > To post to this group, send email to dja...@go... > To unsubscribe from this group, send email to dja...@go... > For more options, visit this group at http://groups.google.com/group/django-developers?hl=en > -~----------~----~----~----~------~----~------~--~--- > |