Skip to content

feat: LangChain tools for Hotdata managed databases#1

Open
eddietejeda wants to merge 8 commits into
mainfrom
feat/managed-database-tools
Open

feat: LangChain tools for Hotdata managed databases#1
eddietejeda wants to merge 8 commits into
mainfrom
feat/managed-database-tools

Conversation

@eddietejeda
Copy link
Copy Markdown
Contributor

@eddietejeda eddietejeda commented May 19, 2026

Summary

  • Bootstrap hotdata-langchain with agent tools built on hotdata-runtime>=0.1.1
  • Add SQL execution and managed database create/load tools via make_hotdata_tools()
  • Include examples, unit tests, PyPI publish workflow, and release automation

Tools

  • hotdata_execute_sql
  • hotdata_list_managed_databases
  • hotdata_create_managed_database
  • hotdata_load_managed_table

Test plan

  • uv sync --locked
  • uv run pytest (21 passed)
  • CI pytest workflow

Bootstrap hotdata-langchain with SQL and managed database agent tools
built on hotdata-runtime 0.1.1.
claude[bot]
claude Bot previously approved these changes May 19, 2026
Require the latest SDK directly alongside hotdata-runtime for clearer version alignment.
Comment thread pyproject.toml
license = { text = "MIT" }
dependencies = [
"hotdata-runtime>=0.1.1",
"hotdata>=0.2.0",
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

nit: hotdata>=0.2.0 is listed as a direct dependency, but nothing in this package imports hotdata directly — only hotdata_runtime and langchain_core. It's already pulled in transitively via hotdata-runtime, so this line can be dropped to keep the direct dependency set minimal. (not blocking)

claude[bot]
claude Bot previously approved these changes May 20, 2026
Add scripts/release.sh for version bumps, changelog updates, tagging, and
GitHub Release creation via CI. Enforce changelog checks on version PRs.
claude[bot]
claude Bot previously approved these changes May 20, 2026
Run locked uv sync and pytest on pull requests. Validate examples/demo.ipynb
structure and optional live smoke when HOTDATA_API_KEY is set.
Comment thread scripts/release.sh Outdated
Comment on lines +127 to +130
if text.startswith("# Changelog"):
parts = text.split("\n\n", 2)
if len(parts) >= 2:
text = parts[0] + "\n\n" + parts[1] + "\n\n" + insert + (parts[2] if len(parts) > 2 else "")
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

nit: this text.split("\n\n", 2) branch assumes the preamble between # Changelog and the first version heading is a single paragraph, but the Keep a Changelog template (which CHANGELOG.md here uses) has two paragraphs: the "All notable changes…" line and the "The format is based on…" line. When [Unreleased] actually contains notes, parts[1] only captures the first paragraph and the new ## [X.Y.Z] block gets spliced between the two preamble paragraphs, pushing "The format is based on…" below the new release.

The current PR isn't affected because [Unreleased] is empty (so the else branch on line 142 runs), but the next release with notes will produce a malformed changelog. Easiest fix is to anchor on ## [Unreleased] directly, e.g.

text = text.replace("## [Unreleased]", insert.rstrip() + "\n\n## [Unreleased]", 1)

after building insert as f"## [{ver}] - {date}\n{body}" (without the leading ## [Unreleased]). That keeps both else and this branch on one consistent path. (not blocking)

claude[bot]
claude Bot previously approved these changes May 20, 2026
Avoid duplicate [Unreleased] headings and keep the preamble intact when
preparing releases. Add unit tests and harden release workflow output.
Comment thread .github/workflows/ci.yml

jobs:
test:
name: Test (Python 3.12)
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

nit: pyproject.toml declares requires-python = ">=3.10", but CI only exercises Python 3.12. The code uses 3.10+ generic syntax (list[str] | None) under from __future__ import annotations, so it should work on 3.10/3.11, but nothing here verifies those versions stay green. Consider a strategy.matrix.python-version: ['3.10', '3.11', '3.12'] so a regression at the lower bounds is caught before users hit it. (not blocking)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant