CI
github-actions:test
12 runs
Average
50 ms
median 51 ms
max 90 ms
max 90 ms
Phases
Setup 0.69 ms
Call 49 ms
Teardown 0.18 ms
Categories
Database 20 ms
Other (Libraries, Unsampled, pytest, Cache) 30 ms
28 database queries per run
Needs 405 KB of memory (max 824 KB)
Duration per run
Where the time goes
Latest run in ci:github-actions:test, 16 hours ago ·
open run
setup0.99 ms1.4%
_CallableGenericAlias.__new__<frozen _collections_abc>:4780.99 ms1.4%
call71 ms98.1%
MembersTest.test_members_can_leaveapps/orgs/tests.py:160 response = self.client.post(reverse("membership_update", args=["acme"]), {"user": "member", "action": "remove"})59 ms81.3%
Client.postdjango/test/client.py:115359 ms81.3%
RequestFactory.postdjango/test/client.py:49959 ms81.3%
RequestFactory.genericdjango/test/client.py:67159 ms81.3%
Client.requestdjango/test/client.py:108259 ms81.3%
ClientHandler.__call__django/test/client.py:17349 ms67.3%
BaseHandler.load_middlewaredjango/core/handlers/base.py:6247 ms65.9%
WhiteNoiseMiddleware.__init__whitenoise/middleware.py:10446 ms64.5%
WhiteNoise.add_fileswhitenoise/base.py:10846 ms64.5%
WhiteNoise.update_files_dictionarywhitenoise/base.py:12043 ms60.3%
WhiteNoise.add_file_to_dictionarywhitenoise/base.py:13142 ms58.9%
WhiteNoise.get_static_filewhitenoise/base.py:20826 ms36.4%
StaticFile.__init__whitenoise/responders.py:7310 ms14.0%
StaticFile.get_headerswhitenoise/responders.py:1767 ms9.8%
formatdate<stdlib>/email/utils.py:2663 ms4.2%
format_datetime<stdlib>/email/utils.py:2842 ms2.8%
_format_timetuple_and_zone<stdlib>/email/utils.py:2312 ms2.8%
format_datetime<stdlib>/email/utils.py:2751 ms1.4%
formatdate<stdlib>/email/utils.py:2592 ms2.8%
Headers.__setitem__<stdlib>/wsgiref/headers.py:621 ms1.4%
Headers.__delitem__<stdlib>/wsgiref/headers.py:711 ms1.4%
Headers._convert_string_type<stdlib>/wsgiref/headers.py:501 ms1.4%
Headers.__setitem__<stdlib>/wsgiref/headers.py:641 ms1.4%
Headers._convert_string_type<stdlib>/wsgiref/headers.py:491 ms1.4%
StaticFile.get_headerswhitenoise/responders.py:1791 ms1.4%
StaticFile.get_headerswhitenoise/responders.py:1701 ms1.4%
Headers.__setitem__<stdlib>/wsgiref/headers.py:621 ms1.4%
Headers.__delitem__<stdlib>/wsgiref/headers.py:711 ms1.4%
StaticFile.get_headerswhitenoise/responders.py:1781 ms1.4%
Headers.__getitem__<stdlib>/wsgiref/headers.py:831 ms1.4%
Headers.get<stdlib>/wsgiref/headers.py:1061 ms1.4%
StaticFile.__init__whitenoise/responders.py:777 ms9.8%
StaticFile.get_alternativeswhitenoise/responders.py:2003 ms4.2%
__init____init__:-13 ms4.2%
Headers.__init__<stdlib>/wsgiref/headers.py:442 ms2.8%
Headers._convert_string_type<stdlib>/wsgiref/headers.py:502 ms2.8%
Headers.__init__<stdlib>/wsgiref/headers.py:431 ms1.4%
Headers._convert_string_type<stdlib>/wsgiref/headers.py:521 ms1.4%
StaticFile.get_alternativeswhitenoise/responders.py:2012 ms2.8%
Headers.__setitem__<stdlib>/wsgiref/headers.py:621 ms1.4%
Headers.__delitem__<stdlib>/wsgiref/headers.py:721 ms1.4%
Headers.__setitem__<stdlib>/wsgiref/headers.py:641 ms1.4%
StaticFile.get_alternativeswhitenoise/responders.py:2041 ms1.4%
compile<stdlib>/re/__init__.py:2891 ms1.4%
<GC>~1 ms1.4%
StaticFile.get_alternativeswhitenoise/responders.py:2071 ms1.4%
StaticFile.__init__whitenoise/responders.py:764 ms5.6%
StaticFile.get_not_modified_responsewhitenoise/responders.py:1883 ms4.2%
Headers.__contains__<stdlib>/wsgiref/headers.py:873 ms4.2%
Headers.get<stdlib>/wsgiref/headers.py:1061 ms1.4%
StaticFile.get_not_modified_responsewhitenoise/responders.py:1891 ms1.4%
Headers.__getitem__<stdlib>/wsgiref/headers.py:831 ms1.4%
Headers.get<stdlib>/wsgiref/headers.py:1061 ms1.4%
StaticFile.__init__whitenoise/responders.py:723 ms4.2%
StaticFile.get_file_statswhitenoise/responders.py:1613 ms4.2%
__init____init__:-13 ms4.2%
FileEntry.__init__whitenoise/responders.py:2633 ms4.2%
FileEntry.stat_regular_filewhitenoise/responders.py:2762 ms2.8%
<GC>~1 ms1.4%
FileEntry.stat_regular_filewhitenoise/responders.py:2751 ms1.4%
StaticFile.__init__whitenoise/responders.py:741 ms1.4%
parsedate<stdlib>/email/_parseaddr.py:1851 ms1.4%
StaticFile.__init__whitenoise/responders.py:751 ms1.4%
Headers.__getitem__<stdlib>/wsgiref/headers.py:831 ms1.4%
Headers.get<stdlib>/wsgiref/headers.py:1041 ms1.4%
Headers._convert_string_type<stdlib>/wsgiref/headers.py:501 ms1.4%
WhiteNoise.get_static_filewhitenoise/base.py:20312 ms16.8%
WhiteNoise.add_cache_headerswhitenoise/base.py:2248 ms11.2%
WhiteNoiseMiddleware.immutable_file_testwhitenoise/middleware.py:1767 ms9.8%
WhiteNoiseMiddleware.get_static_urlwhitenoise/middleware.py:1977 ms9.8%
URLMixin.urldebug_toolbar/panels/staticfiles.py:207 ms9.8%
HashedFilesMixin.urldjango/contrib/staticfiles/storage.py:2057 ms9.8%
HashedFilesMixin._urldjango/contrib/staticfiles/storage.py:1863 ms4.2%
FileSystemStorage.urldjango/core/files/storage/filesystem.py:2122 ms2.8%
urljoin<stdlib>/urllib/parse.py:7431 ms1.4%
FileSystemStorage.urldjango/core/files/storage/filesystem.py:2091 ms1.4%
filepath_to_uridjango/utils/encoding.py:2451 ms1.4%
quote<stdlib>/urllib/parse.py:10661 ms1.4%
HashedFilesMixin._urldjango/contrib/staticfiles/storage.py:1771 ms1.4%
urldefrag<stdlib>/urllib/parse.py:7811 ms1.4%
HashedFilesMixin._urldjango/contrib/staticfiles/storage.py:1781 ms1.4%
WhiteNoiseMiddleware.immutable_file_testwhitenoise/middleware.py:1741 ms1.4%
WhiteNoise.add_cache_headerswhitenoise/base.py:2272 ms2.8%
Headers.__setitem__<stdlib>/wsgiref/headers.py:641 ms1.4%
Headers._convert_string_type<stdlib>/wsgiref/headers.py:501 ms1.4%
Headers.__setitem__<stdlib>/wsgiref/headers.py:621 ms1.4%
Headers.__delitem__<stdlib>/wsgiref/headers.py:721 ms1.4%
WhiteNoise.add_cache_headerswhitenoise/base.py:2252 ms2.8%
Headers.__setitem__<stdlib>/wsgiref/headers.py:622 ms2.8%
Headers.__delitem__<stdlib>/wsgiref/headers.py:711 ms1.4%
WhiteNoise.get_static_filewhitenoise/base.py:2024 ms5.6%
WhiteNoise.add_mime_headerswhitenoise/base.py:2212 ms2.8%
Headers.add_header<stdlib>/wsgiref/headers.py:1911 ms1.4%
_formatparam<stdlib>/wsgiref/headers.py:231 ms1.4%
Headers.add_header<stdlib>/wsgiref/headers.py:1831 ms1.4%
Headers._convert_string_type<stdlib>/wsgiref/headers.py:501 ms1.4%
WhiteNoise.add_mime_headerswhitenoise/base.py:2181 ms1.4%
WhiteNoise.add_mime_headerswhitenoise/base.py:2161 ms1.4%
MediaTypes.get_typewhitenoise/media_types.py:151 ms1.4%
basename<frozen posixpath>:1711 ms1.4%
WhiteNoise.add_file_to_dictionarywhitenoise/base.py:1231 ms1.4%
WhiteNoise.update_files_dictionarywhitenoise/base.py:1153 ms4.2%
scantreewhitenoise/base.py:2622 ms2.8%
scantreewhitenoise/base.py:2621 ms1.4%
scantreewhitenoise/base.py:2621 ms1.4%
scantreewhitenoise/base.py:2621 ms1.4%
scantreewhitenoise/base.py:2621 ms1.4%
scantreewhitenoise/base.py:2641 ms1.4%
scantreewhitenoise/base.py:2601 ms1.4%
WhiteNoiseMiddleware.__init__whitenoise/middleware.py:1111 ms1.4%
WhiteNoise.add_fileswhitenoise/base.py:1081 ms1.4%
WhiteNoise.update_files_dictionarywhitenoise/base.py:1201 ms1.4%
WhiteNoise.add_file_to_dictionarywhitenoise/base.py:1311 ms1.4%
WhiteNoise.get_static_filewhitenoise/base.py:2081 ms1.4%
StaticFile.__init__whitenoise/responders.py:731 ms1.4%
StaticFile.get_headerswhitenoise/responders.py:1761 ms1.4%
formatdate<stdlib>/email/utils.py:2661 ms1.4%
format_datetime<stdlib>/email/utils.py:2751 ms1.4%
BaseHandler.load_middlewaredjango/core/handlers/base.py:961 ms1.4%
convert_exception_to_responsedjango/core/handlers/exception.py:371 ms1.4%
iscoroutinefunction<stdlib>/inspect.py:336 return _has_code_flag(obj, CO_COROUTINE) or _has_coroutine_mark(obj)1 ms1.4%
_has_coroutine_mark<stdlib>/inspect.py:3191 ms1.4%
ClientHandler.__call__django/test/client.py:18610 ms14.0%
BaseHandler.get_responsedjango/core/handlers/base.py:14110 ms14.0%
convert_exception_to_response.<locals>.innerdjango/core/handlers/exception.py:5510 ms14.0%
DebugToolbarMiddleware.__call__debug_toolbar/middleware.py:13010 ms14.0%
convert_exception_to_response.<locals>.innerdjango/core/handlers/exception.py:5510 ms14.0%
MiddlewareMixin.__call__django/utils/deprecation.py:30910 ms14.0%
convert_exception_to_response.<locals>.innerdjango/core/handlers/exception.py:5510 ms14.0%
WhiteNoiseMiddleware.__call__whitenoise/middleware.py:12310 ms14.0%
convert_exception_to_response.<locals>.innerdjango/core/handlers/exception.py:5510 ms14.0%
MiddlewareMixin.__call__django/utils/deprecation.py:3099 ms12.6%
convert_exception_to_response.<locals>.innerdjango/core/handlers/exception.py:559 ms12.6%
MiddlewareMixin.__call__django/utils/deprecation.py:3099 ms12.6%
convert_exception_to_response.<locals>.innerdjango/core/handlers/exception.py:559 ms12.6%
MiddlewareMixin.__call__django/utils/deprecation.py:3099 ms12.6%
convert_exception_to_response.<locals>.innerdjango/core/handlers/exception.py:559 ms12.6%
MiddlewareMixin.__call__django/utils/deprecation.py:3099 ms12.6%
convert_exception_to_response.<locals>.innerdjango/core/handlers/exception.py:559 ms12.6%
MiddlewareMixin.__call__django/utils/deprecation.py:3099 ms12.6%
convert_exception_to_response.<locals>.innerdjango/core/handlers/exception.py:559 ms12.6%
MiddlewareMixin.__call__django/utils/deprecation.py:3099 ms12.6%
convert_exception_to_response.<locals>.innerdjango/core/handlers/exception.py:559 ms12.6%
AccountMiddleware.<locals>.middlewareallauth/account/middleware.py:349 ms12.6%
convert_exception_to_response.<locals>.innerdjango/core/handlers/exception.py:559 ms12.6%
BaseHandler._get_responsedjango/core/handlers/base.py:1989 ms12.6%
user_passes_test.<locals>.decorator.<locals>._view_wrapperdjango/contrib/auth/decorators.py:596 ms8.4%
require_http_methods.<locals>.decorator.<locals>.innerdjango/views/decorators/http.py:646 ms8.4%
membership_updateapps/orgs/views.py:2092 ms2.8%
member_organizationapps/orgs/views.py:622 ms2.8%
Organization.is_memberapps/orgs/models.py:62 return user.is_authenticated and self.membership_set.filter(user=user).exists()2 ms2.8%
QuerySet.existsdjango/db/models/query.py:13372 ms2.8%
Query.has_resultsdjango/db/models/sql/query.py:6812 ms2.8%
SQLCompiler.has_resultsdjango/db/models/sql/compiler.py:15922 ms2.8%
SQLCompiler.execute_sqldjango/db/models/sql/compiler.py:16242 ms2.8%
CursorWrapper.executedjango/db/backends/utils.py:792 ms2.8%
CursorWrapper._execute_with_wrappersdjango/db/backends/utils.py:922 ms2.8%
CursorWrapper._executedjango/db/backends/utils.py:1052 ms2.8%
Cursor.executepsycopg/cursor.py:1132 ms2.8%
Connection.waitpsycopg/connection.py:4952 ms2.8%
BaseCursor._execute_genpsycopg/_cursor_base.py:2062 ms2.8%
BaseCursor._maybe_prepare_genpsycopg/_cursor_base.py:2862 ms2.8%
ClientCursorMixin._execute_sendpsycopg/client_cursor.py:782 ms2.8%
membership_updateapps/orgs/views.py:210 membership = get_object_or_404(Membership, organization=organization, user__username=request.POST.get("user") or "")2 ms2.8%
get_object_or_404django/shortcuts.py:902 ms2.8%
QuerySet.getdjango/db/models/query.py:6271 ms1.4%
QuerySet.order_bydjango/db/models/query.py:17701 ms1.4%
QuerySet._chaindjango/db/models/query.py:19731 ms1.4%
QuerySet._clonedjango/db/models/query.py:19861 ms1.4%
Query.chaindjango/db/models/sql/query.py:4331 ms1.4%
Query.clonedjango/db/models/sql/query.py:3971 ms1.4%
WhereNode.clonedjango/db/models/sql/where.py:2181 ms1.4%
Node.createdjango/utils/tree.py:361 ms1.4%
QuerySet.getdjango/db/models/query.py:6351 ms1.4%
QuerySet.__len__django/db/models/query.py:3721 ms1.4%
QuerySet._fetch_alldjango/db/models/query.py:20001 ms1.4%
ModelIterable.__iter__django/db/models/query.py:951 ms1.4%
SQLCompiler.execute_sqldjango/db/models/sql/compiler.py:16241 ms1.4%
CursorWrapper.executedjango/db/backends/utils.py:791 ms1.4%
CursorWrapper._execute_with_wrappersdjango/db/backends/utils.py:921 ms1.4%
membership_updateapps/orgs/views.py:2111 ms1.4%
Organization.is_ownerapps/orgs/models.py:65 return user.is_authenticated and self.membership_set.filter(user=user, role=Membership.Role.OWNER).exists()1 ms1.4%
QuerySet.existsdjango/db/models/query.py:13371 ms1.4%
Query.has_resultsdjango/db/models/sql/query.py:6811 ms1.4%
SQLCompiler.has_resultsdjango/db/models/sql/compiler.py:15921 ms1.4%
SQLCompiler.execute_sqldjango/db/models/sql/compiler.py:16241 ms1.4%
CursorWrapper.executedjango/db/backends/utils.py:791 ms1.4%
CursorWrapper._execute_with_wrappersdjango/db/backends/utils.py:921 ms1.4%
CursorWrapper._executedjango/db/backends/utils.py:1051 ms1.4%
Cursor.executepsycopg/cursor.py:1131 ms1.4%
Connection.waitpsycopg/connection.py:4951 ms1.4%
BaseCursor._execute_genpsycopg/_cursor_base.py:2061 ms1.4%
BaseCursor._maybe_prepare_genpsycopg/_cursor_base.py:2861 ms1.4%
ClientCursorMixin._execute_sendpsycopg/client_cursor.py:781 ms1.4%
membership_updateapps/orgs/views.py:222 membership.delete()1 ms1.4%
Model.deletedjango/db/models/base.py:12981 ms1.4%
Collector.deletedjango/db/models/deletion.py:4521 ms1.4%
DeleteQuery.delete_batchdjango/db/models/sql/subqueries.py:431 ms1.4%
DeleteQuery.do_querydjango/db/models/sql/subqueries.py:251 ms1.4%
SQLCompiler.execute_sqldjango/db/models/sql/compiler.py:16241 ms1.4%
CursorWrapper.executedjango/db/backends/utils.py:791 ms1.4%
CursorWrapper._execute_with_wrappersdjango/db/backends/utils.py:921 ms1.4%
CursorWrapper._executedjango/db/backends/utils.py:1051 ms1.4%
Cursor.executepsycopg/cursor.py:1131 ms1.4%
Connection.waitpsycopg/connection.py:4951 ms1.4%
BaseCursor._execute_genpsycopg/_cursor_base.py:2051 ms1.4%
BaseCursor._convert_querypsycopg/_cursor_base.py:4651 ms1.4%
PostgresClientQuery.convertpsycopg/_queries.py:2841 ms1.4%
user_passes_test.<locals>.decorator.<locals>._view_wrapperdjango/contrib/auth/decorators.py:563 ms4.2%
login_required.<locals>.<lambda>django/contrib/auth/decorators.py:793 ms4.2%
new_method_proxy.<locals>.innerdjango/utils/functional.py:2513 ms4.2%
SimpleLazyObject._setupdjango/utils/functional.py:4043 ms4.2%
AuthenticationMiddleware.process_request.<locals>.<lambda>django/contrib/auth/middleware.py:403 ms4.2%
get_userdjango/contrib/auth/middleware.py:203 ms4.2%
get_userdjango/contrib/auth/__init__.py:3112 ms2.8%
_get_user_session_keydjango/contrib/auth/__init__.py:952 ms2.8%
SessionBase.__getitem__django/contrib/sessions/backends/base.py:552 ms2.8%
SessionBase._get_sessiondjango/contrib/sessions/backends/base.py:2512 ms2.8%
SessionStore.loaddjango/contrib/sessions/backends/db.py:551 ms1.4%
SessionStore._get_session_from_dbdjango/contrib/sessions/backends/db.py:341 ms1.4%
BaseManager._get_queryset_methods.<locals>.create_method.<locals>.manager_methoddjango/db/models/manager.py:871 ms1.4%
QuerySet.getdjango/db/models/query.py:6351 ms1.4%
QuerySet.__len__django/db/models/query.py:3721 ms1.4%
QuerySet._fetch_alldjango/db/models/query.py:20001 ms1.4%
ModelIterable.__iter__django/db/models/query.py:951 ms1.4%
SQLCompiler.execute_sqldjango/db/models/sql/compiler.py:16241 ms1.4%
CursorWrapper.executedjango/db/backends/utils.py:791 ms1.4%
CursorWrapper._execute_with_wrappersdjango/db/backends/utils.py:921 ms1.4%
CursorWrapper._executedjango/db/backends/utils.py:1051 ms1.4%
Cursor.executepsycopg/cursor.py:1131 ms1.4%
Connection.waitpsycopg/connection.py:4951 ms1.4%
BaseCursor._execute_genpsycopg/_cursor_base.py:2051 ms1.4%
BaseCursor._convert_querypsycopg/_cursor_base.py:4651 ms1.4%
PostgresClientQuery.convertpsycopg/_queries.py:2891 ms1.4%
PostgresClientQuery.dumppsycopg/_queries.py:2991 ms1.4%
PostgresClientQuery.dump.<locals>.<genexpr>psycopg/_queries.py:3001 ms1.4%
SessionStore.loaddjango/contrib/sessions/backends/db.py:561 ms1.4%
SessionBase.decodedjango/contrib/sessions/backends/base.py:1351 ms1.4%
loadsdjango/core/signing.py:1711 ms1.4%
Signer.unsign_objectdjango/core/signing.py:2511 ms1.4%
get_userdjango/contrib/auth/__init__.py:3181 ms1.4%
ModelBackend.get_userdjango/contrib/auth/backends.py:2321 ms1.4%
BaseManager._get_queryset_methods.<locals>.create_method.<locals>.manager_methoddjango/db/models/manager.py:871 ms1.4%
QuerySet.getdjango/db/models/query.py:6351 ms1.4%
QuerySet.__len__django/db/models/query.py:3721 ms1.4%
QuerySet._fetch_alldjango/db/models/query.py:20001 ms1.4%
ModelIterable.__iter__django/db/models/query.py:951 ms1.4%
SQLCompiler.execute_sqldjango/db/models/sql/compiler.py:16241 ms1.4%
CursorWrapper.executedjango/db/backends/utils.py:791 ms1.4%
CursorWrapper._execute_with_wrappersdjango/db/backends/utils.py:921 ms1.4%
CursorWrapper._executedjango/db/backends/utils.py:1051 ms1.4%
Cursor.executepsycopg/cursor.py:1131 ms1.4%
Connection.waitpsycopg/connection.py:4951 ms1.4%
BaseCursor._execute_genpsycopg/_cursor_base.py:2061 ms1.4%
BaseCursor._maybe_prepare_genpsycopg/_cursor_base.py:2861 ms1.4%
ClientCursorMixin._execute_sendpsycopg/client_cursor.py:781 ms1.4%
MiddlewareMixin.__call__django/utils/deprecation.py:3081 ms1.4%
SessionMiddleware.process_requestdjango/contrib/sessions/middleware.py:201 ms1.4%
__init____init__:-11 ms1.4%
SessionStore.__init__django/contrib/sessions/backends/db.py:181 ms1.4%
SessionBase.__init__django/contrib/sessions/backends/base.py:461 ms1.4%
SessionBase._set_session_keydjango/contrib/sessions/backends/base.py:2311 ms1.4%
SessionBase._validate_session_keydjango/contrib/sessions/backends/base.py:2221 ms1.4%
MembersTest.test_members_can_leaveapps/orgs/tests.py:159 self.client.force_login(self.member)9 ms12.6%
ClientMixin.force_logindjango/test/client.py:8559 ms12.6%
ClientMixin._logindjango/test/client.py:8816 ms8.4%
logindjango/contrib/auth/__init__.py:1873 ms4.2%
SessionBase.cycle_keydjango/contrib/sessions/backends/base.py:4342 ms2.8%
SessionStore.createdjango/contrib/sessions/backends/db.py:701 ms1.4%
SessionBase._get_new_session_keydjango/contrib/sessions/backends/base.py:1981 ms1.4%
SessionStore.existsdjango/contrib/sessions/backends/db.py:631 ms1.4%
QuerySet.existsdjango/db/models/query.py:13371 ms1.4%
Query.has_resultsdjango/db/models/sql/query.py:6811 ms1.4%
SQLCompiler.has_resultsdjango/db/models/sql/compiler.py:15921 ms1.4%
SQLCompiler.execute_sqldjango/db/models/sql/compiler.py:16241 ms1.4%
CursorWrapper.executedjango/db/backends/utils.py:791 ms1.4%
CursorWrapper._execute_with_wrappersdjango/db/backends/utils.py:921 ms1.4%
CursorWrapper._executedjango/db/backends/utils.py:1051 ms1.4%
Cursor.executepsycopg/cursor.py:1131 ms1.4%
Connection.waitpsycopg/connection.py:4951 ms1.4%
BaseCursor._execute_genpsycopg/_cursor_base.py:2061 ms1.4%
BaseCursor._maybe_prepare_genpsycopg/_cursor_base.py:2861 ms1.4%
ClientCursorMixin._execute_sendpsycopg/client_cursor.py:781 ms1.4%
SessionStore.createdjango/contrib/sessions/backends/db.py:741 ms1.4%
SessionStore.savedjango/contrib/sessions/backends/db.py:1271 ms1.4%
Model.savedjango/db/models/base.py:8741 ms1.4%
Model.save_basedjango/db/models/base.py:9571 ms1.4%
SessionBase.cycle_keydjango/contrib/sessions/backends/base.py:4371 ms1.4%
SessionStore.deletedjango/contrib/sessions/backends/db.py:1751 ms1.4%
BaseManager._get_queryset_methods.<locals>.create_method.<locals>.manager_methoddjango/db/models/manager.py:871 ms1.4%
QuerySet.getdjango/db/models/query.py:6351 ms1.4%
QuerySet.__len__django/db/models/query.py:3721 ms1.4%
QuerySet._fetch_alldjango/db/models/query.py:20001 ms1.4%
ModelIterable.__iter__django/db/models/query.py:951 ms1.4%
SQLCompiler.execute_sqldjango/db/models/sql/compiler.py:16111 ms1.4%
SQLCompiler.as_sqldjango/db/models/sql/compiler.py:7951 ms1.4%
SQLCompiler.compiledjango/db/models/sql/compiler.py:5781 ms1.4%
WhereNode.as_sqldjango/db/models/sql/where.py:1511 ms1.4%
SQLCompiler.compiledjango/db/models/sql/compiler.py:5781 ms1.4%
Exact.as_sqldjango/db/models/lookups.py:4071 ms1.4%
BuiltinLookup.as_sqldjango/db/models/lookups.py:2381 ms1.4%
BuiltinLookup.process_lhsdjango/db/models/lookups.py:2301 ms1.4%
Lookup.process_lhsdjango/db/models/lookups.py:1091 ms1.4%
BaseExpression.resolve_expressiondjango/db/models/expressions.py:2971 ms1.4%
BaseExpression.copydjango/db/models/expressions.py:4441 ms1.4%
logindjango/contrib/auth/__init__.py:1972 ms2.8%
Signal.senddjango/dispatch/dispatcher.py:2092 ms2.8%
update_last_logindjango/contrib/auth/models.py:242 ms2.8%
AbstractBaseUser.savedjango/contrib/auth/base_user.py:622 ms2.8%
Model.savedjango/db/models/base.py:8742 ms2.8%
Model.save_basedjango/db/models/base.py:9662 ms2.8%
Model._save_tabledjango/db/models/base.py:11102 ms2.8%
Model._do_updatedjango/db/models/base.py:12112 ms2.8%
QuerySet._updatedjango/db/models/query.py:13272 ms2.8%
SQLUpdateCompiler.execute_returning_sqldjango/db/models/sql/compiler.py:21402 ms2.8%
SQLUpdateCompiler.execute_sqldjango/db/models/sql/compiler.py:21112 ms2.8%
SQLCompiler.execute_sqldjango/db/models/sql/compiler.py:16242 ms2.8%
CursorWrapper.executedjango/db/backends/utils.py:792 ms2.8%
CursorWrapper._execute_with_wrappersdjango/db/backends/utils.py:922 ms2.8%
CursorWrapper._executedjango/db/backends/utils.py:1052 ms2.8%
Cursor.executepsycopg/cursor.py:1132 ms2.8%
Connection.waitpsycopg/connection.py:4952 ms2.8%
BaseCursor._execute_genpsycopg/_cursor_base.py:2062 ms2.8%
BaseCursor._maybe_prepare_genpsycopg/_cursor_base.py:2862 ms2.8%
ClientCursorMixin._execute_sendpsycopg/client_cursor.py:782 ms2.8%
logindjango/contrib/auth/__init__.py:1751 ms1.4%
SessionBase.__contains__django/contrib/sessions/backends/base.py:521 ms1.4%
SessionBase._get_sessiondjango/contrib/sessions/backends/base.py:2511 ms1.4%
SessionStore.loaddjango/contrib/sessions/backends/db.py:551 ms1.4%
SessionStore._get_session_from_dbdjango/contrib/sessions/backends/db.py:341 ms1.4%
BaseManager._get_queryset_methods.<locals>.create_method.<locals>.manager_methoddjango/db/models/manager.py:871 ms1.4%
QuerySet.getdjango/db/models/query.py:6251 ms1.4%
QuerySet.filterdjango/db/models/query.py:15421 ms1.4%
QuerySet._filter_or_excludedjango/db/models/query.py:15601 ms1.4%
QuerySet._filter_or_exclude_inplacedjango/db/models/query.py:15701 ms1.4%
Query.add_qdjango/db/models/sql/query.py:16711 ms1.4%
ClientMixin._logindjango/test/client.py:8762 ms2.8%
ClientMixin.sessiondjango/test/client.py:8122 ms2.8%
SessionStore.savedjango/contrib/sessions/backends/db.py:1212 ms2.8%
SessionStore.createdjango/contrib/sessions/backends/db.py:701 ms1.4%
SessionBase._get_new_session_keydjango/contrib/sessions/backends/base.py:1981 ms1.4%
SessionStore.existsdjango/contrib/sessions/backends/db.py:631 ms1.4%
QuerySet.existsdjango/db/models/query.py:13371 ms1.4%
Query.has_resultsdjango/db/models/sql/query.py:6811 ms1.4%
SQLCompiler.has_resultsdjango/db/models/sql/compiler.py:15921 ms1.4%
SQLCompiler.execute_sqldjango/db/models/sql/compiler.py:16111 ms1.4%
SQLCompiler.as_sqldjango/db/models/sql/compiler.py:9811 ms1.4%
SessionStore.createdjango/contrib/sessions/backends/db.py:741 ms1.4%
SessionStore.savedjango/contrib/sessions/backends/db.py:1271 ms1.4%
Model.savedjango/db/models/base.py:8741 ms1.4%
Model.save_basedjango/db/models/base.py:9661 ms1.4%
Model._save_tabledjango/db/models/base.py:11671 ms1.4%
Model._do_insertdjango/db/models/base.py:12181 ms1.4%
BaseManager._get_queryset_methods.<locals>.create_method.<locals>.manager_methoddjango/db/models/manager.py:871 ms1.4%
QuerySet._insertdjango/db/models/query.py:19181 ms1.4%
SQLInsertCompiler.execute_sqldjango/db/models/sql/compiler.py:19251 ms1.4%
CursorWrapper.executedjango/db/backends/utils.py:791 ms1.4%
CursorWrapper._execute_with_wrappersdjango/db/backends/utils.py:921 ms1.4%
CursorWrapper._executedjango/db/backends/utils.py:1051 ms1.4%
Cursor.executepsycopg/cursor.py:1131 ms1.4%
Connection.waitpsycopg/connection.py:4951 ms1.4%
BaseCursor._execute_genpsycopg/_cursor_base.py:2061 ms1.4%
BaseCursor._maybe_prepare_genpsycopg/_cursor_base.py:2861 ms1.4%
ClientCursorMixin._execute_sendpsycopg/client_cursor.py:781 ms1.4%
ClientMixin._logindjango/test/client.py:8831 ms1.4%
SessionStore.savedjango/contrib/sessions/backends/db.py:1271 ms1.4%
Model.savedjango/db/models/base.py:8741 ms1.4%
Model.save_basedjango/db/models/base.py:9661 ms1.4%
Model._save_tabledjango/db/models/base.py:11101 ms1.4%
Model._do_updatedjango/db/models/base.py:12111 ms1.4%
QuerySet._updatedjango/db/models/query.py:13271 ms1.4%
SQLUpdateCompiler.execute_returning_sqldjango/db/models/sql/compiler.py:21401 ms1.4%
SQLUpdateCompiler.execute_sqldjango/db/models/sql/compiler.py:21111 ms1.4%
SQLCompiler.execute_sqldjango/db/models/sql/compiler.py:16241 ms1.4%
CursorWrapper.executedjango/db/backends/utils.py:791 ms1.4%
CursorWrapper._execute_with_wrappersdjango/db/backends/utils.py:921 ms1.4%
CursorWrapper._executedjango/db/backends/utils.py:1051 ms1.4%
Cursor.executepsycopg/cursor.py:1131 ms1.4%
Connection.waitpsycopg/connection.py:4951 ms1.4%
BaseCursor._execute_genpsycopg/_cursor_base.py:2061 ms1.4%
BaseCursor._maybe_prepare_genpsycopg/_cursor_base.py:3181 ms1.4%
BaseCursor._set_resultspsycopg/_cursor_base.py:5341 ms1.4%
TransactionTestCase._pre_setupdjango/test/testcases.py:1164 cls._fixture_setup()1 ms1.4%
TestCase._fixture_setupdjango/test/testcases.py:14781 ms1.4%
TestCase._enter_atomicsdjango/test/testcases.py:13961 ms1.4%
Atomic.__enter__django/db/transaction.py:2111 ms1.4%
async_unsafe.<locals>.decorator.<locals>.innerdjango/utils/asyncio.py:261 ms1.4%
BaseDatabaseWrapper.savepointdjango/db/backends/base/base.py:4001 ms1.4%
BaseDatabaseWrapper._savepointdjango/db/backends/base/base.py:3671 ms1.4%
CursorWrapper.executedjango/db/backends/utils.py:791 ms1.4%
CursorWrapper._execute_with_wrappersdjango/db/backends/utils.py:921 ms1.4%
CursorWrapper._executedjango/db/backends/utils.py:1031 ms1.4%
Cursor.executepsycopg/cursor.py:1131 ms1.4%
Connection.waitpsycopg/connection.py:4951 ms1.4%
BaseCursor._execute_genpsycopg/_cursor_base.py:2041 ms1.4%
BaseCursor._start_querypsycopg/_cursor_base.py:3861 ms1.4%
MembersTest.test_members_can_leaveapps/orgs/tests.py:1621 ms1.4%
Organization.is_memberapps/orgs/models.py:62 return user.is_authenticated and self.membership_set.filter(user=user).exists()1 ms1.4%
QuerySet.existsdjango/db/models/query.py:13371 ms1.4%
Query.has_resultsdjango/db/models/sql/query.py:6811 ms1.4%
SQLCompiler.has_resultsdjango/db/models/sql/compiler.py:15921 ms1.4%
SQLCompiler.execute_sqldjango/db/models/sql/compiler.py:16241 ms1.4%
CursorWrapper.executedjango/db/backends/utils.py:791 ms1.4%
CursorWrapper._execute_with_wrappersdjango/db/backends/utils.py:921 ms1.4%
CursorWrapper._executedjango/db/backends/utils.py:1051 ms1.4%
Cursor.executepsycopg/cursor.py:1131 ms1.4%
Connection.waitpsycopg/connection.py:4951 ms1.4%
BaseCursor._execute_genpsycopg/_cursor_base.py:2061 ms1.4%
BaseCursor._maybe_prepare_genpsycopg/_cursor_base.py:2861 ms1.4%
ClientCursorMixin._execute_sendpsycopg/client_cursor.py:781 ms1.4%
TransactionTestCase._post_teardowndjango/test/testcases.py:1240 self._fixture_teardown()1 ms1.4%
TestCase._fixture_teardowndjango/test/testcases.py:14971 ms1.4%
TestCase._rollback_atomicsdjango/test/testcases.py:14051 ms1.4%
Atomic.__exit__django/db/transaction.py:2831 ms1.4%
async_unsafe.<locals>.decorator.<locals>.innerdjango/utils/asyncio.py:261 ms1.4%
BaseDatabaseWrapper.savepoint_rollbackdjango/db/backends/base/base.py:4131 ms1.4%
BaseDatabaseWrapper._savepoint_rollbackdjango/db/backends/base/base.py:3711 ms1.4%
CursorWrapper.executedjango/db/backends/utils.py:791 ms1.4%
CursorWrapper._execute_with_wrappersdjango/db/backends/utils.py:921 ms1.4%
CursorWrapper._executedjango/db/backends/utils.py:1031 ms1.4%
Cursor.executepsycopg/cursor.py:1131 ms1.4%
Connection.waitpsycopg/connection.py:4951 ms1.4%
BaseCursor._execute_genpsycopg/_cursor_base.py:2061 ms1.4%
BaseCursor._maybe_prepare_genpsycopg/_cursor_base.py:2861 ms1.4%
ClientCursorMixin._execute_sendpsycopg/client_cursor.py:781 ms1.4%
teardown0.37 ms0.5%
Estimated from 72 samples; phase durations are exact. Frames from pytest and pluggy are
hidden
.
Hot lines in your code
|
apps/orgs/tests.py:160
response = self.client.post(reverse("membership_update", args=["acme"]), {"user": "member", "action": "remove"})
MembersTest.test_members_can_leave
· Libraries
|
53 ms |
|
apps/orgs/tests.py:159
self.client.force_login(self.member)
MembersTest.test_members_can_leave
· Database
|
9 ms |
|
apps/orgs/models.py:62
return user.is_authenticated and self.membership_set.filter(user=user).exists()
Organization.is_member
· Database
|
3 ms |
|
apps/orgs/views.py:210
membership = get_object_or_404(Membership, organization=organization, user__username=request.POST.get("user") or "")
membership_update
· Database
|
2 ms |
|
apps/orgs/models.py:65
return user.is_authenticated and self.membership_set.filter(user=user, role=Membership.Role.OWNER).exists()
Organization.is_owner
· Database
|
1 ms |
|
apps/orgs/views.py:222
membership.delete()
membership_update
· Database
|
1 ms |
Fixtures
Exact setup time| _dj_autoclear_mailbox function | 0.21 ms |
| _live_server_helper function | 0.06 ms |
| _template_string_if_invalid_marker function | 0.05 ms |
| _django_db_marker function | 0.05 ms |
| _django_set_urlconf function | 0.04 ms |
| _django_clear_site_cache function | 0.04 ms |
| monkeypatch function | 0.02 ms |
Database
28 queries · 9 msNo repeated queries.
Biggest pieces of work
|
call test body
apps/orgs/tests.py:159
|
69 ms |
|
call _pre_setup
django/test/testcases.py:1164
|
1 ms |
|
call _post_teardown
django/test/testcases.py:1240
|
1 ms |
|
setup fixture __new__
<frozen _collections_abc>:478
|
0.99 ms |
| teardown pytest internals | 0.37 ms |
Reliability
12 results · 0 CI failures · 0 local failuresThis test hasn't failed recently.
History
Latest 12 results, oldest first in the strip| When | Environment | Outcome | Duration | |
|---|---|---|---|---|
| 16 hours ago | CI github-actions:test | passed | 72 ms | Profile |
| 1 week, 5 days ago | CI github-actions:test | passed | 26 ms | Profile |
| 2 weeks, 1 day ago | CI github-actions:test | passed | 57 ms | Profile |
| 2 weeks, 1 day ago | CI github-actions:test | passed | 36 ms | Profile |
| 2 weeks, 1 day ago | CI github-actions:test | passed | 90 ms | Profile |
| 2 weeks, 2 days ago | CI github-actions:test | passed | 32 ms | Profile |
| 2 weeks, 4 days ago | CI github-actions:test | passed | 54 ms | Profile |
| 2 weeks, 6 days ago | CI github-actions:test | passed | 51 ms | Profile |
| 2 weeks, 6 days ago | CI github-actions:test | passed | 51 ms | Profile |
| 3 weeks ago | CI github-actions:test | passed | 54 ms | Profile |
| 3 weeks ago | CI github-actions:test | passed | 25 ms | Profile |
| 3 weeks ago | CI github-actions:test | passed | 49 ms | Profile |