Skip to content

Commit efaddb7

Browse files
authored
fixed #221 (#222)
1 parent a6c91db commit efaddb7

File tree

2 files changed

+28
-4
lines changed

2 files changed

+28
-4
lines changed

sssom/cli.py

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -232,16 +232,22 @@ def dosql(query: str, inputs: List[str], output: TextIO):
232232
""" # noqa: DAR101
233233
# should start with from_tsv and MOST should return write_sssom
234234
n = 1
235+
new_msdf = MappingSetDataFrame()
235236
while len(inputs) >= n:
236237
fn = inputs[n - 1]
237-
df = read_sssom_table(fn).df
238+
msdf = read_sssom_table(fn)
239+
df = msdf.df
238240
# df = parse(fn)
239241
globals()[f"df{n}"] = df
240242
tn = re.sub("[.].*", "", Path(fn).stem).lower()
241243
globals()[tn] = df
242244
n += 1
243-
df = sqldf(query)
244-
df.to_csv(output, sep="\t", index=False)
245+
246+
new_df = sqldf(query)
247+
new_msdf.df = new_df
248+
new_msdf.prefix_map = msdf.prefix_map
249+
new_msdf.metadata = msdf.metadata
250+
write_table(new_msdf, output)
245251

246252

247253
@main.command()

tests/test_cli.py

Lines changed: 19 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@
1313
crosstab,
1414
dedupe,
1515
diff,
16+
dosql,
1617
merge,
1718
parse,
1819
partition,
@@ -56,6 +57,8 @@ def test_cli_single_input(self):
5657
self.run_crosstab(runner, test)
5758
self.run_correlations(runner, test)
5859
self.run_reconcile_prefix(runner, test)
60+
self.run_dosql(runner, test)
61+
5962
self.assertTrue(len(test_cases) > 2)
6063

6164
def test_cli_multiple_input(self):
@@ -70,7 +73,6 @@ def test_cli_multiple_input(self):
7073

7174
def run_successful(self, result: Result, test_case: SSSOMTestCase) -> None:
7275
"""Check the test result is successful."""
73-
# self.assertTrue(result.exit_code == 0, f"Run failed with message {result.exception}")
7476
self.assertEqual(
7577
result.exit_code,
7678
0,
@@ -249,3 +251,19 @@ def run_reconcile_prefix(
249251
)
250252
self.run_successful(result, test_case)
251253
return result
254+
255+
def run_dosql(self, runner: CliRunner, test_case: SSSOMTestCase) -> Result:
256+
"""Test a simple dosql command."""
257+
out_file = os.path.join(test_out_dir, "dosql_test.tsv")
258+
result = runner.invoke(
259+
dosql,
260+
[
261+
"-q",
262+
"SELECT * FROM df WHERE subject_label = 'heart'",
263+
test_case.filepath,
264+
"-o",
265+
os.path.join(test_out_dir, out_file),
266+
],
267+
)
268+
self.run_successful(result, test_case)
269+
return result

0 commit comments

Comments
 (0)