nlp2sql 0.2.0rc11__tar.gz → 0.2.0rc12__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 (129) hide show
  1. {nlp2sql-0.2.0rc11 → nlp2sql-0.2.0rc12}/PKG-INFO +1 -1
  2. {nlp2sql-0.2.0rc11 → nlp2sql-0.2.0rc12}/pyproject.toml +1 -1
  3. {nlp2sql-0.2.0rc11 → nlp2sql-0.2.0rc12}/src/nlp2sql/__init__.py +1 -1
  4. {nlp2sql-0.2.0rc11 → nlp2sql-0.2.0rc12}/src/nlp2sql/adapters/openai_embedding_adapter.py +10 -7
  5. {nlp2sql-0.2.0rc11 → nlp2sql-0.2.0rc12}/uv.lock +1 -1
  6. {nlp2sql-0.2.0rc11 → nlp2sql-0.2.0rc12}/.claude/commands/db.md +0 -0
  7. {nlp2sql-0.2.0rc11 → nlp2sql-0.2.0rc12}/.claude/commands/quality.md +0 -0
  8. {nlp2sql-0.2.0rc11 → nlp2sql-0.2.0rc12}/.claude/commands/test.md +0 -0
  9. {nlp2sql-0.2.0rc11 → nlp2sql-0.2.0rc12}/.claude/rules/adapters.md +0 -0
  10. {nlp2sql-0.2.0rc11 → nlp2sql-0.2.0rc12}/.claude/rules/architecture.md +0 -0
  11. {nlp2sql-0.2.0rc11 → nlp2sql-0.2.0rc12}/.claude/rules/python-style.md +0 -0
  12. {nlp2sql-0.2.0rc11 → nlp2sql-0.2.0rc12}/.claude/rules/testing.md +0 -0
  13. {nlp2sql-0.2.0rc11 → nlp2sql-0.2.0rc12}/.claude/settings.json +0 -0
  14. {nlp2sql-0.2.0rc11 → nlp2sql-0.2.0rc12}/.github/ISSUE_TEMPLATE/bug_report.md +0 -0
  15. {nlp2sql-0.2.0rc11 → nlp2sql-0.2.0rc12}/.github/ISSUE_TEMPLATE/feature_request.md +0 -0
  16. {nlp2sql-0.2.0rc11 → nlp2sql-0.2.0rc12}/.github/workflows/ci.yml +0 -0
  17. {nlp2sql-0.2.0rc11 → nlp2sql-0.2.0rc12}/.github/workflows/publish-pypi.yml +0 -0
  18. {nlp2sql-0.2.0rc11 → nlp2sql-0.2.0rc12}/.github/workflows/publish-testpypi.yml +0 -0
  19. {nlp2sql-0.2.0rc11 → nlp2sql-0.2.0rc12}/.gitignore +0 -0
  20. {nlp2sql-0.2.0rc11 → nlp2sql-0.2.0rc12}/.mcp.json.example +0 -0
  21. {nlp2sql-0.2.0rc11 → nlp2sql-0.2.0rc12}/.python-version +0 -0
  22. {nlp2sql-0.2.0rc11 → nlp2sql-0.2.0rc12}/CLAUDE.md +0 -0
  23. {nlp2sql-0.2.0rc11 → nlp2sql-0.2.0rc12}/CONTRIBUTING.md +0 -0
  24. {nlp2sql-0.2.0rc11 → nlp2sql-0.2.0rc12}/LICENSE +0 -0
  25. {nlp2sql-0.2.0rc11 → nlp2sql-0.2.0rc12}/README.md +0 -0
  26. {nlp2sql-0.2.0rc11 → nlp2sql-0.2.0rc12}/SECURITY.md +0 -0
  27. {nlp2sql-0.2.0rc11 → nlp2sql-0.2.0rc12}/assets/nlp2sql-logo.png +0 -0
  28. {nlp2sql-0.2.0rc11 → nlp2sql-0.2.0rc12}/benchmarks/enterprise_benchmark_results.json +0 -0
  29. {nlp2sql-0.2.0rc11 → nlp2sql-0.2.0rc12}/docker/.env.example +0 -0
  30. {nlp2sql-0.2.0rc11 → nlp2sql-0.2.0rc12}/docker/README.md +0 -0
  31. {nlp2sql-0.2.0rc11 → nlp2sql-0.2.0rc12}/docker/docker-compose.yml +0 -0
  32. {nlp2sql-0.2.0rc11 → nlp2sql-0.2.0rc12}/docker/get-db-urls.sh +0 -0
  33. {nlp2sql-0.2.0rc11 → nlp2sql-0.2.0rc12}/docker/init-schema.sql +0 -0
  34. {nlp2sql-0.2.0rc11 → nlp2sql-0.2.0rc12}/docker/large-schema.sql +0 -0
  35. {nlp2sql-0.2.0rc11 → nlp2sql-0.2.0rc12}/docker/localstack-init.sh +0 -0
  36. {nlp2sql-0.2.0rc11 → nlp2sql-0.2.0rc12}/docker/test-redshift.sh +0 -0
  37. {nlp2sql-0.2.0rc11 → nlp2sql-0.2.0rc12}/docs/API.md +0 -0
  38. {nlp2sql-0.2.0rc11 → nlp2sql-0.2.0rc12}/docs/ARCHITECTURE.md +0 -0
  39. {nlp2sql-0.2.0rc11 → nlp2sql-0.2.0rc12}/docs/CONFIGURATION.md +0 -0
  40. {nlp2sql-0.2.0rc11 → nlp2sql-0.2.0rc12}/docs/ENTERPRISE.md +0 -0
  41. {nlp2sql-0.2.0rc11 → nlp2sql-0.2.0rc12}/docs/Redshift.md +0 -0
  42. {nlp2sql-0.2.0rc11 → nlp2sql-0.2.0rc12}/examples/README.md +0 -0
  43. {nlp2sql-0.2.0rc11 → nlp2sql-0.2.0rc12}/examples/advanced/test_multiple_providers.py +0 -0
  44. {nlp2sql-0.2.0rc11 → nlp2sql-0.2.0rc12}/examples/advanced/test_simple_api.py +0 -0
  45. {nlp2sql-0.2.0rc11 → nlp2sql-0.2.0rc12}/examples/database_specific/test_odoo_integration.py +0 -0
  46. {nlp2sql-0.2.0rc11 → nlp2sql-0.2.0rc12}/examples/default_examples.json +0 -0
  47. {nlp2sql-0.2.0rc11 → nlp2sql-0.2.0rc12}/examples/documentation/real_world_example.py +0 -0
  48. {nlp2sql-0.2.0rc11 → nlp2sql-0.2.0rc12}/examples/getting_started/basic_usage.py +0 -0
  49. {nlp2sql-0.2.0rc11 → nlp2sql-0.2.0rc12}/examples/getting_started/simple_demo.py +0 -0
  50. {nlp2sql-0.2.0rc11 → nlp2sql-0.2.0rc12}/examples/getting_started/test_api_setup.py +0 -0
  51. {nlp2sql-0.2.0rc11 → nlp2sql-0.2.0rc12}/examples/schema_management/test_auto_schema.py +0 -0
  52. {nlp2sql-0.2.0rc11 → nlp2sql-0.2.0rc12}/examples/schema_management/test_schema_filters_comprehensive.py +0 -0
  53. {nlp2sql-0.2.0rc11 → nlp2sql-0.2.0rc12}/examples/strands-fastapi-agent/.dockerignore +0 -0
  54. {nlp2sql-0.2.0rc11 → nlp2sql-0.2.0rc12}/examples/strands-fastapi-agent/.env.example +0 -0
  55. {nlp2sql-0.2.0rc11 → nlp2sql-0.2.0rc12}/examples/strands-fastapi-agent/DOCKER_README.md +0 -0
  56. {nlp2sql-0.2.0rc11 → nlp2sql-0.2.0rc12}/examples/strands-fastapi-agent/DOCKER_SETUP.md +0 -0
  57. {nlp2sql-0.2.0rc11 → nlp2sql-0.2.0rc12}/examples/strands-fastapi-agent/DOCKER_TESTING_SUMMARY.md +0 -0
  58. {nlp2sql-0.2.0rc11 → nlp2sql-0.2.0rc12}/examples/strands-fastapi-agent/Dockerfile +0 -0
  59. {nlp2sql-0.2.0rc11 → nlp2sql-0.2.0rc12}/examples/strands-fastapi-agent/INDEX.md +0 -0
  60. {nlp2sql-0.2.0rc11 → nlp2sql-0.2.0rc12}/examples/strands-fastapi-agent/README.md +0 -0
  61. {nlp2sql-0.2.0rc11 → nlp2sql-0.2.0rc12}/examples/strands-fastapi-agent/docker/init-ecommerce-schema.sql +0 -0
  62. {nlp2sql-0.2.0rc11 → nlp2sql-0.2.0rc12}/examples/strands-fastapi-agent/docker-compose.yml +0 -0
  63. {nlp2sql-0.2.0rc11 → nlp2sql-0.2.0rc12}/examples/strands-fastapi-agent/main.py +0 -0
  64. {nlp2sql-0.2.0rc11 → nlp2sql-0.2.0rc12}/examples/strands-fastapi-agent/pyproject.toml +0 -0
  65. {nlp2sql-0.2.0rc11 → nlp2sql-0.2.0rc12}/examples/strands-fastapi-agent/test-docker-endpoints.sh +0 -0
  66. {nlp2sql-0.2.0rc11 → nlp2sql-0.2.0rc12}/install-dev.sh +0 -0
  67. {nlp2sql-0.2.0rc11 → nlp2sql-0.2.0rc12}/mcp_server/README.md +0 -0
  68. {nlp2sql-0.2.0rc11 → nlp2sql-0.2.0rc12}/mcp_server/__init__.py +0 -0
  69. {nlp2sql-0.2.0rc11 → nlp2sql-0.2.0rc12}/mcp_server/example_config.json +0 -0
  70. {nlp2sql-0.2.0rc11 → nlp2sql-0.2.0rc12}/mcp_server/pyproject.toml +0 -0
  71. {nlp2sql-0.2.0rc11 → nlp2sql-0.2.0rc12}/mcp_server/server.py +0 -0
  72. {nlp2sql-0.2.0rc11 → nlp2sql-0.2.0rc12}/src/nlp2sql/adapters/__init__.py +0 -0
  73. {nlp2sql-0.2.0rc11 → nlp2sql-0.2.0rc12}/src/nlp2sql/adapters/anthropic_adapter.py +0 -0
  74. {nlp2sql-0.2.0rc11 → nlp2sql-0.2.0rc12}/src/nlp2sql/adapters/gemini_adapter.py +0 -0
  75. {nlp2sql-0.2.0rc11 → nlp2sql-0.2.0rc12}/src/nlp2sql/adapters/local_embedding_adapter.py +0 -0
  76. {nlp2sql-0.2.0rc11 → nlp2sql-0.2.0rc12}/src/nlp2sql/adapters/openai_adapter.py +0 -0
  77. {nlp2sql-0.2.0rc11 → nlp2sql-0.2.0rc12}/src/nlp2sql/adapters/postgres_repository.py +0 -0
  78. {nlp2sql-0.2.0rc11 → nlp2sql-0.2.0rc12}/src/nlp2sql/adapters/redshift_adapter.py +0 -0
  79. {nlp2sql-0.2.0rc11 → nlp2sql-0.2.0rc12}/src/nlp2sql/adapters/regex_query_validator.py +0 -0
  80. {nlp2sql-0.2.0rc11 → nlp2sql-0.2.0rc12}/src/nlp2sql/cli.py +0 -0
  81. {nlp2sql-0.2.0rc11 → nlp2sql-0.2.0rc12}/src/nlp2sql/client.py +0 -0
  82. {nlp2sql-0.2.0rc11 → nlp2sql-0.2.0rc12}/src/nlp2sql/config/__init__.py +0 -0
  83. {nlp2sql-0.2.0rc11 → nlp2sql-0.2.0rc12}/src/nlp2sql/config/settings.py +0 -0
  84. {nlp2sql-0.2.0rc11 → nlp2sql-0.2.0rc12}/src/nlp2sql/core/__init__.py +0 -0
  85. {nlp2sql-0.2.0rc11 → nlp2sql-0.2.0rc12}/src/nlp2sql/core/database_prompts.py +0 -0
  86. {nlp2sql-0.2.0rc11 → nlp2sql-0.2.0rc12}/src/nlp2sql/core/entities.py +0 -0
  87. {nlp2sql-0.2.0rc11 → nlp2sql-0.2.0rc12}/src/nlp2sql/core/provider_config.py +0 -0
  88. {nlp2sql-0.2.0rc11 → nlp2sql-0.2.0rc12}/src/nlp2sql/core/result.py +0 -0
  89. {nlp2sql-0.2.0rc11 → nlp2sql-0.2.0rc12}/src/nlp2sql/core/sql_keywords.py +0 -0
  90. {nlp2sql-0.2.0rc11 → nlp2sql-0.2.0rc12}/src/nlp2sql/core/sql_safety.py +0 -0
  91. {nlp2sql-0.2.0rc11 → nlp2sql-0.2.0rc12}/src/nlp2sql/exceptions/__init__.py +0 -0
  92. {nlp2sql-0.2.0rc11 → nlp2sql-0.2.0rc12}/src/nlp2sql/factories/__init__.py +0 -0
  93. {nlp2sql-0.2.0rc11 → nlp2sql-0.2.0rc12}/src/nlp2sql/factories/repository_factory.py +0 -0
  94. {nlp2sql-0.2.0rc11 → nlp2sql-0.2.0rc12}/src/nlp2sql/ports/__init__.py +0 -0
  95. {nlp2sql-0.2.0rc11 → nlp2sql-0.2.0rc12}/src/nlp2sql/ports/ai_provider.py +0 -0
  96. {nlp2sql-0.2.0rc11 → nlp2sql-0.2.0rc12}/src/nlp2sql/ports/cache.py +0 -0
  97. {nlp2sql-0.2.0rc11 → nlp2sql-0.2.0rc12}/src/nlp2sql/ports/embedding_provider.py +0 -0
  98. {nlp2sql-0.2.0rc11 → nlp2sql-0.2.0rc12}/src/nlp2sql/ports/example_repository.py +0 -0
  99. {nlp2sql-0.2.0rc11 → nlp2sql-0.2.0rc12}/src/nlp2sql/ports/query_optimizer.py +0 -0
  100. {nlp2sql-0.2.0rc11 → nlp2sql-0.2.0rc12}/src/nlp2sql/ports/query_safety.py +0 -0
  101. {nlp2sql-0.2.0rc11 → nlp2sql-0.2.0rc12}/src/nlp2sql/ports/query_validator.py +0 -0
  102. {nlp2sql-0.2.0rc11 → nlp2sql-0.2.0rc12}/src/nlp2sql/ports/schema_repository.py +0 -0
  103. {nlp2sql-0.2.0rc11 → nlp2sql-0.2.0rc12}/src/nlp2sql/ports/schema_strategy.py +0 -0
  104. {nlp2sql-0.2.0rc11 → nlp2sql-0.2.0rc12}/src/nlp2sql/schema/__init__.py +0 -0
  105. {nlp2sql-0.2.0rc11 → nlp2sql-0.2.0rc12}/src/nlp2sql/schema/analyzer.py +0 -0
  106. {nlp2sql-0.2.0rc11 → nlp2sql-0.2.0rc12}/src/nlp2sql/schema/embedding_manager.py +0 -0
  107. {nlp2sql-0.2.0rc11 → nlp2sql-0.2.0rc12}/src/nlp2sql/schema/example_loader.py +0 -0
  108. {nlp2sql-0.2.0rc11 → nlp2sql-0.2.0rc12}/src/nlp2sql/schema/example_store.py +0 -0
  109. {nlp2sql-0.2.0rc11 → nlp2sql-0.2.0rc12}/src/nlp2sql/schema/manager.py +0 -0
  110. {nlp2sql-0.2.0rc11 → nlp2sql-0.2.0rc12}/src/nlp2sql/services/__init__.py +0 -0
  111. {nlp2sql-0.2.0rc11 → nlp2sql-0.2.0rc12}/src/nlp2sql/services/query_service.py +0 -0
  112. {nlp2sql-0.2.0rc11 → nlp2sql-0.2.0rc12}/src/nlp2sql/utils/__init__.py +0 -0
  113. {nlp2sql-0.2.0rc11 → nlp2sql-0.2.0rc12}/src/nlp2sql/utils/helpers.py +0 -0
  114. {nlp2sql-0.2.0rc11 → nlp2sql-0.2.0rc12}/src/nlp2sql/utils/storage.py +0 -0
  115. {nlp2sql-0.2.0rc11 → nlp2sql-0.2.0rc12}/test_tmp/.gitignore +0 -0
  116. {nlp2sql-0.2.0rc11 → nlp2sql-0.2.0rc12}/tests/conftest.py +0 -0
  117. {nlp2sql-0.2.0rc11 → nlp2sql-0.2.0rc12}/tests/mcp/__init__.py +0 -0
  118. {nlp2sql-0.2.0rc11 → nlp2sql-0.2.0rc12}/tests/mcp/test_sql_security.py +0 -0
  119. {nlp2sql-0.2.0rc11 → nlp2sql-0.2.0rc12}/tests/test_basic.py +0 -0
  120. {nlp2sql-0.2.0rc11 → nlp2sql-0.2.0rc12}/tests/test_batch_scoring.py +0 -0
  121. {nlp2sql-0.2.0rc11 → nlp2sql-0.2.0rc12}/tests/test_column_validation.py +0 -0
  122. {nlp2sql-0.2.0rc11 → nlp2sql-0.2.0rc12}/tests/test_database_prompts.py +0 -0
  123. {nlp2sql-0.2.0rc11 → nlp2sql-0.2.0rc12}/tests/test_dsl_integration.py +0 -0
  124. {nlp2sql-0.2.0rc11 → nlp2sql-0.2.0rc12}/tests/test_embedding_manager.py +0 -0
  125. {nlp2sql-0.2.0rc11 → nlp2sql-0.2.0rc12}/tests/test_integration.py +0 -0
  126. {nlp2sql-0.2.0rc11 → nlp2sql-0.2.0rc12}/tests/test_postgres_integration.py +0 -0
  127. {nlp2sql-0.2.0rc11 → nlp2sql-0.2.0rc12}/tests/test_redshift_integration.py +0 -0
  128. {nlp2sql-0.2.0rc11 → nlp2sql-0.2.0rc12}/tests/test_repository_cache.py +0 -0
  129. {nlp2sql-0.2.0rc11 → nlp2sql-0.2.0rc12}/tests/test_repository_factory.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: nlp2sql
3
- Version: 0.2.0rc11
3
+ Version: 0.2.0rc12
4
4
  Summary: Enterprise-ready Natural Language to SQL converter with multi-provider support. Built for production scale (1000+ tables) with Clean Architecture.
5
5
  Project-URL: Homepage, https://github.com/luiscarbonel1991/nlp2sql
6
6
  Project-URL: Bug Tracker, https://github.com/luiscarbonel1991/nlp2sql/issues
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "nlp2sql"
3
- version = "0.2.0rc11"
3
+ version = "0.2.0rc12"
4
4
  description = "Enterprise-ready Natural Language to SQL converter with multi-provider support. Built for production scale (1000+ tables) with Clean Architecture."
5
5
  readme = "README.md"
6
6
  license = {text = "MIT"}
@@ -20,7 +20,7 @@ from .ports.schema_repository import SchemaRepositoryPort
20
20
  from .schema.example_store import ExampleStore
21
21
  from .services.query_service import QueryGenerationService
22
22
 
23
- __version__ = "0.2.0rc11"
23
+ __version__ = "0.2.0rc12"
24
24
  __author__ = "Luis Carbonel"
25
25
  __email__ = "devhighlevel@gmail.com"
26
26
 
@@ -79,17 +79,19 @@ class OpenAIEmbeddingAdapter(EmbeddingProviderPort):
79
79
  processed_texts.append(text)
