Shimoku Tangram
A Python library for data handling, storage operations, and logging.
Installation
pip install shimoku-tangram
Quick Start
from shimoku_tangram.storage import s3
from shimoku_tangram.reporting.logging import init_logger
# Initialize logging
logger = init_logger("MyLogger")
# Use S3 operations
s3.put_json_object("my-bucket", "path/to/file.json", {"key": "value"})
Components
Storage (s3)
All available methods in the S3 module:
Basic Bucket Operations
bucket_exists(bucket: str) -> bool
clear_path(bucket: str, prefix: str = "") -> bool
Object Listing
list_objects_metadata(bucket: str, prefix: str = "") -> list
list_objects_key(bucket: str, prefix: str = "") -> list
list_single_object_key(bucket: str, prefix: str) -> str
list_multiple_objects_keys(bucket: str, prefix: str) -> List[str]
list_objects_key_between_dates(bucket: str, prefix: str, start_date: datetime, end_date: datetime) -> List[str]
Basic Object Operations
get_object(bucket: str, key: str, compressed: bool = True) -> bytes
put_object(bucket: str, key: str, body: bytes, compress: bool = True) -> bool
delete_object(bucket: str, key: str) -> bool
Text Operations
get_text_object(bucket: str, key: str, encoding: str = "utf-8", compressed: bool = True) -> str
put_text_object(bucket: str, key: str, body: str, encoding: str = "utf-8", compress: bool = True) -> bool
JSON Operations
get_json_object(bucket: str, key: str, compressed: bool = True) -> dict
put_json_object(bucket: str, key: str, body: dict, compress: bool = True) -> bool
get_single_json_object(bucket: str, prefix: str) -> dict
put_single_json_object(bucket: str, prefix: str, body: Dict) -> str
Pickle Operations
get_pkl_object(bucket: str, key: str, compressed: bool = True) -> dict
put_pkl_object(bucket: str, key: str, body, compress: bool = True) -> bool
get_single_pkl_object(bucket: str, prefix: str)
put_single_pkl_object(bucket: str, prefix: str, body) -> str
CSV/DataFrame Operations
get_multiple_csv_objects(bucket: str, prefix: str) -> pd.DataFrame
put_multiple_csv_objects(bucket: str, prefix: str, body: pd.DataFrame, size_max_mb: float = 100) -> List[str]
Threaded Operations
get_multiple_csv_objects_threaded(bucket: str, prefixes: list[str], logger: logging.Logger | None = None) -> pd.DataFrame
put_multiple_csv_objects_threaded(bucket: str, dfs: dict[str, pd.DataFrame], size_max_mb: float = 100, logger: logging.Logger | None = None) -> None
get_multiple_csv_objects_between_dates_threaded(bucket: str, prefix: str, start_date: datetime, end_date: datetime) -> pd.DataFrame
Utility Functions
get_extension(key: str, compressed: bool = True) -> str
is_compressed(key: str) -> bool
Metadata
get_last_timestamp(bucket: str, prefix: str) -> str
set_last_timestamp(bucket: str, prefix: str) -> str
Logging
Initialize with custom name and level:
from shimoku_tangram.reporting.logging import init_logger
logger = init_logger("MyLogger", logging.INFO)
Features
- Automatic compression (gzip)
- Thread support for large operations
- Pandas DataFrame integration
- S3 path management
- Structured logging
- Error handling
Example
from shimoku_tangram.storage import s3
from datetime import datetime
# Get data between dates
df = s3.get_multiple_csv_objects_between_dates_threaded(
bucket="my-bucket",
prefix="data/path",
start_date=datetime(2024, 1, 1),
end_date=datetime(2024, 12, 31)
)
# Store processed data
s3.put_multiple_csv_objects(
bucket="my-bucket",
prefix="output/path",
body=df,
size_max_mb=50
)
License
MIT
Metadata
Release files for shimoku-tangram 0.1.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| shimoku_tangram-0.1.0.tar.gz | 6.5 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| shimoku_tangram-0.1.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 15.4 kB
Release files / shimoku_tangram-0.1.0.tar.gz
| Download URL | shimoku_tangram-0.1.0.tar.gz |
|---|---|
| Size | 6.5 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
04be6dd3aab0d5411e25f978558cc06eaf411e9b4936378092b4b71ea5c688c5
|
|
BLAKE2b-256 checksum How to use checksums |
5c92f5ca9cd29b7e7b58677c025b9769e964e065e80343aa76cbb76958c6af96
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/5.1.1 CPython/3.10.12
|
Release files / shimoku_tangram-0.1.0-py3-none-any.whl
| Download URL | shimoku_tangram-0.1.0-py3-none-any.whl |
|---|---|
| Size | 8.9 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
ec504444b4ee213cf270387a1eed340eb2779b6657591d66a37956fbf3bb1b1a
|
|
BLAKE2b-256 checksum How to use checksums |
cb1e99b888bd76b0ccc159aac747fea8e9782359c567457068b4aaf336500449
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/5.1.1 CPython/3.10.12
|