sunholo 0.131.4__py3-none-any.whl → 0.131.6__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -342,50 +342,83 @@ def search_engine_command(args):
342
342
  console.print("\n[bold green]Search Summary:[/bold green]")
343
343
  console.print(page.summary.summary_text)
344
344
  if args.include_citations and hasattr(page.summary, 'summary_with_metadata') and page.summary.summary_with_metadata:
345
- citation_metadata = page.summary.summary_with_metadata.citation_metadata
346
- if citation_metadata:
347
- console.print("[bold cyan]Citations:[/bold cyan]")
348
- for i, citation in enumerate(citation_metadata):
349
- source_info = ", ".join([f"'{s.reference_index}'" for s in citation.sources]) if citation.sources else "N/A"
350
- console.print(f" [{i+1}] Sources: {source_info}")
351
- references = page.summary.summary_with_metadata.references
352
- if references:
353
- console.print("[bold cyan]References:[/bold cyan]")
354
- for ref in references:
355
- console.print(f" - Title: {getattr(ref, 'title', 'N/A')}, URI: {getattr(ref, 'uri', 'N/A')}") # Adjust based on actual reference structure
345
+ citation_metadata = page.summary.summary_with_metadata.citation_metadata
346
+ if citation_metadata and hasattr(citation_metadata, 'citations'):
347
+ # Get the actual list of Citation objects
348
+ citation_list = citation_metadata.citations
349
+ console.print("[bold cyan]Citations:[/bold cyan]")
350
+ for i, citation in enumerate(citation_list):
351
+ # citation is now a Citation object with start_index, end_index, sources
352
+ source_details = []
353
+ # Check if the citation has sources and iterate through them
354
+ if hasattr(citation, 'sources') and citation.sources:
355
+ for source in citation.sources:
356
+ # source is a CitationSource object with reference_index
357
+ ref_idx = getattr(source, 'reference_index', 'N/A')
358
+ source_details.append(f"RefIdx:{ref_idx}") # Append details of each source
359
+
360
+ source_info = ", ".join(source_details) if source_details else "No Source Info"
361
+ start_idx = getattr(citation, 'start_index', 'N/A')
362
+ end_idx = getattr(citation, 'end_index', 'N/A')
363
+ console.print(f" Citation {i+1}: Segment [{start_idx}-{end_idx}], Sources [{source_info}]")
364
+
365
+ references = page.summary.summary_with_metadata.references
366
+ if references:
367
+ console.print("[bold cyan]References:[/bold cyan]")
368
+ for ref in references:
369
+ console.print(f" - Title: {getattr(ref, 'title', 'N/A')}, URI: {getattr(ref, 'uri', 'N/A')}") # Adjust based on actual reference structure
356
370
 
357
371
  console.print("-" * 20)
358
372
 
359
-
360
373
  # Print Document Results (available on the page level)
361
374
  if hasattr(page, 'results') and page.results:
362
- console.print(f"[bold blue]Documents Found ({len(page.results)} on this page):[/bold blue]")
363
- for i, result in enumerate(page.results):
364
- results_found_on_any_page = True
365
- results_found_on_this_page = True
366
- console.print(f"\n[bold]Result {i+1}:[/bold]")
367
- doc = result.document
368
- console.print(f" ID: {doc.id}")
369
- console.print(f" Name: {doc.name}")
370
- # Display structData if present
371
- if doc.struct_data:
372
- try:
373
- # Convert Struct to dict for nice printing
374
- struct_dict = MessageToDict(doc.struct_data._pb)
375
- console.print(f" Metadata: {json.dumps(struct_dict, indent=2)}")
376
- except Exception as json_err:
377
- console.print(f"[yellow] Warning: Could not convert metadata Struct to JSON: {json_err}[/yellow]")
378
- console.print(f" Metadata: {doc.struct_data}") # Fallback
379
-
380
- # Display Snippets if requested and available
381
- if args.return_snippet and 'snippets' in doc.derived_struct_data:
375
+ console.print(f"[bold blue]Documents Found ({len(page.results)} on this page):[/bold blue]")
376
+ for i, result in enumerate(page.results):
377
+ results_found_on_any_page = True
378
+ results_found_on_this_page = True
379
+ console.print(f"\n[bold]Result {i+1}:[/bold]")
380
+ doc = result.document
381
+ console.print(f" ID: {doc.id}")
382
+ console.print(f" Name: {doc.name}")
383
+ # Display structData if present
384
+ if doc.struct_data:
385
+ # Attempt 1: Preferred - Use proto-plus .to_json() if available
386
+ if hasattr(doc.struct_data, 'to_json'):
387
+ console.print(f"[yellow] to_json[/yellow]")
388
+ # Pass indent directly if the method supports it
389
+ try:
390
+ metadata_output = doc.struct_data.to_json(indent=2)
391
+ except TypeError: # In case to_json doesn't accept indent
392
+ metadata_output = doc.struct_data.to_json()
393
+ # Optionally re-parse and indent if needed, but often okay as is
394
+ # parsed_json = json.loads(metadata_output)
395
+ # metadata_output = json.dumps(parsed_json, indent=2)
396
+
397
+
398
+ # Attempt 2: Use proto-plus .to_dict() then json.dumps
399
+ elif hasattr(doc.struct_data, 'to_dict'):
400
+ console.print(f"[yellow] to_dict[/yellow]")
401
+
402
+ struct_dict = doc.struct_data.to_dict()
403
+ metadata_output = json.dumps(struct_dict, indent=2)
404
+ elif MessageToDict:
405
+ try:
406
+ # Convert Struct to dict for nice printing
407
+ struct_dict = MessageToDict(doc.struct_data._pb)
408
+ except Exception as json_err:
409
+ console.print(f"[yellow] Warning: Could not convert metadata Struct to JSON: {json_err}[/yellow]")
410
+ metadata_output = struct_dict
411
+ console.print(f" Metadata: {json.dumps(metadata_output, indent=2)}")
412
+ # Display Snippets if requested and available
413
+ if args.return_snippet and 'snippets' in doc.derived_struct_data:
382
414
  console.print("[bold cyan] Snippets:[/bold cyan]")
