No project description provided
Project description
Cool.py
Make Python code cooler. 100% coverage. Use and enjoy this code!
Install
pip install cool
Or fetch from github
pip install git+https://github.com/abersheeran/cool@setup.py
Usage
Pipe
Note: as fast as you didn't use F!
Use pipeline to pass data as a positional parameter to the next function.
from cool import F
assert range(10) | F(filter, lambda x: x % 2) | F(sum) == 25
Or you need to pass multiple parameters through the pipeline. Note that FF
can only accept one parameter, and it must be an iterable object.
from cool import FF
assert (1, 2) | FF(lambda x, y: x + y) == 3
You can use ...
as a placeholder. This is useful when you need to pass non-continuous parameters to create a partial function.
from functools import reduce
from cool import F
assert range(10) | F(reduce, lambda x, y: x + y) == 45
assert range(10) | F(reduce, lambda x, y: x + y, ..., 10) == 55
square = F(pow, ..., 2)
assert range(10) | F(map, square) | F(sum) == 285
The range(10) | F(reduce, lambda x, y: x + y, ..., 10)
is equivalent to reduce(lambda x, y: x + y, range(10), 10)
.
Redirect
Just like the redirection symbol in Shell
, you can redirect the output to a specified file or TextIO
object through >
or >>
.
Note: R
inherits from functools.partial
.
from pathlib import PurePath
from cool import R
# Redirect output to specified filepath
R(print, "hello") > PurePath("your-filepath")
# Append mode
R(print, "world") >> PurePath("your-filepath")
Redirect to opened file or other streams.
from io import StringIO
from cool import R
with open("filepath", "a+", encoding="utf8") as file:
R(print, "hello") >> file
out = StringIO("")
R(print, "hello") > out
out.seek(0, 0)
assert out.read() == "hello\n"
Maybe you also want to block the output, just like > /dev/null
.
from cool import R
R(print, "hello") > None
# Or
R(print, "hello") >> None
Note that after the calculation is over, R
will faithfully return the return value of your function. Try the following example.
from pathlib import PurePath
from cool import F, R
def func(num):
return range(num) | F(map, lambda x: print(x) or x) | F(sum)
print(R(func, 10) > PurePath("filepath"))
Set Global
Maybe you don't want to use from cool import F
in every file of the entire project, you can use the following code to set it as a global function, just like min
/max
/sum
.
import cool
cool.set_global(cool.F, cool.FF)
Maybe you also want to expose functools.reduce
to the world, just like map
/filter
.
import functools
import cool
cool.set_global(cool.F, cool.FF, functools.reduce)
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
File details
Details for the file cool-0.4.0.tar.gz
.
File metadata
- Download URL: cool-0.4.0.tar.gz
- Upload date:
- Size: 7.9 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/1.1.5 CPython/3.8.5 Linux/4.4.0-19041-Microsoft
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 4521ea6acd39dbf6d662d7e60fd22c0f3b969683ffcc9efd25538d57c33d18bc |
|
MD5 | 75adade231c2296b21241802091dd6e3 |
|
BLAKE2b-256 | 4b450c51ac35c4089149f34e44c166a3f1a52a5129402cb3b16b023b61b6b454 |
File details
Details for the file cool-0.4.0-py2.py3-none-any.whl
.
File metadata
- Download URL: cool-0.4.0-py2.py3-none-any.whl
- Upload date:
- Size: 8.0 kB
- Tags: Python 2, Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/1.1.5 CPython/3.8.5 Linux/4.4.0-19041-Microsoft
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 9a2afc89e7c05b27d4f9cba99e9353ef3f274e9afdd2494a3b70c7f7f647596b |
|
MD5 | c1b64ffba6a412b09ccb6f7d05f2d42b |
|
BLAKE2b-256 | fbf952c018688e713bb7ede96ab46f54cd57169efb47b60bc5ff3086d57d0664 |