coconut-develop 3.2.0.post0.dev9__tar.gz → 3.2.0.post0.dev12__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 (92) hide show
  1. {coconut_develop-3.2.0.post0.dev9 → coconut_develop-3.2.0.post0.dev12}/.claude/settings.local.json +10 -5
  2. {coconut_develop-3.2.0.post0.dev9 → coconut_develop-3.2.0.post0.dev12}/DOCS.md +67 -1
  3. {coconut_develop-3.2.0.post0.dev9 → coconut_develop-3.2.0.post0.dev12}/PKG-INFO +2 -23
  4. {coconut_develop-3.2.0.post0.dev9 → coconut_develop-3.2.0.post0.dev12}/__coconut__/__init__.pyi +3 -0
  5. {coconut_develop-3.2.0.post0.dev9 → coconut_develop-3.2.0.post0.dev12}/_coconut/__init__.pyi +1 -0
  6. {coconut_develop-3.2.0.post0.dev9 → coconut_develop-3.2.0.post0.dev12}/coconut/__coconut__.pyi +1 -1
  7. {coconut_develop-3.2.0.post0.dev9 → coconut_develop-3.2.0.post0.dev12}/coconut/compiler/compiler.py +218 -129
  8. {coconut_develop-3.2.0.post0.dev9 → coconut_develop-3.2.0.post0.dev12}/coconut/compiler/grammar.py +25 -8
  9. {coconut_develop-3.2.0.post0.dev9 → coconut_develop-3.2.0.post0.dev12}/coconut/compiler/header.py +25 -26
  10. {coconut_develop-3.2.0.post0.dev9 → coconut_develop-3.2.0.post0.dev12}/coconut/compiler/templates/header.py_template +40 -23
  11. {coconut_develop-3.2.0.post0.dev9 → coconut_develop-3.2.0.post0.dev12}/coconut/constants.py +6 -1
  12. {coconut_develop-3.2.0.post0.dev9 → coconut_develop-3.2.0.post0.dev12}/coconut/root.py +1 -1
  13. {coconut_develop-3.2.0.post0.dev9 → coconut_develop-3.2.0.post0.dev12}/coconut/tests/src/cocotest/agnostic/primary_1.coco +21 -0
  14. {coconut_develop-3.2.0.post0.dev9 → coconut_develop-3.2.0.post0.dev12}/coconut/tests/src/cocotest/agnostic/primary_2.coco +27 -2
  15. {coconut_develop-3.2.0.post0.dev9 → coconut_develop-3.2.0.post0.dev12}/.claude/CLAUDE.md +0 -0
  16. {coconut_develop-3.2.0.post0.dev9 → coconut_develop-3.2.0.post0.dev12}/CONTRIBUTING.md +0 -0
  17. {coconut_develop-3.2.0.post0.dev9 → coconut_develop-3.2.0.post0.dev12}/FAQ.md +0 -0
  18. {coconut_develop-3.2.0.post0.dev9 → coconut_develop-3.2.0.post0.dev12}/HELP.md +0 -0
  19. {coconut_develop-3.2.0.post0.dev9 → coconut_develop-3.2.0.post0.dev12}/LICENSE.txt +0 -0
  20. {coconut_develop-3.2.0.post0.dev9 → coconut_develop-3.2.0.post0.dev12}/MANIFEST.in +0 -0
  21. {coconut_develop-3.2.0.post0.dev9 → coconut_develop-3.2.0.post0.dev12}/README.rst +0 -0
  22. {coconut_develop-3.2.0.post0.dev9 → coconut_develop-3.2.0.post0.dev12}/__coconut__/__init__.py +0 -0
  23. {coconut_develop-3.2.0.post0.dev9 → coconut_develop-3.2.0.post0.dev12}/__coconut__/py.typed +0 -0
  24. {coconut_develop-3.2.0.post0.dev9 → coconut_develop-3.2.0.post0.dev12}/_coconut/__init__.py +0 -0
  25. {coconut_develop-3.2.0.post0.dev9 → coconut_develop-3.2.0.post0.dev12}/_coconut/py.typed +0 -0
  26. {coconut_develop-3.2.0.post0.dev9 → coconut_develop-3.2.0.post0.dev12}/coconut/__coconut__.py +0 -0
  27. {coconut_develop-3.2.0.post0.dev9 → coconut_develop-3.2.0.post0.dev12}/coconut/__init__.py +0 -0
  28. {coconut_develop-3.2.0.post0.dev9 → coconut_develop-3.2.0.post0.dev12}/coconut/__init__.pyi +0 -0
  29. {coconut_develop-3.2.0.post0.dev9 → coconut_develop-3.2.0.post0.dev12}/coconut/__main__.py +0 -0
  30. {coconut_develop-3.2.0.post0.dev9 → coconut_develop-3.2.0.post0.dev12}/coconut/_pyparsing.py +0 -0
  31. {coconut_develop-3.2.0.post0.dev9 → coconut_develop-3.2.0.post0.dev12}/coconut/api.py +0 -0
  32. {coconut_develop-3.2.0.post0.dev9 → coconut_develop-3.2.0.post0.dev12}/coconut/api.pyi +0 -0
  33. {coconut_develop-3.2.0.post0.dev9 → coconut_develop-3.2.0.post0.dev12}/coconut/command/__init__.py +0 -0
  34. {coconut_develop-3.2.0.post0.dev9 → coconut_develop-3.2.0.post0.dev12}/coconut/command/__init__.pyi +0 -0
  35. {coconut_develop-3.2.0.post0.dev9 → coconut_develop-3.2.0.post0.dev12}/coconut/command/cli.py +0 -0
  36. {coconut_develop-3.2.0.post0.dev9 → coconut_develop-3.2.0.post0.dev12}/coconut/command/command.py +0 -0
  37. {coconut_develop-3.2.0.post0.dev9 → coconut_develop-3.2.0.post0.dev12}/coconut/command/command.pyi +0 -0
  38. {coconut_develop-3.2.0.post0.dev9 → coconut_develop-3.2.0.post0.dev12}/coconut/command/mypy.py +0 -0
  39. {coconut_develop-3.2.0.post0.dev9 → coconut_develop-3.2.0.post0.dev12}/coconut/command/resources/zcoconut.pth +0 -0
  40. {coconut_develop-3.2.0.post0.dev9 → coconut_develop-3.2.0.post0.dev12}/coconut/command/util.py +0 -0
  41. {coconut_develop-3.2.0.post0.dev9 → coconut_develop-3.2.0.post0.dev12}/coconut/command/watch.py +0 -0
  42. {coconut_develop-3.2.0.post0.dev9 → coconut_develop-3.2.0.post0.dev12}/coconut/compiler/__init__.py +0 -0
  43. {coconut_develop-3.2.0.post0.dev9 → coconut_develop-3.2.0.post0.dev12}/coconut/compiler/matching.py +0 -0
  44. {coconut_develop-3.2.0.post0.dev9 → coconut_develop-3.2.0.post0.dev12}/coconut/compiler/util.py +0 -0
  45. {coconut_develop-3.2.0.post0.dev9 → coconut_develop-3.2.0.post0.dev12}/coconut/convenience.py +0 -0
  46. {coconut_develop-3.2.0.post0.dev9 → coconut_develop-3.2.0.post0.dev12}/coconut/convenience.pyi +0 -0
  47. {coconut_develop-3.2.0.post0.dev9 → coconut_develop-3.2.0.post0.dev12}/coconut/exceptions.py +0 -0
  48. {coconut_develop-3.2.0.post0.dev9 → coconut_develop-3.2.0.post0.dev12}/coconut/highlighter.py +0 -0
  49. {coconut_develop-3.2.0.post0.dev9 → coconut_develop-3.2.0.post0.dev12}/coconut/icoconut/__init__.py +0 -0
  50. {coconut_develop-3.2.0.post0.dev9 → coconut_develop-3.2.0.post0.dev12}/coconut/icoconut/__main__.py +0 -0
  51. {coconut_develop-3.2.0.post0.dev9 → coconut_develop-3.2.0.post0.dev12}/coconut/icoconut/coconut/kernel.json +0 -0
  52. {coconut_develop-3.2.0.post0.dev9 → coconut_develop-3.2.0.post0.dev12}/coconut/icoconut/coconut_py/kernel.json +0 -0
  53. {coconut_develop-3.2.0.post0.dev9 → coconut_develop-3.2.0.post0.dev12}/coconut/icoconut/coconut_py2/kernel.json +0 -0
  54. {coconut_develop-3.2.0.post0.dev9 → coconut_develop-3.2.0.post0.dev12}/coconut/icoconut/coconut_py3/kernel.json +0 -0
  55. {coconut_develop-3.2.0.post0.dev9 → coconut_develop-3.2.0.post0.dev12}/coconut/icoconut/embed.py +0 -0
  56. {coconut_develop-3.2.0.post0.dev9 → coconut_develop-3.2.0.post0.dev12}/coconut/icoconut/root.py +0 -0
  57. {coconut_develop-3.2.0.post0.dev9 → coconut_develop-3.2.0.post0.dev12}/coconut/integrations.py +0 -0
  58. {coconut_develop-3.2.0.post0.dev9 → coconut_develop-3.2.0.post0.dev12}/coconut/main.py +0 -0
  59. {coconut_develop-3.2.0.post0.dev9 → coconut_develop-3.2.0.post0.dev12}/coconut/py.typed +0 -0
  60. {coconut_develop-3.2.0.post0.dev9 → coconut_develop-3.2.0.post0.dev12}/coconut/requirements.py +0 -0
  61. {coconut_develop-3.2.0.post0.dev9 → coconut_develop-3.2.0.post0.dev12}/coconut/terminal.py +0 -0
  62. {coconut_develop-3.2.0.post0.dev9 → coconut_develop-3.2.0.post0.dev12}/coconut/tests/__init__.py +0 -0
  63. {coconut_develop-3.2.0.post0.dev9 → coconut_develop-3.2.0.post0.dev12}/coconut/tests/__main__.py +0 -0
  64. {coconut_develop-3.2.0.post0.dev9 → coconut_develop-3.2.0.post0.dev12}/coconut/tests/constants_test.py +0 -0
  65. {coconut_develop-3.2.0.post0.dev9 → coconut_develop-3.2.0.post0.dev12}/coconut/tests/main_test.py +0 -0
  66. {coconut_develop-3.2.0.post0.dev9 → coconut_develop-3.2.0.post0.dev12}/coconut/tests/src/cocotest/agnostic/__init__.coco +0 -0
  67. {coconut_develop-3.2.0.post0.dev9 → coconut_develop-3.2.0.post0.dev12}/coconut/tests/src/cocotest/agnostic/__main__.coco +0 -0
  68. {coconut_develop-3.2.0.post0.dev9 → coconut_develop-3.2.0.post0.dev12}/coconut/tests/src/cocotest/agnostic/main.coco +0 -0
  69. {coconut_develop-3.2.0.post0.dev9 → coconut_develop-3.2.0.post0.dev12}/coconut/tests/src/cocotest/agnostic/specific.coco +0 -0
  70. {coconut_develop-3.2.0.post0.dev9 → coconut_develop-3.2.0.post0.dev12}/coconut/tests/src/cocotest/agnostic/suite.coco +0 -0
  71. {coconut_develop-3.2.0.post0.dev9 → coconut_develop-3.2.0.post0.dev12}/coconut/tests/src/cocotest/agnostic/tutorial.coco +0 -0
  72. {coconut_develop-3.2.0.post0.dev9 → coconut_develop-3.2.0.post0.dev12}/coconut/tests/src/cocotest/agnostic/util.coco +0 -0
  73. {coconut_develop-3.2.0.post0.dev9 → coconut_develop-3.2.0.post0.dev12}/coconut/tests/src/cocotest/non_strict/non_strict_test.coco +0 -0
  74. {coconut_develop-3.2.0.post0.dev9 → coconut_develop-3.2.0.post0.dev12}/coconut/tests/src/cocotest/target_2/py2_test.coco +0 -0
  75. {coconut_develop-3.2.0.post0.dev9 → coconut_develop-3.2.0.post0.dev12}/coconut/tests/src/cocotest/target_3/py3_test.coco +0 -0
  76. {coconut_develop-3.2.0.post0.dev9 → coconut_develop-3.2.0.post0.dev12}/coconut/tests/src/cocotest/target_311/py311_test.coco +0 -0
  77. {coconut_develop-3.2.0.post0.dev9 → coconut_develop-3.2.0.post0.dev12}/coconut/tests/src/cocotest/target_314/py314_test.coco +0 -0
  78. {coconut_develop-3.2.0.post0.dev9 → coconut_develop-3.2.0.post0.dev12}/coconut/tests/src/cocotest/target_35/py35_test.coco +0 -0
  79. {coconut_develop-3.2.0.post0.dev9 → coconut_develop-3.2.0.post0.dev12}/coconut/tests/src/cocotest/target_36/py36_test.coco +0 -0
  80. {coconut_develop-3.2.0.post0.dev9 → coconut_develop-3.2.0.post0.dev12}/coconut/tests/src/cocotest/target_38/py38_test.coco +0 -0
  81. {coconut_develop-3.2.0.post0.dev9 → coconut_develop-3.2.0.post0.dev12}/coconut/tests/src/cocotest/target_sys/target_sys_test.coco +0 -0
  82. {coconut_develop-3.2.0.post0.dev9 → coconut_develop-3.2.0.post0.dev12}/coconut/tests/src/extras.coco +0 -0
  83. {coconut_develop-3.2.0.post0.dev9 → coconut_develop-3.2.0.post0.dev12}/coconut/tests/src/importable.coco +0 -0
  84. {coconut_develop-3.2.0.post0.dev9 → coconut_develop-3.2.0.post0.dev12}/coconut/tests/src/runnable.coco +0 -0
  85. {coconut_develop-3.2.0.post0.dev9 → coconut_develop-3.2.0.post0.dev12}/coconut/tests/src/runner.coco +0 -0
  86. {coconut_develop-3.2.0.post0.dev9 → coconut_develop-3.2.0.post0.dev12}/coconut/util.py +0 -0
  87. {coconut_develop-3.2.0.post0.dev9 → coconut_develop-3.2.0.post0.dev12}/coconut_develop.egg-info/SOURCES.txt +0 -0
  88. {coconut_develop-3.2.0.post0.dev9 → coconut_develop-3.2.0.post0.dev12}/conf.py +0 -0
  89. {coconut_develop-3.2.0.post0.dev9 → coconut_develop-3.2.0.post0.dev12}/pyproject.toml +0 -0
  90. {coconut_develop-3.2.0.post0.dev9 → coconut_develop-3.2.0.post0.dev12}/setup.cfg +0 -0
  91. {coconut_develop-3.2.0.post0.dev9 → coconut_develop-3.2.0.post0.dev12}/setup.py +0 -0
  92. {coconut_develop-3.2.0.post0.dev9 → coconut_develop-3.2.0.post0.dev12}/xontrib/coconut.py +0 -0
