qtype 0.0.10__tar.gz → 0.1.7__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 (196) hide show
  1. {qtype-0.0.10/qtype.egg-info → qtype-0.1.7}/PKG-INFO +26 -5
  2. {qtype-0.0.10 → qtype-0.1.7}/pyproject.toml +45 -10
  3. qtype-0.1.7/qtype/application/__init__.py +12 -0
  4. qtype-0.1.7/qtype/application/commons/__init__.py +7 -0
  5. {qtype-0.0.10/qtype → qtype-0.1.7/qtype/application}/commons/tools.py +1 -1
  6. qtype-0.1.7/qtype/application/converters/tools_from_api.py +489 -0
  7. {qtype-0.0.10/qtype → qtype-0.1.7/qtype/application}/converters/tools_from_module.py +40 -16
  8. qtype-0.1.7/qtype/application/converters/types.py +18 -0
  9. qtype-0.0.10/qtype/dsl/document.py → qtype-0.1.7/qtype/application/documentation.py +3 -1
  10. qtype-0.1.7/qtype/application/facade.py +177 -0
  11. qtype-0.1.7/qtype/base/__init__.py +14 -0
  12. qtype-0.1.7/qtype/base/exceptions.py +49 -0
  13. qtype-0.1.7/qtype/base/logging.py +39 -0
  14. qtype-0.1.7/qtype/base/types.py +249 -0
  15. {qtype-0.0.10 → qtype-0.1.7}/qtype/cli.py +5 -1
  16. qtype-0.1.7/qtype/commands/convert.py +150 -0
  17. qtype-0.1.7/qtype/commands/generate.py +210 -0
  18. qtype-0.1.7/qtype/commands/run.py +202 -0
  19. qtype-0.1.7/qtype/commands/serve.py +117 -0
  20. qtype-0.1.7/qtype/commands/validate.py +99 -0
  21. qtype-0.1.7/qtype/commands/visualize.py +122 -0
  22. qtype-0.1.7/qtype/dsl/__init__.py +11 -0
  23. {qtype-0.0.10 → qtype-0.1.7}/qtype/dsl/custom_types.py +6 -4
  24. qtype-0.1.7/qtype/dsl/domain_types.py +140 -0
  25. qtype-0.1.7/qtype/dsl/linker.py +384 -0
  26. qtype-0.1.7/qtype/dsl/loader.py +315 -0
  27. qtype-0.1.7/qtype/dsl/model.py +1296 -0
  28. qtype-0.1.7/qtype/dsl/parser.py +200 -0
  29. qtype-0.1.7/qtype/dsl/types.py +50 -0
  30. qtype-0.1.7/qtype/interpreter/api.py +123 -0
  31. qtype-0.1.7/qtype/interpreter/auth/__init__.py +3 -0
  32. qtype-0.1.7/qtype/interpreter/auth/aws.py +244 -0
  33. qtype-0.1.7/qtype/interpreter/auth/cache.py +67 -0
  34. qtype-0.1.7/qtype/interpreter/auth/generic.py +180 -0
  35. qtype-0.1.7/qtype/interpreter/base/base_step_executor.py +436 -0
  36. qtype-0.1.7/qtype/interpreter/base/batch_step_executor.py +171 -0
  37. qtype-0.1.7/qtype/interpreter/base/exceptions.py +50 -0
  38. qtype-0.1.7/qtype/interpreter/base/executor_context.py +91 -0
  39. qtype-0.1.7/qtype/interpreter/base/factory.py +84 -0
  40. qtype-0.1.7/qtype/interpreter/base/progress_tracker.py +110 -0
  41. qtype-0.1.7/qtype/interpreter/base/secrets.py +339 -0
  42. qtype-0.1.7/qtype/interpreter/base/step_cache.py +74 -0
  43. qtype-0.1.7/qtype/interpreter/base/stream_emitter.py +469 -0
  44. qtype-0.1.7/qtype/interpreter/conversions.py +637 -0
  45. qtype-0.1.7/qtype/interpreter/converters.py +79 -0
  46. qtype-0.1.7/qtype/interpreter/endpoints.py +355 -0
  47. qtype-0.1.7/qtype/interpreter/executors/agent_executor.py +242 -0
  48. qtype-0.1.7/qtype/interpreter/executors/aggregate_executor.py +93 -0
  49. qtype-0.1.7/qtype/interpreter/executors/bedrock_reranker_executor.py +195 -0
  50. qtype-0.1.7/qtype/interpreter/executors/decoder_executor.py +163 -0
  51. qtype-0.1.7/qtype/interpreter/executors/doc_to_text_executor.py +112 -0
  52. qtype-0.1.7/qtype/interpreter/executors/document_embedder_executor.py +123 -0
  53. qtype-0.1.7/qtype/interpreter/executors/document_search_executor.py +113 -0
  54. qtype-0.1.7/qtype/interpreter/executors/document_source_executor.py +118 -0
  55. qtype-0.1.7/qtype/interpreter/executors/document_splitter_executor.py +105 -0
  56. qtype-0.1.7/qtype/interpreter/executors/echo_executor.py +63 -0
  57. qtype-0.1.7/qtype/interpreter/executors/field_extractor_executor.py +165 -0
  58. qtype-0.1.7/qtype/interpreter/executors/file_source_executor.py +101 -0
  59. qtype-0.1.7/qtype/interpreter/executors/file_writer_executor.py +110 -0
  60. qtype-0.1.7/qtype/interpreter/executors/index_upsert_executor.py +232 -0
  61. qtype-0.1.7/qtype/interpreter/executors/invoke_embedding_executor.py +104 -0
  62. qtype-0.1.7/qtype/interpreter/executors/invoke_flow_executor.py +51 -0
  63. qtype-0.1.7/qtype/interpreter/executors/invoke_tool_executor.py +358 -0
  64. qtype-0.1.7/qtype/interpreter/executors/llm_inference_executor.py +272 -0
  65. qtype-0.1.7/qtype/interpreter/executors/prompt_template_executor.py +78 -0
  66. qtype-0.1.7/qtype/interpreter/executors/sql_source_executor.py +106 -0
  67. qtype-0.1.7/qtype/interpreter/executors/vector_search_executor.py +91 -0
  68. qtype-0.1.7/qtype/interpreter/flow.py +187 -0
  69. qtype-0.1.7/qtype/interpreter/logging_progress.py +61 -0
  70. qtype-0.1.7/qtype/interpreter/metadata_api.py +115 -0
  71. {qtype-0.0.10 → qtype-0.1.7}/qtype/interpreter/resource_cache.py +6 -3
  72. qtype-0.1.7/qtype/interpreter/rich_progress.py +225 -0
  73. qtype-0.1.7/qtype/interpreter/stream/chat/__init__.py +15 -0
  74. qtype-0.1.7/qtype/interpreter/stream/chat/converter.py +391 -0
  75. {qtype-0.0.10/qtype/interpreter → qtype-0.1.7/qtype/interpreter/stream}/chat/file_conversions.py +2 -2
  76. qtype-0.1.7/qtype/interpreter/stream/chat/ui_request_to_domain_type.py +140 -0
  77. qtype-0.1.7/qtype/interpreter/stream/chat/vercel.py +609 -0
  78. qtype-0.1.7/qtype/interpreter/stream/utils/__init__.py +15 -0
  79. qtype-0.1.7/qtype/interpreter/stream/utils/build_vercel_ai_formatter.py +74 -0
  80. qtype-0.1.7/qtype/interpreter/stream/utils/callback_to_stream.py +66 -0
  81. qtype-0.1.7/qtype/interpreter/stream/utils/create_streaming_response.py +18 -0
  82. qtype-0.1.7/qtype/interpreter/stream/utils/default_chat_extract_text.py +20 -0
  83. qtype-0.1.7/qtype/interpreter/stream/utils/error_streaming_response.py +20 -0
  84. qtype-0.1.7/qtype/interpreter/telemetry.py +143 -0
  85. qtype-0.1.7/qtype/interpreter/tools/__init__.py +5 -0
  86. qtype-0.1.7/qtype/interpreter/tools/function_tool_helper.py +265 -0
  87. qtype-0.1.7/qtype/interpreter/types.py +330 -0
  88. qtype-0.1.7/qtype/interpreter/typing.py +127 -0
  89. qtype-0.1.7/qtype/interpreter/ui/404/index.html +1 -0
  90. qtype-0.1.7/qtype/interpreter/ui/404.html +1 -0
  91. {qtype-0.0.10/qtype/interpreter/ui/_next/static/Jb2murBlt2XkN6punrQbE → qtype-0.1.7/qtype/interpreter/ui/_next/static/20HoJN6otZ_LyHLHpCPE6}/_buildManifest.js +1 -1
  92. qtype-0.1.7/qtype/interpreter/ui/_next/static/chunks/434-b2112d19f25c44ff.js +36 -0
  93. qtype-0.0.10/qtype/interpreter/ui/_next/static/chunks/964-ed4ab073db645007.js → qtype-0.1.7/qtype/interpreter/ui/_next/static/chunks/964-2b041321a01cbf56.js +1 -1
  94. qtype-0.0.10/qtype/interpreter/ui/_next/static/chunks/app/layout-5ccbc44fd528d089.js → qtype-0.1.7/qtype/interpreter/ui/_next/static/chunks/app/layout-a05273ead5de2c41.js +1 -1
  95. qtype-0.1.7/qtype/interpreter/ui/_next/static/chunks/app/page-8c67d16ac90d23cb.js +1 -0
  96. qtype-0.1.7/qtype/interpreter/ui/_next/static/chunks/ba12c10f-546f2714ff8abc66.js +1 -0
  97. qtype-0.0.10/qtype/interpreter/ui/_next/static/chunks/main-6d261b6c5d6fb6c2.js → qtype-0.1.7/qtype/interpreter/ui/_next/static/chunks/main-e26b9cb206da2cac.js +1 -1
  98. qtype-0.1.7/qtype/interpreter/ui/_next/static/chunks/webpack-08642e441b39b6c2.js +1 -0
  99. qtype-0.1.7/qtype/interpreter/ui/_next/static/css/8a8d1269e362fef7.css +3 -0
  100. qtype-0.1.7/qtype/interpreter/ui/_next/static/media/4cf2300e9c8272f7-s.p.woff2 +0 -0
  101. qtype-0.1.7/qtype/interpreter/ui/icon.png +0 -0
  102. qtype-0.1.7/qtype/interpreter/ui/index.html +1 -0
  103. {qtype-0.0.10 → qtype-0.1.7}/qtype/interpreter/ui/index.txt +5 -5
  104. qtype-0.1.7/qtype/semantic/checker.py +643 -0
  105. qtype-0.1.7/qtype/semantic/generate.py +624 -0
  106. qtype-0.1.7/qtype/semantic/loader.py +95 -0
  107. qtype-0.1.7/qtype/semantic/model.py +839 -0
  108. qtype-0.1.7/qtype/semantic/resolver.py +141 -0
  109. {qtype-0.0.10 → qtype-0.1.7}/qtype/semantic/visualize.py +50 -35
  110. {qtype-0.0.10 → qtype-0.1.7/qtype.egg-info}/PKG-INFO +26 -5
  111. qtype-0.1.7/qtype.egg-info/SOURCES.txt +140 -0
  112. qtype-0.1.7/qtype.egg-info/requires.txt +44 -0
  113. qtype-0.0.10/qtype/commands/convert.py +0 -89
  114. qtype-0.0.10/qtype/commands/generate.py +0 -115
  115. qtype-0.0.10/qtype/commands/run.py +0 -123
  116. qtype-0.0.10/qtype/commands/serve.py +0 -73
  117. qtype-0.0.10/qtype/commands/validate.py +0 -93
  118. qtype-0.0.10/qtype/commands/visualize.py +0 -87
  119. qtype-0.0.10/qtype/commons/generate.py +0 -93
  120. qtype-0.0.10/qtype/converters/tools_from_api.py +0 -24
  121. qtype-0.0.10/qtype/converters/types.py +0 -66
  122. qtype-0.0.10/qtype/dsl/__init__.py +0 -1
  123. qtype-0.0.10/qtype/dsl/base_types.py +0 -30
  124. qtype-0.0.10/qtype/dsl/domain_types.py +0 -59
  125. qtype-0.0.10/qtype/dsl/model.py +0 -672
  126. qtype-0.0.10/qtype/dsl/validator.py +0 -459
  127. qtype-0.0.10/qtype/interpreter/api.py +0 -140
  128. qtype-0.0.10/qtype/interpreter/chat/chat_api.py +0 -237
  129. qtype-0.0.10/qtype/interpreter/chat/vercel.py +0 -314
  130. qtype-0.0.10/qtype/interpreter/conversions.py +0 -155
  131. qtype-0.0.10/qtype/interpreter/exceptions.py +0 -10
  132. qtype-0.0.10/qtype/interpreter/flow.py +0 -37
  133. qtype-0.0.10/qtype/interpreter/step.py +0 -67
  134. qtype-0.0.10/qtype/interpreter/steps/__init__.py +0 -0
  135. qtype-0.0.10/qtype/interpreter/steps/agent.py +0 -114
  136. qtype-0.0.10/qtype/interpreter/steps/condition.py +0 -36
  137. qtype-0.0.10/qtype/interpreter/steps/decoder.py +0 -84
  138. qtype-0.0.10/qtype/interpreter/steps/llm_inference.py +0 -152
  139. qtype-0.0.10/qtype/interpreter/steps/prompt_template.py +0 -54
  140. qtype-0.0.10/qtype/interpreter/steps/search.py +0 -24
  141. qtype-0.0.10/qtype/interpreter/steps/tool.py +0 -53
  142. qtype-0.0.10/qtype/interpreter/streaming_helpers.py +0 -123
  143. qtype-0.0.10/qtype/interpreter/telemetry.py +0 -16
  144. qtype-0.0.10/qtype/interpreter/typing.py +0 -97
  145. qtype-0.0.10/qtype/interpreter/ui/404/index.html +0 -1
  146. qtype-0.0.10/qtype/interpreter/ui/404.html +0 -1
  147. qtype-0.0.10/qtype/interpreter/ui/_next/static/chunks/736-7fc606e244fedcb1.js +0 -36
  148. qtype-0.0.10/qtype/interpreter/ui/_next/static/chunks/app/page-c72e847e888e549d.js +0 -1
  149. qtype-0.0.10/qtype/interpreter/ui/_next/static/chunks/ba12c10f-22556063851a6df2.js +0 -1
  150. qtype-0.0.10/qtype/interpreter/ui/_next/static/chunks/webpack-8289c17c67827f22.js +0 -1
  151. qtype-0.0.10/qtype/interpreter/ui/_next/static/css/a262c53826df929b.css +0 -3
  152. qtype-0.0.10/qtype/interpreter/ui/_next/static/media/569ce4b8f30dc480-s.p.woff2 +0 -0
  153. qtype-0.0.10/qtype/interpreter/ui/favicon.ico +0 -0
  154. qtype-0.0.10/qtype/interpreter/ui/index.html +0 -1
  155. qtype-0.0.10/qtype/loader.py +0 -390
  156. qtype-0.0.10/qtype/semantic/__init__.py +0 -0
  157. qtype-0.0.10/qtype/semantic/errors.py +0 -4
  158. qtype-0.0.10/qtype/semantic/generate.py +0 -389
  159. qtype-0.0.10/qtype/semantic/model.py +0 -336
  160. qtype-0.0.10/qtype/semantic/resolver.py +0 -97
  161. qtype-0.0.10/qtype.egg-info/SOURCES.txt +0 -98
  162. qtype-0.0.10/qtype.egg-info/requires.txt +0 -23
  163. qtype-0.0.10/tests/test_dsl_loader.py +0 -706
  164. qtype-0.0.10/tests/test_dsl_validation.py +0 -157
  165. qtype-0.0.10/tests/test_semantic_resolver.py +0 -84
  166. qtype-0.0.10/tests/test_tools_from_module.py +0 -296
  167. {qtype-0.0.10 → qtype-0.1.7}/LICENSE +0 -0
  168. {qtype-0.0.10 → qtype-0.1.7}/README.md +0 -0
  169. {qtype-0.0.10 → qtype-0.1.7}/qtype/__init__.py +0 -0
  170. {qtype-0.0.10/qtype/commons → qtype-0.1.7/qtype/application/converters}/__init__.py +0 -0
  171. {qtype-0.0.10 → qtype-0.1.7}/qtype/commands/__init__.py +0 -0
  172. {qtype-0.0.10 → qtype-0.1.7}/qtype/interpreter/__init__.py +0 -0
  173. {qtype-0.0.10/qtype/interpreter/ui/_next/static/Jb2murBlt2XkN6punrQbE → qtype-0.1.7/qtype/interpreter/ui/_next/static/20HoJN6otZ_LyHLHpCPE6}/_ssgManifest.js +0 -0
  174. {qtype-0.0.10 → qtype-0.1.7}/qtype/interpreter/ui/_next/static/chunks/4bd1b696-cf72ae8a39fa05aa.js +0 -0
  175. {qtype-0.0.10 → qtype-0.1.7}/qtype/interpreter/ui/_next/static/chunks/app/_not-found/page-e110d2a9d0a83d82.js +0 -0
  176. {qtype-0.0.10 → qtype-0.1.7}/qtype/interpreter/ui/_next/static/chunks/framework-7c95b8e5103c9e90.js +0 -0
  177. {qtype-0.0.10 → qtype-0.1.7}/qtype/interpreter/ui/_next/static/chunks/main-app-6fc6346bc8f7f163.js +0 -0
  178. {qtype-0.0.10 → qtype-0.1.7}/qtype/interpreter/ui/_next/static/chunks/pages/_app-0a0020ddd67f79cf.js +0 -0
  179. {qtype-0.0.10 → qtype-0.1.7}/qtype/interpreter/ui/_next/static/chunks/pages/_error-03529f2c21436739.js +0 -0
  180. {qtype-0.0.10 → qtype-0.1.7}/qtype/interpreter/ui/_next/static/chunks/polyfills-42372ed130431b0a.js +0 -0
  181. {qtype-0.0.10 → qtype-0.1.7}/qtype/interpreter/ui/_next/static/media/747892c23ea88013-s.woff2 +0 -0
  182. {qtype-0.0.10 → qtype-0.1.7}/qtype/interpreter/ui/_next/static/media/8d697b304b401681-s.woff2 +0 -0
  183. {qtype-0.0.10 → qtype-0.1.7}/qtype/interpreter/ui/_next/static/media/93f479601ee12b01-s.p.woff2 +0 -0
  184. {qtype-0.0.10 → qtype-0.1.7}/qtype/interpreter/ui/_next/static/media/9610d9e46709d722-s.woff2 +0 -0
  185. {qtype-0.0.10 → qtype-0.1.7}/qtype/interpreter/ui/_next/static/media/ba015fad6dcf6784-s.woff2 +0 -0
  186. {qtype-0.0.10 → qtype-0.1.7}/qtype/interpreter/ui/file.svg +0 -0
  187. {qtype-0.0.10 → qtype-0.1.7}/qtype/interpreter/ui/globe.svg +0 -0
  188. {qtype-0.0.10 → qtype-0.1.7}/qtype/interpreter/ui/next.svg +0 -0
  189. {qtype-0.0.10 → qtype-0.1.7}/qtype/interpreter/ui/vercel.svg +0 -0
  190. {qtype-0.0.10 → qtype-0.1.7}/qtype/interpreter/ui/window.svg +0 -0
  191. {qtype-0.0.10/qtype/converters → qtype-0.1.7/qtype/semantic}/__init__.py +0 -0
  192. {qtype-0.0.10 → qtype-0.1.7}/qtype/semantic/base_types.py +0 -0
  193. {qtype-0.0.10 → qtype-0.1.7}/qtype.egg-info/dependency_links.txt +0 -0
  194. {qtype-0.0.10 → qtype-0.1.7}/qtype.egg-info/entry_points.txt +0 -0
  195. {qtype-0.0.10 → qtype-0.1.7}/qtype.egg-info/top_level.txt +0 -0
  196. {qtype-0.0.10 → qtype-0.1.7}/setup.cfg +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: qtype
3
- Version: 0.0.10
3
+ Version: 0.1.7
4
4
  Summary: DSL for Generative AI Prototyping
5
5
  Author-email: Lou Kratz <lou.kratz+qtype@bazaarvoice.com>
6
6
  License-Expression: Apache-2.0
@@ -9,26 +9,47 @@ Requires-Python: >=3.10
9
9
  Description-Content-Type: text/markdown
10
10
  License-File: LICENSE
11
11
  Requires-Dist: jsonschema>=4.24.0
12
- Requires-Dist: pydantic>=2.11.5
12
+ Requires-Dist: pydantic>=2.12.4
13
13
  Requires-Dist: pyyaml>=6.0.2
14
14
  Requires-Dist: python-dotenv>=1.0.0
15
15
  Requires-Dist: openai>=1.93.0
16
16
  Requires-Dist: fsspec>=2025.5.1
17
- Requires-Dist: pydantic-yaml>=1.5.1
18
17
  Requires-Dist: mkdocs-awesome-pages-plugin>=2.10.1
19
- Requires-Dist: mermaid-py>=0.8.0
18
+ Requires-Dist: pip-system-certs>=5.2
19
+ Requires-Dist: openapi3-parser>=1.1.21
20
+ Requires-Dist: pydantic-yaml>=1.6.0
21
+ Requires-Dist: google-cloud-aiplatform>=1.120.0
20
22
  Provides-Extra: interpreter
23
+ Requires-Dist: aiostream>=0.7.1; extra == "interpreter"
21
24
  Requires-Dist: arize-phoenix-otel>=0.12.1; extra == "interpreter"
22
25
  Requires-Dist: boto3>=1.34.0; extra == "interpreter"
26
+ Requires-Dist: datasets>=4.4.1; extra == "interpreter"
27
+ Requires-Dist: diskcache>=5.6.3; extra == "interpreter"
28
+ Requires-Dist: docling>=2.55.1; extra == "interpreter"
29
+ Requires-Dist: docx2txt>=0.9; extra == "interpreter"
23
30
  Requires-Dist: fastapi>=0.116.1; extra == "interpreter"
31
+ Requires-Dist: jsonpath-ng>=1.7.0; extra == "interpreter"
32
+ Requires-Dist: langfuse>=3.9.0; extra == "interpreter"
24
33
  Requires-Dist: llama-index-embeddings-bedrock>=0.5.2; extra == "interpreter"
25
34
  Requires-Dist: llama-index-embeddings-openai>=0.3.1; extra == "interpreter"
26
- Requires-Dist: llama-index-llms-bedrock-converse>=0.7.4; extra == "interpreter"
35
+ Requires-Dist: llama-index-llms-bedrock-converse>=0.10.5; extra == "interpreter"
27
36
  Requires-Dist: llama-index-llms-bedrock>=0.3.8; extra == "interpreter"
