Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 1 addition & 7 deletions tract_querier/query_processor.py
Original file line number Diff line number Diff line change
Expand Up @@ -6,8 +6,6 @@
from itertools import takewhile
import fnmatch

from .code_util import DocStringInheritor


__all__ = [
'keywords', 'EvaluateQueries', 'eval_queries',
Expand Down Expand Up @@ -107,7 +105,6 @@ def operation(tract_query_info):
return operation


# @add_metaclass(DocStringInheritor)
class EvaluateQueries(ast.NodeVisitor):

r"""
Expand All @@ -133,7 +130,6 @@ class EvaluateQueries(ast.NodeVisitor):
the tracts resulting from this query

"""
__metaclass__ = DocStringInheritor

relative_terms = [
'anterior_of',
Expand Down Expand Up @@ -246,9 +242,7 @@ def visit_Call(self, node):
if (
isinstance(node.func, ast.Name) and
len(node.args) == 1 and
len(node.keywords) == 0 and
(not hasattr(node, 'starargs') or node.starargs is None) and
(not hasattr(node, 'kwargs') or node.kwargs is None)
len(node.keywords) == 0
):
if (node.func.id.lower() == 'only'):
query_info = self.visit(node.args[0])
Expand Down
17 changes: 3 additions & 14 deletions tract_querier/shell.py
Original file line number Diff line number Diff line change
Expand Up @@ -151,7 +151,7 @@ def do_save(self, line):
)
self.save_query_visitor.visit(ast.Module(body=body))
except SyntaxError as e:
print(e.value)
print(e)
except TractQuerierSyntaxError as e:
print(e.value)
except TractQuerierLabelNotFound as e:
Expand Down Expand Up @@ -194,7 +194,7 @@ def default(self, line):
self.querier.visit(body)
self.save_query_visitor.visit(body)
except SyntaxError as e:
print(e.value)
print(e)
except TractQuerierSyntaxError as e:
print(e.value)
except TractQuerierLabelNotFound as e:
Expand All @@ -204,18 +204,7 @@ def default(self, line):

@safe_method
def names(self):
names = []
for query in self.querier.evaluated_queries_info.keys():
if query.endswith('_left'):
names += [
query.replace('_left', '.left'),
query.replace('_left', '.right'),
]
elif query.endswith('_right'):
pass
else:
names.append(query)
return names
return list(self.querier.evaluated_queries_info.keys())

@safe_method
def completenames(self, text, *ignored):
Expand Down
33 changes: 33 additions & 0 deletions tract_querier/tests/test_shell.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
from .. import shell


class EmptySpatialIndexing:
crossing_tracts_labels = {}
crossing_labels_tracts = {}
ending_tracts_labels = ({}, {})
ending_labels_tracts = ({}, {})
label_bounding_boxes = {}
tract_bounding_boxes = {}


def test_names():
cmd = shell.TractQuerierCmd(
EmptySpatialIndexing(),
initial_body="a.left = 1\na.right = 2\nb = 1\nc_left = 1\nc_right = 2"
)
assert sorted(cmd.names()) == [
'a.left', 'a.right', 'b', 'c_left', 'c_right'
]


def test_syntax_error_is_printed(monkeypatch, capsys):
def raise_syntax_error(*args, **kwargs):
raise SyntaxError('invalid syntax')

monkeypatch.setattr(shell, 'queries_preprocess', raise_syntax_error)
cmd = shell.TractQuerierCmd(EmptySpatialIndexing())
cmd.default('a = (')
cmd.do_save('a')
out, err = capsys.readouterr()
assert out.count('invalid syntax') == 2
assert 'Uncaught exception' not in err
6 changes: 1 addition & 5 deletions tract_querier/tract_math/decorator.py
Original file line number Diff line number Diff line change
Expand Up @@ -190,11 +190,7 @@ def process_output(output, file_output=None):
f = open(file_output, 'w')
writer = csv.DictWriter(f, output.keys(), dialect=dialect)

if hasattr(writer, 'writeheader'):
writer.writeheader()
else:
header = dict(zip(writer.fieldnames, writer.fieldnames))
writer.writerow(header)
writer.writeheader()

first_value = next(iter(output.values()))
if (
Expand Down
Loading