@@ -13,16 +13,21 @@
13
13
  "Bash(python3:*)",
14
14
  "Bash(gh:*)",
15
15
  "Bash(pip:*)",
16
- "Bash(conda:*)",
17
- "Bash(xonsh:*)",
18
- "Bash(make test-tests:*)",
19
- "WebFetch(domain:coconut.readthedocs.io)",
16
+ "Bash(log \")",
17
+ "Bash(test:*)",
18
+ "Bash(done)",
20
19
  "WebFetch(domain:github.com)",
20
+ "WebFetch(domain:raw.githubusercontent.com)",
21
+ "WebFetch(domain:gist.github.com)",
22
+ "WebFetch(domain:coconut.readthedocs.io)",
21
23
  "WebFetch(domain:peps.python.org)",
22
24
  "WebFetch(domain:pypi.org)",
23
25
  "WebFetch(domain:discuss.python.org)",
24
26
  "WebFetch(domain:doc.pypy.org)",
25
- "WebFetch(domain:raw.githubusercontent.com)"
27
+ "Bash(git status:*)",
28
+ "Bash(make test-tests:*)",
29
+ "Bash(conda:*)",
30
+ "Bash(xonsh:*)"
26
31
  ]
27
32
  }
28
33
  }
@@ -1165,7 +1165,7 @@ depth: 1
1165
1165
 
