langchain-daytona-data-analysis
This package provides the DaytonaDataAnalysisTool - LangChain tool integration that enables agents to perform secure Python data analysis in a sandboxed environment. It supports multi-step workflows, file uploads/downloads, and custom result handling, making it ideal for automating data analysis tasks with LangChain agents.
Installation
pip install -U langchain-daytona-data-analysis
You must configure credentials for Daytona. You can do this in one of three ways:
-
Set the
DAYTONA_API_KEYenvironment variable:export DAYTONA_API_KEY="your-daytona-api-key"
-
Add it to a
.envfile in your project root:DAYTONA_API_KEY=your-daytona-api-key
-
Pass the API key directly when instantiating
DaytonaDataAnalysisTool:from langchain_daytona_data_analysis import DaytonaDataAnalysisTool tool = DaytonaDataAnalysisTool(daytona_api_key="your-daytona-api-key")
Instantiation
Import and instantiate the tool:
from langchain_daytona_data_analysis import DaytonaDataAnalysisTool
from daytona import ExecutionArtifacts
# Optionally, you can pass an on_result callback.
# This callback lets you apply custom logic to the data analysis result.
# For example, you can save outputs, display charts, or trigger other actions.
def process_data_analysis_result(result: ExecutionArtifacts):
print(result)
tool = DaytonaDataAnalysisTool(
# daytona_api_key="your-daytona-api-key", # Only needed if DAYTONA_API_KEY is not set as an environment variable
on_result=process_data_analysis_result
)
Usage
DaytonaDataAnalysisTool can be used in three ways:
Direct Invocation with Args
tool.invoke({'data_analysis_python_code': "print('Hello World')"})
Invocation with ToolCall
model_generated_tool_call = {
"args": {'data_analysis_python_code': "print('Hello World')"},
"id": "1",
"name": tool.name,
"type": "tool_call",
}
tool.invoke(model_generated_tool_call)
Usage Inside an Agent
from langchain.agents import create_agent
from langchain_anthropic import ChatAnthropic
model = ChatAnthropic(
model_name="claude-haiku-4-5-20251001",
temperature=0,
max_tokens_to_sample=1024,
timeout=None,
max_retries=2,
stop=None
)
agent = create_agent(model, tools=[tool])
API Reference
The following public methods are available on DaytonaDataAnalysisTool:
download_file(remote_path)
Downloads a file from the sandbox by its remote path.
remote_path:str— Path to the file in the sandbox.- Returns:
bytes— File contents.
Example:
# Download a file from the sandbox
file_bytes = tool.download_file("/home/daytona/results.csv")
upload_file(file, description)
Uploads a file to the sandbox. The file is placed in /home/daytona/.
file:IO— File-like object to upload.description:str— Description of the file, explaining its purpose and the type of data it contains.- Returns:
SandboxUploadedFile— Metadata about the uploaded file.
Example:
Suppose you want to analyze sales data for a retail business. You have a CSV file named sales_q3_2025.csv containing columns like transaction_id, date, product, quantity, and revenue. You want to upload this file and provide a description that gives context for the analysis.
with open("sales_q3_2025.csv", "rb") as f:
uploaded = tool.upload_file(
f,
"CSV file containing Q3 2025 retail sales transactions. Columns: transaction_id, date, product, quantity, revenue."
)
remove_uploaded_file(uploaded_file)
Removes a previously uploaded file from the sandbox.
uploaded_file:SandboxUploadedFile— The file to remove.
Example:
# Remove an uploaded file
tool.remove_uploaded_file(uploaded)
get_sandbox()
Gets the current sandbox instance.
- Returns:
Sandbox— Sandbox instance.
This method provides access to the Daytona sandbox instance, allowing you to inspect sandbox properties and metadata, as well as perform any sandbox-related operations. For details on available attributes and methods, see the Sandbox data structure section below.
Example:
sandbox = tool.get_sandbox()
install_python_packages(package_names)
Installs one or more Python packages in the sandbox using pip.
package_names:strorList[str]— Name(s) of the package(s) to install.
Note: The list of preinstalled packages in a sandbox can be found at Daytona Default Snapshot documentation.
Example:
# Install a single package
tool.install_python_packages("pandas")
# Install multiple packages
tool.install_python_packages(["numpy", "matplotlib"])
close()
Closes and deletes the sandbox environment.
Note: Call this method when you are finished with all data analysis tasks to properly clean up resources and avoid unnecessary usage.
Example:
# Close the sandbox and clean up
tool.close()
Data Structures
SandboxUploadedFile
Represents metadata about a file uploaded to the sandbox.
name:str— Name of the uploaded file in the sandboxremote_path:str— Full path to the file in the sandboxdescription:str— Description provided during upload
Sandbox
Represents a Daytona sandbox instance.
See the full structure and API in the Daytona Python SDK Sandbox documentation.
Metadata
Release files for langchain-daytona-data-analysis 0.2.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 | |
|---|---|---|---|
| langchain_daytona_data_analysis-0.2.0.tar.gz | 6.8 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| langchain_daytona_data_analysis-0.2.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 14.8 kB
Release files / langchain_daytona_data_analysis-0.2.0.tar.gz
| Download URL | langchain_daytona_data_analysis-0.2.0.tar.gz |
|---|---|
| Size | 6.8 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
f27cd0616d671215d673db8b7e8351c9c9187a7221fc4a201b103cd2090f515c
|
|
BLAKE2b-256 checksum How to use checksums |
123ec60a676ff947343a66eb709322d501023a3215645f0780d062cb969ca6e7
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.12
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Jul 6, 2026.
Transparency logRelease files / langchain_daytona_data_analysis-0.2.0-py3-none-any.whl
| Download URL | langchain_daytona_data_analysis-0.2.0-py3-none-any.whl |
|---|---|
| Size | 8.0 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
c02bf73bf78f5e0e3513e39950c2aac49c225725504444da86d3c64b13ee9232
|
|
BLAKE2b-256 checksum How to use checksums |
e3f0141fb2ea9228c56516cf6333448903c3245767db297723cd33e78b2c3c8d
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.12
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Jul 6, 2026.
Transparency log