Skip to content

Instantly share code, notes, and snippets.

@georgevreilly
Last active September 18, 2015 19:26
Show Gist options
  • Save georgevreilly/11f87d1d2f4664206df2 to your computer and use it in GitHub Desktop.
Save georgevreilly/11f87d1d2f4664206df2 to your computer and use it in GitHub Desktop.
SQLTap sometimes fails to capture query parameters.
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta name="description" content="sqltap profile">
<meta name="author" content="inconshreveable">
<title>SQLTap Profiling Report</title>
<!-- Bootstrap core CSS -->
<link href="https://netdna.bootstrapcdn.com/bootstrap/3.1.1/css/bootstrap.min.css" rel="stylesheet">
<!-- syntax highlighting -->
<link href="http://yandex.st/highlightjs/8.0/styles/default.min.css" rel="stylesheet">
<script src="http://yandex.st/highlightjs/8.0/highlight.min.js"></script>
<style type="text/css">
body { padding-top: 60px; }
#query-groups {
border-right: 1px solid #ccc;
}
#total-time { color: #fff; }
#total-time .sum { color: #0f0; font-size: 16px; }
#total-time .count { color: #0f0; font-size: 16px; }
a.toggle { cursor: pointer }
a.toggle strong { color: red; }
</style>
</head>
<body>
<div class="container">
<div class="navbar navbar-inverse navbar-fixed-top" role="navigation">
<div class="container">
<div class="navbar-header">
<a class="navbar-brand" href="https://github.com/inconshreveable/sqltap">sqltap</a>
</div>
<ul class="navbar-right nav navbar-nav">
<li><a target="_blank" href="http://sqltap.inconshreveable.com/">Documentation</a></li>
<li><a target="_blank" href="https://github.com/inconshreveable/sqltap">Code</a></li>
</ul>
<p id="total-time" class="navbar-text">
<span class="count">4</span> queries spent
<span class="sum">0.00</span> seconds
</p>
</div>
</div>
<h1>
</h1>
<div class="row">
<div class="col-xs-3" id="query-groups" style="min-height: 600px">
<ul class="nav nav-pills nav-stacked" id="myTabs">
<li class="active">
<a href="#query-0" data-toggle="tab">
<span class="label label-warning pull-right">0.001s</span>
<span class="label label-info pull-right" style="margin-right: 5px">
2
</span>
INSERT
</a>
</li>
<li class="">
<a href="#query-1" data-toggle="tab">
<span class="label label-warning pull-right">0.001s</span>
<span class="label label-info pull-right" style="margin-right: 5px">
1
</span>
INSERT
</a>
</li>
<li class="">
<a href="#query-2" data-toggle="tab">
<span class="label label-warning pull-right">0.001s</span>
<span class="label label-info pull-right" style="margin-right: 5px">
1
</span>
SELECT
</a>
</li>
</ul>
</div>
<div class="col-xs-9">
<div class="tab-content">
<div id="query-0" class="tab-pane active">
<h4 class="toggle">
<ul class="list-inline">
<li>
<dt>Count</dt>
<dd>2</dd>
</li>
<li>
<dt>Mean</dt>
<dd>0.001</dd>
</li>
<li>
<dt>Median</dt>
<dd>0.001</dd>
</li>
<li>
<dt>Min</dt>
<dd>0.000</dd>
</li>
<li>
<dt>Max</dt>
<dd>0.001</dd>
</li>
</ul>
</h4>
<hr />
<pre><code>INSERT INTO employee (id, name, hired_on, department_id) VALUES (?, ?, ?, ?)</code></pre>
<hr />
<h4>
Query Breakdown
</h4>
<table class="table">
<tr>
<th>Query Time</th>
<th><code>hired_on</code></th>
<th><code>id</code></th>
<th><code>name</code></th>
<th><code>department_id</code></th>
</tr>
<tr class="">
<td>0.000</td>
<td>None</td>
<td>None</td>
<td>None</td>
<td>None</td>
</tr>
<tr class="">
<td>0.001</td>
<td>None</td>
<td>None</td>
<td>None</td>
<td>None</td>
</tr>
</table>
<hr />
<h4>
1 unique
stack issues
this query
</h4>
<ul class="details">
<li>
<a class="toggle">
<h5>
2
calls from
<strong>test_capture_params</strong> @/Users/georgevreilly/tmp/afterexec_queryparams.py:46
</h5>
</a>
<pre class="trace hidden">File &#34;/Users/georgevreilly/tmp/afterexec_queryparams.py&#34;, line 63, in &lt;module&gt;
test_capture_params()
File &#34;/Users/georgevreilly/tmp/afterexec_queryparams.py&#34;, line 46, in test_capture_params
s.commit()
File &#34;/Users/georgevreilly/.virtualenvs/hub/lib/python2.7/site-packages/SQLAlchemy-0.9.9-py2.7-macosx-10.10-x86_64.egg/sqlalchemy/orm/session.py&#34;, line 788, in commit
self.transaction.commit()
File &#34;/Users/georgevreilly/.virtualenvs/hub/lib/python2.7/site-packages/SQLAlchemy-0.9.9-py2.7-macosx-10.10-x86_64.egg/sqlalchemy/orm/session.py&#34;, line 384, in commit
self._prepare_impl()
File &#34;/Users/georgevreilly/.virtualenvs/hub/lib/python2.7/site-packages/SQLAlchemy-0.9.9-py2.7-macosx-10.10-x86_64.egg/sqlalchemy/orm/session.py&#34;, line 364, in _prepare_impl
self.session.flush()
File &#34;/Users/georgevreilly/.virtualenvs/hub/lib/python2.7/site-packages/SQLAlchemy-0.9.9-py2.7-macosx-10.10-x86_64.egg/sqlalchemy/orm/session.py&#34;, line 1985, in flush
self._flush(objects)
File &#34;/Users/georgevreilly/.virtualenvs/hub/lib/python2.7/site-packages/SQLAlchemy-0.9.9-py2.7-macosx-10.10-x86_64.egg/sqlalchemy/orm/session.py&#34;, line 2067, in _flush
flush_context.execute()
File &#34;/Users/georgevreilly/.virtualenvs/hub/lib/python2.7/site-packages/SQLAlchemy-0.9.9-py2.7-macosx-10.10-x86_64.egg/sqlalchemy/orm/unitofwork.py&#34;, line 372, in execute
rec.execute(self)
File &#34;/Users/georgevreilly/.virtualenvs/hub/lib/python2.7/site-packages/SQLAlchemy-0.9.9-py2.7-macosx-10.10-x86_64.egg/sqlalchemy/orm/unitofwork.py&#34;, line 526, in execute
uow
File &#34;/Users/georgevreilly/.virtualenvs/hub/lib/python2.7/site-packages/SQLAlchemy-0.9.9-py2.7-macosx-10.10-x86_64.egg/sqlalchemy/orm/persistence.py&#34;, line 65, in save_obj
mapper, table, insert)
File &#34;/Users/georgevreilly/.virtualenvs/hub/lib/python2.7/site-packages/SQLAlchemy-0.9.9-py2.7-macosx-10.10-x86_64.egg/sqlalchemy/orm/persistence.py&#34;, line 602, in _emit_insert_statements
execute(statement, params)
File &#34;/Users/georgevreilly/.virtualenvs/hub/lib/python2.7/site-packages/SQLAlchemy-0.9.9-py2.7-macosx-10.10-x86_64.egg/sqlalchemy/engine/base.py&#34;, line 841, in execute
return meth(self, multiparams, params)
File &#34;/Users/georgevreilly/.virtualenvs/hub/lib/python2.7/site-packages/SQLAlchemy-0.9.9-py2.7-macosx-10.10-x86_64.egg/sqlalchemy/sql/elements.py&#34;, line 322, in _execute_on_connection
return connection._execute_clauseelement(self, multiparams, params)
File &#34;/Users/georgevreilly/.virtualenvs/hub/lib/python2.7/site-packages/SQLAlchemy-0.9.9-py2.7-macosx-10.10-x86_64.egg/sqlalchemy/engine/base.py&#34;, line 942, in _execute_clauseelement
elem, multiparams, params, ret)
File &#34;/Users/georgevreilly/.virtualenvs/hub/lib/python2.7/site-packages/SQLAlchemy-0.9.9-py2.7-macosx-10.10-x86_64.egg/sqlalchemy/event/attr.py&#34;, line 260, in __call__
fn(*args, **kw)</pre>
</li>
</ul>
</div>
<!-- ================================================== -->
<div id="query-1" class="tab-pane ">
<h4 class="toggle">
<ul class="list-inline">
<li>
<dt>Count</dt>
<dd>1</dd>
</li>
<li>
<dt>Mean</dt>
<dd>0.001</dd>
</li>
<li>
<dt>Median</dt>
<dd>0.001</dd>
</li>
<li>
<dt>Min</dt>
<dd>0.001</dd>
</li>
<li>
<dt>Max</dt>
<dd>0.001</dd>
</li>
</ul>
</h4>
<hr />
<pre><code>INSERT INTO department (id, name) VALUES (?, ?)</code></pre>
<hr />
<h4>
Query Breakdown
</h4>
<table class="table">
<tr>
<th>Query Time</th>
<th><code>id</code></th>
<th><code>name</code></th>
</tr>
<tr class="">
<td>0.001</td>
<td>None</td>
<td>None</td>
</tr>
</table>
<hr />
<h4>
1 unique
stack issues
this query
</h4>
<ul class="details">
<li>
<a class="toggle">
<h5>
1
call from
<strong>test_capture_params</strong> @/Users/georgevreilly/tmp/afterexec_queryparams.py:46
</h5>
</a>
<pre class="trace hidden">File &#34;/Users/georgevreilly/tmp/afterexec_queryparams.py&#34;, line 63, in &lt;module&gt;
test_capture_params()
File &#34;/Users/georgevreilly/tmp/afterexec_queryparams.py&#34;, line 46, in test_capture_params
s.commit()
File &#34;/Users/georgevreilly/.virtualenvs/hub/lib/python2.7/site-packages/SQLAlchemy-0.9.9-py2.7-macosx-10.10-x86_64.egg/sqlalchemy/orm/session.py&#34;, line 788, in commit
self.transaction.commit()
File &#34;/Users/georgevreilly/.virtualenvs/hub/lib/python2.7/site-packages/SQLAlchemy-0.9.9-py2.7-macosx-10.10-x86_64.egg/sqlalchemy/orm/session.py&#34;, line 384, in commit
self._prepare_impl()
File &#34;/Users/georgevreilly/.virtualenvs/hub/lib/python2.7/site-packages/SQLAlchemy-0.9.9-py2.7-macosx-10.10-x86_64.egg/sqlalchemy/orm/session.py&#34;, line 364, in _prepare_impl
self.session.flush()
File &#34;/Users/georgevreilly/.virtualenvs/hub/lib/python2.7/site-packages/SQLAlchemy-0.9.9-py2.7-macosx-10.10-x86_64.egg/sqlalchemy/orm/session.py&#34;, line 1985, in flush
self._flush(objects)
File &#34;/Users/georgevreilly/.virtualenvs/hub/lib/python2.7/site-packages/SQLAlchemy-0.9.9-py2.7-macosx-10.10-x86_64.egg/sqlalchemy/orm/session.py&#34;, line 2067, in _flush
flush_context.execute()
File &#34;/Users/georgevreilly/.virtualenvs/hub/lib/python2.7/site-packages/SQLAlchemy-0.9.9-py2.7-macosx-10.10-x86_64.egg/sqlalchemy/orm/unitofwork.py&#34;, line 372, in execute
rec.execute(self)
File &#34;/Users/georgevreilly/.virtualenvs/hub/lib/python2.7/site-packages/SQLAlchemy-0.9.9-py2.7-macosx-10.10-x86_64.egg/sqlalchemy/orm/unitofwork.py&#34;, line 526, in execute
uow
File &#34;/Users/georgevreilly/.virtualenvs/hub/lib/python2.7/site-packages/SQLAlchemy-0.9.9-py2.7-macosx-10.10-x86_64.egg/sqlalchemy/orm/persistence.py&#34;, line 65, in save_obj
mapper, table, insert)
File &#34;/Users/georgevreilly/.virtualenvs/hub/lib/python2.7/site-packages/SQLAlchemy-0.9.9-py2.7-macosx-10.10-x86_64.egg/sqlalchemy/orm/persistence.py&#34;, line 602, in _emit_insert_statements
execute(statement, params)
File &#34;/Users/georgevreilly/.virtualenvs/hub/lib/python2.7/site-packages/SQLAlchemy-0.9.9-py2.7-macosx-10.10-x86_64.egg/sqlalchemy/engine/base.py&#34;, line 841, in execute
return meth(self, multiparams, params)
File &#34;/Users/georgevreilly/.virtualenvs/hub/lib/python2.7/site-packages/SQLAlchemy-0.9.9-py2.7-macosx-10.10-x86_64.egg/sqlalchemy/sql/elements.py&#34;, line 322, in _execute_on_connection
return connection._execute_clauseelement(self, multiparams, params)
File &#34;/Users/georgevreilly/.virtualenvs/hub/lib/python2.7/site-packages/SQLAlchemy-0.9.9-py2.7-macosx-10.10-x86_64.egg/sqlalchemy/engine/base.py&#34;, line 942, in _execute_clauseelement
elem, multiparams, params, ret)
File &#34;/Users/georgevreilly/.virtualenvs/hub/lib/python2.7/site-packages/SQLAlchemy-0.9.9-py2.7-macosx-10.10-x86_64.egg/sqlalchemy/event/attr.py&#34;, line 260, in __call__
fn(*args, **kw)</pre>
</li>
</ul>
</div>
<!-- ================================================== -->
<div id="query-2" class="tab-pane ">
<h4 class="toggle">
<ul class="list-inline">
<li>
<dt>Count</dt>
<dd>1</dd>
</li>
<li>
<dt>Mean</dt>
<dd>0.001</dd>
</li>
<li>
<dt>Median</dt>
<dd>0.001</dd>
</li>
<li>
<dt>Min</dt>
<dd>0.001</dd>
</li>
<li>
<dt>Max</dt>
<dd>0.001</dd>
</li>
</ul>
</h4>
<hr />
<pre><code>SELECT employee.id AS employee_id, employee.name AS employee_name, employee.hired_on AS employee_hired_on, employee.department_id AS employee_department_id
FROM employee
WHERE employee.id = ?</code></pre>
<hr />
<h4>
Query Breakdown
</h4>
<table class="table">
<tr>
<th>Query Time</th>
<th><code>param_1</code></th>
</tr>
<tr class="">
<td>0.001</td>
<td>None</td>
</tr>
</table>
<hr />
<h4>
1 unique
stack issues
this query
</h4>
<ul class="details">
<li>
<a class="toggle">
<h5>
1
call from
<strong>test_capture_params</strong> @/Users/georgevreilly/tmp/afterexec_queryparams.py:48
</h5>
</a>
<pre class="trace hidden">File &#34;/Users/georgevreilly/tmp/afterexec_queryparams.py&#34;, line 63, in &lt;module&gt;
test_capture_params()
File &#34;/Users/georgevreilly/tmp/afterexec_queryparams.py&#34;, line 48, in test_capture_params
e = s.query(Employee).get(chris.id)
File &#34;/Users/georgevreilly/.virtualenvs/hub/lib/python2.7/site-packages/SQLAlchemy-0.9.9-py2.7-macosx-10.10-x86_64.egg/sqlalchemy/orm/attributes.py&#34;, line 239, in __get__
return self.impl.get(instance_state(instance), dict_)
File &#34;/Users/georgevreilly/.virtualenvs/hub/lib/python2.7/site-packages/SQLAlchemy-0.9.9-py2.7-macosx-10.10-x86_64.egg/sqlalchemy/orm/attributes.py&#34;, line 589, in get
value = callable_(state, passive)
File &#34;/Users/georgevreilly/.virtualenvs/hub/lib/python2.7/site-packages/SQLAlchemy-0.9.9-py2.7-macosx-10.10-x86_64.egg/sqlalchemy/orm/state.py&#34;, line 433, in __call__
self.manager.deferred_scalar_loader(self, toload)
File &#34;/Users/georgevreilly/.virtualenvs/hub/lib/python2.7/site-packages/SQLAlchemy-0.9.9-py2.7-macosx-10.10-x86_64.egg/sqlalchemy/orm/loading.py&#34;, line 613, in load_scalar_attributes
only_load_props=attribute_names)
File &#34;/Users/georgevreilly/.virtualenvs/hub/lib/python2.7/site-packages/SQLAlchemy-0.9.9-py2.7-macosx-10.10-x86_64.egg/sqlalchemy/orm/loading.py&#34;, line 235, in load_on_ident
return q.one()
File &#34;/Users/georgevreilly/.virtualenvs/hub/lib/python2.7/site-packages/SQLAlchemy-0.9.9-py2.7-macosx-10.10-x86_64.egg/sqlalchemy/orm/query.py&#34;, line 2398, in one
ret = list(self)
File &#34;/Users/georgevreilly/.virtualenvs/hub/lib/python2.7/site-packages/SQLAlchemy-0.9.9-py2.7-macosx-10.10-x86_64.egg/sqlalchemy/orm/query.py&#34;, line 2441, in __iter__
return self._execute_and_instances(context)
File &#34;/Users/georgevreilly/.virtualenvs/hub/lib/python2.7/site-packages/SQLAlchemy-0.9.9-py2.7-macosx-10.10-x86_64.egg/sqlalchemy/orm/query.py&#34;, line 2456, in _execute_and_instances
result = conn.execute(querycontext.statement, self._params)
File &#34;/Users/georgevreilly/.virtualenvs/hub/lib/python2.7/site-packages/SQLAlchemy-0.9.9-py2.7-macosx-10.10-x86_64.egg/sqlalchemy/engine/base.py&#34;, line 841, in execute
return meth(self, multiparams, params)
File &#34;/Users/georgevreilly/.virtualenvs/hub/lib/python2.7/site-packages/SQLAlchemy-0.9.9-py2.7-macosx-10.10-x86_64.egg/sqlalchemy/sql/elements.py&#34;, line 322, in _execute_on_connection
return connection._execute_clauseelement(self, multiparams, params)
File &#34;/Users/georgevreilly/.virtualenvs/hub/lib/python2.7/site-packages/SQLAlchemy-0.9.9-py2.7-macosx-10.10-x86_64.egg/sqlalchemy/engine/base.py&#34;, line 942, in _execute_clauseelement
elem, multiparams, params, ret)
File &#34;/Users/georgevreilly/.virtualenvs/hub/lib/python2.7/site-packages/SQLAlchemy-0.9.9-py2.7-macosx-10.10-x86_64.egg/sqlalchemy/event/attr.py&#34;, line 260, in __call__
fn(*args, **kw)</pre>
</li>
</ul>
</div>
<!-- ================================================== -->
</div>
</div>
</div><!-- /.container -->
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js"></script>
<script src="https://netdna.bootstrapcdn.com/bootstrap/3.1.1/js/bootstrap.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/8.4/highlight.min.js"></script>
<script>hljs.initHighlightingOnLoad();</script>
<script type="text/javascript">
jQuery(function($) {
$(".toggle").click(function() {
$(this).siblings(".trace").toggleClass("hidden");
});
$('#myTabs a').click(function (e) {
$(this).tab('show');
e.preventDefault();
});
$(".morequeries").click(function(e) {
e.preventDefault();
$(this).hide();
$(this).prev("table").find("tr.hidden").removeClass("hidden");
});
});
</script>
</body>
</html>
#!/usr/bin/env python
from sqlalchemy import Column, DateTime, String, Integer, ForeignKey, func
from sqlalchemy.orm import relationship, backref
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy import create_engine
from sqlalchemy.orm import sessionmaker
from sqltap import ProfilingSession, report
Base = declarative_base()
class Department(Base):
__tablename__ = 'department'
id = Column(Integer, primary_key=True)
name = Column(String)
class Employee(Base):
__tablename__ = 'employee'
id = Column(Integer, primary_key=True)
name = Column(String)
# Use default=func.now() to set the default hiring time
# of an Employee to be the current time when an
# Employee record was created
hired_on = Column(DateTime, default=func.now())
department_id = Column(Integer, ForeignKey('department.id'))
# Use cascade='delete,all' to propagate the deletion of a Department onto its Employees
department = relationship(
Department,
backref=backref('employees',
uselist=True,
cascade='delete,all'))
def test_capture_params():
with ProfilingSession() as profiler:
s = session()
d = Department(name="IT")
s.add(d)
chris = Employee(name="Chris", department=d)
terry = Employee(name="Terry", department=d)
s.add(chris)
s.add(terry)
s.commit()
e = s.query(Employee).get(chris.id)
name = e.name
print name
qstats = profiler.collect()
print qstats
report(qstats, "afterexec_queryparams.html", report_format="html")
report(qstats, "afterexec_queryparams.txt", report_format="text")
if __name__ == '__main__':
engine = create_engine('sqlite:///orm_in_detail.sqlite')
session = sessionmaker()
session.configure(bind=engine)
Base.metadata.create_all(engine)
test_capture_params()
========================================================================
====== SQLTap Profiling Report ======
========================================================================
Report Generated Time: 2015-09-18 12:10:48.872992
========================================================================
====== Summary ======
========================================================================
Total queries: 4
Total time: 0.00 second(s)
========================================================================
====== Details ======
========================================================================
============ QueryGroup 0 ============
------------ QueryGroup 0 summary ------------
Query count: 1
Query max time: 0.001 second(s)
Query min time: 0.001 second(s)
Query mean time: 0.001 second(s)
Query median time: 0.001 second(s)
------------ QueryGroup 0 SQL pattern ------------
INSERT INTO department (id, name)
VALUES (?,
?)
------------ QueryGroup 0 breakdown ------------
Query 0:
Query duration: 0.001 second(s)
Query params:
name: None
id: None
------------ QueryGroup 0 stacks ------------
Total unique stack(s): 1
Stack 0:
1 call(s) from test_capture_params @/Users/georgevreilly/tmp/afterexec_queryparams.py:46
Traceback:
File "/Users/georgevreilly/tmp/afterexec_queryparams.py", line 63, in <module>
test_capture_params()
File "/Users/georgevreilly/tmp/afterexec_queryparams.py", line 46, in test_capture_params
s.commit()
File "/Users/georgevreilly/.virtualenvs/hub/lib/python2.7/site-packages/SQLAlchemy-0.9.9-py2.7-macosx-10.10-x86_64.egg/sqlalchemy/orm/session.py", line 788, in commit
self.transaction.commit()
File "/Users/georgevreilly/.virtualenvs/hub/lib/python2.7/site-packages/SQLAlchemy-0.9.9-py2.7-macosx-10.10-x86_64.egg/sqlalchemy/orm/session.py", line 384, in commit
self._prepare_impl()
File "/Users/georgevreilly/.virtualenvs/hub/lib/python2.7/site-packages/SQLAlchemy-0.9.9-py2.7-macosx-10.10-x86_64.egg/sqlalchemy/orm/session.py", line 364, in _prepare_impl
self.session.flush()
File "/Users/georgevreilly/.virtualenvs/hub/lib/python2.7/site-packages/SQLAlchemy-0.9.9-py2.7-macosx-10.10-x86_64.egg/sqlalchemy/orm/session.py", line 1985, in flush
self._flush(objects)
File "/Users/georgevreilly/.virtualenvs/hub/lib/python2.7/site-packages/SQLAlchemy-0.9.9-py2.7-macosx-10.10-x86_64.egg/sqlalchemy/orm/session.py", line 2067, in _flush
flush_context.execute()
File "/Users/georgevreilly/.virtualenvs/hub/lib/python2.7/site-packages/SQLAlchemy-0.9.9-py2.7-macosx-10.10-x86_64.egg/sqlalchemy/orm/unitofwork.py", line 372, in execute
rec.execute(self)
File "/Users/georgevreilly/.virtualenvs/hub/lib/python2.7/site-packages/SQLAlchemy-0.9.9-py2.7-macosx-10.10-x86_64.egg/sqlalchemy/orm/unitofwork.py", line 526, in execute
uow
File "/Users/georgevreilly/.virtualenvs/hub/lib/python2.7/site-packages/SQLAlchemy-0.9.9-py2.7-macosx-10.10-x86_64.egg/sqlalchemy/orm/persistence.py", line 65, in save_obj
mapper, table, insert)
File "/Users/georgevreilly/.virtualenvs/hub/lib/python2.7/site-packages/SQLAlchemy-0.9.9-py2.7-macosx-10.10-x86_64.egg/sqlalchemy/orm/persistence.py", line 602, in _emit_insert_statements
execute(statement, params)
File "/Users/georgevreilly/.virtualenvs/hub/lib/python2.7/site-packages/SQLAlchemy-0.9.9-py2.7-macosx-10.10-x86_64.egg/sqlalchemy/engine/base.py", line 841, in execute
return meth(self, multiparams, params)
File "/Users/georgevreilly/.virtualenvs/hub/lib/python2.7/site-packages/SQLAlchemy-0.9.9-py2.7-macosx-10.10-x86_64.egg/sqlalchemy/sql/elements.py", line 322, in _execute_on_connection
return connection._execute_clauseelement(self, multiparams, params)
File "/Users/georgevreilly/.virtualenvs/hub/lib/python2.7/site-packages/SQLAlchemy-0.9.9-py2.7-macosx-10.10-x86_64.egg/sqlalchemy/engine/base.py", line 942, in _execute_clauseelement
elem, multiparams, params, ret)
File "/Users/georgevreilly/.virtualenvs/hub/lib/python2.7/site-packages/SQLAlchemy-0.9.9-py2.7-macosx-10.10-x86_64.egg/sqlalchemy/event/attr.py", line 260, in __call__
fn(*args, **kw)
============ QueryGroup 1 ============
------------ QueryGroup 1 summary ------------
Query count: 2
Query max time: 0.001 second(s)
Query min time: 0.000 second(s)
Query mean time: 0.001 second(s)
Query median time: 0.001 second(s)
------------ QueryGroup 1 SQL pattern ------------
INSERT INTO employee (id, name, hired_on, department_id)
VALUES (?,
?,
?,
?)
------------ QueryGroup 1 breakdown ------------
Query 0:
Query duration: 0.000 second(s)
Query params:
department_id: None
name: None
hired_on: None
id: None
Query 1:
Query duration: 0.001 second(s)
Query params:
id: None
name: None
hired_on: None
department_id: None
------------ QueryGroup 1 stacks ------------
Total unique stack(s): 1
Stack 0:
2 call(s) from test_capture_params @/Users/georgevreilly/tmp/afterexec_queryparams.py:46
Traceback:
File "/Users/georgevreilly/tmp/afterexec_queryparams.py", line 63, in <module>
test_capture_params()
File "/Users/georgevreilly/tmp/afterexec_queryparams.py", line 46, in test_capture_params
s.commit()
File "/Users/georgevreilly/.virtualenvs/hub/lib/python2.7/site-packages/SQLAlchemy-0.9.9-py2.7-macosx-10.10-x86_64.egg/sqlalchemy/orm/session.py", line 788, in commit
self.transaction.commit()
File "/Users/georgevreilly/.virtualenvs/hub/lib/python2.7/site-packages/SQLAlchemy-0.9.9-py2.7-macosx-10.10-x86_64.egg/sqlalchemy/orm/session.py", line 384, in commit
self._prepare_impl()
File "/Users/georgevreilly/.virtualenvs/hub/lib/python2.7/site-packages/SQLAlchemy-0.9.9-py2.7-macosx-10.10-x86_64.egg/sqlalchemy/orm/session.py", line 364, in _prepare_impl
self.session.flush()
File "/Users/georgevreilly/.virtualenvs/hub/lib/python2.7/site-packages/SQLAlchemy-0.9.9-py2.7-macosx-10.10-x86_64.egg/sqlalchemy/orm/session.py", line 1985, in flush
self._flush(objects)
File "/Users/georgevreilly/.virtualenvs/hub/lib/python2.7/site-packages/SQLAlchemy-0.9.9-py2.7-macosx-10.10-x86_64.egg/sqlalchemy/orm/session.py", line 2067, in _flush
flush_context.execute()
File "/Users/georgevreilly/.virtualenvs/hub/lib/python2.7/site-packages/SQLAlchemy-0.9.9-py2.7-macosx-10.10-x86_64.egg/sqlalchemy/orm/unitofwork.py", line 372, in execute
rec.execute(self)
File "/Users/georgevreilly/.virtualenvs/hub/lib/python2.7/site-packages/SQLAlchemy-0.9.9-py2.7-macosx-10.10-x86_64.egg/sqlalchemy/orm/unitofwork.py", line 526, in execute
uow
File "/Users/georgevreilly/.virtualenvs/hub/lib/python2.7/site-packages/SQLAlchemy-0.9.9-py2.7-macosx-10.10-x86_64.egg/sqlalchemy/orm/persistence.py", line 65, in save_obj
mapper, table, insert)
File "/Users/georgevreilly/.virtualenvs/hub/lib/python2.7/site-packages/SQLAlchemy-0.9.9-py2.7-macosx-10.10-x86_64.egg/sqlalchemy/orm/persistence.py", line 602, in _emit_insert_statements
execute(statement, params)
File "/Users/georgevreilly/.virtualenvs/hub/lib/python2.7/site-packages/SQLAlchemy-0.9.9-py2.7-macosx-10.10-x86_64.egg/sqlalchemy/engine/base.py", line 841, in execute
return meth(self, multiparams, params)
File "/Users/georgevreilly/.virtualenvs/hub/lib/python2.7/site-packages/SQLAlchemy-0.9.9-py2.7-macosx-10.10-x86_64.egg/sqlalchemy/sql/elements.py", line 322, in _execute_on_connection
return connection._execute_clauseelement(self, multiparams, params)
File "/Users/georgevreilly/.virtualenvs/hub/lib/python2.7/site-packages/SQLAlchemy-0.9.9-py2.7-macosx-10.10-x86_64.egg/sqlalchemy/engine/base.py", line 942, in _execute_clauseelement
elem, multiparams, params, ret)
File "/Users/georgevreilly/.virtualenvs/hub/lib/python2.7/site-packages/SQLAlchemy-0.9.9-py2.7-macosx-10.10-x86_64.egg/sqlalchemy/event/attr.py", line 260, in __call__
fn(*args, **kw)
============ QueryGroup 2 ============
------------ QueryGroup 2 summary ------------
Query count: 1
Query max time: 0.001 second(s)
Query min time: 0.001 second(s)
Query mean time: 0.001 second(s)
Query median time: 0.001 second(s)
------------ QueryGroup 2 SQL pattern ------------
SELECT employee.id AS employee_id,
employee.name AS employee_name,
employee.hired_on AS employee_hired_on,
employee.department_id AS employee_department_id
FROM employee
WHERE employee.id = ?
------------ QueryGroup 2 breakdown ------------
Query 0:
Query duration: 0.001 second(s)
Query params:
param_1: None
------------ QueryGroup 2 stacks ------------
Total unique stack(s): 1
Stack 0:
1 call(s) from test_capture_params @/Users/georgevreilly/tmp/afterexec_queryparams.py:48
Traceback:
File "/Users/georgevreilly/tmp/afterexec_queryparams.py", line 63, in <module>
test_capture_params()
File "/Users/georgevreilly/tmp/afterexec_queryparams.py", line 48, in test_capture_params
e = s.query(Employee).get(chris.id)
File "/Users/georgevreilly/.virtualenvs/hub/lib/python2.7/site-packages/SQLAlchemy-0.9.9-py2.7-macosx-10.10-x86_64.egg/sqlalchemy/orm/attributes.py", line 239, in __get__
return self.impl.get(instance_state(instance), dict_)
File "/Users/georgevreilly/.virtualenvs/hub/lib/python2.7/site-packages/SQLAlchemy-0.9.9-py2.7-macosx-10.10-x86_64.egg/sqlalchemy/orm/attributes.py", line 589, in get
value = callable_(state, passive)
File "/Users/georgevreilly/.virtualenvs/hub/lib/python2.7/site-packages/SQLAlchemy-0.9.9-py2.7-macosx-10.10-x86_64.egg/sqlalchemy/orm/state.py", line 433, in __call__
self.manager.deferred_scalar_loader(self, toload)
File "/Users/georgevreilly/.virtualenvs/hub/lib/python2.7/site-packages/SQLAlchemy-0.9.9-py2.7-macosx-10.10-x86_64.egg/sqlalchemy/orm/loading.py", line 613, in load_scalar_attributes
only_load_props=attribute_names)
File "/Users/georgevreilly/.virtualenvs/hub/lib/python2.7/site-packages/SQLAlchemy-0.9.9-py2.7-macosx-10.10-x86_64.egg/sqlalchemy/orm/loading.py", line 235, in load_on_ident
return q.one()
File "/Users/georgevreilly/.virtualenvs/hub/lib/python2.7/site-packages/SQLAlchemy-0.9.9-py2.7-macosx-10.10-x86_64.egg/sqlalchemy/orm/query.py", line 2398, in one
ret = list(self)
File "/Users/georgevreilly/.virtualenvs/hub/lib/python2.7/site-packages/SQLAlchemy-0.9.9-py2.7-macosx-10.10-x86_64.egg/sqlalchemy/orm/query.py", line 2441, in __iter__
return self._execute_and_instances(context)
File "/Users/georgevreilly/.virtualenvs/hub/lib/python2.7/site-packages/SQLAlchemy-0.9.9-py2.7-macosx-10.10-x86_64.egg/sqlalchemy/orm/query.py", line 2456, in _execute_and_instances
result = conn.execute(querycontext.statement, self._params)
File "/Users/georgevreilly/.virtualenvs/hub/lib/python2.7/site-packages/SQLAlchemy-0.9.9-py2.7-macosx-10.10-x86_64.egg/sqlalchemy/engine/base.py", line 841, in execute
return meth(self, multiparams, params)
File "/Users/georgevreilly/.virtualenvs/hub/lib/python2.7/site-packages/SQLAlchemy-0.9.9-py2.7-macosx-10.10-x86_64.egg/sqlalchemy/sql/elements.py", line 322, in _execute_on_connection
return connection._execute_clauseelement(self, multiparams, params)
File "/Users/georgevreilly/.virtualenvs/hub/lib/python2.7/site-packages/SQLAlchemy-0.9.9-py2.7-macosx-10.10-x86_64.egg/sqlalchemy/engine/base.py", line 942, in _execute_clauseelement
elem, multiparams, params, ret)
File "/Users/georgevreilly/.virtualenvs/hub/lib/python2.7/site-packages/SQLAlchemy-0.9.9-py2.7-macosx-10.10-x86_64.egg/sqlalchemy/event/attr.py", line 260, in __call__
fn(*args, **kw)
========================================================================
====== SQLTap Profiling Report ======
========================================================================
Report Generated Time: 2015-09-18 12:12:03.925317
========================================================================
====== Summary ======
========================================================================
Total queries: 4
Total time: 0.00 second(s)
========================================================================
====== Details ======
========================================================================
============ QueryGroup 0 ============
------------ QueryGroup 0 summary ------------
Query count: 2
Query max time: 0.001 second(s)
Query min time: 0.000 second(s)
Query mean time: 0.001 second(s)
Query median time: 0.001 second(s)
------------ QueryGroup 0 SQL pattern ------------
INSERT INTO employee (id, name, hired_on, department_id)
VALUES (?,
?,
?,
?)
------------ QueryGroup 0 breakdown ------------
Query 0:
Query duration: 0.000 second(s)
Query params:
department_id: None
id: None
hired_on: None
name: None
Query 1:
Query duration: 0.001 second(s)
Query params:
hired_on: None
id: None
name: None
department_id: None
------------ QueryGroup 0 stacks ------------
Total unique stack(s): 1
Stack 0:
2 call(s) from test_capture_params @/Users/georgevreilly/tmp/afterexec_queryparams.py:46
Traceback:
File "/Users/georgevreilly/tmp/afterexec_queryparams.py", line 63, in <module>
test_capture_params()
File "/Users/georgevreilly/tmp/afterexec_queryparams.py", line 46, in test_capture_params
s.commit()
File "/Users/georgevreilly/.virtualenvs/hub/lib/python2.7/site-packages/SQLAlchemy-0.9.9-py2.7-macosx-10.10-x86_64.egg/sqlalchemy/orm/session.py", line 788, in commit
self.transaction.commit()
File "/Users/georgevreilly/.virtualenvs/hub/lib/python2.7/site-packages/SQLAlchemy-0.9.9-py2.7-macosx-10.10-x86_64.egg/sqlalchemy/orm/session.py", line 384, in commit
self._prepare_impl()
File "/Users/georgevreilly/.virtualenvs/hub/lib/python2.7/site-packages/SQLAlchemy-0.9.9-py2.7-macosx-10.10-x86_64.egg/sqlalchemy/orm/session.py", line 364, in _prepare_impl
self.session.flush()
File "/Users/georgevreilly/.virtualenvs/hub/lib/python2.7/site-packages/SQLAlchemy-0.9.9-py2.7-macosx-10.10-x86_64.egg/sqlalchemy/orm/session.py", line 1985, in flush
self._flush(objects)
File "/Users/georgevreilly/.virtualenvs/hub/lib/python2.7/site-packages/SQLAlchemy-0.9.9-py2.7-macosx-10.10-x86_64.egg/sqlalchemy/orm/session.py", line 2067, in _flush
flush_context.execute()
File "/Users/georgevreilly/.virtualenvs/hub/lib/python2.7/site-packages/SQLAlchemy-0.9.9-py2.7-macosx-10.10-x86_64.egg/sqlalchemy/orm/unitofwork.py", line 372, in execute
rec.execute(self)
File "/Users/georgevreilly/.virtualenvs/hub/lib/python2.7/site-packages/SQLAlchemy-0.9.9-py2.7-macosx-10.10-x86_64.egg/sqlalchemy/orm/unitofwork.py", line 526, in execute
uow
File "/Users/georgevreilly/.virtualenvs/hub/lib/python2.7/site-packages/SQLAlchemy-0.9.9-py2.7-macosx-10.10-x86_64.egg/sqlalchemy/orm/persistence.py", line 65, in save_obj
mapper, table, insert)
File "/Users/georgevreilly/.virtualenvs/hub/lib/python2.7/site-packages/SQLAlchemy-0.9.9-py2.7-macosx-10.10-x86_64.egg/sqlalchemy/orm/persistence.py", line 602, in _emit_insert_statements
execute(statement, params)
File "/Users/georgevreilly/.virtualenvs/hub/lib/python2.7/site-packages/SQLAlchemy-0.9.9-py2.7-macosx-10.10-x86_64.egg/sqlalchemy/engine/base.py", line 841, in execute
return meth(self, multiparams, params)
File "/Users/georgevreilly/.virtualenvs/hub/lib/python2.7/site-packages/SQLAlchemy-0.9.9-py2.7-macosx-10.10-x86_64.egg/sqlalchemy/sql/elements.py", line 322, in _execute_on_connection
return connection._execute_clauseelement(self, multiparams, params)
File "/Users/georgevreilly/.virtualenvs/hub/lib/python2.7/site-packages/SQLAlchemy-0.9.9-py2.7-macosx-10.10-x86_64.egg/sqlalchemy/engine/base.py", line 942, in _execute_clauseelement
elem, multiparams, params, ret)
File "/Users/georgevreilly/.virtualenvs/hub/lib/python2.7/site-packages/SQLAlchemy-0.9.9-py2.7-macosx-10.10-x86_64.egg/sqlalchemy/event/attr.py", line 260, in __call__
fn(*args, **kw)
============ QueryGroup 1 ============
------------ QueryGroup 1 summary ------------
Query count: 1
Query max time: 0.001 second(s)
Query min time: 0.001 second(s)
Query mean time: 0.001 second(s)
Query median time: 0.001 second(s)
------------ QueryGroup 1 SQL pattern ------------
INSERT INTO department (id, name)
VALUES (?,
?)
------------ QueryGroup 1 breakdown ------------
Query 0:
Query duration: 0.001 second(s)
Query params:
id: None
name: None
------------ QueryGroup 1 stacks ------------
Total unique stack(s): 1
Stack 0:
1 call(s) from test_capture_params @/Users/georgevreilly/tmp/afterexec_queryparams.py:46
Traceback:
File "/Users/georgevreilly/tmp/afterexec_queryparams.py", line 63, in <module>
test_capture_params()
File "/Users/georgevreilly/tmp/afterexec_queryparams.py", line 46, in test_capture_params
s.commit()
File "/Users/georgevreilly/.virtualenvs/hub/lib/python2.7/site-packages/SQLAlchemy-0.9.9-py2.7-macosx-10.10-x86_64.egg/sqlalchemy/orm/session.py", line 788, in commit
self.transaction.commit()
File "/Users/georgevreilly/.virtualenvs/hub/lib/python2.7/site-packages/SQLAlchemy-0.9.9-py2.7-macosx-10.10-x86_64.egg/sqlalchemy/orm/session.py", line 384, in commit
self._prepare_impl()
File "/Users/georgevreilly/.virtualenvs/hub/lib/python2.7/site-packages/SQLAlchemy-0.9.9-py2.7-macosx-10.10-x86_64.egg/sqlalchemy/orm/session.py", line 364, in _prepare_impl
self.session.flush()
File "/Users/georgevreilly/.virtualenvs/hub/lib/python2.7/site-packages/SQLAlchemy-0.9.9-py2.7-macosx-10.10-x86_64.egg/sqlalchemy/orm/session.py", line 1985, in flush
self._flush(objects)
File "/Users/georgevreilly/.virtualenvs/hub/lib/python2.7/site-packages/SQLAlchemy-0.9.9-py2.7-macosx-10.10-x86_64.egg/sqlalchemy/orm/session.py", line 2067, in _flush
flush_context.execute()
File "/Users/georgevreilly/.virtualenvs/hub/lib/python2.7/site-packages/SQLAlchemy-0.9.9-py2.7-macosx-10.10-x86_64.egg/sqlalchemy/orm/unitofwork.py", line 372, in execute
rec.execute(self)
File "/Users/georgevreilly/.virtualenvs/hub/lib/python2.7/site-packages/SQLAlchemy-0.9.9-py2.7-macosx-10.10-x86_64.egg/sqlalchemy/orm/unitofwork.py", line 526, in execute
uow
File "/Users/georgevreilly/.virtualenvs/hub/lib/python2.7/site-packages/SQLAlchemy-0.9.9-py2.7-macosx-10.10-x86_64.egg/sqlalchemy/orm/persistence.py", line 65, in save_obj
mapper, table, insert)
File "/Users/georgevreilly/.virtualenvs/hub/lib/python2.7/site-packages/SQLAlchemy-0.9.9-py2.7-macosx-10.10-x86_64.egg/sqlalchemy/orm/persistence.py", line 602, in _emit_insert_statements
execute(statement, params)
File "/Users/georgevreilly/.virtualenvs/hub/lib/python2.7/site-packages/SQLAlchemy-0.9.9-py2.7-macosx-10.10-x86_64.egg/sqlalchemy/engine/base.py", line 841, in execute
return meth(self, multiparams, params)
File "/Users/georgevreilly/.virtualenvs/hub/lib/python2.7/site-packages/SQLAlchemy-0.9.9-py2.7-macosx-10.10-x86_64.egg/sqlalchemy/sql/elements.py", line 322, in _execute_on_connection
return connection._execute_clauseelement(self, multiparams, params)
File "/Users/georgevreilly/.virtualenvs/hub/lib/python2.7/site-packages/SQLAlchemy-0.9.9-py2.7-macosx-10.10-x86_64.egg/sqlalchemy/engine/base.py", line 942, in _execute_clauseelement
elem, multiparams, params, ret)
File "/Users/georgevreilly/.virtualenvs/hub/lib/python2.7/site-packages/SQLAlchemy-0.9.9-py2.7-macosx-10.10-x86_64.egg/sqlalchemy/event/attr.py", line 260, in __call__
fn(*args, **kw)
============ QueryGroup 2 ============
------------ QueryGroup 2 summary ------------
Query count: 1
Query max time: 0.001 second(s)
Query min time: 0.001 second(s)
Query mean time: 0.001 second(s)
Query median time: 0.001 second(s)
------------ QueryGroup 2 SQL pattern ------------
SELECT employee.id AS employee_id,
employee.name AS employee_name,
employee.hired_on AS employee_hired_on,
employee.department_id AS employee_department_id
FROM employee
WHERE employee.id = ?
------------ QueryGroup 2 breakdown ------------
Query 0:
Query duration: 0.001 second(s)
Query params:
param_1: None
------------ QueryGroup 2 stacks ------------
Total unique stack(s): 1
Stack 0:
1 call(s) from test_capture_params @/Users/georgevreilly/tmp/afterexec_queryparams.py:48
Traceback:
File "/Users/georgevreilly/tmp/afterexec_queryparams.py", line 63, in <module>
test_capture_params()
File "/Users/georgevreilly/tmp/afterexec_queryparams.py", line 48, in test_capture_params
e = s.query(Employee).get(chris.id)
File "/Users/georgevreilly/.virtualenvs/hub/lib/python2.7/site-packages/SQLAlchemy-0.9.9-py2.7-macosx-10.10-x86_64.egg/sqlalchemy/orm/attributes.py", line 239, in __get__
return self.impl.get(instance_state(instance), dict_)
File "/Users/georgevreilly/.virtualenvs/hub/lib/python2.7/site-packages/SQLAlchemy-0.9.9-py2.7-macosx-10.10-x86_64.egg/sqlalchemy/orm/attributes.py", line 589, in get
value = callable_(state, passive)
File "/Users/georgevreilly/.virtualenvs/hub/lib/python2.7/site-packages/SQLAlchemy-0.9.9-py2.7-macosx-10.10-x86_64.egg/sqlalchemy/orm/state.py", line 433, in __call__
self.manager.deferred_scalar_loader(self, toload)
File "/Users/georgevreilly/.virtualenvs/hub/lib/python2.7/site-packages/SQLAlchemy-0.9.9-py2.7-macosx-10.10-x86_64.egg/sqlalchemy/orm/loading.py", line 613, in load_scalar_attributes
only_load_props=attribute_names)
File "/Users/georgevreilly/.virtualenvs/hub/lib/python2.7/site-packages/SQLAlchemy-0.9.9-py2.7-macosx-10.10-x86_64.egg/sqlalchemy/orm/loading.py", line 235, in load_on_ident
return q.one()
File "/Users/georgevreilly/.virtualenvs/hub/lib/python2.7/site-packages/SQLAlchemy-0.9.9-py2.7-macosx-10.10-x86_64.egg/sqlalchemy/orm/query.py", line 2398, in one
ret = list(self)
File "/Users/georgevreilly/.virtualenvs/hub/lib/python2.7/site-packages/SQLAlchemy-0.9.9-py2.7-macosx-10.10-x86_64.egg/sqlalchemy/orm/query.py", line 2441, in __iter__
return self._execute_and_instances(context)
File "/Users/georgevreilly/.virtualenvs/hub/lib/python2.7/site-packages/SQLAlchemy-0.9.9-py2.7-macosx-10.10-x86_64.egg/sqlalchemy/orm/query.py", line 2456, in _execute_and_instances
result = conn.execute(querycontext.statement, self._params)
File "/Users/georgevreilly/.virtualenvs/hub/lib/python2.7/site-packages/SQLAlchemy-0.9.9-py2.7-macosx-10.10-x86_64.egg/sqlalchemy/engine/base.py", line 841, in execute
return meth(self, multiparams, params)
File "/Users/georgevreilly/.virtualenvs/hub/lib/python2.7/site-packages/SQLAlchemy-0.9.9-py2.7-macosx-10.10-x86_64.egg/sqlalchemy/sql/elements.py", line 322, in _execute_on_connection
return connection._execute_clauseelement(self, multiparams, params)
File "/Users/georgevreilly/.virtualenvs/hub/lib/python2.7/site-packages/SQLAlchemy-0.9.9-py2.7-macosx-10.10-x86_64.egg/sqlalchemy/engine/base.py", line 942, in _execute_clauseelement
elem, multiparams, params, ret)
File "/Users/georgevreilly/.virtualenvs/hub/lib/python2.7/site-packages/SQLAlchemy-0.9.9-py2.7-macosx-10.10-x86_64.egg/sqlalchemy/event/attr.py", line 260, in __call__
fn(*args, **kw)
INSERT INTO department (id, name) VALUES (?, ?)
multiparams ({'name': 'IT'},)
params {}
query_params {'id': None, 'name': None}
INSERT INTO employee (id, name, hired_on, department_id) VALUES (?, ?, ?, ?)
multiparams ({'name': 'Chris', 'department_id': 19},)
params {}
query_params {'hired_on': None, 'id': None, 'name': None, 'department_id': None}
INSERT INTO employee (id, name, hired_on, department_id) VALUES (?, ?, ?, ?)
multiparams ({'name': 'Terry', 'department_id': 19},)
params {}
query_params {'hired_on': None, 'id': None, 'name': None, 'department_id': None}
SELECT employee.id AS employee_id, employee.name AS employee_name, employee.hired_on AS employee_hired_on, employee.department_id AS employee_department_id
FROM employee
WHERE employee.id = ?
multiparams ({'%(4480418320 param)s': 37},)
params {}
query_params {u'param_1': None}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment