coconut-develop 3.1.1.post0.dev2__tar.gz → 3.1.1.post0.dev4__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.
- {coconut-develop-3.1.1.post0.dev2 → coconut_develop-3.1.1.post0.dev4}/DOCS.md +5 -3
- coconut_develop-3.1.1.post0.dev4/PKG-INFO +393 -0
- {coconut-develop-3.1.1.post0.dev2 → coconut_develop-3.1.1.post0.dev4}/coconut/_pyparsing.py +2 -2
- {coconut-develop-3.1.1.post0.dev2 → coconut_develop-3.1.1.post0.dev4}/coconut/compiler/grammar.py +12 -3
- {coconut-develop-3.1.1.post0.dev2 → coconut_develop-3.1.1.post0.dev4}/coconut/compiler/matching.py +34 -16
- {coconut-develop-3.1.1.post0.dev2 → coconut_develop-3.1.1.post0.dev4}/coconut/compiler/util.py +6 -0
- {coconut-develop-3.1.1.post0.dev2 → coconut_develop-3.1.1.post0.dev4}/coconut/constants.py +2 -2
- coconut_develop-3.1.1.post0.dev4/coconut/icoconut/coconut/kernel.json +11 -0
- {coconut-develop-3.1.1.post0.dev2 → coconut_develop-3.1.1.post0.dev4}/coconut/icoconut/root.py +5 -2
- {coconut-develop-3.1.1.post0.dev2 → coconut_develop-3.1.1.post0.dev4}/coconut/root.py +1 -1
- {coconut-develop-3.1.1.post0.dev2 → coconut_develop-3.1.1.post0.dev4}/coconut/tests/src/cocotest/agnostic/primary_2.coco +21 -0
- {coconut-develop-3.1.1.post0.dev2 → coconut_develop-3.1.1.post0.dev4}/coconut/tests/src/cocotest/agnostic/suite.coco +1 -1
- {coconut-develop-3.1.1.post0.dev2 → coconut_develop-3.1.1.post0.dev4}/coconut/tests/src/extras.coco +9 -0
- coconut-develop-3.1.1.post0.dev2/PKG-INFO +0 -141
- coconut-develop-3.1.1.post0.dev2/coconut/icoconut/coconut/kernel.json +0 -11
- {coconut-develop-3.1.1.post0.dev2 → coconut_develop-3.1.1.post0.dev4}/CONTRIBUTING.md +0 -0
- {coconut-develop-3.1.1.post0.dev2 → coconut_develop-3.1.1.post0.dev4}/FAQ.md +0 -0
- {coconut-develop-3.1.1.post0.dev2 → coconut_develop-3.1.1.post0.dev4}/HELP.md +0 -0
- {coconut-develop-3.1.1.post0.dev2 → coconut_develop-3.1.1.post0.dev4}/LICENSE.txt +0 -0
- {coconut-develop-3.1.1.post0.dev2 → coconut_develop-3.1.1.post0.dev4}/MANIFEST.in +0 -0
- {coconut-develop-3.1.1.post0.dev2 → coconut_develop-3.1.1.post0.dev4}/README.rst +0 -0
- {coconut-develop-3.1.1.post0.dev2 → coconut_develop-3.1.1.post0.dev4}/__coconut__/__init__.py +0 -0
- {coconut-develop-3.1.1.post0.dev2 → coconut_develop-3.1.1.post0.dev4}/__coconut__/__init__.pyi +0 -0
- {coconut-develop-3.1.1.post0.dev2 → coconut_develop-3.1.1.post0.dev4}/__coconut__/py.typed +0 -0
- {coconut-develop-3.1.1.post0.dev2 → coconut_develop-3.1.1.post0.dev4}/_coconut/__init__.py +0 -0
- {coconut-develop-3.1.1.post0.dev2 → coconut_develop-3.1.1.post0.dev4}/_coconut/__init__.pyi +0 -0
- {coconut-develop-3.1.1.post0.dev2 → coconut_develop-3.1.1.post0.dev4}/_coconut/py.typed +0 -0
- {coconut-develop-3.1.1.post0.dev2 → coconut_develop-3.1.1.post0.dev4}/coconut/__coconut__.py +0 -0
- {coconut-develop-3.1.1.post0.dev2 → coconut_develop-3.1.1.post0.dev4}/coconut/__coconut__.pyi +0 -0
- {coconut-develop-3.1.1.post0.dev2 → coconut_develop-3.1.1.post0.dev4}/coconut/__init__.py +0 -0
- {coconut-develop-3.1.1.post0.dev2 → coconut_develop-3.1.1.post0.dev4}/coconut/__init__.pyi +0 -0
- {coconut-develop-3.1.1.post0.dev2 → coconut_develop-3.1.1.post0.dev4}/coconut/__main__.py +0 -0
- {coconut-develop-3.1.1.post0.dev2 → coconut_develop-3.1.1.post0.dev4}/coconut/api.py +0 -0
- {coconut-develop-3.1.1.post0.dev2 → coconut_develop-3.1.1.post0.dev4}/coconut/api.pyi +0 -0
- {coconut-develop-3.1.1.post0.dev2 → coconut_develop-3.1.1.post0.dev4}/coconut/command/__init__.py +0 -0
- {coconut-develop-3.1.1.post0.dev2 → coconut_develop-3.1.1.post0.dev4}/coconut/command/__init__.pyi +0 -0
- {coconut-develop-3.1.1.post0.dev2 → coconut_develop-3.1.1.post0.dev4}/coconut/command/cli.py +0 -0
- {coconut-develop-3.1.1.post0.dev2 → coconut_develop-3.1.1.post0.dev4}/coconut/command/command.py +0 -0
- {coconut-develop-3.1.1.post0.dev2 → coconut_develop-3.1.1.post0.dev4}/coconut/command/command.pyi +0 -0
- {coconut-develop-3.1.1.post0.dev2 → coconut_develop-3.1.1.post0.dev4}/coconut/command/mypy.py +0 -0
- {coconut-develop-3.1.1.post0.dev2 → coconut_develop-3.1.1.post0.dev4}/coconut/command/resources/zcoconut.pth +0 -0
- {coconut-develop-3.1.1.post0.dev2 → coconut_develop-3.1.1.post0.dev4}/coconut/command/util.py +0 -0
- {coconut-develop-3.1.1.post0.dev2 → coconut_develop-3.1.1.post0.dev4}/coconut/command/watch.py +0 -0
- {coconut-develop-3.1.1.post0.dev2 → coconut_develop-3.1.1.post0.dev4}/coconut/compiler/__init__.py +0 -0
- {coconut-develop-3.1.1.post0.dev2 → coconut_develop-3.1.1.post0.dev4}/coconut/compiler/compiler.py +0 -0
- {coconut-develop-3.1.1.post0.dev2 → coconut_develop-3.1.1.post0.dev4}/coconut/compiler/header.py +0 -0
- {coconut-develop-3.1.1.post0.dev2 → coconut_develop-3.1.1.post0.dev4}/coconut/compiler/templates/header.py_template +0 -0
- {coconut-develop-3.1.1.post0.dev2 → coconut_develop-3.1.1.post0.dev4}/coconut/convenience.py +0 -0
- {coconut-develop-3.1.1.post0.dev2 → coconut_develop-3.1.1.post0.dev4}/coconut/convenience.pyi +0 -0
- {coconut-develop-3.1.1.post0.dev2 → coconut_develop-3.1.1.post0.dev4}/coconut/exceptions.py +0 -0
- {coconut-develop-3.1.1.post0.dev2 → coconut_develop-3.1.1.post0.dev4}/coconut/highlighter.py +0 -0
- {coconut-develop-3.1.1.post0.dev2 → coconut_develop-3.1.1.post0.dev4}/coconut/icoconut/__init__.py +0 -0
- {coconut-develop-3.1.1.post0.dev2 → coconut_develop-3.1.1.post0.dev4}/coconut/icoconut/__main__.py +0 -0
- {coconut-develop-3.1.1.post0.dev2 → coconut_develop-3.1.1.post0.dev4}/coconut/icoconut/coconut_py/kernel.json +0 -0
- {coconut-develop-3.1.1.post0.dev2 → coconut_develop-3.1.1.post0.dev4}/coconut/icoconut/coconut_py2/kernel.json +0 -0
- {coconut-develop-3.1.1.post0.dev2 → coconut_develop-3.1.1.post0.dev4}/coconut/icoconut/coconut_py3/kernel.json +0 -0
- {coconut-develop-3.1.1.post0.dev2 → coconut_develop-3.1.1.post0.dev4}/coconut/icoconut/embed.py +0 -0
- {coconut-develop-3.1.1.post0.dev2 → coconut_develop-3.1.1.post0.dev4}/coconut/integrations.py +0 -0
- {coconut-develop-3.1.1.post0.dev2 → coconut_develop-3.1.1.post0.dev4}/coconut/main.py +0 -0
- {coconut-develop-3.1.1.post0.dev2 → coconut_develop-3.1.1.post0.dev4}/coconut/py.typed +0 -0
- {coconut-develop-3.1.1.post0.dev2 → coconut_develop-3.1.1.post0.dev4}/coconut/requirements.py +0 -0
- {coconut-develop-3.1.1.post0.dev2 → coconut_develop-3.1.1.post0.dev4}/coconut/terminal.py +0 -0
- {coconut-develop-3.1.1.post0.dev2 → coconut_develop-3.1.1.post0.dev4}/coconut/tests/__init__.py +0 -0
- {coconut-develop-3.1.1.post0.dev2 → coconut_develop-3.1.1.post0.dev4}/coconut/tests/__main__.py +0 -0
- {coconut-develop-3.1.1.post0.dev2 → coconut_develop-3.1.1.post0.dev4}/coconut/tests/constants_test.py +0 -0
- {coconut-develop-3.1.1.post0.dev2 → coconut_develop-3.1.1.post0.dev4}/coconut/tests/main_test.py +0 -0
- {coconut-develop-3.1.1.post0.dev2 → coconut_develop-3.1.1.post0.dev4}/coconut/tests/src/cocotest/agnostic/__init__.coco +0 -0
- {coconut-develop-3.1.1.post0.dev2 → coconut_develop-3.1.1.post0.dev4}/coconut/tests/src/cocotest/agnostic/__main__.coco +0 -0
- {coconut-develop-3.1.1.post0.dev2 → coconut_develop-3.1.1.post0.dev4}/coconut/tests/src/cocotest/agnostic/main.coco +0 -0
- {coconut-develop-3.1.1.post0.dev2 → coconut_develop-3.1.1.post0.dev4}/coconut/tests/src/cocotest/agnostic/primary_1.coco +0 -0
- {coconut-develop-3.1.1.post0.dev2 → coconut_develop-3.1.1.post0.dev4}/coconut/tests/src/cocotest/agnostic/specific.coco +0 -0
- {coconut-develop-3.1.1.post0.dev2 → coconut_develop-3.1.1.post0.dev4}/coconut/tests/src/cocotest/agnostic/tutorial.coco +0 -0
- {coconut-develop-3.1.1.post0.dev2 → coconut_develop-3.1.1.post0.dev4}/coconut/tests/src/cocotest/agnostic/util.coco +0 -0
- {coconut-develop-3.1.1.post0.dev2 → coconut_develop-3.1.1.post0.dev4}/coconut/tests/src/cocotest/non_strict/non_strict_test.coco +0 -0
- {coconut-develop-3.1.1.post0.dev2 → coconut_develop-3.1.1.post0.dev4}/coconut/tests/src/cocotest/target_2/py2_test.coco +0 -0
- {coconut-develop-3.1.1.post0.dev2 → coconut_develop-3.1.1.post0.dev4}/coconut/tests/src/cocotest/target_3/py3_test.coco +0 -0
- {coconut-develop-3.1.1.post0.dev2 → coconut_develop-3.1.1.post0.dev4}/coconut/tests/src/cocotest/target_311/py311_test.coco +0 -0
- {coconut-develop-3.1.1.post0.dev2 → coconut_develop-3.1.1.post0.dev4}/coconut/tests/src/cocotest/target_35/py35_test.coco +0 -0
- {coconut-develop-3.1.1.post0.dev2 → coconut_develop-3.1.1.post0.dev4}/coconut/tests/src/cocotest/target_36/py36_test.coco +0 -0
- {coconut-develop-3.1.1.post0.dev2 → coconut_develop-3.1.1.post0.dev4}/coconut/tests/src/cocotest/target_38/py38_test.coco +0 -0
- {coconut-develop-3.1.1.post0.dev2 → coconut_develop-3.1.1.post0.dev4}/coconut/tests/src/cocotest/target_sys/target_sys_test.coco +0 -0
- {coconut-develop-3.1.1.post0.dev2 → coconut_develop-3.1.1.post0.dev4}/coconut/tests/src/importable.coco +0 -0
- {coconut-develop-3.1.1.post0.dev2 → coconut_develop-3.1.1.post0.dev4}/coconut/tests/src/runnable.coco +0 -0
- {coconut-develop-3.1.1.post0.dev2 → coconut_develop-3.1.1.post0.dev4}/coconut/tests/src/runner.coco +0 -0
- {coconut-develop-3.1.1.post0.dev2 → coconut_develop-3.1.1.post0.dev4}/coconut/util.py +0 -0
- {coconut-develop-3.1.1.post0.dev2 → coconut_develop-3.1.1.post0.dev4}/coconut_develop.egg-info/SOURCES.txt +0 -0
- {coconut-develop-3.1.1.post0.dev2 → coconut_develop-3.1.1.post0.dev4}/conf.py +0 -0
- {coconut-develop-3.1.1.post0.dev2 → coconut_develop-3.1.1.post0.dev4}/pyproject.toml +0 -0
- {coconut-develop-3.1.1.post0.dev2 → coconut_develop-3.1.1.post0.dev4}/setup.cfg +0 -0
- {coconut-develop-3.1.1.post0.dev2 → coconut_develop-3.1.1.post0.dev4}/setup.py +0 -0
- {coconut-develop-3.1.1.post0.dev2 → coconut_develop-3.1.1.post0.dev4}/xontrib/coconut.py +0 -0
|
@@ -1006,7 +1006,7 @@ Coconut also allows a single `?` before attribute access, function calling, part
|
|
|
1006
1006
|
|
|
1007
1007
|
When using a `None`-aware operator for member access, either for a method or an attribute, the syntax is `obj?.method()` or `obj?.attr` respectively. `obj?.attr` is equivalent to `obj.attr if obj is not None else obj`. This does not prevent an `AttributeError` if `attr` is not an attribute or method of `obj`.
|
|
1008
1008
|
|
|
1009
|
-
The `None`-aware indexing operator is used identically to normal indexing, using `?[]` instead of `[]`. `seq?[index]` is equivalent to the expression `seq[index]
|
|
1009
|
+
The `None`-aware indexing operator is used identically to normal indexing, using `?[]` instead of `[]`. `seq?[index]` is equivalent to the expression `seq[index] if seq is not None else seq`. Using this operator will not prevent an `IndexError` if `index` is outside the bounds of `seq`.
|
|
1010
1010
|
|
|
1011
1011
|
Coconut also supports None-aware [pipe operators](#pipes) and [function composition pipes](#function-composition).
|
|
1012
1012
|
|
|
@@ -1204,6 +1204,7 @@ base_pattern ::= (
|
|
|
1204
1204
|
| NAME "(" patterns ")" # classes or data types
|
|
1205
1205
|
| "data" NAME "(" patterns ")" # data types
|
|
1206
1206
|
| "class" NAME "(" patterns ")" # classes
|
|
1207
|
+
| "(" name "=" pattern ... ")" # anonymous named tuples
|
|
1207
1208
|
| "{" pattern_pairs # dictionaries
|
|
1208
1209
|
["," "**" (NAME | "{}")] "}" # (keys must be constants or equality checks)
|
|
1209
1210
|
| ["s" | "f" | "m"] "{"
|
|
@@ -1269,7 +1270,8 @@ base_pattern ::= (
|
|
|
1269
1270
|
- Classes or Data Types (`<name>(<args>)`): will match as a data type if given [a Coconut `data` type](#data) (or a tuple of Coconut data types) and a class otherwise.
|
|
1270
1271
|
- Data Types (`data <name>(<args>)`): will check that whatever is in that position is of data type `<name>` and will match the attributes to `<args>`. Generally, `data <name>(<args>)` will match any data type that could have been constructed with `makedata(<name>, <args>)`. Includes support for positional arguments, named arguments, default arguments, and starred arguments. Also supports strict attributes by prepending a dot to the attribute name that raises `AttributError` if the attribute is not present rather than failing the match (e.g. `data MyData(.my_attr=<some_pattern>)`).
|
|
1271
1272
|
- Classes (`class <name>(<args>)`): does [PEP-634-style class matching](https://www.python.org/dev/peps/pep-0634/#class-patterns). Also supports strict attribute matching as above.
|
|
1272
|
-
-
|
|
1273
|
+
- Anonymous Named Tuples (`(<name>=<pattern>, ...)`): checks that the object is a `tuple` of the given length with the given attributes. For matching [anonymous `namedtuple`s](#anonymous-namedtuples).
|
|
1274
|
+
- Dict Destructuring:
|
|
1273
1275
|
- Dicts (`{<key>: <value>, ...}`): will match any mapping (`collections.abc.Mapping`) with the given keys and values that match the value patterns. Keys must be constants or equality checks.
|
|
1274
1276
|
- Dicts With Rest (`{<pairs>, **<rest>}`): will match a mapping (`collections.abc.Mapping`) containing all the `<pairs>`, and will put a `dict` of everything else into `<rest>`. If `<rest>` is `{}`, will enforce that the mapping is exactly the same length as `<pairs>`.
|
|
1275
1277
|
- Set Destructuring:
|
|
@@ -2233,7 +2235,7 @@ as a shorthand for
|
|
|
2233
2235
|
f(long_variable_name=long_variable_name)
|
|
2234
2236
|
```
|
|
2235
2237
|
|
|
2236
|
-
Such syntax is also supported in [partial application](#partial-application)
|
|
2238
|
+
Such syntax is also supported in [partial application](#partial-application), [anonymous `namedtuple`s](#anonymous-namedtuples), and [`class`/`data`/anonymous `namedtuple` patterns](#match).
|
|
2237
2239
|
|
|
2238
2240
|
_Deprecated: Coconut also supports `f(...=long_variable_name)` as an alternative shorthand syntax._
|
|
2239
2241
|
|
|
@@ -0,0 +1,393 @@
|
|
|
1
|
+
Metadata-Version: 2.1
|
|
2
|
+
Name: coconut-develop
|
|
3
|
+
Version: 3.1.1.post0.dev4
|
|
4
|
+
Summary: Simple, elegant, Pythonic functional programming.
|
|
5
|
+
Home-page: http://coconut-lang.org
|
|
6
|
+
Author: Evan Hubinger
|
|
7
|
+
Author-email: evanjhub@gmail.com
|
|
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,addpattern,then,operator,type,copyclosure,λ
|
|
10
|
+
Classifier: Development Status :: 5 - Production/Stable
|
|
11
|
+
Classifier: License :: OSI Approved :: Apache Software License
|
|
12
|
+
Classifier: Intended Audience :: Developers
|
|
13
|
+
Classifier: Topic :: Software Development
|
|
14
|
+
Classifier: Topic :: Software Development :: Code Generators
|
|
15
|
+
Classifier: Topic :: Software Development :: Compilers
|
|
16
|
+
Classifier: Topic :: Software Development :: Interpreters
|
|
17
|
+
Classifier: Topic :: Software Development :: Libraries :: Python Modules
|
|
18
|
+
Classifier: Topic :: Utilities
|
|
19
|
+
Classifier: Environment :: Console
|
|
20
|
+
Classifier: Operating System :: OS Independent
|
|
21
|
+
Classifier: Programming Language :: Python
|
|
22
|
+
Classifier: Programming Language :: Python :: 2
|
|
23
|
+
Classifier: Programming Language :: Python :: 2.6
|
|
24
|
+
Classifier: Programming Language :: Python :: 2.7
|
|
25
|
+
Classifier: Programming Language :: Python :: 3
|
|
26
|
+
Classifier: Programming Language :: Python :: 3.2
|
|
27
|
+
Classifier: Programming Language :: Python :: 3.3
|
|
28
|
+
Classifier: Programming Language :: Python :: 3.4
|
|
29
|
+
Classifier: Programming Language :: Python :: 3.5
|
|
30
|
+
Classifier: Programming Language :: Python :: 3.6
|
|
31
|
+
Classifier: Programming Language :: Python :: 3.7
|
|
32
|
+
Classifier: Programming Language :: Python :: 3.8
|
|
33
|
+
Classifier: Programming Language :: Python :: 3.9
|
|
34
|
+
Classifier: Programming Language :: Python :: 3.10
|
|
35
|
+
Classifier: Programming Language :: Python :: 3.11
|
|
36
|
+
Classifier: Programming Language :: Python :: 3.12
|
|
37
|
+
Classifier: Programming Language :: Other
|
|
38
|
+
Classifier: Programming Language :: Other Scripting Engines
|
|
39
|
+
Classifier: Programming Language :: Python :: Implementation :: CPython
|
|
40
|
+
Classifier: Programming Language :: Python :: Implementation :: PyPy
|
|
41
|
+
Classifier: Framework :: IPython
|
|
42
|
+
Classifier: Framework :: Jupyter
|
|
43
|
+
Classifier: Typing :: Typed
|
|
44
|
+
License-File: LICENSE.txt
|
|
45
|
+
Requires-Dist: setuptools>=44
|
|
46
|
+
Provides-Extra: kernel
|
|
47
|
+
Requires-Dist: ipython>=5.4; python_version < "3" and extra == "kernel"
|
|
48
|
+
Requires-Dist: ipython<7.10,>=7.9; (python_version >= "3" and python_version < "3.7") and extra == "kernel"
|
|
49
|
+
Requires-Dist: ipython>=7.34; (python_version >= "3.7" and python_version < "3.8") and extra == "kernel"
|
|
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 python_version < "3.10") and extra == "kernel"
|
|
52
|
+
Requires-Dist: ipython>=8.25; python_version >= "3.10" and extra == "kernel"
|
|
53
|
+
Requires-Dist: ipykernel>=4.10; python_version < "3" and extra == "kernel"
|
|
54
|
+
Requires-Dist: ipykernel>=5.5; (python_version >= "3" and python_version < "3.8") and extra == "kernel"
|
|
55
|
+
Requires-Dist: ipykernel>=6; python_version >= "3.8" and extra == "kernel"
|
|
56
|
+
Requires-Dist: jupyter-client>=5.3; python_version < "3.5" and extra == "kernel"
|
|
57
|
+
Requires-Dist: jupyter-client<6.1.13,>=6.1.12; (python_version >= "3.5" and python_version < "3.6") and extra == "kernel"
|
|
58
|
+
Requires-Dist: jupyter-client>=7.1.2; python_version >= "3.6" and extra == "kernel"
|
|
59
|
+
Requires-Dist: jedi<0.18,>=0.17; python_version < "3.9" and extra == "kernel"
|
|
60
|
+
Requires-Dist: jedi>=0.19; python_version >= "3.9" and extra == "kernel"
|
|
61
|
+
Requires-Dist: pywinpty<0.6,>=0.5; (python_version < "3" and os_name == "nt") and extra == "kernel"
|
|
62
|
+
Provides-Extra: watch
|
|
63
|
+
Requires-Dist: watchdog>=0.10; extra == "watch"
|
|
64
|
+
Provides-Extra: mypy
|
|
65
|
+
Requires-Dist: mypy[python2]>=1.10; extra == "mypy"
|
|
66
|
+
Requires-Dist: types-backports>=0.1; extra == "mypy"
|
|
67
|
+
Requires-Dist: typing>=3.10; python_version < "3.5" and extra == "mypy"
|
|
68
|
+
Provides-Extra: pyright
|
|
69
|
+
Requires-Dist: pyright>=1.1; extra == "pyright"
|
|
70
|
+
Requires-Dist: types-backports>=0.1; extra == "pyright"
|
|
71
|
+
Requires-Dist: typing>=3.10; python_version < "3.5" and extra == "pyright"
|
|
72
|
+
Provides-Extra: xonsh
|
|
73
|
+
Requires-Dist: xonsh>=0.9; python_version < "3.6" and extra == "xonsh"
|
|
74
|
+
Requires-Dist: xonsh>=0.11; (python_version >= "3.6" and python_version < "3.9") and extra == "xonsh"
|
|
75
|
+
Requires-Dist: xonsh>=0.16; python_version >= "3.9" and extra == "xonsh"
|
|
76
|
+
Provides-Extra: numpy
|
|
77
|
+
Requires-Dist: numpy>=1.16; (python_version < "3" and platform_python_implementation == "CPython") and extra == "numpy"
|
|
78
|
+
Requires-Dist: numpy>=1.18; (python_version >= "3.4" and python_version < "3.9") and extra == "numpy"
|
|
79
|
+
Requires-Dist: numpy>=1.26; python_version >= "3.9" and extra == "numpy"
|
|
80
|
+
Requires-Dist: pandas>=1; python_version >= "3.6" and extra == "numpy"
|
|
81
|
+
Requires-Dist: xarray>=2024; python_version >= "3.9" and extra == "numpy"
|
|
82
|
+
Provides-Extra: jupyter
|
|
83
|
+
Requires-Dist: ipython>=5.4; python_version < "3" and extra == "jupyter"
|
|
84
|
+
Requires-Dist: ipython<7.10,>=7.9; (python_version >= "3" and python_version < "3.7") and extra == "jupyter"
|
|
85
|
+
Requires-Dist: ipython>=7.34; (python_version >= "3.7" and python_version < "3.8") and extra == "jupyter"
|
|
86
|
+
Requires-Dist: ipython>=8.12; (python_version >= "3.8" and python_version < "3.9") and extra == "jupyter"
|
|
87
|
+
Requires-Dist: ipython>=8.18; (python_version >= "3.9" and python_version < "3.10") and extra == "jupyter"
|
|
88
|
+
Requires-Dist: ipython>=8.25; python_version >= "3.10" and extra == "jupyter"
|
|
89
|
+
Requires-Dist: ipykernel>=4.10; python_version < "3" and extra == "jupyter"
|
|
90
|
+
Requires-Dist: ipykernel>=5.5; (python_version >= "3" and python_version < "3.8") and extra == "jupyter"
|
|
91
|
+
Requires-Dist: ipykernel>=6; python_version >= "3.8" and extra == "jupyter"
|
|
92
|
+
Requires-Dist: jupyter-client>=5.3; python_version < "3.5" and extra == "jupyter"
|
|
93
|
+
Requires-Dist: jupyter-client<6.1.13,>=6.1.12; (python_version >= "3.5" and python_version < "3.6") and extra == "jupyter"
|
|
94
|
+
Requires-Dist: jupyter-client>=7.1.2; python_version >= "3.6" and extra == "jupyter"
|
|
95
|
+
Requires-Dist: jedi<0.18,>=0.17; python_version < "3.9" and extra == "jupyter"
|
|
96
|
+
Requires-Dist: jedi>=0.19; python_version >= "3.9" and extra == "jupyter"
|
|
97
|
+
Requires-Dist: pywinpty<0.6,>=0.5; (python_version < "3" and os_name == "nt") and extra == "jupyter"
|
|
98
|
+
Requires-Dist: jupyter>=1.0; extra == "jupyter"
|
|
99
|
+
Requires-Dist: jupyter-console>=5.2; python_version < "3.5" and extra == "jupyter"
|
|
100
|
+
Requires-Dist: jupyter-console>=6.1; (python_version >= "3.5" and python_version < "3.7") and extra == "jupyter"
|
|
101
|
+
Requires-Dist: jupyter-console>=6.6; python_version >= "3.7" and extra == "jupyter"
|
|
102
|
+
Requires-Dist: papermill>=1.2; extra == "jupyter"
|
|
103
|
+
Provides-Extra: jupyterlab
|
|
104
|
+
Requires-Dist: ipython>=5.4; python_version < "3" and extra == "jupyterlab"
|
|
105
|
+
Requires-Dist: ipython<7.10,>=7.9; (python_version >= "3" and python_version < "3.7") and extra == "jupyterlab"
|
|
106
|
+
Requires-Dist: ipython>=7.34; (python_version >= "3.7" and python_version < "3.8") and extra == "jupyterlab"
|
|
107
|
+
Requires-Dist: ipython>=8.12; (python_version >= "3.8" and python_version < "3.9") and extra == "jupyterlab"
|
|
108
|
+
Requires-Dist: ipython>=8.18; (python_version >= "3.9" and python_version < "3.10") and extra == "jupyterlab"
|
|
109
|
+
Requires-Dist: ipython>=8.25; python_version >= "3.10" and extra == "jupyterlab"
|
|
110
|
+
Requires-Dist: ipykernel>=4.10; python_version < "3" and extra == "jupyterlab"
|
|
111
|
+
Requires-Dist: ipykernel>=5.5; (python_version >= "3" and python_version < "3.8") and extra == "jupyterlab"
|
|
112
|
+
Requires-Dist: ipykernel>=6; python_version >= "3.8" and extra == "jupyterlab"
|
|
113
|
+
Requires-Dist: jupyter-client>=5.3; python_version < "3.5" and extra == "jupyterlab"
|
|
114
|
+
Requires-Dist: jupyter-client<6.1.13,>=6.1.12; (python_version >= "3.5" and python_version < "3.6") and extra == "jupyterlab"
|
|
115
|
+
Requires-Dist: jupyter-client>=7.1.2; python_version >= "3.6" and extra == "jupyterlab"
|
|
116
|
+
Requires-Dist: jedi<0.18,>=0.17; python_version < "3.9" and extra == "jupyterlab"
|
|
117
|
+
Requires-Dist: jedi>=0.19; python_version >= "3.9" and extra == "jupyterlab"
|
|
118
|
+
Requires-Dist: pywinpty<0.6,>=0.5; (python_version < "3" and os_name == "nt") and extra == "jupyterlab"
|
|
119
|
+
Requires-Dist: jupyter>=1.0; extra == "jupyterlab"
|
|
120
|
+
Requires-Dist: jupyter-console>=5.2; python_version < "3.5" and extra == "jupyterlab"
|
|
121
|
+
Requires-Dist: jupyter-console>=6.1; (python_version >= "3.5" and python_version < "3.7") and extra == "jupyterlab"
|
|
122
|
+
Requires-Dist: jupyter-console>=6.6; python_version >= "3.7" and extra == "jupyterlab"
|
|
123
|
+
Requires-Dist: papermill>=1.2; extra == "jupyterlab"
|
|
124
|
+
Requires-Dist: jupyterlab>=2.2; python_version >= "3.5" and extra == "jupyterlab"
|
|
125
|
+
Provides-Extra: jupytext
|
|
126
|
+
Requires-Dist: ipython>=5.4; python_version < "3" and extra == "jupytext"
|
|
127
|
+
Requires-Dist: ipython<7.10,>=7.9; (python_version >= "3" and python_version < "3.7") and extra == "jupytext"
|
|
128
|
+
Requires-Dist: ipython>=7.34; (python_version >= "3.7" and python_version < "3.8") and extra == "jupytext"
|
|
129
|
+
Requires-Dist: ipython>=8.12; (python_version >= "3.8" and python_version < "3.9") and extra == "jupytext"
|
|
130
|
+
Requires-Dist: ipython>=8.18; (python_version >= "3.9" and python_version < "3.10") and extra == "jupytext"
|
|
131
|
+
Requires-Dist: ipython>=8.25; python_version >= "3.10" and extra == "jupytext"
|
|
132
|
+
Requires-Dist: ipykernel>=4.10; python_version < "3" and extra == "jupytext"
|
|
133
|
+
Requires-Dist: ipykernel>=5.5; (python_version >= "3" and python_version < "3.8") and extra == "jupytext"
|
|
134
|
+
Requires-Dist: ipykernel>=6; python_version >= "3.8" and extra == "jupytext"
|
|
135
|
+
Requires-Dist: jupyter-client>=5.3; python_version < "3.5" and extra == "jupytext"
|
|
136
|
+
Requires-Dist: jupyter-client<6.1.13,>=6.1.12; (python_version >= "3.5" and python_version < "3.6") and extra == "jupytext"
|
|
137
|
+
Requires-Dist: jupyter-client>=7.1.2; python_version >= "3.6" and extra == "jupytext"
|
|
138
|
+
Requires-Dist: jedi<0.18,>=0.17; python_version < "3.9" and extra == "jupytext"
|
|
139
|
+
Requires-Dist: jedi>=0.19; python_version >= "3.9" and extra == "jupytext"
|
|
140
|
+
Requires-Dist: pywinpty<0.6,>=0.5; (python_version < "3" and os_name == "nt") and extra == "jupytext"
|
|
141
|
+
Requires-Dist: jupyter>=1.0; extra == "jupytext"
|
|
142
|
+
Requires-Dist: jupyter-console>=5.2; python_version < "3.5" and extra == "jupytext"
|
|
143
|
+
Requires-Dist: jupyter-console>=6.1; (python_version >= "3.5" and python_version < "3.7") and extra == "jupytext"
|
|
144
|
+
Requires-Dist: jupyter-console>=6.6; python_version >= "3.7" and extra == "jupytext"
|
|
145
|
+
Requires-Dist: papermill>=1.2; extra == "jupytext"
|
|
146
|
+
Requires-Dist: jupytext>=1.8; python_version >= "3" and extra == "jupytext"
|
|
147
|
+
Provides-Extra: all
|
|
148
|
+
Requires-Dist: ipython>=5.4; python_version < "3" and extra == "all"
|
|
149
|
+
Requires-Dist: ipython<7.10,>=7.9; (python_version >= "3" and python_version < "3.7") and extra == "all"
|
|
150
|
+
Requires-Dist: ipython>=7.34; (python_version >= "3.7" and python_version < "3.8") and extra == "all"
|
|
151
|
+
Requires-Dist: ipython>=8.12; (python_version >= "3.8" and python_version < "3.9") and extra == "all"
|
|
152
|
+
Requires-Dist: ipython>=8.18; (python_version >= "3.9" and python_version < "3.10") and extra == "all"
|
|
153
|
+
Requires-Dist: ipython>=8.25; python_version >= "3.10" and extra == "all"
|
|
154
|
+
Requires-Dist: ipykernel>=4.10; python_version < "3" and extra == "all"
|
|
155
|
+
Requires-Dist: ipykernel>=5.5; (python_version >= "3" and python_version < "3.8") and extra == "all"
|
|
156
|
+
Requires-Dist: ipykernel>=6; python_version >= "3.8" and extra == "all"
|
|
157
|
+
Requires-Dist: jupyter-client>=5.3; python_version < "3.5" and extra == "all"
|
|
158
|
+
Requires-Dist: jupyter-client<6.1.13,>=6.1.12; (python_version >= "3.5" and python_version < "3.6") and extra == "all"
|
|
159
|
+
Requires-Dist: jupyter-client>=7.1.2; python_version >= "3.6" and extra == "all"
|
|
160
|
+
Requires-Dist: jedi<0.18,>=0.17; python_version < "3.9" and extra == "all"
|
|
161
|
+
Requires-Dist: jedi>=0.19; python_version >= "3.9" and extra == "all"
|
|
162
|
+
Requires-Dist: pywinpty<0.6,>=0.5; (python_version < "3" and os_name == "nt") and extra == "all"
|
|
163
|
+
Requires-Dist: watchdog>=0.10; extra == "all"
|
|
164
|
+
Requires-Dist: mypy[python2]>=1.10; extra == "all"
|
|
165
|
+
Requires-Dist: types-backports>=0.1; extra == "all"
|
|
166
|
+
Requires-Dist: typing>=3.10; python_version < "3.5" and extra == "all"
|
|
167
|
+
Requires-Dist: pyright>=1.1; extra == "all"
|
|
168
|
+
Requires-Dist: xonsh>=0.9; python_version < "3.6" and extra == "all"
|
|
169
|
+
Requires-Dist: xonsh>=0.11; (python_version >= "3.6" and python_version < "3.9") and extra == "all"
|
|
170
|
+
Requires-Dist: xonsh>=0.16; python_version >= "3.9" and extra == "all"
|
|
171
|
+
Requires-Dist: numpy>=1.16; (python_version < "3" and platform_python_implementation == "CPython") and extra == "all"
|
|
172
|
+
Requires-Dist: numpy>=1.18; (python_version >= "3.4" and python_version < "3.9") and extra == "all"
|
|
173
|
+
Requires-Dist: numpy>=1.26; python_version >= "3.9" and extra == "all"
|
|
174
|
+
Requires-Dist: pandas>=1; python_version >= "3.6" and extra == "all"
|
|
175
|
+
Requires-Dist: xarray>=2024; python_version >= "3.9" and extra == "all"
|
|
176
|
+
Requires-Dist: jupyter>=1.0; extra == "all"
|
|
177
|
+
Requires-Dist: jupyter-console>=5.2; python_version < "3.5" and extra == "all"
|
|
178
|
+
Requires-Dist: jupyter-console>=6.1; (python_version >= "3.5" and python_version < "3.7") and extra == "all"
|
|
179
|
+
Requires-Dist: jupyter-console>=6.6; python_version >= "3.7" and extra == "all"
|
|
180
|
+
Requires-Dist: papermill>=1.2; extra == "all"
|
|
181
|
+
Requires-Dist: jupyterlab>=2.2; python_version >= "3.5" and extra == "all"
|
|
182
|
+
Requires-Dist: jupytext>=1.8; python_version >= "3" and extra == "all"
|
|
183
|
+
Provides-Extra: ipython
|
|
184
|
+
Requires-Dist: ipython>=5.4; python_version < "3" and extra == "ipython"
|
|
185
|
+
Requires-Dist: ipython<7.10,>=7.9; (python_version >= "3" and python_version < "3.7") and extra == "ipython"
|
|
186
|
+
Requires-Dist: ipython>=7.34; (python_version >= "3.7" and python_version < "3.8") and extra == "ipython"
|
|
187
|
+
Requires-Dist: ipython>=8.12; (python_version >= "3.8" and python_version < "3.9") and extra == "ipython"
|
|
188
|
+
Requires-Dist: ipython>=8.18; (python_version >= "3.9" and python_version < "3.10") and extra == "ipython"
|
|
189
|
+
Requires-Dist: ipython>=8.25; python_version >= "3.10" and extra == "ipython"
|
|
190
|
+
Requires-Dist: ipykernel>=4.10; python_version < "3" and extra == "ipython"
|
|
191
|
+
Requires-Dist: ipykernel>=5.5; (python_version >= "3" and python_version < "3.8") and extra == "ipython"
|
|
192
|
+
Requires-Dist: ipykernel>=6; python_version >= "3.8" and extra == "ipython"
|
|
193
|
+
Requires-Dist: jupyter-client>=5.3; python_version < "3.5" and extra == "ipython"
|
|
194
|
+
Requires-Dist: jupyter-client<6.1.13,>=6.1.12; (python_version >= "3.5" and python_version < "3.6") and extra == "ipython"
|
|
195
|
+
Requires-Dist: jupyter-client>=7.1.2; python_version >= "3.6" and extra == "ipython"
|
|
196
|
+
Requires-Dist: jedi<0.18,>=0.17; python_version < "3.9" and extra == "ipython"
|
|
197
|
+
Requires-Dist: jedi>=0.19; python_version >= "3.9" and extra == "ipython"
|
|
198
|
+
Requires-Dist: pywinpty<0.6,>=0.5; (python_version < "3" and os_name == "nt") and extra == "ipython"
|
|
199
|
+
Requires-Dist: jupyter>=1.0; extra == "ipython"
|
|
200
|
+
Requires-Dist: jupyter-console>=5.2; python_version < "3.5" and extra == "ipython"
|
|
201
|
+
Requires-Dist: jupyter-console>=6.1; (python_version >= "3.5" and python_version < "3.7") and extra == "ipython"
|
|
202
|
+
Requires-Dist: jupyter-console>=6.6; python_version >= "3.7" and extra == "ipython"
|
|
203
|
+
Requires-Dist: papermill>=1.2; extra == "ipython"
|
|
204
|
+
Provides-Extra: docs
|
|
205
|
+
Requires-Dist: sphinx>=7; extra == "docs"
|
|
206
|
+
Requires-Dist: pygments>=2.3; python_version < "3.9" and extra == "docs"
|
|
207
|
+
Requires-Dist: pygments>=2.18; python_version >= "3.9" and extra == "docs"
|
|
208
|
+
Requires-Dist: myst-parser>=3; extra == "docs"
|
|
209
|
+
Requires-Dist: pydata-sphinx-theme>=0.15; extra == "docs"
|
|
210
|
+
Provides-Extra: tests
|
|
211
|
+
Requires-Dist: pytest>=3; python_version < "3.6" and extra == "tests"
|
|
212
|
+
Requires-Dist: pytest>=7; (python_version >= "3.6" and python_version < "3.8") and extra == "tests"
|
|
213
|
+
Requires-Dist: pytest<8.1,>=8.0; python_version >= "3.8" and extra == "tests"
|
|
214
|
+
Requires-Dist: pexpect>=4; extra == "tests"
|
|
215
|
+
Requires-Dist: numpy>=1.16; (python_version < "3" and platform_python_implementation == "CPython") and extra == "tests"
|
|
216
|
+
Requires-Dist: numpy>=1.18; (python_version >= "3.4" and python_version < "3.9") and extra == "tests"
|
|
217
|
+
Requires-Dist: numpy>=1.26; python_version >= "3.9" and extra == "tests"
|
|
218
|
+
Requires-Dist: pandas>=1; python_version >= "3.6" and extra == "tests"
|
|
219
|
+
Requires-Dist: xarray>=2024; python_version >= "3.9" and extra == "tests"
|
|
220
|
+
Requires-Dist: ipython>=5.4; python_version < "3" and extra == "tests"
|
|
221
|
+
Requires-Dist: ipython<7.10,>=7.9; (python_version >= "3" and python_version < "3.7") and extra == "tests"
|
|
222
|
+
Requires-Dist: ipython>=7.34; (python_version >= "3.7" and python_version < "3.8") and extra == "tests"
|
|
223
|
+
Requires-Dist: ipython>=8.12; (python_version >= "3.8" and python_version < "3.9") and extra == "tests"
|
|
224
|
+
Requires-Dist: ipython>=8.18; (python_version >= "3.9" and python_version < "3.10") and extra == "tests"
|
|
225
|
+
Requires-Dist: ipython>=8.25; python_version >= "3.10" and extra == "tests"
|
|
226
|
+
Requires-Dist: ipykernel>=4.10; python_version < "3" and extra == "tests"
|
|
227
|
+
Requires-Dist: ipykernel>=5.5; (python_version >= "3" and python_version < "3.8") and extra == "tests"
|
|
228
|
+
Requires-Dist: ipykernel>=6; python_version >= "3.8" and extra == "tests"
|
|
229
|
+
Requires-Dist: jupyter-client>=5.3; python_version < "3.5" and extra == "tests"
|
|
230
|
+
Requires-Dist: jupyter-client<6.1.13,>=6.1.12; (python_version >= "3.5" and python_version < "3.6") and extra == "tests"
|
|
231
|
+
Requires-Dist: jupyter-client>=7.1.2; python_version >= "3.6" and extra == "tests"
|
|
232
|
+
Requires-Dist: jedi<0.18,>=0.17; python_version < "3.9" and extra == "tests"
|
|
233
|
+
Requires-Dist: jedi>=0.19; python_version >= "3.9" and extra == "tests"
|
|
234
|
+
Requires-Dist: pywinpty<0.6,>=0.5; (python_version < "3" and os_name == "nt") and extra == "tests"
|
|
235
|
+
Requires-Dist: jupyter>=1.0; extra == "tests"
|
|
236
|
+
Requires-Dist: jupyter-console>=5.2; python_version < "3.5" and extra == "tests"
|
|
237
|
+
Requires-Dist: jupyter-console>=6.1; (python_version >= "3.5" and python_version < "3.7") and extra == "tests"
|
|
238
|
+
Requires-Dist: jupyter-console>=6.6; python_version >= "3.7" and extra == "tests"
|
|
239
|
+
Requires-Dist: papermill>=1.2; extra == "tests"
|
|
240
|
+
Provides-Extra: dev
|
|
241
|
+
Requires-Dist: ipython>=5.4; python_version < "3" and extra == "dev"
|
|
242
|
+
Requires-Dist: ipython<7.10,>=7.9; (python_version >= "3" and python_version < "3.7") and extra == "dev"
|
|
243
|
+
Requires-Dist: ipython>=7.34; (python_version >= "3.7" and python_version < "3.8") and extra == "dev"
|
|
244
|
+
Requires-Dist: ipython>=8.12; (python_version >= "3.8" and python_version < "3.9") and extra == "dev"
|
|
245
|
+
Requires-Dist: ipython>=8.18; (python_version >= "3.9" and python_version < "3.10") and extra == "dev"
|
|
246
|
+
Requires-Dist: ipython>=8.25; python_version >= "3.10" and extra == "dev"
|
|
247
|
+
Requires-Dist: ipykernel>=4.10; python_version < "3" and extra == "dev"
|
|
248
|
+
Requires-Dist: ipykernel>=5.5; (python_version >= "3" and python_version < "3.8") and extra == "dev"
|
|
249
|
+
Requires-Dist: ipykernel>=6; python_version >= "3.8" and extra == "dev"
|
|
250
|
+
Requires-Dist: jupyter-client>=5.3; python_version < "3.5" and extra == "dev"
|
|
251
|
+
Requires-Dist: jupyter-client<6.1.13,>=6.1.12; (python_version >= "3.5" and python_version < "3.6") and extra == "dev"
|
|
252
|
+
Requires-Dist: jupyter-client>=7.1.2; python_version >= "3.6" and extra == "dev"
|
|
253
|
+
Requires-Dist: jedi<0.18,>=0.17; python_version < "3.9" and extra == "dev"
|
|
254
|
+
Requires-Dist: jedi>=0.19; python_version >= "3.9" and extra == "dev"
|
|
255
|
+
Requires-Dist: pywinpty<0.6,>=0.5; (python_version < "3" and os_name == "nt") and extra == "dev"
|
|
256
|
+
Requires-Dist: watchdog>=0.10; extra == "dev"
|
|
257
|
+
Requires-Dist: mypy[python2]>=1.10; extra == "dev"
|
|
258
|
+
Requires-Dist: types-backports>=0.1; extra == "dev"
|
|
259
|
+
Requires-Dist: typing>=3.10; python_version < "3.5" and extra == "dev"
|
|
260
|
+
Requires-Dist: pyright>=1.1; extra == "dev"
|
|
261
|
+
Requires-Dist: xonsh>=0.9; python_version < "3.6" and extra == "dev"
|
|
262
|
+
Requires-Dist: xonsh>=0.11; (python_version >= "3.6" and python_version < "3.9") and extra == "dev"
|
|
263
|
+
Requires-Dist: xonsh>=0.16; python_version >= "3.9" and extra == "dev"
|
|
264
|
+
Requires-Dist: numpy>=1.16; (python_version < "3" and platform_python_implementation == "CPython") and extra == "dev"
|
|
265
|
+
Requires-Dist: numpy>=1.18; (python_version >= "3.4" and python_version < "3.9") and extra == "dev"
|
|
266
|
+
Requires-Dist: numpy>=1.26; python_version >= "3.9" and extra == "dev"
|
|
267
|
+
Requires-Dist: pandas>=1; python_version >= "3.6" and extra == "dev"
|
|
268
|
+
Requires-Dist: xarray>=2024; python_version >= "3.9" and extra == "dev"
|
|
269
|
+
Requires-Dist: jupyter>=1.0; extra == "dev"
|
|
270
|
+
Requires-Dist: jupyter-console>=5.2; python_version < "3.5" and extra == "dev"
|
|
271
|
+
Requires-Dist: jupyter-console>=6.1; (python_version >= "3.5" and python_version < "3.7") and extra == "dev"
|
|
272
|
+
Requires-Dist: jupyter-console>=6.6; python_version >= "3.7" and extra == "dev"
|
|
273
|
+
Requires-Dist: papermill>=1.2; extra == "dev"
|
|
274
|
+
Requires-Dist: jupyterlab>=2.2; python_version >= "3.5" and extra == "dev"
|
|
275
|
+
Requires-Dist: jupytext>=1.8; python_version >= "3" and extra == "dev"
|
|
276
|
+
Requires-Dist: sphinx>=7; extra == "dev"
|
|
277
|
+
Requires-Dist: pygments>=2.3; python_version < "3.9" and extra == "dev"
|
|
278
|
+
Requires-Dist: pygments>=2.18; python_version >= "3.9" and extra == "dev"
|
|
279
|
+
Requires-Dist: myst-parser>=3; extra == "dev"
|
|
280
|
+
Requires-Dist: pydata-sphinx-theme>=0.15; extra == "dev"
|
|
281
|
+
Requires-Dist: pytest>=3; python_version < "3.6" and extra == "dev"
|
|
282
|
+
Requires-Dist: pytest>=7; (python_version >= "3.6" and python_version < "3.8") and extra == "dev"
|
|
283
|
+
Requires-Dist: pytest<8.1,>=8.0; python_version >= "3.8" and extra == "dev"
|
|
284
|
+
Requires-Dist: pexpect>=4; extra == "dev"
|
|
285
|
+
Requires-Dist: pyparsing<2.4.8,>=2.4.7; extra == "dev"
|
|
286
|
+
Requires-Dist: pre-commit>=3; python_version >= "3" and extra == "dev"
|
|
287
|
+
Requires-Dist: requests>=2.32; extra == "dev"
|
|
288
|
+
Requires-Dist: vprof>=0.36; extra == "dev"
|
|
289
|
+
Requires-Dist: py-spy>=0.3; extra == "dev"
|
|
290
|
+
Requires-Dist: argparse>=1.4; python_version < "2.7"
|
|
291
|
+
Requires-Dist: psutil>=5; python_version >= "2.7"
|
|
292
|
+
Requires-Dist: futures>=3.4; python_version < "3"
|
|
293
|
+
Requires-Dist: backports.functools-lru-cache>=1.6; python_version < "3"
|
|
294
|
+
Requires-Dist: prompt_toolkit<2,>=1; python_version < "3"
|
|
295
|
+
Requires-Dist: prompt_toolkit>=1; python_version >= "3"
|
|
296
|
+
Requires-Dist: pygments>=2.3; python_version < "3.9"
|
|
297
|
+
Requires-Dist: pygments>=2.18; python_version >= "3.9"
|
|
298
|
+
Requires-Dist: typing_extensions>=3.10; python_version < "3.6"
|
|
299
|
+
Requires-Dist: typing_extensions>=4.1; python_version >= "3.6" and python_version < "3.7"
|
|
300
|
+
Requires-Dist: dataclasses>=0.8; python_version >= "3.6" and python_version < "3.7"
|
|
301
|
+
Requires-Dist: typing_extensions>=4.7; python_version >= "3.7" and python_version < "3.8"
|
|
302
|
+
Requires-Dist: typing_extensions>=4.12; python_version >= "3.8"
|
|
303
|
+
Requires-Dist: trollius>=2.2; python_version < "3" and platform_python_implementation == "CPython"
|
|
304
|
+
Requires-Dist: aenum>=3.1.15; python_version < "3.4"
|
|
305
|
+
Requires-Dist: typing>=3.10; python_version < "3.5"
|
|
306
|
+
Requires-Dist: async_generator>=1.10; python_version >= "3.5"
|
|
307
|
+
Requires-Dist: exceptiongroup>=1; python_version >= "3.7" and python_version < "3.11"
|
|
308
|
+
Requires-Dist: anyio>=3; python_version >= "3.6"
|
|
309
|
+
Requires-Dist: cPyparsing<2.4.7.2.5,>=2.4.7.2.4.0; platform_python_implementation == "CPython"
|
|
310
|
+
Requires-Dist: pyparsing<2.4.8,>=2.4.7; platform_python_implementation != "CPython"
|
|
311
|
+
|
|
312
|
+
|logo| Coconut
|
|
313
|
+
==============
|
|
314
|
+
|
|
315
|
+
..
|
|
316
|
+
<insert toctree here>
|
|
317
|
+
|
|
318
|
+
.. |logo| image:: https://github.com/evhub/coconut/raw/gh-pages/favicon-32x32.png
|
|
319
|
+
|
|
320
|
+
.. image:: https://opencollective.com/coconut/backers/badge.svg
|
|
321
|
+
:alt: Backers on Open Collective
|
|
322
|
+
:target: #backers
|
|
323
|
+
.. image:: https://opencollective.com/coconut/sponsors/badge.svg
|
|
324
|
+
:alt: Sponsors on Open Collective
|
|
325
|
+
:target: #sponsors
|
|
326
|
+
.. image:: https://badges.gitter.im/evhub/coconut.svg
|
|
327
|
+
:alt: Join the chat at https://gitter.im/evhub/coconut
|
|
328
|
+
:target: https://gitter.im/evhub/coconut?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge
|
|
329
|
+
|
|
330
|
+
Coconut (`coconut-lang.org`__) is a variant of Python_ that **adds on top of Python syntax** new features for simple, elegant, Pythonic **functional programming**.
|
|
331
|
+
|
|
332
|
+
__ Coconut_
|
|
333
|
+
.. _Coconut: http://coconut-lang.org/
|
|
334
|
+
|
|
335
|
+
Coconut is developed on GitHub_ and hosted on PyPI_. Installing Coconut is as easy as opening a command prompt and entering::
|
|
336
|
+
|
|
337
|
+
pip install coconut
|
|
338
|
+
|
|
339
|
+
To help you get started, check out these links for more information about Coconut:
|
|
340
|
+
|
|
341
|
+
- Tutorial_: If you're new to Coconut, a good place to start is Coconut's **tutorial**.
|
|
342
|
+
- Documentation_: If you're looking for info about a specific feature, check out Coconut's **documentation**.
|
|
343
|
+
- `Online Interpreter`_: If you want to try Coconut in your browser, check out Coconut's **online interpreter**.
|
|
344
|
+
- FAQ_: If you have general questions about Coconut—like who Coconut is built for and whether or not you should use it—Coconut's frequently asked questions are often the best place to start.
|
|
345
|
+
- `Create a New Issue <https://github.com/evhub/coconut/issues/new>`_: If you're having a problem with Coconut, creating a new issue detailing the problem will allow it to be addressed as soon as possible.
|
|
346
|
+
- Gitter_: For any questions, concerns, or comments about anything Coconut-related, ask around at Coconut's Gitter, a GitHub-integrated chat room for Coconut developers.
|
|
347
|
+
- Releases_: Want to know what's been added in recent Coconut versions? Check out the release log for all the new features and fixes.
|
|
348
|
+
|
|
349
|
+
.. _Python: https://www.python.org/
|
|
350
|
+
.. _PyPI: https://pypi.python.org/pypi/coconut
|
|
351
|
+
.. _Tutorial: http://coconut.readthedocs.io/en/latest/HELP.html
|
|
352
|
+
.. _Documentation: http://coconut.readthedocs.io/en/latest/DOCS.html
|
|
353
|
+
.. _`Online Interpreter`: https://cs121-team-panda.github.io/coconut-interpreter
|
|
354
|
+
.. _FAQ: http://coconut.readthedocs.io/en/latest/FAQ.html
|
|
355
|
+
.. _GitHub: https://github.com/evhub/coconut
|
|
356
|
+
.. _Gitter: https://gitter.im/evhub/coconut
|
|
357
|
+
.. _Releases: https://github.com/evhub/coconut/releases
|
|
358
|
+
|
|
359
|
+
Credits
|
|
360
|
+
+++++++
|
|
361
|
+
|
|
362
|
+
Contributors
|
|
363
|
+
------------
|
|
364
|
+
|
|
365
|
+
This project exists thanks to all the people who contribute! `Become a contributor`__.
|
|
366
|
+
|
|
367
|
+
.. image:: https://opencollective.com/coconut/contributors.svg?width=890&button=false
|
|
368
|
+
:target: https://github.com/evhub/coconut/graphs/contributors
|
|
369
|
+
|
|
370
|
+
__ Contributor_
|
|
371
|
+
.. _Contributor: http://coconut.readthedocs.io/en/develop/CONTRIBUTING.html
|
|
372
|
+
|
|
373
|
+
Backers
|
|
374
|
+
-------
|
|
375
|
+
|
|
376
|
+
Thank you to all our backers! `Become a backer`__.
|
|
377
|
+
|
|
378
|
+
.. image:: https://opencollective.com/coconut/backers.svg?width=890
|
|
379
|
+
:target: https://opencollective.com/coconut#backers
|
|
380
|
+
|
|
381
|
+
__ Backer_
|
|
382
|
+
.. _Backer: https://opencollective.com/coconut#backer
|
|
383
|
+
|
|
384
|
+
Sponsors
|
|
385
|
+
--------
|
|
386
|
+
|
|
387
|
+
Support Coconut by becoming a sponsor. Your logo will show up here with a link to your website. `Become a sponsor`__.
|
|
388
|
+
|
|
389
|
+
.. image:: https://opencollective.com/XX/sponsor/0/avatar.svg
|
|
390
|
+
:target: https://opencollective.com/coconut/sponsor/0/website
|
|
391
|
+
|
|
392
|
+
__ Sponsor_
|
|
393
|
+
.. _Sponsor: https://opencollective.com/coconut#sponsor
|
|
@@ -46,7 +46,7 @@ from coconut.constants import (
|
|
|
46
46
|
never_clear_incremental_cache,
|
|
47
47
|
warn_on_multiline_regex,
|
|
48
48
|
num_displayed_timing_items,
|
|
49
|
-
|
|
49
|
+
use_pyparsing_cache_file,
|
|
50
50
|
use_line_by_line_parser,
|
|
51
51
|
incremental_use_hybrid,
|
|
52
52
|
)
|
|
@@ -254,7 +254,7 @@ SUPPORTS_ADAPTIVE = (
|
|
|
254
254
|
and hasattr(MatchFirst, "setAdaptiveMode")
|
|
255
255
|
)
|
|
256
256
|
|
|
257
|
-
USE_CACHE = SUPPORTS_INCREMENTAL and
|
|
257
|
+
USE_CACHE = SUPPORTS_INCREMENTAL and use_pyparsing_cache_file
|
|
258
258
|
USE_LINE_BY_LINE = USE_COMPUTATION_GRAPH and use_line_by_line_parser
|
|
259
259
|
|
|
260
260
|
if MODERN_PYPARSING:
|
{coconut-develop-3.1.1.post0.dev2 → coconut_develop-3.1.1.post0.dev4}/coconut/compiler/grammar.py
RENAMED
|
@@ -1995,8 +1995,17 @@ class Grammar(object):
|
|
|
1995
1995
|
|
|
1996
1996
|
del_stmt = addspace(keyword("del") - simple_assignlist)
|
|
1997
1997
|
|
|
1998
|
-
|
|
1999
|
-
|
|
1998
|
+
interior_name_match = labeled_group(setname, "var")
|
|
1999
|
+
matchlist_anon_named_tuple_item = (
|
|
2000
|
+
Group(Optional(dot) + unsafe_name) + equals + match
|
|
2001
|
+
| Group(Optional(dot) + interior_name_match) + equals
|
|
2002
|
+
)
|
|
2003
|
+
matchlist_data_item = (
|
|
2004
|
+
matchlist_anon_named_tuple_item
|
|
2005
|
+
| Optional(star) + match
|
|
2006
|
+
)
|
|
2007
|
+
matchlist_data = Group(Optional(tokenlist(Group(matchlist_data_item), comma)))
|
|
2008
|
+
matchlist_anon_named_tuple = Optional(tokenlist(Group(matchlist_anon_named_tuple_item), comma))
|
|
2000
2009
|
|
|
2001
2010
|
match_check_equals = Forward()
|
|
2002
2011
|
match_check_equals_ref = equals
|
|
@@ -2031,7 +2040,6 @@ class Grammar(object):
|
|
|
2031
2040
|
match_tuple = Group(lparen + matchlist_tuple + rparen.suppress())
|
|
2032
2041
|
match_lazy = Group(lbanana + matchlist_list + rbanana.suppress())
|
|
2033
2042
|
|
|
2034
|
-
interior_name_match = labeled_group(setname, "var")
|
|
2035
2043
|
match_string = interleaved_tokenlist(
|
|
2036
2044
|
# f_string_atom must come first
|
|
2037
2045
|
f_string_atom("f_string") | fixed_len_string_tokens("string"),
|
|
@@ -2085,6 +2093,7 @@ class Grammar(object):
|
|
|
2085
2093
|
| (keyword("data").suppress() + dotted_refname + lparen.suppress() + matchlist_data + rparen.suppress())("data")
|
|
2086
2094
|
| (keyword("class").suppress() + dotted_refname + lparen.suppress() + matchlist_data + rparen.suppress())("class")
|
|
2087
2095
|
| (dotted_refname + lparen.suppress() + matchlist_data + rparen.suppress())("data_or_class")
|
|
2096
|
+
| (lparen.suppress() + matchlist_anon_named_tuple + rparen.suppress())("anon_named_tuple")
|
|
2088
2097
|
| Optional(keyword("as").suppress()) + setname("var"),
|
|
2089
2098
|
)
|
|
2090
2099
|
|
{coconut-develop-3.1.1.post0.dev2 → coconut_develop-3.1.1.post0.dev4}/coconut/compiler/matching.py
RENAMED
|
@@ -150,6 +150,7 @@ class Matcher(object):
|
|
|
150
150
|
"data": lambda self: self.match_data,
|
|
151
151
|
"class": lambda self: self.match_class,
|
|
152
152
|
"data_or_class": lambda self: self.match_data_or_class,
|
|
153
|
+
"anon_named_tuple": lambda self: self.match_anon_named_tuple,
|
|
153
154
|
"paren": lambda self: self.match_paren,
|
|
154
155
|
"as": lambda self: self.match_as,
|
|
155
156
|
"and": lambda self: self.match_and,
|
|
@@ -1056,10 +1057,8 @@ if {assign_to} is _coconut_sentinel:
|
|
|
1056
1057
|
for const in match:
|
|
1057
1058
|
self.add_check(const + " in " + item)
|
|
1058
1059
|
|
|
1059
|
-
def
|
|
1060
|
-
"""Split data/class match tokens into
|
|
1061
|
-
cls_name, matches = tokens
|
|
1062
|
-
|
|
1060
|
+
def split_data_or_class_matches(self, matches):
|
|
1061
|
+
"""Split data/class match tokens into pos_matches, name_matches, star_match."""
|
|
1063
1062
|
pos_matches = []
|
|
1064
1063
|
name_matches = {}
|
|
1065
1064
|
star_match = None
|
|
@@ -1073,8 +1072,7 @@ if {assign_to} is _coconut_sentinel:
|
|
|
1073
1072
|
raise CoconutDeferredSyntaxError("positional arg after keyword arg in data/class match", self.loc)
|
|
1074
1073
|
pos_matches.append(match)
|
|
1075
1074
|
# starred arg
|
|
1076
|
-
elif len(match_arg) == 2:
|
|
1077
|
-
internal_assert(match_arg[0] == "*", "invalid starred data/class match arg tokens", match_arg)
|
|
1075
|
+
elif len(match_arg) == 2 and match_arg[0] == "*":
|
|
1078
1076
|
_, match = match_arg
|
|
1079
1077
|
if star_match is not None:
|
|
1080
1078
|
raise CoconutDeferredSyntaxError("duplicate starred arg in data/class match", self.loc)
|
|
@@ -1083,23 +1081,30 @@ if {assign_to} is _coconut_sentinel:
|
|
|
1083
1081
|
star_match = match
|
|
1084
1082
|
# keyword arg
|
|
1085
1083
|
else:
|
|
1084
|
+
internal_assert(match_arg[1] == "=", "invalid keyword data/class match arg tokens", match_arg)
|
|
1086
1085
|
if len(match_arg) == 3:
|
|
1087
|
-
|
|
1088
|
-
|
|
1089
|
-
|
|
1090
|
-
|
|
1091
|
-
|
|
1092
|
-
|
|
1093
|
-
strict = True
|
|
1086
|
+
name_grp, _, match = match_arg
|
|
1087
|
+
elif len(match_arg) == 2:
|
|
1088
|
+
match_grp, _ = match_arg
|
|
1089
|
+
match = match_grp[-1]
|
|
1090
|
+
name, = match
|
|
1091
|
+
name_grp = match_grp[:-1] + [name]
|
|
1094
1092
|
else:
|
|
1095
1093
|
raise CoconutInternalException("invalid data/class match arg", match_arg)
|
|
1094
|
+
if len(name_grp) == 1:
|
|
1095
|
+
name, = name_grp
|
|
1096
|
+
strict = False
|
|
1097
|
+
else:
|
|
1098
|
+
internal_assert(name_grp[0] == ".", "invalid keyword data/class match arg tokens", name_grp)
|
|
1099
|
+
_, name = name_grp
|
|
1100
|
+
strict = True
|
|
1096
1101
|
if star_match is not None:
|
|
1097
1102
|
raise CoconutDeferredSyntaxError("both keyword arg and starred arg in data/class match", self.loc)
|
|
1098
1103
|
if name in name_matches:
|
|
1099
1104
|
raise CoconutDeferredSyntaxError("duplicate keyword arg {name!r} in data/class match".format(name=name), self.loc)
|
|
1100
1105
|
name_matches[name] = (match, strict)
|
|
1101
1106
|
|
|
1102
|
-
return
|
|
1107
|
+
return pos_matches, name_matches, star_match
|
|
1103
1108
|
|
|
1104
1109
|
def match_class_attr(self, match, attr, item):
|
|
1105
1110
|
"""Match an attribute for a class match where attr is an expression that evaluates to the attribute name."""
|
|
@@ -1119,7 +1124,8 @@ if {assign_to} is _coconut_sentinel:
|
|
|
1119
1124
|
|
|
1120
1125
|
def match_class(self, tokens, item):
|
|
1121
1126
|
"""Matches a class PEP-622-style."""
|
|
1122
|
-
cls_name,
|
|
1127
|
+
cls_name, matches = tokens
|
|
1128
|
+
pos_matches, name_matches, star_match = self.split_data_or_class_matches(matches)
|
|
1123
1129
|
|
|
1124
1130
|
self.add_check("_coconut.isinstance(" + item + ", " + cls_name + ")")
|
|
1125
1131
|
|
|
@@ -1191,7 +1197,8 @@ if _coconut.len({match_args_var}) < {num_pos_matches}:
|
|
|
1191
1197
|
|
|
1192
1198
|
def match_data(self, tokens, item):
|
|
1193
1199
|
"""Matches a data type."""
|
|
1194
|
-
cls_name,
|
|
1200
|
+
cls_name, matches = tokens
|
|
1201
|
+
pos_matches, name_matches, star_match = self.split_data_or_class_matches(matches)
|
|
1195
1202
|
|
|
1196
1203
|
self.add_check("_coconut.isinstance(" + item + ", " + cls_name + ")")
|
|
1197
1204
|
|
|
@@ -1240,6 +1247,17 @@ if _coconut.len({match_args_var}) < {num_pos_matches}:
|
|
|
1240
1247
|
with self.down_a_level():
|
|
1241
1248
|
self.add_check(temp_var)
|
|
1242
1249
|
|
|
1250
|
+
def match_anon_named_tuple(self, tokens, item):
|
|
1251
|
+
"""Matches an anonymous named tuple pattern."""
|
|
1252
|
+
pos_matches, name_matches, star_match = self.split_data_or_class_matches(tokens)
|
|
1253
|
+
internal_assert(not pos_matches and not star_match, "got invalid pos/star matches in anon named tuple pattern", (pos_matches, star_match))
|
|
1254
|
+
self.add_check("_coconut.isinstance(" + item + ", tuple)")
|
|
1255
|
+
self.add_check("_coconut.len({item}) == {expected_len}".format(
|
|
1256
|
+
item=item,
|
|
1257
|
+
expected_len=len(name_matches),
|
|
1258
|
+
))
|
|
1259
|
+
self.match_class_names(name_matches, item)
|
|
1260
|
+
|
|
1243
1261
|
def match_data_or_class(self, tokens, item):
|
|
1244
1262
|
"""Matches an ambiguous data or class match."""
|
|
1245
1263
|
cls_name, matches = tokens
|
{coconut-develop-3.1.1.post0.dev2 → coconut_develop-3.1.1.post0.dev4}/coconut/compiler/util.py
RENAMED
|
@@ -1925,6 +1925,12 @@ def rem_comment(line):
|
|
|
1925
1925
|
return base
|
|
1926
1926
|
|
|
1927
1927
|
|
|
1928
|
+
def get_comment(line):
|
|
1929
|
+
"""Extract a comment from a line if it has one."""
|
|
1930
|
+
base, comment = split_comment(line)
|
|
1931
|
+
return comment
|
|
1932
|
+
|
|
1933
|
+
|
|
1928
1934
|
def should_indent(code):
|
|
1929
1935
|
"""Determines whether the next line should be indented."""
|
|
1930
1936
|
last_line = rem_comment(code.splitlines()[-1])
|
|
@@ -135,7 +135,7 @@ packrat_cache_size = None # only works because final() clears the cache
|
|
|
135
135
|
|
|
136
136
|
streamline_grammar_for_len = 1536
|
|
137
137
|
|
|
138
|
-
|
|
138
|
+
use_pyparsing_cache_file = True
|
|
139
139
|
|
|
140
140
|
adaptive_any_of_env_var = "COCONUT_ADAPTIVE_ANY_OF"
|
|
141
141
|
use_adaptive_any_of = get_bool_env_var(adaptive_any_of_env_var, True)
|
|
@@ -638,7 +638,7 @@ main_sig = "Coconut: "
|
|
|
638
638
|
main_prompt = ">>> "
|
|
639
639
|
more_prompt = " "
|
|
640
640
|
|
|
641
|
-
default_use_cache_dir = PY34
|
|
641
|
+
default_use_cache_dir = get_bool_env_var("COCONUT_USE_CACHE_DIR", PY34)
|
|
642
642
|
coconut_cache_dir = "__coconut_cache__"
|
|
643
643
|
|
|
644
644
|
mypy_path_env_var = "MYPYPATH"
|
{coconut-develop-3.1.1.post0.dev2 → coconut_develop-3.1.1.post0.dev4}/coconut/icoconut/root.py
RENAMED
|
@@ -48,7 +48,7 @@ from coconut.constants import (
|
|
|
48
48
|
from coconut.terminal import logger
|
|
49
49
|
from coconut.util import override, memoize_with_exceptions, replace_all
|
|
50
50
|
from coconut.compiler import Compiler
|
|
51
|
-
from coconut.compiler.util import should_indent, paren_change
|
|
51
|
+
from coconut.compiler.util import should_indent, paren_change, get_comment
|
|
52
52
|
from coconut.command.util import Runner
|
|
53
53
|
|
|
54
54
|
try:
|
|
@@ -214,7 +214,10 @@ if LOAD_MODULE:
|
|
|
214
214
|
level += paren_change(no_strs_line)
|
|
215
215
|
|
|
216
216
|
# put line in parts and break if done
|
|
217
|
-
if
|
|
217
|
+
if get_comment(line):
|
|
218
|
+
parts.append(line)
|
|
219
|
+
break
|
|
220
|
+
elif level < 0:
|
|
218
221
|
parts.append(line)
|
|
219
222
|
elif no_strs_line.endswith("\\"):
|
|
220
223
|
parts.append(line[:-1])
|
|
@@ -26,7 +26,7 @@ import sys as _coconut_sys
|
|
|
26
26
|
VERSION = "3.1.1"
|
|
27
27
|
VERSION_NAME = None
|
|
28
28
|
# False for release, int >= 1 for develop
|
|
29
|
-
DEVELOP =
|
|
29
|
+
DEVELOP = 4
|
|
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"
|
|
@@ -466,6 +466,27 @@ def primary_test_2() -> bool:
|
|
|
466
466
|
""" == '\n"2"\n'
|
|
467
467
|
assert f"\{1}" == "\\1"
|
|
468
468
|
assert f''' '{1}' ''' == " '1' "
|
|
469
|
+
tuple(x=) = (x=4)
|
|
470
|
+
assert x == 4
|
|
471
|
+
tuple(x=, y=) = (x=5, y=5)
|
|
472
|
+
assert x == 5 == y
|
|
473
|
+
data tuple(x=) = (x=6)
|
|
474
|
+
assert x == 6
|
|
475
|
+
class tuple(x=) = (x=7)
|
|
476
|
+
assert x == 7
|
|
477
|
+
data tuple(x, y=) = (x=8, y=8)
|
|
478
|
+
assert x == 8 == y
|
|
479
|
+
(x=, y=) = (x=9, y=9)
|
|
480
|
+
assert x == 9 == y
|
|
481
|
+
(x=x) = (x=10)
|
|
482
|
+
assert x == 10
|
|
483
|
+
(y=y, x=) = (x=11, y=11)
|
|
484
|
+
assert x == 11 == y
|
|
485
|
+
tuple(x=) = (x=12, y=12)
|
|
486
|
+
assert x == 12
|
|
487
|
+
match (x=) in (x=13, y=13):
|
|
488
|
+
assert False
|
|
489
|
+
assert x == 12
|
|
469
490
|
|
|
470
491
|
with process_map.multiple_sequential_calls(): # type: ignore
|
|
471
492
|
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
|
|
@@ -178,7 +178,7 @@ def suite_test() -> bool:
|
|
|
178
178
|
assert init_last([1,2,3]) == ([1,2], 3)
|
|
179
179
|
assert last_two([1,2,3]) == (2, 3) == last_two_([1,2,3])
|
|
180
180
|
assert expl_ident(5) == 5 == ident(5)
|
|
181
|
-
assert mod$ <| 5 <| 3 == 2 == (%)$ <| 5 <| 3
|
|
181
|
+
assert mod$ <| 5 <| 3 == 2 == (%)$ <| 5 <| 3 # type: ignore
|
|
182
182
|
assert 5 |> dectest == 5
|
|
183
183
|
try:
|
|
184
184
|
raise ValueError()
|
{coconut-develop-3.1.1.post0.dev2 → coconut_develop-3.1.1.post0.dev4}/coconut/tests/src/extras.coco
RENAMED
|
@@ -612,6 +612,15 @@ def test_kernel() -> bool:
|
|
|
612
612
|
assert captured_msg_content is None
|
|
613
613
|
assert captured_msg_type["content"]["data"]["text/plain"] == "'()'"
|
|
614
614
|
|
|
615
|
+
assert k.do_execute("""[
|
|
616
|
+
"hey",
|
|
617
|
+
# "there", # dont want this value now
|
|
618
|
+
"is comment"
|
|
619
|
+
]""", False, True, {}, True) |> unwrap_future$(loop) |> .["status"] == "ok"
|
|
620
|
+
captured_msg_type, captured_msg_content = fake_session.captured_messages[-1]
|
|
621
|
+
assert captured_msg_content is None
|
|
622
|
+
assert captured_msg_type["content"]["data"]["text/plain"] == "['hey', 'is comment']"
|
|
623
|
+
|
|
615
624
|
return True
|
|
616
625
|
|
|
617
626
|
|
|
@@ -1,141 +0,0 @@
|
|
|
1
|
-
Metadata-Version: 2.1
|
|
2
|
-
Name: coconut-develop
|
|
3
|
-
Version: 3.1.1.post0.dev2
|
|
4
|
-
Summary: Simple, elegant, Pythonic functional programming.
|
|
5
|
-
Home-page: http://coconut-lang.org
|
|
6
|
-
Author: Evan Hubinger
|
|
7
|
-
Author-email: evanjhub@gmail.com
|
|
8
|
-
License: Apache 2.0
|
|
9
|
-
Description: |logo| Coconut
|
|
10
|
-
==============
|
|
11
|
-
|
|
12
|
-
..
|
|
13
|
-
<insert toctree here>
|
|
14
|
-
|
|
15
|
-
.. |logo| image:: https://github.com/evhub/coconut/raw/gh-pages/favicon-32x32.png
|
|
16
|
-
|
|
17
|
-
.. image:: https://opencollective.com/coconut/backers/badge.svg
|
|
18
|
-
:alt: Backers on Open Collective
|
|
19
|
-
:target: #backers
|
|
20
|
-
.. image:: https://opencollective.com/coconut/sponsors/badge.svg
|
|
21
|
-
:alt: Sponsors on Open Collective
|
|
22
|
-
:target: #sponsors
|
|
23
|
-
.. image:: https://badges.gitter.im/evhub/coconut.svg
|
|
24
|
-
:alt: Join the chat at https://gitter.im/evhub/coconut
|
|
25
|
-
:target: https://gitter.im/evhub/coconut?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge
|
|
26
|
-
|
|
27
|
-
Coconut (`coconut-lang.org`__) is a variant of Python_ that **adds on top of Python syntax** new features for simple, elegant, Pythonic **functional programming**.
|
|
28
|
-
|
|
29
|
-
__ Coconut_
|
|
30
|
-
.. _Coconut: http://coconut-lang.org/
|
|
31
|
-
|
|
32
|
-
Coconut is developed on GitHub_ and hosted on PyPI_. Installing Coconut is as easy as opening a command prompt and entering::
|
|
33
|
-
|
|
34
|
-
pip install coconut
|
|
35
|
-
|
|
36
|
-
To help you get started, check out these links for more information about Coconut:
|
|
37
|
-
|
|
38
|
-
- Tutorial_: If you're new to Coconut, a good place to start is Coconut's **tutorial**.
|
|
39
|
-
- Documentation_: If you're looking for info about a specific feature, check out Coconut's **documentation**.
|
|
40
|
-
- `Online Interpreter`_: If you want to try Coconut in your browser, check out Coconut's **online interpreter**.
|
|
41
|
-
- FAQ_: If you have general questions about Coconut—like who Coconut is built for and whether or not you should use it—Coconut's frequently asked questions are often the best place to start.
|
|
42
|
-
- `Create a New Issue <https://github.com/evhub/coconut/issues/new>`_: If you're having a problem with Coconut, creating a new issue detailing the problem will allow it to be addressed as soon as possible.
|
|
43
|
-
- Gitter_: For any questions, concerns, or comments about anything Coconut-related, ask around at Coconut's Gitter, a GitHub-integrated chat room for Coconut developers.
|
|
44
|
-
- Releases_: Want to know what's been added in recent Coconut versions? Check out the release log for all the new features and fixes.
|
|
45
|
-
|
|
46
|
-
.. _Python: https://www.python.org/
|
|
47
|
-
.. _PyPI: https://pypi.python.org/pypi/coconut
|
|
48
|
-
.. _Tutorial: http://coconut.readthedocs.io/en/latest/HELP.html
|
|
49
|
-
.. _Documentation: http://coconut.readthedocs.io/en/latest/DOCS.html
|
|
50
|
-
.. _`Online Interpreter`: https://cs121-team-panda.github.io/coconut-interpreter
|
|
51
|
-
.. _FAQ: http://coconut.readthedocs.io/en/latest/FAQ.html
|
|
52
|
-
.. _GitHub: https://github.com/evhub/coconut
|
|
53
|
-
.. _Gitter: https://gitter.im/evhub/coconut
|
|
54
|
-
.. _Releases: https://github.com/evhub/coconut/releases
|
|
55
|
-
|
|
56
|
-
Credits
|
|
57
|
-
+++++++
|
|
58
|
-
|
|
59
|
-
Contributors
|
|
60
|
-
------------
|
|
61
|
-
|
|
62
|
-
This project exists thanks to all the people who contribute! `Become a contributor`__.
|
|
63
|
-
|
|
64
|
-
.. image:: https://opencollective.com/coconut/contributors.svg?width=890&button=false
|
|
65
|
-
:target: https://github.com/evhub/coconut/graphs/contributors
|
|
66
|
-
|
|
67
|
-
__ Contributor_
|
|
68
|
-
.. _Contributor: http://coconut.readthedocs.io/en/develop/CONTRIBUTING.html
|
|
69
|
-
|
|
70
|
-
Backers
|
|
71
|
-
-------
|
|
72
|
-
|
|
73
|
-
Thank you to all our backers! `Become a backer`__.
|
|
74
|
-
|
|
75
|
-
.. image:: https://opencollective.com/coconut/backers.svg?width=890
|
|
76
|
-
:target: https://opencollective.com/coconut#backers
|
|
77
|
-
|
|
78
|
-
__ Backer_
|
|
79
|
-
.. _Backer: https://opencollective.com/coconut#backer
|
|
80
|
-
|
|
81
|
-
Sponsors
|
|
82
|
-
--------
|
|
83
|
-
|
|
84
|
-
Support Coconut by becoming a sponsor. Your logo will show up here with a link to your website. `Become a sponsor`__.
|
|
85
|
-
|
|
86
|
-
.. image:: https://opencollective.com/XX/sponsor/0/avatar.svg
|
|
87
|
-
:target: https://opencollective.com/coconut/sponsor/0/website
|
|
88
|
-
|
|
89
|
-
__ Sponsor_
|
|
90
|
-
.. _Sponsor: https://opencollective.com/coconut#sponsor
|
|
91
|
-
|
|
92
|
-
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,addpattern,then,operator,type,copyclosure,λ
|
|
93
|
-
Platform: UNKNOWN
|
|
94
|
-
Classifier: Development Status :: 5 - Production/Stable
|
|
95
|
-
Classifier: License :: OSI Approved :: Apache Software License
|
|
96
|
-
Classifier: Intended Audience :: Developers
|
|
97
|
-
Classifier: Topic :: Software Development
|
|
98
|
-
Classifier: Topic :: Software Development :: Code Generators
|
|
99
|
-
Classifier: Topic :: Software Development :: Compilers
|
|
100
|
-
Classifier: Topic :: Software Development :: Interpreters
|
|
101
|
-
Classifier: Topic :: Software Development :: Libraries :: Python Modules
|
|
102
|
-
Classifier: Topic :: Utilities
|
|
103
|
-
Classifier: Environment :: Console
|
|
104
|
-
Classifier: Operating System :: OS Independent
|
|
105
|
-
Classifier: Programming Language :: Python
|
|
106
|
-
Classifier: Programming Language :: Python :: 2
|
|
107
|
-
Classifier: Programming Language :: Python :: 2.6
|
|
108
|
-
Classifier: Programming Language :: Python :: 2.7
|
|
109
|
-
Classifier: Programming Language :: Python :: 3
|
|
110
|
-
Classifier: Programming Language :: Python :: 3.2
|
|
111
|
-
Classifier: Programming Language :: Python :: 3.3
|
|
112
|
-
Classifier: Programming Language :: Python :: 3.4
|
|
113
|
-
Classifier: Programming Language :: Python :: 3.5
|
|
114
|
-
Classifier: Programming Language :: Python :: 3.6
|
|
115
|
-
Classifier: Programming Language :: Python :: 3.7
|
|
116
|
-
Classifier: Programming Language :: Python :: 3.8
|
|
117
|
-
Classifier: Programming Language :: Python :: 3.9
|
|
118
|
-
Classifier: Programming Language :: Python :: 3.10
|
|
119
|
-
Classifier: Programming Language :: Python :: 3.11
|
|
120
|
-
Classifier: Programming Language :: Python :: 3.12
|
|
121
|
-
Classifier: Programming Language :: Other
|
|
122
|
-
Classifier: Programming Language :: Other Scripting Engines
|
|
123
|
-
Classifier: Programming Language :: Python :: Implementation :: CPython
|
|
124
|
-
Classifier: Programming Language :: Python :: Implementation :: PyPy
|
|
125
|
-
Classifier: Framework :: IPython
|
|
126
|
-
Classifier: Framework :: Jupyter
|
|
127
|
-
Classifier: Typing :: Typed
|
|
128
|
-
Provides-Extra: kernel
|
|
129
|
-
Provides-Extra: watch
|
|
130
|
-
Provides-Extra: mypy
|
|
131
|
-
Provides-Extra: pyright
|
|
132
|
-
Provides-Extra: xonsh
|
|
133
|
-
Provides-Extra: numpy
|
|
134
|
-
Provides-Extra: jupyter
|
|
135
|
-
Provides-Extra: jupyterlab
|
|
136
|
-
Provides-Extra: jupytext
|
|
137
|
-
Provides-Extra: all
|
|
138
|
-
Provides-Extra: ipython
|
|
139
|
-
Provides-Extra: docs
|
|
140
|
-
Provides-Extra: tests
|
|
141
|
-
Provides-Extra: dev
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{coconut-develop-3.1.1.post0.dev2 → coconut_develop-3.1.1.post0.dev4}/__coconut__/__init__.py
RENAMED
|
File without changes
|
{coconut-develop-3.1.1.post0.dev2 → coconut_develop-3.1.1.post0.dev4}/__coconut__/__init__.pyi
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{coconut-develop-3.1.1.post0.dev2 → coconut_develop-3.1.1.post0.dev4}/coconut/__coconut__.py
RENAMED
|
File without changes
|
{coconut-develop-3.1.1.post0.dev2 → coconut_develop-3.1.1.post0.dev4}/coconut/__coconut__.pyi
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{coconut-develop-3.1.1.post0.dev2 → coconut_develop-3.1.1.post0.dev4}/coconut/command/__init__.py
RENAMED
|
File without changes
|
{coconut-develop-3.1.1.post0.dev2 → coconut_develop-3.1.1.post0.dev4}/coconut/command/__init__.pyi
RENAMED
|
File without changes
|
{coconut-develop-3.1.1.post0.dev2 → coconut_develop-3.1.1.post0.dev4}/coconut/command/cli.py
RENAMED
|
File without changes
|
{coconut-develop-3.1.1.post0.dev2 → coconut_develop-3.1.1.post0.dev4}/coconut/command/command.py
RENAMED
|
File without changes
|
{coconut-develop-3.1.1.post0.dev2 → coconut_develop-3.1.1.post0.dev4}/coconut/command/command.pyi
RENAMED
|
File without changes
|
{coconut-develop-3.1.1.post0.dev2 → coconut_develop-3.1.1.post0.dev4}/coconut/command/mypy.py
RENAMED
|
File without changes
|
|
File without changes
|
{coconut-develop-3.1.1.post0.dev2 → coconut_develop-3.1.1.post0.dev4}/coconut/command/util.py
RENAMED
|
File without changes
|
{coconut-develop-3.1.1.post0.dev2 → coconut_develop-3.1.1.post0.dev4}/coconut/command/watch.py
RENAMED
|
File without changes
|
{coconut-develop-3.1.1.post0.dev2 → coconut_develop-3.1.1.post0.dev4}/coconut/compiler/__init__.py
RENAMED
|
File without changes
|
{coconut-develop-3.1.1.post0.dev2 → coconut_develop-3.1.1.post0.dev4}/coconut/compiler/compiler.py
RENAMED
|
File without changes
|
{coconut-develop-3.1.1.post0.dev2 → coconut_develop-3.1.1.post0.dev4}/coconut/compiler/header.py
RENAMED
|
File without changes
|
|
File without changes
|
{coconut-develop-3.1.1.post0.dev2 → coconut_develop-3.1.1.post0.dev4}/coconut/convenience.py
RENAMED
|
File without changes
|
{coconut-develop-3.1.1.post0.dev2 → coconut_develop-3.1.1.post0.dev4}/coconut/convenience.pyi
RENAMED
|
File without changes
|
|
File without changes
|
{coconut-develop-3.1.1.post0.dev2 → coconut_develop-3.1.1.post0.dev4}/coconut/highlighter.py
RENAMED
|
File without changes
|
{coconut-develop-3.1.1.post0.dev2 → coconut_develop-3.1.1.post0.dev4}/coconut/icoconut/__init__.py
RENAMED
|
File without changes
|
{coconut-develop-3.1.1.post0.dev2 → coconut_develop-3.1.1.post0.dev4}/coconut/icoconut/__main__.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{coconut-develop-3.1.1.post0.dev2 → coconut_develop-3.1.1.post0.dev4}/coconut/icoconut/embed.py
RENAMED
|
File without changes
|
{coconut-develop-3.1.1.post0.dev2 → coconut_develop-3.1.1.post0.dev4}/coconut/integrations.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{coconut-develop-3.1.1.post0.dev2 → coconut_develop-3.1.1.post0.dev4}/coconut/requirements.py
RENAMED
|
File without changes
|
|
File without changes
|
{coconut-develop-3.1.1.post0.dev2 → coconut_develop-3.1.1.post0.dev4}/coconut/tests/__init__.py
RENAMED
|
File without changes
|
{coconut-develop-3.1.1.post0.dev2 → coconut_develop-3.1.1.post0.dev4}/coconut/tests/__main__.py
RENAMED
|
File without changes
|
|
File without changes
|
{coconut-develop-3.1.1.post0.dev2 → coconut_develop-3.1.1.post0.dev4}/coconut/tests/main_test.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{coconut-develop-3.1.1.post0.dev2 → coconut_develop-3.1.1.post0.dev4}/coconut/tests/src/runner.coco
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|