id summary reporter owner description type status component version severity resolution keywords cc stage has_patch needs_docs needs_tests needs_better_patch easy ui_ux 31734 warnings.warn() fails when looping over memcache_key_warnings() Rich Rauenzahn nobody "I think I found a bug in cache backends -- while running unit tests I was getting: TypeError: 'type' object cannot be interpreted as an integer I'm not sure why that exact message, but it arises here: {{{ > .../virtualenv-3.6.8/lib64/python3.6/site-packages/django/core/cache/backends/base.py(250)validate_key() 248 """""" 249 for warning in memcache_key_warnings(key): --> 250 warnings.warn(warning, CacheKeyWarning) 251 252 def incr_version(self, key, delta=1, version=None): }}} I think the problem is that for loop is receiving a list of tuples, but they are interpreted as a list of strings: {{{ ipdb> key "":1: for x in memcache_key_warnings(key): print(x) ('Cache key contains characters that will cause errors if used with memcached: "":1:BuildAPI._request:(\'http://buildapi.eng.vmware.com/sb/build/1895757\', expire=10)""', ) # But ""warning"" passed to warnings.warn() is the tuple... ipdb> warning ('Cache key contains characters that will cause errors if used with memcached: "":1:BuildAPI._request:(\'http://buildapi.eng.vmware.com/sb/build/1895757\', expire=10)""', ) ipdb> }}} I think it should be passing warnings.warn(warning[0], warning[1]) or warnings.warn(*warning) Django 2.2.13 is what I am using." Bug closed Core (Cache system) 2.2 Normal duplicate Unreviewed 0 0 0 0 1 0