37
+ Requires-Dist: llama-index-llms-vertex>=0.6.1; extra == "interpreter"
38
+ Requires-Dist: llama-index-postprocessor-bedrock-rerank>=0.5.1; extra == "interpreter"
39
+ Requires-Dist: llama-index-readers-huggingface-fs>=0.4.1; extra == "interpreter"
40
+ Requires-Dist: llama-index-vector-stores-qdrant>=0.8.6; extra == "interpreter"
28
41
  Requires-Dist: llama-index>=0.12.45; extra == "interpreter"
29
42
  Requires-Dist: openinference-instrumentation-llama-index>=4.3.4; extra == "interpreter"
43
+ Requires-Dist: opensearch-py>=2.7.0; extra == "interpreter"
44
+ Requires-Dist: opentelemetry-exporter-otlp>=1.35.0; extra == "interpreter"
45
+ Requires-Dist: opentelemetry-sdk>=1.35.0; extra == "interpreter"
46
+ Requires-Dist: pandas>=2.2.3; extra == "interpreter"
30
47
  Requires-Dist: psycopg2-binary>=2.9.10; extra == "interpreter"
48
+ Requires-Dist: pyarrow>=21.0.0; extra == "interpreter"
49
+ Requires-Dist: pyathena[sqlalchemy]>=3.18.0; extra == "interpreter"
31
50
  Requires-Dist: python-magic>=0.4.27; extra == "interpreter"
51
+ Requires-Dist: s3fs>=2025.7.0; extra == "interpreter"
52
+ Requires-Dist: sqlalchemy>=2.0.42; extra == "interpreter"
32
53
  Requires-Dist: uvicorn[standard]>=0.35.0; extra == "interpreter"
33
54
  Dynamic: license-file
34
55
 
@@ -1,20 +1,22 @@
1
1
  [project]
2
2
  name = "qtype"
3
- version = "0.0.10"
3
+ version = "0.1.7"
4
4
  description = "DSL for Generative AI Prototyping"
5
5
  authors = [{ name="Lou Kratz", email="lou.kratz+qtype@bazaarvoice.com" }]
6
6
  readme = "README.md"
7
7
  requires-python = ">=3.10"
8
8
  dependencies = [
9
9
  "jsonschema>=4.24.0",
10
- "pydantic>=2.11.5",
10
+ "pydantic>=2.12.4",
11
11
  "pyyaml>=6.0.2",
12
12
  "python-dotenv>=1.0.0",
13
13
  "openai>=1.93.0",
14
14
  "fsspec>=2025.5.1",
15
- "pydantic-yaml>=1.5.1",
16
15
  "mkdocs-awesome-pages-plugin>=2.10.1",
17
- "mermaid-py>=0.8.0",
16
+ "pip-system-certs>=5.2",
17
+ "openapi3-parser>=1.1.21",
18
+ "pydantic-yaml>=1.6.0",
19
+ "google-cloud-aiplatform>=1.120.0",
18
20
  ]
19
21
  license = "APACHE-2.0"
20
22
  license-files = ["LICEN[CS]E*"]
@@ -24,17 +26,36 @@ Homepage = "https://github.com/bazaarvoice/qtype"
24
26
 
25
27
  [project.optional-dependencies]
26
28
  interpreter = [
29
+ "aiostream>=0.7.1",
27
30
  "arize-phoenix-otel>=0.12.1",
28
31
  "boto3>=1.34.0",
32
+ "datasets>=4.4.1",
33
+ "diskcache>=5.6.3",
34
+ "docling>=2.55.1",
35
+ "docx2txt>=0.9",
29
36
  "fastapi>=0.116.1",
37
+ "jsonpath-ng>=1.7.0",
38
+ "langfuse>=3.9.0",
30
39
  "llama-index-embeddings-bedrock>=0.5.2",
31
40
  "llama-index-embeddings-openai>=0.3.1",
32
- "llama-index-llms-bedrock-converse>=0.7.4",
41
+ "llama-index-llms-bedrock-converse>=0.10.5",
33
42
  "llama-index-llms-bedrock>=0.3.8",
43
+ "llama-index-llms-vertex>=0.6.1",
44
+ "llama-index-postprocessor-bedrock-rerank>=0.5.1",
45
+ "llama-index-readers-huggingface-fs>=0.4.1",
46
+ "llama-index-vector-stores-qdrant>=0.8.6",
34
47
  "llama-index>=0.12.45",
35
48
  "openinference-instrumentation-llama-index>=4.3.4",
49
+ "opensearch-py>=2.7.0",
50
+ "opentelemetry-exporter-otlp>=1.35.0",
51
+ "opentelemetry-sdk>=1.35.0",
52
+ "pandas>=2.2.3",
36
53
  "psycopg2-binary>=2.9.10",
54
+ "pyarrow>=21.0.0",
55
+ "pyathena[sqlalchemy]>=3.18.0",
37
56
  "python-magic>=0.4.27",
57
+ "s3fs>=2025.7.0",
58
+ "sqlalchemy>=2.0.42",
38
59
  "uvicorn[standard]>=0.35.0",
39
60
  ]
40
61
 
@@ -45,6 +66,7 @@ dev = [
45
66
  "coverage>=7.0.0",
46
67
  "ipython>=8.37.0",
47
68
  "isort>=5.13.0",
69
+ "mermaid-py>=0.8.0",
48
70
  "mkdocs-awesome-pages-plugin>=2.10.1",
49
71
  "mkdocs-material>=9.6.15",
50
72
  "mkdocs>=1.6.1",
@@ -52,13 +74,18 @@ dev = [
52
74
  "mkdocstrings>=0.30.0",
53
75
  "mypy>=1.8.0",
54
76
  "networkx>=3.4.2",
77
+ "pandas-stubs>=2.3.2.250827",
55
78
  "pkginfo>=1.12.1.2",
56
79
  "pre-commit>=3.6.0",
57
80
  "pymdown-extensions>=10.16",
81
+ "pytest-asyncio>=1.2.0",
58
82
  "pytest-cov>=6.0.0",
59
83
  "pytest>=8.4.1",
60
84
  "ruff>=0.1.0",
85
+ "types-cachetools>=6.2.0.20250827",
86
+ "types-networkx>=3.5.0.20250901",
61
87
  "types-PyYAML>=6.0.2",
88
+ "types-requests>=2.32.4.20250809",
62
89
  ]
63
90
  docs = [
64
91
  "mkdocs>=1.5.0",
@@ -68,6 +95,8 @@ docs = [
68
95
  [tool.uv]
69
96
  # Install dev dependencies by default when running uv sync
70
97
  default-groups = ["dev"]
98
+ # Install the package itself in editable mode
99
+ package = true
71
100
  # Use highest resolution strategy for dependencies
72
101
  resolution = "highest"
73
102
  # Compile bytecode for faster subsequent runs
@@ -110,12 +139,17 @@ python_version = "3.10"
110
139
  warn_return_any = true
111
140
  warn_unused_configs = true
112
141
  disallow_untyped_defs = true
142
+ explicit_package_bases = true
113
143
  plugins = ["pydantic.mypy"]
114
144
 
115
145
  [[tool.mypy.overrides]]
116
146
  module = "tests.*"
117
147
  disallow_untyped_defs = false
118
148
 
149
+ [[tool.mypy.overrides]]
150
+ module = "qtype.semantic.model"
151
+ ignore_errors = true
152
+
119
153
  [tool.pydantic-mypy]
120
154
  init_forbid_extra = true
121
155
  init_typed = true
@@ -124,11 +158,9 @@ warn_required_dynamic_aliases = true
124
158
  [tool.coverage.run]
125
159
  source = ["qtype"]
126
160
  omit = [
127
- "*/tests/*",
128
- "*/test_*",
129
- "*/__pycache__/*",
130
- "*/venv/*",
131
- "*/.venv/*",
161
+ "qtype/commands/*",
162
+ "qtype/interpreter/*", # TODO: expand coverage here.
163
+ "qtype/*.py",
132
164
  ]
133
165
 
134
166
  [tool.coverage.report]
@@ -169,4 +201,7 @@ filterwarnings = [
169
201
  markers = [
170
202
  "slow: marks tests as slow (deselect with '-m \"not slow\"')",
171
203
  "network: marks tests as requiring network access",
204
+ "asyncio: marks tests as async tests using asyncio",
172
205
  ]
206
+ # Configure pytest-asyncio to automatically detect async tests
207
+ asyncio_mode = "auto"
@@ -0,0 +1,12 @@
1
+ """Application layer for orchestrating qtype operations."""
2
+
3
+ from __future__ import annotations
4
+
5
+ from . import commons, converters
6
+ from .facade import QTypeFacade
7
+
8
+ __all__ = [
9
+ "QTypeFacade",
10
+ "converters",
11
+ "commons",
12
+ ]
@@ -0,0 +1,7 @@
1
+ """Common tools and utilities for qtype applications."""
2
+
3
+ from __future__ import annotations
4
+
5
+ from . import tools
6
+
7
+ __all__ = ["tools"]
@@ -180,7 +180,7 @@ def parse_duration_string(duration: str) -> int:
180
180
 
181
181
  def format_datetime(timestamp: datetime, format_string: str) -> str:
182
182
  """
183
- Format a timestamp using a custom format string.
183
+ Format a timestamp using a custom format string that can be passed to strftime.
184
184
 
185
185
  Args:
186
186
  timestamp: Datetime object to format.