coconut-develop 3.0.0a0.dev18__tar.gz → 3.0.0a0.dev20__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (83) hide show
  1. {coconut-develop-3.0.0a0.dev18 → coconut-develop-3.0.0a0.dev20}/DOCS.md +1 -1
  2. {coconut-develop-3.0.0a0.dev18 → coconut-develop-3.0.0a0.dev20}/PKG-INFO +8 -8
  3. {coconut-develop-3.0.0a0.dev18 → coconut-develop-3.0.0a0.dev20}/__coconut__/__init__.pyi +2 -1
  4. {coconut-develop-3.0.0a0.dev18 → coconut-develop-3.0.0a0.dev20}/coconut/__coconut__.pyi +1 -1
  5. {coconut-develop-3.0.0a0.dev18 → coconut-develop-3.0.0a0.dev20}/coconut/compiler/grammar.py +1 -1
  6. {coconut-develop-3.0.0a0.dev18 → coconut-develop-3.0.0a0.dev20}/coconut/compiler/header.py +1 -1
  7. {coconut-develop-3.0.0a0.dev18 → coconut-develop-3.0.0a0.dev20}/coconut/compiler/templates/header.py_template +3 -0
  8. {coconut-develop-3.0.0a0.dev18 → coconut-develop-3.0.0a0.dev20}/coconut/constants.py +2 -0
  9. {coconut-develop-3.0.0a0.dev18 → coconut-develop-3.0.0a0.dev20}/coconut/icoconut/coconut/kernel.json +3 -3
  10. {coconut-develop-3.0.0a0.dev18 → coconut-develop-3.0.0a0.dev20}/coconut/integrations.py +16 -14
  11. {coconut-develop-3.0.0a0.dev18 → coconut-develop-3.0.0a0.dev20}/coconut/root.py +1 -1
  12. {coconut-develop-3.0.0a0.dev18 → coconut-develop-3.0.0a0.dev20}/coconut/tests/src/cocotest/agnostic/primary.coco +3 -0
  13. {coconut-develop-3.0.0a0.dev18 → coconut-develop-3.0.0a0.dev20}/CONTRIBUTING.md +0 -0
  14. {coconut-develop-3.0.0a0.dev18 → coconut-develop-3.0.0a0.dev20}/FAQ.md +0 -0
  15. {coconut-develop-3.0.0a0.dev18 → coconut-develop-3.0.0a0.dev20}/HELP.md +0 -0
  16. {coconut-develop-3.0.0a0.dev18 → coconut-develop-3.0.0a0.dev20}/LICENSE.txt +0 -0
  17. {coconut-develop-3.0.0a0.dev18 → coconut-develop-3.0.0a0.dev20}/MANIFEST.in +0 -0
  18. {coconut-develop-3.0.0a0.dev18 → coconut-develop-3.0.0a0.dev20}/README.rst +0 -0
  19. {coconut-develop-3.0.0a0.dev18 → coconut-develop-3.0.0a0.dev20}/__coconut__/__init__.py +0 -0
  20. {coconut-develop-3.0.0a0.dev18 → coconut-develop-3.0.0a0.dev20}/__coconut__/py.typed +0 -0
  21. {coconut-develop-3.0.0a0.dev18 → coconut-develop-3.0.0a0.dev20}/_coconut/__init__.py +0 -0
  22. {coconut-develop-3.0.0a0.dev18 → coconut-develop-3.0.0a0.dev20}/_coconut/__init__.pyi +0 -0
  23. {coconut-develop-3.0.0a0.dev18 → coconut-develop-3.0.0a0.dev20}/_coconut/py.typed +0 -0
  24. {coconut-develop-3.0.0a0.dev18 → coconut-develop-3.0.0a0.dev20}/coconut/__coconut__.py +0 -0
  25. {coconut-develop-3.0.0a0.dev18 → coconut-develop-3.0.0a0.dev20}/coconut/__init__.py +0 -0
  26. {coconut-develop-3.0.0a0.dev18 → coconut-develop-3.0.0a0.dev20}/coconut/__init__.pyi +0 -0
  27. {coconut-develop-3.0.0a0.dev18 → coconut-develop-3.0.0a0.dev20}/coconut/__main__.py +0 -0
  28. {coconut-develop-3.0.0a0.dev18 → coconut-develop-3.0.0a0.dev20}/coconut/_pyparsing.py +0 -0
  29. {coconut-develop-3.0.0a0.dev18 → coconut-develop-3.0.0a0.dev20}/coconut/command/__init__.py +0 -0
  30. {coconut-develop-3.0.0a0.dev18 → coconut-develop-3.0.0a0.dev20}/coconut/command/__init__.pyi +0 -0
  31. {coconut-develop-3.0.0a0.dev18 → coconut-develop-3.0.0a0.dev20}/coconut/command/cli.py +0 -0
  32. {coconut-develop-3.0.0a0.dev18 → coconut-develop-3.0.0a0.dev20}/coconut/command/command.py +0 -0
  33. {coconut-develop-3.0.0a0.dev18 → coconut-develop-3.0.0a0.dev20}/coconut/command/command.pyi +0 -0
  34. {coconut-develop-3.0.0a0.dev18 → coconut-develop-3.0.0a0.dev20}/coconut/command/mypy.py +0 -0
  35. {coconut-develop-3.0.0a0.dev18 → coconut-develop-3.0.0a0.dev20}/coconut/command/resources/zcoconut.pth +0 -0
  36. {coconut-develop-3.0.0a0.dev18 → coconut-develop-3.0.0a0.dev20}/coconut/command/util.py +0 -0
  37. {coconut-develop-3.0.0a0.dev18 → coconut-develop-3.0.0a0.dev20}/coconut/command/watch.py +0 -0
  38. {coconut-develop-3.0.0a0.dev18 → coconut-develop-3.0.0a0.dev20}/coconut/compiler/__init__.py +0 -0
  39. {coconut-develop-3.0.0a0.dev18 → coconut-develop-3.0.0a0.dev20}/coconut/compiler/compiler.py +0 -0
  40. {coconut-develop-3.0.0a0.dev18 → coconut-develop-3.0.0a0.dev20}/coconut/compiler/matching.py +0 -0
  41. {coconut-develop-3.0.0a0.dev18 → coconut-develop-3.0.0a0.dev20}/coconut/compiler/util.py +0 -0
  42. {coconut-develop-3.0.0a0.dev18 → coconut-develop-3.0.0a0.dev20}/coconut/convenience.py +0 -0
  43. {coconut-develop-3.0.0a0.dev18 → coconut-develop-3.0.0a0.dev20}/coconut/convenience.pyi +0 -0
  44. {coconut-develop-3.0.0a0.dev18 → coconut-develop-3.0.0a0.dev20}/coconut/exceptions.py +0 -0
  45. {coconut-develop-3.0.0a0.dev18 → coconut-develop-3.0.0a0.dev20}/coconut/highlighter.py +0 -0
  46. {coconut-develop-3.0.0a0.dev18 → coconut-develop-3.0.0a0.dev20}/coconut/icoconut/__init__.py +0 -0
  47. {coconut-develop-3.0.0a0.dev18 → coconut-develop-3.0.0a0.dev20}/coconut/icoconut/__main__.py +0 -0
  48. {coconut-develop-3.0.0a0.dev18 → coconut-develop-3.0.0a0.dev20}/coconut/icoconut/coconut_py/kernel.json +0 -0
  49. {coconut-develop-3.0.0a0.dev18 → coconut-develop-3.0.0a0.dev20}/coconut/icoconut/coconut_py2/kernel.json +0 -0
  50. {coconut-develop-3.0.0a0.dev18 → coconut-develop-3.0.0a0.dev20}/coconut/icoconut/coconut_py3/kernel.json +0 -0
  51. {coconut-develop-3.0.0a0.dev18 → coconut-develop-3.0.0a0.dev20}/coconut/icoconut/embed.py +0 -0
  52. {coconut-develop-3.0.0a0.dev18 → coconut-develop-3.0.0a0.dev20}/coconut/icoconut/root.py +0 -0
  53. {coconut-develop-3.0.0a0.dev18 → coconut-develop-3.0.0a0.dev20}/coconut/main.py +0 -0
  54. {coconut-develop-3.0.0a0.dev18 → coconut-develop-3.0.0a0.dev20}/coconut/py.typed +0 -0
  55. {coconut-develop-3.0.0a0.dev18 → coconut-develop-3.0.0a0.dev20}/coconut/requirements.py +0 -0
  56. {coconut-develop-3.0.0a0.dev18 → coconut-develop-3.0.0a0.dev20}/coconut/terminal.py +0 -0
  57. {coconut-develop-3.0.0a0.dev18 → coconut-develop-3.0.0a0.dev20}/coconut/tests/__init__.py +0 -0
  58. {coconut-develop-3.0.0a0.dev18 → coconut-develop-3.0.0a0.dev20}/coconut/tests/__main__.py +0 -0
  59. {coconut-develop-3.0.0a0.dev18 → coconut-develop-3.0.0a0.dev20}/coconut/tests/constants_test.py +0 -0
  60. {coconut-develop-3.0.0a0.dev18 → coconut-develop-3.0.0a0.dev20}/coconut/tests/main_test.py +0 -0
  61. {coconut-develop-3.0.0a0.dev18 → coconut-develop-3.0.0a0.dev20}/coconut/tests/src/cocotest/agnostic/__init__.coco +0 -0
  62. {coconut-develop-3.0.0a0.dev18 → coconut-develop-3.0.0a0.dev20}/coconut/tests/src/cocotest/agnostic/main.coco +0 -0
  63. {coconut-develop-3.0.0a0.dev18 → coconut-develop-3.0.0a0.dev20}/coconut/tests/src/cocotest/agnostic/specific.coco +0 -0
  64. {coconut-develop-3.0.0a0.dev18 → coconut-develop-3.0.0a0.dev20}/coconut/tests/src/cocotest/agnostic/suite.coco +0 -0
  65. {coconut-develop-3.0.0a0.dev18 → coconut-develop-3.0.0a0.dev20}/coconut/tests/src/cocotest/agnostic/tutorial.coco +0 -0
  66. {coconut-develop-3.0.0a0.dev18 → coconut-develop-3.0.0a0.dev20}/coconut/tests/src/cocotest/agnostic/util.coco +0 -0
  67. {coconut-develop-3.0.0a0.dev18 → coconut-develop-3.0.0a0.dev20}/coconut/tests/src/cocotest/non_strict/non_strict_test.coco +0 -0
  68. {coconut-develop-3.0.0a0.dev18 → coconut-develop-3.0.0a0.dev20}/coconut/tests/src/cocotest/target_2/py2_test.coco +0 -0
  69. {coconut-develop-3.0.0a0.dev18 → coconut-develop-3.0.0a0.dev20}/coconut/tests/src/cocotest/target_3/py3_test.coco +0 -0
  70. {coconut-develop-3.0.0a0.dev18 → coconut-develop-3.0.0a0.dev20}/coconut/tests/src/cocotest/target_35/py35_test.coco +0 -0
  71. {coconut-develop-3.0.0a0.dev18 → coconut-develop-3.0.0a0.dev20}/coconut/tests/src/cocotest/target_36/py36_test.coco +0 -0
  72. {coconut-develop-3.0.0a0.dev18 → coconut-develop-3.0.0a0.dev20}/coconut/tests/src/cocotest/target_38/py38_test.coco +0 -0
  73. {coconut-develop-3.0.0a0.dev18 → coconut-develop-3.0.0a0.dev20}/coconut/tests/src/cocotest/target_sys/target_sys_test.coco +0 -0
  74. {coconut-develop-3.0.0a0.dev18 → coconut-develop-3.0.0a0.dev20}/coconut/tests/src/extras.coco +0 -0
  75. {coconut-develop-3.0.0a0.dev18 → coconut-develop-3.0.0a0.dev20}/coconut/tests/src/runnable.coco +0 -0
  76. {coconut-develop-3.0.0a0.dev18 → coconut-develop-3.0.0a0.dev20}/coconut/tests/src/runner.coco +0 -0
  77. {coconut-develop-3.0.0a0.dev18 → coconut-develop-3.0.0a0.dev20}/coconut/util.py +0 -0
  78. {coconut-develop-3.0.0a0.dev18 → coconut-develop-3.0.0a0.dev20}/coconut_develop.egg-info/SOURCES.txt +0 -0
  79. {coconut-develop-3.0.0a0.dev18 → coconut-develop-3.0.0a0.dev20}/conf.py +0 -0
  80. {coconut-develop-3.0.0a0.dev18 → coconut-develop-3.0.0a0.dev20}/pyproject.toml +0 -0
  81. {coconut-develop-3.0.0a0.dev18 → coconut-develop-3.0.0a0.dev20}/setup.cfg +0 -0
  82. {coconut-develop-3.0.0a0.dev18 → coconut-develop-3.0.0a0.dev20}/setup.py +0 -0
  83. {coconut-develop-3.0.0a0.dev18 → coconut-develop-3.0.0a0.dev20}/xontrib/coconut.py +0 -0
@@ -450,7 +450,7 @@ user@computer ~ $ $(ls -la) |> .splitlines() |> len
450
450
  30
451
451
  ```
452
452
 
453
- Note that the way that Coconut integrates with `xonsh`, `@(<code>)` syntax will only work with Python code, not Coconut code.
453
+ Note that the way that Coconut integrates with `xonsh`, `@(<code>)` syntax and the `execx` command will only work with Python code, not Coconut code.
454
454
 
455
455
  Additionally, Coconut will only compile individual commands—Coconut will not touch the `.xonshrc` or any other `.xsh` files.
456
456
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: coconut-develop
3
- Version: 3.0.0a0.dev18
3
+ Version: 3.0.0a0.dev20
4
4
  Summary: Simple, elegant, Pythonic functional programming.
5
5
  Home-page: http://coconut-lang.org
6
6
  Author: Evan Hubinger
@@ -125,14 +125,14 @@ Classifier: Framework :: IPython
125
125
  Classifier: Framework :: Jupyter
126
126
  Classifier: Typing :: Typed
127
127
  Provides-Extra: kernel
128
- Provides-Extra: all
129
- Provides-Extra: mypy
128
+ Provides-Extra: watch
130
129
  Provides-Extra: jobs
131
- Provides-Extra: docs
130
+ Provides-Extra: mypy
131
+ Provides-Extra: backports
132
132
  Provides-Extra: xonsh
133
- Provides-Extra: watch
133
+ Provides-Extra: jupyter
134
+ Provides-Extra: all
135
+ Provides-Extra: ipython
136
+ Provides-Extra: docs
134
137
  Provides-Extra: tests
135
- Provides-Extra: backports
136
138
  Provides-Extra: dev
137
- Provides-Extra: ipython
138
- Provides-Extra: jupyter
@@ -874,7 +874,8 @@ def _coconut_bool_or(a: _t.Literal[False], b: _T) -> _T: ...
874
874
  def _coconut_bool_or(a: _T, b: _U) -> _t.Union[_T, _U]: ...
875
875
 
876
876
 
877
- def _coconut_not_in(a: _T, b: _t.Sequence[_T]) -> bool: ...
877
+ def _coconut_in(a: _T, b: _t.Sequence[_T]) -> bool: ...
878
+ _coconut_not_in = _coconut_in
878
879
 
879
880
 
880
881
  @_t.overload
@@ -1,2 +1,2 @@
1
1
  from __coconut__ import *
2
- from __coconut__ import _coconut_tail_call, _coconut_tco, _coconut_call_set_names, _coconut_handle_cls_kwargs, _coconut_handle_cls_stargs, _namedtuple_of, _coconut, _coconut_super, _coconut_Expected, _coconut_MatchError, _coconut_iter_getitem, _coconut_base_compose, _coconut_forward_compose, _coconut_back_compose, _coconut_forward_star_compose, _coconut_back_star_compose, _coconut_forward_dubstar_compose, _coconut_back_dubstar_compose, _coconut_pipe, _coconut_star_pipe, _coconut_dubstar_pipe, _coconut_back_pipe, _coconut_back_star_pipe, _coconut_back_dubstar_pipe, _coconut_none_pipe, _coconut_none_star_pipe, _coconut_none_dubstar_pipe, _coconut_bool_and, _coconut_bool_or, _coconut_none_coalesce, _coconut_minus, _coconut_map, _coconut_partial, _coconut_get_function_match_error, _coconut_base_pattern_func, _coconut_addpattern, _coconut_sentinel, _coconut_assert, _coconut_raise, _coconut_mark_as_match, _coconut_reiterable, _coconut_self_match_types, _coconut_dict_merge, _coconut_exec, _coconut_comma_op, _coconut_multi_dim_arr, _coconut_mk_anon_namedtuple, _coconut_matmul, _coconut_py_str, _coconut_flatten, _coconut_multiset, _coconut_back_none_pipe, _coconut_back_none_star_pipe, _coconut_back_none_dubstar_pipe, _coconut_forward_none_compose, _coconut_back_none_compose, _coconut_forward_none_star_compose, _coconut_back_none_star_compose, _coconut_forward_none_dubstar_compose, _coconut_back_none_dubstar_compose, _coconut_call_or_coefficient, _coconut_not_in
2
+ from __coconut__ import _coconut_tail_call, _coconut_tco, _coconut_call_set_names, _coconut_handle_cls_kwargs, _coconut_handle_cls_stargs, _namedtuple_of, _coconut, _coconut_super, _coconut_Expected, _coconut_MatchError, _coconut_iter_getitem, _coconut_base_compose, _coconut_forward_compose, _coconut_back_compose, _coconut_forward_star_compose, _coconut_back_star_compose, _coconut_forward_dubstar_compose, _coconut_back_dubstar_compose, _coconut_pipe, _coconut_star_pipe, _coconut_dubstar_pipe, _coconut_back_pipe, _coconut_back_star_pipe, _coconut_back_dubstar_pipe, _coconut_none_pipe, _coconut_none_star_pipe, _coconut_none_dubstar_pipe, _coconut_bool_and, _coconut_bool_or, _coconut_none_coalesce, _coconut_minus, _coconut_map, _coconut_partial, _coconut_get_function_match_error, _coconut_base_pattern_func, _coconut_addpattern, _coconut_sentinel, _coconut_assert, _coconut_raise, _coconut_mark_as_match, _coconut_reiterable, _coconut_self_match_types, _coconut_dict_merge, _coconut_exec, _coconut_comma_op, _coconut_multi_dim_arr, _coconut_mk_anon_namedtuple, _coconut_matmul, _coconut_py_str, _coconut_flatten, _coconut_multiset, _coconut_back_none_pipe, _coconut_back_none_star_pipe, _coconut_back_none_dubstar_pipe, _coconut_forward_none_compose, _coconut_back_none_compose, _coconut_forward_none_star_compose, _coconut_back_none_star_compose, _coconut_forward_none_dubstar_compose, _coconut_back_none_dubstar_compose, _coconut_call_or_coefficient, _coconut_in, _coconut_not_in
@@ -1033,7 +1033,7 @@ class Grammar(object):
1033
1033
  # must come after is not / not in
1034
1034
  | fixto(keyword("not"), "_coconut.operator.not_")
1035
1035
  | fixto(keyword("is"), "_coconut.operator.is_")
1036
- | fixto(keyword("in"), "_coconut.operator.contains")
1036
+ | fixto(keyword("in"), "_coconut_in")
1037
1037
  )
1038
1038
  partialable_op = base_op_item | infix_op
1039
1039
  partial_op_item_tokens = (
@@ -541,7 +541,7 @@ for _coconut_varname in dir(MatchError):
541
541
  # (extra_format_dict is to keep indentation levels matching)
542
542
  extra_format_dict = dict(
543
543
  # when anything is added to this list it must also be added to *both* __coconut__ stub files
544
- underscore_imports="{tco_comma}{call_set_names_comma}{handle_cls_args_comma}_namedtuple_of, _coconut, _coconut_super, _coconut_Expected, _coconut_MatchError, _coconut_iter_getitem, _coconut_base_compose, _coconut_forward_compose, _coconut_back_compose, _coconut_forward_star_compose, _coconut_back_star_compose, _coconut_forward_dubstar_compose, _coconut_back_dubstar_compose, _coconut_pipe, _coconut_star_pipe, _coconut_dubstar_pipe, _coconut_back_pipe, _coconut_back_star_pipe, _coconut_back_dubstar_pipe, _coconut_none_pipe, _coconut_none_star_pipe, _coconut_none_dubstar_pipe, _coconut_bool_and, _coconut_bool_or, _coconut_none_coalesce, _coconut_minus, _coconut_map, _coconut_partial, _coconut_get_function_match_error, _coconut_base_pattern_func, _coconut_addpattern, _coconut_sentinel, _coconut_assert, _coconut_raise, _coconut_mark_as_match, _coconut_reiterable, _coconut_self_match_types, _coconut_dict_merge, _coconut_exec, _coconut_comma_op, _coconut_multi_dim_arr, _coconut_mk_anon_namedtuple, _coconut_matmul, _coconut_py_str, _coconut_flatten, _coconut_multiset, _coconut_back_none_pipe, _coconut_back_none_star_pipe, _coconut_back_none_dubstar_pipe, _coconut_forward_none_compose, _coconut_back_none_compose, _coconut_forward_none_star_compose, _coconut_back_none_star_compose, _coconut_forward_none_dubstar_compose, _coconut_back_none_dubstar_compose, _coconut_call_or_coefficient, _coconut_not_in".format(**format_dict),
544
+ underscore_imports="{tco_comma}{call_set_names_comma}{handle_cls_args_comma}_namedtuple_of, _coconut, _coconut_super, _coconut_Expected, _coconut_MatchError, _coconut_iter_getitem, _coconut_base_compose, _coconut_forward_compose, _coconut_back_compose, _coconut_forward_star_compose, _coconut_back_star_compose, _coconut_forward_dubstar_compose, _coconut_back_dubstar_compose, _coconut_pipe, _coconut_star_pipe, _coconut_dubstar_pipe, _coconut_back_pipe, _coconut_back_star_pipe, _coconut_back_dubstar_pipe, _coconut_none_pipe, _coconut_none_star_pipe, _coconut_none_dubstar_pipe, _coconut_bool_and, _coconut_bool_or, _coconut_none_coalesce, _coconut_minus, _coconut_map, _coconut_partial, _coconut_get_function_match_error, _coconut_base_pattern_func, _coconut_addpattern, _coconut_sentinel, _coconut_assert, _coconut_raise, _coconut_mark_as_match, _coconut_reiterable, _coconut_self_match_types, _coconut_dict_merge, _coconut_exec, _coconut_comma_op, _coconut_multi_dim_arr, _coconut_mk_anon_namedtuple, _coconut_matmul, _coconut_py_str, _coconut_flatten, _coconut_multiset, _coconut_back_none_pipe, _coconut_back_none_star_pipe, _coconut_back_none_dubstar_pipe, _coconut_forward_none_compose, _coconut_back_none_compose, _coconut_forward_none_star_compose, _coconut_back_none_star_compose, _coconut_forward_none_dubstar_compose, _coconut_back_none_dubstar_compose, _coconut_call_or_coefficient, _coconut_in, _coconut_not_in".format(**format_dict),
545
545
  import_typing=pycondition(
546
546
  (3, 5),
547
547
  if_ge="import typing",
@@ -469,6 +469,9 @@ def _coconut_bool_and(a, b):
469
469
  def _coconut_bool_or(a, b):
470
470
  """Boolean or operator (or). Equivalent to (a, b) -> a or b."""
471
471
  return a or b
472
+ def _coconut_in(a, b):
473
+ """Containment operator (in). Equivalent to (a, b) -> a in b."""
474
+ return a in b
472
475
  def _coconut_not_in(a, b):
473
476
  """Negative containment operator (not in). Equivalent to (a, b) -> a not in b."""
474
477
  return a not in b
@@ -1112,6 +1112,8 @@ all_keywords = keyword_vars + const_vars + reserved_vars
1112
1112
 
1113
1113
  conda_build_env_var = "CONDA_BUILD"
1114
1114
 
1115
+ disabled_xonsh_modes = ("exec", "eval")
1116
+
1115
1117
  # -----------------------------------------------------------------------------------------------------------------------
1116
1118
  # DOCUMENTATION CONSTANTS:
1117
1119
  # -----------------------------------------------------------------------------------------------------------------------
@@ -1,11 +1,11 @@
1
1
  {
2
- "display_name": "Coconut",
3
- "language": "coconut",
4
2
  "argv": [
5
3
  "python",
6
4
  "-m",
7
5
  "coconut.icoconut",
8
6
  "-f",
9
7
  "{connection_file}"
10
- ]
8
+ ],
9
+ "display_name": "Coconut",
10
+ "language": "coconut"
11
11
  }
@@ -21,7 +21,10 @@ from coconut.root import * # NOQA
21
21
 
22
22
  from types import MethodType
23
23
 
24
- from coconut.constants import coconut_kernel_kwargs
24
+ from coconut.constants import (
25
+ coconut_kernel_kwargs,
26
+ disabled_xonsh_modes,
27
+ )
25
28
 
26
29
  # -----------------------------------------------------------------------------------------------------------------------
27
30
  # IPYTHON:
@@ -88,9 +91,7 @@ class CoconutXontribLoader(object):
88
91
  """Implements Coconut's _load_xontrib_."""
89
92
  compiler = None
90
93
  runner = None
91
-
92
- def __init__(self):
93
- self.timing_info = []
94
+ timing_info = []
94
95
 
95
96
  def __call__(self, xsh, **kwargs):
96
97
  # hide imports to avoid circular dependencies
@@ -111,16 +112,17 @@ class CoconutXontribLoader(object):
111
112
 
112
113
  self.runner.update_vars(xsh.ctx)
113
114
 
114
- def new_parse(execer, s, *args, **kwargs):
115
+ def new_parse(execer, code, mode="exec", *args, **kwargs):
115
116
  """Coconut-aware version of xonsh's _parse."""
116
- parse_start_time = get_clock_time()
117
- try:
118
- s = self.compiler.parse_xonsh(s, keep_state=True)
119
- except CoconutException as err:
120
- err_str = format_error(err).splitlines()[0]
121
- s += " #" + err_str
122
- self.timing_info.append(("parse", get_clock_time() - parse_start_time))
123
- return execer.__class__.parse(execer, s, *args, **kwargs)
117
+ if mode not in disabled_xonsh_modes:
118
+ parse_start_time = get_clock_time()
119
+ try:
120
+ code = self.compiler.parse_xonsh(code, keep_state=True)
121
+ except CoconutException as err:
122
+ err_str = format_error(err).splitlines()[0]
123
+ code += " #" + err_str
124
+ self.timing_info.append(("parse", get_clock_time() - parse_start_time))
125
+ return execer.__class__.parse(execer, code, mode=mode, *args, **kwargs)
124
126
 
125
127
  main_parser = xsh.execer.parser
126
128
  main_parser._coconut_old_parse = main_parser.parse
@@ -140,7 +142,7 @@ class CoconutXontribLoader(object):
140
142
 
141
143
  main_parser = xsh.execer.parser
142
144
  if not hasattr(main_parser, "_coconut_old_parse"):
143
- raise CoconutException("attempting to unldoad Coconut xontrib but it was never loaded")
145
+ raise CoconutException("attempting to unload Coconut xontrib but it was never loaded")
144
146
  main_parser.parser = main_parser._coconut_old_parse
145
147
 
146
148
  ctx_parser = xsh.execer.ctxtransformer.parser
@@ -26,7 +26,7 @@ import sys as _coconut_sys
26
26
  VERSION = "3.0.0"
27
27
  VERSION_NAME = None
28
28
  # False for release, int >= 1 for develop
29
- DEVELOP = 18
29
+ DEVELOP = 20
30
30
  ALPHA = True # for pre releases rather than post releases
31
31
 
32
32
  # -----------------------------------------------------------------------------------------------------------------------
@@ -1580,4 +1580,7 @@ def primary_test() -> bool:
1580
1580
  assert not a_multiset.values() `isinstance` list
1581
1581
  assert not a_multiset.items() `isinstance` list
1582
1582
  assert len(a_multiset.keys()) == len(a_multiset.values()) == len(a_multiset.items()) == 2
1583
+ assert (in)(1, [1, 2])
1584
+ assert not (1 not in .)([1, 2])
1585
+ assert not (in)([[]], [])
1583
1586
  return True