Skip to content

Releases: graphistry/louie-py

v0.7.1

26 Jan 04:03
08e1334

Choose a tag to compare

Added

  • Targeted pandas 2.x/3.x compatibility tests in CI.

Changed

  • pandas requirement updated to >=2,<4 (supports 2.x and 3.x).
  • Dropped direct pytz dependency; now only transitive via pandas 2.x.

Fixed

  • Secret detection CI no longer rewrites .secrets.baseline on check-only runs.

v0.7.0

17 Jan 00:08
444b362

Choose a tag to compare

Added

  • Distributed tracing: W3C traceparent propagation for correlating requests with OpenTelemetry
    • Automatic OTel context propagation when available
    • Session-level trace ID for correlation when OTel is not configured
    • Cursor.new() children inherit parent trace ID for session-wide correlation
    • Zero configuration required - works automatically

Changed

  • LouieClient._get_headers() now accepts session_trace_id and traceparent parameters
  • All HTTP methods (add_cell, upload_*, streaming) propagate trace context

Full Changelog: v0.6.2...v0.7.0

v0.6.2

24 Dec 07:42
79105e5

Choose a tag to compare

[0.6.2] - 2025-12-22

Added

  • Dthread naming + folders: Thread name/folder are supported across create, add, list, and upload helpers, plus notebook cursor flows.
  • Thread lookup by name: get_thread_by_name() resolves threads by name via the unified identifier endpoint.
  • Anonymous desktop auth (optional): Anonymous token flow for local desktop servers via /auth/anonymous, with anonymous/token client options.

Changed

  • Thread listing: list_threads() now parses both data and items response shapes and supports client-side folder filtering.
  • 🔥 Breaking: server and anonymous_token were removed; use graphistry_server and token instead.
  • Secret detection: CI now uses a temp baseline to avoid rewriting .secrets.baseline timestamps when nothing changes.

v0.6.1

06 Nov 13:09
1ea85fa

Choose a tag to compare

Summary

  • Add structured Table AI override plumbing for LouieClient.add_cell()/create_thread() and UploadClient.upload_dataframe(), including automatic singleshot routing + dataframe hydration
  • Expose new TableAIOverrides dataclass via public API and update docs/tests to promote the dataclass-first flow

Contributors

v0.6.0 - Upload Support

25 Sep 06:46
cd3d330

Choose a tag to compare

Summary

  • Adds complete support for uploading DataFrames, images, and binary files
  • Enables natural language analysis of user data through lui() interface

Changes

New Features

  • UploadClient class for handling all upload operations
  • 📊 DataFrame upload with multiple formats (parquet, csv, json, arrow)
  • 🖼️ Image upload support (PNG, JPEG, etc.)
  • 📄 Binary file upload support (PDF, Office docs, etc.)
  • 🔄 Streaming display support for uploaded content in notebooks

API Additions

  • client.upload_dataframe(prompt, df) - Upload and analyze DataFrames
  • client.upload_image(prompt, image) - Upload and analyze images
  • client.upload_binary(prompt, file) - Upload and analyze files
  • lui(prompt, df) - Natural notebook interface for uploads
  • lui(df, prompt) - Reversed syntax for convenience

Files Changed

  • New: src/louieai/_upload.py (core upload implementation)
  • Modified: _client.py, cursor.py, streaming.py (integration)
  • Added: 8 test files with comprehensive coverage
  • Updated: Documentation and notebooks with upload examples

Testing

  • ✅ All upload tests passing (12 tests in test_upload.py)
  • ✅ Linting and type checking pass
  • ✅ Backwards compatible - no breaking changes

Related

  • Original implementation by @author from dev/artifact-upload branch

v0.5.7 - Fix double display in Jupyter notebooks

05 Aug 21:52

Choose a tag to compare

Fixed

  • Double display in Jupyter notebooks: Fixed issue where responses were displayed twice when calling lui("query") in notebooks
    • Modified _repr_html_ to show only session metadata instead of response content
    • Response content is now displayed only once via streaming or _display() method
    • Prevents duplicate display while maintaining useful session information

v0.5.6 - Fix cursor properties to return last result

04 Aug 14:08

Choose a tag to compare

What's Changed

Fixed

  • Cursor properties: lui.df, lui.text, and lui.g now correctly return the last (most recent) result instead of the first
    • This matches user expectations where the most recent result is typically most relevant
    • Affects both Cursor and ResponseProxy classes

Added

  • Thread management documentation: Added comprehensive documentation for .url and .thread_id properties
  • Thread Management section in notebook API docs with examples for sharing analysis results

Improved

  • Security documentation: Enhanced credential storage guidelines for AI assistants
  • Cursor.url property: Enhanced docstring with examples and use cases

Full Changelog

v0.5.5...v0.5.6

v0.5.5

04 Aug 05:38

Choose a tag to compare

What's Changed

Fixed

  • Vibes investigation notebook: Fixed remaining table references to use underscored o365_management_activity_flat_tcook instead of hyphenated names
  • Notebook output cleaning: Enhanced to handle display_data output type in addition to execute_result

Details

  • All Databricks table references now use the correct underscored format
  • Notebook cleaning script properly handles all output types
  • Improved notebook execution reliability

Full Changelog: v0.5.4...v0.5.5

v0.5.4

04 Aug 04:52

Choose a tag to compare

What's Changed

Fixed

  • Vibes investigation notebook: Fixed Databricks table references to use correct o365_management_activity_flat_tcook table name instead of incorrect hyphenated names

Full Changelog: v0.5.3...v0.5.4

v0.5.3

04 Aug 04:19

Choose a tag to compare

What's Changed

New Features

  • Add Cursor.new() method for creating fresh conversation threads while preserving authentication
  • Thread naming support via name parameter to organize analyses
  • Share mode validation with clear error messages
  • DataFrame metadata preservation in elements (id, df_id, block_id)

Bug Fixes

  • Fix empty text elements issue with DatabricksAgent - ResponseProxy now checks content/text/value fields
  • Fix notebook cleaning to redact sensitive data instead of removing entire outputs
  • Fix pre-commit hook to recognize **** as legitimate redaction pattern

Documentation & Examples

  • Update vibes tutorial notebook to use lui.new() pattern
  • Add DataFrame ID extraction example
  • Add demo video to documentation homepage

Infrastructure

  • Add notebook build utilities (build-notebook.sh, validate-notebook.py, clean-notebook-outputs.py)
  • Improve CI with concurrency control and light smoke tests
  • Enhance pre-commit hook for security tools

Example Usage

# Create fresh thread with same auth
lui = louie(g, server_url="https://louie.ai")
lui("Analyze sales data")

# Start new thread for different topic  
lui_new = lui.new(name="Customer Analysis")
lui_new("Show customer segments")

# Override share mode
private_lui = lui.new(share_mode="Private")

Full Changelog: v0.5.2...v0.5.3