ezpyzy
Utility functions solving common but annoying problems.
Installation
pip install ezpyzy
Usage
import ezpyzy as ez
Easily save and load .txt, .json, .csv, and .pkl
text_file = ez.File('foo.txt')
json_file = ez.File('bar.json')
csv_file = ez.File('baz.csv')
pkl_file = ez.File('qux.pkl')
text_file.save('Hello, world!')
json_file.save({'a': 1, 'b': 2})
csv_file.save([[1, 2], [3, 4]])
pkl_file.save({1, 2, 3, 4})
assert text_file.load() == 'Hello, world!'
assert json_file.load() == {'a': 1, 'b': 2}
assert csv_file.load() == [[1, 2], [3, 4]]
assert pkl_file.load() == {1, 2, 3, 4}
Easily cache function results in a file
@ez.autocache
def heavy_workload():
...
return {'a': 1, 'b': 2}
x = heavy_workload(save='foo.json') # Save result after calculating
x = heavy_workload(load='foo.json') # Load result without calculating
Capture all args passed to a function in a dict
@ez.allargs
def foo(a, b, c, allargs=None):
print(allargs)
return a + b + c
foo(1, 2, 3) # Prints {'a': 1, 'b': 2, 'c': 3}
Automatically fill parameters by default with object attributes
@dc.dataclass
class Foo:
a: int
b: int
c: int
@ez.update_settings
def bar(self, a=None, b=None, c=None):
return a + b + c
foo = Foo(0, 1, 2)
print(foo.bar(5)) # Prints 8
Replace dataclass attributes by mutation with type hinting
@dc.dataclass
class Foo:
a: int
b: int
c: int
foo = Foo(0, 1, 2)
ez.replace(foo, b=3, c=5)
print(foo) # Prints Foo(a=0, b=3, c=5)
with ez.replace(foo, a=2):
print(foo) # Prints Foo(a=2, b=3, c=5)
print(foo) # Prints Foo(a=0, b=3, c=5)
Bind arguments (functools.partial) with type hinting
def foo(a: int, b: int, c: int):
return a + b + c
bar = ez.bind(foo)(a=1, b=2)
print(bar(c=3)) # Prints 6
Easy notification emails
ez.email(
'recipient@gmail.com',
'Subject Line',
"""Body of email.""",
)
To use, create a file ~/.pw/gmail.json (easiest to use an app password using gmail).
{
"smtp_server": "smtp.gmail.com",
"smtp_port": 587,
"sender_email": "address@gmail.com",
"sender_password": "app_password"
}
Automatically generate human-readable names for objects
print(ez.denominate()) # Prints a cool name like "DaringBespin"
Automatically generate a short-ish UUID (12 chars)
print(ez.uuid()) # Prints something like "A5_H2ka4f33S"
Shushes stdout and stderr
with ez.shush():
print('This will not print.')
Quick hacky way to run sequential tests
with check("My first test"):
x = [1, 2, 3]
assert x[0] == 1
with check("My second test"):
x[1] = 4
assert sum(x) == 8
Print-style debugging that keeps variables from the previous run
Kind of like if jupyter notebook had a baby with using a bunch of print statements to debug code.
data = load_data_for_a_long_time()
ez.explore() # Prints nearby variables and pauses execution
process_data() # will not run yet
After moving the explore() call and hitting enter...
data = load_data_for_a_long_time() # will not run again
process_data() # will run now
ez.explore() # Prints nearby variables and pauses execution
Dataframes but with type hinting
@dc.dataclass
class Foo(ez.Table):
id: ez.ColID = None
name: ez.ColStr = None
age: ez.ColInt = None
table = Foo.of([
['1', 'Alice', 20],
['2', 'Bob', 21],
['3', 'Charlie', 22],
])
for row in table:
print(row().name) # Type hinted. Prints Alice, Bob, Charlie
print(table)
Foo Table: 3 cols x 3 rows
id|name |age
--|-------|---
1 |Alice |20
2 |Bob |21
3 |Charlie|22
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
ezpyzy-0.2.0.tar.gz
(30.6 kB
view details)
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
ezpyzy-0.2.0-py3-none-any.whl
(34.8 kB
view details)
File details
Details for the file ezpyzy-0.2.0.tar.gz.
File metadata
- Download URL: ezpyzy-0.2.0.tar.gz
- Upload date:
- Size: 30.6 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via:
poetry/1.7.1 CPython/3.10.11 Linux/6.0.14-201.fsync.fc36.x86_64
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
ea6393c3438dab96e6c539c32bc08f7babbf8021055aa0de7c63ed2647b9a77f
|
|
| MD5 |
801c8fe9ba32ca4c6dc664647063e83e
|
|
| BLAKE2b-256 |
13f347eb3dd6ac0f2842b8e88e5007a97bdb04bf000fb7b1ab1db7625d5b2826
|
File details
Details for the file ezpyzy-0.2.0-py3-none-any.whl.
File metadata
- Download URL: ezpyzy-0.2.0-py3-none-any.whl
- Upload date:
- Size: 34.8 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via:
poetry/1.7.1 CPython/3.10.11 Linux/6.0.14-201.fsync.fc36.x86_64
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
9893393a17172de866e9cbd960ccf2a28395cfa4f4c0ed59c1772443183a3d78
|
|
| MD5 |
20f643e477c731c1a61dad6cb81b1d14
|
|
| BLAKE2b-256 |
164a3544b0a67496ded45d6754e304e7d07623c871fdbc5ca9a7d33edb2ac503
|