Registry / data / tentaclio

tentaclio

JSON →
library1.5.1pypypi✓ verified 24d ago

Tentaclio is a Python library designed to unify data connectors for distributed data tasks, offering a consistent API for interacting with various data sources like local files, FTP, SFTP, S3, GCS, and databases. It provides a simple URL-based interface for streams and database connections. The library is actively maintained with frequent minor releases to address security updates and improve functionality.

pip install tentaclio
INSTALL
IMPORT
SIG · TENTACLIO
T
tentaclio
datapythonv1.5.1
Install
13.7s avg
Import
3124ms
Disk
279MB
Pass rate
10/ 10
Env Coverage10 / 10
glibc
3.93.13
musl
3.93.13
Install & Compatibility
Where this runs
tested against v1.5.1 · pip install
no network on importno background threads
Install × environment matrix
Each cell = how many times install + import succeeded across repeated harness runs. Partial = flaky.
glibc = Debian/Ubuntu slim · musl = Alpine Linux
musl
py 3.103.910 runs
installs and imports cleanly · install 0.0s · import 3.299s · 275MB
glibc
py 3.103.910 runs
installs and imports cleanly · install 13.7s · import 2.949s · 269MB
279MB installed
● package 279MB
Code
Verified usage

Verified import paths — ran on the pinned version, not inferred.

AnyReaderWriter
from tentaclio import AnyReaderWriter
import tentaclio
open
from tentaclio import open
import tentaclio

This quickstart demonstrates how to use `tentaclio.open` to write and read from a local file. It also includes commented-out code showing how to interact with cloud storage like S3, highlighting Tentaclio's 'automagic authentication' feature via environment variables (e.g., `TENTACLIO__CONN__PREFIX`). For S3 and other cloud protocols, ensure the corresponding optional dependencies are installed.

import tentaclio import os # Example: Write and then read a local file local_file_url = 'file:///tmp/my_data.txt' contents_to_write = 'Hello, Tentaclio! 👋🐙' # Write to a local file with tentaclio.open(local_file_url, mode='w') as writer: writer.write(contents_to_write) print(f"Written to {local_file_url}") # Read from the local file with tentaclio.open(local_file_url, mode='r') as reader: read_contents = reader.read() print(f"Read from {local_file_url}: {read_contents}") # Clean up the test file os.remove('/tmp/my_data.txt') print("Cleaned up /tmp/my_data.txt") # Example: Reading from an S3 bucket (requires tentaclio[s3] and AWS credentials) # Set environment variables like: # os.environ['TENTACLIO__CONN__MY_S3_BUCKET'] = 's3://access_key:secret_key@s3.region.amazonaws.com/my-bucket/' # s3_url = 's3://my-bucket/hello.txt' # if os.environ.get('TENTACLIO__CONN__MY_S3_BUCKET'): # try: # with tentaclio.open(s3_url) as reader: # s3_contents = reader.read() # print(f"Read from S3: {s3_contents}") # except Exception as e: # print(f"Could not read from S3: {e}")
Debug
Known issues
gotchaMany common protocols (e.g., S3, Google Storage, Databricks, various databases) are not included in the base installation. Attempting to use URLs for these schemes without installing the corresponding optional dependencies (e.g., `pip install tentaclio[s3]`) will result in runtime errors.
fix
Install `tentaclio` with the specific extras needed for your protocols, e.g., `pip install tentaclio[s3,gs,postgres]`.
affects: All versions
gotchaWhen using environment variables (prefixed with `TENTACLIO__CONN__`) or a secrets file for authentication, Tentaclio treats the hostname in the URL provided to `tentaclio.open` or `tentaclio.db` as a wildcard. Credentials from the environment variable with a matching scheme and path will be injected. This means `sftp://sftp.example.com/file.txt` will use credentials defined for `sftp://user:pass@sftp.example.com/`, even if the provided URL doesn't contain user/pass.
fix
Be aware that the user, password, and hostname from stored credentials (environment variable or secrets file) will override those in the explicit URL if a matching credential entry is found. Scheme and path are taken from the URL, while port is prioritized from credentials if present, otherwise from the URL.
affects: All versions
deprecatedEarlier versions (prior to 1.3.2) did not support specifying SFTP private key path and password directly via query parameters in the URL. This functionality was added in version 1.3.2.
fix
Upgrade to Tentaclio version 1.3.2 or later to utilize private key path and password query parameters for SFTP connections. For older versions, configure SFTP authentication via environment variables or a secrets file.
affects: <1.3.2
gotchaThe `tentaclio.db` function for database connections has specific handling for some URL formats. For instance, for PostgreSQL, a URL like `postgresql://host/database::table` implies writing from a CSV format into a database table, where the table name is specified after `::`.
fix
Consult the documentation for specific database URL formats and their implications for read/write operations, especially when dealing with table names embedded in the URL path.
affects: All versions
Upgrade
Version history
1.5.1latest on PyPI · released Aug 5, 2026
Audit
Dependencies
PythonrequiredRuntime environment
s3optionalOptional: For Amazon S3 protocol support
gsoptionalOptional: For Google Storage protocol support
gdriveoptionalOptional: For Google Drive protocol support
postgresoptionalOptional: For PostgreSQL database connections
athenaoptionalOptional: For AWS Athena database connections
databricksoptionalOptional: For Databricks connections
snowflakeoptionalOptional: For Snowflake database connections
Agent activity
44 hits · last 30 days
node
38
OpenAI (training)
1
Resources