A simple decorator for returning a small sample of items from a list.
Project description
S A M P L R
@samplr is a tiny decorator that provides options for returning a subset of items from a list. It also prints useful information about this sampling process to the terminal for debugging.
Installation
Install samplr using pip:
pip install samplr
Usage
To use, decorate a function that returns a list with @samplr(). For example:
from samplr import samplr
@samplr(count=3)
def get_data():
# ... code that returns a list of 10 items of data ...
get_data() will now return a list containing just the first 3 items of the original return list, instead of all 100.
The arguments of samplr() are:
-
count(optional, default'all'): The number of items to return. This can be an integer or the string 'all'.-
If
countis a positive integer, the decorated function's returned list will be that length. -
If
countis 'all', all items will be returned. -
If
countis a negative integer that many items will be ommited from the returned list.
Also note:
-
If
count> len(original_list), count = 'all' -
If
count< -len(original_list), count = 0
-
-
sample_type(optional, default'head'): The method for selecting the subset of items. The available options are:-
'head': Select the firstcountitems in the list. -
'tail': Select the lastcountitems in the list. -
'random': Sample a random subset ofcountitems from the list.
-
-
expand(optional, defaultTrue): Whether to expand each item in the console print output. Helps with the readability of deeply nested objects. -
info(optional, defaultTrue): Whether to output to the console additional information about the sampling process.
Examples
- An example of using
@samplrto select a random subset of 3 items from a list returned by a function:
from samplr import samplr
@samplr(count=3, sample_type='random')
def get_data():
return [
{'name': 'Alice', 'age': 32},
{'name': 'Bob', 'age': 25},
{'name': 'Charlie', 'age': 41},
{'name': 'David', 'age': 19},
{'name': 'Eve', 'age': 56},
{'name': 'Frank', 'age': 28},
{'name': 'Grace', 'age': 39},
{'name': 'Heidi', 'age': 22},
{'name': 'Isaac', 'age': 47},
{'name': 'Jen', 'age': 31},
]
sampled_data = get_data()
This will return a list of items and output something like this to the terminal:
◆ ◇ ◆ S A M P L R ◆ ◇ ◆
◇ @samplr(count = 3, sample_type = random)
get_data()
◆ items returned: 3/10
◇ 0: : {
"name": "Alice",
"age": 32
}
◆ 3: : {
"name": "David",
"age": 19
}
◇ 4: : {
"name": "Eve",
"age": 56
}
◆ ◇ ◆ end ◆ ◇ ◆
Note the enumeration in the printout shows each item's index in the original list.
- An example of using
@samplrto exclude the last 2 items (withexpandandinfoset toFalse):
@samplr(count=-2, sample_type='tail', expand=False, info=False)
def get_data():
return ["zero", "one", "two", "three", "four", "five", "six"]
This returns a list of length 5, and outputs a shorter statement to the terminal:
◆ 0: : "zero"
◇ 1: : "one"
◆ 2: : "two"
◆ 3: : "three"
◆ 4: : "four"
Project details
Release history Release notifications | RSS feed
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
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
File details
Details for the file samplr-1.0.0.tar.gz.
File metadata
- Download URL: samplr-1.0.0.tar.gz
- Upload date:
- Size: 6.1 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.2 CPython/3.11.1
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
aa35e9e5487b8e0f70d74e97ca61120f46c0e1885a55dc36d308527ec8e2ff07
|
|
| MD5 |
7a6e37406091d0ce4522f0968806d709
|
|
| BLAKE2b-256 |
cdba64f8415827f7be8f4ee6cff4cc38f4a835f5d0b1bf05ec394b6c647b69dd
|
File details
Details for the file samplr-1.0.0-py3-none-any.whl.
File metadata
- Download URL: samplr-1.0.0-py3-none-any.whl
- Upload date:
- Size: 7.2 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.2 CPython/3.11.1
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
9276a633a746c5ac17cd07fa1417e1d77c46a7584334114b675ad69928fd2c73
|
|
| MD5 |
4b2337837ef39f376177dee746849d27
|
|
| BLAKE2b-256 |
f793e4d02ff3516c5cc727feee70ef6732f14f3bf533cebaa157aac9ce63d670
|