databricks-tellr-app 0.4.3.dev34__tar.gz → 0.4.3.dev36__tar.gz

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.
Files changed (167) hide show
  1. {databricks_tellr_app-0.4.3.dev34 → databricks_tellr_app-0.4.3.dev36}/PKG-INFO +1 -1
  2. {databricks_tellr_app-0.4.3.dev34 → databricks_tellr_app-0.4.3.dev36}/databricks_tellr_app.egg-info/PKG-INFO +1 -1
  3. {databricks_tellr_app-0.4.3.dev34 → databricks_tellr_app-0.4.3.dev36}/pyproject.toml +1 -1
  4. {databricks_tellr_app-0.4.3.dev34 → databricks_tellr_app-0.4.3.dev36}/src/api/routes/setup.py +22 -2
  5. {databricks_tellr_app-0.4.3.dev34 → databricks_tellr_app-0.4.3.dev36}/src/core/database.py +38 -12
  6. {databricks_tellr_app-0.4.3.dev34 → databricks_tellr_app-0.4.3.dev36}/README.md +0 -0
  7. {databricks_tellr_app-0.4.3.dev34 → databricks_tellr_app-0.4.3.dev36}/databricks_tellr_app/__init__.py +0 -0
  8. {databricks_tellr_app-0.4.3.dev34 → databricks_tellr_app-0.4.3.dev36}/databricks_tellr_app/run.py +0 -0
  9. {databricks_tellr_app-0.4.3.dev34 → databricks_tellr_app-0.4.3.dev36}/databricks_tellr_app.egg-info/SOURCES.txt +0 -0
  10. {databricks_tellr_app-0.4.3.dev34 → databricks_tellr_app-0.4.3.dev36}/databricks_tellr_app.egg-info/dependency_links.txt +0 -0
  11. {databricks_tellr_app-0.4.3.dev34 → databricks_tellr_app-0.4.3.dev36}/databricks_tellr_app.egg-info/requires.txt +0 -0
  12. {databricks_tellr_app-0.4.3.dev34 → databricks_tellr_app-0.4.3.dev36}/databricks_tellr_app.egg-info/top_level.txt +0 -0
  13. {databricks_tellr_app-0.4.3.dev34 → databricks_tellr_app-0.4.3.dev36}/setup.cfg +0 -0
  14. {databricks_tellr_app-0.4.3.dev34 → databricks_tellr_app-0.4.3.dev36}/setup.py +0 -0
  15. {databricks_tellr_app-0.4.3.dev34 → databricks_tellr_app-0.4.3.dev36}/src/__init__.py +0 -0
  16. {databricks_tellr_app-0.4.3.dev34 → databricks_tellr_app-0.4.3.dev36}/src/api/__init__.py +0 -0
  17. {databricks_tellr_app-0.4.3.dev34 → databricks_tellr_app-0.4.3.dev36}/src/api/_otel_bootstrap.py +0 -0
  18. {databricks_tellr_app-0.4.3.dev34 → databricks_tellr_app-0.4.3.dev36}/src/api/fixtures/tour_demo_deck.json +0 -0
  19. {databricks_tellr_app-0.4.3.dev34 → databricks_tellr_app-0.4.3.dev36}/src/api/main.py +0 -0
  20. {databricks_tellr_app-0.4.3.dev34 → databricks_tellr_app-0.4.3.dev36}/src/api/mcp_auth.py +0 -0
  21. {databricks_tellr_app-0.4.3.dev34 → databricks_tellr_app-0.4.3.dev36}/src/api/mcp_server.py +0 -0
  22. {databricks_tellr_app-0.4.3.dev34 → databricks_tellr_app-0.4.3.dev36}/src/api/middleware/__init__.py +0 -0
  23. {databricks_tellr_app-0.4.3.dev34 → databricks_tellr_app-0.4.3.dev36}/src/api/middleware/csrf.py +0 -0
  24. {databricks_tellr_app-0.4.3.dev34 → databricks_tellr_app-0.4.3.dev36}/src/api/middleware/request_logging.py +0 -0
  25. {databricks_tellr_app-0.4.3.dev34 → databricks_tellr_app-0.4.3.dev36}/src/api/middleware/security_headers.py +0 -0
  26. {databricks_tellr_app-0.4.3.dev34 → databricks_tellr_app-0.4.3.dev36}/src/api/routes/__init__.py +0 -0
  27. {databricks_tellr_app-0.4.3.dev34 → databricks_tellr_app-0.4.3.dev36}/src/api/routes/_authz.py +0 -0
  28. {databricks_tellr_app-0.4.3.dev34 → databricks_tellr_app-0.4.3.dev36}/src/api/routes/admin.py +0 -0
  29. {databricks_tellr_app-0.4.3.dev34 → databricks_tellr_app-0.4.3.dev36}/src/api/routes/admin_usage.py +0 -0
  30. {databricks_tellr_app-0.4.3.dev34 → databricks_tellr_app-0.4.3.dev36}/src/api/routes/agent_config.py +0 -0
  31. {databricks_tellr_app-0.4.3.dev34 → databricks_tellr_app-0.4.3.dev36}/src/api/routes/chat.py +0 -0
  32. {databricks_tellr_app-0.4.3.dev34 → databricks_tellr_app-0.4.3.dev36}/src/api/routes/deck_contributors.py +0 -0
  33. {databricks_tellr_app-0.4.3.dev34 → databricks_tellr_app-0.4.3.dev36}/src/api/routes/export.py +0 -0
  34. {databricks_tellr_app-0.4.3.dev34 → databricks_tellr_app-0.4.3.dev36}/src/api/routes/feedback.py +0 -0
  35. {databricks_tellr_app-0.4.3.dev34 → databricks_tellr_app-0.4.3.dev36}/src/api/routes/google_slides.py +0 -0
  36. {databricks_tellr_app-0.4.3.dev34 → databricks_tellr_app-0.4.3.dev36}/src/api/routes/images.py +0 -0
  37. {databricks_tellr_app-0.4.3.dev34 → databricks_tellr_app-0.4.3.dev36}/src/api/routes/local_version.py +0 -0
  38. {databricks_tellr_app-0.4.3.dev34 → databricks_tellr_app-0.4.3.dev36}/src/api/routes/profiles.py +0 -0
  39. {databricks_tellr_app-0.4.3.dev34 → databricks_tellr_app-0.4.3.dev36}/src/api/routes/sessions.py +0 -0
  40. {databricks_tellr_app-0.4.3.dev34 → databricks_tellr_app-0.4.3.dev36}/src/api/routes/settings/__init__.py +0 -0
  41. {databricks_tellr_app-0.4.3.dev34 → databricks_tellr_app-0.4.3.dev36}/src/api/routes/settings/contributors.py +0 -0
  42. {databricks_tellr_app-0.4.3.dev34 → databricks_tellr_app-0.4.3.dev36}/src/api/routes/settings/deck_prompts.py +0 -0
  43. {databricks_tellr_app-0.4.3.dev34 → databricks_tellr_app-0.4.3.dev36}/src/api/routes/settings/design_systems.py +0 -0
  44. {databricks_tellr_app-0.4.3.dev34 → databricks_tellr_app-0.4.3.dev36}/src/api/routes/settings/identities.py +0 -0
  45. {databricks_tellr_app-0.4.3.dev34 → databricks_tellr_app-0.4.3.dev36}/src/api/routes/settings/slide_styles.py +0 -0
  46. {databricks_tellr_app-0.4.3.dev34 → databricks_tellr_app-0.4.3.dev36}/src/api/routes/slides.py +0 -0
  47. {databricks_tellr_app-0.4.3.dev34 → databricks_tellr_app-0.4.3.dev36}/src/api/routes/tools.py +0 -0
  48. {databricks_tellr_app-0.4.3.dev34 → databricks_tellr_app-0.4.3.dev36}/src/api/routes/tour.py +0 -0
  49. {databricks_tellr_app-0.4.3.dev34 → databricks_tellr_app-0.4.3.dev36}/src/api/routes/verification.py +0 -0
  50. {databricks_tellr_app-0.4.3.dev34 → databricks_tellr_app-0.4.3.dev36}/src/api/routes/version.py +0 -0
  51. {databricks_tellr_app-0.4.3.dev34 → databricks_tellr_app-0.4.3.dev36}/src/api/schemas/__init__.py +0 -0
  52. {databricks_tellr_app-0.4.3.dev34 → databricks_tellr_app-0.4.3.dev36}/src/api/schemas/agent_config.py +0 -0
  53. {databricks_tellr_app-0.4.3.dev34 → databricks_tellr_app-0.4.3.dev36}/src/api/schemas/feedback.py +0 -0
  54. {databricks_tellr_app-0.4.3.dev34 → databricks_tellr_app-0.4.3.dev36}/src/api/schemas/requests.py +0 -0
  55. {databricks_tellr_app-0.4.3.dev34 → databricks_tellr_app-0.4.3.dev36}/src/api/schemas/responses.py +0 -0
  56. {databricks_tellr_app-0.4.3.dev34 → databricks_tellr_app-0.4.3.dev36}/src/api/schemas/settings/__init__.py +0 -0
  57. {databricks_tellr_app-0.4.3.dev34 → databricks_tellr_app-0.4.3.dev36}/src/api/schemas/settings/requests.py +0 -0
  58. {databricks_tellr_app-0.4.3.dev34 → databricks_tellr_app-0.4.3.dev36}/src/api/schemas/settings/responses.py +0 -0
  59. {databricks_tellr_app-0.4.3.dev34 → databricks_tellr_app-0.4.3.dev36}/src/api/schemas/streaming.py +0 -0
  60. {databricks_tellr_app-0.4.3.dev34 → databricks_tellr_app-0.4.3.dev36}/src/api/services/__init__.py +0 -0
  61. {databricks_tellr_app-0.4.3.dev34 → databricks_tellr_app-0.4.3.dev36}/src/api/services/chat_service.py +0 -0
  62. {databricks_tellr_app-0.4.3.dev34 → databricks_tellr_app-0.4.3.dev36}/src/api/services/export_job_queue.py +0 -0
  63. {databricks_tellr_app-0.4.3.dev34 → databricks_tellr_app-0.4.3.dev36}/src/api/services/feedback_service.py +0 -0
  64. {databricks_tellr_app-0.4.3.dev34 → databricks_tellr_app-0.4.3.dev36}/src/api/services/job_queue.py +0 -0
  65. {databricks_tellr_app-0.4.3.dev34 → databricks_tellr_app-0.4.3.dev36}/src/api/services/session_manager.py +0 -0
  66. {databricks_tellr_app-0.4.3.dev34 → databricks_tellr_app-0.4.3.dev36}/src/api/services/session_naming.py +0 -0
  67. {databricks_tellr_app-0.4.3.dev34 → databricks_tellr_app-0.4.3.dev36}/src/api/services/usage_events.py +0 -0
  68. {databricks_tellr_app-0.4.3.dev34 → databricks_tellr_app-0.4.3.dev36}/src/api/services/usage_service.py +0 -0
  69. {databricks_tellr_app-0.4.3.dev34 → databricks_tellr_app-0.4.3.dev36}/src/api/utils/__init__.py +0 -0
  70. {databricks_tellr_app-0.4.3.dev34 → databricks_tellr_app-0.4.3.dev36}/src/api/utils/validation.py +0 -0
  71. {databricks_tellr_app-0.4.3.dev34 → databricks_tellr_app-0.4.3.dev36}/src/core/__init__.py +0 -0
  72. {databricks_tellr_app-0.4.3.dev34 → databricks_tellr_app-0.4.3.dev36}/src/core/config_loader.py +0 -0
  73. {databricks_tellr_app-0.4.3.dev34 → databricks_tellr_app-0.4.3.dev36}/src/core/context_utils.py +0 -0
  74. {databricks_tellr_app-0.4.3.dev34 → databricks_tellr_app-0.4.3.dev36}/src/core/databricks_client.py +0 -0
  75. {databricks_tellr_app-0.4.3.dev34 → databricks_tellr_app-0.4.3.dev36}/src/core/defaults.py +0 -0
  76. {databricks_tellr_app-0.4.3.dev34 → databricks_tellr_app-0.4.3.dev36}/src/core/encryption.py +0 -0
  77. {databricks_tellr_app-0.4.3.dev34 → databricks_tellr_app-0.4.3.dev36}/src/core/init_default_profile.py +0 -0
  78. {databricks_tellr_app-0.4.3.dev34 → databricks_tellr_app-0.4.3.dev36}/src/core/lakebase.py +0 -0
  79. {databricks_tellr_app-0.4.3.dev34 → databricks_tellr_app-0.4.3.dev36}/src/core/migrate_profiles_to_agent_config.py +0 -0
  80. {databricks_tellr_app-0.4.3.dev34 → databricks_tellr_app-0.4.3.dev36}/src/core/mlflow_agent_spans.py +0 -0
  81. {databricks_tellr_app-0.4.3.dev34 → databricks_tellr_app-0.4.3.dev36}/src/core/mlflow_tracing.py +0 -0
  82. {databricks_tellr_app-0.4.3.dev34 → databricks_tellr_app-0.4.3.dev36}/src/core/otel_logging.py +0 -0
  83. {databricks_tellr_app-0.4.3.dev34 → databricks_tellr_app-0.4.3.dev36}/src/core/permission_context.py +0 -0
  84. {databricks_tellr_app-0.4.3.dev34 → databricks_tellr_app-0.4.3.dev36}/src/core/prompt_modules.py +0 -0
  85. {databricks_tellr_app-0.4.3.dev34 → databricks_tellr_app-0.4.3.dev36}/src/core/settings_db.py +0 -0
  86. {databricks_tellr_app-0.4.3.dev34 → databricks_tellr_app-0.4.3.dev36}/src/core/user_context.py +0 -0
  87. {databricks_tellr_app-0.4.3.dev34 → databricks_tellr_app-0.4.3.dev36}/src/database/__init__.py +0 -0
  88. {databricks_tellr_app-0.4.3.dev34 → databricks_tellr_app-0.4.3.dev36}/src/database/models/__init__.py +0 -0
  89. {databricks_tellr_app-0.4.3.dev34 → databricks_tellr_app-0.4.3.dev36}/src/database/models/deck_contributor.py +0 -0
  90. {databricks_tellr_app-0.4.3.dev34 → databricks_tellr_app-0.4.3.dev36}/src/database/models/design_system.py +0 -0
  91. {databricks_tellr_app-0.4.3.dev34 → databricks_tellr_app-0.4.3.dev36}/src/database/models/encryption_key.py +0 -0
  92. {databricks_tellr_app-0.4.3.dev34 → databricks_tellr_app-0.4.3.dev36}/src/database/models/feedback.py +0 -0
  93. {databricks_tellr_app-0.4.3.dev34 → databricks_tellr_app-0.4.3.dev36}/src/database/models/genie_space.py +0 -0
  94. {databricks_tellr_app-0.4.3.dev34 → databricks_tellr_app-0.4.3.dev36}/src/database/models/google_global_credentials.py +0 -0
  95. {databricks_tellr_app-0.4.3.dev34 → databricks_tellr_app-0.4.3.dev36}/src/database/models/google_oauth_token.py +0 -0
  96. {databricks_tellr_app-0.4.3.dev34 → databricks_tellr_app-0.4.3.dev36}/src/database/models/identity.py +0 -0
  97. {databricks_tellr_app-0.4.3.dev34 → databricks_tellr_app-0.4.3.dev36}/src/database/models/image.py +0 -0
  98. {databricks_tellr_app-0.4.3.dev34 → databricks_tellr_app-0.4.3.dev36}/src/database/models/profile.py +0 -0
  99. {databricks_tellr_app-0.4.3.dev34 → databricks_tellr_app-0.4.3.dev36}/src/database/models/profile_contributor.py +0 -0
  100. {databricks_tellr_app-0.4.3.dev34 → databricks_tellr_app-0.4.3.dev36}/src/database/models/prompts.py +0 -0
  101. {databricks_tellr_app-0.4.3.dev34 → databricks_tellr_app-0.4.3.dev36}/src/database/models/request_log.py +0 -0
  102. {databricks_tellr_app-0.4.3.dev34 → databricks_tellr_app-0.4.3.dev36}/src/database/models/session.py +0 -0
  103. {databricks_tellr_app-0.4.3.dev34 → databricks_tellr_app-0.4.3.dev36}/src/database/models/slide_deck_prompt.py +0 -0
  104. {databricks_tellr_app-0.4.3.dev34 → databricks_tellr_app-0.4.3.dev36}/src/database/models/slide_style_library.py +0 -0
  105. {databricks_tellr_app-0.4.3.dev34 → databricks_tellr_app-0.4.3.dev36}/src/database/models/usage_event.py +0 -0
  106. {databricks_tellr_app-0.4.3.dev34 → databricks_tellr_app-0.4.3.dev36}/src/database/models/user_preference.py +0 -0
  107. {databricks_tellr_app-0.4.3.dev34 → databricks_tellr_app-0.4.3.dev36}/src/database/types.py +0 -0
  108. {databricks_tellr_app-0.4.3.dev34 → databricks_tellr_app-0.4.3.dev36}/src/domain/__init__.py +0 -0
  109. {databricks_tellr_app-0.4.3.dev34 → databricks_tellr_app-0.4.3.dev36}/src/domain/slide.py +0 -0
  110. {databricks_tellr_app-0.4.3.dev34 → databricks_tellr_app-0.4.3.dev36}/src/domain/slide_deck.py +0 -0
  111. {databricks_tellr_app-0.4.3.dev34 → databricks_tellr_app-0.4.3.dev36}/src/services/__init__.py +0 -0
  112. {databricks_tellr_app-0.4.3.dev34 → databricks_tellr_app-0.4.3.dev36}/src/services/agent.py +0 -0
  113. {databricks_tellr_app-0.4.3.dev34 → databricks_tellr_app-0.4.3.dev36}/src/services/agent_factory.py +0 -0
  114. {databricks_tellr_app-0.4.3.dev34 → databricks_tellr_app-0.4.3.dev36}/src/services/config_service.py +0 -0
  115. {databricks_tellr_app-0.4.3.dev34 → databricks_tellr_app-0.4.3.dev36}/src/services/config_validator.py +0 -0
  116. {databricks_tellr_app-0.4.3.dev34 → databricks_tellr_app-0.4.3.dev36}/src/services/converter_jail/__init__.py +0 -0
  117. {databricks_tellr_app-0.4.3.dev34 → databricks_tellr_app-0.4.3.dev36}/src/services/converter_jail/ast_guard.py +0 -0
  118. {databricks_tellr_app-0.4.3.dev34 → databricks_tellr_app-0.4.3.dev36}/src/services/converter_jail/codeprep.py +0 -0
  119. {databricks_tellr_app-0.4.3.dev34 → databricks_tellr_app-0.4.3.dev36}/src/services/converter_jail/gslides_runner.py +0 -0
  120. {databricks_tellr_app-0.4.3.dev34 → databricks_tellr_app-0.4.3.dev36}/src/services/converter_jail/jail.py +0 -0
  121. {databricks_tellr_app-0.4.3.dev34 → databricks_tellr_app-0.4.3.dev36}/src/services/converter_jail/pptx_runner.py +0 -0
  122. {databricks_tellr_app-0.4.3.dev34 → databricks_tellr_app-0.4.3.dev36}/src/services/converter_jail/protocol.py +0 -0
  123. {databricks_tellr_app-0.4.3.dev34 → databricks_tellr_app-0.4.3.dev36}/src/services/design_system_compiler.py +0 -0
  124. {databricks_tellr_app-0.4.3.dev34 → databricks_tellr_app-0.4.3.dev36}/src/services/design_system_service.py +0 -0
  125. {databricks_tellr_app-0.4.3.dev34 → databricks_tellr_app-0.4.3.dev36}/src/services/design_system_templates.py +0 -0
  126. {databricks_tellr_app-0.4.3.dev34 → databricks_tellr_app-0.4.3.dev36}/src/services/drive_uploader.py +0 -0
  127. {databricks_tellr_app-0.4.3.dev34 → databricks_tellr_app-0.4.3.dev36}/src/services/evaluation/__init__.py +0 -0
  128. {databricks_tellr_app-0.4.3.dev34 → databricks_tellr_app-0.4.3.dev36}/src/services/evaluation/llm_judge.py +0 -0
  129. {databricks_tellr_app-0.4.3.dev34 → databricks_tellr_app-0.4.3.dev36}/src/services/genie_service.py +0 -0
  130. {databricks_tellr_app-0.4.3.dev34 → databricks_tellr_app-0.4.3.dev36}/src/services/google_slides_auth.py +0 -0
  131. {databricks_tellr_app-0.4.3.dev34 → databricks_tellr_app-0.4.3.dev36}/src/services/google_slides_prompts_defaults.py +0 -0
  132. {databricks_tellr_app-0.4.3.dev34 → databricks_tellr_app-0.4.3.dev36}/src/services/html_to_google_slides.py +0 -0
  133. {databricks_tellr_app-0.4.3.dev34 → databricks_tellr_app-0.4.3.dev36}/src/services/html_to_pptx.py +0 -0
  134. {databricks_tellr_app-0.4.3.dev34 → databricks_tellr_app-0.4.3.dev36}/src/services/identity_provider.py +0 -0
  135. {databricks_tellr_app-0.4.3.dev34 → databricks_tellr_app-0.4.3.dev36}/src/services/identity_providers/__init__.py +0 -0
  136. {databricks_tellr_app-0.4.3.dev34 → databricks_tellr_app-0.4.3.dev36}/src/services/identity_providers/account_provider.py +0 -0
  137. {databricks_tellr_app-0.4.3.dev34 → databricks_tellr_app-0.4.3.dev36}/src/services/identity_providers/local_provider.py +0 -0
  138. {databricks_tellr_app-0.4.3.dev34 → databricks_tellr_app-0.4.3.dev36}/src/services/identity_providers/workspace_provider.py +0 -0
  139. {databricks_tellr_app-0.4.3.dev34 → databricks_tellr_app-0.4.3.dev36}/src/services/image_service.py +0 -0
  140. {databricks_tellr_app-0.4.3.dev34 → databricks_tellr_app-0.4.3.dev36}/src/services/image_tools.py +0 -0
  141. {databricks_tellr_app-0.4.3.dev34 → databricks_tellr_app-0.4.3.dev36}/src/services/permission_service.py +0 -0
  142. {databricks_tellr_app-0.4.3.dev34 → databricks_tellr_app-0.4.3.dev36}/src/services/pptx_from_html_huashu.py +0 -0
  143. {databricks_tellr_app-0.4.3.dev34 → databricks_tellr_app-0.4.3.dev36}/src/services/pptx_from_records.py +0 -0
  144. {databricks_tellr_app-0.4.3.dev34 → databricks_tellr_app-0.4.3.dev36}/src/services/pptx_prompts_defaults.py +0 -0
  145. {databricks_tellr_app-0.4.3.dev34 → databricks_tellr_app-0.4.3.dev36}/src/services/profile_service.py +0 -0
  146. {databricks_tellr_app-0.4.3.dev34 → databricks_tellr_app-0.4.3.dev36}/src/services/streaming_callback.py +0 -0
  147. {databricks_tellr_app-0.4.3.dev34 → databricks_tellr_app-0.4.3.dev36}/src/services/tools/__init__.py +0 -0
  148. {databricks_tellr_app-0.4.3.dev34 → databricks_tellr_app-0.4.3.dev36}/src/services/tools/agent_bricks_tool.py +0 -0
  149. {databricks_tellr_app-0.4.3.dev34 → databricks_tellr_app-0.4.3.dev36}/src/services/tools/ds_asset_tool.py +0 -0
  150. {databricks_tellr_app-0.4.3.dev34 → databricks_tellr_app-0.4.3.dev36}/src/services/tools/genie_tool.py +0 -0
  151. {databricks_tellr_app-0.4.3.dev34 → databricks_tellr_app-0.4.3.dev36}/src/services/tools/mcp_tool.py +0 -0
  152. {databricks_tellr_app-0.4.3.dev34 → databricks_tellr_app-0.4.3.dev36}/src/services/tools/model_endpoint_tool.py +0 -0
  153. {databricks_tellr_app-0.4.3.dev34 → databricks_tellr_app-0.4.3.dev36}/src/services/tools/vector_tool.py +0 -0
  154. {databricks_tellr_app-0.4.3.dev34 → databricks_tellr_app-0.4.3.dev36}/src/services/validator.py +0 -0
  155. {databricks_tellr_app-0.4.3.dev34 → databricks_tellr_app-0.4.3.dev36}/src/utils/__init__.py +0 -0
  156. {databricks_tellr_app-0.4.3.dev34 → databricks_tellr_app-0.4.3.dev36}/src/utils/css_utils.py +0 -0
  157. {databricks_tellr_app-0.4.3.dev34 → databricks_tellr_app-0.4.3.dev36}/src/utils/ds_asset_utils.py +0 -0
  158. {databricks_tellr_app-0.4.3.dev34 → databricks_tellr_app-0.4.3.dev36}/src/utils/error_handling.py +0 -0
  159. {databricks_tellr_app-0.4.3.dev34 → databricks_tellr_app-0.4.3.dev36}/src/utils/html_safety.py +0 -0
  160. {databricks_tellr_app-0.4.3.dev34 → databricks_tellr_app-0.4.3.dev36}/src/utils/html_utils.py +0 -0
  161. {databricks_tellr_app-0.4.3.dev34 → databricks_tellr_app-0.4.3.dev36}/src/utils/image_utils.py +0 -0
  162. {databricks_tellr_app-0.4.3.dev34 → databricks_tellr_app-0.4.3.dev36}/src/utils/js_validator.py +0 -0
  163. {databricks_tellr_app-0.4.3.dev34 → databricks_tellr_app-0.4.3.dev36}/src/utils/logging_config.py +0 -0
  164. {databricks_tellr_app-0.4.3.dev34 → databricks_tellr_app-0.4.3.dev36}/src/utils/pi_filter.py +0 -0
  165. {databricks_tellr_app-0.4.3.dev34 → databricks_tellr_app-0.4.3.dev36}/src/utils/slide_hash.py +0 -0
  166. {databricks_tellr_app-0.4.3.dev34 → databricks_tellr_app-0.4.3.dev36}/src/utils/spotlight.py +0 -0
  167. {databricks_tellr_app-0.4.3.dev34 → databricks_tellr_app-0.4.3.dev36}/src/utils/text_caps.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: databricks-tellr-app
3
- Version: 0.4.3.dev34
3
+ Version: 0.4.3.dev36
4
4
  Summary: Tellr application package for Databricks Apps
5
5
  Requires-Python: >=3.10
6
6
  Description-Content-Type: text/markdown
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: databricks-tellr-app
3
- Version: 0.4.3.dev34
3
+ Version: 0.4.3.dev36
4
4
  Summary: Tellr application package for Databricks Apps
5
5
  Requires-Python: >=3.10
6
6
  Description-Content-Type: text/markdown
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
4
4
 
5
5
  [project]
6
6
  name = "databricks-tellr-app"
7
- version = "0.4.3.dev34"
7
+ version = "0.4.3.dev36"
8
8
  description = "Tellr application package for Databricks Apps"
9
9
  readme = "README.md"
10
10
  requires-python = ">=3.10"
@@ -6,6 +6,7 @@ Databricks workspace URL.
6
6
  """
7
7
 
8
8
  import logging
9
+ import os
9
10
  import re
10
11
  from typing import Optional
11
12
 
@@ -23,6 +24,25 @@ logger = logging.getLogger(__name__)
23
24
  router = APIRouter(prefix="/api/setup", tags=["setup"])
24
25
 
25
26
 
27
+ def _is_already_configured() -> bool:
28
+ """True once a workspace host is set via ~/.tellr/config.yaml or env."""
29
+ return is_tellr_configured() or bool(os.getenv("DATABRICKS_HOST"))
30
+
31
+
32
+ def _refuse_reconfigure() -> None:
33
+ """Block mutating setup once the app already has a workspace host.
34
+
35
+ On Databricks Apps, DATABRICKS_HOST is always set, so configure/test-connection
36
+ are unreachable. That is the intended production posture: these routes exist
37
+ only for a true first-run local install.
38
+ """
39
+ if _is_already_configured():
40
+ raise HTTPException(
41
+ status_code=409,
42
+ detail="Workspace is already configured.",
43
+ )
44
+
45
+
26
46
  class SetupStatusResponse(BaseModel):
27
47
  """Response for setup status check."""
28
48
  configured: bool
@@ -79,8 +99,6 @@ async def get_setup_status():
79
99
  Returns configured=True if ~/.tellr/config.yaml exists with a valid host,
80
100
  or if DATABRICKS_HOST environment variable is set.
81
101
  """
82
- import os
83
-
84
102
  # Check tellr config file first
85
103
  if is_tellr_configured():
86
104
  config = get_tellr_config()
@@ -104,6 +122,7 @@ async def configure_workspace(request: ConfigureWorkspaceRequest):
104
122
  authentication enabled. On the next API call that requires Databricks
105
123
  access, the browser will open for SSO login.
106
124
  """
125
+ _refuse_reconfigure()
107
126
  try:
108
127
  # Save the configuration
109
128
  save_tellr_config(host=request.host, auth_type="external-browser")
@@ -135,6 +154,7 @@ async def test_connection():
135
154
  This will trigger the OAuth browser flow if using external-browser auth.
136
155
  Returns user info on success.
137
156
  """
157
+ _refuse_reconfigure()
138
158
  try:
139
159
  from src.core.databricks_client import get_system_client
140
160
 
@@ -195,6 +195,20 @@ async def stop_token_refresh() -> None:
195
195
  logger.info("Background token refresh task stopped")
196
196
 
197
197
 
198
+ def _with_psycopg2_driver(url: str) -> str:
199
+ """Pin PostgreSQL URLs to psycopg2, matching the declared dependency.
200
+
201
+ SQLAlchemy 2.1 changed bare ``postgresql://`` to mean psycopg (v3). CI
202
+ installs ``sqlalchemy>=2.0`` via pip, so that default now imports a
203
+ package we do not ship (``psycopg2-binary`` is the driver). Explicit
204
+ ``postgresql+psycopg2://`` keeps both 2.0 and 2.1 on the installed driver.
205
+ URLs that already name a driver, and non-Postgres URLs, are left alone.
206
+ """
207
+ if url.startswith("postgresql://"):
208
+ return "postgresql+psycopg2://" + url[len("postgresql://") :]
209
+ return url
210
+
211
+
198
212
  def _get_database_url() -> str:
199
213
  """
200
214
  Determine database URL based on environment.
@@ -213,7 +227,7 @@ def _get_database_url() -> str:
213
227
  # Check for explicit DATABASE_URL first
214
228
  explicit_url = os.getenv("DATABASE_URL")
215
229
  if explicit_url and not explicit_url.startswith("jdbc:"):
216
- return explicit_url
230
+ return _with_psycopg2_driver(explicit_url)
217
231
 
218
232
  # Check for autoscaling Lakebase (env vars set by deployment)
219
233
  lakebase_type = _get_lakebase_type()
@@ -237,7 +251,7 @@ def _get_database_url() -> str:
237
251
  url = f"postgresql://{pg_user}@{pg_host}:5432/{database}?sslmode=require"
238
252
  if schema:
239
253
  url += f"&options=-csearch_path%3D{schema}"
240
- return url
254
+ return _with_psycopg2_driver(url)
241
255
 
242
256
  # Check for provisioned Lakebase (PGHOST auto-set by Databricks Apps)
243
257
  pg_host = os.getenv("PGHOST")
@@ -258,10 +272,10 @@ def _get_database_url() -> str:
258
272
  if schema:
259
273
  url += f"&options=-csearch_path%3D{schema}"
260
274
 
261
- return url
275
+ return _with_psycopg2_driver(url)
262
276
 
263
277
  # Default to local PostgreSQL for development
264
- return "postgresql://localhost/ai_slide_generator"
278
+ return _with_psycopg2_driver("postgresql://localhost/ai_slide_generator")
265
279
 
266
280
 
267
281
  def _create_engine():
@@ -291,14 +305,26 @@ def _create_engine():
291
305
 
292
306
  logger.info("Configuring database connection")
293
307
 
294
- # Create engine with connection pooling
295
- engine = create_engine(
296
- database_url,
297
- pool_pre_ping=True,
298
- pool_size=80,
299
- max_overflow=20,
300
- echo=sql_echo,
301
- )
308
+ # sqlite:///:memory: with the default QueuePool gives each checkout a
309
+ # different empty database. Unit tests use an in-memory URL; StaticPool
310
+ # keeps one shared connection. Postgres keeps the production pool settings.
311
+ if database_url.startswith("sqlite"):
312
+ from sqlalchemy.pool import StaticPool
313
+
314
+ engine = create_engine(
315
+ database_url,
316
+ connect_args={"check_same_thread": False},
317
+ poolclass=StaticPool,
318
+ echo=sql_echo,
319
+ )
320
+ else:
321
+ engine = create_engine(
322
+ database_url,
323
+ pool_pre_ping=True,
324
+ pool_size=80,
325
+ max_overflow=20,
326
+ echo=sql_echo,
327
+ )
302
328
 
303
329
  # For Lakebase: register event listener to inject fresh tokens
304
330
  if is_lakebase_environment():