Build and package Python tools into standalone executables for LLM integration.
Project description
Hot-Tool
Build and package Python tools into standalone executables for LLM integration.
Features
- Define Tools Simply - Inherit from
HotToolclass and implement therun()method - Build Standalone Executables - Compile Python tools into single binary files using
hot-tool build - Run Without Dependencies - Execute tools without Python installation or source code access
Installation
pip install hot-tool
Quick Start
Define Hot Tool
# get_my_ip.py
from typing import Optional
import requests
from hot_tool import HotTool
class GetMyIpTool(HotTool):
def run(
self, arguments: Optional[str] = None, context: Optional[str] = None
) -> str:
response = requests.get("https://ifconfig.me")
try:
response.raise_for_status()
return response.text.strip()
except Exception as e:
print(f"Error: {type(e).__name__}: {e}")
return "Can not get my IP, please try again later."
Run Programmatically
# main.py
from get_my_ip import GetMyIpTool
from hot_tool.run import run_tool
print(run_tool(GetMyIpTool))
# 198.51.100.156
Build Standalone Executable and Run as Executable
hot-tool build get_my_ip.py -o get_my_ip
# Starting Nuitka compilation...
# ...
# Nuitka-Plugins:upx: Compressing 'get_my_ip'.
# Nuitka: Successfully created 'get_my_ip'.
# Compilation completed successfully.
# Standalone script saved to '/Users/me/path/to/get_my_ip'
./get_my_ip
# 198.51.100.156
Advanced Usage
Tool Inheritance for Reusability
You can create reusable base tool classes and import them into your scripts:
# base_tool.py
from hot_tool import HotTool
class BaseAPITool(HotTool):
def run(self, arguments=None, context=None):
# Shared logic here
return self.call_api()
# my_tool.py - Your main script
from base_tool import BaseAPITool
class MyCustomTool(BaseAPITool): # Inherit from your base class
def run(self, arguments=None, context=None):
# Custom implementation
return "Custom result"
Important: Each script can only define one concrete tool class that implements run(). Imported base classes don't count toward this limit.
License
MIT License
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file hot_tool-0.0.2.tar.gz.
File metadata
- Download URL: hot_tool-0.0.2.tar.gz
- Upload date:
- Size: 5.3 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/2.2.1 CPython/3.11.14 Darwin/25.1.0
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
9a30be8726d524a6c09e8ad8440a09cf2ea0f4a61b0277823a46190715d5d704
|
|
| MD5 |
12ae76bd1fc88724deb586e70a789d82
|
|
| BLAKE2b-256 |
480e346e5b64a99a17dd31774b1d21337ddf126f543301daf9359d69e4961590
|
File details
Details for the file hot_tool-0.0.2-py3-none-any.whl.
File metadata
- Download URL: hot_tool-0.0.2-py3-none-any.whl
- Upload date:
- Size: 7.0 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/2.2.1 CPython/3.11.14 Darwin/25.1.0
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
e7be99d00e38be74d07c3a79f0de3554526c457a0328cf78ad8f36f94fb6e8ff
|
|
| MD5 |
8d4c9175bcff2f4e27c8274d8d3f00f6
|
|
| BLAKE2b-256 |
fdfcb107bd9a266fcc7c1599df6485ceeb75944df7a49178b5afc53a62e89577
|