Skip to main content

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)

Source distribution for shimoku-tangram 0.1.0
File Size Uploaded
shimoku_tangram-0.1.0.tar.gz 6.5 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for shimoku-tangram 0.1.0
File Interpreter ABI Platform
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

Release history Release notifications | RSS feed

This release

0.1.0 This release

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page