Opened 8 years ago

Closed 8 years ago

#26409 closed Bug (invalid)

Python 2.7.11 causes manage.py ValueError

Reported by: György Kiss Owned by: nobody
Component: Core (Management commands) Version: 1.9
Severity: Release blocker Keywords:
Cc: Triage Stage: Unreviewed
Has patch: no Needs documentation: no
Needs tests: no Patch needs improvement: no
Easy pickings: no UI/UX: yes

Description

Python 2.7.11 causes this exception when running manage.py or django-admin.py:

Traceback (most recent call last):
  File "./manage.py", line 10, in <module>
    execute_from_command_line(sys.argv)
  File "/usr/local/lib/python2.7/site-packages/django/core/management/__init__.py", line 353, in execute_from_command_line
    utility.execute()
  File "/usr/local/lib/python2.7/site-packages/django/core/management/__init__.py", line 327, in execute
    django.setup()
  File "/usr/local/lib/python2.7/site-packages/django/__init__.py", line 18, in setup
    apps.populate(settings.INSTALLED_APPS)
  File "/usr/local/lib/python2.7/site-packages/django/apps/registry.py", line 115, in populate
    app_config.ready()
  File "/usr/local/lib/python2.7/site-packages/django/contrib/admin/apps.py", line 22, in ready
    self.module.autodiscover()
  File "/usr/local/lib/python2.7/site-packages/django/contrib/admin/__init__.py", line 26, in autodiscover
    autodiscover_modules('admin', register_to=site)
  File "/usr/local/lib/python2.7/site-packages/django/utils/module_loading.py", line 50, in autodiscover_modules
    import_module('%s.%s' % (app_config.name, module_to_search))
  File "/usr/local/lib/python2.7/importlib/__init__.py", line 37, in import_module
    __import__(name)
  File "/officecontrol/src/core/admin.py", line 45, in <module>
    class UserChangeForm(forms.ModelForm):
  File "/usr/local/lib/python2.7/site-packages/django/forms/models.py", line 247, in __new__
    opts.field_classes)
  File "/usr/local/lib/python2.7/site-packages/django/forms/models.py", line 172, in fields_for_model
    formfield = f.formfield(**kwargs)
  File "/usr/local/lib/python2.7/site-packages/django/db/models/fields/__init__.py", line 1120, in formfield
    return super(CharField, self).formfield(**defaults)
  File "/usr/local/lib/python2.7/site-packages/django/db/models/fields/__init__.py", line 884, in formfield
    defaults['choices'] = self.get_choices(include_blank=include_blank)
  File "/usr/local/lib/python2.7/site-packages/django/db/models/fields/__init__.py", line 811, in get_choices
    for choice, __ in choices:
ValueError: too many values to unpack

I can reproduce it every time. Earlier python versions are not affected.
We have a custom User model and customized UserAdmin if it matters.

My dependencies:

django-crispy-forms==1.6.0
django-mptt==0.8.3
django-rest-swagger==0.3.5
django-solo==1.1.2
django-widget-tweaks==1.4.1
Django==1.9.4             # via django-mptt, django-rest-swagger
djangorestframework==3.3.2
MySQL-python==1.2.5
Pillow==3.1.1
pytz==2015.7
PyYAML==3.11              # via django-rest-swagger
uWSGI==2.0.12

It comes up when building with Docker FROM python:2.7 and python:2.7.11 images.

I can't share code, because it's proprietary, but it would be too big to show anyway.

Change History (6)

comment:1 by György Kiss, 8 years ago

Summary: Python 2.7.11Python 2.7.11 causes manage.py ValueError

comment:2 by Tim Graham, 8 years ago

Resolution: needsinfo
Status: newclosed

We need a minimal example to reproduce the crash, otherwise we cannot determine what the problem is.

comment:3 by Aymeric Augustin, 8 years ago

There's likely an issue with the choices kwarg of a field definition. Unfortunately, due to technical limitations of my crystal ball, I cannot guess much more.

in reply to:  3 comment:4 by György Kiss, 8 years ago

Resolution: needsinfo
Status: closednew

Replying to aaugustin:

There's likely an issue with the choices kwarg of a field definition. Unfortunately, due to technical limitations of my crystal ball, I cannot guess much more.

You sir have a pretty good crystal ball!

This line caused the issue:

    timezone_name = models.CharField(_('timezone'), max_length=35,
                                     choices=tuple(pytz.all_timezones),
                                     default=settings.TIME_ZONE)

pytz.all_timezones is not a tuple of two-tuples just a single tuple.
Why does it work in Python 2.7.10 and don't in 2.7.11?

comment:5 by Aymeric Augustin, 8 years ago

Yes, that's the sort of thing I expected...

I'm not sure why this used to work. tuple(pytz.all_timezones) doesn't contain 2-uples so it isn't a valid argument for choices.

As a consequence, I don't believe this is a bug in Django.

in reply to:  5 comment:6 by György Kiss, 8 years ago

Resolution: invalid
Status: newclosed
UI/UX: set

Replying to aaugustin:

Yes, that's the sort of thing I expected...

I'm not sure why this used to work. tuple(pytz.all_timezones) doesn't contain 2-uples so it isn't a valid argument for choices.

As a consequence, I don't believe this is a bug in Django.

Yes, you are right.

Note: See TracTickets for help on using tickets.
Back to Top