Наименее полезная ошибка за всю историю: Ошибка типа: непредсказуемый тип: 'список'
Я только что переписал большой кусок кода 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 ответа
Проверьте manage.py
для исключения поведения при глотании; может быть что-то вроде:
try:
....
except Exception, exc:
print exc.message
Если вы найдете это, сделайте это raise
вместо этого, чтобы вы могли увидеть весь след.
Если у вас установлен ipython, вы можете попробовать:ipython -i manage.py test my_app
, затем введите %debug
команда для его отладки.