bsutils: Basic Python Utilities
A collection of basic Python utilities designed to simplify common tasks.
Installation
# Install using pip.
pip install bsutils
# Install using pipx.
pipx install bsutils
# Install using uv.
uv pip install bsutils
Features
Json Utilities (bsutils.json)
Utilities for working with JSON and JSONL files.
Features:
get_item_num: Get the number of items in a JSON or JSONL file.iter_json_file: Iterate over a JSON or a JSONL file.load_json_file: Load a JSON or JSONL file.jsonl_to_json: Convert a JSONL file to a JSON file.json_to_jsonl: Convert a JSON file to a JSONL file.write_json_file: Write a JSON or JSONL file.
Example Usage:
from bsutils.json import load_json_file
data = load_json_file("example.json")
print(data)
for item in iter_json_file("example.jsonl"):
print(item)
File Utilities (bsutils.file)
Utilities for working with file paths.
Features:
pure_file_name: Get the pure file name from a path, e.g., "document" for "/path/to/document.pdf".
Example Usage:
from bsutils.file import pure_file_name
file_name = pure_file_name("/path/to/document.pdf")
print(file_name) # Output: "document"
Result (bsutils.result)
Use Result to handle function results without raising exceptions, inspired by result.
Features:
Result: A class to encapsulate the result of a function and handle exceptions.Ok: Represents a successful function result.Err: Represents an error or exception.
Example Usage:
from bsutils.result import Result, Ok, Err
def divide(a, b):
if b == 0:
return Err("Division by zero")
return Ok(a / b)
result = divide(10, 2)
if result.is_ok():
print("Success:", result.value)
elif result.is_err():
print("Error:", result.error)
Option (bsutils.option)
Use Option to represent variables that may or may not contain values, avoiding None and Any.
Features:
Option: A class to represent optional values.Some: Represents a variable that contains a value.None: Represents the absence of a value.
Example Usage:
from bsutils.option import Option, Some, Null
value = Some(42)
if value.is_some():
print("Value exists:", value.value)
else:
print("No value")
null_value = Null()
print(null_value.is_null()) # Output: True
Iterator (bsutils.iterator)
A generic Iterator class for performing operations on iterable objects.
Features:
collect: Collect elements from the iterator into a specified container type (e.g.,list,set).join: Join all elements in the iterator using a specified operation (e.g., addition, multiplication).map: Apply a mapping function to each element in the iterator and return a new iterator.filter: Filter elements in the iterator based on a specified condition and return a new iterator.copy: Create a copy of the current iterator.skip: Skip the first n elements and return a new iterator.take: Take the first n elements and return a new iterator.
Example Usage:
from bsutils.iterator import Iterator
it = Iterator(range(1, 10))
print("List Collect:", it.copy().collect()) # Collect elements into a list
print("Set Collect:", it.copy().collect(set)) # Collect elements into a set
print("Add Join:", it.copy().join()) # Join elements using addition
print("Mul Join:", it.copy().join(mul)) # Join elements using multiplication
print("Map:", it.copy().map(lambda x: x * x).collect()) # Map elements to their squares
print("Filter:", it.copy().filter(lambda x: x % 2 == 0).collect()) # Filter even numbers
IO (bsutils.io)
The IO module provides utilities for capturing standard output (stdout) and standard error (stderr) using the OutputCatcher class.
Features:
OutputCatcher: A context manager for capturing stdout and stderr.write(data): Writes data to the stdout buffer.get_stdout(): Retrieves the captured stdout as a string.get_stderr(): Retrieves the captured stderr as a string.
Example Usage:
from bsutils.io import OutputCapturer
with OutputCapturer() as capturer:
print("Hello world!")
print("This goes to stdout")
import sys
sys.stderr.write("This goes to stderr\n")
# Get the captured stdout
output = capturer.get_stdout()
print("Captured output:")
print(output)
# Get the captured stderr
error = capturer.get_stderr()
print("Captured error:")
print(error)
TODO
- Thread safe output capturer.
- Capture python level and c extension level output and error separately.
- Iterator:
skip(n),take(n), etc.
Star History
Metadata
Release files for bsutils 0.0.6
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| bsutils-0.0.6.tar.gz | 15.5 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| bsutils-0.0.6-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 32.0 kB
Release files / bsutils-0.0.6.tar.gz
| Download URL | bsutils-0.0.6.tar.gz |
|---|---|
| Size | 15.5 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
c4660411e661851d5c14e688bfe0ddbe13b647a5c5933bb437664bc893cd2917
|
|
BLAKE2b-256 checksum How to use checksums |
ff883af4306ffc187b91c4edc1b0dbe15ba7034afcbeea333a7285540856ac8b
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.11.6 {"installer":{"name":"uv","version":"0.11.6","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
|
Release files / bsutils-0.0.6-py3-none-any.whl
| Download URL | bsutils-0.0.6-py3-none-any.whl |
|---|---|
| Size | 16.4 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
16d735e349dafefad634a177fc62593e6d0b1f00c2a39cba33b1217445997173
|
|
BLAKE2b-256 checksum How to use checksums |
a0be0d70f842ea31ee686c6b6563d012a2e5c7c950abe07b34c7dea7b34f573f
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.11.6 {"installer":{"name":"uv","version":"0.11.6","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
|