# Camino AI Python SDK
The official Python SDK for [Camino AI](https://getcamino.ai) - Guide your AI agents through the real world with location intelligence, spatial reasoning, and route planning.
## Features
- π **Natural Language Queries**: Search for places using natural language
- π **Web Enrichment**: Real-time verification from Yelp, TripAdvisor, and other authoritative sources
- π **Spatial Relationships**: Calculate distances, bearings, and spatial relationships
- πΊοΈ **Location Context**: Get rich contextual information about any location
- π§ **Journey Planning**: Multi-waypoint journey optimization
- π€οΈ **Routing**: Point-to-point routing with multiple transport modes
- β‘ **Async Support**: Full async/await support for all operations
- π **Auto Retry**: Built-in retry logic with exponential backoff
- π **Type Hints**: Full type annotations for better IDE support
- π‘οΈ **Error Handling**: Comprehensive error handling with custom exceptions
## Installation
```bash
pip install camino-ai-sdk
```
## Quick Start
```python
from camino_ai import CaminoAI
# Initialize the client
client = CaminoAI(api_key="your-api-key")
# Search for coffee shops
response = client.query("coffee shops near Central Park")
for result in response.results:
print(f"{result.name}: {result.address}")
# Calculate spatial relationship
from camino_ai import RelationshipRequest, Coordinate
relationship = client.relationship(RelationshipRequest(
from_location=Coordinate(lat=40.7831, lng=-73.9712), # Central Park
to_location=Coordinate(lat=40.7589, lng=-73.9851) # Times Square
))
print(f"Distance: {relationship.distance}m")
```
## Async Usage
```python
import asyncio
from camino_ai import CaminoAI
async def main():
async with CaminoAI(api_key="your-api-key") as client:
response = await client.query_async("restaurants in Brooklyn")
print(f"Found {len(response.results)} restaurants")
asyncio.run(main())
```
## API Reference
### Client Initialization
```python
client = CaminoAI(
api_key="your-api-key",
base_url="https://api.getcamino.ai", # Optional
timeout=30.0, # Optional
max_retries=3, # Optional
retry_backoff=1.0 # Optional
)
```
### Query
Search for points of interest using natural language:
```python
# Simple string query
response = client.query("pizza places in Manhattan")
# Advanced query with parameters
from camino_ai import QueryRequest, Coordinate
request = QueryRequest(
query="coffee shops",
lat=40.7831,
lon=-73.9712,
radius=1000, # meters
limit=10
)
response = client.query(request)
# Access web enrichment data (if available)
for result in response.results:
print(f"{result.name}")
# Check web verification
if result.web_enrichment and result.web_enrichment.web_verified:
sources = [s['domain'] for s in result.web_enrichment.verification_sources]
print(f" Found on: {', '.join(sources)}")
# Check operational status
if result.web_enrichment.appears_operational is True:
print(f" β
Appears open (confidence: {result.web_enrichment.confidence})")
elif result.web_enrichment.appears_operational is False:
print(f" β οΈ May be closed (confidence: {result.web_enrichment.confidence})")
```
#### Query Modes
Control which features are enabled with the `mode` parameter:
```python
# Basic mode (default) - Open data only
response = client.query(QueryRequest(
query="coffee shops in Paris",
lat=48.8566,
lon=2.3522,
mode="basic" # No web enrichment, no AWS fallback
))
# Advanced mode - Additional data sources enabled
response = client.query(QueryRequest(
query="coffee shops in Paris",
lat=48.8566,
lon=2.3522,
mode="advanced" # Includes web enrichment + AWS Location fallback
))
```
**Mode options:**
- `mode="basic"` (default): OpenStreetMap data only (no additional data sources)
- `mode="advanced"`: Additional paid data sources enabled:
- **Tavily web enrichment**: Real-time verification from authoritative sources (Yelp, TripAdvisor, etc.)
- **AWS Location Service fallback**: When OSM has no results, fall back to AWS for better coverage
**Cost consideration:** Only use `mode="advanced"` when you need real-time web verification or improved coverage. Basic mode uses only open data and is suitable for most location queries.
### Search
Search for places using free-form or structured queries via Nominatim:
```python
from camino_ai import SearchRequest
# Free-form search
response = client.search("Eiffel Tower")
# Structured search with address components
response = client.search(SearchRequest(
amenity="restaurant",
city="Paris",
country="France",
limit=10,
mode="basic" # or "advanced" for web enrichment
))
# Access results
for result in response.results:
print(f"{result.display_name}")
print(f" Location: {result.lat}, {result.lon}")
print(f" Type: {result.type}")
# Check for web enrichment (only in advanced mode)
if result.web_enrichment and result.web_enrichment.web_verified:
print(f" β Web verified")
```
**Mode parameter**:
- `mode="basic"` (default): Nominatim search with open data only
- `mode="advanced"`: Includes web enrichment for search results
### Relationships
Calculate spatial relationships between locations:
```python
from camino_ai import RelationshipRequest, Coordinate
request = RelationshipRequest(
from_location=Coordinate(lat=40.7831, lng=-73.9712),
to_location=Coordinate(lat=40.7589, lng=-73.9851),
relationship_type="distance_and_bearing"
)
response = client.relationship(request)
print(f"Distance: {response.distance}m, Bearing: {response.bearing}Β°")
```
### Context
Get contextual information about a location:
```python
from camino_ai import ContextRequest, Coordinate
request = ContextRequest(
location=Coordinate(lat=40.7831, lng=-73.9712),
radius=500,
categories=["restaurant", "entertainment"]
)
response = client.context(request)
print(f"Context: {response.context}")
```
### Journey Planning
Plan optimized multi-waypoint journeys:
```python
from camino_ai import JourneyRequest, Waypoint, JourneyConstraints, TransportMode
request = JourneyRequest(
waypoints=[
Waypoint(location=Coordinate(lat=40.7831, lng=-73.9712)),
Waypoint(location=Coordinate(lat=40.7589, lng=-73.9851)),
Waypoint(location=Coordinate(lat=40.7505, lng=-73.9934))
],
constraints=JourneyConstraints(
transport_mode=TransportMode.DRIVING,
avoid_tolls=True
),
optimize=True
)
response = client.journey(request)
print(f"Total distance: {response.total_distance}m")
print(f"Total duration: {response.total_duration}s")
```
### Routing
Calculate routes between two points:
```python
from camino_ai import RouteRequest, Coordinate, TransportMode
request = RouteRequest(
start=Coordinate(lat=40.7831, lng=-73.9712),
end=Coordinate(lat=40.7589, lng=-73.9851),
transport_mode=TransportMode.WALKING,
avoid_highways=True
)
response = client.route(request)
print(f"Route distance: {response.distance}m")
print(f"Route duration: {response.duration}s")
```
## Error Handling
The SDK provides specific exception types for different error conditions:
```python
from camino_ai import CaminoAI, APIError, AuthenticationError, RateLimitError
try:
client = CaminoAI(api_key="invalid-key")
response = client.query("coffee shops")
except AuthenticationError as e:
print(f"Authentication failed: {e.message}")
except RateLimitError as e:
print(f"Rate limit exceeded. Retry after: {e.retry_after}s")
except APIError as e:
print(f"API error: {e.message} (status: {e.status_code})")
```
## Web Enrichment
Web enrichment provides real-time verification from authoritative web sources like Yelp, TripAdvisor, and official websites. This feature is only available in **advanced mode** (`mode="advanced"`).
### Features
- **Web Verification**: Confirms the place exists on authoritative sources
- **Operational Status**: Detects if a place appears open or closed based on recent web mentions
- **Verification Sources**: Lists which websites mention the location
- **Recent Mentions**: Provides snippets from recent web content
### Usage
```python
# Enable web enrichment by using advanced mode
response = client.query(QueryRequest(
query="coffee shops near me",
lat=40.7589,
lon=-73.9851,
mode="advanced" # Required for web enrichment
))
result = response.results[0]
if result.web_enrichment:
# Check if verified on the web
if result.web_enrichment.web_verified:
print("β Verified on the web")
# Get verification sources
for source in result.web_enrichment.verification_sources:
print(f" - {source['domain']}: {source['title']}")
# Check operational status
if result.web_enrichment.appears_operational is True:
print(f"Likely OPEN (confidence: {result.web_enrichment.confidence})")
elif result.web_enrichment.appears_operational is False:
print(f"Likely CLOSED (confidence: {result.web_enrichment.confidence})")
# Read recent mentions
for mention in result.web_enrichment.recent_mentions:
print(f" {mention['snippet']}")
print(f" Source: {mention['url']}")
```
**Requirements**:
- Must use `mode="advanced"` in your query
- API must have `TAVILY_API_KEY` configured
- The place must be found in web search results
**Note**: Web enrichment incurs additional costs through Tavily. Use `mode="basic"` when web verification is not needed.
## Transport Modes
Available transport modes for routing and journey planning:
- `TransportMode.DRIVING` - Car/driving directions
- `TransportMode.WALKING` - Walking directions
- `TransportMode.CYCLING` - Bicycle directions
- `TransportMode.TRANSIT` - Public transportation
## Development
### Setup
```bash
# Clone the repository
git clone https://github.com/camino-ai/camino-sdks.git
cd camino-sdks/python
# Install dependencies
poetry install
# Install pre-commit hooks
pre-commit install
```
### Testing
```bash
# Run tests
poetry run pytest
# Run tests with coverage
poetry run pytest --cov=camino_ai
# Run type checking
poetry run mypy camino_ai
```
### Formatting
```bash
# Format code
poetry run black camino_ai tests
poetry run isort camino_ai tests
# Lint code
poetry run ruff check camino_ai tests
# Auto-fix linting issues
poetry run ruff check --fix camino_ai tests
```
## License
This project is licensed under the MIT License - see the [LICENSE](../LICENSE) file for details.
## Support
- π§ Email: support@getcamino.ai
- π Issues: [GitHub Issues](https://github.com/camino-ai/camino-sdks/issues)
- π Documentation: [docs.getcamino.ai](https://docs.getcamino.ai)
Raw data
{
"_id": null,
"home_page": null,
"name": "camino-ai-sdk",
"maintainer": null,
"docs_url": null,
"requires_python": "<4.0,>=3.9",
"maintainer_email": null,
"keywords": "camino, ai, geospatial, location, routing, sdk",
"author": "Camino AI",
"author_email": "support@getcamino.ai",
"download_url": "https://files.pythonhosted.org/packages/2c/af/31605aa87a6fa99ef26fb10bbb1269b7a91097f39633dafebd47a099b599/camino_ai_sdk-0.5.0.tar.gz",
"platform": null,
"description": "# Camino AI Python SDK\n\nThe official Python SDK for [Camino AI](https://getcamino.ai) - Guide your AI agents through the real world with location intelligence, spatial reasoning, and route planning.\n\n## Features\n\n- \ud83c\udf0d **Natural Language Queries**: Search for places using natural language\n- \ud83c\udf10 **Web Enrichment**: Real-time verification from Yelp, TripAdvisor, and other authoritative sources\n- \ud83d\udccd **Spatial Relationships**: Calculate distances, bearings, and spatial relationships\n- \ud83d\uddfa\ufe0f **Location Context**: Get rich contextual information about any location\n- \ud83e\udded **Journey Planning**: Multi-waypoint journey optimization\n- \ud83d\udee4\ufe0f **Routing**: Point-to-point routing with multiple transport modes\n- \u26a1 **Async Support**: Full async/await support for all operations\n- \ud83d\udd04 **Auto Retry**: Built-in retry logic with exponential backoff\n- \ud83d\udcdd **Type Hints**: Full type annotations for better IDE support\n- \ud83d\udee1\ufe0f **Error Handling**: Comprehensive error handling with custom exceptions\n\n## Installation\n\n```bash\npip install camino-ai-sdk\n```\n\n## Quick Start\n\n```python\nfrom camino_ai import CaminoAI\n\n# Initialize the client\nclient = CaminoAI(api_key=\"your-api-key\")\n\n# Search for coffee shops\nresponse = client.query(\"coffee shops near Central Park\")\nfor result in response.results:\n print(f\"{result.name}: {result.address}\")\n\n# Calculate spatial relationship\nfrom camino_ai import RelationshipRequest, Coordinate\n\nrelationship = client.relationship(RelationshipRequest(\n from_location=Coordinate(lat=40.7831, lng=-73.9712), # Central Park\n to_location=Coordinate(lat=40.7589, lng=-73.9851) # Times Square\n))\nprint(f\"Distance: {relationship.distance}m\")\n```\n\n## Async Usage\n\n```python\nimport asyncio\nfrom camino_ai import CaminoAI\n\nasync def main():\n async with CaminoAI(api_key=\"your-api-key\") as client:\n response = await client.query_async(\"restaurants in Brooklyn\")\n print(f\"Found {len(response.results)} restaurants\")\n\nasyncio.run(main())\n```\n\n## API Reference\n\n### Client Initialization\n\n```python\nclient = CaminoAI(\n api_key=\"your-api-key\",\n base_url=\"https://api.getcamino.ai\", # Optional\n timeout=30.0, # Optional\n max_retries=3, # Optional\n retry_backoff=1.0 # Optional\n)\n```\n\n### Query\n\nSearch for points of interest using natural language:\n\n```python\n# Simple string query\nresponse = client.query(\"pizza places in Manhattan\")\n\n# Advanced query with parameters\nfrom camino_ai import QueryRequest, Coordinate\n\nrequest = QueryRequest(\n query=\"coffee shops\",\n lat=40.7831,\n lon=-73.9712,\n radius=1000, # meters\n limit=10\n)\nresponse = client.query(request)\n\n# Access web enrichment data (if available)\nfor result in response.results:\n print(f\"{result.name}\")\n\n # Check web verification\n if result.web_enrichment and result.web_enrichment.web_verified:\n sources = [s['domain'] for s in result.web_enrichment.verification_sources]\n print(f\" Found on: {', '.join(sources)}\")\n\n # Check operational status\n if result.web_enrichment.appears_operational is True:\n print(f\" \u2705 Appears open (confidence: {result.web_enrichment.confidence})\")\n elif result.web_enrichment.appears_operational is False:\n print(f\" \u26a0\ufe0f May be closed (confidence: {result.web_enrichment.confidence})\")\n```\n\n#### Query Modes\n\nControl which features are enabled with the `mode` parameter:\n\n```python\n# Basic mode (default) - Open data only\nresponse = client.query(QueryRequest(\n query=\"coffee shops in Paris\",\n lat=48.8566,\n lon=2.3522,\n mode=\"basic\" # No web enrichment, no AWS fallback\n))\n\n# Advanced mode - Additional data sources enabled\nresponse = client.query(QueryRequest(\n query=\"coffee shops in Paris\",\n lat=48.8566,\n lon=2.3522,\n mode=\"advanced\" # Includes web enrichment + AWS Location fallback\n))\n```\n\n**Mode options:**\n- `mode=\"basic\"` (default): OpenStreetMap data only (no additional data sources)\n- `mode=\"advanced\"`: Additional paid data sources enabled:\n - **Tavily web enrichment**: Real-time verification from authoritative sources (Yelp, TripAdvisor, etc.)\n - **AWS Location Service fallback**: When OSM has no results, fall back to AWS for better coverage\n\n**Cost consideration:** Only use `mode=\"advanced\"` when you need real-time web verification or improved coverage. Basic mode uses only open data and is suitable for most location queries.\n\n### Search\n\nSearch for places using free-form or structured queries via Nominatim:\n\n```python\nfrom camino_ai import SearchRequest\n\n# Free-form search\nresponse = client.search(\"Eiffel Tower\")\n\n# Structured search with address components\nresponse = client.search(SearchRequest(\n amenity=\"restaurant\",\n city=\"Paris\",\n country=\"France\",\n limit=10,\n mode=\"basic\" # or \"advanced\" for web enrichment\n))\n\n# Access results\nfor result in response.results:\n print(f\"{result.display_name}\")\n print(f\" Location: {result.lat}, {result.lon}\")\n print(f\" Type: {result.type}\")\n\n # Check for web enrichment (only in advanced mode)\n if result.web_enrichment and result.web_enrichment.web_verified:\n print(f\" \u2713 Web verified\")\n```\n\n**Mode parameter**:\n- `mode=\"basic\"` (default): Nominatim search with open data only\n- `mode=\"advanced\"`: Includes web enrichment for search results\n\n### Relationships\n\nCalculate spatial relationships between locations:\n\n```python\nfrom camino_ai import RelationshipRequest, Coordinate\n\nrequest = RelationshipRequest(\n from_location=Coordinate(lat=40.7831, lng=-73.9712),\n to_location=Coordinate(lat=40.7589, lng=-73.9851),\n relationship_type=\"distance_and_bearing\"\n)\nresponse = client.relationship(request)\nprint(f\"Distance: {response.distance}m, Bearing: {response.bearing}\u00b0\")\n```\n\n### Context\n\nGet contextual information about a location:\n\n```python\nfrom camino_ai import ContextRequest, Coordinate\n\nrequest = ContextRequest(\n location=Coordinate(lat=40.7831, lng=-73.9712),\n radius=500,\n categories=[\"restaurant\", \"entertainment\"]\n)\nresponse = client.context(request)\nprint(f\"Context: {response.context}\")\n```\n\n### Journey Planning\n\nPlan optimized multi-waypoint journeys:\n\n```python\nfrom camino_ai import JourneyRequest, Waypoint, JourneyConstraints, TransportMode\n\nrequest = JourneyRequest(\n waypoints=[\n Waypoint(location=Coordinate(lat=40.7831, lng=-73.9712)),\n Waypoint(location=Coordinate(lat=40.7589, lng=-73.9851)),\n Waypoint(location=Coordinate(lat=40.7505, lng=-73.9934))\n ],\n constraints=JourneyConstraints(\n transport_mode=TransportMode.DRIVING,\n avoid_tolls=True\n ),\n optimize=True\n)\nresponse = client.journey(request)\nprint(f\"Total distance: {response.total_distance}m\")\nprint(f\"Total duration: {response.total_duration}s\")\n```\n\n### Routing\n\nCalculate routes between two points:\n\n```python\nfrom camino_ai import RouteRequest, Coordinate, TransportMode\n\nrequest = RouteRequest(\n start=Coordinate(lat=40.7831, lng=-73.9712),\n end=Coordinate(lat=40.7589, lng=-73.9851),\n transport_mode=TransportMode.WALKING,\n avoid_highways=True\n)\nresponse = client.route(request)\nprint(f\"Route distance: {response.distance}m\")\nprint(f\"Route duration: {response.duration}s\")\n```\n\n## Error Handling\n\nThe SDK provides specific exception types for different error conditions:\n\n```python\nfrom camino_ai import CaminoAI, APIError, AuthenticationError, RateLimitError\n\ntry:\n client = CaminoAI(api_key=\"invalid-key\")\n response = client.query(\"coffee shops\")\nexcept AuthenticationError as e:\n print(f\"Authentication failed: {e.message}\")\nexcept RateLimitError as e:\n print(f\"Rate limit exceeded. Retry after: {e.retry_after}s\")\nexcept APIError as e:\n print(f\"API error: {e.message} (status: {e.status_code})\")\n```\n\n## Web Enrichment\n\nWeb enrichment provides real-time verification from authoritative web sources like Yelp, TripAdvisor, and official websites. This feature is only available in **advanced mode** (`mode=\"advanced\"`).\n\n### Features\n\n- **Web Verification**: Confirms the place exists on authoritative sources\n- **Operational Status**: Detects if a place appears open or closed based on recent web mentions\n- **Verification Sources**: Lists which websites mention the location\n- **Recent Mentions**: Provides snippets from recent web content\n\n### Usage\n\n```python\n# Enable web enrichment by using advanced mode\nresponse = client.query(QueryRequest(\n query=\"coffee shops near me\",\n lat=40.7589,\n lon=-73.9851,\n mode=\"advanced\" # Required for web enrichment\n))\n\nresult = response.results[0]\n\nif result.web_enrichment:\n # Check if verified on the web\n if result.web_enrichment.web_verified:\n print(\"\u2713 Verified on the web\")\n\n # Get verification sources\n for source in result.web_enrichment.verification_sources:\n print(f\" - {source['domain']}: {source['title']}\")\n\n # Check operational status\n if result.web_enrichment.appears_operational is True:\n print(f\"Likely OPEN (confidence: {result.web_enrichment.confidence})\")\n elif result.web_enrichment.appears_operational is False:\n print(f\"Likely CLOSED (confidence: {result.web_enrichment.confidence})\")\n\n # Read recent mentions\n for mention in result.web_enrichment.recent_mentions:\n print(f\" {mention['snippet']}\")\n print(f\" Source: {mention['url']}\")\n```\n\n**Requirements**:\n- Must use `mode=\"advanced\"` in your query\n- API must have `TAVILY_API_KEY` configured\n- The place must be found in web search results\n\n**Note**: Web enrichment incurs additional costs through Tavily. Use `mode=\"basic\"` when web verification is not needed.\n\n## Transport Modes\n\nAvailable transport modes for routing and journey planning:\n\n- `TransportMode.DRIVING` - Car/driving directions\n- `TransportMode.WALKING` - Walking directions\n- `TransportMode.CYCLING` - Bicycle directions\n- `TransportMode.TRANSIT` - Public transportation\n\n## Development\n\n### Setup\n\n```bash\n# Clone the repository\ngit clone https://github.com/camino-ai/camino-sdks.git\ncd camino-sdks/python\n\n# Install dependencies\npoetry install\n\n# Install pre-commit hooks\npre-commit install\n```\n\n### Testing\n\n```bash\n# Run tests\npoetry run pytest\n\n# Run tests with coverage\npoetry run pytest --cov=camino_ai\n\n# Run type checking\npoetry run mypy camino_ai\n```\n\n### Formatting\n\n```bash\n# Format code\npoetry run black camino_ai tests\npoetry run isort camino_ai tests\n\n# Lint code\npoetry run ruff check camino_ai tests\n\n# Auto-fix linting issues\npoetry run ruff check --fix camino_ai tests\n```\n\n## License\n\nThis project is licensed under the MIT License - see the [LICENSE](../LICENSE) file for details.\n\n## Support\n\n- \ud83d\udce7 Email: support@getcamino.ai\n- \ud83d\udc1b Issues: [GitHub Issues](https://github.com/camino-ai/camino-sdks/issues)\n- \ud83d\udcd6 Documentation: [docs.getcamino.ai](https://docs.getcamino.ai)\n",
"bugtrack_url": null,
"license": "MIT",
"summary": "Camino AI Python SDK for location intelligence and spatial reasoning",
"version": "0.5.0",
"project_urls": {
"Documentation": "https://docs.getcamino.ai",
"Homepage": "https://github.com/camino-ai/camino-sdks",
"Repository": "https://github.com/camino-ai/camino-sdks"
},
"split_keywords": [
"camino",
" ai",
" geospatial",
" location",
" routing",
" sdk"
],
"urls": [
{
"comment_text": null,
"digests": {
"blake2b_256": "40b7912ccff850e4cac0867dd4c285bf775faa627a036a4a7626fad1363e31fa",
"md5": "2f74bb37fc04d98d7e3f1a6619e3dbf8",
"sha256": "ee0e0ec6398d213415a3a69d9786e85c836d51635de43f864fc2b8b83f7baa69"
},
"downloads": -1,
"filename": "camino_ai_sdk-0.5.0-py3-none-any.whl",
"has_sig": false,
"md5_digest": "2f74bb37fc04d98d7e3f1a6619e3dbf8",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": "<4.0,>=3.9",
"size": 17482,
"upload_time": "2025-10-07T18:36:43",
"upload_time_iso_8601": "2025-10-07T18:36:43.474876Z",
"url": "https://files.pythonhosted.org/packages/40/b7/912ccff850e4cac0867dd4c285bf775faa627a036a4a7626fad1363e31fa/camino_ai_sdk-0.5.0-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "2caf31605aa87a6fa99ef26fb10bbb1269b7a91097f39633dafebd47a099b599",
"md5": "8f382c424cc71e8bc33ae9c7fe8537b1",
"sha256": "d5597c47a30a4f96906ce461b39e09366282916b7c19991915b7f09abd31fd88"
},
"downloads": -1,
"filename": "camino_ai_sdk-0.5.0.tar.gz",
"has_sig": false,
"md5_digest": "8f382c424cc71e8bc33ae9c7fe8537b1",
"packagetype": "sdist",
"python_version": "source",
"requires_python": "<4.0,>=3.9",
"size": 18640,
"upload_time": "2025-10-07T18:36:44",
"upload_time_iso_8601": "2025-10-07T18:36:44.903559Z",
"url": "https://files.pythonhosted.org/packages/2c/af/31605aa87a6fa99ef26fb10bbb1269b7a91097f39633dafebd47a099b599/camino_ai_sdk-0.5.0.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2025-10-07 18:36:44",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "camino-ai",
"github_project": "camino-sdks",
"github_not_found": true,
"lcname": "camino-ai-sdk"
}