-
Notifications
You must be signed in to change notification settings - Fork 155
Open
Description
When using the pympler memory profiler's panel for Django debug toolbar, I frequently get this error/traceback:
Django Version: 5.2.7
Python Version: 3.12.11
Traceback (most recent call last):
File "[redacted]/.venv/lib/python3.12/site-packages/django/core/handlers/exception.py", line 55, in inner
response = get_response(request)
^^^^^^^^^^^^^^^^^^^^^
File "[redacted]/.venv/lib/python3.12/site-packages/debug_toolbar/middleware.py", line 122, in __call__
response = toolbar.process_request(request)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "[redacted]/.venv/lib/python3.12/site-packages/debug_toolbar/panels/__init__.py", line 214, in process_request
return self.get_response(request)
^^^^^^^^^^^^^^^^^^^^^^^^^^
File "[redacted]/.venv/lib/python3.12/site-packages/debug_toolbar/panels/__init__.py", line 214, in process_request
return self.get_response(request)
^^^^^^^^^^^^^^^^^^^^^^^^^^
File "[redacted]/.venv/lib/python3.12/site-packages/debug_toolbar/panels/timer.py", line 65, in process_request
return super().process_request(request)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "[redacted]/.venv/lib/python3.12/site-packages/debug_toolbar/panels/__init__.py", line 214, in process_request
return self.get_response(request)
^^^^^^^^^^^^^^^^^^^^^^^^^^
File "[redacted]/.venv/lib/python3.12/site-packages/debug_toolbar/panels/__init__.py", line 214, in process_request
return self.get_response(request)
^^^^^^^^^^^^^^^^^^^^^^^^^^
File "[redacted]/.venv/lib/python3.12/site-packages/debug_toolbar/panels/headers.py", line 48, in process_request
return super().process_request(request)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "[redacted]/.venv/lib/python3.12/site-packages/debug_toolbar/panels/__init__.py", line 214, in process_request
return self.get_response(request)
^^^^^^^^^^^^^^^^^^^^^^^^^^
File "[redacted]/.venv/lib/python3.12/site-packages/debug_toolbar/panels/__init__.py", line 214, in process_request
return self.get_response(request)
^^^^^^^^^^^^^^^^^^^^^^^^^^
File "[redacted]/.venv/lib/python3.12/site-packages/debug_toolbar/panels/__init__.py", line 214, in process_request
return self.get_response(request)
^^^^^^^^^^^^^^^^^^^^^^^^^^
File "[redacted]/.venv/lib/python3.12/site-packages/debug_toolbar/panels/__init__.py", line 214, in process_request
return self.get_response(request)
^^^^^^^^^^^^^^^^^^^^^^^^^^
File "[redacted]/.venv/lib/python3.12/site-packages/debug_toolbar/panels/__init__.py", line 214, in process_request
return self.get_response(request)
^^^^^^^^^^^^^^^^^^^^^^^^^^
File "[redacted]/.venv/lib/python3.12/site-packages/debug_toolbar/panels/__init__.py", line 214, in process_request
return self.get_response(request)
^^^^^^^^^^^^^^^^^^^^^^^^^^
File "[redacted]/.venv/lib/python3.12/site-packages/debug_toolbar/panels/__init__.py", line 214, in process_request
return self.get_response(request)
^^^^^^^^^^^^^^^^^^^^^^^^^^
File "[redacted]/.venv/lib/python3.12/site-packages/debug_toolbar/panels/__init__.py", line 214, in process_request
return self.get_response(request)
^^^^^^^^^^^^^^^^^^^^^^^^^^
File "[redacted]/.venv/lib/python3.12/site-packages/pympler/panels.py", line 71, in process_request
self._tracker.create_snapshot('after')
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "[redacted]/.venv/lib/python3.12/site-packages/pympler/classtracker.py", line 572, in create_snapshot
tobj.track_size(timestamp, sizer)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "[redacted]/.venv/lib/python3.12/site-packages/pympler/classtracker.py", line 135, in track_size
(ts, sizer.asized(obj, detail=self._resolution_level))
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "[redacted]/.venv/lib/python3.12/site-packages/pympler/asizeof.py", line 1944, in asized
t = self._sizes(objs, Asized)
^^^^^^^^^^^^^^^^^^^^^^^^^
File "[redacted]/.venv/lib/python3.12/site-packages/pympler/asizeof.py", line 1917, in _sizes
s[i] = self._sizer(o, 0, 0, sized)
^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "[redacted]/.venv/lib/python3.12/site-packages/pympler/asizeof.py", line 1888, in _sizer
s += z(o, i, d, None)
^^^^^^^^^^^^^^^^
File "[redacted]/.venv/lib/python3.12/site-packages/pympler/asizeof.py", line 1888, in _sizer
s += z(o, i, d, None)
^^^^^^^^^^^^^^^^
File "[redacted]/.venv/lib/python3.12/site-packages/pympler/asizeof.py", line 1888, in _sizer
s += z(o, i, d, None)
^^^^^^^^^^^^^^^^
File "[redacted]/.venv/lib/python3.12/site-packages/pympler/asizeof.py", line 1888, in _sizer
s += z(o, i, d, None)
^^^^^^^^^^^^^^^^
File "[redacted]/.venv/lib/python3.12/site-packages/pympler/asizeof.py", line 1888, in _sizer
s += z(o, i, d, None)
^^^^^^^^^^^^^^^^
File "[redacted]/.venv/lib/python3.12/site-packages/pympler/asizeof.py", line 1888, in _sizer
s += z(o, i, d, None)
^^^^^^^^^^^^^^^^
File "[redacted]/.venv/lib/python3.12/site-packages/pympler/asizeof.py", line 1888, in _sizer
s += z(o, i, d, None)
^^^^^^^^^^^^^^^^
File "[redacted]/.venv/lib/python3.12/site-packages/pympler/asizeof.py", line 1888, in _sizer
s += z(o, i, d, None)
^^^^^^^^^^^^^^^^
File "[redacted]/.venv/lib/python3.12/site-packages/pympler/asizeof.py", line 1888, in _sizer
s += z(o, i, d, None)
^^^^^^^^^^^^^^^^
File "[redacted]/.venv/lib/python3.12/site-packages/pympler/asizeof.py", line 1888, in _sizer
s += z(o, i, d, None)
^^^^^^^^^^^^^^^^
File "[redacted]/.venv/lib/python3.12/site-packages/pympler/asizeof.py", line 1888, in _sizer
s += z(o, i, d, None)
^^^^^^^^^^^^^^^^
File "[redacted]/.venv/lib/python3.12/site-packages/pympler/asizeof.py", line 1888, in _sizer
s += z(o, i, d, None)
^^^^^^^^^^^^^^^^
File "[redacted]/.venv/lib/python3.12/site-packages/pympler/asizeof.py", line 1887, in _sizer
for o in v.refs(obj, False):
^^^^^^^^^^^^^^^^^^
File "[redacted]/.venv/lib/python3.12/site-packages/pympler/asizeof.py", line 574, in _refs
for a, o in _dir2(obj, **kwds):
^^^^^^^^^^^^^^^^^^
File "[redacted]/.venv/lib/python3.12/site-packages/pympler/asizeof.py", line 346, in _dir2
if hasattr(obj, slots):
^^^^^^^^^^^^^^^^^^^
File "[redacted]/.venv/lib/python3.12/site-packages/diskcache/fanout.py", line 66, in __getattr__
assert valid_name, 'cannot access {} in cache shard'.format(name)
^^^^^^^^^^
Exception Type: AssertionError at /99101/
Exception Value: cannot access __slots__ in cache shard
Raising AttributeError instead of AssertionError will allow hasattr() to work correctly:
In [5]: class Foo:
...: def __getattr__(self, name):
...: raise AttributeError
...:
In [6]: hasattr(Foo(), '__slots__')
Out[6]: FalseMetadata
Metadata
Assignees
Labels
No labels