Releases: graphistry/louie-py
Releases · graphistry/louie-py
v0.7.1
v0.7.0
Added
- Distributed tracing: W3C
traceparentpropagation 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 acceptssession_trace_idandtraceparentparameters- All HTTP methods (
add_cell,upload_*, streaming) propagate trace context
Full Changelog: v0.6.2...v0.7.0
v0.6.2
[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, withanonymous/tokenclient options.
Changed
- Thread listing:
list_threads()now parses bothdataanditemsresponse shapes and supports client-side folder filtering. - 🔥 Breaking:
serverandanonymous_tokenwere removed; usegraphistry_serverandtokeninstead. - Secret detection: CI now uses a temp baseline to avoid rewriting
.secrets.baselinetimestamps when nothing changes.
v0.6.1
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
- @graphistry (squash merge)
v0.6.0 - Upload Support
Summary
- Adds complete support for uploading DataFrames, images, and binary files
- Enables natural language analysis of user data through
lui()interface
Changes
New Features
- ✨
UploadClientclass 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 DataFramesclient.upload_image(prompt, image)- Upload and analyze imagesclient.upload_binary(prompt, file)- Upload and analyze fileslui(prompt, df)- Natural notebook interface for uploadslui(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
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
- Modified
v0.5.6 - Fix cursor properties to return last result
What's Changed
Fixed
- Cursor properties:
lui.df,lui.text, andlui.gnow 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
CursorandResponseProxyclasses
Added
- Thread management documentation: Added comprehensive documentation for
.urland.thread_idproperties - 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
What's Changed
Fixed
- Vibes investigation notebook: Fixed remaining table references to use underscored
o365_management_activity_flat_tcookinstead of hyphenated names - Notebook output cleaning: Enhanced to handle
display_dataoutput type in addition toexecute_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
What's Changed
Fixed
- Vibes investigation notebook: Fixed Databricks table references to use correct
o365_management_activity_flat_tcooktable name instead of incorrect hyphenated names
Full Changelog: v0.5.3...v0.5.4
v0.5.3
What's Changed
New Features
- Add
Cursor.new()method for creating fresh conversation threads while preserving authentication - Thread naming support via
nameparameter 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