Coconut

Latest version: v3.1.0

Safety actively analyzes 621521 Python packages for vulnerabilities to keep your Python projects secure.

Scan your dependencies

Page 1 of 7

3.1.0

See Coconut's [documentation](http://coconut.readthedocs.io/en/develop/DOCS.html) for more information on all of the features listed below.

Language features:
* 814: Changes to statement lambda scoping rules, including capturing names introduced in the surrounding expression.
* 618: Changes to handling of pattern-matching function defaults including support for e.g. `match def f(x, y=x) = (x, y)`.
* 809: New array concatenation implicit partials (e.g. `[. ; a]`).
* 823: New `(x := .)` implicit partial syntax (only available in pipes).
* 807: New `lift_apart` built-in combinator.
* 813: New `(if)` operator function.
* 826 (thanks JayXon!): Better universalization and `fmap` support for `bytes` and `bytearray`.
* 816: Support for `xarray` to match existing `numpy`/`pandas` support.
* 817: New `to` argument to `all_equal`.
* 821 (thanks GolfingSuccess!): Expanded implicit function application syntax to support string literal methods.

Compiler features:
* 799: `coconut-run` and `coconut --run` now work on packages rather than just files.
* 812: Better formatting of Coconut exceptions.

Bugfixes:
* 810: Fixed an issue compiling certain syntax constructs in the Coconut Jupyter kernel.
* 818, 825 (thanks kg583, dokutan!): Fixed parsing of different Unicode line break characters.
* 822 (thanks JayXon!): Fixed parsing of Unicode backward pipe operators.
* 819, 820 (thanks kg583!): Fixed some incompatibilities between Python and Coconut syntax.

3.0.4

This is primarily a bugfix release to resolve 804. See Coconut's [documentation](http://coconut.readthedocs.io/en/develop/DOCS.html) for more information on all of the features listed below.

Language changes:
* 784: `where` statements now use temporary variable names to limit the scope of contained assignments.
* 795: New `async_map` function utilizing `anyio` to work with `asyncio` or `trio`.
* 793: New `mapreduce`, `collectby.using_threads`, `collectby.using_processes`, `mapreduce.using_threads`, and `mapreduce.using_processes` built-ins.
* 787: Support for `.method[index]` implicit partials.
* 749, 792: Some built-ins have been renamed for clarity (the old names will still work unless `--strict` is passed). Specifically:
- `recursive_iterator` -> `recursive_generator`
- `parallel_map` -> `process_map`
- `concurrent_map` -> `thread_map`
* 797: Partial application objects now preserve the original function's `__name__` attribute.
* 789: Coconut will automatically backport `ExceptionGroup` using the `exceptiongroup` module.

Compiler changes:
* 772: Substantial improvements to recompilation speed for most files.
* 798: New `api.find_packages` and `api.find_and_compile_packages` utilities for working with Coconut packages.
* 803: New `--fail-fast` option to fail upon the first error when compiling multiple files.
* 778: The `--history-file` command-line option has been removed; use `COCONUT_HISTORY_FILE` environment variable if you really need it.

Bugfixes:
* 804: Fixed an incompatibility with new `cPyparsing` versions.
* 781, 794: Improved formatting for compilation errors/warnings.
* 800: `override` now works in conjunction with `classmethod` and `staticmethod`.

3.0.3

See Coconut's [documentation](http://coconut.readthedocs.io/en/develop/DOCS.html) for more information on all of the features listed below.

New features:
* 738: New `and_then` and `and_then_await` built-ins for async function composition.

Language changes:
* 763: Lambdas now support fat arrows (`x => x`) as an alternative to skinny arrows (`x -> x`) to better distinguish them from type annotations. Skinny arrow lambdas will be deprecated at some later date.
* 756: Coconut now fully supports Python 3.12's enhanced `f`-string syntax on all targets.
* 773: `f`-strings with no expressions in them (e.g. `f"why does this have an f"` will now show a warning by default and an error on `--strict`.

Compiler changes:
* 761: `--line-numbers` are now on by default. Pass `--no-line-numbers` to turn them off.
* 768 (thanks kxmh42!): Automatic compilation now uses a cache directory rather than compiling files in-place; additionally, automatic compilation options can now be set via `coconut-run`.
* 767: New `--target psf` support for targeting all versions not considered end-of-life.
* 765 (thanks rtbs-dev!): New `coconut --jupyter install` command for easily installing all Jupyter kernels added as an alternative to the existing `coconut --jupyter` syntax.
* 766: Coconut now internally supports an incremental parsing mode that is used in some situations (e.g. in the Jupyter kernel) to substantially improve recompilation times.

Bugfixes:
* 759 (thanks Starwort!): `multiset` methods should now always return `multiset`s when the arguments are all `multiset`s rather than `Counter`s.
* 764 (thanks koraa!): An issue that caused function definitions to take much longer to compile when compiling from the interpreter has now been fixed.
* 762 (thanks Starwort!): Semicolon-separated commands should now always work properly on `xonsh`.
* 775: Coconut should no longer set the `MYPYPATH` to include the entire directory that Coconut has been installed into when running with `--mypy`.
* 777: Docstrings should now show up properly in any third-party tools that look at Coconut's stub files.

3.0.2

See Coconut's [documentation](http://coconut.readthedocs.io/en/develop/DOCS.html) for more information on all of the features listed below.

This is another patch release, mainly for 751 and 755.

New features:
* 753: `async with for` loops provide a simple syntax for implementing the recommended pattern for handling `async` generators.

Language changes:
* 752: `typing` imports will redirect to `typing_extensions` whenever possible to ensure you always get the latest implementation of `typing` objects on all versions.
* 754: `async` generators and some related utilities will now be automatically backported to 3.5 via the `async_generator` library.
* 748: Certain confusing Unicode operator alternatives removed.

Compiler changes:
* 750: `coconut.convenience` renamed to `coconut.api` (`coconut.convenience` is still available as an alias for backwards compatibility).

Bugfixes:
* 751: Coconut in `xonsh` will no longer throw an error in certain situations.
* 755: Due to a documentation rendering issue, previous 3.0.x releases weren't getting their documentation rendered successfully.

3.0.1

See Coconut's [documentation](http://coconut.readthedocs.io/en/develop/DOCS.html) for more information on all of the features listed below.

This is a patch release primarily aimed at fixing 746, though it also brings a couple of new features and other fixes as well.

New features:
* 743: New `f(...=long_name)` syntax as a shorthand for `f(long_name=long_name)`.
* 744: `f ..> g` will now preserve the signature of `f` when inspected using `inspect.signature`.

Language changes:
* 736: `fmap` will now raise `TypeError` rather than falling back to a default implementation when it encounters an unknown type. For backwards compatibility, the old behavior can be recovered with `fmap$(fallback_to_init=True)`.
* 737: `fmap` now works properly on `multiset`.

Bugfixes:
* 746: Syntax errors produced when using Coconut's Jupyter kernel will now present themselves nicely rather than causing an error.
* 745 (thanks Starwort!): `xonsh` will no longer fail on semicolon-seperated commands when using the Coconut extension.
* 739 (thanks yggdr!): Compiling a single directory in `--stand-alone` mode will now properly make use of `--jobs`.
* 742 (thanks kloczek!): Fixed a deprecation warning when installing Coconut.

3.0.0

Coconut v3! See Coconut's [documentation](http://coconut.readthedocs.io/en/develop/DOCS.html) for more information on all of the features listed below.

Note that v3 is a major version release that comes with some breaking changes, though Coconut will do its best to warn you if your code does anything that changed from v2 to v3.

Breaking changes:
* 714: `set` patterns now work like `dict` patterns where they allow extra keys, such that `{1, 2}` will match `{1, 2, 3}`. To get back the strict behavior, use the `{1, 2, 3, *()}` pattern. Coconut will warn you if your code contains set patterns without an explicit strictness marker.
* 707: the precedence of implicit function application has been changed to be compatible with implicit coefficients, such that `f x**2` is now equivalent to `f(x**2)` rather than `f(x)**2`. Coconut will warn you if your code contains expressions with new precedence.
* 733: `.$[]` will now only default to using an existing `__getitem__` if the object is registered as a `collections.abc.Sequence`. `__iter_getitem__` will still always be used. Lets you do things like `{"k": "v"}$[0]`.
* 730: `obj.` syntax as a shorthand for `getattr$(obj)` deprecated.
* 732: `--jobs` now defaults to `sys` rather than `0`.

New features:
* 707: New implicit coefficient syntax! Polynomials are just `a x**2 + b x + c`, with support for single variable names and numeric constants as coefficients.
* 731: New `copyclosure def` functions that copy their closures on function creation, allowing them to e.g. hold on to loop variables.
* 709: `(+)` syntax in a typing context now yields a `typing.Protocol` that requires supporting that operator.
* 709: New `&:` operator for combining multiple `typing.Protocol`'s into a single protocol.
* 718 (thanks yggdr!): You can now use `addpattern def` even if there's no existing function of that name, allowing you to use `addpattern def` for every pattern rather than having to use `match def` for the first one.
* 727: New `x |> await` syntax for using `await` in pipes.
* 734: Substantially improved `pandas` support.
* 714: New `frozenset` and `multiset` patterns.

Bugfixes:
* 725 (thanks yggdr!): Fixed `(in)` operator function argument ordering.
* 721 (thanks yggdr!): `is not` and `not in` operator functions now supported.
* 724 (thanks Starwort!): Coconut no longer slows down `xonsh` loading and fixed `xontrib unload coconut`.
* 726 (thanks caedmon-kitty!): Fixed certain `xonsh` commands when using Coconut's `xonsh` plugin.
* 723: `dict` now always functions as on the latest Python 3 on any Python version.
* 728 (thanks yggdr!): Fixed `super` compatibility across Python versions and some cases where `super()` wouldn't work.
* 717 (thanks kksgandhi!): Fixed `coconut --jupyter qtconsole`.

Page 1 of 7

© 2024 Safety CLI Cybersecurity Inc. All Rights Reserved.