def magic(line, cell=None): """Coconut IPython magic.""" try: if cell is None: code = line else: cmd(line) # first line in block is cmd code = cell compiled = parse(code) except CoconutException: logger.print_exc() else: ipython.run_cell(compiled, shell_futures=False)
def magic(line, cell=None): """Provides %coconut and %%coconut magics.""" try: if cell is None: code = line else: # first line in block is cmd, rest is code line = line.strip() if line: cmd(line) code = cell compiled = parse(code) except CoconutException: logger.display_exc() else: ipython.run_cell(compiled, shell_futures=False)
def magic(line, cell=None): """Provides %coconut and %%coconut magics.""" try: if cell is None: code = line else: # first line in block is cmd, rest is code line = line.strip() if line: cmd(line, interact=False) code = cell compiled = parse(code) except CoconutException: logger.display_exc() else: ipython.run_cell(compiled, shell_futures=False)
def test_extras(): if IPY: import coconut.highlighter # type: ignore assert consume(range(10), keep_last=1)[0] == 9 == coc_consume(range(10), keep_last=1)[0] assert version() == version("num") assert version("name") assert version("spec") assert version("tag") assert version("-v") assert_raises(lambda _=None: version("other"), CoconutException) def _coconut_lambda_0(_=None): raise CoconutException("derp").syntax_err() assert_raises(_coconut_lambda_0, SyntaxError) assert coconut_eval("x -> x + 1")(2) == 3 assert coconut_eval("addpattern") assert parse("abc") == parse("abc", "sys") assert parse("abc", "file") assert parse("abc", "package") assert parse("abc", "block") == "abc\n" == parse("abc", "single") assert parse("abc", "eval") == "abc" == parse(" abc", "eval") assert parse("abc", "any") == "abc" assert parse("x |> map$(f)", "any") == "map(f, x)" assert "_coconut" not in parse("a |> .b |> .m() |> f$(x) |> .[0]", "block") assert parse("abc # derp", "any") == "abc # derp" assert_raises(lambda _=None: parse(" abc", "file"), CoconutException) assert_raises(lambda _=None: parse("'"), CoconutException) assert_raises(lambda _=None: parse("("), CoconutException) assert_raises(lambda _=None: parse("\\("), CoconutException) assert_raises(lambda _=None: parse("if a:\n b\n c"), CoconutException) assert_raises(lambda _=None: parse("$"), CoconutException) assert_raises(lambda _=None: parse("_coconut"), CoconutException) assert parse("def f(x):\n \t pass") assert parse("lambda x: x") assert parse("u''") assert parse("def f(x):\\\n pass") assert parse("abc ") assert parse("abc # derp", "any") == "abc # derp" setup(line_numbers=True) assert parse("abc", "any") == "abc # line 1" setup(keep_lines=True) assert parse("abc", "any") == "abc # abc" setup(line_numbers=True, keep_lines=True) assert parse("abc", "any") == "abc # line 1: abc" setup() assert "prepattern" in parse("\n", mode="file") assert "datamaker" in parse("\n", mode="file") setup(strict=True) assert "prepattern" not in parse("\n", mode="file") assert "datamaker" not in parse("\n", mode="file") assert_raises(lambda _=None: parse("def f(x):\n \t pass"), CoconutStyleError) assert_raises(lambda _=None: parse("lambda x: x"), CoconutStyleError) assert_raises(lambda _=None: parse("u''"), CoconutStyleError) assert_raises(lambda _=None: parse("def f(x):\\\n pass"), CoconutStyleError) assert_raises(lambda _=None: parse("abc "), CoconutStyleError) assert_raises(lambda _=None: parse("abc", "file"), CoconutStyleError) assert_raises(lambda _=None: parse("a=1;"), CoconutStyleError) assert_raises(lambda _=None: parse("class derp(object)"), CoconutStyleError) setup() assert_raises(lambda _=None: cmd("-f"), SystemExit) assert_raises(lambda _=None: cmd("-pa ."), SystemExit) assert_raises(lambda _=None: cmd("-n . ."), SystemExit) assert_raises(lambda _=None: parse("f$()"), CoconutSyntaxError) assert_raises(lambda _=None: parse("f(*x, y)"), CoconutSyntaxError) assert_raises(lambda _=None: parse("def f(x) = return x"), CoconutSyntaxError) assert_raises(lambda _=None: parse("def f(x) =\n return x"), CoconutSyntaxError) assert_raises(lambda _=None: parse("a := b"), CoconutParseError) assert_raises(lambda _=None: parse("(a := b)"), CoconutTargetError) setup(target="2.7") assert parse("from io import BytesIO", mode="any") == "from io import BytesIO" assert_raises(lambda _=None: parse("def f(*, x=None) = x"), CoconutTargetError) setup(target="3.6") assert parse("def f(*, x=None) = x") setup(target="3.8") assert parse("(a := b)") assert parse("print(a := 1, b := 2)") assert parse("def f(a, /, b) = a, b") if CoconutKernel is not None: if PY35: asyncio.set_event_loop(asyncio.new_event_loop()) k = CoconutKernel() exec_result = (unwrap_future)(k.do_execute("derp = pow$(?, 2)", False, True, {"two": "(+)(1, 1)"}, True)) assert exec_result["status"] == "ok" assert exec_result["user_expressions"]["two"]["data"]["text/plain"] == "2" assert k.do_is_complete("if abc:")["status"] == "incomplete" assert k.do_is_complete("f(")["status"] == "incomplete" assert k.do_is_complete("abc")["status"] == "complete" inspect_result = k.do_inspect("derp", 4, 0) assert inspect_result["status"] == "ok" assert inspect_result["found"] assert inspect_result["data"]["text/plain"] complete_result = k.do_complete("der", 1) assert complete_result["status"] == "ok" assert "derp" in complete_result["matches"] assert complete_result["cursor_start"] == 0 assert complete_result["cursor_end"] == 1 keyword_complete_result = k.do_complete("ma", 1) assert keyword_complete_result["status"] == "ok" assert "match" in keyword_complete_result["matches"] assert "map" in keyword_complete_result["matches"] assert keyword_complete_result["cursor_start"] == 0 assert keyword_complete_result["cursor_end"] == 1 if not PYPY: import numpy as np assert np.all(fmap(lambda _=None: _ + 1, np.arange(3)) == np.array([1, 2, 3])) print("<success>")
def main(): if NOT_PY_32: import coconut.highlighter assert consume(range(10), keep_last=1)[0] == 9 == coc_consume(range(10), keep_last=1)[0] assert version() == version("num") assert version("name") assert version("spec") assert version("tag") assert version("-v") try: version("other") except CoconutException: assert True else: assert False setup() _sys = parse("abc", "sys") assert _sys assert _sys == parse("abc") _single = parse("abc", "single") assert _single _file = parse("abc", "file") assert _file _package = parse("abc", "package") assert _package _block = parse("abc", "block") assert _block _eval = parse("abc", "eval") assert _eval _debug = parse("abc", "debug") assert _debug assert _single == parse("abc", "single") assert _file == parse("abc", "file") assert _package == parse("abc", "package") assert _block == parse("abc", "block") assert _eval == parse("abc", "eval") assert _debug == parse("abc", "debug") assert parse(" abc", "eval") try: parse(" abc", "file") except CoconutException: assert True else: assert False try: parse("'") except CoconutException: assert True else: assert False try: parse("(") except CoconutException: assert True else: assert False try: parse("\\(") except CoconutException: assert True else: assert False try: parse("if a:\n b\n c") except CoconutException: assert True else: assert False try: parse("$") except CoconutException: assert True else: assert False try: parse("_coconut") except CoconutException: assert True else: assert False assert parse("def f(x):\n \t pass") assert parse("lambda x: x") assert parse("u''") assert parse("def f(x):\\\n pass") assert parse("abc ") setup(strict=True) try: parse("def f(x):\n \t pass") except CoconutStyleError: assert True else: assert False try: parse("lambda x: x") except CoconutStyleError: assert True else: assert False try: parse("u''") except CoconutStyleError: assert True else: assert False try: parse("def f(x):\\\n pass") except CoconutStyleError: assert True else: assert False try: parse("abc ") except CoconutStyleError: assert True else: assert False try: parse("abc", "file") except CoconutStyleError: assert True else: assert False try: parse("a=1;") except CoconutStyleError: assert True else: assert False setup() try: cmd("-f") except SystemExit: assert True else: assert False try: cmd("-pa .") except SystemExit: assert True else: assert False try: cmd("-n . .") except SystemExit: assert True else: assert False try: parse("f''") except CoconutException: assert True else: assert False setup(target="3.6") assert parse("f''") if CoconutKernel is not None: k = CoconutKernel() exec_result = k.do_execute("abcdefghi = True", False, True, {"two": "1+1"}, True) assert exec_result["status"] == "ok" assert exec_result["user_expressions"]["two"] == 2 assert k.do_is_complete("if abc:")["status"] == "incomplete" assert k.do_is_complete("f(")["status"] == "incomplete" assert k.do_is_complete("abc")["status"] == "complete" inspect_result = k.do_inspect("abcdefghi", 4, 0) assert inspect_result["status"] == "ok" assert inspect_result["found"] assert inspect_result["data"]["text/plain"] complete_result = k.do_complete("abc", 1) assert complete_result["status"] == "ok" assert complete_result["matches"] == ["abcdefghi"] assert complete_result["cursor_start"] == 0 assert complete_result["cursor_end"] == 3 assert not complete_result["metadata"] keyword_complete_result = k.do_complete("ma", 1) assert keyword_complete_result["status"] == "ok" assert set(keyword_complete_result["matches"]) == set(["map", "match"]) assert keyword_complete_result["cursor_start"] == 0 assert keyword_complete_result["cursor_end"] == 2 assert not keyword_complete_result["metadata"] print("<success>")