383
415
  for snippet in doc.derived_struct_data['snippets']:
384
416
  console.print(f" - {snippet.get('snippet', 'N/A').strip()}") # Adjust key if needed
385
- elif args.return_snippet:
417
+ elif args.return_snippet:
386
418
  console.print("[yellow] (Snippets requested but not found in result)[/yellow]")
387
- console.print("-" * 5)
388
- console.print("-" * 20) # End of results list for page
419
+ console.print("-" * 5)
420
+
421
+ console.print("-" * 20) # End of results list for page
389
422
 
390
423
  if not results_found_on_this_page:
391
424
  console.print("[yellow](No summary or document results on this page)[/yellow]")
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: sunholo
3
- Version: 0.131.4
3
+ Version: 0.131.6
4
4
  Summary: AI DevOps - a package to help deploy GenAI to the Cloud.
5
5
  Author-email: Holosun ApS <multivac@sunholo.com>
6
6
  License: Apache License, Version 2.0
@@ -73,7 +73,7 @@ sunholo/database/sql/sb/return_sources.sql,sha256=89KAnxfK8n_qGK9jy1OQT8f9n4uYUt
73
73
  sunholo/database/sql/sb/setup.sql,sha256=CvoFvZQev2uWjmFa3aj3m3iuPFzAAJZ0S7Qi3L3-zZI,89
74
74
  sunholo/discovery_engine/__init__.py,sha256=hLgqRDJ22Aov9o2QjAEfsVgnL3kMdM-g5p8RJ9OyKdQ,130
75
75
  sunholo/discovery_engine/chunker_handler.py,sha256=wkvXl4rFtYfN6AZUKdW9_QD49Whf77BukDbO82UwlAg,7480
76
- sunholo/discovery_engine/cli.py,sha256=QLmFDWaNPpgzBN9qDmn3kl5yTepebZNzvwwvusP57-Q,30362
76
+ sunholo/discovery_engine/cli.py,sha256=NpyOJY8lBb2WLy1Up9JZF917wRsCKbvFk-sLrpS4i7g,32817
77
77
  sunholo/discovery_engine/create_new.py,sha256=WUi4_xh_dFaGX3xA9jkNKZhaR6LCELjMPeRb0hyj4FU,1226
78
78
  sunholo/discovery_engine/discovery_engine_client.py,sha256=nV4loBBnOqGPRlEbFIFRJEB6cXKDVgJOMRMdf4-v510,51775
79
79
  sunholo/discovery_engine/get_ai_search_chunks.py,sha256=I6Dt1CznqEvE7XIZ2PkLqopmjpO96iVEWJJqL5cJjOU,5554
@@ -168,9 +168,9 @@ sunholo/vertex/init.py,sha256=1OQwcPBKZYBTDPdyU7IM4X4OmiXLdsNV30C-fee2scQ,2875
168
168
  sunholo/vertex/memory_tools.py,sha256=tBZxqVZ4InTmdBvLlOYwoSEWu4-kGquc-gxDwZCC4FA,7667
169
169
  sunholo/vertex/safety.py,sha256=S9PgQT1O_BQAkcqauWncRJaydiP8Q_Jzmu9gxYfy1VA,2482
170
170
  sunholo/vertex/type_dict_to_json.py,sha256=uTzL4o9tJRao4u-gJOFcACgWGkBOtqACmb6ihvCErL8,4694
171
- sunholo-0.131.4.dist-info/licenses/LICENSE.txt,sha256=SdE3QjnD3GEmqqg9EX3TM9f7WmtOzqS1KJve8rhbYmU,11345
172
- sunholo-0.131.4.dist-info/METADATA,sha256=5jb5Aw2UIaAiccheUvuGWwNPgWsK3jVFch7bBjnSiaA,10067
173
- sunholo-0.131.4.dist-info/WHEEL,sha256=lTU6B6eIfYoiQJTZNc-fyaR6BpL6ehTzU3xGYxn2n8k,91
174
- sunholo-0.131.4.dist-info/entry_points.txt,sha256=bZuN5AIHingMPt4Ro1b_T-FnQvZ3teBes-3OyO0asl4,49
175
- sunholo-0.131.4.dist-info/top_level.txt,sha256=wt5tadn5--5JrZsjJz2LceoUvcrIvxjHJe-RxuudxAk,8
176
- sunholo-0.131.4.dist-info/RECORD,,
171
+ sunholo-0.131.6.dist-info/licenses/LICENSE.txt,sha256=SdE3QjnD3GEmqqg9EX3TM9f7WmtOzqS1KJve8rhbYmU,11345
172
+ sunholo-0.131.6.dist-info/METADATA,sha256=A8PX4p1pS-ne9BwFKrs2YHIbfyWMzFSjue114EKiu18,10067
173
+ sunholo-0.131.6.dist-info/WHEEL,sha256=lTU6B6eIfYoiQJTZNc-fyaR6BpL6ehTzU3xGYxn2n8k,91
174
+ sunholo-0.131.6.dist-info/entry_points.txt,sha256=bZuN5AIHingMPt4Ro1b_T-FnQvZ3teBes-3OyO0asl4,49
175
+ sunholo-0.131.6.dist-info/top_level.txt,sha256=wt5tadn5--5JrZsjJz2LceoUvcrIvxjHJe-RxuudxAk,8
176
+ sunholo-0.131.6.dist-info/RECORD,,