coconut-develop 3.0.4.post0.dev21__tar.gz → 3.0.4.post0.dev22__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 (89) hide show
  1. {coconut-develop-3.0.4.post0.dev21 → coconut-develop-3.0.4.post0.dev22}/DOCS.md +9 -3
  2. {coconut-develop-3.0.4.post0.dev21 → coconut-develop-3.0.4.post0.dev22}/PKG-INFO +150 -142
  3. {coconut-develop-3.0.4.post0.dev21 → coconut-develop-3.0.4.post0.dev22}/coconut/command/util.py +6 -1
  4. {coconut-develop-3.0.4.post0.dev21 → coconut-develop-3.0.4.post0.dev22}/coconut/compiler/matching.py +71 -26
  5. {coconut-develop-3.0.4.post0.dev21 → coconut-develop-3.0.4.post0.dev22}/coconut/constants.py +11 -9
  6. {coconut-develop-3.0.4.post0.dev21 → coconut-develop-3.0.4.post0.dev22}/coconut/root.py +1 -1
  7. {coconut-develop-3.0.4.post0.dev21 → coconut-develop-3.0.4.post0.dev22}/coconut/tests/main_test.py +6 -6
  8. {coconut-develop-3.0.4.post0.dev21 → coconut-develop-3.0.4.post0.dev22}/coconut/tests/src/cocotest/agnostic/primary_2.coco +3 -0
  9. {coconut-develop-3.0.4.post0.dev21 → coconut-develop-3.0.4.post0.dev22}/CONTRIBUTING.md +0 -0
  10. {coconut-develop-3.0.4.post0.dev21 → coconut-develop-3.0.4.post0.dev22}/FAQ.md +0 -0
  11. {coconut-develop-3.0.4.post0.dev21 → coconut-develop-3.0.4.post0.dev22}/HELP.md +0 -0
  12. {coconut-develop-3.0.4.post0.dev21 → coconut-develop-3.0.4.post0.dev22}/LICENSE.txt +0 -0
  13. {coconut-develop-3.0.4.post0.dev21 → coconut-develop-3.0.4.post0.dev22}/MANIFEST.in +0 -0
  14. {coconut-develop-3.0.4.post0.dev21 → coconut-develop-3.0.4.post0.dev22}/README.rst +0 -0
  15. {coconut-develop-3.0.4.post0.dev21 → coconut-develop-3.0.4.post0.dev22}/__coconut__/__init__.py +0 -0
  16. {coconut-develop-3.0.4.post0.dev21 → coconut-develop-3.0.4.post0.dev22}/__coconut__/__init__.pyi +0 -0
  17. {coconut-develop-3.0.4.post0.dev21 → coconut-develop-3.0.4.post0.dev22}/__coconut__/py.typed +0 -0
  18. {coconut-develop-3.0.4.post0.dev21 → coconut-develop-3.0.4.post0.dev22}/_coconut/__init__.py +0 -0
  19. {coconut-develop-3.0.4.post0.dev21 → coconut-develop-3.0.4.post0.dev22}/_coconut/__init__.pyi +0 -0
  20. {coconut-develop-3.0.4.post0.dev21 → coconut-develop-3.0.4.post0.dev22}/_coconut/py.typed +0 -0
  21. {coconut-develop-3.0.4.post0.dev21 → coconut-develop-3.0.4.post0.dev22}/coconut/__coconut__.py +0 -0
  22. {coconut-develop-3.0.4.post0.dev21 → coconut-develop-3.0.4.post0.dev22}/coconut/__coconut__.pyi +0 -0
  23. {coconut-develop-3.0.4.post0.dev21 → coconut-develop-3.0.4.post0.dev22}/coconut/__init__.py +0 -0
  24. {coconut-develop-3.0.4.post0.dev21 → coconut-develop-3.0.4.post0.dev22}/coconut/__init__.pyi +0 -0
  25. {coconut-develop-3.0.4.post0.dev21 → coconut-develop-3.0.4.post0.dev22}/coconut/__main__.py +0 -0
  26. {coconut-develop-3.0.4.post0.dev21 → coconut-develop-3.0.4.post0.dev22}/coconut/_pyparsing.py +0 -0
  27. {coconut-develop-3.0.4.post0.dev21 → coconut-develop-3.0.4.post0.dev22}/coconut/api.py +0 -0
  28. {coconut-develop-3.0.4.post0.dev21 → coconut-develop-3.0.4.post0.dev22}/coconut/api.pyi +0 -0
  29. {coconut-develop-3.0.4.post0.dev21 → coconut-develop-3.0.4.post0.dev22}/coconut/command/__init__.py +0 -0
  30. {coconut-develop-3.0.4.post0.dev21 → coconut-develop-3.0.4.post0.dev22}/coconut/command/__init__.pyi +0 -0
  31. {coconut-develop-3.0.4.post0.dev21 → coconut-develop-3.0.4.post0.dev22}/coconut/command/cli.py +0 -0
  32. {coconut-develop-3.0.4.post0.dev21 → coconut-develop-3.0.4.post0.dev22}/coconut/command/command.py +0 -0
  33. {coconut-develop-3.0.4.post0.dev21 → coconut-develop-3.0.4.post0.dev22}/coconut/command/command.pyi +0 -0
  34. {coconut-develop-3.0.4.post0.dev21 → coconut-develop-3.0.4.post0.dev22}/coconut/command/mypy.py +0 -0
  35. {coconut-develop-3.0.4.post0.dev21 → coconut-develop-3.0.4.post0.dev22}/coconut/command/resources/zcoconut.pth +0 -0
  36. {coconut-develop-3.0.4.post0.dev21 → coconut-develop-3.0.4.post0.dev22}/coconut/command/watch.py +0 -0
  37. {coconut-develop-3.0.4.post0.dev21 → coconut-develop-3.0.4.post0.dev22}/coconut/compiler/__init__.py +0 -0
  38. {coconut-develop-3.0.4.post0.dev21 → coconut-develop-3.0.4.post0.dev22}/coconut/compiler/compiler.py +0 -0
  39. {coconut-develop-3.0.4.post0.dev21 → coconut-develop-3.0.4.post0.dev22}/coconut/compiler/grammar.py +0 -0
  40. {coconut-develop-3.0.4.post0.dev21 → coconut-develop-3.0.4.post0.dev22}/coconut/compiler/header.py +0 -0
  41. {coconut-develop-3.0.4.post0.dev21 → coconut-develop-3.0.4.post0.dev22}/coconut/compiler/templates/header.py_template +0 -0
  42. {coconut-develop-3.0.4.post0.dev21 → coconut-develop-3.0.4.post0.dev22}/coconut/compiler/util.py +0 -0
  43. {coconut-develop-3.0.4.post0.dev21 → coconut-develop-3.0.4.post0.dev22}/coconut/convenience.py +0 -0
  44. {coconut-develop-3.0.4.post0.dev21 → coconut-develop-3.0.4.post0.dev22}/coconut/convenience.pyi +0 -0
  45. {coconut-develop-3.0.4.post0.dev21 → coconut-develop-3.0.4.post0.dev22}/coconut/exceptions.py +0 -0
  46. {coconut-develop-3.0.4.post0.dev21 → coconut-develop-3.0.4.post0.dev22}/coconut/highlighter.py +0 -0
  47. {coconut-develop-3.0.4.post0.dev21 → coconut-develop-3.0.4.post0.dev22}/coconut/icoconut/__init__.py +0 -0
  48. {coconut-develop-3.0.4.post0.dev21 → coconut-develop-3.0.4.post0.dev22}/coconut/icoconut/__main__.py +0 -0
  49. {coconut-develop-3.0.4.post0.dev21 → coconut-develop-3.0.4.post0.dev22}/coconut/icoconut/coconut/kernel.json +0 -0
  50. {coconut-develop-3.0.4.post0.dev21 → coconut-develop-3.0.4.post0.dev22}/coconut/icoconut/coconut_py/kernel.json +0 -0
  51. {coconut-develop-3.0.4.post0.dev21 → coconut-develop-3.0.4.post0.dev22}/coconut/icoconut/coconut_py2/kernel.json +0 -0
  52. {coconut-develop-3.0.4.post0.dev21 → coconut-develop-3.0.4.post0.dev22}/coconut/icoconut/coconut_py3/kernel.json +0 -0
  53. {coconut-develop-3.0.4.post0.dev21 → coconut-develop-3.0.4.post0.dev22}/coconut/icoconut/embed.py +0 -0
  54. {coconut-develop-3.0.4.post0.dev21 → coconut-develop-3.0.4.post0.dev22}/coconut/icoconut/root.py +0 -0
  55. {coconut-develop-3.0.4.post0.dev21 → coconut-develop-3.0.4.post0.dev22}/coconut/integrations.py +0 -0
  56. {coconut-develop-3.0.4.post0.dev21 → coconut-develop-3.0.4.post0.dev22}/coconut/main.py +0 -0
  57. {coconut-develop-3.0.4.post0.dev21 → coconut-develop-3.0.4.post0.dev22}/coconut/py.typed +0 -0
  58. {coconut-develop-3.0.4.post0.dev21 → coconut-develop-3.0.4.post0.dev22}/coconut/requirements.py +0 -0
  59. {coconut-develop-3.0.4.post0.dev21 → coconut-develop-3.0.4.post0.dev22}/coconut/terminal.py +0 -0
  60. {coconut-develop-3.0.4.post0.dev21 → coconut-develop-3.0.4.post0.dev22}/coconut/tests/__init__.py +0 -0
  61. {coconut-develop-3.0.4.post0.dev21 → coconut-develop-3.0.4.post0.dev22}/coconut/tests/__main__.py +0 -0
  62. {coconut-develop-3.0.4.post0.dev21 → coconut-develop-3.0.4.post0.dev22}/coconut/tests/constants_test.py +0 -0
  63. {coconut-develop-3.0.4.post0.dev21 → coconut-develop-3.0.4.post0.dev22}/coconut/tests/src/cocotest/agnostic/__init__.coco +0 -0
  64. {coconut-develop-3.0.4.post0.dev21 → coconut-develop-3.0.4.post0.dev22}/coconut/tests/src/cocotest/agnostic/__main__.coco +0 -0
  65. {coconut-develop-3.0.4.post0.dev21 → coconut-develop-3.0.4.post0.dev22}/coconut/tests/src/cocotest/agnostic/main.coco +0 -0
  66. {coconut-develop-3.0.4.post0.dev21 → coconut-develop-3.0.4.post0.dev22}/coconut/tests/src/cocotest/agnostic/primary_1.coco +0 -0
  67. {coconut-develop-3.0.4.post0.dev21 → coconut-develop-3.0.4.post0.dev22}/coconut/tests/src/cocotest/agnostic/specific.coco +0 -0
  68. {coconut-develop-3.0.4.post0.dev21 → coconut-develop-3.0.4.post0.dev22}/coconut/tests/src/cocotest/agnostic/suite.coco +0 -0
  69. {coconut-develop-3.0.4.post0.dev21 → coconut-develop-3.0.4.post0.dev22}/coconut/tests/src/cocotest/agnostic/tutorial.coco +0 -0
  70. {coconut-develop-3.0.4.post0.dev21 → coconut-develop-3.0.4.post0.dev22}/coconut/tests/src/cocotest/agnostic/util.coco +0 -0
  71. {coconut-develop-3.0.4.post0.dev21 → coconut-develop-3.0.4.post0.dev22}/coconut/tests/src/cocotest/non_strict/non_strict_test.coco +0 -0
  72. {coconut-develop-3.0.4.post0.dev21 → coconut-develop-3.0.4.post0.dev22}/coconut/tests/src/cocotest/target_2/py2_test.coco +0 -0
  73. {coconut-develop-3.0.4.post0.dev21 → coconut-develop-3.0.4.post0.dev22}/coconut/tests/src/cocotest/target_3/py3_test.coco +0 -0
  74. {coconut-develop-3.0.4.post0.dev21 → coconut-develop-3.0.4.post0.dev22}/coconut/tests/src/cocotest/target_311/py311_test.coco +0 -0
  75. {coconut-develop-3.0.4.post0.dev21 → coconut-develop-3.0.4.post0.dev22}/coconut/tests/src/cocotest/target_35/py35_test.coco +0 -0
  76. {coconut-develop-3.0.4.post0.dev21 → coconut-develop-3.0.4.post0.dev22}/coconut/tests/src/cocotest/target_36/py36_test.coco +0 -0
  77. {coconut-develop-3.0.4.post0.dev21 → coconut-develop-3.0.4.post0.dev22}/coconut/tests/src/cocotest/target_38/py38_test.coco +0 -0
  78. {coconut-develop-3.0.4.post0.dev21 → coconut-develop-3.0.4.post0.dev22}/coconut/tests/src/cocotest/target_sys/target_sys_test.coco +0 -0
  79. {coconut-develop-3.0.4.post0.dev21 → coconut-develop-3.0.4.post0.dev22}/coconut/tests/src/extras.coco +0 -0
  80. {coconut-develop-3.0.4.post0.dev21 → coconut-develop-3.0.4.post0.dev22}/coconut/tests/src/importable.coco +0 -0
  81. {coconut-develop-3.0.4.post0.dev21 → coconut-develop-3.0.4.post0.dev22}/coconut/tests/src/runnable.coco +0 -0
  82. {coconut-develop-3.0.4.post0.dev21 → coconut-develop-3.0.4.post0.dev22}/coconut/tests/src/runner.coco +0 -0
  83. {coconut-develop-3.0.4.post0.dev21 → coconut-develop-3.0.4.post0.dev22}/coconut/util.py +0 -0
  84. {coconut-develop-3.0.4.post0.dev21 → coconut-develop-3.0.4.post0.dev22}/coconut_develop.egg-info/SOURCES.txt +0 -0
  85. {coconut-develop-3.0.4.post0.dev21 → coconut-develop-3.0.4.post0.dev22}/conf.py +0 -0
  86. {coconut-develop-3.0.4.post0.dev21 → coconut-develop-3.0.4.post0.dev22}/pyproject.toml +0 -0
  87. {coconut-develop-3.0.4.post0.dev21 → coconut-develop-3.0.4.post0.dev22}/setup.cfg +0 -0
  88. {coconut-develop-3.0.4.post0.dev21 → coconut-develop-3.0.4.post0.dev22}/setup.py +0 -0
  89. {coconut-develop-3.0.4.post0.dev21 → coconut-develop-3.0.4.post0.dev22}/xontrib/coconut.py +0 -0
@@ -1149,11 +1149,17 @@ depth: 1
1149
1149
 
1150
1150
  ### `match`
1151
1151
 
1152
- Coconut provides fully-featured, functional pattern-matching through its `match` statements.
1152
+ Coconut provides fully-featured, functional pattern-matching through its `match` statements. Coconut `match` syntax is a strict superset of [Python's `match` syntax](https://peps.python.org/pep-0636/).
1153
+
1154
+ _Note: In describing Coconut's pattern-matching syntax, this section focuses on `match` statements, but Coconut's pattern-matching can also be used in many other places, such as [pattern-matching function definition](#pattern-matching-functions), [`case` statements](#case), [destructuring assignment](#destructuring-assignment), [`match data`](#match-data), and [`match for`](#match-for)._
1153
1155
 
1154
1156
  ##### Overview
1155
1157
 
1156
- Match statements follow the basic syntax `match <pattern> in <value>`. The match statement will attempt to match the value against the pattern, and if successful, bind any variables in the pattern to whatever is in the same position in the value, and execute the code below the match statement. Match statements also support, in their basic syntax, an `if <cond>` that will check the condition after executing the match before executing the code below, and an `else` statement afterwards that will only be executed if the `match` statement is not. What is allowed in the match statement's pattern has no equivalent in Python, and thus the specifications below are provided to explain it.
1158
+ Match statements follow the basic syntax `match <pattern> in <value>`. The match statement will attempt to match the value against the pattern, and if successful, bind any variables in the pattern to whatever is in the same position in the value, and execute the code below the match statement.
1159
+
1160
+ Match statements also support, in their basic syntax, an `if <cond>` that will check the condition after executing the match before executing the code below, and an `else` statement afterwards that will only be executed if the `match` statement is not.
1161
+
1162
+ All pattern-matching in Coconut is atomic, such that no assignments will be executed unless the whole match succeeds.
1157
1163
 
1158
1164
  ##### Syntax Specification
1159
1165
 
@@ -2494,7 +2500,7 @@ If `<pattern>` has a variable name (via any variable binding that binds the enti
2494
2500
 
2495
2501
  In addition to supporting pattern-matching in their arguments, pattern-matching function definitions also have a couple of notable differences compared to Python functions. Specifically:
2496
2502
  - If pattern-matching function definition fails, it will raise a [`MatchError`](#matcherror) (just like [destructuring assignment](#destructuring-assignment)) instead of a `TypeError`.
2497
- - All defaults in pattern-matching function definition are late-bound rather than early-bound. Thus, `match def f(xs=[]) = xs` will instantiate a new list for each call where `xs` is not given, unlike `def f(xs=[]) = xs`, which will use the same list for all calls where `xs` is unspecified.
2503
+ - All defaults in pattern-matching function definition are late-bound rather than early-bound. Thus, `match def f(xs=[]) = xs` will instantiate a new list for each call where `xs` is not given, unlike `def f(xs=[]) = xs`, which will use the same list for all calls where `xs` is unspecified. This also allows defaults for later arguments to be specified in terms of matched values from earlier arguments, as in `match def f(x, y=x) = (x, y)`.
2498
2504
 
2499
2505
  Pattern-matching function definition can also be combined with `async` functions, [`copyclosure` functions](#copyclosure-functions), [`yield` functions](#explicit-generators), [infix function definition](#infix-functions), and [assignment function syntax](#assignment-functions). The various keywords in front of the `def` can be put in any order.
2500
2506
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: coconut-develop
3
- Version: 3.0.4.post0.dev21
3
+ Version: 3.0.4.post0.dev22
4
4
  Summary: Simple, elegant, Pythonic functional programming.
5
5
  Home-page: http://coconut-lang.org
6
6
  Author: Evan Hubinger
@@ -48,7 +48,7 @@ Requires-Dist: ipython>=5.4; python_version < "3" and extra == "kernel"
48
48
  Requires-Dist: ipython<7.10,>=7.9; (python_version >= "3" and python_version < "3.7") and extra == "kernel"
49
49
  Requires-Dist: ipython>=7.34; (python_version >= "3.7" and python_version < "3.8") and extra == "kernel"
50
50
  Requires-Dist: ipython>=8.12; (python_version >= "3.8" and python_version < "3.9") and extra == "kernel"
51
- Requires-Dist: ipython>=8.18; python_version >= "3.9" and extra == "kernel"
51
+ Requires-Dist: ipython>=8.22; python_version >= "3.9" and extra == "kernel"
52
52
  Requires-Dist: ipykernel>=4.10; python_version < "3" and extra == "kernel"
53
53
  Requires-Dist: ipykernel>=5.5; (python_version >= "3" and python_version < "3.8") and extra == "kernel"
54
54
  Requires-Dist: ipykernel>=6; python_version >= "3.8" and extra == "kernel"
@@ -61,220 +61,228 @@ Requires-Dist: pywinpty<0.6,>=0.5; (python_version < "3" and os_name == "nt") an
61
61
  Provides-Extra: watch
62
62
  Requires-Dist: watchdog>=0.10; extra == "watch"
63
63
  Provides-Extra: mypy
64
- Requires-Dist: mypy[python2]>=1.7; extra == "mypy"
64
+ Requires-Dist: mypy[python2]>=1.8; extra == "mypy"
65
65
  Requires-Dist: types-backports>=0.1; extra == "mypy"
66
66
  Requires-Dist: typing>=3.10; python_version < "3.5" and extra == "mypy"
67
67
  Provides-Extra: xonsh
68
68
  Requires-Dist: xonsh>=0.9; python_version < "3.6" and extra == "xonsh"
69
69
  Requires-Dist: xonsh>=0.11; (python_version >= "3.6" and python_version < "3.8") and extra == "xonsh"
70
- Requires-Dist: xonsh>=0.14; python_version >= "3.8" and extra == "xonsh"
70
+ Requires-Dist: xonsh>=0.15; python_version >= "3.8" and extra == "xonsh"
71
71
  Provides-Extra: numpy
72
72
  Requires-Dist: numpy>=1.16; (python_version < "3" and platform_python_implementation == "CPython") and extra == "numpy"
73
73
  Requires-Dist: numpy>=1.18; (python_version >= "3.4" and python_version < "3.9") and extra == "numpy"
74
74
  Requires-Dist: numpy>=1.26; python_version >= "3.9" and extra == "numpy"
75
75
  Requires-Dist: pandas>=1; python_version >= "3.6" and extra == "numpy"
76
- Requires-Dist: xarray>=2023; python_version >= "3.9" and extra == "numpy"
76
+ Requires-Dist: xarray>=2024; python_version >= "3.9" and extra == "numpy"
77
77
  Provides-Extra: jupyter
78
+ Requires-Dist: ipykernel>=5.5; (python_version >= "3" and python_version < "3.8") and extra == "jupyter"
79
+ Requires-Dist: ipykernel>=6; python_version >= "3.8" and extra == "jupyter"
78
80
  Requires-Dist: ipython>=5.4; python_version < "3" and extra == "jupyter"
81
+ Requires-Dist: jupyter-console>=6.6; python_version >= "3.7" and extra == "jupyter"
82
+ Requires-Dist: jupyter>=1.0; extra == "jupyter"
79
83
  Requires-Dist: ipython<7.10,>=7.9; (python_version >= "3" and python_version < "3.7") and extra == "jupyter"
84
+ Requires-Dist: jupyter-client<6.1.13,>=6.1.12; (python_version >= "3.5" and python_version < "3.6") and extra == "jupyter"
85
+ Requires-Dist: ipython>=8.22; python_version >= "3.9" and extra == "jupyter"
80
86
  Requires-Dist: ipython>=7.34; (python_version >= "3.7" and python_version < "3.8") and extra == "jupyter"
87
+ Requires-Dist: jupyter-console>=5.2; python_version < "3.5" and extra == "jupyter"
81
88
  Requires-Dist: ipython>=8.12; (python_version >= "3.8" and python_version < "3.9") and extra == "jupyter"
82
- Requires-Dist: ipython>=8.18; python_version >= "3.9" and extra == "jupyter"
83
- Requires-Dist: ipykernel>=4.10; python_version < "3" and extra == "jupyter"
84
- Requires-Dist: ipykernel>=5.5; (python_version >= "3" and python_version < "3.8") and extra == "jupyter"
85
- Requires-Dist: ipykernel>=6; python_version >= "3.8" and extra == "jupyter"
86
- Requires-Dist: jupyter-client>=5.3; python_version < "3.5" and extra == "jupyter"
87
- Requires-Dist: jupyter-client<6.1.13,>=6.1.12; (python_version >= "3.5" and python_version < "3.6") and extra == "jupyter"
89
+ Requires-Dist: papermill>=1.2; extra == "jupyter"
88
90
  Requires-Dist: jupyter-client>=7.1.2; python_version >= "3.6" and extra == "jupyter"
89
- Requires-Dist: jedi<0.18,>=0.17; python_version < "3.9" and extra == "jupyter"
90
- Requires-Dist: jedi>=0.19; python_version >= "3.9" and extra == "jupyter"
91
+ Requires-Dist: jupyter-client>=5.3; python_version < "3.5" and extra == "jupyter"
91
92
  Requires-Dist: pywinpty<0.6,>=0.5; (python_version < "3" and os_name == "nt") and extra == "jupyter"
92
- Requires-Dist: jupyter>=1.0; extra == "jupyter"
93
- Requires-Dist: jupyter-console>=5.2; python_version < "3.5" and extra == "jupyter"
94
93
  Requires-Dist: jupyter-console>=6.1; (python_version >= "3.5" and python_version < "3.7") and extra == "jupyter"
95
- Requires-Dist: jupyter-console>=6.6; python_version >= "3.7" and extra == "jupyter"
96
- Requires-Dist: papermill>=1.2; extra == "jupyter"
94
+ Requires-Dist: jedi<0.18,>=0.17; python_version < "3.9" and extra == "jupyter"
95
+ Requires-Dist: jedi>=0.19; python_version >= "3.9" and extra == "jupyter"
96
+ Requires-Dist: ipykernel>=4.10; python_version < "3" and extra == "jupyter"
97
97
  Provides-Extra: jupyterlab
98
+ Requires-Dist: ipykernel>=5.5; (python_version >= "3" and python_version < "3.8") and extra == "jupyterlab"
99
+ Requires-Dist: ipykernel>=6; python_version >= "3.8" and extra == "jupyterlab"
98
100
  Requires-Dist: ipython>=5.4; python_version < "3" and extra == "jupyterlab"
101
+ Requires-Dist: jupyter-console>=6.6; python_version >= "3.7" and extra == "jupyterlab"
102
+ Requires-Dist: jupyter>=1.0; extra == "jupyterlab"
99
103
  Requires-Dist: ipython<7.10,>=7.9; (python_version >= "3" and python_version < "3.7") and extra == "jupyterlab"
104
+ Requires-Dist: jupyter-client<6.1.13,>=6.1.12; (python_version >= "3.5" and python_version < "3.6") and extra == "jupyterlab"
105
+ Requires-Dist: ipython>=8.22; python_version >= "3.9" and extra == "jupyterlab"
100
106
  Requires-Dist: ipython>=7.34; (python_version >= "3.7" and python_version < "3.8") and extra == "jupyterlab"
107
+ Requires-Dist: jupyter-console>=5.2; python_version < "3.5" and extra == "jupyterlab"
101
108
  Requires-Dist: ipython>=8.12; (python_version >= "3.8" and python_version < "3.9") and extra == "jupyterlab"
102
- Requires-Dist: ipython>=8.18; python_version >= "3.9" and extra == "jupyterlab"
103
- Requires-Dist: ipykernel>=4.10; python_version < "3" and extra == "jupyterlab"
104
- Requires-Dist: ipykernel>=5.5; (python_version >= "3" and python_version < "3.8") and extra == "jupyterlab"
105
- Requires-Dist: ipykernel>=6; python_version >= "3.8" and extra == "jupyterlab"
106
- Requires-Dist: jupyter-client>=5.3; python_version < "3.5" and extra == "jupyterlab"
107
- Requires-Dist: jupyter-client<6.1.13,>=6.1.12; (python_version >= "3.5" and python_version < "3.6") and extra == "jupyterlab"
109
+ Requires-Dist: papermill>=1.2; extra == "jupyterlab"
108
110
  Requires-Dist: jupyter-client>=7.1.2; python_version >= "3.6" and extra == "jupyterlab"
109
- Requires-Dist: jedi<0.18,>=0.17; python_version < "3.9" and extra == "jupyterlab"
110
- Requires-Dist: jedi>=0.19; python_version >= "3.9" and extra == "jupyterlab"
111
+ Requires-Dist: jupyter-client>=5.3; python_version < "3.5" and extra == "jupyterlab"
111
112
  Requires-Dist: pywinpty<0.6,>=0.5; (python_version < "3" and os_name == "nt") and extra == "jupyterlab"
112
- Requires-Dist: jupyter>=1.0; extra == "jupyterlab"
113
- Requires-Dist: jupyter-console>=5.2; python_version < "3.5" and extra == "jupyterlab"
114
- Requires-Dist: jupyter-console>=6.1; (python_version >= "3.5" and python_version < "3.7") and extra == "jupyterlab"
115
- Requires-Dist: jupyter-console>=6.6; python_version >= "3.7" and extra == "jupyterlab"
116
- Requires-Dist: papermill>=1.2; extra == "jupyterlab"
117
113
  Requires-Dist: jupyterlab>=2.2; python_version >= "3.5" and extra == "jupyterlab"
114
+ Requires-Dist: jupyter-console>=6.1; (python_version >= "3.5" and python_version < "3.7") and extra == "jupyterlab"
115
+ Requires-Dist: jedi<0.18,>=0.17; python_version < "3.9" and extra == "jupyterlab"
116
+ Requires-Dist: jedi>=0.19; python_version >= "3.9" and extra == "jupyterlab"
117
+ Requires-Dist: ipykernel>=4.10; python_version < "3" and extra == "jupyterlab"
118
118
  Provides-Extra: jupytext
119
+ Requires-Dist: ipykernel>=5.5; (python_version >= "3" and python_version < "3.8") and extra == "jupytext"
120
+ Requires-Dist: ipykernel>=6; python_version >= "3.8" and extra == "jupytext"
119
121
  Requires-Dist: ipython>=5.4; python_version < "3" and extra == "jupytext"
122
+ Requires-Dist: jupyter-console>=6.6; python_version >= "3.7" and extra == "jupytext"
123
+ Requires-Dist: jupyter>=1.0; extra == "jupytext"
120
124
  Requires-Dist: ipython<7.10,>=7.9; (python_version >= "3" and python_version < "3.7") and extra == "jupytext"
125
+ Requires-Dist: jupyter-client<6.1.13,>=6.1.12; (python_version >= "3.5" and python_version < "3.6") and extra == "jupytext"
126
+ Requires-Dist: ipython>=8.22; python_version >= "3.9" and extra == "jupytext"
127
+ Requires-Dist: jupytext>=1.8; python_version >= "3" and extra == "jupytext"
121
128
  Requires-Dist: ipython>=7.34; (python_version >= "3.7" and python_version < "3.8") and extra == "jupytext"
129
+ Requires-Dist: jupyter-console>=5.2; python_version < "3.5" and extra == "jupytext"
122
130
  Requires-Dist: ipython>=8.12; (python_version >= "3.8" and python_version < "3.9") and extra == "jupytext"
123
- Requires-Dist: ipython>=8.18; python_version >= "3.9" and extra == "jupytext"
124
- Requires-Dist: ipykernel>=4.10; python_version < "3" and extra == "jupytext"
125
- Requires-Dist: ipykernel>=5.5; (python_version >= "3" and python_version < "3.8") and extra == "jupytext"
126
- Requires-Dist: ipykernel>=6; python_version >= "3.8" and extra == "jupytext"
127
- Requires-Dist: jupyter-client>=5.3; python_version < "3.5" and extra == "jupytext"
128
- Requires-Dist: jupyter-client<6.1.13,>=6.1.12; (python_version >= "3.5" and python_version < "3.6") and extra == "jupytext"
131
+ Requires-Dist: papermill>=1.2; extra == "jupytext"
129
132
  Requires-Dist: jupyter-client>=7.1.2; python_version >= "3.6" and extra == "jupytext"
130
- Requires-Dist: jedi<0.18,>=0.17; python_version < "3.9" and extra == "jupytext"
131
- Requires-Dist: jedi>=0.19; python_version >= "3.9" and extra == "jupytext"
133
+ Requires-Dist: jupyter-client>=5.3; python_version < "3.5" and extra == "jupytext"
132
134
  Requires-Dist: pywinpty<0.6,>=0.5; (python_version < "3" and os_name == "nt") and extra == "jupytext"
133
- Requires-Dist: jupyter>=1.0; extra == "jupytext"
134
- Requires-Dist: jupyter-console>=5.2; python_version < "3.5" and extra == "jupytext"
135
135
  Requires-Dist: jupyter-console>=6.1; (python_version >= "3.5" and python_version < "3.7") and extra == "jupytext"
136
- Requires-Dist: jupyter-console>=6.6; python_version >= "3.7" and extra == "jupytext"
137
- Requires-Dist: papermill>=1.2; extra == "jupytext"
138
- Requires-Dist: jupytext>=1.8; python_version >= "3" and extra == "jupytext"
136
+ Requires-Dist: jedi<0.18,>=0.17; python_version < "3.9" and extra == "jupytext"
137
+ Requires-Dist: jedi>=0.19; python_version >= "3.9" and extra == "jupytext"
138
+ Requires-Dist: ipykernel>=4.10; python_version < "3" and extra == "jupytext"
139
139
  Provides-Extra: all
140
+ Requires-Dist: ipykernel>=5.5; (python_version >= "3" and python_version < "3.8") and extra == "all"
141
+ Requires-Dist: ipykernel>=6; python_version >= "3.8" and extra == "all"
140
142
  Requires-Dist: ipython>=5.4; python_version < "3" and extra == "all"
143
+ Requires-Dist: watchdog>=0.10; extra == "all"
144
+ Requires-Dist: jupyter-console>=6.6; python_version >= "3.7" and extra == "all"
141
145
  Requires-Dist: ipython<7.10,>=7.9; (python_version >= "3" and python_version < "3.7") and extra == "all"
146
+ Requires-Dist: jupyter>=1.0; extra == "all"
147
+ Requires-Dist: jupyter-client<6.1.13,>=6.1.12; (python_version >= "3.5" and python_version < "3.6") and extra == "all"
148
+ Requires-Dist: ipython>=8.22; python_version >= "3.9" and extra == "all"
149
+ Requires-Dist: jupytext>=1.8; python_version >= "3" and extra == "all"
150
+ Requires-Dist: xonsh>=0.11; (python_version >= "3.6" and python_version < "3.8") and extra == "all"
142
151
  Requires-Dist: ipython>=7.34; (python_version >= "3.7" and python_version < "3.8") and extra == "all"
152
+ Requires-Dist: mypy[python2]>=1.8; extra == "all"
153
+ Requires-Dist: xonsh>=0.15; python_version >= "3.8" and extra == "all"
154
+ Requires-Dist: jupyter-console>=5.2; python_version < "3.5" and extra == "all"
143
155
  Requires-Dist: ipython>=8.12; (python_version >= "3.8" and python_version < "3.9") and extra == "all"
144
- Requires-Dist: ipython>=8.18; python_version >= "3.9" and extra == "all"
145
- Requires-Dist: ipykernel>=4.10; python_version < "3" and extra == "all"
146
- Requires-Dist: ipykernel>=5.5; (python_version >= "3" and python_version < "3.8") and extra == "all"
147
- Requires-Dist: ipykernel>=6; python_version >= "3.8" and extra == "all"
148
- Requires-Dist: jupyter-client>=5.3; python_version < "3.5" and extra == "all"
149
- Requires-Dist: jupyter-client<6.1.13,>=6.1.12; (python_version >= "3.5" and python_version < "3.6") and extra == "all"
156
+ Requires-Dist: papermill>=1.2; extra == "all"
157
+ Requires-Dist: numpy>=1.18; (python_version >= "3.4" and python_version < "3.9") and extra == "all"
158
+ Requires-Dist: numpy>=1.16; (python_version < "3" and platform_python_implementation == "CPython") and extra == "all"
159
+ Requires-Dist: types-backports>=0.1; extra == "all"
150
160
  Requires-Dist: jupyter-client>=7.1.2; python_version >= "3.6" and extra == "all"
151
- Requires-Dist: jedi<0.18,>=0.17; python_version < "3.9" and extra == "all"
152
- Requires-Dist: jedi>=0.19; python_version >= "3.9" and extra == "all"
161
+ Requires-Dist: pandas>=1; python_version >= "3.6" and extra == "all"
162
+ Requires-Dist: jupyter-client>=5.3; python_version < "3.5" and extra == "all"
153
163
  Requires-Dist: pywinpty<0.6,>=0.5; (python_version < "3" and os_name == "nt") and extra == "all"
154
- Requires-Dist: watchdog>=0.10; extra == "all"
155
- Requires-Dist: mypy[python2]>=1.7; extra == "all"
156
- Requires-Dist: types-backports>=0.1; extra == "all"
157
- Requires-Dist: typing>=3.10; python_version < "3.5" and extra == "all"
164
+ Requires-Dist: jupyterlab>=2.2; python_version >= "3.5" and extra == "all"
158
165
  Requires-Dist: xonsh>=0.9; python_version < "3.6" and extra == "all"
159
- Requires-Dist: xonsh>=0.11; (python_version >= "3.6" and python_version < "3.8") and extra == "all"
160
- Requires-Dist: xonsh>=0.14; python_version >= "3.8" and extra == "all"
161
- Requires-Dist: numpy>=1.16; (python_version < "3" and platform_python_implementation == "CPython") and extra == "all"
162
- Requires-Dist: numpy>=1.18; (python_version >= "3.4" and python_version < "3.9") and extra == "all"
163
- Requires-Dist: numpy>=1.26; python_version >= "3.9" and extra == "all"
164
- Requires-Dist: pandas>=1; python_version >= "3.6" and extra == "all"
165
- Requires-Dist: xarray>=2023; python_version >= "3.9" and extra == "all"
166
- Requires-Dist: jupyter>=1.0; extra == "all"
167
- Requires-Dist: jupyter-console>=5.2; python_version < "3.5" and extra == "all"
168
166
  Requires-Dist: jupyter-console>=6.1; (python_version >= "3.5" and python_version < "3.7") and extra == "all"
169
- Requires-Dist: jupyter-console>=6.6; python_version >= "3.7" and extra == "all"
170
- Requires-Dist: papermill>=1.2; extra == "all"
171
- Requires-Dist: jupyterlab>=2.2; python_version >= "3.5" and extra == "all"
172
- Requires-Dist: jupytext>=1.8; python_version >= "3" and extra == "all"
167
+ Requires-Dist: jedi<0.18,>=0.17; python_version < "3.9" and extra == "all"
168
+ Requires-Dist: numpy>=1.26; python_version >= "3.9" and extra == "all"
169
+ Requires-Dist: jedi>=0.19; python_version >= "3.9" and extra == "all"
170
+ Requires-Dist: xarray>=2024; python_version >= "3.9" and extra == "all"
171
+ Requires-Dist: typing>=3.10; python_version < "3.5" and extra == "all"
172
+ Requires-Dist: ipykernel>=4.10; python_version < "3" and extra == "all"
173
173
  Provides-Extra: ipython
174
+ Requires-Dist: ipykernel>=5.5; (python_version >= "3" and python_version < "3.8") and extra == "ipython"
175
+ Requires-Dist: ipykernel>=6; python_version >= "3.8" and extra == "ipython"
174
176
  Requires-Dist: ipython>=5.4; python_version < "3" and extra == "ipython"
177
+ Requires-Dist: jupyter-console>=6.6; python_version >= "3.7" and extra == "ipython"
178
+ Requires-Dist: jupyter>=1.0; extra == "ipython"
175
179
  Requires-Dist: ipython<7.10,>=7.9; (python_version >= "3" and python_version < "3.7") and extra == "ipython"
180
+ Requires-Dist: jupyter-client<6.1.13,>=6.1.12; (python_version >= "3.5" and python_version < "3.6") and extra == "ipython"
181
+ Requires-Dist: ipython>=8.22; python_version >= "3.9" and extra == "ipython"
176
182
  Requires-Dist: ipython>=7.34; (python_version >= "3.7" and python_version < "3.8") and extra == "ipython"
183
+ Requires-Dist: jupyter-console>=5.2; python_version < "3.5" and extra == "ipython"
177
184
  Requires-Dist: ipython>=8.12; (python_version >= "3.8" and python_version < "3.9") and extra == "ipython"
178
- Requires-Dist: ipython>=8.18; python_version >= "3.9" and extra == "ipython"
179
- Requires-Dist: ipykernel>=4.10; python_version < "3" and extra == "ipython"
180
- Requires-Dist: ipykernel>=5.5; (python_version >= "3" and python_version < "3.8") and extra == "ipython"
181
- Requires-Dist: ipykernel>=6; python_version >= "3.8" and extra == "ipython"
182
- Requires-Dist: jupyter-client>=5.3; python_version < "3.5" and extra == "ipython"
183
- Requires-Dist: jupyter-client<6.1.13,>=6.1.12; (python_version >= "3.5" and python_version < "3.6") and extra == "ipython"
185
+ Requires-Dist: papermill>=1.2; extra == "ipython"
184
186
  Requires-Dist: jupyter-client>=7.1.2; python_version >= "3.6" and extra == "ipython"
185
- Requires-Dist: jedi<0.18,>=0.17; python_version < "3.9" and extra == "ipython"
186
- Requires-Dist: jedi>=0.19; python_version >= "3.9" and extra == "ipython"
187
+ Requires-Dist: jupyter-client>=5.3; python_version < "3.5" and extra == "ipython"
187
188
  Requires-Dist: pywinpty<0.6,>=0.5; (python_version < "3" and os_name == "nt") and extra == "ipython"
188
- Requires-Dist: jupyter>=1.0; extra == "ipython"
189
- Requires-Dist: jupyter-console>=5.2; python_version < "3.5" and extra == "ipython"
190
189
  Requires-Dist: jupyter-console>=6.1; (python_version >= "3.5" and python_version < "3.7") and extra == "ipython"
191
- Requires-Dist: jupyter-console>=6.6; python_version >= "3.7" and extra == "ipython"
192
- Requires-Dist: papermill>=1.2; extra == "ipython"
190
+ Requires-Dist: jedi<0.18,>=0.17; python_version < "3.9" and extra == "ipython"
191
+ Requires-Dist: jedi>=0.19; python_version >= "3.9" and extra == "ipython"
192
+ Requires-Dist: ipykernel>=4.10; python_version < "3" and extra == "ipython"
193
193
  Provides-Extra: docs
194
+ Requires-Dist: pydata-sphinx-theme>=0.15; extra == "docs"
194
195
  Requires-Dist: sphinx>=7; extra == "docs"
195
- Requires-Dist: pygments>=2.3; python_version < "3.9" and extra == "docs"
196
- Requires-Dist: pygments>=2.17; python_version >= "3.9" and extra == "docs"
197
196
  Requires-Dist: myst-parser>=2; extra == "docs"
198
- Requires-Dist: pydata-sphinx-theme>=0.14; extra == "docs"
197
+ Requires-Dist: pygments>=2.17; python_version >= "3.9" and extra == "docs"
198
+ Requires-Dist: pygments>=2.3; python_version < "3.9" and extra == "docs"
199
199
  Provides-Extra: tests
200
- Requires-Dist: pytest>=3; python_version < "3.6" and extra == "tests"
201
- Requires-Dist: pytest>=7; python_version >= "3.6" and extra == "tests"
202
- Requires-Dist: pexpect>=4; extra == "tests"
203
- Requires-Dist: numpy>=1.16; (python_version < "3" and platform_python_implementation == "CPython") and extra == "tests"
204
- Requires-Dist: numpy>=1.18; (python_version >= "3.4" and python_version < "3.9") and extra == "tests"
205
- Requires-Dist: numpy>=1.26; python_version >= "3.9" and extra == "tests"
206
- Requires-Dist: pandas>=1; python_version >= "3.6" and extra == "tests"
207
- Requires-Dist: xarray>=2023; python_version >= "3.9" and extra == "tests"
200
+ Requires-Dist: ipykernel>=5.5; (python_version >= "3" and python_version < "3.8") and extra == "tests"
201
+ Requires-Dist: ipykernel>=6; python_version >= "3.8" and extra == "tests"
202
+ Requires-Dist: pytest>=8; python_version >= "3.8" and extra == "tests"
208
203
  Requires-Dist: ipython>=5.4; python_version < "3" and extra == "tests"
204
+ Requires-Dist: jupyter-console>=6.6; python_version >= "3.7" and extra == "tests"
205
+ Requires-Dist: jupyter>=1.0; extra == "tests"
209
206
  Requires-Dist: ipython<7.10,>=7.9; (python_version >= "3" and python_version < "3.7") and extra == "tests"
207
+ Requires-Dist: pytest>=3; python_version < "3.6" and extra == "tests"
208
+ Requires-Dist: jupyter-client<6.1.13,>=6.1.12; (python_version >= "3.5" and python_version < "3.6") and extra == "tests"
209
+ Requires-Dist: ipython>=8.22; python_version >= "3.9" and extra == "tests"
210
+ Requires-Dist: xonsh>=0.11; (python_version >= "3.6" and python_version < "3.8") and extra == "tests"
210
211
  Requires-Dist: ipython>=7.34; (python_version >= "3.7" and python_version < "3.8") and extra == "tests"
212
+ Requires-Dist: jupyter-console>=5.2; python_version < "3.5" and extra == "tests"
213
+ Requires-Dist: mypy[python2]>=1.8; extra == "tests"
214
+ Requires-Dist: xonsh>=0.15; python_version >= "3.8" and extra == "tests"
211
215
  Requires-Dist: ipython>=8.12; (python_version >= "3.8" and python_version < "3.9") and extra == "tests"
212
- Requires-Dist: ipython>=8.18; python_version >= "3.9" and extra == "tests"
213
- Requires-Dist: ipykernel>=4.10; python_version < "3" and extra == "tests"
214
- Requires-Dist: ipykernel>=5.5; (python_version >= "3" and python_version < "3.8") and extra == "tests"
215
- Requires-Dist: ipykernel>=6; python_version >= "3.8" and extra == "tests"
216
- Requires-Dist: jupyter-client>=5.3; python_version < "3.5" and extra == "tests"
217
- Requires-Dist: jupyter-client<6.1.13,>=6.1.12; (python_version >= "3.5" and python_version < "3.6") and extra == "tests"
216
+ Requires-Dist: papermill>=1.2; extra == "tests"
217
+ Requires-Dist: numpy>=1.18; (python_version >= "3.4" and python_version < "3.9") and extra == "tests"
218
+ Requires-Dist: numpy>=1.16; (python_version < "3" and platform_python_implementation == "CPython") and extra == "tests"
219
+ Requires-Dist: pexpect>=4; extra == "tests"
220
+ Requires-Dist: types-backports>=0.1; extra == "tests"
218
221
  Requires-Dist: jupyter-client>=7.1.2; python_version >= "3.6" and extra == "tests"
219
- Requires-Dist: jedi<0.18,>=0.17; python_version < "3.9" and extra == "tests"
220
- Requires-Dist: jedi>=0.19; python_version >= "3.9" and extra == "tests"
222
+ Requires-Dist: pandas>=1; python_version >= "3.6" and extra == "tests"
223
+ Requires-Dist: jupyter-client>=5.3; python_version < "3.5" and extra == "tests"
221
224
  Requires-Dist: pywinpty<0.6,>=0.5; (python_version < "3" and os_name == "nt") and extra == "tests"
222
- Requires-Dist: jupyter>=1.0; extra == "tests"
223
- Requires-Dist: jupyter-console>=5.2; python_version < "3.5" and extra == "tests"
225
+ Requires-Dist: xonsh>=0.9; python_version < "3.6" and extra == "tests"
224
226
  Requires-Dist: jupyter-console>=6.1; (python_version >= "3.5" and python_version < "3.7") and extra == "tests"
225
- Requires-Dist: jupyter-console>=6.6; python_version >= "3.7" and extra == "tests"
226
- Requires-Dist: papermill>=1.2; extra == "tests"
227
+ Requires-Dist: jedi<0.18,>=0.17; python_version < "3.9" and extra == "tests"
228
+ Requires-Dist: numpy>=1.26; python_version >= "3.9" and extra == "tests"
229
+ Requires-Dist: jedi>=0.19; python_version >= "3.9" and extra == "tests"
230
+ Requires-Dist: pytest>=7; (python_version >= "3.6" and python_version < "3.8") and extra == "tests"
231
+ Requires-Dist: xarray>=2024; python_version >= "3.9" and extra == "tests"
232
+ Requires-Dist: typing>=3.10; python_version < "3.5" and extra == "tests"
233
+ Requires-Dist: ipykernel>=4.10; python_version < "3" and extra == "tests"
227
234
  Provides-Extra: dev
228
- Requires-Dist: ipython>=5.4; python_version < "3" and extra == "dev"
229
- Requires-Dist: ipython<7.10,>=7.9; (python_version >= "3" and python_version < "3.7") and extra == "dev"
230
- Requires-Dist: ipython>=7.34; (python_version >= "3.7" and python_version < "3.8") and extra == "dev"
231
- Requires-Dist: ipython>=8.12; (python_version >= "3.8" and python_version < "3.9") and extra == "dev"
232
- Requires-Dist: ipython>=8.18; python_version >= "3.9" and extra == "dev"
233
- Requires-Dist: ipykernel>=4.10; python_version < "3" and extra == "dev"
235
+ Requires-Dist: sphinx>=7; extra == "dev"
234
236
  Requires-Dist: ipykernel>=5.5; (python_version >= "3" and python_version < "3.8") and extra == "dev"
235
237
  Requires-Dist: ipykernel>=6; python_version >= "3.8" and extra == "dev"
236
- Requires-Dist: jupyter-client>=5.3; python_version < "3.5" and extra == "dev"
237
- Requires-Dist: jupyter-client<6.1.13,>=6.1.12; (python_version >= "3.5" and python_version < "3.6") and extra == "dev"
238
- Requires-Dist: jupyter-client>=7.1.2; python_version >= "3.6" and extra == "dev"
239
- Requires-Dist: jedi<0.18,>=0.17; python_version < "3.9" and extra == "dev"
240
- Requires-Dist: jedi>=0.19; python_version >= "3.9" and extra == "dev"
241
- Requires-Dist: pywinpty<0.6,>=0.5; (python_version < "3" and os_name == "nt") and extra == "dev"
238
+ Requires-Dist: ipython>=5.4; python_version < "3" and extra == "dev"
239
+ Requires-Dist: pytest>=8; python_version >= "3.8" and extra == "dev"
242
240
  Requires-Dist: watchdog>=0.10; extra == "dev"
243
- Requires-Dist: mypy[python2]>=1.7; extra == "dev"
244
- Requires-Dist: types-backports>=0.1; extra == "dev"
245
- Requires-Dist: typing>=3.10; python_version < "3.5" and extra == "dev"
246
- Requires-Dist: xonsh>=0.9; python_version < "3.6" and extra == "dev"
247
- Requires-Dist: xonsh>=0.11; (python_version >= "3.6" and python_version < "3.8") and extra == "dev"
248
- Requires-Dist: xonsh>=0.14; python_version >= "3.8" and extra == "dev"
249
- Requires-Dist: numpy>=1.16; (python_version < "3" and platform_python_implementation == "CPython") and extra == "dev"
250
- Requires-Dist: numpy>=1.18; (python_version >= "3.4" and python_version < "3.9") and extra == "dev"
251
- Requires-Dist: numpy>=1.26; python_version >= "3.9" and extra == "dev"
252
- Requires-Dist: pandas>=1; python_version >= "3.6" and extra == "dev"
253
- Requires-Dist: xarray>=2023; python_version >= "3.9" and extra == "dev"
241
+ Requires-Dist: jupyter-console>=6.6; python_version >= "3.7" and extra == "dev"
242
+ Requires-Dist: vprof>=0.36; extra == "dev"
254
243
  Requires-Dist: jupyter>=1.0; extra == "dev"
244
+ Requires-Dist: ipython<7.10,>=7.9; (python_version >= "3" and python_version < "3.7") and extra == "dev"
245
+ Requires-Dist: pytest>=3; python_version < "3.6" and extra == "dev"
246
+ Requires-Dist: pydata-sphinx-theme>=0.15; extra == "dev"
247
+ Requires-Dist: jupyter-client<6.1.13,>=6.1.12; (python_version >= "3.5" and python_version < "3.6") and extra == "dev"
248
+ Requires-Dist: ipython>=8.22; python_version >= "3.9" and extra == "dev"
249
+ Requires-Dist: jupytext>=1.8; python_version >= "3" and extra == "dev"
250
+ Requires-Dist: xonsh>=0.11; (python_version >= "3.6" and python_version < "3.8") and extra == "dev"
251
+ Requires-Dist: ipython>=7.34; (python_version >= "3.7" and python_version < "3.8") and extra == "dev"
252
+ Requires-Dist: mypy[python2]>=1.8; extra == "dev"
253
+ Requires-Dist: xonsh>=0.15; python_version >= "3.8" and extra == "dev"
255
254
  Requires-Dist: jupyter-console>=5.2; python_version < "3.5" and extra == "dev"
256
- Requires-Dist: jupyter-console>=6.1; (python_version >= "3.5" and python_version < "3.7") and extra == "dev"
257
- Requires-Dist: jupyter-console>=6.6; python_version >= "3.7" and extra == "dev"
255
+ Requires-Dist: myst-parser>=2; extra == "dev"
256
+ Requires-Dist: ipython>=8.12; (python_version >= "3.8" and python_version < "3.9") and extra == "dev"
257
+ Requires-Dist: requests>=2.31; extra == "dev"
258
+ Requires-Dist: py-spy>=0.3; extra == "dev"
258
259
  Requires-Dist: papermill>=1.2; extra == "dev"
259
- Requires-Dist: jupyterlab>=2.2; python_version >= "3.5" and extra == "dev"
260
- Requires-Dist: jupytext>=1.8; python_version >= "3" and extra == "dev"
261
- Requires-Dist: sphinx>=7; extra == "dev"
262
- Requires-Dist: pygments>=2.3; python_version < "3.9" and extra == "dev"
260
+ Requires-Dist: numpy>=1.18; (python_version >= "3.4" and python_version < "3.9") and extra == "dev"
261
+ Requires-Dist: numpy>=1.16; (python_version < "3" and platform_python_implementation == "CPython") and extra == "dev"
263
262
  Requires-Dist: pygments>=2.17; python_version >= "3.9" and extra == "dev"
264
- Requires-Dist: myst-parser>=2; extra == "dev"
265
- Requires-Dist: pydata-sphinx-theme>=0.14; extra == "dev"
266
- Requires-Dist: pytest>=3; python_version < "3.6" and extra == "dev"
267
- Requires-Dist: pytest>=7; python_version >= "3.6" and extra == "dev"
263
+ Requires-Dist: pygments>=2.3; python_version < "3.9" and extra == "dev"
268
264
  Requires-Dist: pexpect>=4; extra == "dev"
269
- Requires-Dist: pyparsing<2.4.8,>=2.4.7; extra == "dev"
265
+ Requires-Dist: types-backports>=0.1; extra == "dev"
266
+ Requires-Dist: jupyter-client>=7.1.2; python_version >= "3.6" and extra == "dev"
267
+ Requires-Dist: pandas>=1; python_version >= "3.6" and extra == "dev"
268
+ Requires-Dist: jupyter-client>=5.3; python_version < "3.5" and extra == "dev"
269
+ Requires-Dist: pywinpty<0.6,>=0.5; (python_version < "3" and os_name == "nt") and extra == "dev"
270
+ Requires-Dist: jupyterlab>=2.2; python_version >= "3.5" and extra == "dev"
271
+ Requires-Dist: xonsh>=0.9; python_version < "3.6" and extra == "dev"
270
272
  Requires-Dist: pre-commit>=3; python_version >= "3" and extra == "dev"
271
- Requires-Dist: requests>=2.31; extra == "dev"
272
- Requires-Dist: vprof>=0.36; extra == "dev"
273
- Requires-Dist: py-spy>=0.3; extra == "dev"
273
+ Requires-Dist: jupyter-console>=6.1; (python_version >= "3.5" and python_version < "3.7") and extra == "dev"
274
+ Requires-Dist: jedi<0.18,>=0.17; python_version < "3.9" and extra == "dev"
275
+ Requires-Dist: numpy>=1.26; python_version >= "3.9" and extra == "dev"
276
+ Requires-Dist: jedi>=0.19; python_version >= "3.9" and extra == "dev"
277
+ Requires-Dist: pyparsing<2.4.8,>=2.4.7; extra == "dev"
278
+ Requires-Dist: pytest>=7; (python_version >= "3.6" and python_version < "3.8") and extra == "dev"
279
+ Requires-Dist: xarray>=2024; python_version >= "3.9" and extra == "dev"
280
+ Requires-Dist: typing>=3.10; python_version < "3.5" and extra == "dev"
281
+ Requires-Dist: ipykernel>=4.10; python_version < "3" and extra == "dev"
274
282
  Requires-Dist: argparse>=1.4; python_version < "2.7"
275
283
  Requires-Dist: psutil>=5; python_version >= "2.7"
276
284
  Requires-Dist: futures>=3.4; python_version < "3"
277
- Requires-Dist: backports.functools-lru-cache>=1.6; python_version < "3"
285
+ Requires-Dist: backports.functools-lru-cache>=2; python_version < "3"
278
286
  Requires-Dist: prompt_toolkit<2,>=1; python_version < "3"
279
287
  Requires-Dist: prompt_toolkit>=1; python_version >= "3"
280
288
  Requires-Dist: pygments>=2.3; python_version < "3.9"
@@ -283,7 +291,7 @@ Requires-Dist: typing_extensions>=3.10; python_version < "3.6"
283
291
  Requires-Dist: typing_extensions>=4.1; python_version >= "3.6" and python_version < "3.7"
284
292
  Requires-Dist: dataclasses>=0.8; python_version >= "3.6" and python_version < "3.7"
285
293
  Requires-Dist: typing_extensions>=4.7; python_version >= "3.7" and python_version < "3.8"
286
- Requires-Dist: typing_extensions>=4.8; python_version >= "3.8"
294
+ Requires-Dist: typing_extensions>=4.9; python_version >= "3.8"
287
295
  Requires-Dist: trollius>=2.2; python_version < "3" and platform_python_implementation == "CPython"
288
296
  Requires-Dist: aenum>=3.1.15; python_version < "3.4"
289
297
  Requires-Dist: typing>=3.10; python_version < "3.5"
@@ -421,7 +421,12 @@ def unlink(link_path):
421
421
  def rm_dir_or_link(dir_to_rm):
422
422
  """Safely delete a directory without deleting the contents of symlinks."""
423
423
  if not unlink(dir_to_rm) and os.path.exists(dir_to_rm):
424
- if WINDOWS:
424
+ if PY2: # shutil.rmtree doesn't seem to be fully safe on Python 2
425
+ try:
426
+ os.rmdir(dir_to_rm)
427
+ except OSError:
428
+ logger.warn_exc()
429
+ elif WINDOWS:
425
430
  try:
426
431
  os.rmdir(dir_to_rm)
427
432
  except OSError:
@@ -307,6 +307,39 @@ class Matcher(object):
307
307
  """Gets the var for checking whether a name should be set."""
308
308
  return match_set_name_var + "_" + name
309
309
 
310
+ def add_default_expr(self, assign_to, default_expr):
311
+ """Add code that evaluates expr in the context of any names that have been matched so far
312
+ and assigns the result to assign_to if assign_to is currently _coconut_sentinel."""
313
+ vars_var = self.get_temp_var()
314
+ add_names_code = []
315
+ for name in self.names:
316
+ add_names_code.append(
317
+ handle_indentation(
318
+ """
319
+ if {set_name_var} is not _coconut_sentinel:
320
+ {vars_var}["{name}"] = {set_name_var}
321
+ """,
322
+ add_newline=True,
323
+ ).format(
324
+ set_name_var=self.get_set_name_var(name),
325
+ vars_var=vars_var,
326
+ name=name,
327
+ )
328
+ )
329
+ code = self.comp.reformat_post_deferred_code_proc(assign_to + " = " + default_expr)
330
+ self.add_def(handle_indentation("""
331
+ if {assign_to} is _coconut_sentinel:
332
+ {vars_var} = _coconut.globals().copy()
333
+ {vars_var}.update(_coconut.locals().copy())
334
+ {add_names_code}_coconut_exec({code_str}, {vars_var})
335
+ {assign_to} = {vars_var}["{assign_to}"]
336
+ """).format(
337
+ vars_var=vars_var,
338
+ add_names_code="".join(add_names_code),
339
+ assign_to=assign_to,
340
+ code_str=self.comp.wrap_str_of(code),
341
+ ))
342
+
310
343
  def register_name(self, name):
311
344
  """Register a new name at the current position."""
312
345
  internal_assert(lambda: name not in self.parent_names and name not in self.names, "attempt to register duplicate name", name)
@@ -373,7 +406,7 @@ if {first_arg} is not _coconut_sentinel:
373
406
  ).format(
374
407
  first_arg=first_arg,
375
408
  args=args,
376
- ),
409
+ )
377
410
  )
378
411
 
379
412
  with self.down_a_level():
@@ -418,7 +451,7 @@ if {first_arg} is not _coconut_sentinel:
418
451
  # if i >= req_len
419
452
  "_coconut.sum((_coconut.len(" + args + ") > " + str(i) + ", "
420
453
  + ", ".join('"' + name + '" in ' + kwargs for name in names)
421
- + ")) == 1",
454
+ + ")) == 1"
422
455
  )
423
456
  tempvar = self.get_temp_var()
424
457
  self.add_def(
@@ -428,16 +461,19 @@ if {first_arg} is not _coconut_sentinel:
428
461
  kwargs + '.pop("' + name + '") if "' + name + '" in ' + kwargs + " else "
429
462
  for name in names[:-1]
430
463
  )
431
- + kwargs + '.pop("' + names[-1] + '")',
464
+ + kwargs + '.pop("' + names[-1] + '")'
432
465
  )
433
466
  with self.down_a_level():
434
467
  self.match(match, tempvar)
435
468
  else:
436
469
  if not names:
437
470
  tempvar = self.get_temp_var()
438
- self.add_def(tempvar + " = " + args + "[" + str(i) + "] if _coconut.len(" + args + ") > " + str(i) + " else " + default)
439
- with self.down_a_level():
440
- self.match(match, tempvar)
471
+ self.add_def(tempvar + " = " + args + "[" + str(i) + "] if _coconut.len(" + args + ") > " + str(i) + " else _coconut_sentinel")
472
+ # go down to end to ensure we've matched as much as possible before evaluating the default
473
+ with self.down_to_end():
474
+ self.add_default_expr(tempvar, default)
475
+ with self.down_a_level():
476
+ self.match(match, tempvar)
441
477
  else:
442
478
  arg_checks[i] = (
443
479
  # if i < req_len
@@ -445,7 +481,7 @@ if {first_arg} is not _coconut_sentinel:
445
481
  # if i >= req_len
446
482
  "_coconut.sum((_coconut.len(" + args + ") > " + str(i) + ", "
447
483
  + ", ".join('"' + name + '" in ' + kwargs for name in names)
448
- + ")) <= 1",
484
+ + ")) <= 1"
449
485
  )
