#19928: python_2_unicode_compatible breaks Python 2
-------------------------------+---------------------------------
     Reporter:  vernondcole    |      Owner:  nobody
         Type:  Uncategorized  |     Status:  new
    Component:  Uncategorized  |    Version:  master
     Severity:  Normal         |   Keywords:  porting to python 3
 Triage Stage:  Unreviewed     |  Has patch:  0
Easy pickings:  0              |      UI/UX:  0
-------------------------------+---------------------------------
 Following the example in
 [https://docs.djangoproject.com/en/1.5/topics/python3/]
 I made my models.py look like this:

 {{{
 from __future__ import unicode_literals
 from django.db import models
 from django.utils.encoding import python_2_unicode_compatible
 #@python_2_unicode_compatible
 class Ward_Name(models.Model):
     state = models.CharField("State", max_length=55,
         help_text="Nigearin State (large political subdivision)")
     lga = models.CharField("LGA", max_length=255, blank=True,
         help_text="Nigerain Local Government Area (medium political
 subdivision)")
     ward = models.CharField(max_length=255, blank=True,
         help_text="Ward (small political subdivision)")
     db_ward = models.CharField("Db Ward",max_length=255, blank=True,
         help_text="database altered version of Ward name")
     def __str__(self):
         return str('State={}, LGA={}, Ward={}, called "{}"'.format(
             self.state, self.lga, self.ward, self.db_ward))
     class Meta:
         unique_together = (("lga","ward"))
         index_together = [["lga","ward"]]
 }}}
 Note that the decorator is commented out...
 I test using the following code, which works in both Python2.7 and
 Python3.3
 $python manage.py x_test
 {{{
 from __future__ import print_function
 from django.core.management.base import BaseCommand
 from nomads.models import Ward_Name

 class Command(BaseCommand):
     args = "<(none)>"
     help = 'test reading Ward Name data table'

     def handle(self, *args, **options):
         self.test_read(*args)

     def test_read(self, *args):
         qs = Ward_Name.objects.all()
         for w in qs:
             print('Ward=',w)
 }}}
 When I un-comment the decorator the program fails under python 2

 $ python manage.py x_test
 RuntimeError: maximum recursion depth exceeded while calling a Python
 object

 Is the error in the django 1.5 code, the documentation, or my
 understanding?

 (the work-around is easy:  just do not use the feature and everything
 works in both versions)

 (My environment is: Ubuntu 12.10 64 bit
 django 1.5stable pulled from github this morning

-- 
Ticket URL: <https://code.djangoproject.com/ticket/19928>
Django <https://code.djangoproject.com/>
The Web framework for perfectionists with deadlines.

-- 
You received this message because you are subscribed to the Google Groups 
"Django updates" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To post to this group, send email to [email protected].
For more options, visit https://groups.google.com/groups/opt_out.


Reply via email to