1166
1166
  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/).
1167
1167
 
1168
- _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)._
1168
+ _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), [`match for`](#match-for), and [match comprehensions](#match-comprehensions)._
1169
1169
 
1170
1170
  ##### Overview
1171
1171
 
@@ -1743,6 +1743,37 @@ async with my_generator() as agen:
1743
1743
  ```
1744
1744
 
1745
1745
 
1746
+ ### `lazy import`
1747
+
1748
+ Coconut supports [PEP 810](https://peps.python.org/pep-0810/) lazy import syntax on all Python versions. Lazy imports defer module loading until the imported name is first used, rather than executing the import immediately. This can improve startup time and reduce memory usage, especially in modules with large dependency graphs.
1749
+
1750
+ Coconut supports all standard lazy import forms:
1751
+ ```coconut
1752
+ lazy import module_name
1753
+ lazy import module_name as alias
1754
+ lazy from module import name
1755
+ lazy from module import name as alias
1756
+ lazy from module import name1, name2
1757
+ ```
1758
+
1759
+ When a lazy import is encountered, Coconut creates a proxy object instead of immediately loading the module. The actual import only occurs when the name is first accessed (e.g. by accessing an attribute). Import errors are also deferred—if the module doesn't exist, the `ImportError` will be raised at the point of first use, not at the import statement.
1760
+
1761
+ ##### Example
1762
+
1763
+ **Coconut:**
1764
+ ```coconut
1765
+ lazy import json
1766
+ lazy from collections import OrderedDict
1767
+
1768
+ # json is not loaded yet
1769
+ data = json.dumps({"key": "value"}) # json is loaded here
1770
+ od = OrderedDict() # collections is loaded here
1771
+ ```
1772
+
1773
+ **Python:**
1774
+ _Only supported on Python 3.15+._
1775
+
1776
+
1746
1777
  ### Handling Keyword/Variable Name Overlap
1747
1778
 
1748
1779
  In Coconut, the following keywords are also valid variable names:
@@ -2214,6 +2245,41 @@ _General showcase of how the different concatenation operators work using `numpy
2214
2245
  **Python:** _The equivalent Python array literals can be seen in the printed representations in each example._
2215
2246
 
2216
2247
 
2248
+ ### Match Comprehensions
2249
+
2250
+ Coconut supports [pattern-matching](#match) in comprehensions, where the pattern is matched against each item in the iterable. The syntax is
2251
+ ```coconut
2252
+ [<expr> [match] for <pattern> in <iterable>]
2253
+ ```
2254
+ which is equivalent to
2255
+ ```coconut
2256
+ [(def (<pattern>) => <expr>)(item) for item in <iterable>]
2257
+ ```
2258
+
2259
+ The `match` keyword is optional, just as in [`match for`](#match-for) loops. Match comprehensions work with all comprehension types: list, set, dict, and generator comprehensions. If the pattern does not match an element, a [`MatchError`](#matcherror) is raised.
2260
+
2261
+ ##### Example
2262
+
2263
+ **Coconut:**
2264
+ ```coconut
2265
+ data Pair(a, b)
2266
+ pairs = [Pair(1, 2), Pair(3, 4)]
2267
+ result = [a + b for Pair(a, b) in pairs]
2268
+ ```
2269
+
2270
+ **Python:**
2271
+ ```python
2272
+ # using coconut's Pair data type
2273
+ result = []
2274
+ for p in pairs:
2275
+ match p:
2276
+ case Pair(a, b):
2277
+ result.append(a + b)
2278
+ case _:
2279
+ raise MatchError(...)
2280
+ ```
2281
+
2282
+
2217
2283
  ### Lazy Lists
2218
2284
 
2219
2285
  Coconut supports the creation of lazy lists, where the contents in the list will be treated as an iterator and not evaluated until they are needed. Unlike normal iterators, however, lazy lists can be iterated over multiple times and still return the same result. Lazy lists can be created in Coconut simply by surrounding a comma-separated list of items with `(|` and `|)` (so-called "banana brackets") instead of `[` and `]` for a list or `(` and `)` for a tuple.
@@ -1,12 +1,12 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: coconut-develop
3
- Version: 3.2.0.post0.dev9
3
+ Version: 3.2.0.post0.dev12
4
4
  Summary: Simple, elegant, Pythonic functional programming.
5
5
  Home-page: http://coconut-lang.org
6
6
  Author: Evan Hubinger
7
7
  Author-email: evanjhub@gmail.com
8
8
  License: Apache-2.0
9
- Keywords: functional,programming,language,compiler,pattern,pattern-matching,algebraic,data type,data types,lambda,lambdas,lazy,evaluation,lazy list,lazy lists,tail,recursion,call,recursive,recursive_iterator,infix,function,composition,compose,partial,application,currying,curry,pipeline,pipe,unicode,operator,operators,frozenset,literal,syntax,destructuring,assignment,fold,datamaker,prepattern,iterator,generator,none,coalesce,coalescing,statement,lru_cache,memoization,backport,typing,embed,PEP 622,overrides,islice,itertools,functools,TYPE_CHECKING,Expected,breakpoint,help,reduce,takewhile,dropwhile,tee,count,makedata,consume,process_map,thread_map,addpattern,recursive_generator,fmap,starmap,reiterable,scan,groupsof,memoize,zip_longest,override,flatten,ident,call,safe_call,flip,const,lift,lift_apart,all_equal,collectby,mapreduce,multi_enumerate,cartesian_product,multiset,cycle,windowsof,and_then,and_then_await,async_map,py_chr,py_dict,py_hex,py_input,py_int,py_map,py_object,py_oct,py_open,py_print,py_range,py_str,py_super,py_zip,py_filter,py_reversed,py_enumerate,py_raw_input,py_xrange,py_repr,py_breakpoint,py_min,py_max,_namedtuple_of,reveal_type,reveal_locals,MatchError,CoconutWarning,__fmap__,__iter_getitem__,data,match,case,cases,where,final,addpattern,then,operator,type,copyclosure,λ
9
+ Keywords: functional,programming,language,compiler,pattern,pattern-matching,algebraic,data type,data types,lambda,lambdas,evaluation,lazy list,lazy lists,tail,recursion,call,recursive,recursive_iterator,infix,function,composition,compose,partial,application,currying,curry,pipeline,pipe,unicode,operator,operators,frozenset,literal,syntax,destructuring,assignment,fold,datamaker,prepattern,iterator,generator,none,coalesce,coalescing,statement,lru_cache,memoization,backport,typing,embed,PEP 622,overrides,islice,itertools,functools,TYPE_CHECKING,Expected,breakpoint,help,reduce,takewhile,dropwhile,tee,count,makedata,consume,process_map,thread_map,addpattern,recursive_generator,fmap,starmap,reiterable,scan,groupsof,memoize,zip_longest,override,flatten,ident,call,safe_call,flip,const,lift,lift_apart,all_equal,collectby,mapreduce,multi_enumerate,cartesian_product,multiset,cycle,windowsof,and_then,and_then_await,async_map,py_chr,py_dict,py_hex,py_input,py_int,py_map,py_object,py_oct,py_open,py_print,py_range,py_str,py_super,py_zip,py_filter,py_reversed,py_enumerate,py_raw_input,py_xrange,py_repr,py_breakpoint,py_min,py_max,_namedtuple_of,reveal_type,reveal_locals,MatchError,CoconutWarning,__fmap__,__iter_getitem__,data,match,case,cases,where,final,addpattern,then,operator,type,copyclosure,lazy
10
10
  Classifier: Development Status :: 5 - Production/Stable
11
11
  Classifier: Intended Audience :: Developers
12
12
  Classifier: Topic :: Software Development
@@ -220,27 +220,6 @@ Requires-Dist: pytest>=7; (python_version >= "3.6" and python_version < "3.8") a
220
220
  Requires-Dist: pytest<8.1,>=8.0; python_version >= "3.8" and extra == "tests"
221
221
  Requires-Dist: pexpect>=4; extra == "tests"
222
222
  Requires-Dist: pytest_remotedata>=0.3; extra == "tests"
223
- Requires-Dist: ipython>=5.4; python_version < "3" and extra == "tests"
224
- Requires-Dist: ipython<7.10,>=7.9; (python_version >= "3" and python_version < "3.7") and extra == "tests"
225
- Requires-Dist: ipython>=7.34; (python_version >= "3.7" and python_version < "3.8") and extra == "tests"
226
- Requires-Dist: ipython>=8.12; (python_version >= "3.8" and python_version < "3.9") and extra == "tests"
227
- Requires-Dist: ipython>=8.18; (python_version >= "3.9" and python_version < "3.11") and extra == "tests"
228
- Requires-Dist: ipython>=9; python_version >= "3.11" and extra == "tests"
229
- Requires-Dist: ipykernel>=4.10; python_version < "3" and extra == "tests"
230
- Requires-Dist: ipykernel>=5.5; (python_version >= "3" and python_version < "3.8") and extra == "tests"
231
- Requires-Dist: ipykernel>=6; (python_version >= "3.8" and python_version < "3.10") and extra == "tests"
232
- Requires-Dist: ipykernel>=7; python_version >= "3.10" and extra == "tests"
233
- Requires-Dist: jupyter-client>=5.3; python_version < "3.5" and extra == "tests"
234
- Requires-Dist: jupyter-client<6.1.13,>=6.1.12; (python_version >= "3.5" and python_version < "3.6") and extra == "tests"
235
- Requires-Dist: jupyter-client>=7.1.2; python_version >= "3.6" and extra == "tests"
236
- Requires-Dist: jedi<0.18,>=0.17; python_version < "3.9" and extra == "tests"
237
- Requires-Dist: jedi>=0.19; python_version >= "3.9" and extra == "tests"
238
- Requires-Dist: pywinpty<0.6,>=0.5; (python_version < "3" and os_name == "nt") and extra == "tests"
239
- Requires-Dist: jupyter>=1.1; extra == "tests"
240
- Requires-Dist: jupyter-console>=5.2; python_version < "3.5" and extra == "tests"
241
- Requires-Dist: jupyter-console>=6.1; (python_version >= "3.5" and python_version < "3.7") and extra == "tests"
242
- Requires-Dist: jupyter-console>=6.6; python_version >= "3.7" and extra == "tests"
243
- Requires-Dist: papermill>=1.2; extra == "tests"
244
223
  Provides-Extra: dev
245
224
  Requires-Dist: ipython>=5.4; python_version < "3" and extra == "dev"
246
225
  Requires-Dist: ipython<7.10,>=7.9; (python_version >= "3" and python_version < "3.7") and extra == "dev"
@@ -89,6 +89,9 @@ try:
89
89
  except ImportError:
90
90
  def _deprecated(message: _t.Text) -> _t.Callable[[_T], _T]: ... # type: ignore
91
91
 
92
+ import importlib as _importlib
93
+ _coconut_lazy_module = _importlib.import_module
94
+
92
95
  import _coconut as __coconut # we mock _coconut as a package since mypy doesn't handle namespace classes very well
93
96
  _coconut = __coconut
94
97
 
@@ -147,6 +147,7 @@ any = _builtins.any
147
147
  bool = _builtins.bool
148
148
  bytes = _builtins.bytes
149
149
  dict = _builtins.dict
150
+ dir = _builtins.dir
150
151
  enumerate = _builtins.enumerate
151
152
  filter = _builtins.filter
152
153
  float = _builtins.float
@@ -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_Expected, _coconut_MatchError, _coconut_SupportsAdd, _coconut_SupportsMinus, _coconut_SupportsMul, _coconut_SupportsPow, _coconut_SupportsTruediv, _coconut_SupportsFloordiv, _coconut_SupportsMod, _coconut_SupportsAnd, _coconut_SupportsXor, _coconut_SupportsOr, _coconut_SupportsLshift, _coconut_SupportsRshift, _coconut_SupportsMatmul, _coconut_SupportsInv, _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_complex_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_arr_concat_op, _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, _coconut_attritemgetter, _coconut_if_op, _coconut_CoconutWarning
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_Expected, _coconut_MatchError, _coconut_SupportsAdd, _coconut_SupportsMinus, _coconut_SupportsMul, _coconut_SupportsPow, _coconut_SupportsTruediv, _coconut_SupportsFloordiv, _coconut_SupportsMod, _coconut_SupportsAnd, _coconut_SupportsXor, _coconut_SupportsOr, _coconut_SupportsLshift, _coconut_SupportsRshift, _coconut_SupportsMatmul, _coconut_SupportsInv, _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_complex_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_arr_concat_op, _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, _coconut_attritemgetter, _coconut_if_op, _coconut_CoconutWarning, _coconut_lazy_module