450
486
  tempvar = self.get_temp_var()
451
487
  self.add_def(
@@ -455,10 +491,13 @@ if {first_arg} is not _coconut_sentinel:
455
491
  kwargs + '.pop("' + name + '") if "' + name + '" in ' + kwargs + " else "
456
492
  for name in names
457
493
  )
458
- + default,
494
+ + "_coconut_sentinel"
459
495
  )
460
- with self.down_a_level():
461
- self.match(match, tempvar)
496
+ # go down to end to ensure we've matched as much as possible before evaluating the default
497
+ with self.down_to_end():
498
+ self.add_default_expr(tempvar, default)
499
+ with self.down_a_level():
500
+ self.match(match, tempvar)
462
501
 
463
502
  # length checking
464
503
  max_len = None if allow_star_args else len(pos_only_match_args) + len(match_args)
@@ -484,12 +523,18 @@ if {first_arg} is not _coconut_sentinel:
484
523
  kwargs + '.pop("' + name + '") if "' + name + '" in ' + kwargs + " else "
485
524
  for name in names
486
525
  )
487
- + (default if default is not None else "_coconut_sentinel"),
526
+ + "_coconut_sentinel"
488
527
  )
489
- with self.down_a_level():
490
- if default is None:
528
+ if default is None:
529
+ with self.down_a_level():
491
530
  self.add_check(tempvar + " is not _coconut_sentinel")
492
- self.match(match, tempvar)
531
+ self.match(match, tempvar)
532
+ else:
533
+ # go down to end to ensure we've matched as much as possible before evaluating the default
534
+ with self.down_to_end():
535
+ self.add_default_expr(tempvar, default)
536
+ with self.down_a_level():
537
+ self.match(match, tempvar)
493
538
 
494
539
  def match_dict(self, tokens, item):
495
540
  """Matches a dictionary."""
@@ -1054,7 +1099,7 @@ raise _coconut.TypeError("too many positional args in class match (pattern requi
1054
1099
  ).format(
1055
1100
  num_pos_matches=len(pos_matches),
1056
1101
  cls_name=cls_name,
1057
- ),
1102
+ )
1058
1103
  )
1059
1104
  else:
1060
1105
  self_match_matcher.match(pos_matches[0], item)
@@ -1077,7 +1122,7 @@ if _coconut.len({match_args_var}) < {num_pos_matches}:
1077
1122
  num_pos_matches=len(pos_matches),
1078
1123
  type_any=self.comp.wrap_comment(" type: _coconut.typing.Any"),
1079
1124
  type_ignore=self.comp.type_ignore_comment(),
1080
- ),
1125
+ )
1081
1126
  )
1082
1127
  with other_cls_matcher.down_a_level():
1083
1128
  for i, match in enumerate(pos_matches):
@@ -1098,7 +1143,7 @@ if _coconut.len({match_args_var}) < {num_pos_matches}:
1098
1143
  star_match_var=star_match_var,
1099
1144
  item=item,
1100
1145
  num_pos_matches=len(pos_matches),
1101
- ),
1146
+ )
1102
1147
  )
1103
1148
  with self.down_a_level():
1104
1149
  self.match(star_match, star_match_var)
@@ -1118,7 +1163,7 @@ if _coconut.len({match_args_var}) < {num_pos_matches}:
1118
1163
  "_coconut.len({item}) >= {min_len}".format(
1119
1164
  item=item,
1120
1165
  min_len=len(pos_matches),
1121
- ),
1166
+ )
1122
1167
  )
1123
1168
 
1124
1169
  self.match_all_in(pos_matches, item)
@@ -1152,7 +1197,7 @@ if _coconut.len({match_args_var}) < {num_pos_matches}:
1152
1197
  min_len=len(pos_matches),
1153
1198
  name_matches=tuple_str_of(name_matches, add_quotes=True),
1154
1199
  type_ignore=self.comp.type_ignore_comment(),
1155
- ),
1200
+ )
1156
1201
  )
1157
1202
  with self.down_a_level():
1158
1203
  self.add_check(temp_var)
@@ -1172,7 +1217,7 @@ if _coconut.len({match_args_var}) < {num_pos_matches}:
1172
1217
  is_data_var=is_data_var,
1173
1218
  cls_name=cls_name,
1174
1219
  type_ignore=self.comp.type_ignore_comment(),
1175
- ),
1220
+ )
1176
1221
  )
1177
1222
 
1178
1223
  if_data, if_class = self.branches(2)
@@ -1248,7 +1293,7 @@ except _coconut.Exception as _coconut_view_func_exc:
1248
1293
  func_result_var=func_result_var,
1249
1294
  view_func=view_func,
1250
1295
  item=item,
1251
- ),
1296
+ )
1252
1297
  )
1253
1298
 
1254
1299
  with self.down_a_level():
@@ -1325,7 +1370,7 @@ if {check_var}:
1325
1370
  check_var=self.check_var,
1326
1371
  parameterization=parameterization,
1327
1372
  child_checks=child.out().rstrip(),
1328
- ),
1373
+ )
1329
1374
  )
1330
1375
 
1331
1376
  # handle normal child groups
@@ -1353,7 +1398,7 @@ if {check_var}:
1353
1398
  ).format(
1354
1399
  check_var=self.check_var,
1355
1400
  children_checks=children_checks,
1356
- ),
1401
+ )
1357
1402
  )
1358
1403
 
1359
1404
  # commit variable definitions
@@ -1369,7 +1414,7 @@ if {set_name_var} is not _coconut_sentinel:
1369
1414
  ).format(
1370
1415
  set_name_var=self.get_set_name_var(name),
1371
1416
  name=name,
1372
- ),
1417
+ )
1373
1418
  )
1374
1419
  if name_set_code:
1375
1420
  out.append(
@@ -1381,7 +1426,7 @@ if {check_var}:
1381
1426
  ).format(
1382
1427
  check_var=self.check_var,
1383
1428
  name_set_code="".join(name_set_code),
1384
- ),
1429
+ )
1385
1430
  )
1386
1431
 
1387
1432
  # handle guards
@@ -1396,7 +1441,7 @@ if {check_var} and not ({guards}):
1396
1441
  ).format(
1397
1442
  check_var=self.check_var,
1398
1443
  guards=paren_join(self.guards, "and"),
1399
- ),
1444
+ )
1400
1445
  )
1401
1446
 
1402
1447
  return "".join(out)
@@ -999,7 +999,8 @@ all_reqs = {
999
999
  ),
1000
1000
  "tests": (
1001
1001
  ("pytest", "py<36"),
1002
- ("pytest", "py36"),
1002
+ ("pytest", "py>=36;py<38"),
1003
+ ("pytest", "py38"),
1003
1004
  "pexpect",
1004
1005
  ),
1005
1006
  }
@@ -1012,30 +1013,30 @@ unpinned_min_versions = {
1012
1013
  "jupyter": (1, 0),
1013
1014
  "types-backports": (0, 1),
1014
1015
  ("futures", "py<3"): (3, 4),
1015
- ("backports.functools-lru-cache", "py<3"): (1, 6),
1016
+ ("backports.functools-lru-cache", "py<3"): (2,),
1016
1017
  ("argparse", "py<27"): (1, 4),
1017
1018
  "pexpect": (4,),
1018
1019
  ("trollius", "py<3;cpy"): (2, 2),
1019
1020
  "requests": (2, 31),
1020
1021
  ("numpy", "py39"): (1, 26),
1021
- ("xarray", "py39"): (2023,),
1022
+ ("xarray", "py39"): (2024,),
1022
1023
  ("dataclasses", "py==36"): (0, 8),
1023
1024
  ("aenum", "py<34"): (3, 1, 15),
1024
- "pydata-sphinx-theme": (0, 14),
1025
+ "pydata-sphinx-theme": (0, 15),
1025
1026
  "myst-parser": (2,),
1026
1027
  "sphinx": (7,),
1027
- "mypy[python2]": (1, 7),
1028
+ "mypy[python2]": (1, 8),
1028
1029
  ("jupyter-console", "py37"): (6, 6),
1029
1030
  ("typing", "py<35"): (3, 10),
1030
- ("typing_extensions", "py>=38"): (4, 8),
1031
+ ("typing_extensions", "py>=38"): (4, 9),
1031
1032
  ("ipykernel", "py38"): (6,),
1032
1033
  ("jedi", "py39"): (0, 19),
1033
1034
  ("pygments", "py>=39"): (2, 17),
1034
- ("xonsh", "py38"): (0, 14),
1035
- ("pytest", "py36"): (7,),
1035
+ ("xonsh", "py38"): (0, 15),
1036
+ ("pytest", "py38"): (8,),
1036
1037
  ("async_generator", "py35"): (1, 10),
1037
1038
  ("exceptiongroup", "py37;py<311"): (1,),
1038
- ("ipython", "py>=39"): (8, 18),
1039
+ ("ipython", "py>=39"): (8, 22),
1039
1040
  "py-spy": (0, 3),
1040
1041
  }
1041
1042
 
@@ -1053,6 +1054,7 @@ pinned_min_versions = {
1053
1054
  ("pandas", "py36"): (1,),
1054
1055
  ("jupyter-client", "py36"): (7, 1, 2),
1055
1056
  ("typing_extensions", "py==36"): (4, 1),
1057
+ ("pytest", "py>=36;py<38"): (7,),
1056
1058
  # don't upgrade these; they break on Python 3.5
1057
1059
  ("ipykernel", "py3;py<38"): (5, 5),
1058
1060
  ("ipython", "py3;py<37"): (7, 9),
@@ -26,7 +26,7 @@ import sys as _coconut_sys
26
26
  VERSION = "3.0.4"
27
27
  VERSION_NAME = None
28
28
  # False for release, int >= 1 for develop
29
- DEVELOP = 21
29
+ DEVELOP = 22
30
30
  ALPHA = False # for pre releases rather than post releases
31
31
 
32
32
  assert DEVELOP is False or DEVELOP >= 1, "DEVELOP must be False or an int >= 1"
@@ -153,8 +153,7 @@ ignore_error_lines_with = (
153
153
  )
154
154
 
155
155
  mypy_snip = "a: str = count()[0]"
156
- mypy_snip_err_2 = '''error: Incompatible types in assignment (expression has type\n"int", variable has type "unicode")'''
157
- mypy_snip_err_3 = '''error: Incompatible types in assignment (expression has type\n"int", variable has type "str")'''
156
+ mypy_snip_err = '''error: Incompatible types in assignment (expression has type'''
158
157
 
159
158
  mypy_args = ["--follow-imports", "silent", "--ignore-missing-imports", "--allow-redefinition"]
160
159
 
@@ -856,7 +855,7 @@ class TestShell(unittest.TestCase):
856
855
  def test_universal_mypy_snip(self):
857
856
  call(
858
857
  ["coconut", "-c", mypy_snip, "--mypy"],
859
- assert_output=mypy_snip_err_3,
858
+ assert_output=mypy_snip_err,
860
859
  check_errors=False,
861
860
  check_mypy=False,
862
861
  )
@@ -864,7 +863,7 @@ class TestShell(unittest.TestCase):
864
863
  def test_sys_mypy_snip(self):
865
864
  call(
866
865
  ["coconut", "--target", "sys", "-c", mypy_snip, "--mypy"],
867
- assert_output=mypy_snip_err_3,
866
+ assert_output=mypy_snip_err,
868
867
  check_errors=False,
869
868
  check_mypy=False,
870
869
  )
@@ -872,7 +871,7 @@ class TestShell(unittest.TestCase):
872
871
  def test_no_wrap_mypy_snip(self):
873
872
  call(
874
873
  ["coconut", "--target", "sys", "--no-wrap", "-c", mypy_snip, "--mypy"],
875
- assert_output=mypy_snip_err_3,
874
+ assert_output=mypy_snip_err,
876
875
  check_errors=False,
877
876
  check_mypy=False,
878
877
  )
@@ -889,7 +888,8 @@ class TestShell(unittest.TestCase):
889
888
  with using_coconut():
890
889
  auto_compilation(True)
891
890
  import runnable
892
- reload(runnable)
891
+ if not PY2: # triggers a weird metaclass conflict
892
+ reload(runnable)
893
893
  assert runnable.success == "<success>"
894
894
 
895
895
  def test_find_packages(self):
@@ -452,6 +452,9 @@ def primary_test_2() -> bool:
452
452
  assert [=> y for y in range(2)] |> map$(call) |> list == [1, 1]
453
453
  assert [def => y for y in range(2)] |> map$(call) |> list == [0, 1]
454
454
  assert (x -> x -> def y -> (x, y))(1)(2)(3) == (2, 3)
455
+ match def maybe_dup(x, y=x) = (x, y)
456
+ assert maybe_dup(1) == (1, 1) == maybe_dup(x=1)
457
+ assert maybe_dup(1, 2) == (1, 2) == maybe_dup(x=1, y=2)
455
458
 
456
459
  with process_map.multiple_sequential_calls(): # type: ignore
457
460
  assert map((+), range(3), range(4)$[:-1], strict=True) |> list == [0, 2, 4] == process_map((+), range(3), range(4)$[:-1], strict=True) |> list # type: ignore