80
80
 
81
81
  try:
82
- response = await self.client.embeddings.create(model=self.model, input=processed_texts)
82
+ # OpenAI API limits input array to 2048 items per request
83
+ batch_size = 2000
84
+ all_embeddings: list[list[float]] = []
83
85
 
84
- # Extract embeddings from response
85
- embeddings = [item.embedding for item in response.data]
86
- embeddings_array = np.array(embeddings)
86
+ for i in range(0, len(processed_texts), batch_size):
87
+ batch = processed_texts[i : i + batch_size]
88
+ response = await self.client.embeddings.create(model=self.model, input=batch)
89
+ all_embeddings.extend(item.embedding for item in response.data)
90
+
91
+ embeddings_array = np.array(all_embeddings)
87
92
 
88
93
  # Normalize embeddings for cosine similarity with FAISS IndexFlatIP
89
- # This is critical: FAISS IndexFlatIP uses inner product which only works
90
- # as cosine similarity when vectors are normalized to unit length
91
94
  norms = np.linalg.norm(embeddings_array, axis=1, keepdims=True)
92
- # Avoid division by zero (though rare for real embeddings)
93
95
  norms = np.where(norms == 0, 1, norms)
94
96
  normalized_embeddings = embeddings_array / norms
95
97
 
@@ -97,6 +99,7 @@ class OpenAIEmbeddingAdapter(EmbeddingProviderPort):
97
99
  "OpenAI embeddings generated and normalized",
98
100
  model=self.model,
99
101
  texts_count=len(processed_texts),
102
+ batches=((len(processed_texts) - 1) // batch_size) + 1,
100
103
  dimension=normalized_embeddings.shape[1],
101
104
  )
102
105
 
@@ -2064,7 +2064,7 @@ wheels = [
2064
2064
 
2065
2065
  [[package]]
2066
2066
  name = "nlp2sql"
2067
- version = "0.2.0rc11"
2067
+ version = "0.2.0rc12"
2068
2068
  source = { editable = "." }
2069
2069
  dependencies = [
2070
2070
  { name = "anthropic" },
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes