Skip to content

Instantly share code, notes, and snippets.

@rokroskar
Created June 6, 2019 11:20
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save rokroskar/4f25b87749a3de00c0ab4093640472ee to your computer and use it in GitHub Desktop.
Save rokroskar/4f25b87749a3de00c0ab4093640472ee to your computer and use it in GitHub Desktop.
Display the source blob
Display the rendered blob
Raw
<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg version="1.1" width="1200" height="918" onload="init(evt)" viewBox="0 0 1200 918" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"><!--Flame graph stack visualization. See https://github.com/brendangregg/FlameGraph for latest version, and http://www.brendangregg.com/flamegraphs.html for examples.--><!--NOTES: --><defs><linearGradient id="background" y1="0" y2="1" x1="0" x2="0"><stop stop-color="#eeeeee" offset="5%"/><stop stop-color="#eeeeb0" offset="95%"/></linearGradient></defs><style type="text/css">
text { font-family:"Verdana"; font-size:12px; fill:rgb(0,0,0); }
#title { text-anchor:middle; font-size:17px; }
#search { opacity:0.1; cursor:pointer; }
#search:hover, #search.show { opacity:1; }
#subtitle { text-anchor:middle; font-color:rgb(160,160,160); }
#unzoom { cursor:pointer; }
#frames > *:hover { stroke:black; stroke-width:0.5; cursor:pointer; }
.hide { display:none; }
.parent { opacity:0.5; }
</style><script type="text/ecmascript"><![CDATA[var nametype = 'Function:';
var fontsize = 12;
var fontwidth = 0.59;
var xpad = 10;
var inverted = true;
var searchcolor = 'rgb(230,0,230)';]]><![CDATA["use strict";
var details, searchbtn, unzoombtn, matchedtxt, svg, searching;
function init(evt) {
details = document.getElementById("details").firstChild;
searchbtn = document.getElementById("search");
unzoombtn = document.getElementById("unzoom");
matchedtxt = document.getElementById("matched");
svg = document.getElementsByTagName("svg")[0];
searching = 0;
}
window.addEventListener("click", function(e) {
var target = find_group(e.target);
if (target) {
if (target.nodeName == "a") {
if (e.ctrlKey === false) return;
e.preventDefault();
}
if (target.classList.contains("parent")) unzoom();
zoom(target);
}
else if (e.target.id == "unzoom") unzoom();
else if (e.target.id == "search") search_prompt();
}, false)
// mouse-over for info
// show
window.addEventListener("mouseover", function(e) {
var target = find_group(e.target);
if (target) details.nodeValue = nametype + " " + g_to_text(target);
}, false)
// clear
window.addEventListener("mouseout", function(e) {
var target = find_group(e.target);
if (target) details.nodeValue = ' ';
}, false)
// ctrl-F for search
window.addEventListener("keydown",function (e) {
if (e.keyCode === 114 || (e.ctrlKey && e.keyCode === 70)) {
e.preventDefault();
search_prompt();
}
}, false)
// functions
function find_child(node, selector) {
var children = node.querySelectorAll(selector);
if (children.length) return children[0];
return;
}
function find_group(node) {
var parent = node.parentElement;
if (!parent) return;
if (parent.id == "frames") return node;
return find_group(parent);
}
function orig_save(e, attr, val) {
if (e.attributes["_orig_" + attr] != undefined) return;
if (e.attributes[attr] == undefined) return;
if (val == undefined) val = e.attributes[attr].value;
e.setAttribute("_orig_" + attr, val);
}
function orig_load(e, attr) {
if (e.attributes["_orig_"+attr] == undefined) return;
e.attributes[attr].value = e.attributes["_orig_" + attr].value;
e.removeAttribute("_orig_" + attr);
}
function g_to_text(e) {
var text = find_child(e, "title").firstChild.nodeValue;
return (text)
}
function g_to_func(e) {
var func = g_to_text(e);
// if there's any manipulation we want to do to the function
// name before it's searched, do it here before returning.
return (func);
}
function update_text(e) {
var r = find_child(e, "rect");
var t = find_child(e, "text");
var w = parseFloat(r.attributes.width.value) -3;
var txt = find_child(e, "title").textContent.replace(/\\([^(]*\\)\$/,"");
t.attributes.x.value = parseFloat(r.attributes.x.value) + 3;
// Smaller than this size won't fit anything
if (w < 2 * fontsize * fontwidth) {
t.textContent = "";
return;
}
t.textContent = txt;
// Fit in full text width
if (/^ *\$/.test(txt) || t.getSubStringLength(0, txt.length) < w)
return;
for (var x = txt.length - 2; x > 0; x--) {
if (t.getSubStringLength(0, x + 2) <= w) {
t.textContent = txt.substring(0, x) + "..";
return;
}
}
t.textContent = "";
}
// zoom
function zoom_reset(e) {
if (e.attributes != undefined) {
orig_load(e, "x");
orig_load(e, "width");
}
if (e.childNodes == undefined) return;
for(var i = 0, c = e.childNodes; i < c.length; i++) {
zoom_reset(c[i]);
}
}
function zoom_child(e, x, ratio) {
if (e.attributes != undefined) {
if (e.attributes.x != undefined) {
orig_save(e, "x");
e.attributes.x.value = (parseFloat(e.attributes.x.value) - x - xpad) * ratio + xpad;
if(e.tagName == "text")
e.attributes.x.value = find_child(e.parentNode, "rect[x]").attributes.x.value + 3;
}
if (e.attributes.width != undefined) {
orig_save(e, "width");
e.attributes.width.value = parseFloat(e.attributes.width.value) * ratio;
}
}
if (e.childNodes == undefined) return;
for(var i = 0, c = e.childNodes; i < c.length; i++) {
zoom_child(c[i], x - xpad, ratio);
}
}
function zoom_parent(e) {
if (e.attributes) {
if (e.attributes.x != undefined) {
orig_save(e, "x");
e.attributes.x.value = xpad;
}
if (e.attributes.width != undefined) {
orig_save(e, "width");
e.attributes.width.value = parseInt(svg.width.baseVal.value) - (xpad*2);
}
}
if (e.childNodes == undefined) return;
for(var i = 0, c = e.childNodes; i < c.length; i++) {
zoom_parent(c[i]);
}
}
function zoom(node) {
var attr = find_child(node, "rect").attributes;
var width = parseFloat(attr.width.value);
var xmin = parseFloat(attr.x.value);
var xmax = parseFloat(xmin + width);
var ymin = parseFloat(attr.y.value);
var ratio = (svg.width.baseVal.value - 2 * xpad) / width;
// XXX: Workaround for JavaScript float issues (fix me)
var fudge = 0.0001;
unzoombtn.classList.remove("hide");
var el = document.getElementById("frames").children;
for (var i = 0; i < el.length; i++) {
var e = el[i];
var a = find_child(e, "rect").attributes;
var ex = parseFloat(a.x.value);
var ew = parseFloat(a.width.value);
// Is it an ancestor
if (!inverted) {
var upstack = parseFloat(a.y.value) > ymin;
} else {
var upstack = parseFloat(a.y.value) < ymin;
}
if (upstack) {
// Direct ancestor
if (ex <= xmin && (ex+ew+fudge) >= xmax) {
e.classList.add("parent");
zoom_parent(e);
update_text(e);
}
// not in current path
else
e.classList.add("hide");
}
// Children maybe
else {
// no common path
if (ex < xmin || ex + fudge >= xmax) {
e.classList.add("hide");
}
else {
zoom_child(e, xmin, ratio);
update_text(e);
}
}
}
}
function unzoom() {
unzoombtn.classList.add("hide");
var el = document.getElementById("frames").children;
for(var i = 0; i < el.length; i++) {
el[i].classList.remove("parent");
el[i].classList.remove("hide");
zoom_reset(el[i]);
update_text(el[i]);
}
}
// search
function reset_search() {
var el = document.querySelectorAll("#frames rect");
for (var i = 0; i < el.length; i++) {
orig_load(el[i], "fill")
}
}
function search_prompt() {
if (!searching) {
var term = prompt("Enter a search term (regexp " +
"allowed, eg: ^ext4_)", "");
if (term != null) {
search(term)
}
} else {
reset_search();
searching = 0;
searchbtn.classList.remove("show");
searchbtn.firstChild.nodeValue = "Search"
matchedtxt.classList.add("hide");
matchedtxt.firstChild.nodeValue = ""
}
}
function search(term) {
var re = new RegExp(term);
var el = document.getElementById("frames").children;
var matches = new Object();
var maxwidth = 0;
for (var i = 0; i < el.length; i++) {
var e = el[i];
var func = g_to_func(e);
var rect = find_child(e, "rect");
if (func == null || rect == null)
continue;
// Save max width. Only works as we have a root frame
var w = parseFloat(rect.attributes.width.value);
if (w > maxwidth)
maxwidth = w;
if (func.match(re)) {
// highlight
var x = parseFloat(rect.attributes.x.value);
orig_save(rect, "fill");
rect.attributes.fill.value = searchcolor;
// remember matches
if (matches[x] == undefined) {
matches[x] = w;
} else {
if (w > matches[x]) {
// overwrite with parent
matches[x] = w;
}
}
searching = 1;
}
}
if (!searching)
return;
searchbtn.classList.add("show");
searchbtn.firstChild.nodeValue = "Reset Search";
// calculate percent matched, excluding vertical overlap
var count = 0;
var lastx = -1;
var lastw = 0;
var keys = Array();
for (k in matches) {
if (matches.hasOwnProperty(k))
keys.push(k);
}
// sort the matched frames by their x location
// ascending, then width descending
keys.sort(function(a, b){
return a - b;
});
// Step through frames saving only the biggest bottom-up frames
// thanks to the sort order. This relies on the tree property
// where children are always smaller than their parents.
var fudge = 0.0001; // JavaScript floating point
for (var k in keys) {
var x = parseFloat(keys[k]);
var w = matches[keys[k]];
if (x >= lastx + lastw - fudge) {
count += w;
lastx = x;
lastw = w;
}
}
// display matched percent
matchedtxt.classList.remove("hide");
var pct = 100 * count / maxwidth;
if (pct != 100) pct = pct.toFixed(1);
matchedtxt.firstChild.nodeValue = "Matched: " + pct + "%";
}
]]></script><rect x="0" y="0" width="1200" height="918" fill="url(#background)"/><text id="title" x="600.00" y="24.00">py-spy</text><text id="details" x="10.00" y="901.00"> </text><text id="unzoom" class="hide" x="10.00" y="24.00">Reset Zoom</text><text id="search" x="1090.00" y="24.00">Search</text><text id="matched" x="1090.00" y="901.00"> </text><g id="frames"><g><title>_read_message (tornado/http1connection.py:160) (8 samples, 0.09%)</title><rect x="13" y="308" width="1" height="15" fill="rgb(224,153,12)"/><text x="16.00" y="318.50"></text></g><g><title>read_until_regex (tornado/iostream.py:357) (8 samples, 0.09%)</title><rect x="13" y="324" width="1" height="15" fill="rgb(246,89,2)"/><text x="16.00" y="334.50"></text></g><g><title>with_timeout (tornado/gen.py:982) (8 samples, 0.09%)</title><rect x="14" y="324" width="1" height="15" fill="rgb(208,77,54)"/><text x="17.00" y="334.50"></text></g><g><title>wrapper (tornado/gen.py:326) (21 samples, 0.23%)</title><rect x="13" y="292" width="3" height="15" fill="rgb(252,84,29)"/><text x="16.00" y="302.50"></text></g><g><title>_read_message (tornado/http1connection.py:168) (11 samples, 0.12%)</title><rect x="14" y="308" width="2" height="15" fill="rgb(224,91,35)"/><text x="17.00" y="318.50"></text></g><g><title>_read_message (tornado/http1connection.py:172) (10 samples, 0.11%)</title><rect x="16" y="340" width="1" height="15" fill="rgb(234,111,24)"/><text x="19.00" y="350.50"></text></g><g><title>_parse_headers (tornado/http1connection.py:533) (10 samples, 0.11%)</title><rect x="16" y="356" width="1" height="15" fill="rgb(245,145,4)"/><text x="19.00" y="366.50"></text></g><g><title>headers_received (tornado/routing.py:244) (12 samples, 0.13%)</title><rect x="18" y="372" width="2" height="15" fill="rgb(251,56,8)"/><text x="21.00" y="382.50"></text></g><g><title>find_handler (tornado/web.py:2100) (11 samples, 0.12%)</title><rect x="19" y="388" width="1" height="15" fill="rgb(209,49,23)"/><text x="22.00" y="398.50"></text></g><g><title>find_handler (tornado/routing.py:338) (9 samples, 0.10%)</title><rect x="19" y="404" width="1" height="15" fill="rgb(222,60,24)"/><text x="22.00" y="414.50"></text></g><g><title>get_target_delegate (tornado/web.py:1886) (8 samples, 0.09%)</title><rect x="19" y="420" width="1" height="15" fill="rgb(224,168,6)"/><text x="22.00" y="430.50"></text></g><g><title>_read_message (tornado/http1connection.py:185) (22 samples, 0.24%)</title><rect x="17" y="340" width="3" height="15" fill="rgb(228,228,36)"/><text x="20.00" y="350.50"></text></g><g><title>headers_received (tornado/httpserver.py:313) (17 samples, 0.19%)</title><rect x="18" y="356" width="2" height="15" fill="rgb(248,149,25)"/><text x="21.00" y="366.50"></text></g><g><title>__init__ (tornado/web.py:192) (17 samples, 0.19%)</title><rect x="21" y="420" width="2" height="15" fill="rgb(228,60,47)"/><text x="24.00" y="430.50"></text></g><g><title>clear (tornado/web.py:296) (12 samples, 0.13%)</title><rect x="22" y="436" width="1" height="15" fill="rgb(206,211,28)"/><text x="25.00" y="446.50"></text></g><g><title>execute (tornado/web.py:2215) (19 samples, 0.21%)</title><rect x="21" y="404" width="2" height="15" fill="rgb(205,229,4)"/><text x="24.00" y="414.50"></text></g><g><title>find (jupyterhub/orm.py:401) (19 samples, 0.21%)</title><rect x="27" y="500" width="2" height="15" fill="rgb(232,175,3)"/><text x="30.00" y="510.50"></text></g><g><title>find_prefix (jupyterhub/orm.py:320) (18 samples, 0.20%)</title><rect x="27" y="516" width="2" height="15" fill="rgb(230,78,32)"/><text x="30.00" y="526.50"></text></g><g><title>startswith (sqlalchemy/sql/operators.py:757) (12 samples, 0.13%)</title><rect x="28" y="532" width="1" height="15" fill="rgb(234,128,0)"/><text x="31.00" y="542.50"></text></g><g><title>operate (sqlalchemy/sql/elements.py:707) (12 samples, 0.13%)</title><rect x="28" y="548" width="1" height="15" fill="rgb(249,215,25)"/><text x="31.00" y="558.50"></text></g><g><title>startswith_op (sqlalchemy/sql/operators.py:1259) (11 samples, 0.12%)</title><rect x="28" y="564" width="1" height="15" fill="rgb(233,109,12)"/><text x="31.00" y="574.50"></text></g><g><title>_escaped_like_impl (sqlalchemy/sql/operators.py:1255) (11 samples, 0.12%)</title><rect x="28" y="580" width="1" height="15" fill="rgb(245,72,28)"/><text x="31.00" y="590.50"></text></g><g><title>startswith (sqlalchemy/sql/operators.py:757) (11 samples, 0.12%)</title><rect x="28" y="596" width="1" height="15" fill="rgb(233,11,38)"/><text x="31.00" y="606.50"></text></g><g><title>&lt;lambda&gt; (&lt;string&gt;:1) (11 samples, 0.12%)</title><rect x="28" y="612" width="1" height="15" fill="rgb(244,190,6)"/><text x="31.00" y="622.50"></text></g><g><title>operate (sqlalchemy/sql/type_api.py:66) (9 samples, 0.10%)</title><rect x="28" y="628" width="1" height="15" fill="rgb(254,183,32)"/><text x="31.00" y="638.50"></text></g><g><title>find (jupyterhub/orm.py:403) (16 samples, 0.18%)</title><rect x="29" y="500" width="2" height="15" fill="rgb(228,181,8)"/><text x="32.00" y="510.50"></text></g><g><title>_compile_context (sqlalchemy/orm/query.py:3595) (9 samples, 0.10%)</title><rect x="32" y="532" width="1" height="15" fill="rgb(241,9,39)"/><text x="35.00" y="542.50"></text></g><g><title>setup_context (sqlalchemy/orm/query.py:3957) (8 samples, 0.09%)</title><rect x="32" y="548" width="1" height="15" fill="rgb(243,33,22)"/><text x="35.00" y="558.50"></text></g><g><title>_setup_entity_query (sqlalchemy/orm/loading.py:322) (8 samples, 0.09%)</title><rect x="32" y="564" width="1" height="15" fill="rgb(214,194,35)"/><text x="35.00" y="574.50"></text></g><g><title>__iter__ (sqlalchemy/orm/query.py:3077) (24 samples, 0.27%)</title><rect x="31" y="516" width="4" height="15" fill="rgb(253,162,23)"/><text x="34.00" y="526.50"></text></g><g><title>_compile_context (sqlalchemy/orm/query.py:3626) (9 samples, 0.10%)</title><rect x="33" y="532" width="2" height="15" fill="rgb(210,72,31)"/><text x="36.00" y="542.50"></text></g><g><title>_simple_statement (sqlalchemy/orm/query.py:3708) (9 samples, 0.10%)</title><rect x="33" y="548" width="2" height="15" fill="rgb(224,54,2)"/><text x="36.00" y="558.50"></text></g><g><title>select (&lt;string&gt;:2) (8 samples, 0.09%)</title><rect x="33" y="564" width="2" height="15" fill="rgb(235,56,50)"/><text x="36.00" y="574.50"></text></g><g><title>_setup_select_stack (sqlalchemy/sql/compiler.py:2125) (8 samples, 0.09%)</title><rect x="36" y="724" width="1" height="15" fill="rgb(218,225,26)"/><text x="39.00" y="734.50"></text></g><g><title>_get_display_froms (sqlalchemy/sql/selectable.py:2939) (8 samples, 0.09%)</title><rect x="36" y="740" width="1" height="15" fill="rgb(249,166,21)"/><text x="39.00" y="750.50"></text></g><g><title>visit_select (sqlalchemy/sql/compiler.py:2012) (9 samples, 0.10%)</title><rect x="36" y="708" width="1" height="15" fill="rgb(219,133,10)"/><text x="39.00" y="718.50"></text></g><g><title>&lt;listcomp&gt; (sqlalchemy/sql/compiler.py:2044) (27 samples, 0.30%)</title><rect x="37" y="724" width="4" height="15" fill="rgb(216,76,33)"/><text x="40.00" y="734.50"></text></g><g><title>_label_select_column (sqlalchemy/sql/compiler.py:1797) (15 samples, 0.17%)</title><rect x="39" y="740" width="2" height="15" fill="rgb(239,181,32)"/><text x="42.00" y="750.50"></text></g><g><title>_compiler_dispatch (sqlalchemy/sql/visitors.py:90) (13 samples, 0.14%)</title><rect x="39" y="756" width="2" height="15" fill="rgb(244,8,1)"/><text x="42.00" y="766.50"></text></g><g><title>visit_label (sqlalchemy/sql/compiler.py:812) (11 samples, 0.12%)</title><rect x="39" y="772" width="2" height="15" fill="rgb(215,161,1)"/><text x="42.00" y="782.50"></text></g><g><title>visit_select (sqlalchemy/sql/compiler.py:2044) (30 samples, 0.33%)</title><rect x="37" y="708" width="4" height="15" fill="rgb(225,117,43)"/><text x="40.00" y="718.50"></text></g><g><title>visit_binary (sqlalchemy/sql/compiler.py:1243) (17 samples, 0.19%)</title><rect x="42" y="852" width="2" height="15" fill="rgb(224,54,13)"/><text x="45.00" y="862.50"></text></g><g><title>visit_startswith_op_binary (sqlalchemy/sql/compiler.py:1329) (9 samples, 0.10%)</title><rect x="43" y="868" width="1" height="15" fill="rgb(206,17,28)"/><text x="46.00" y="878.50"></text></g><g><title>_execute_clauseelement (sqlalchemy/engine/base.py:1090) (73 samples, 0.81%)</title><rect x="35" y="580" width="10" height="15" fill="rgb(219,137,0)"/><text x="38.00" y="590.50"></text></g><g><title>&lt;lambda&gt; (&lt;string&gt;:1) (73 samples, 0.81%)</title><rect x="35" y="596" width="10" height="15" fill="rgb(221,81,46)"/><text x="38.00" y="606.50"></text></g><g><title>compile (sqlalchemy/sql/elements.py:448) (73 samples, 0.81%)</title><rect x="35" y="612" width="10" height="15" fill="rgb(231,5,45)"/><text x="38.00" y="622.50"></text></g><g><title>_compiler (sqlalchemy/sql/elements.py:454) (72 samples, 0.80%)</title><rect x="35" y="628" width="10" height="15" fill="rgb(249,24,45)"/><text x="38.00" y="638.50"></text></g><g><title>__init__ (sqlalchemy/sql/compiler.py:553) (71 samples, 0.79%)</title><rect x="36" y="644" width="9" height="15" fill="rgb(219,111,32)"/><text x="39.00" y="654.50"></text></g><g><title>__init__ (sqlalchemy/sql/compiler.py:310) (71 samples, 0.79%)</title><rect x="36" y="660" width="9" height="15" fill="rgb(242,32,19)"/><text x="39.00" y="670.50"></text></g><g><title>process (sqlalchemy/sql/compiler.py:341) (70 samples, 0.78%)</title><rect x="36" y="676" width="9" height="15" fill="rgb(224,56,39)"/><text x="39.00" y="686.50"></text></g><g><title>_compiler_dispatch (sqlalchemy/sql/visitors.py:90) (70 samples, 0.78%)</title><rect x="36" y="692" width="9" height="15" fill="rgb(245,203,43)"/><text x="39.00" y="702.50"></text></g><g><title>visit_select (sqlalchemy/sql/compiler.py:2069) (30 samples, 0.33%)</title><rect x="41" y="708" width="4" height="15" fill="rgb(217,190,44)"/><text x="44.00" y="718.50"></text></g><g><title>_compose_select_body (sqlalchemy/sql/compiler.py:2168) (30 samples, 0.33%)</title><rect x="41" y="724" width="4" height="15" fill="rgb(234,94,24)"/><text x="44.00" y="734.50"></text></g><g><title>_compiler_dispatch (sqlalchemy/sql/visitors.py:90) (30 samples, 0.33%)</title><rect x="41" y="740" width="4" height="15" fill="rgb(242,80,16)"/><text x="44.00" y="750.50"></text></g><g><title>visit_clauselist (sqlalchemy/sql/compiler.py:962) (30 samples, 0.33%)</title><rect x="41" y="756" width="4" height="15" fill="rgb(243,133,28)"/><text x="44.00" y="766.50"></text></g><g><title>&lt;genexpr&gt; (sqlalchemy/sql/compiler.py:960) (27 samples, 0.30%)</title><rect x="41" y="772" width="4" height="15" fill="rgb(222,104,2)"/><text x="44.00" y="782.50"></text></g><g><title>&lt;genexpr&gt; (sqlalchemy/sql/compiler.py:962) (27 samples, 0.30%)</title><rect x="41" y="788" width="4" height="15" fill="rgb(224,168,13)"/><text x="44.00" y="798.50"></text></g><g><title>_compiler_dispatch (sqlalchemy/sql/visitors.py:90) (27 samples, 0.30%)</title><rect x="41" y="804" width="4" height="15" fill="rgb(206,144,44)"/><text x="44.00" y="814.50"></text></g><g><title>visit_grouping (sqlalchemy/sql/compiler.py:709) (27 samples, 0.30%)</title><rect x="41" y="820" width="4" height="15" fill="rgb(225,14,5)"/><text x="44.00" y="830.50"></text></g><g><title>_compiler_dispatch (sqlalchemy/sql/visitors.py:90) (27 samples, 0.30%)</title><rect x="41" y="836" width="4" height="15" fill="rgb(226,54,50)"/><text x="44.00" y="846.50"></text></g><g><title>_execute_context (sqlalchemy/engine/base.py:1236) (70 samples, 0.78%)</title><rect x="46" y="596" width="9" height="15" fill="rgb(213,137,1)"/><text x="49.00" y="606.50"></text></g><g><title>do_execute (sqlalchemy/engine/default.py:536) (69 samples, 0.77%)</title><rect x="46" y="612" width="9" height="15" fill="rgb(231,138,42)"/><text x="49.00" y="622.50"></text></g><g><title>_execute_context (sqlalchemy/engine/base.py:1259) (13 samples, 0.14%)</title><rect x="56" y="596" width="2" height="15" fill="rgb(213,166,11)"/><text x="59.00" y="606.50"></text></g><g><title>get_result_proxy (sqlalchemy/dialects/postgresql/psycopg2.py:488) (10 samples, 0.11%)</title><rect x="56" y="612" width="2" height="15" fill="rgb(232,128,39)"/><text x="59.00" y="622.50"></text></g><g><title>__init__ (sqlalchemy/engine/result.py:722) (8 samples, 0.09%)</title><rect x="57" y="628" width="1" height="15" fill="rgb(216,197,42)"/><text x="60.00" y="638.50"></text></g><g><title>_execute_clauseelement (sqlalchemy/engine/base.py:1099) (98 samples, 1.09%)</title><rect x="45" y="580" width="13" height="15" fill="rgb(213,98,10)"/><text x="48.00" y="590.50"></text></g><g><title>__iter__ (sqlalchemy/orm/query.py:3081) (180 samples, 2.00%)</title><rect x="35" y="516" width="23" height="15" fill="rgb(206,92,23)"/><text x="38.00" y="526.50">_..</text></g><g><title>_execute_and_instances (sqlalchemy/orm/query.py:3106) (177 samples, 1.97%)</title><rect x="35" y="532" width="23" height="15" fill="rgb(231,214,37)"/><text x="38.00" y="542.50">_..</text></g><g><title>execute (sqlalchemy/engine/base.py:980) (177 samples, 1.97%)</title><rect x="35" y="548" width="23" height="15" fill="rgb(229,44,54)"/><text x="38.00" y="558.50">e..</text></g><g><title>_execute_on_connection (sqlalchemy/sql/elements.py:273) (176 samples, 1.96%)</title><rect x="35" y="564" width="23" height="15" fill="rgb(240,196,51)"/><text x="38.00" y="574.50">_..</text></g><g><title>instances (sqlalchemy/orm/loading.py:65) (20 samples, 0.22%)</title><rect x="58" y="516" width="3" height="15" fill="rgb(234,105,49)"/><text x="61.00" y="526.50"></text></g><g><title>&lt;listcomp&gt; (sqlalchemy/orm/loading.py:65) (20 samples, 0.22%)</title><rect x="58" y="532" width="3" height="15" fill="rgb(205,40,33)"/><text x="61.00" y="542.50"></text></g><g><title>row_processor (sqlalchemy/orm/query.py:3928) (19 samples, 0.21%)</title><rect x="59" y="548" width="2" height="15" fill="rgb(205,79,8)"/><text x="62.00" y="558.50"></text></g><g><title>find (jupyterhub/orm.py:411) (238 samples, 2.64%)</title><rect x="31" y="500" width="32" height="15" fill="rgb(254,200,42)"/><text x="34.00" y="510.50">fi..</text></g><g><title>get_current_user_token (jupyterhub/handlers/base.py:217) (282 samples, 3.13%)</title><rect x="27" y="484" width="37" height="15" fill="rgb(219,120,18)"/><text x="30.00" y="494.50">get..</text></g><g><title>get_current_user_token (jupyterhub/handlers/base.py:224) (9 samples, 0.10%)</title><rect x="64" y="484" width="1" height="15" fill="rgb(206,8,4)"/><text x="67.00" y="494.50"></text></g><g><title>__get__ (sqlalchemy/orm/attributes.py:275) (9 samples, 0.10%)</title><rect x="64" y="500" width="1" height="15" fill="rgb(211,208,49)"/><text x="67.00" y="510.50"></text></g><g><title>_flush (sqlalchemy/orm/session.py:2521) (11 samples, 0.12%)</title><rect x="67" y="564" width="2" height="15" fill="rgb(253,19,11)"/><text x="70.00" y="574.50"></text></g><g><title>register_object (sqlalchemy/orm/unitofwork.py:286) (10 samples, 0.11%)</title><rect x="68" y="580" width="1" height="15" fill="rgb(210,192,39)"/><text x="71.00" y="590.50"></text></g><g><title>execute (sqlalchemy/orm/unitofwork.py:470) (9 samples, 0.10%)</title><rect x="69" y="612" width="1" height="15" fill="rgb(243,159,50)"/><text x="72.00" y="622.50"></text></g><g><title>execute (sqlalchemy/orm/unitofwork.py:483) (10 samples, 0.11%)</title><rect x="70" y="612" width="2" height="15" fill="rgb(249,80,7)"/><text x="73.00" y="622.50"></text></g><g><title>_generate_actions (sqlalchemy/orm/unitofwork.py:355) (27 samples, 0.30%)</title><rect x="69" y="596" width="4" height="15" fill="rgb(206,74,3)"/><text x="72.00" y="606.50"></text></g><g><title>execute (sqlalchemy/orm/unitofwork.py:397) (32 samples, 0.36%)</title><rect x="69" y="580" width="4" height="15" fill="rgb(248,205,52)"/><text x="72.00" y="590.50"></text></g><g><title>_organize_states_for_save (sqlalchemy/orm/persistence.py:374) (10 samples, 0.11%)</title><rect x="76" y="628" width="1" height="15" fill="rgb(252,15,46)"/><text x="79.00" y="638.50"></text></g><g><title>save_obj (sqlalchemy/orm/persistence.py:213) (14 samples, 0.16%)</title><rect x="75" y="612" width="2" height="15" fill="rgb(251,139,12)"/><text x="78.00" y="622.50"></text></g><g><title>_emit_update_statements (sqlalchemy/orm/persistence.py:1000) (10 samples, 0.11%)</title><rect x="78" y="628" width="1" height="15" fill="rgb(222,113,3)"/><text x="81.00" y="638.50"></text></g><g><title>_emit_update_statements (sqlalchemy/orm/persistence.py:873) (9 samples, 0.10%)</title><rect x="79" y="628" width="1" height="15" fill="rgb(207,115,12)"/><text x="82.00" y="638.50"></text></g><g><title>_emit_update_statements (sqlalchemy/orm/persistence.py:975) (9 samples, 0.10%)</title><rect x="80" y="628" width="2" height="15" fill="rgb(217,221,12)"/><text x="83.00" y="638.50"></text></g><g><title>__missing__ (sqlalchemy/util/_collections.py:729) (9 samples, 0.10%)</title><rect x="80" y="644" width="2" height="15" fill="rgb(229,73,54)"/><text x="83.00" y="654.50"></text></g><g><title>&lt;lambda&gt; (sqlalchemy/orm/persistence.py:1574) (9 samples, 0.10%)</title><rect x="80" y="660" width="2" height="15" fill="rgb(250,134,16)"/><text x="83.00" y="670.50"></text></g><g><title>_execute_context (sqlalchemy/engine/base.py:1171) (16 samples, 0.18%)</title><rect x="83" y="692" width="2" height="15" fill="rgb(211,202,22)"/><text x="86.00" y="702.50"></text></g><g><title>_execute_context (sqlalchemy/engine/base.py:1236) (113 samples, 1.26%)</title><rect x="85" y="692" width="15" height="15" fill="rgb(232,205,34)"/><text x="88.00" y="702.50"></text></g><g><title>do_execute (sqlalchemy/engine/default.py:536) (112 samples, 1.24%)</title><rect x="85" y="708" width="15" height="15" fill="rgb(242,224,33)"/><text x="88.00" y="718.50"></text></g><g><title>_emit_update_statements (sqlalchemy/orm/persistence.py:976) (150 samples, 1.67%)</title><rect x="82" y="628" width="19" height="15" fill="rgb(236,107,39)"/><text x="85.00" y="638.50"></text></g><g><title>execute (sqlalchemy/engine/base.py:980) (149 samples, 1.66%)</title><rect x="82" y="644" width="19" height="15" fill="rgb(246,77,24)"/><text x="85.00" y="654.50"></text></g><g><title>_execute_on_connection (sqlalchemy/sql/elements.py:273) (149 samples, 1.66%)</title><rect x="82" y="660" width="19" height="15" fill="rgb(211,121,28)"/><text x="85.00" y="670.50"></text></g><g><title>_execute_clauseelement (sqlalchemy/engine/base.py:1099) (139 samples, 1.54%)</title><rect x="83" y="676" width="18" height="15" fill="rgb(235,79,40)"/><text x="86.00" y="686.50"></text></g><g><title>save_obj (sqlalchemy/orm/persistence.py:236) (182 samples, 2.02%)</title><rect x="78" y="612" width="23" height="15" fill="rgb(212,211,47)"/><text x="81.00" y="622.50">s..</text></g><g><title>execute (sqlalchemy/orm/unitofwork.py:583) (206 samples, 2.29%)</title><rect x="75" y="596" width="27" height="15" fill="rgb(243,144,40)"/><text x="78.00" y="606.50">e..</text></g><g><title>delete_obj (sqlalchemy/orm/persistence.py:326) (13 samples, 0.14%)</title><rect x="102" y="612" width="2" height="15" fill="rgb(219,104,48)"/><text x="105.00" y="622.50"></text></g><g><title>_organize_states_for_delete (sqlalchemy/orm/persistence.py:463) (13 samples, 0.14%)</title><rect x="102" y="628" width="2" height="15" fill="rgb(228,138,22)"/><text x="105.00" y="638.50"></text></g><g><title>_flush (sqlalchemy/orm/session.py:2544) (278 samples, 3.09%)</title><rect x="69" y="564" width="36" height="15" fill="rgb(240,74,32)"/><text x="72.00" y="574.50">_fl..</text></g><g><title>execute (sqlalchemy/orm/unitofwork.py:416) (240 samples, 2.67%)</title><rect x="74" y="580" width="31" height="15" fill="rgb(245,44,54)"/><text x="77.00" y="590.50">ex..</text></g><g><title>execute (sqlalchemy/orm/unitofwork.py:618) (24 samples, 0.27%)</title><rect x="102" y="596" width="3" height="15" fill="rgb(214,38,27)"/><text x="105.00" y="606.50"></text></g><g><title>commit (sqlalchemy/orm/session.py:487) (306 samples, 3.40%)</title><rect x="66" y="516" width="40" height="15" fill="rgb(219,38,53)"/><text x="69.00" y="526.50">com..</text></g><g><title>_prepare_impl (sqlalchemy/orm/session.py:466) (306 samples, 3.40%)</title><rect x="66" y="532" width="40" height="15" fill="rgb(238,142,47)"/><text x="69.00" y="542.50">_pr..</text></g><g><title>flush (sqlalchemy/orm/session.py:2446) (305 samples, 3.39%)</title><rect x="66" y="548" width="40" height="15" fill="rgb(237,64,39)"/><text x="69.00" y="558.50">flu..</text></g><g><title>commit (sqlalchemy/orm/session.py:491) (1,280 samples, 14.22%)</title><rect x="106" y="516" width="168" height="15" fill="rgb(249,14,41)"/><text x="109.00" y="526.50">commit (sqlalchemy/or..</text></g><g><title>commit (sqlalchemy/engine/base.py:1708) (1,279 samples, 14.21%)</title><rect x="107" y="532" width="167" height="15" fill="rgb(242,38,39)"/><text x="110.00" y="542.50">commit (sqlalchemy/en..</text></g><g><title>_do_commit (sqlalchemy/engine/base.py:1739) (1,279 samples, 14.21%)</title><rect x="107" y="548" width="167" height="15" fill="rgb(240,91,43)"/><text x="110.00" y="558.50">_do_commit (sqlalchem..</text></g><g><title>_commit_impl (sqlalchemy/engine/base.py:753) (1,276 samples, 14.18%)</title><rect x="107" y="564" width="167" height="15" fill="rgb(219,101,25)"/><text x="110.00" y="574.50">_commit_impl (sqlalch..</text></g><g><title>do_commit (sqlalchemy/engine/default.py:489) (1,276 samples, 14.18%)</title><rect x="107" y="580" width="167" height="15" fill="rgb(205,137,46)"/><text x="110.00" y="590.50">do_commit (sqlalchemy..</text></g><g><title>close (sqlalchemy/engine/base.py:894) (15 samples, 0.17%)</title><rect x="275" y="548" width="2" height="15" fill="rgb(232,206,23)"/><text x="278.00" y="558.50"></text></g><g><title>close (sqlalchemy/pool.py:1061) (13 samples, 0.14%)</title><rect x="275" y="564" width="2" height="15" fill="rgb(247,209,4)"/><text x="278.00" y="574.50"></text></g><g><title>_checkin (sqlalchemy/pool.py:909) (13 samples, 0.14%)</title><rect x="275" y="580" width="2" height="15" fill="rgb(226,177,12)"/><text x="278.00" y="590.50"></text></g><g><title>_finalize_fairy (sqlalchemy/pool.py:759) (8 samples, 0.09%)</title><rect x="276" y="596" width="1" height="15" fill="rgb(254,60,47)"/><text x="279.00" y="606.50"></text></g><g><title>close (sqlalchemy/orm/session.py:572) (16 samples, 0.18%)</title><rect x="275" y="532" width="2" height="15" fill="rgb(229,88,9)"/><text x="278.00" y="542.50"></text></g><g><title>get_current_user_token (jupyterhub/handlers/base.py:227) (1,628 samples, 18.09%)</title><rect x="65" y="484" width="214" height="15" fill="rgb(229,228,47)"/><text x="68.00" y="494.50">get_current_user_token (jupy..</text></g><g><title>commit (sqlalchemy/orm/session.py:1023) (1,627 samples, 18.08%)</title><rect x="65" y="500" width="214" height="15" fill="rgb(226,31,4)"/><text x="68.00" y="510.50">commit (sqlalchemy/orm/sessi..</text></g><g><title>commit (sqlalchemy/orm/session.py:499) (29 samples, 0.32%)</title><rect x="275" y="516" width="4" height="15" fill="rgb(242,120,1)"/><text x="278.00" y="526.50"></text></g><g><title>close (sqlalchemy/orm/session.py:581) (12 samples, 0.13%)</title><rect x="277" y="532" width="2" height="15" fill="rgb(216,6,10)"/><text x="280.00" y="542.50"></text></g><g><title>begin (sqlalchemy/orm/session.py:941) (10 samples, 0.11%)</title><rect x="277" y="548" width="2" height="15" fill="rgb(225,218,39)"/><text x="280.00" y="558.50"></text></g><g><title>__init__ (sqlalchemy/orm/session.py:227) (8 samples, 0.09%)</title><rect x="277" y="564" width="2" height="15" fill="rgb(243,128,25)"/><text x="280.00" y="574.50"></text></g><g><title>_load_for_state (sqlalchemy/orm/strategies.py:678) (8 samples, 0.09%)</title><rect x="281" y="532" width="1" height="15" fill="rgb(233,63,41)"/><text x="284.00" y="542.50"></text></g><g><title>get (sqlalchemy/orm/attributes.py:674) (17 samples, 0.19%)</title><rect x="280" y="516" width="2" height="15" fill="rgb(217,53,4)"/><text x="283.00" y="526.50"></text></g><g><title>__get__ (sqlalchemy/orm/attributes.py:275) (25 samples, 0.28%)</title><rect x="279" y="500" width="3" height="15" fill="rgb(207,113,41)"/><text x="282.00" y="510.50"></text></g><g><title>m (jupyterhub/apihandlers/users.py:102) (1,973 samples, 21.92%)</title><rect x="26" y="452" width="258" height="15" fill="rgb(205,77,51)"/><text x="29.00" y="462.50">m (jupyterhub/apihandlers/users.py..</text></g><g><title>get_current_user (jupyterhub/handlers/base.py:272) (1,973 samples, 21.92%)</title><rect x="26" y="468" width="258" height="15" fill="rgb(254,149,16)"/><text x="29.00" y="478.50">get_current_user (jupyterhub/handl..</text></g><g><title>get_current_user_token (jupyterhub/handlers/base.py:228) (44 samples, 0.49%)</title><rect x="279" y="484" width="5" height="15" fill="rgb(244,1,27)"/><text x="282.00" y="494.50"></text></g><g><title>_user_from_orm (jupyterhub/handlers/base.py:262) (14 samples, 0.16%)</title><rect x="282" y="500" width="2" height="15" fill="rgb(207,130,41)"/><text x="285.00" y="510.50"></text></g><g><title>_boolean_compare (sqlalchemy/sql/default_comparator.py:104) (8 samples, 0.09%)</title><rect x="286" y="660" width="1" height="15" fill="rgb(247,157,30)"/><text x="289.00" y="670.50"></text></g><g><title>__eq__ (sqlalchemy/sql/operators.py:365) (20 samples, 0.22%)</title><rect x="285" y="500" width="3" height="15" fill="rgb(253,128,7)"/><text x="288.00" y="510.50"></text></g><g><title>operate (sqlalchemy/orm/attributes.py:210) (20 samples, 0.22%)</title><rect x="285" y="516" width="3" height="15" fill="rgb(211,178,39)"/><text x="288.00" y="526.50"></text></g><g><title>__eq__ (sqlalchemy/sql/operators.py:365) (19 samples, 0.21%)</title><rect x="285" y="532" width="3" height="15" fill="rgb(214,136,54)"/><text x="288.00" y="542.50"></text></g><g><title>operate (sqlalchemy/orm/properties.py:305) (19 samples, 0.21%)</title><rect x="285" y="548" width="3" height="15" fill="rgb(230,210,49)"/><text x="288.00" y="558.50"></text></g><g><title>__eq__ (sqlalchemy/sql/annotation.py:104) (18 samples, 0.20%)</title><rect x="285" y="564" width="3" height="15" fill="rgb(238,183,20)"/><text x="288.00" y="574.50"></text></g><g><title>__eq__ (sqlalchemy/sql/operators.py:365) (17 samples, 0.19%)</title><rect x="286" y="580" width="2" height="15" fill="rgb(215,6,30)"/><text x="289.00" y="590.50"></text></g><g><title>operate (sqlalchemy/sql/elements.py:707) (17 samples, 0.19%)</title><rect x="286" y="596" width="2" height="15" fill="rgb(227,199,19)"/><text x="289.00" y="606.50"></text></g><g><title>__eq__ (sqlalchemy/sql/operators.py:365) (14 samples, 0.16%)</title><rect x="286" y="612" width="2" height="15" fill="rgb(239,168,47)"/><text x="289.00" y="622.50"></text></g><g><title>&lt;lambda&gt; (&lt;string&gt;:1) (14 samples, 0.16%)</title><rect x="286" y="628" width="2" height="15" fill="rgb(220,24,7)"/><text x="289.00" y="638.50"></text></g><g><title>operate (sqlalchemy/sql/type_api.py:66) (14 samples, 0.16%)</title><rect x="286" y="644" width="2" height="15" fill="rgb(253,115,13)"/><text x="289.00" y="654.50"></text></g><g><title>_compile_context (sqlalchemy/orm/query.py:3579) (8 samples, 0.09%)</title><rect x="289" y="548" width="1" height="15" fill="rgb(215,32,53)"/><text x="292.00" y="558.50"></text></g><g><title>_compile_context (sqlalchemy/orm/query.py:3595) (16 samples, 0.18%)</title><rect x="291" y="548" width="2" height="15" fill="rgb(238,132,1)"/><text x="294.00" y="558.50"></text></g><g><title>setup_context (sqlalchemy/orm/query.py:3957) (14 samples, 0.16%)</title><rect x="291" y="564" width="2" height="15" fill="rgb(222,43,18)"/><text x="294.00" y="574.50"></text></g><g><title>_setup_entity_query (sqlalchemy/orm/loading.py:322) (12 samples, 0.13%)</title><rect x="291" y="580" width="2" height="15" fill="rgb(220,111,20)"/><text x="294.00" y="590.50"></text></g><g><title>__iter__ (sqlalchemy/orm/query.py:3077) (42 samples, 0.47%)</title><rect x="289" y="532" width="6" height="15" fill="rgb(220,162,0)"/><text x="292.00" y="542.50"></text></g><g><title>_compile_context (sqlalchemy/orm/query.py:3626) (12 samples, 0.13%)</title><rect x="293" y="548" width="2" height="15" fill="rgb(225,40,17)"/><text x="296.00" y="558.50"></text></g><g><title>_simple_statement (sqlalchemy/orm/query.py:3708) (11 samples, 0.12%)</title><rect x="293" y="564" width="2" height="15" fill="rgb(253,176,12)"/><text x="296.00" y="574.50"></text></g><g><title>select (&lt;string&gt;:2) (9 samples, 0.10%)</title><rect x="293" y="580" width="2" height="15" fill="rgb(211,125,28)"/><text x="296.00" y="590.50"></text></g><g><title>_execute_context (sqlalchemy/engine/base.py:1236) (91 samples, 1.01%)</title><rect x="298" y="772" width="11" height="15" fill="rgb(213,157,45)"/><text x="301.00" y="782.50"></text></g><g><title>do_execute (sqlalchemy/engine/default.py:536) (91 samples, 1.01%)</title><rect x="298" y="788" width="11" height="15" fill="rgb(249,61,48)"/><text x="301.00" y="798.50"></text></g><g><title>execute (sqlalchemy/engine/base.py:980) (119 samples, 1.32%)</title><rect x="296" y="724" width="15" height="15" fill="rgb(238,148,50)"/><text x="299.00" y="734.50"></text></g><g><title>_execute_on_connection (sqlalchemy/sql/elements.py:273) (119 samples, 1.32%)</title><rect x="296" y="740" width="15" height="15" fill="rgb(218,216,32)"/><text x="299.00" y="750.50"></text></g><g><title>_execute_clauseelement (sqlalchemy/engine/base.py:1099) (110 samples, 1.22%)</title><rect x="297" y="756" width="14" height="15" fill="rgb(250,185,38)"/><text x="300.00" y="766.50"></text></g><g><title>_execute_context (sqlalchemy/engine/base.py:1259) (13 samples, 0.14%)</title><rect x="310" y="772" width="1" height="15" fill="rgb(248,202,24)"/><text x="313.00" y="782.50"></text></g><g><title>get_result_proxy (sqlalchemy/dialects/postgresql/psycopg2.py:488) (13 samples, 0.14%)</title><rect x="310" y="788" width="1" height="15" fill="rgb(233,175,41)"/><text x="313.00" y="798.50"></text></g><g><title>__init__ (sqlalchemy/engine/result.py:722) (12 samples, 0.13%)</title><rect x="310" y="804" width="1" height="15" fill="rgb(253,214,7)"/><text x="313.00" y="814.50"></text></g><g><title>_init_metadata (sqlalchemy/engine/result.py:754) (12 samples, 0.13%)</title><rect x="310" y="820" width="1" height="15" fill="rgb(210,182,46)"/><text x="313.00" y="830.50"></text></g><g><title>scalar (sqlalchemy/engine/base.py:912) (124 samples, 1.38%)</title><rect x="296" y="708" width="16" height="15" fill="rgb(215,35,32)"/><text x="299.00" y="718.50"></text></g><g><title>__call__ (sqlalchemy/event/attr.py:297) (132 samples, 1.47%)</title><rect x="296" y="676" width="17" height="15" fill="rgb(227,128,50)"/><text x="299.00" y="686.50"></text></g><g><title>ping_connection (jupyterhub/orm.py:611) (132 samples, 1.47%)</title><rect x="296" y="692" width="17" height="15" fill="rgb(243,39,48)"/><text x="299.00" y="702.50"></text></g><g><title>_connection_for_bind (sqlalchemy/orm/session.py:424) (137 samples, 1.52%)</title><rect x="295" y="628" width="18" height="15" fill="rgb(210,26,39)"/><text x="298.00" y="638.50"></text></g><g><title>contextual_connect (sqlalchemy/engine/base.py:2194) (136 samples, 1.51%)</title><rect x="295" y="644" width="18" height="15" fill="rgb(231,5,52)"/><text x="298.00" y="654.50"></text></g><g><title>__init__ (sqlalchemy/engine/base.py:125) (133 samples, 1.48%)</title><rect x="296" y="660" width="17" height="15" fill="rgb(253,35,25)"/><text x="299.00" y="670.50"></text></g><g><title>_connection_for_bind (sqlalchemy/orm/session.py:434) (8 samples, 0.09%)</title><rect x="313" y="628" width="1" height="15" fill="rgb(233,6,1)"/><text x="316.00" y="638.50"></text></g><g><title>_connection_from_session (sqlalchemy/orm/query.py:3096) (150 samples, 1.67%)</title><rect x="295" y="580" width="19" height="15" fill="rgb(224,226,16)"/><text x="298.00" y="590.50"></text></g><g><title>connection (sqlalchemy/orm/session.py:1120) (148 samples, 1.64%)</title><rect x="295" y="596" width="19" height="15" fill="rgb(216,107,52)"/><text x="298.00" y="606.50"></text></g><g><title>_connection_for_bind (sqlalchemy/orm/session.py:1126) (148 samples, 1.64%)</title><rect x="295" y="612" width="19" height="15" fill="rgb(215,137,6)"/><text x="298.00" y="622.50"></text></g><g><title>_execute_and_instances (sqlalchemy/orm/query.py:3103) (151 samples, 1.68%)</title><rect x="295" y="548" width="19" height="15" fill="rgb(225,201,41)"/><text x="298.00" y="558.50"></text></g><g><title>_get_bind_args (sqlalchemy/orm/query.py:3111) (151 samples, 1.68%)</title><rect x="295" y="564" width="19" height="15" fill="rgb(224,46,23)"/><text x="298.00" y="574.50"></text></g><g><title>visit_select (sqlalchemy/sql/compiler.py:2012) (8 samples, 0.09%)</title><rect x="316" y="724" width="1" height="15" fill="rgb(252,31,43)"/><text x="319.00" y="734.50"></text></g><g><title>&lt;listcomp&gt; (sqlalchemy/sql/compiler.py:2044) (33 samples, 0.37%)</title><rect x="317" y="740" width="5" height="15" fill="rgb(246,226,28)"/><text x="320.00" y="750.50"></text></g><g><title>_label_select_column (sqlalchemy/sql/compiler.py:1797) (24 samples, 0.27%)</title><rect x="319" y="756" width="3" height="15" fill="rgb(243,180,6)"/><text x="322.00" y="766.50"></text></g><g><title>_compiler_dispatch (sqlalchemy/sql/visitors.py:90) (20 samples, 0.22%)</title><rect x="319" y="772" width="3" height="15" fill="rgb(225,114,42)"/><text x="322.00" y="782.50"></text></g><g><title>visit_label (sqlalchemy/sql/compiler.py:812) (15 samples, 0.17%)</title><rect x="320" y="788" width="2" height="15" fill="rgb(232,84,12)"/><text x="323.00" y="798.50"></text></g><g><title>_compiler_dispatch (sqlalchemy/sql/visitors.py:90) (11 samples, 0.12%)</title><rect x="320" y="804" width="2" height="15" fill="rgb(251,1,20)"/><text x="323.00" y="814.50"></text></g><g><title>visit_select (sqlalchemy/sql/compiler.py:2044) (40 samples, 0.44%)</title><rect x="317" y="724" width="5" height="15" fill="rgb(229,57,41)"/><text x="320.00" y="734.50"></text></g><g><title>visit_select (sqlalchemy/sql/compiler.py:2069) (11 samples, 0.12%)</title><rect x="322" y="724" width="2" height="15" fill="rgb(240,34,9)"/><text x="325.00" y="734.50"></text></g><g><title>_execute_clauseelement (sqlalchemy/engine/base.py:1090) (67 samples, 0.74%)</title><rect x="315" y="596" width="9" height="15" fill="rgb(243,35,51)"/><text x="318.00" y="606.50"></text></g><g><title>&lt;lambda&gt; (&lt;string&gt;:1) (67 samples, 0.74%)</title><rect x="315" y="612" width="9" height="15" fill="rgb(239,60,0)"/><text x="318.00" y="622.50"></text></g><g><title>compile (sqlalchemy/sql/elements.py:448) (66 samples, 0.73%)</title><rect x="315" y="628" width="9" height="15" fill="rgb(210,193,13)"/><text x="318.00" y="638.50"></text></g><g><title>_compiler (sqlalchemy/sql/elements.py:454) (66 samples, 0.73%)</title><rect x="315" y="644" width="9" height="15" fill="rgb(247,53,53)"/><text x="318.00" y="654.50"></text></g><g><title>__init__ (sqlalchemy/sql/compiler.py:553) (64 samples, 0.71%)</title><rect x="316" y="660" width="8" height="15" fill="rgb(245,24,42)"/><text x="319.00" y="670.50"></text></g><g><title>__init__ (sqlalchemy/sql/compiler.py:310) (62 samples, 0.69%)</title><rect x="316" y="676" width="8" height="15" fill="rgb(205,179,26)"/><text x="319.00" y="686.50"></text></g><g><title>process (sqlalchemy/sql/compiler.py:341) (62 samples, 0.69%)</title><rect x="316" y="692" width="8" height="15" fill="rgb(241,49,45)"/><text x="319.00" y="702.50"></text></g><g><title>_compiler_dispatch (sqlalchemy/sql/visitors.py:90) (61 samples, 0.68%)</title><rect x="316" y="708" width="8" height="15" fill="rgb(226,134,12)"/><text x="319.00" y="718.50"></text></g><g><title>_execute_context (sqlalchemy/engine/base.py:1236) (78 samples, 0.87%)</title><rect x="325" y="612" width="10" height="15" fill="rgb(216,184,8)"/><text x="328.00" y="622.50"></text></g><g><title>do_execute (sqlalchemy/engine/default.py:536) (76 samples, 0.84%)</title><rect x="325" y="628" width="10" height="15" fill="rgb(230,176,10)"/><text x="328.00" y="638.50"></text></g><g><title>__init__ (sqlalchemy/engine/result.py:239) (11 samples, 0.12%)</title><rect x="337" y="676" width="2" height="15" fill="rgb(237,16,12)"/><text x="340.00" y="686.50"></text></g><g><title>_merge_cursor_description (sqlalchemy/engine/result.py:417) (10 samples, 0.11%)</title><rect x="337" y="692" width="2" height="15" fill="rgb(251,141,49)"/><text x="340.00" y="702.50"></text></g><g><title>&lt;listcomp&gt; (sqlalchemy/engine/result.py:417) (9 samples, 0.10%)</title><rect x="338" y="708" width="1" height="15" fill="rgb(228,171,54)"/><text x="341.00" y="718.50"></text></g><g><title>_execute_context (sqlalchemy/engine/base.py:1259) (25 samples, 0.28%)</title><rect x="336" y="612" width="4" height="15" fill="rgb(208,8,42)"/><text x="339.00" y="622.50"></text></g><g><title>get_result_proxy (sqlalchemy/dialects/postgresql/psycopg2.py:488) (23 samples, 0.26%)</title><rect x="337" y="628" width="3" height="15" fill="rgb(230,171,21)"/><text x="340.00" y="638.50"></text></g><g><title>__init__ (sqlalchemy/engine/result.py:722) (20 samples, 0.22%)</title><rect x="337" y="644" width="3" height="15" fill="rgb(246,81,38)"/><text x="340.00" y="654.50"></text></g><g><title>_init_metadata (sqlalchemy/engine/result.py:754) (19 samples, 0.21%)</title><rect x="337" y="660" width="3" height="15" fill="rgb(223,25,52)"/><text x="340.00" y="670.50"></text></g><g><title>_execute_clauseelement (sqlalchemy/engine/base.py:1099) (123 samples, 1.37%)</title><rect x="324" y="596" width="16" height="15" fill="rgb(247,143,23)"/><text x="327.00" y="606.50"></text></g><g><title>_execute_and_instances (sqlalchemy/orm/query.py:3106) (199 samples, 2.21%)</title><rect x="314" y="548" width="26" height="15" fill="rgb(234,198,23)"/><text x="317.00" y="558.50">_..</text></g><g><title>execute (sqlalchemy/engine/base.py:980) (199 samples, 2.21%)</title><rect x="314" y="564" width="26" height="15" fill="rgb(212,9,9)"/><text x="317.00" y="574.50">e..</text></g><g><title>_execute_on_connection (sqlalchemy/sql/elements.py:273) (199 samples, 2.21%)</title><rect x="314" y="580" width="26" height="15" fill="rgb(228,131,47)"/><text x="317.00" y="590.50">_..</text></g><g><title>__iter__ (sqlalchemy/orm/query.py:3081) (351 samples, 3.90%)</title><rect x="295" y="532" width="46" height="15" fill="rgb(243,4,17)"/><text x="298.00" y="542.50">__it..</text></g><g><title>_instance_processor (sqlalchemy/orm/loading.py:405) (8 samples, 0.09%)</title><rect x="348" y="580" width="1" height="15" fill="rgb(252,1,23)"/><text x="351.00" y="590.50"></text></g><g><title>instances (sqlalchemy/orm/loading.py:65) (67 samples, 0.74%)</title><rect x="341" y="532" width="8" height="15" fill="rgb(224,161,41)"/><text x="344.00" y="542.50"></text></g><g><title>&lt;listcomp&gt; (sqlalchemy/orm/loading.py:65) (20 samples, 0.22%)</title><rect x="347" y="548" width="2" height="15" fill="rgb(207,94,53)"/><text x="350.00" y="558.50"></text></g><g><title>row_processor (sqlalchemy/orm/query.py:3928) (18 samples, 0.20%)</title><rect x="347" y="564" width="2" height="15" fill="rgb(240,11,12)"/><text x="350.00" y="574.50"></text></g><g><title>first (sqlalchemy/orm/query.py:2979) (475 samples, 5.28%)</title><rect x="288" y="500" width="63" height="15" fill="rgb(220,175,30)"/><text x="291.00" y="510.50">first ..</text></g><g><title>__getitem__ (sqlalchemy/orm/query.py:2771) (471 samples, 5.23%)</title><rect x="289" y="516" width="62" height="15" fill="rgb(222,28,30)"/><text x="292.00" y="526.50">__geti..</text></g><g><title>find_user (jupyterhub/handlers/base.py:287) (521 samples, 5.79%)</title><rect x="285" y="468" width="68" height="15" fill="rgb(222,5,26)"/><text x="288.00" y="478.50">find_us..</text></g><g><title>find (jupyterhub/orm.py:194) (521 samples, 5.79%)</title><rect x="285" y="484" width="68" height="15" fill="rgb(238,194,37)"/><text x="288.00" y="494.50">find (j..</text></g><g><title>query (sqlalchemy/orm/session.py:1538) (18 samples, 0.20%)</title><rect x="351" y="500" width="2" height="15" fill="rgb(238,23,7)"/><text x="354.00" y="510.50"></text></g><g><title>__init__ (sqlalchemy/orm/query.py:167) (18 samples, 0.20%)</title><rect x="351" y="516" width="2" height="15" fill="rgb(243,159,53)"/><text x="354.00" y="526.50"></text></g><g><title>_execute (tornado/web.py:1590) (2,511 samples, 27.90%)</title><rect x="24" y="436" width="330" height="15" fill="rgb(212,211,43)"/><text x="27.00" y="446.50">_execute (tornado/web.py:1590)</text></g><g><title>m (jupyterhub/apihandlers/users.py:109) (526 samples, 5.84%)</title><rect x="285" y="452" width="69" height="15" fill="rgb(246,220,26)"/><text x="288.00" y="462.50">m (jupy..</text></g><g><title>wrapper (tornado/gen.py:326) (2,519 samples, 27.99%)</title><rect x="24" y="420" width="330" height="15" fill="rgb(207,174,27)"/><text x="27.00" y="430.50">wrapper (tornado/gen.py:326)</text></g><g><title>finish (tornado/httpserver.py:319) (2,551 samples, 28.34%)</title><rect x="21" y="356" width="334" height="15" fill="rgb(208,117,38)"/><text x="24.00" y="366.50">finish (tornado/httpserver.py:319)</text></g><g><title>finish (tornado/routing.py:256) (2,551 samples, 28.34%)</title><rect x="21" y="372" width="334" height="15" fill="rgb(208,2,7)"/><text x="24.00" y="382.50">finish (tornado/routing.py:256)</text></g><g><title>finish (tornado/web.py:2195) (2,549 samples, 28.32%)</title><rect x="21" y="388" width="334" height="15" fill="rgb(246,43,39)"/><text x="24.00" y="398.50">finish (tornado/web.py:2195)</text></g><g><title>execute (tornado/web.py:2228) (2,530 samples, 28.11%)</title><rect x="23" y="404" width="332" height="15" fill="rgb(246,139,3)"/><text x="26.00" y="414.50">execute (tornado/web.py:2228)</text></g><g><title>wrapper (tornado/gen.py:346) (9 samples, 0.10%)</title><rect x="354" y="420" width="1" height="15" fill="rgb(215,173,40)"/><text x="357.00" y="430.50"></text></g><g><title>_read_message (tornado/http1connection.py:238) (2,554 samples, 28.38%)</title><rect x="20" y="340" width="335" height="15" fill="rgb(240,53,23)"/><text x="23.00" y="350.50">_read_message (tornado/http1connection.py:238)</text></g><g><title>run (tornado/gen.py:1147) (2,597 samples, 28.86%)</title><rect x="16" y="324" width="340" height="15" fill="rgb(254,150,8)"/><text x="19.00" y="334.50">run (tornado/gen.py:1147)</text></g><g><title>_read_message (tornado/http1connection.py:245) (8 samples, 0.09%)</title><rect x="355" y="340" width="1" height="15" fill="rgb(244,45,20)"/><text x="358.00" y="350.50"></text></g><g><title>set_close_callback (tornado/iostream.py:606) (8 samples, 0.09%)</title><rect x="355" y="356" width="1" height="15" fill="rgb(235,86,43)"/><text x="358.00" y="366.50"></text></g><g><title>_maybe_add_error_listener (tornado/iostream.py:1128) (8 samples, 0.09%)</title><rect x="355" y="372" width="1" height="15" fill="rgb(252,179,49)"/><text x="358.00" y="382.50"></text></g><g><title>_add_io_state (tornado/iostream.py:1158) (8 samples, 0.09%)</title><rect x="355" y="388" width="1" height="15" fill="rgb(227,30,21)"/><text x="358.00" y="398.50"></text></g><g><title>add_handler (tornado/platform/asyncio.py:80) (8 samples, 0.09%)</title><rect x="355" y="404" width="1" height="15" fill="rgb(250,123,46)"/><text x="358.00" y="414.50"></text></g><g><title>wrapper (tornado/gen.py:346) (2,600 samples, 28.89%)</title><rect x="16" y="292" width="340" height="15" fill="rgb(250,221,29)"/><text x="19.00" y="302.50">wrapper (tornado/gen.py:346)</text></g><g><title>__init__ (tornado/gen.py:1080) (2,598 samples, 28.87%)</title><rect x="16" y="308" width="340" height="15" fill="rgb(254,82,49)"/><text x="19.00" y="318.50">__init__ (tornado/gen.py:1080)</text></g><g><title>wrapper (tornado/gen.py:326) (2,626 samples, 29.18%)</title><rect x="12" y="244" width="345" height="15" fill="rgb(233,72,3)"/><text x="15.00" y="254.50">wrapper (tornado/gen.py:326)</text></g><g><title>_server_request_loop (tornado/http1connection.py:735) (2,622 samples, 29.13%)</title><rect x="13" y="260" width="344" height="15" fill="rgb(210,174,49)"/><text x="16.00" y="270.50">_server_request_loop (tornado/http1connection...</text></g><g><title>read_response (tornado/http1connection.py:152) (2,622 samples, 29.13%)</title><rect x="13" y="276" width="344" height="15" fill="rgb(223,206,28)"/><text x="16.00" y="286.50">read_response (tornado/http1connection.py:152)</text></g><g><title>start_serving (tornado/http1connection.py:722) (2,633 samples, 29.26%)</title><rect x="12" y="228" width="345" height="15" fill="rgb(236,100,34)"/><text x="15.00" y="238.50">start_serving (tornado/http1connection.py:722)</text></g><g><title>_handle_events (tornado/platform/asyncio.py:122) (2,648 samples, 29.42%)</title><rect x="10" y="148" width="347" height="15" fill="rgb(205,56,2)"/><text x="13.00" y="158.50">_handle_events (tornado/platform/asyncio.py:122)</text></g><g><title>null_wrapper (tornado/stack_context.py:300) (2,648 samples, 29.42%)</title><rect x="10" y="164" width="347" height="15" fill="rgb(218,109,19)"/><text x="13.00" y="174.50">null_wrapper (tornado/stack_context.py:300)</text></g><g><title>accept_handler (tornado/netutil.py:262) (2,640 samples, 29.33%)</title><rect x="11" y="180" width="346" height="15" fill="rgb(214,122,47)"/><text x="14.00" y="190.50">accept_handler (tornado/netutil.py:262)</text></g><g><title>_handle_connection (tornado/tcpserver.py:294) (2,636 samples, 29.29%)</title><rect x="12" y="196" width="345" height="15" fill="rgb(250,59,34)"/><text x="15.00" y="206.50">_handle_connection (tornado/tcpserver.py:294)</text></g><g><title>handle_stream (tornado/httpserver.py:194) (2,635 samples, 29.28%)</title><rect x="12" y="212" width="345" height="15" fill="rgb(231,196,1)"/><text x="15.00" y="222.50">handle_stream (tornado/httpserver.py:194)</text></g><g><title>log_request (jupyterhub/log.py:158) (10 samples, 0.11%)</title><rect x="360" y="292" width="1" height="15" fill="rgb(247,148,13)"/><text x="363.00" y="302.50"></text></g><g><title>info (logging/__init__.py:1308) (8 samples, 0.09%)</title><rect x="360" y="308" width="1" height="15" fill="rgb(249,30,3)"/><text x="363.00" y="318.50"></text></g><g><title>_execute (tornado/web.py:1594) (32 samples, 0.36%)</title><rect x="357" y="212" width="5" height="15" fill="rgb(253,214,47)"/><text x="360.00" y="222.50"></text></g><g><title>finish (jupyterhub/handlers/base.py:124) (32 samples, 0.36%)</title><rect x="357" y="228" width="5" height="15" fill="rgb(243,206,53)"/><text x="360.00" y="238.50"></text></g><g><title>finish (tornado/web.py:1054) (16 samples, 0.18%)</title><rect x="360" y="244" width="2" height="15" fill="rgb(235,41,21)"/><text x="363.00" y="254.50"></text></g><g><title>_log (tornado/web.py:1624) (16 samples, 0.18%)</title><rect x="360" y="260" width="2" height="15" fill="rgb(233,133,31)"/><text x="363.00" y="270.50"></text></g><g><title>log_request (tornado/web.py:2152) (16 samples, 0.18%)</title><rect x="360" y="276" width="2" height="15" fill="rgb(252,47,32)"/><text x="363.00" y="286.50"></text></g><g><title>__iter__ (sqlalchemy/orm/query.py:3081) (9 samples, 0.10%)</title><rect x="362" y="388" width="1" height="15" fill="rgb(236,22,7)"/><text x="365.00" y="398.50"></text></g><g><title>_execute_and_instances (sqlalchemy/orm/query.py:3106) (9 samples, 0.10%)</title><rect x="362" y="404" width="1" height="15" fill="rgb(233,184,4)"/><text x="365.00" y="414.50"></text></g><g><title>execute (sqlalchemy/engine/base.py:980) (9 samples, 0.10%)</title><rect x="362" y="420" width="1" height="15" fill="rgb(253,70,47)"/><text x="365.00" y="430.50"></text></g><g><title>_execute_on_connection (sqlalchemy/sql/elements.py:273) (9 samples, 0.10%)</title><rect x="362" y="436" width="1" height="15" fill="rgb(226,111,5)"/><text x="365.00" y="446.50"></text></g><g><title>get_current_user_token (jupyterhub/handlers/base.py:217) (11 samples, 0.12%)</title><rect x="362" y="356" width="1" height="15" fill="rgb(242,192,3)"/><text x="365.00" y="366.50"></text></g><g><title>find (jupyterhub/orm.py:411) (11 samples, 0.12%)</title><rect x="362" y="372" width="1" height="15" fill="rgb(252,112,53)"/><text x="365.00" y="382.50"></text></g><g><title>commit (sqlalchemy/orm/session.py:487) (8 samples, 0.09%)</title><rect x="363" y="388" width="1" height="15" fill="rgb(226,35,37)"/><text x="366.00" y="398.50"></text></g><g><title>_prepare_impl (sqlalchemy/orm/session.py:466) (8 samples, 0.09%)</title><rect x="363" y="404" width="1" height="15" fill="rgb(225,124,16)"/><text x="366.00" y="414.50"></text></g><g><title>flush (sqlalchemy/orm/session.py:2446) (8 samples, 0.09%)</title><rect x="363" y="420" width="1" height="15" fill="rgb(249,180,36)"/><text x="366.00" y="430.50"></text></g><g><title>m (jupyterhub/apihandlers/users.py:102) (21 samples, 0.23%)</title><rect x="362" y="324" width="2" height="15" fill="rgb(248,208,16)"/><text x="365.00" y="334.50"></text></g><g><title>get_current_user (jupyterhub/handlers/base.py:272) (21 samples, 0.23%)</title><rect x="362" y="340" width="2" height="15" fill="rgb(235,68,34)"/><text x="365.00" y="350.50"></text></g><g><title>get_current_user_token (jupyterhub/handlers/base.py:227) (10 samples, 0.11%)</title><rect x="363" y="356" width="1" height="15" fill="rgb(226,201,31)"/><text x="366.00" y="366.50"></text></g><g><title>commit (sqlalchemy/orm/session.py:1023) (10 samples, 0.11%)</title><rect x="363" y="372" width="1" height="15" fill="rgb(230,79,53)"/><text x="366.00" y="382.50"></text></g><g><title>_read_message (tornado/http1connection.py:238) (24 samples, 0.27%)</title><rect x="362" y="212" width="3" height="15" fill="rgb(245,130,39)"/><text x="365.00" y="222.50"></text></g><g><title>finish (tornado/httpserver.py:319) (24 samples, 0.27%)</title><rect x="362" y="228" width="3" height="15" fill="rgb(216,37,41)"/><text x="365.00" y="238.50"></text></g><g><title>finish (tornado/routing.py:256) (24 samples, 0.27%)</title><rect x="362" y="244" width="3" height="15" fill="rgb(245,140,17)"/><text x="365.00" y="254.50"></text></g><g><title>finish (tornado/web.py:2195) (24 samples, 0.27%)</title><rect x="362" y="260" width="3" height="15" fill="rgb(249,158,0)"/><text x="365.00" y="270.50"></text></g><g><title>execute (tornado/web.py:2228) (24 samples, 0.27%)</title><rect x="362" y="276" width="3" height="15" fill="rgb(220,117,23)"/><text x="365.00" y="286.50"></text></g><g><title>wrapper (tornado/gen.py:326) (24 samples, 0.27%)</title><rect x="362" y="292" width="3" height="15" fill="rgb(206,190,8)"/><text x="365.00" y="302.50"></text></g><g><title>_execute (tornado/web.py:1590) (24 samples, 0.27%)</title><rect x="362" y="308" width="3" height="15" fill="rgb(215,208,47)"/><text x="365.00" y="318.50"></text></g><g><title>inner (tornado/gen.py:1233) (58 samples, 0.64%)</title><rect x="357" y="180" width="8" height="15" fill="rgb(251,177,4)"/><text x="360.00" y="190.50"></text></g><g><title>run (tornado/gen.py:1147) (58 samples, 0.64%)</title><rect x="357" y="196" width="8" height="15" fill="rgb(205,123,33)"/><text x="360.00" y="206.50"></text></g><g><title>run (tornado/gen.py:1147) (8 samples, 0.09%)</title><rect x="365" y="180" width="1" height="15" fill="rgb(252,59,14)"/><text x="368.00" y="190.50"></text></g><g><title>_run_callback (tornado/ioloop.py:758) (68 samples, 0.76%)</title><rect x="357" y="148" width="9" height="15" fill="rgb(232,57,7)"/><text x="360.00" y="158.50"></text></g><g><title>null_wrapper (tornado/stack_context.py:300) (68 samples, 0.76%)</title><rect x="357" y="164" width="9" height="15" fill="rgb(212,148,12)"/><text x="360.00" y="174.50"></text></g><g><title>__iter__ (sqlalchemy/orm/query.py:3077) (15 samples, 0.17%)</title><rect x="368" y="228" width="2" height="15" fill="rgb(219,154,27)"/><text x="371.00" y="238.50"></text></g><g><title>visit_select (sqlalchemy/sql/compiler.py:2044) (14 samples, 0.16%)</title><rect x="372" y="420" width="2" height="15" fill="rgb(236,132,39)"/><text x="375.00" y="430.50"></text></g><g><title>&lt;listcomp&gt; (sqlalchemy/sql/compiler.py:2044) (14 samples, 0.16%)</title><rect x="372" y="436" width="2" height="15" fill="rgb(240,46,0)"/><text x="375.00" y="446.50"></text></g><g><title>_label_select_column (sqlalchemy/sql/compiler.py:1797) (9 samples, 0.10%)</title><rect x="373" y="452" width="1" height="15" fill="rgb(214,181,0)"/><text x="376.00" y="462.50"></text></g><g><title>_execute_clauseelement (sqlalchemy/engine/base.py:1090) (27 samples, 0.30%)</title><rect x="371" y="292" width="3" height="15" fill="rgb(246,122,52)"/><text x="374.00" y="302.50"></text></g><g><title>&lt;lambda&gt; (&lt;string&gt;:1) (27 samples, 0.30%)</title><rect x="371" y="308" width="3" height="15" fill="rgb(229,86,16)"/><text x="374.00" y="318.50"></text></g><g><title>compile (sqlalchemy/sql/elements.py:448) (27 samples, 0.30%)</title><rect x="371" y="324" width="3" height="15" fill="rgb(237,36,3)"/><text x="374.00" y="334.50"></text></g><g><title>_compiler (sqlalchemy/sql/elements.py:454) (26 samples, 0.29%)</title><rect x="371" y="340" width="3" height="15" fill="rgb(210,116,43)"/><text x="374.00" y="350.50"></text></g><g><title>__init__ (sqlalchemy/sql/compiler.py:553) (25 samples, 0.28%)</title><rect x="371" y="356" width="3" height="15" fill="rgb(238,28,33)"/><text x="374.00" y="366.50"></text></g><g><title>__init__ (sqlalchemy/sql/compiler.py:310) (25 samples, 0.28%)</title><rect x="371" y="372" width="3" height="15" fill="rgb(223,129,48)"/><text x="374.00" y="382.50"></text></g><g><title>process (sqlalchemy/sql/compiler.py:341) (25 samples, 0.28%)</title><rect x="371" y="388" width="3" height="15" fill="rgb(243,84,27)"/><text x="374.00" y="398.50"></text></g><g><title>_compiler_dispatch (sqlalchemy/sql/visitors.py:90) (25 samples, 0.28%)</title><rect x="371" y="404" width="3" height="15" fill="rgb(223,90,51)"/><text x="374.00" y="414.50"></text></g><g><title>_execute_context (sqlalchemy/engine/base.py:1171) (8 samples, 0.09%)</title><rect x="374" y="308" width="1" height="15" fill="rgb(209,110,2)"/><text x="377.00" y="318.50"></text></g><g><title>_execute_context (sqlalchemy/engine/base.py:1236) (87 samples, 0.97%)</title><rect x="375" y="308" width="12" height="15" fill="rgb(231,167,12)"/><text x="378.00" y="318.50"></text></g><g><title>do_execute (sqlalchemy/engine/default.py:536) (87 samples, 0.97%)</title><rect x="375" y="324" width="12" height="15" fill="rgb(216,174,19)"/><text x="378.00" y="334.50"></text></g><g><title>_execute_context (sqlalchemy/engine/base.py:1259) (22 samples, 0.24%)</title><rect x="387" y="308" width="3" height="15" fill="rgb(216,86,45)"/><text x="390.00" y="318.50"></text></g><g><title>get_result_proxy (sqlalchemy/dialects/postgresql/psycopg2.py:488) (21 samples, 0.23%)</title><rect x="387" y="324" width="3" height="15" fill="rgb(212,182,5)"/><text x="390.00" y="334.50"></text></g><g><title>__init__ (sqlalchemy/engine/result.py:722) (18 samples, 0.20%)</title><rect x="388" y="340" width="2" height="15" fill="rgb(250,157,27)"/><text x="391.00" y="350.50"></text></g><g><title>_init_metadata (sqlalchemy/engine/result.py:754) (18 samples, 0.20%)</title><rect x="388" y="356" width="2" height="15" fill="rgb(207,119,9)"/><text x="391.00" y="366.50"></text></g><g><title>_execute_clauseelement (sqlalchemy/engine/base.py:1099) (122 samples, 1.36%)</title><rect x="374" y="292" width="16" height="15" fill="rgb(215,217,38)"/><text x="377.00" y="302.50"></text></g><g><title>__iter__ (sqlalchemy/orm/query.py:3081) (154 samples, 1.71%)</title><rect x="370" y="228" width="21" height="15" fill="rgb(226,152,0)"/><text x="373.00" y="238.50"></text></g><g><title>_execute_and_instances (sqlalchemy/orm/query.py:3106) (152 samples, 1.69%)</title><rect x="371" y="244" width="20" height="15" fill="rgb(216,85,30)"/><text x="374.00" y="254.50"></text></g><g><title>execute (sqlalchemy/engine/base.py:980) (151 samples, 1.68%)</title><rect x="371" y="260" width="20" height="15" fill="rgb(209,57,48)"/><text x="374.00" y="270.50"></text></g><g><title>_execute_on_connection (sqlalchemy/sql/elements.py:273) (151 samples, 1.68%)</title><rect x="371" y="276" width="20" height="15" fill="rgb(225,161,35)"/><text x="374.00" y="286.50"></text></g><g><title>instances (sqlalchemy/orm/loading.py:65) (58 samples, 0.64%)</title><rect x="391" y="228" width="7" height="15" fill="rgb(236,113,24)"/><text x="394.00" y="238.50"></text></g><g><title>&lt;listcomp&gt; (sqlalchemy/orm/loading.py:65) (56 samples, 0.62%)</title><rect x="391" y="244" width="7" height="15" fill="rgb(232,188,30)"/><text x="394.00" y="254.50"></text></g><g><title>row_processor (sqlalchemy/orm/query.py:3928) (51 samples, 0.57%)</title><rect x="392" y="260" width="6" height="15" fill="rgb(235,123,21)"/><text x="395.00" y="270.50"></text></g><g><title>first (sqlalchemy/orm/query.py:2979) (239 samples, 2.66%)</title><rect x="368" y="196" width="31" height="15" fill="rgb(209,170,31)"/><text x="371.00" y="206.50">fi..</text></g><g><title>__getitem__ (sqlalchemy/orm/query.py:2771) (237 samples, 2.63%)</title><rect x="368" y="212" width="31" height="15" fill="rgb(250,50,7)"/><text x="371.00" y="222.50">__..</text></g><g><title>get (jupyterhub/apihandlers/users.py:119) (255 samples, 2.83%)</title><rect x="367" y="148" width="33" height="15" fill="rgb(222,142,44)"/><text x="370.00" y="158.50">ge..</text></g><g><title>find_user (jupyterhub/handlers/base.py:287) (255 samples, 2.83%)</title><rect x="367" y="164" width="33" height="15" fill="rgb(238,216,15)"/><text x="370.00" y="174.50">fi..</text></g><g><title>find (jupyterhub/orm.py:194) (255 samples, 2.83%)</title><rect x="367" y="180" width="33" height="15" fill="rgb(245,150,24)"/><text x="370.00" y="190.50">fi..</text></g><g><title>get (jupyterhub/apihandlers/users.py:120) (15 samples, 0.17%)</title><rect x="400" y="148" width="2" height="15" fill="rgb(223,145,25)"/><text x="403.00" y="158.50"></text></g><g><title>user_model (jupyterhub/apihandlers/base.py:205) (8 samples, 0.09%)</title><rect x="401" y="164" width="1" height="15" fill="rgb(217,202,38)"/><text x="404.00" y="174.50"></text></g><g><title>&lt;module&gt; (jupyterhub:4) (3,000 samples, 33.33%)</title><rect x="10" y="52" width="393" height="15" fill="rgb(207,138,49)"/><text x="13.00" y="62.50">&lt;module&gt; (jupyterhub:4)</text></g><g><title>launch_instance (jupyterhub/app.py:1968) (3,000 samples, 33.33%)</title><rect x="10" y="68" width="393" height="15" fill="rgb(246,179,21)"/><text x="13.00" y="78.50">launch_instance (jupyterhub/app.py:1968)</text></g><g><title>start (tornado/platform/asyncio.py:132) (3,000 samples, 33.33%)</title><rect x="10" y="84" width="393" height="15" fill="rgb(209,187,15)"/><text x="13.00" y="94.50">start (tornado/platform/asyncio.py:132)</text></g><g><title>run_forever (asyncio/base_events.py:427) (3,000 samples, 33.33%)</title><rect x="10" y="100" width="393" height="15" fill="rgb(228,149,54)"/><text x="13.00" y="110.50">run_forever (asyncio/base_events.py:427)</text></g><g><title>_run_once (asyncio/base_events.py:1440) (2,998 samples, 33.31%)</title><rect x="10" y="116" width="393" height="15" fill="rgb(215,134,11)"/><text x="13.00" y="126.50">_run_once (asyncio/base_events.py:1440)</text></g><g><title>_run (asyncio/events.py:145) (2,998 samples, 33.31%)</title><rect x="10" y="132" width="393" height="15" fill="rgb(233,108,1)"/><text x="13.00" y="142.50">_run (asyncio/events.py:145)</text></g><g><title>begin (http/client.py:297) (9 samples, 0.10%)</title><rect x="403" y="340" width="1" height="15" fill="rgb(251,172,45)"/><text x="406.00" y="350.50"></text></g><g><title>_read_status (http/client.py:258) (9 samples, 0.10%)</title><rect x="403" y="356" width="1" height="15" fill="rgb(223,164,52)"/><text x="406.00" y="366.50"></text></g><g><title>readinto (socket.py:586) (9 samples, 0.10%)</title><rect x="403" y="372" width="1" height="15" fill="rgb(205,146,51)"/><text x="406.00" y="382.50"></text></g><g><title>recv_into (ssl.py:1012) (9 samples, 0.10%)</title><rect x="403" y="388" width="1" height="15" fill="rgb(245,207,3)"/><text x="406.00" y="398.50"></text></g><g><title>read (ssl.py:874) (9 samples, 0.10%)</title><rect x="403" y="404" width="1" height="15" fill="rgb(233,111,32)"/><text x="406.00" y="414.50"></text></g><g><title>read (ssl.py:631) (9 samples, 0.10%)</title><rect x="403" y="420" width="1" height="15" fill="rgb(206,165,27)"/><text x="406.00" y="430.50"></text></g><g><title>__call_api (kubernetes/client/api_client.py:155) (10 samples, 0.11%)</title><rect x="403" y="180" width="1" height="15" fill="rgb(248,20,52)"/><text x="406.00" y="190.50"></text></g><g><title>request (kubernetes/client/api_client.py:342) (10 samples, 0.11%)</title><rect x="403" y="196" width="1" height="15" fill="rgb(232,130,0)"/><text x="406.00" y="206.50"></text></g><g><title>GET (kubernetes/client/rest.py:231) (10 samples, 0.11%)</title><rect x="403" y="212" width="1" height="15" fill="rgb(216,130,17)"/><text x="406.00" y="222.50"></text></g><g><title>request (kubernetes/client/rest.py:205) (10 samples, 0.11%)</title><rect x="403" y="228" width="1" height="15" fill="rgb(249,145,32)"/><text x="406.00" y="238.50"></text></g><g><title>request (urllib3/request.py:68) (10 samples, 0.11%)</title><rect x="403" y="244" width="1" height="15" fill="rgb(250,31,48)"/><text x="406.00" y="254.50"></text></g><g><title>request_encode_url (urllib3/request.py:89) (10 samples, 0.11%)</title><rect x="403" y="260" width="1" height="15" fill="rgb(249,85,13)"/><text x="406.00" y="270.50"></text></g><g><title>urlopen (urllib3/poolmanager.py:323) (10 samples, 0.11%)</title><rect x="403" y="276" width="1" height="15" fill="rgb(232,48,0)"/><text x="406.00" y="286.50"></text></g><g><title>urlopen (urllib3/connectionpool.py:600) (10 samples, 0.11%)</title><rect x="403" y="292" width="1" height="15" fill="rgb(235,10,4)"/><text x="406.00" y="302.50"></text></g><g><title>_make_request (urllib3/connectionpool.py:380) (10 samples, 0.11%)</title><rect x="403" y="308" width="1" height="15" fill="rgb(223,37,25)"/><text x="406.00" y="318.50"></text></g><g><title>getresponse (http/client.py:1331) (10 samples, 0.11%)</title><rect x="403" y="324" width="1" height="15" fill="rgb(244,222,45)"/><text x="406.00" y="334.50"></text></g><g><title>__deserialize (kubernetes/client/api_client.py:274) (9 samples, 0.10%)</title><rect x="405" y="308" width="1" height="15" fill="rgb(232,67,8)"/><text x="408.00" y="318.50"></text></g><g><title>__deserialize_datatime (kubernetes/client/api_client.py:589) (9 samples, 0.10%)</title><rect x="405" y="324" width="1" height="15" fill="rgb(253,158,46)"/><text x="408.00" y="334.50"></text></g><g><title>parse (dateutil/parser/_parser.py:1358) (9 samples, 0.10%)</title><rect x="405" y="340" width="1" height="15" fill="rgb(224,130,53)"/><text x="408.00" y="350.50"></text></g><g><title>parse (dateutil/parser/_parser.py:646) (9 samples, 0.10%)</title><rect x="405" y="356" width="1" height="15" fill="rgb(251,144,41)"/><text x="408.00" y="366.50"></text></g><g><title>list_namespaced_event (kubernetes/client/apis/core_v1_api.py:12118) (26 samples, 0.29%)</title><rect x="403" y="132" width="3" height="15" fill="rgb(222,72,24)"/><text x="406.00" y="142.50"></text></g><g><title>list_namespaced_event_with_http_info (kubernetes/client/apis/core_v1_api.py:12221) (26 samples, 0.29%)</title><rect x="403" y="148" width="3" height="15" fill="rgb(225,171,48)"/><text x="406.00" y="158.50"></text></g><g><title>call_api (kubernetes/client/api_client.py:321) (26 samples, 0.29%)</title><rect x="403" y="164" width="3" height="15" fill="rgb(219,0,53)"/><text x="406.00" y="174.50"></text></g><g><title>__call_api (kubernetes/client/api_client.py:163) (16 samples, 0.18%)</title><rect x="404" y="180" width="2" height="15" fill="rgb(225,146,0)"/><text x="407.00" y="190.50"></text></g><g><title>deserialize (kubernetes/client/api_client.py:236) (15 samples, 0.17%)</title><rect x="404" y="196" width="2" height="15" fill="rgb(209,81,33)"/><text x="407.00" y="206.50"></text></g><g><title>__deserialize (kubernetes/client/api_client.py:276) (15 samples, 0.17%)</title><rect x="404" y="212" width="2" height="15" fill="rgb(222,74,11)"/><text x="407.00" y="222.50"></text></g><g><title>__deserialize_model (kubernetes/client/api_client.py:620) (15 samples, 0.17%)</title><rect x="404" y="228" width="2" height="15" fill="rgb(242,201,20)"/><text x="407.00" y="238.50"></text></g><g><title>__deserialize (kubernetes/client/api_client.py:254) (15 samples, 0.17%)</title><rect x="404" y="244" width="2" height="15" fill="rgb(226,46,28)"/><text x="407.00" y="254.50"></text></g><g><title>&lt;listcomp&gt; (kubernetes/client/api_client.py:254) (15 samples, 0.17%)</title><rect x="404" y="260" width="2" height="15" fill="rgb(232,206,29)"/><text x="407.00" y="270.50"></text></g><g><title>__deserialize (kubernetes/client/api_client.py:276) (15 samples, 0.17%)</title><rect x="404" y="276" width="2" height="15" fill="rgb(233,118,43)"/><text x="407.00" y="286.50"></text></g><g><title>__deserialize_model (kubernetes/client/api_client.py:620) (14 samples, 0.16%)</title><rect x="404" y="292" width="2" height="15" fill="rgb(242,200,6)"/><text x="407.00" y="302.50"></text></g><g><title>__call_api (kubernetes/client/api_client.py:155) (8 samples, 0.09%)</title><rect x="406" y="180" width="1" height="15" fill="rgb(213,158,16)"/><text x="409.00" y="190.50"></text></g><g><title>request (kubernetes/client/api_client.py:342) (8 samples, 0.09%)</title><rect x="406" y="196" width="1" height="15" fill="rgb(233,105,53)"/><text x="409.00" y="206.50"></text></g><g><title>GET (kubernetes/client/rest.py:231) (8 samples, 0.09%)</title><rect x="406" y="212" width="1" height="15" fill="rgb(221,179,27)"/><text x="409.00" y="222.50"></text></g><g><title>_watch_and_update (kubespawner/reflector.py:206) (44 samples, 0.49%)</title><rect x="403" y="100" width="6" height="15" fill="rgb(245,127,10)"/><text x="406.00" y="110.50"></text></g><g><title>_list_and_update (kubespawner/reflector.py:157) (44 samples, 0.49%)</title><rect x="403" y="116" width="6" height="15" fill="rgb(215,18,21)"/><text x="406.00" y="126.50"></text></g><g><title>list_namespaced_pod (kubernetes/client/apis/core_v1_api.py:12514) (18 samples, 0.20%)</title><rect x="406" y="132" width="3" height="15" fill="rgb(217,21,14)"/><text x="409.00" y="142.50"></text></g><g><title>list_namespaced_pod_with_http_info (kubernetes/client/apis/core_v1_api.py:12617) (18 samples, 0.20%)</title><rect x="406" y="148" width="3" height="15" fill="rgb(218,13,39)"/><text x="409.00" y="158.50"></text></g><g><title>call_api (kubernetes/client/api_client.py:321) (18 samples, 0.20%)</title><rect x="406" y="164" width="3" height="15" fill="rgb(247,150,9)"/><text x="409.00" y="174.50"></text></g><g><title>__call_api (kubernetes/client/api_client.py:163) (10 samples, 0.11%)</title><rect x="407" y="180" width="2" height="15" fill="rgb(217,101,35)"/><text x="410.00" y="190.50"></text></g><g><title>deserialize (kubernetes/client/api_client.py:236) (10 samples, 0.11%)</title><rect x="407" y="196" width="2" height="15" fill="rgb(227,3,38)"/><text x="410.00" y="206.50"></text></g><g><title>__deserialize (kubernetes/client/api_client.py:276) (10 samples, 0.11%)</title><rect x="407" y="212" width="2" height="15" fill="rgb(211,78,54)"/><text x="410.00" y="222.50"></text></g><g><title>__deserialize_model (kubernetes/client/api_client.py:620) (10 samples, 0.11%)</title><rect x="407" y="228" width="2" height="15" fill="rgb(221,164,33)"/><text x="410.00" y="238.50"></text></g><g><title>__deserialize (kubernetes/client/api_client.py:254) (10 samples, 0.11%)</title><rect x="407" y="244" width="2" height="15" fill="rgb(216,155,23)"/><text x="410.00" y="254.50"></text></g><g><title>&lt;listcomp&gt; (kubernetes/client/api_client.py:254) (10 samples, 0.11%)</title><rect x="407" y="260" width="2" height="15" fill="rgb(232,57,26)"/><text x="410.00" y="270.50"></text></g><g><title>__deserialize (kubernetes/client/api_client.py:276) (10 samples, 0.11%)</title><rect x="407" y="276" width="2" height="15" fill="rgb(247,209,21)"/><text x="410.00" y="286.50"></text></g><g><title>__deserialize_model (kubernetes/client/api_client.py:620) (10 samples, 0.11%)</title><rect x="407" y="292" width="2" height="15" fill="rgb(229,206,11)"/><text x="410.00" y="302.50"></text></g><g><title>__deserialize (kubernetes/client/api_client.py:276) (10 samples, 0.11%)</title><rect x="407" y="308" width="2" height="15" fill="rgb(236,68,43)"/><text x="410.00" y="318.50"></text></g><g><title>__deserialize_model (kubernetes/client/api_client.py:620) (9 samples, 0.10%)</title><rect x="407" y="324" width="2" height="15" fill="rgb(222,140,5)"/><text x="410.00" y="334.50"></text></g><g><title>all (9,000 samples, 100%)</title><rect x="10" y="36" width="1180" height="15" fill="rgb(220,192,11)"/><text x="13.00" y="46.50"></text></g><g><title>_bootstrap (threading.py:884) (6,000 samples, 66.67%)</title><rect x="403" y="52" width="787" height="15" fill="rgb(205,171,53)"/><text x="406.00" y="62.50">_bootstrap (threading.py:884)</text></g><g><title>_bootstrap_inner (threading.py:916) (6,000 samples, 66.67%)</title><rect x="403" y="68" width="787" height="15" fill="rgb(215,84,52)"/><text x="406.00" y="78.50">_bootstrap_inner (threading.py:916)</text></g><g><title>run (threading.py:864) (6,000 samples, 66.67%)</title><rect x="403" y="84" width="787" height="15" fill="rgb(231,140,24)"/><text x="406.00" y="94.50">run (threading.py:864)</text></g><g><title>_watch_and_update (kubespawner/reflector.py:226) (5,956 samples, 66.18%)</title><rect x="409" y="100" width="781" height="15" fill="rgb(231,95,54)"/><text x="412.00" y="110.50">_watch_and_update (kubespawner/reflector.py:226)</text></g><g><title>stream (kubernetes/watch/watch.py:130) (5,954 samples, 66.16%)</title><rect x="409" y="116" width="781" height="15" fill="rgb(253,195,29)"/><text x="412.00" y="126.50">stream (kubernetes/watch/watch.py:130)</text></g><g><title>iter_resp_lines (kubernetes/watch/watch.py:45) (5,954 samples, 66.16%)</title><rect x="409" y="132" width="781" height="15" fill="rgb(243,73,21)"/><text x="412.00" y="142.50">iter_resp_lines (kubernetes/watch/watch.py:45)</text></g><g><title>read_chunked (urllib3/response.py:666) (5,954 samples, 66.16%)</title><rect x="409" y="148" width="781" height="15" fill="rgb(228,186,17)"/><text x="412.00" y="158.50">read_chunked (urllib3/response.py:666)</text></g><g><title>_update_chunk_length (urllib3/response.py:598) (5,954 samples, 66.16%)</title><rect x="409" y="164" width="781" height="15" fill="rgb(231,114,32)"/><text x="412.00" y="174.50">_update_chunk_length (urllib3/response.py:598)</text></g><g><title>readinto (socket.py:586) (5,954 samples, 66.16%)</title><rect x="409" y="180" width="781" height="15" fill="rgb(214,70,3)"/><text x="412.00" y="190.50">readinto (socket.py:586)</text></g><g><title>recv_into (ssl.py:1012) (5,954 samples, 66.16%)</title><rect x="409" y="196" width="781" height="15" fill="rgb(213,89,3)"/><text x="412.00" y="206.50">recv_into (ssl.py:1012)</text></g><g><title>read (ssl.py:874) (5,954 samples, 66.16%)</title><rect x="409" y="212" width="781" height="15" fill="rgb(216,190,14)"/><text x="412.00" y="222.50">read (ssl.py:874)</text></g><g><title>read (ssl.py:631) (5,954 samples, 66.16%)</title><rect x="409" y="228" width="781" height="15" fill="rgb(226,73,47)"/><text x="412.00" y="238.50">read (ssl.py:631)</text></g></g></svg>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment