Skip to content

feat(codegen): add text2sql views code generation #40

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 18 commits into from
Jun 12, 2024

Conversation

micpst
Copy link
Collaborator

@micpst micpst commented May 29, 2024

This PR adds code generation for text2sql views and refactors autodiscovery for codegen.

Copy link

Trivy scanning results.

Copy link

github-actions bot commented May 29, 2024

badge

Code Coverage Summary

Filename                                                  Stmts    Miss  Cover    Missing
------------------------------------------------------  -------  ------  -------  ---------------------------------------------------------------------
dbally/_exceptions.py                                         1       0  100.00%
dbally/_main.py                                              12       0  100.00%
dbally/_types.py                                              8       1  87.50%   24
dbally/collection.py                                         89       0  100.00%
dbally/assistants/base.py                                    23       0  100.00%
dbally/assistants/openai.py                                  59       2  96.61%   59-76
dbally/audit/event_span.py                                    8       0  100.00%
dbally/audit/event_tracker.py                                34       6  82.35%   35, 48, 59, 69, 86, 92
dbally/audit/event_handlers/base.py                          15       0  100.00%
dbally/audit/event_handlers/cli_event_handler.py             48      33  31.25%   9-12, 38-39, 42-46, 56-58, 70-80, 99-106, 117-120
dbally/audit/event_handlers/langsmith_event_handler.py       29      25  13.79%   6-107
dbally/data_models/audit.py                                  28       0  100.00%
dbally/data_models/execution_result.py                       14       0  100.00%
dbally/embeddings/_exceptions.py                             15       6  60.00%   10-11, 20, 29-30, 39
dbally/embeddings/base.py                                     5       0  100.00%
dbally/embeddings/litellm.py                                 28      12  57.14%   7-8, 45, 69-85
dbally/iql/_exceptions.py                                    24       1  95.83%   33
dbally/iql/_processor.py                                     80       7  91.25%   16, 47, 64, 70, 76, 85, 91
dbally/iql/_query.py                                         13       1  92.31%   8
dbally/iql/_type_validators.py                               39       2  94.87%   24, 28
dbally/iql/syntax.py                                         36       9  75.00%   6-9, 27, 36, 60, 63-66
dbally/iql_generator/iql_generator.py                        31       0  100.00%
dbally/iql_generator/iql_prompt_template.py                  12       1  91.67%   38
dbally/llms/base.py                                          32       1  96.88%   35
dbally/llms/litellm.py                                       24      10  58.33%   8-9, 48-54, 61, 79
dbally/llms/clients/_exceptions.py                           15       6  60.00%   10-11, 20, 29-30, 39
dbally/llms/clients/base.py                                  24       2  91.67%   46-47
dbally/llms/clients/litellm.py                               44      20  54.55%   8-9, 65-71, 97-118
dbally/nl_responder/nl_responder.py                          29       4  86.21%   75-84
dbally/nl_responder/nl_responder_prompt_template.py           7       0  100.00%
dbally/nl_responder/query_explainer_prompt_template.py        7       0  100.00%
dbally/prompts/common_validation_utils.py                    15       0  100.00%
dbally/prompts/prompt_template.py                            28       2  92.86%   27, 35
dbally/similarity/chroma_store.py                            37       0  100.00%
dbally/similarity/elastic_vector_search.py                   19      16  15.79%   5-102
dbally/similarity/elasticsearch_store.py                     22      19  13.64%   5-107
dbally/similarity/faiss_store.py                             38      35  7.90%    5-103
dbally/similarity/fetcher.py                                  5       0  100.00%
dbally/similarity/index.py                                   26       0  100.00%
dbally/similarity/sqlalchemy_base.py                         44      19  56.82%   35-37, 46, 68, 77, 86-89, 99-105, 123-126
dbally/similarity/store.py                                    7       0  100.00%
dbally/utils/errors.py                                        2       0  100.00%
dbally/view_selection/base.py                                 7       0  100.00%
dbally/view_selection/llm_view_selector.py                   20       0  100.00%
dbally/view_selection/random_view_selector.py                10      10  0.00%    1-35
dbally/view_selection/view_selector_prompt_template.py       11       2  81.82%   32-33
dbally/views/base.py                                         13       1  92.31%   51
dbally/views/decorators.py                                    6       0  100.00%
dbally/views/exposed_functions.py                            33       1  96.97%   24
dbally/views/methods_base.py                                 34       2  94.12%   75, 83
dbally/views/pandas_base.py                                  33       1  96.97%   64
dbally/views/sqlalchemy_base.py                              37       7  81.08%   48, 63-65, 83-87
dbally/views/structured.py                                   45       0  100.00%
dbally/views/freeform/text2sql/config.py                     21       1  95.24%   47
dbally/views/freeform/text2sql/errors.py                      6       3  50.00%   10-12
dbally/views/freeform/text2sql/view.py                       95      22  76.84%   70, 73, 76, 79, 82, 94, 164, 168-171, 174, 206, 218-219, 233, 246-251
dbally_cli/main.py                                            5       5  0.00%    1-13
dbally_cli/text2sql.py                                       96      96  0.00%    1-248
dbally_codegen/autodiscovery.py                             106      12  88.68%   193-195, 216-229, 232-235, 304-305, 401-406
dbally_codegen/generator.py                                 180       7  96.11%   81, 91, 314, 342, 360, 374, 420
TOTAL                                                      1834     410  77.64%

Diff against main

Filename                                Stmts    Miss  Cover
------------------------------------  -------  ------  --------
dbally/embeddings/litellm.py                0      -7  +25.00%
dbally/similarity/sqlalchemy_base.py        0      -4  +9.09%
dbally_cli/main.py                         +2      +2  +100.00%
dbally_cli/text2sql.py                    +96     +96  +100.00%
dbally_codegen/autodiscovery.py            -1       0  -0.11%
dbally_codegen/generator.py              +180      +7  +96.11%
TOTAL                                    +277     +94  -2.06%

Results for commit: e3d0c71

Minimum allowed coverage is 60%

♻️ This comment has been updated with latest results

@micpst micpst self-assigned this May 29, 2024
@micpst micpst marked this pull request as ready for review June 10, 2024 07:55
@mhordynski
Copy link
Member

Code looks great 🥇 Let's add documentation and we can merge it

@micpst
Copy link
Collaborator Author

micpst commented Jun 11, 2024

I'll update the documentation in a separate PR for both code generation and freeform views.

@micpst micpst merged commit 4284344 into main Jun 12, 2024
@micpst micpst deleted the mp/codegen-text2sql-views branch June 12, 2024 08:18
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants