Наименее полезная ошибка за всю историю: Ошибка типа: непредсказуемый тип: 'список'

Я только что переписал большой кусок кода Django, который имел отношение к FSM из 40 с чем-то состояний. Существует множество STATE_DEFINITIONS = "4.7.1" для каждой из трех задействованных моделей и множество проверок, если текущее состояние == SOME_STATE или в [ONE_STATE, OR_ANOTHER].

Есть только одно место, в котором я использую словарь. скажем одна из моделей выглядит так:

class OneModel(models.Model):
    STATUS_ONE = "1.0"
    STATUS_TWO = "2.0"

    STATUS_MAPPING = {
              STATUS_ONE:OtherModel.STATUS_X,
              STATUS_TWO:OtherModels.STATUS_Y,
    }

Все ключи являются уникальными строками, и если я удаляю их из кода, происходит то же самое.

Когда я python manage.py test my_app Я получаю то, что, вероятно, наименее полезное сообщение об ошибке:TypeError: unhashable type: 'list'Вот и все, нет строки, где это происходит, нет контекста. Кто-нибудь есть какие-либо предложения о том, как отладить это, что не предполагает построчно 800+ в файле?

3 ответа

Решение

Попробуйте передать --traceback вариант.

Проверьте manage.py для исключения поведения при глотании; может быть что-то вроде:

try:
    ....
except Exception, exc:
    print exc.message

Если вы найдете это, сделайте это raise вместо этого, чтобы вы могли увидеть весь след.

Если у вас установлен ipython, вы можете попробовать:ipython -i manage.py test my_app, затем введите %debug команда для его отладки.

Другие вопросы по тегам