coconut-develop 3.1.1.post0.dev6__tar.gz → 3.1.2.post0.dev1__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.dev6 → coconut-develop-3.1.2.post0.dev1}/DOCS.md +7 -7
- coconut-develop-3.1.2.post0.dev1/PKG-INFO +141 -0
- {coconut-develop-3.1.1.post0.dev6 → coconut-develop-3.1.2.post0.dev1}/coconut/compiler/templates/header.py_template +19 -4
- {coconut-develop-3.1.1.post0.dev6 → coconut-develop-3.1.2.post0.dev1}/coconut/constants.py +21 -9
- coconut-develop-3.1.2.post0.dev1/coconut/icoconut/coconut/kernel.json +11 -0
- {coconut-develop-3.1.1.post0.dev6 → coconut-develop-3.1.2.post0.dev1}/coconut/requirements.py +2 -1
- {coconut-develop-3.1.1.post0.dev6 → coconut-develop-3.1.2.post0.dev1}/coconut/root.py +17 -6
- {coconut-develop-3.1.1.post0.dev6 → coconut-develop-3.1.2.post0.dev1}/coconut/tests/main_test.py +2 -1
- {coconut-develop-3.1.1.post0.dev6 → coconut-develop-3.1.2.post0.dev1}/coconut/tests/src/cocotest/agnostic/primary_2.coco +3 -0
- {coconut-develop-3.1.1.post0.dev6 → coconut-develop-3.1.2.post0.dev1}/coconut/tests/src/extras.coco +4 -5
- coconut-develop-3.1.1.post0.dev6/PKG-INFO +0 -141
- coconut-develop-3.1.1.post0.dev6/coconut/icoconut/coconut/kernel.json +0 -11
- {coconut-develop-3.1.1.post0.dev6 → coconut-develop-3.1.2.post0.dev1}/CONTRIBUTING.md +0 -0
- {coconut-develop-3.1.1.post0.dev6 → coconut-develop-3.1.2.post0.dev1}/FAQ.md +0 -0
- {coconut-develop-3.1.1.post0.dev6 → coconut-develop-3.1.2.post0.dev1}/HELP.md +0 -0
- {coconut-develop-3.1.1.post0.dev6 → coconut-develop-3.1.2.post0.dev1}/LICENSE.txt +0 -0
- {coconut-develop-3.1.1.post0.dev6 → coconut-develop-3.1.2.post0.dev1}/MANIFEST.in +0 -0
- {coconut-develop-3.1.1.post0.dev6 → coconut-develop-3.1.2.post0.dev1}/README.rst +0 -0
- {coconut-develop-3.1.1.post0.dev6 → coconut-develop-3.1.2.post0.dev1}/__coconut__/__init__.py +0 -0
- {coconut-develop-3.1.1.post0.dev6 → coconut-develop-3.1.2.post0.dev1}/__coconut__/__init__.pyi +0 -0
- {coconut-develop-3.1.1.post0.dev6 → coconut-develop-3.1.2.post0.dev1}/__coconut__/py.typed +0 -0
- {coconut-develop-3.1.1.post0.dev6 → coconut-develop-3.1.2.post0.dev1}/_coconut/__init__.py +0 -0
- {coconut-develop-3.1.1.post0.dev6 → coconut-develop-3.1.2.post0.dev1}/_coconut/__init__.pyi +0 -0
- {coconut-develop-3.1.1.post0.dev6 → coconut-develop-3.1.2.post0.dev1}/_coconut/py.typed +0 -0
- {coconut-develop-3.1.1.post0.dev6 → coconut-develop-3.1.2.post0.dev1}/coconut/__coconut__.py +0 -0
- {coconut-develop-3.1.1.post0.dev6 → coconut-develop-3.1.2.post0.dev1}/coconut/__coconut__.pyi +0 -0
- {coconut-develop-3.1.1.post0.dev6 → coconut-develop-3.1.2.post0.dev1}/coconut/__init__.py +0 -0
- {coconut-develop-3.1.1.post0.dev6 → coconut-develop-3.1.2.post0.dev1}/coconut/__init__.pyi +0 -0
- {coconut-develop-3.1.1.post0.dev6 → coconut-develop-3.1.2.post0.dev1}/coconut/__main__.py +0 -0
- {coconut-develop-3.1.1.post0.dev6 → coconut-develop-3.1.2.post0.dev1}/coconut/_pyparsing.py +0 -0
- {coconut-develop-3.1.1.post0.dev6 → coconut-develop-3.1.2.post0.dev1}/coconut/api.py +0 -0
- {coconut-develop-3.1.1.post0.dev6 → coconut-develop-3.1.2.post0.dev1}/coconut/api.pyi +0 -0
- {coconut-develop-3.1.1.post0.dev6 → coconut-develop-3.1.2.post0.dev1}/coconut/command/__init__.py +0 -0
- {coconut-develop-3.1.1.post0.dev6 → coconut-develop-3.1.2.post0.dev1}/coconut/command/__init__.pyi +0 -0
- {coconut-develop-3.1.1.post0.dev6 → coconut-develop-3.1.2.post0.dev1}/coconut/command/cli.py +0 -0
- {coconut-develop-3.1.1.post0.dev6 → coconut-develop-3.1.2.post0.dev1}/coconut/command/command.py +0 -0
- {coconut-develop-3.1.1.post0.dev6 → coconut-develop-3.1.2.post0.dev1}/coconut/command/command.pyi +0 -0
- {coconut-develop-3.1.1.post0.dev6 → coconut-develop-3.1.2.post0.dev1}/coconut/command/mypy.py +0 -0
- {coconut-develop-3.1.1.post0.dev6 → coconut-develop-3.1.2.post0.dev1}/coconut/command/resources/zcoconut.pth +0 -0
- {coconut-develop-3.1.1.post0.dev6 → coconut-develop-3.1.2.post0.dev1}/coconut/command/util.py +0 -0
- {coconut-develop-3.1.1.post0.dev6 → coconut-develop-3.1.2.post0.dev1}/coconut/command/watch.py +0 -0
- {coconut-develop-3.1.1.post0.dev6 → coconut-develop-3.1.2.post0.dev1}/coconut/compiler/__init__.py +0 -0
- {coconut-develop-3.1.1.post0.dev6 → coconut-develop-3.1.2.post0.dev1}/coconut/compiler/compiler.py +0 -0
- {coconut-develop-3.1.1.post0.dev6 → coconut-develop-3.1.2.post0.dev1}/coconut/compiler/grammar.py +0 -0
- {coconut-develop-3.1.1.post0.dev6 → coconut-develop-3.1.2.post0.dev1}/coconut/compiler/header.py +0 -0
- {coconut-develop-3.1.1.post0.dev6 → coconut-develop-3.1.2.post0.dev1}/coconut/compiler/matching.py +0 -0
- {coconut-develop-3.1.1.post0.dev6 → coconut-develop-3.1.2.post0.dev1}/coconut/compiler/util.py +0 -0
- {coconut-develop-3.1.1.post0.dev6 → coconut-develop-3.1.2.post0.dev1}/coconut/convenience.py +0 -0
- {coconut-develop-3.1.1.post0.dev6 → coconut-develop-3.1.2.post0.dev1}/coconut/convenience.pyi +0 -0
- {coconut-develop-3.1.1.post0.dev6 → coconut-develop-3.1.2.post0.dev1}/coconut/exceptions.py +0 -0
- {coconut-develop-3.1.1.post0.dev6 → coconut-develop-3.1.2.post0.dev1}/coconut/highlighter.py +0 -0
- {coconut-develop-3.1.1.post0.dev6 → coconut-develop-3.1.2.post0.dev1}/coconut/icoconut/__init__.py +0 -0
- {coconut-develop-3.1.1.post0.dev6 → coconut-develop-3.1.2.post0.dev1}/coconut/icoconut/__main__.py +0 -0
- {coconut-develop-3.1.1.post0.dev6 → coconut-develop-3.1.2.post0.dev1}/coconut/icoconut/coconut_py/kernel.json +0 -0
- {coconut-develop-3.1.1.post0.dev6 → coconut-develop-3.1.2.post0.dev1}/coconut/icoconut/coconut_py2/kernel.json +0 -0
- {coconut-develop-3.1.1.post0.dev6 → coconut-develop-3.1.2.post0.dev1}/coconut/icoconut/coconut_py3/kernel.json +0 -0
- {coconut-develop-3.1.1.post0.dev6 → coconut-develop-3.1.2.post0.dev1}/coconut/icoconut/embed.py +0 -0
- {coconut-develop-3.1.1.post0.dev6 → coconut-develop-3.1.2.post0.dev1}/coconut/icoconut/root.py +0 -0
- {coconut-develop-3.1.1.post0.dev6 → coconut-develop-3.1.2.post0.dev1}/coconut/integrations.py +0 -0
- {coconut-develop-3.1.1.post0.dev6 → coconut-develop-3.1.2.post0.dev1}/coconut/main.py +0 -0
- {coconut-develop-3.1.1.post0.dev6 → coconut-develop-3.1.2.post0.dev1}/coconut/py.typed +0 -0
- {coconut-develop-3.1.1.post0.dev6 → coconut-develop-3.1.2.post0.dev1}/coconut/terminal.py +0 -0
- {coconut-develop-3.1.1.post0.dev6 → coconut-develop-3.1.2.post0.dev1}/coconut/tests/__init__.py +0 -0
- {coconut-develop-3.1.1.post0.dev6 → coconut-develop-3.1.2.post0.dev1}/coconut/tests/__main__.py +0 -0
- {coconut-develop-3.1.1.post0.dev6 → coconut-develop-3.1.2.post0.dev1}/coconut/tests/constants_test.py +0 -0
- {coconut-develop-3.1.1.post0.dev6 → coconut-develop-3.1.2.post0.dev1}/coconut/tests/src/cocotest/agnostic/__init__.coco +0 -0
- {coconut-develop-3.1.1.post0.dev6 → coconut-develop-3.1.2.post0.dev1}/coconut/tests/src/cocotest/agnostic/__main__.coco +0 -0
- {coconut-develop-3.1.1.post0.dev6 → coconut-develop-3.1.2.post0.dev1}/coconut/tests/src/cocotest/agnostic/main.coco +0 -0
- {coconut-develop-3.1.1.post0.dev6 → coconut-develop-3.1.2.post0.dev1}/coconut/tests/src/cocotest/agnostic/primary_1.coco +0 -0
- {coconut-develop-3.1.1.post0.dev6 → coconut-develop-3.1.2.post0.dev1}/coconut/tests/src/cocotest/agnostic/specific.coco +0 -0
- {coconut-develop-3.1.1.post0.dev6 → coconut-develop-3.1.2.post0.dev1}/coconut/tests/src/cocotest/agnostic/suite.coco +0 -0
- {coconut-develop-3.1.1.post0.dev6 → coconut-develop-3.1.2.post0.dev1}/coconut/tests/src/cocotest/agnostic/tutorial.coco +0 -0
- {coconut-develop-3.1.1.post0.dev6 → coconut-develop-3.1.2.post0.dev1}/coconut/tests/src/cocotest/agnostic/util.coco +0 -0
- {coconut-develop-3.1.1.post0.dev6 → coconut-develop-3.1.2.post0.dev1}/coconut/tests/src/cocotest/non_strict/non_strict_test.coco +0 -0
- {coconut-develop-3.1.1.post0.dev6 → coconut-develop-3.1.2.post0.dev1}/coconut/tests/src/cocotest/target_2/py2_test.coco +0 -0
- {coconut-develop-3.1.1.post0.dev6 → coconut-develop-3.1.2.post0.dev1}/coconut/tests/src/cocotest/target_3/py3_test.coco +0 -0
- {coconut-develop-3.1.1.post0.dev6 → coconut-develop-3.1.2.post0.dev1}/coconut/tests/src/cocotest/target_311/py311_test.coco +0 -0
- {coconut-develop-3.1.1.post0.dev6 → coconut-develop-3.1.2.post0.dev1}/coconut/tests/src/cocotest/target_35/py35_test.coco +0 -0
- {coconut-develop-3.1.1.post0.dev6 → coconut-develop-3.1.2.post0.dev1}/coconut/tests/src/cocotest/target_36/py36_test.coco +0 -0
- {coconut-develop-3.1.1.post0.dev6 → coconut-develop-3.1.2.post0.dev1}/coconut/tests/src/cocotest/target_38/py38_test.coco +0 -0
- {coconut-develop-3.1.1.post0.dev6 → coconut-develop-3.1.2.post0.dev1}/coconut/tests/src/cocotest/target_sys/target_sys_test.coco +0 -0
- {coconut-develop-3.1.1.post0.dev6 → coconut-develop-3.1.2.post0.dev1}/coconut/tests/src/importable.coco +0 -0
- {coconut-develop-3.1.1.post0.dev6 → coconut-develop-3.1.2.post0.dev1}/coconut/tests/src/runnable.coco +0 -0
- {coconut-develop-3.1.1.post0.dev6 → coconut-develop-3.1.2.post0.dev1}/coconut/tests/src/runner.coco +0 -0
- {coconut-develop-3.1.1.post0.dev6 → coconut-develop-3.1.2.post0.dev1}/coconut/util.py +0 -0
- {coconut-develop-3.1.1.post0.dev6 → coconut-develop-3.1.2.post0.dev1}/coconut_develop.egg-info/SOURCES.txt +0 -0
- {coconut-develop-3.1.1.post0.dev6 → coconut-develop-3.1.2.post0.dev1}/conf.py +0 -0
- {coconut-develop-3.1.1.post0.dev6 → coconut-develop-3.1.2.post0.dev1}/pyproject.toml +0 -0
- {coconut-develop-3.1.1.post0.dev6 → coconut-develop-3.1.2.post0.dev1}/setup.cfg +0 -0
- {coconut-develop-3.1.1.post0.dev6 → coconut-develop-3.1.2.post0.dev1}/setup.py +0 -0
- {coconut-develop-3.1.1.post0.dev6 → coconut-develop-3.1.2.post0.dev1}/xontrib/coconut.py +0 -0
|
@@ -1737,7 +1737,7 @@ The syntax for a statement lambda is
|
|
|
1737
1737
|
```
|
|
1738
1738
|
[async|match|copyclosure] def (arguments) => statement; statement; ...
|
|
1739
1739
|
```
|
|
1740
|
-
where `arguments` can be standard function arguments or [pattern-matching function definition](#pattern-matching-functions) arguments and `statement` can be
|
|
1740
|
+
where `arguments` can be standard function arguments or [pattern-matching function definition](#pattern-matching-functions) arguments and `statement` can be any non-compound statement—that is, any statement that doesn't open a code block below it (so `def x => assert x` is fine but `def x => if x: True` is not). Note that the `async`, `match`, and [`copyclosure`](#copyclosure-functions) keywords can be combined and can be in any order.
|
|
1741
1741
|
|
|
1742
1742
|
If the last `statement` (not followed by a semicolon) in a statement lambda is an `expression`, it will automatically be returned.
|
|
1743
1743
|
|
|
@@ -3805,9 +3805,9 @@ _Can’t be done quickly without Coconut’s iterable indexing, which requires m
|
|
|
3805
3805
|
|
|
3806
3806
|
#### `reduce`
|
|
3807
3807
|
|
|
3808
|
-
**reduce**(_function_, _iterable_[, _initial_]
|
|
3808
|
+
**reduce**(_function_, _iterable_[, _initial_])
|
|
3809
3809
|
|
|
3810
|
-
Coconut re-introduces Python 2's `reduce` built-in, using the `functools.reduce` version.
|
|
3810
|
+
Coconut re-introduces Python 2's `reduce` built-in, using the `functools.reduce` version. Additionally, unlike `functools.reduce`, Coconut's `reduce` always supports keyword arguments.
|
|
3811
3811
|
|
|
3812
3812
|
##### Python Docs
|
|
3813
3813
|
|
|
@@ -3937,9 +3937,9 @@ result = itertools.zip_longest(range(5), range(10))
|
|
|
3937
3937
|
|
|
3938
3938
|
#### `takewhile`
|
|
3939
3939
|
|
|
3940
|
-
**takewhile**(_predicate_, _iterable_
|
|
3940
|
+
**takewhile**(_predicate_, _iterable_)
|
|
3941
3941
|
|
|
3942
|
-
Coconut provides `itertools.takewhile` as a built-in under the name `takewhile`.
|
|
3942
|
+
Coconut provides `itertools.takewhile` as a built-in under the name `takewhile`. Additionally, unlike `itertools.takewhile`, Coconut's `takewhile` always supports keyword arguments.
|
|
3943
3943
|
|
|
3944
3944
|
##### Python Docs
|
|
3945
3945
|
|
|
@@ -3971,9 +3971,9 @@ negatives = itertools.takewhile(lambda x: x < 0, numiter)
|
|
|
3971
3971
|
|
|
3972
3972
|
#### `dropwhile`
|
|
3973
3973
|
|
|
3974
|
-
**dropwhile**(_predicate_, _iterable_
|
|
3974
|
+
**dropwhile**(_predicate_, _iterable_)
|
|
3975
3975
|
|
|
3976
|
-
Coconut provides `itertools.dropwhile` as a built-in under the name `dropwhile`.
|
|
3976
|
+
Coconut provides `itertools.dropwhile` as a built-in under the name `dropwhile`. Additionally, unlike `itertools.dropwhile`, Coconut's `dropwhile` always supports keyword arguments.
|
|
3977
3977
|
|
|
3978
3978
|
##### Python Docs
|
|
3979
3979
|
|
|
@@ -0,0 +1,141 @@
|
|
|
1
|
+
Metadata-Version: 2.1
|
|
2
|
+
Name: coconut-develop
|
|
3
|
+
Version: 3.1.2.post0.dev1
|
|
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
|
+
Provides-Extra: kernel
|
|
45
|
+
Provides-Extra: watch
|
|
46
|
+
Provides-Extra: mypy
|
|
47
|
+
Provides-Extra: pyright
|
|
48
|
+
Provides-Extra: xonsh
|
|
49
|
+
Provides-Extra: numpy
|
|
50
|
+
Provides-Extra: jupyter
|
|
51
|
+
Provides-Extra: jupyterlab
|
|
52
|
+
Provides-Extra: jupytext
|
|
53
|
+
Provides-Extra: all
|
|
54
|
+
Provides-Extra: ipython
|
|
55
|
+
Provides-Extra: docs
|
|
56
|
+
Provides-Extra: tests
|
|
57
|
+
Provides-Extra: dev
|
|
58
|
+
License-File: LICENSE.txt
|
|
59
|
+
|
|
60
|
+
|logo| Coconut
|
|
61
|
+
==============
|
|
62
|
+
|
|
63
|
+
..
|
|
64
|
+
<insert toctree here>
|
|
65
|
+
|
|
66
|
+
.. |logo| image:: https://github.com/evhub/coconut/raw/gh-pages/favicon-32x32.png
|
|
67
|
+
|
|
68
|
+
.. image:: https://opencollective.com/coconut/backers/badge.svg
|
|
69
|
+
:alt: Backers on Open Collective
|
|
70
|
+
:target: #backers
|
|
71
|
+
.. image:: https://opencollective.com/coconut/sponsors/badge.svg
|
|
72
|
+
:alt: Sponsors on Open Collective
|
|
73
|
+
:target: #sponsors
|
|
74
|
+
.. image:: https://badges.gitter.im/evhub/coconut.svg
|
|
75
|
+
:alt: Join the chat at https://gitter.im/evhub/coconut
|
|
76
|
+
:target: https://gitter.im/evhub/coconut?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge
|
|
77
|
+
|
|
78
|
+
Coconut (`coconut-lang.org`__) is a variant of Python_ that **adds on top of Python syntax** new features for simple, elegant, Pythonic **functional programming**.
|
|
79
|
+
|
|
80
|
+
__ Coconut_
|
|
81
|
+
.. _Coconut: http://coconut-lang.org/
|
|
82
|
+
|
|
83
|
+
Coconut is developed on GitHub_ and hosted on PyPI_. Installing Coconut is as easy as opening a command prompt and entering::
|
|
84
|
+
|
|
85
|
+
pip install coconut
|
|
86
|
+
|
|
87
|
+
To help you get started, check out these links for more information about Coconut:
|
|
88
|
+
|
|
89
|
+
- Tutorial_: If you're new to Coconut, a good place to start is Coconut's **tutorial**.
|
|
90
|
+
- Documentation_: If you're looking for info about a specific feature, check out Coconut's **documentation**.
|
|
91
|
+
- `Online Interpreter`_: If you want to try Coconut in your browser, check out Coconut's **online interpreter**.
|
|
92
|
+
- 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.
|
|
93
|
+
- `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.
|
|
94
|
+
- 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.
|
|
95
|
+
- Releases_: Want to know what's been added in recent Coconut versions? Check out the release log for all the new features and fixes.
|
|
96
|
+
|
|
97
|
+
.. _Python: https://www.python.org/
|
|
98
|
+
.. _PyPI: https://pypi.python.org/pypi/coconut
|
|
99
|
+
.. _Tutorial: http://coconut.readthedocs.io/en/latest/HELP.html
|
|
100
|
+
.. _Documentation: http://coconut.readthedocs.io/en/latest/DOCS.html
|
|
101
|
+
.. _`Online Interpreter`: https://cs121-team-panda.github.io/coconut-interpreter
|
|
102
|
+
.. _FAQ: http://coconut.readthedocs.io/en/latest/FAQ.html
|
|
103
|
+
.. _GitHub: https://github.com/evhub/coconut
|
|
104
|
+
.. _Gitter: https://gitter.im/evhub/coconut
|
|
105
|
+
.. _Releases: https://github.com/evhub/coconut/releases
|
|
106
|
+
|
|
107
|
+
Credits
|
|
108
|
+
+++++++
|
|
109
|
+
|
|
110
|
+
Contributors
|
|
111
|
+
------------
|
|
112
|
+
|
|
113
|
+
This project exists thanks to all the people who contribute! `Become a contributor`__.
|
|
114
|
+
|
|
115
|
+
.. image:: https://opencollective.com/coconut/contributors.svg?width=890&button=false
|
|
116
|
+
:target: https://github.com/evhub/coconut/graphs/contributors
|
|
117
|
+
|
|
118
|
+
__ Contributor_
|
|
119
|
+
.. _Contributor: http://coconut.readthedocs.io/en/develop/CONTRIBUTING.html
|
|
120
|
+
|
|
121
|
+
Backers
|
|
122
|
+
-------
|
|
123
|
+
|
|
124
|
+
Thank you to all our backers! `Become a backer`__.
|
|
125
|
+
|
|
126
|
+
.. image:: https://opencollective.com/coconut/backers.svg?width=890
|
|
127
|
+
:target: https://opencollective.com/coconut#backers
|
|
128
|
+
|
|
129
|
+
__ Backer_
|
|
130
|
+
.. _Backer: https://opencollective.com/coconut#backer
|
|
131
|
+
|
|
132
|
+
Sponsors
|
|
133
|
+
--------
|
|
134
|
+
|
|
135
|
+
Support Coconut by becoming a sponsor. Your logo will show up here with a link to your website. `Become a sponsor`__.
|
|
136
|
+
|
|
137
|
+
.. image:: https://opencollective.com/XX/sponsor/0/avatar.svg
|
|
138
|
+
:target: https://opencollective.com/coconut/sponsor/0/website
|
|
139
|
+
|
|
140
|
+
__ Sponsor_
|
|
141
|
+
.. _Sponsor: https://opencollective.com/coconut#sponsor
|
|
@@ -62,7 +62,7 @@ class _coconut{object}:{COMMENT.EVERYTHING_HERE_MUST_BE_COPIED_TO_STUB_FILE}
|
|
|
62
62
|
fmappables = list, tuple, dict, set, frozenset, bytes, bytearray
|
|
63
63
|
abc.Sequence.register(collections.deque)
|
|
64
64
|
Ellipsis, NotImplemented, NotImplementedError, Exception, AttributeError, ImportError, IndexError, KeyError, NameError, TypeError, ValueError, StopIteration, RuntimeError, all, any, bool, bytes, callable, chr, classmethod, complex, dict, enumerate, filter, float, frozenset, getattr, hasattr, hash, id, int, isinstance, issubclass, iter, len, list, locals, globals, map, min, max, next, object, ord, property, range, reversed, set, setattr, slice, str, sum, super, tuple, type, vars, zip, repr, print{comma_bytearray} = Ellipsis, NotImplemented, NotImplementedError, Exception, AttributeError, ImportError, IndexError, KeyError, NameError, TypeError, ValueError, StopIteration, RuntimeError, all, any, bool, bytes, callable, chr, classmethod, complex, dict, enumerate, filter, float, frozenset, getattr, hasattr, hash, id, int, isinstance, issubclass, iter, len, list, locals, globals, map, {lstatic}min{rstatic}, {lstatic}max{rstatic}, next, object, ord, property, range, reversed, set, setattr, slice, str, sum, {lstatic}super{rstatic}, tuple, type, vars, zip, {lstatic}repr{rstatic}, {lstatic}print{rstatic}{comma_bytearray}
|
|
65
|
-
@
|
|
65
|
+
@_coconut_wraps(_coconut.functools.partial)
|
|
66
66
|
def _coconut_partial(_coconut_func, *args, **kwargs):
|
|
67
67
|
partial_func = _coconut.functools.partial(_coconut_func, *args, **kwargs)
|
|
68
68
|
partial_func.__name__ = _coconut.getattr(_coconut_func, "__name__", None)
|
|
@@ -182,7 +182,7 @@ class _coconut_tail_call(_coconut_baseclass):
|
|
|
182
182
|
return (self.__class__, (self.func, self.args, self.kwargs))
|
|
183
183
|
_coconut_tco_func_dict = _coconut.weakref.WeakValueDictionary()
|
|
184
184
|
def _coconut_tco(func):
|
|
185
|
-
@
|
|
185
|
+
@_coconut_wraps(func)
|
|
186
186
|
def tail_call_optimized_func(*args, **kwargs):
|
|
187
187
|
call_func = func
|
|
188
188
|
while True:{COMMENT.weakrefs_necessary_for_ignoring_functools_wraps_decorators}
|
|
@@ -209,7 +209,7 @@ def _coconut_tco(func):
|
|
|
209
209
|
tail_call_optimized_func.__qualname__ = _coconut.getattr(func, "__qualname__", None)
|
|
210
210
|
_coconut_tco_func_dict[_coconut.id(tail_call_optimized_func)] = tail_call_optimized_func
|
|
211
211
|
return tail_call_optimized_func
|
|
212
|
-
@
|
|
212
|
+
@_coconut_wraps(_coconut.itertools.tee)
|
|
213
213
|
def tee(iterable, n=2):
|
|
214
214
|
if n < 0:
|
|
215
215
|
raise _coconut.ValueError("tee: n cannot be negative")
|
|
@@ -2220,7 +2220,22 @@ class _coconut_SupportsInv(_coconut.typing.Protocol):
|
|
|
2220
2220
|
"""
|
|
2221
2221
|
def __invert__(self):
|
|
2222
2222
|
raise _coconut.NotImplementedError("Protocol methods cannot be called at runtime ((~) in a typing context is a Protocol)")
|
|
2223
|
+
@_coconut_wraps(_coconut.functools.reduce)
|
|
2224
|
+
def reduce(function, iterable, initial=_coconut_sentinel):
|
|
2225
|
+
if initial is _coconut_sentinel:
|
|
2226
|
+
return _coconut.functools.reduce(function, iterable)
|
|
2227
|
+
return _coconut.functools.reduce(function, iterable, initial)
|
|
2228
|
+
class takewhile(_coconut.itertools.takewhile{comma_object}):
|
|
2229
|
+
__slots__ = ()
|
|
2230
|
+
__doc__ = _coconut.itertools.takewhile.__doc__
|
|
2231
|
+
def __new__(cls, predicate, iterable):
|
|
2232
|
+
return _coconut.itertools.takewhile.__new__(cls, predicate, iterable)
|
|
2233
|
+
class dropwhile(_coconut.itertools.dropwhile{comma_object}):
|
|
2234
|
+
__slots__ = ()
|
|
2235
|
+
__doc__ = _coconut.itertools.dropwhile.__doc__
|
|
2236
|
+
def __new__(cls, predicate, iterable):
|
|
2237
|
+
return _coconut.itertools.dropwhile.__new__(cls, predicate, iterable)
|
|
2223
2238
|
{def_async_map}
|
|
2224
2239
|
{def_aliases}
|
|
2225
2240
|
_coconut_self_match_types = {self_match_types}
|
|
2226
|
-
_coconut_Expected, _coconut_MatchError, _coconut_cartesian_product, _coconut_count, _coconut_cycle, _coconut_enumerate, _coconut_flatten, _coconut_fmap, _coconut_filter, _coconut_groupsof, _coconut_ident, _coconut_lift, _coconut_map, _coconut_mapreduce, _coconut_multiset, _coconut_range, _coconut_reiterable, _coconut_reversed, _coconut_scan, _coconut_starmap, _coconut_tee, _coconut_windowsof, _coconut_zip, _coconut_zip_longest
|
|
2241
|
+
TYPE_CHECKING, _coconut_Expected, _coconut_MatchError, _coconut_cartesian_product, _coconut_count, _coconut_cycle, _coconut_enumerate, _coconut_flatten, _coconut_fmap, _coconut_filter, _coconut_groupsof, _coconut_ident, _coconut_lift, _coconut_map, _coconut_mapreduce, _coconut_multiset, _coconut_range, _coconut_reiterable, _coconut_reversed, _coconut_scan, _coconut_starmap, _coconut_tee, _coconut_windowsof, _coconut_zip, _coconut_zip_longest = False, Expected, MatchError, cartesian_product, count, cycle, enumerate, flatten, fmap, filter, groupsof, ident, lift, map, mapreduce, multiset, range, reiterable, reversed, scan, starmap, tee, windowsof, zip, zip_longest{COMMENT.anything_added_here_should_be_copied_to_stub_file}
|
|
@@ -101,6 +101,10 @@ XONSH = (
|
|
|
101
101
|
and not (PYPY and PY39)
|
|
102
102
|
and (PY38 or not PY36)
|
|
103
103
|
)
|
|
104
|
+
NUMPY = (
|
|
105
|
+
not PYPY
|
|
106
|
+
and (PY2 or PY34)
|
|
107
|
+
)
|
|
104
108
|
|
|
105
109
|
py_version_str = sys.version.split()[0]
|
|
106
110
|
|
|
@@ -1024,6 +1028,9 @@ all_reqs = {
|
|
|
1024
1028
|
("pygments", "py>=39"),
|
|
1025
1029
|
"myst-parser",
|
|
1026
1030
|
"pydata-sphinx-theme",
|
|
1031
|
+
# these are necessary to fix a sphinx error
|
|
1032
|
+
"sphinxcontrib_applehelp",
|
|
1033
|
+
"sphinxcontrib_htmlhelp",
|
|
1027
1034
|
),
|
|
1028
1035
|
"numpy": (
|
|
1029
1036
|
("numpy", "py<3;cpy"),
|
|
@@ -1037,6 +1044,7 @@ all_reqs = {
|
|
|
1037
1044
|
("pytest", "py>=36;py<38"),
|
|
1038
1045
|
("pytest", "py38"),
|
|
1039
1046
|
"pexpect",
|
|
1047
|
+
"pytest_remotedata", # fixes a pytest error
|
|
1040
1048
|
),
|
|
1041
1049
|
}
|
|
1042
1050
|
|
|
@@ -1044,22 +1052,23 @@ all_reqs = {
|
|
|
1044
1052
|
unpinned_min_versions = {
|
|
1045
1053
|
"cPyparsing": (2, 4, 7, 2, 4, 0),
|
|
1046
1054
|
("pre-commit", "py3"): (3,),
|
|
1047
|
-
("psutil", "py>=27"): (
|
|
1048
|
-
"jupyter": (1,
|
|
1055
|
+
("psutil", "py>=27"): (6,),
|
|
1056
|
+
"jupyter": (1, 1),
|
|
1049
1057
|
"types-backports": (0, 1),
|
|
1050
1058
|
("futures", "py<3"): (3, 4),
|
|
1051
1059
|
("argparse", "py<27"): (1, 4),
|
|
1052
1060
|
"pexpect": (4,),
|
|
1053
1061
|
("trollius", "py<3;cpy"): (2, 2),
|
|
1054
1062
|
"requests": (2, 32),
|
|
1055
|
-
("numpy", "py39"): (1, 26),
|
|
1056
1063
|
("xarray", "py39"): (2024,),
|
|
1057
1064
|
("dataclasses", "py==36"): (0, 8),
|
|
1058
1065
|
("aenum", "py<34"): (3, 1, 15),
|
|
1059
1066
|
"pydata-sphinx-theme": (0, 15),
|
|
1060
|
-
"myst-parser": (
|
|
1061
|
-
"sphinx": (
|
|
1062
|
-
"
|
|
1067
|
+
"myst-parser": (4,),
|
|
1068
|
+
"sphinx": (8,),
|
|
1069
|
+
"sphinxcontrib_applehelp": (2,),
|
|
1070
|
+
"sphinxcontrib_htmlhelp": (2,),
|
|
1071
|
+
"mypy[python2]": (1, 11),
|
|
1063
1072
|
"pyright": (1, 1),
|
|
1064
1073
|
("jupyter-console", "py37"): (6, 6),
|
|
1065
1074
|
("typing", "py<35"): (3, 10),
|
|
@@ -1067,14 +1076,16 @@ unpinned_min_versions = {
|
|
|
1067
1076
|
("ipykernel", "py38"): (6,),
|
|
1068
1077
|
("jedi", "py39"): (0, 19),
|
|
1069
1078
|
("pygments", "py>=39"): (2, 18),
|
|
1070
|
-
("xonsh", "py39"): (0,
|
|
1079
|
+
("xonsh", "py39"): (0, 18),
|
|
1071
1080
|
("async_generator", "py35"): (1, 10),
|
|
1072
1081
|
("exceptiongroup", "py37;py<311"): (1,),
|
|
1073
|
-
("ipython", "py>=310"): (8,
|
|
1082
|
+
("ipython", "py>=310"): (8, 27),
|
|
1074
1083
|
"py-spy": (0, 3),
|
|
1075
1084
|
}
|
|
1076
1085
|
|
|
1077
1086
|
pinned_min_versions = {
|
|
1087
|
+
# don't upgrade this; some extensions implicitly require numpy<2
|
|
1088
|
+
("numpy", "py39"): (1, 26),
|
|
1078
1089
|
# don't upgrade this; it breaks xonsh
|
|
1079
1090
|
("pytest", "py38"): (8, 0),
|
|
1080
1091
|
# don't upgrade these; they break on Python 3.9
|
|
@@ -1088,7 +1099,7 @@ pinned_min_versions = {
|
|
|
1088
1099
|
# don't upgrade these; they break on Python 3.6
|
|
1089
1100
|
("anyio", "py36"): (3,),
|
|
1090
1101
|
("xonsh", "py>=36;py<39"): (0, 11),
|
|
1091
|
-
("pandas", "py36"): (1,),
|
|
1102
|
+
("pandas", "py36"): (1, 1),
|
|
1092
1103
|
("jupyter-client", "py36"): (7, 1, 2),
|
|
1093
1104
|
("typing_extensions", "py==36"): (4, 1),
|
|
1094
1105
|
("pytest", "py>=36;py<38"): (7,),
|
|
@@ -1121,6 +1132,7 @@ pinned_min_versions = {
|
|
|
1121
1132
|
"papermill": (1, 2),
|
|
1122
1133
|
("numpy", "py<3;cpy"): (1, 16),
|
|
1123
1134
|
("backports.functools-lru-cache", "py<3"): (1, 6),
|
|
1135
|
+
"pytest_remotedata": (0, 3),
|
|
1124
1136
|
# don't upgrade this; it breaks with old IPython versions
|
|
1125
1137
|
("jedi", "py<39"): (0, 17),
|
|
1126
1138
|
# Coconut requires pyparsing 2
|
{coconut-develop-3.1.1.post0.dev6 → coconut-develop-3.1.2.post0.dev1}/coconut/requirements.py
RENAMED
|
@@ -25,6 +25,7 @@ from coconut.integrations import embed
|
|
|
25
25
|
from coconut.constants import (
|
|
26
26
|
CPYTHON,
|
|
27
27
|
PY34,
|
|
28
|
+
NUMPY,
|
|
28
29
|
IPY,
|
|
29
30
|
MYPY,
|
|
30
31
|
XONSH,
|
|
@@ -249,7 +250,7 @@ extras.update({
|
|
|
249
250
|
"docs": unique_wrt(get_reqs("docs"), requirements),
|
|
250
251
|
"tests": uniqueify_all(
|
|
251
252
|
get_reqs("tests"),
|
|
252
|
-
extras["numpy"],
|
|
253
|
+
extras["numpy"] if NUMPY else [],
|
|
253
254
|
extras["jupyter"] if IPY else [],
|
|
254
255
|
extras["mypy"] if MYPY else [],
|
|
255
256
|
extras["xonsh"] if XONSH else [],
|
|
@@ -23,10 +23,10 @@ import sys as _coconut_sys
|
|
|
23
23
|
# VERSION:
|
|
24
24
|
# -----------------------------------------------------------------------------------------------------------------------
|
|
25
25
|
|
|
26
|
-
VERSION = "3.1.
|
|
26
|
+
VERSION = "3.1.2"
|
|
27
27
|
VERSION_NAME = None
|
|
28
28
|
# False for release, int >= 1 for develop
|
|
29
|
-
DEVELOP =
|
|
29
|
+
DEVELOP = 1
|
|
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"
|
|
@@ -59,11 +59,23 @@ def _get_target_info(target):
|
|
|
59
59
|
# HEADER:
|
|
60
60
|
# -----------------------------------------------------------------------------------------------------------------------
|
|
61
61
|
|
|
62
|
+
_base_header = r'''
|
|
63
|
+
import functools as _coconut_functools
|
|
64
|
+
_coconut_getattr = getattr
|
|
65
|
+
def _coconut_wraps(base_func):
|
|
66
|
+
def wrap(new_func):
|
|
67
|
+
new_func_module = _coconut_getattr(new_func, "__module__")
|
|
68
|
+
_coconut_functools.update_wrapper(new_func, base_func)
|
|
69
|
+
if new_func_module is not None:
|
|
70
|
+
new_func.__module__ = new_func_module
|
|
71
|
+
return new_func
|
|
72
|
+
return wrap
|
|
73
|
+
'''
|
|
74
|
+
|
|
62
75
|
# if a new assignment is added below, a new builtins import should be added alongside it
|
|
63
76
|
_base_py3_header = r'''from builtins import chr, dict, hex, input, int, map, object, oct, open, print, range, str, super, zip, filter, reversed, enumerate, repr
|
|
64
77
|
py_bytes, 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_repr, py_min, py_max = bytes, chr, dict, hex, input, int, map, object, oct, open, print, range, str, super, zip, filter, reversed, enumerate, repr, min, max
|
|
65
78
|
_coconut_py_str, _coconut_py_super, _coconut_py_dict, _coconut_py_min, _coconut_py_max = str, super, dict, min, max
|
|
66
|
-
from functools import wraps as _coconut_wraps
|
|
67
79
|
exec("_coconut_exec = exec")
|
|
68
80
|
'''
|
|
69
81
|
|
|
@@ -71,7 +83,6 @@ exec("_coconut_exec = exec")
|
|
|
71
83
|
_base_py2_header = r'''from __builtin__ import chr, dict, hex, input, int, map, object, oct, open, print, range, str, super, zip, filter, reversed, enumerate, raw_input, xrange, repr, long
|
|
72
84
|
py_bytes, 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_min, py_max = bytes, chr, dict, hex, input, int, map, object, oct, open, print, range, str, super, zip, filter, reversed, enumerate, raw_input, xrange, repr, min, max
|
|
73
85
|
_coconut_py_raw_input, _coconut_py_xrange, _coconut_py_int, _coconut_py_long, _coconut_py_print, _coconut_py_str, _coconut_py_super, _coconut_py_unicode, _coconut_py_repr, _coconut_py_dict, _coconut_py_bytes, _coconut_py_min, _coconut_py_max = raw_input, xrange, int, long, print, str, super, unicode, repr, dict, bytes, min, max
|
|
74
|
-
from functools import wraps as _coconut_wraps
|
|
75
86
|
from collections import Sequence as _coconut_Sequence
|
|
76
87
|
from future_builtins import *
|
|
77
88
|
chr, str = unichr, unicode
|
|
@@ -353,7 +364,7 @@ _py37_py38_extras = '''class _coconut_dict_base(_coconut_py_dict):
|
|
|
353
364
|
__doc__ = getattr(_coconut_py_dict, "__doc__", "<see help(py_dict)>")''' + _finish_dict_def
|
|
354
365
|
|
|
355
366
|
_py26_extras = '''if _coconut_sys.version_info < (2, 7):
|
|
356
|
-
import
|
|
367
|
+
import copy_reg as _coconut_copy_reg
|
|
357
368
|
def _coconut_new_partial(func, args, keywords):
|
|
358
369
|
return _coconut_functools.partial(func, *(args if args is not None else ()), **(keywords if keywords is not None else {}))
|
|
359
370
|
_coconut_copy_reg.constructor(_coconut_new_partial)
|
|
@@ -392,7 +403,7 @@ def _get_root_header(version="universal"):
|
|
|
392
403
|
''' + _indent(_get_root_header("3"))
|
|
393
404
|
|
|
394
405
|
version_info = _get_target_info(version)
|
|
395
|
-
header =
|
|
406
|
+
header = _base_header
|
|
396
407
|
|
|
397
408
|
if version.startswith("3"):
|
|
398
409
|
header += _base_py3_header
|
{coconut-develop-3.1.1.post0.dev6 → coconut-develop-3.1.2.post0.dev1}/coconut/tests/main_test.py
RENAMED
|
@@ -168,6 +168,7 @@ ignore_mypy_errs_with = (
|
|
|
168
168
|
"tutorial.py",
|
|
169
169
|
"unused 'type: ignore' comment",
|
|
170
170
|
"site-packages/numpy",
|
|
171
|
+
".py: error:"
|
|
171
172
|
)
|
|
172
173
|
|
|
173
174
|
ignore_atexit_errors_with = (
|
|
@@ -1092,7 +1093,7 @@ if TEST_ALL:
|
|
|
1092
1093
|
if not PYPY or PY2:
|
|
1093
1094
|
def test_prelude(self):
|
|
1094
1095
|
with using_paths(prelude):
|
|
1095
|
-
comp_prelude()
|
|
1096
|
+
comp_prelude(expect_retcode=None)
|
|
1096
1097
|
if MYPY and PY38:
|
|
1097
1098
|
run_prelude()
|
|
1098
1099
|
|
|
@@ -488,6 +488,9 @@ def primary_test_2() -> bool:
|
|
|
488
488
|
assert False
|
|
489
489
|
assert x == 12
|
|
490
490
|
assert (x=1).__match_args__ == ('x',) # type: ignore
|
|
491
|
+
assert reduce(function=(+), iterable=range(5), initial=-1) == 9 # type: ignore
|
|
492
|
+
assert takewhile(predicate=ident, iterable=[1, 2, 1, 0, 1]) |> list == [1, 2, 1] # type: ignore
|
|
493
|
+
assert dropwhile(predicate=(not), iterable=range(5)) |> list == [1, 2, 3, 4] # type: ignore
|
|
491
494
|
|
|
492
495
|
with process_map.multiple_sequential_calls(): # type: ignore
|
|
493
496
|
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
|
{coconut-develop-3.1.1.post0.dev6 → coconut-develop-3.1.2.post0.dev1}/coconut/tests/src/extras.coco
RENAMED
|
@@ -7,8 +7,7 @@ os.environ["COCONUT_USE_COLOR"] = "False"
|
|
|
7
7
|
from coconut.__coconut__ import consume as coc_consume
|
|
8
8
|
from coconut.constants import (
|
|
9
9
|
IPY,
|
|
10
|
-
|
|
11
|
-
PY34,
|
|
10
|
+
NUMPY,
|
|
12
11
|
PY35,
|
|
13
12
|
PY36,
|
|
14
13
|
PY39,
|
|
@@ -762,13 +761,13 @@ def test_xarray() -> bool:
|
|
|
762
761
|
|
|
763
762
|
|
|
764
763
|
def test_extras() -> bool:
|
|
765
|
-
if
|
|
764
|
+
if NUMPY:
|
|
766
765
|
assert test_numpy() is True
|
|
767
766
|
print(".", end="")
|
|
768
|
-
if
|
|
767
|
+
if NUMPY and PY36:
|
|
769
768
|
assert test_pandas() is True # .
|
|
770
769
|
print(".", end="")
|
|
771
|
-
if
|
|
770
|
+
if NUMPY and PY39:
|
|
772
771
|
assert test_xarray() is True # ..
|
|
773
772
|
print(".") # newline bc we print stuff after this
|
|
774
773
|
assert test_setup_none() is True # ...
|
|
@@ -1,141 +0,0 @@
|
|
|
1
|
-
Metadata-Version: 2.1
|
|
2
|
-
Name: coconut-develop
|
|
3
|
-
Version: 3.1.1.post0.dev6
|
|
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.dev6 → coconut-develop-3.1.2.post0.dev1}/__coconut__/__init__.py
RENAMED
|
File without changes
|
{coconut-develop-3.1.1.post0.dev6 → coconut-develop-3.1.2.post0.dev1}/__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.dev6 → coconut-develop-3.1.2.post0.dev1}/coconut/__coconut__.py
RENAMED
|
File without changes
|
{coconut-develop-3.1.1.post0.dev6 → coconut-develop-3.1.2.post0.dev1}/coconut/__coconut__.pyi
RENAMED
|
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.dev6 → coconut-develop-3.1.2.post0.dev1}/coconut/command/__init__.py
RENAMED
|
File without changes
|
{coconut-develop-3.1.1.post0.dev6 → coconut-develop-3.1.2.post0.dev1}/coconut/command/__init__.pyi
RENAMED
|
File without changes
|
{coconut-develop-3.1.1.post0.dev6 → coconut-develop-3.1.2.post0.dev1}/coconut/command/cli.py
RENAMED
|
File without changes
|
{coconut-develop-3.1.1.post0.dev6 → coconut-develop-3.1.2.post0.dev1}/coconut/command/command.py
RENAMED
|
File without changes
|
{coconut-develop-3.1.1.post0.dev6 → coconut-develop-3.1.2.post0.dev1}/coconut/command/command.pyi
RENAMED
|
File without changes
|
{coconut-develop-3.1.1.post0.dev6 → coconut-develop-3.1.2.post0.dev1}/coconut/command/mypy.py
RENAMED
|
File without changes
|
|
File without changes
|
{coconut-develop-3.1.1.post0.dev6 → coconut-develop-3.1.2.post0.dev1}/coconut/command/util.py
RENAMED
|
File without changes
|
{coconut-develop-3.1.1.post0.dev6 → coconut-develop-3.1.2.post0.dev1}/coconut/command/watch.py
RENAMED
|
File without changes
|
{coconut-develop-3.1.1.post0.dev6 → coconut-develop-3.1.2.post0.dev1}/coconut/compiler/__init__.py
RENAMED
|
File without changes
|
{coconut-develop-3.1.1.post0.dev6 → coconut-develop-3.1.2.post0.dev1}/coconut/compiler/compiler.py
RENAMED
|
File without changes
|
{coconut-develop-3.1.1.post0.dev6 → coconut-develop-3.1.2.post0.dev1}/coconut/compiler/grammar.py
RENAMED
|
File without changes
|
{coconut-develop-3.1.1.post0.dev6 → coconut-develop-3.1.2.post0.dev1}/coconut/compiler/header.py
RENAMED
|
File without changes
|
{coconut-develop-3.1.1.post0.dev6 → coconut-develop-3.1.2.post0.dev1}/coconut/compiler/matching.py
RENAMED
|
File without changes
|
{coconut-develop-3.1.1.post0.dev6 → coconut-develop-3.1.2.post0.dev1}/coconut/compiler/util.py
RENAMED
|
File without changes
|
{coconut-develop-3.1.1.post0.dev6 → coconut-develop-3.1.2.post0.dev1}/coconut/convenience.py
RENAMED
|
File without changes
|
{coconut-develop-3.1.1.post0.dev6 → coconut-develop-3.1.2.post0.dev1}/coconut/convenience.pyi
RENAMED
|
File without changes
|
|
File without changes
|
{coconut-develop-3.1.1.post0.dev6 → coconut-develop-3.1.2.post0.dev1}/coconut/highlighter.py
RENAMED
|
File without changes
|
{coconut-develop-3.1.1.post0.dev6 → coconut-develop-3.1.2.post0.dev1}/coconut/icoconut/__init__.py
RENAMED
|
File without changes
|
{coconut-develop-3.1.1.post0.dev6 → coconut-develop-3.1.2.post0.dev1}/coconut/icoconut/__main__.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{coconut-develop-3.1.1.post0.dev6 → coconut-develop-3.1.2.post0.dev1}/coconut/icoconut/embed.py
RENAMED
|
File without changes
|
{coconut-develop-3.1.1.post0.dev6 → coconut-develop-3.1.2.post0.dev1}/coconut/icoconut/root.py
RENAMED
|
File without changes
|
{coconut-develop-3.1.1.post0.dev6 → coconut-develop-3.1.2.post0.dev1}/coconut/integrations.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{coconut-develop-3.1.1.post0.dev6 → coconut-develop-3.1.2.post0.dev1}/coconut/tests/__init__.py
RENAMED
|
File without changes
|
{coconut-develop-3.1.1.post0.dev6 → coconut-develop-3.1.2.post0.dev1}/coconut/tests/__main__.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
|
|
File without changes
|
|
File without changes
|
{coconut-develop-3.1.1.post0.dev6 → coconut-develop-3.1.2.post0.dev1}/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
|