nlp2sql 0.2.0rc13__tar.gz → 0.2.0rc14__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.
- nlp2sql-0.2.0rc14/.github/workflows/ci.yml +84 -0
- {nlp2sql-0.2.0rc13 → nlp2sql-0.2.0rc14}/.gitignore +1 -0
- nlp2sql-0.2.0rc14/CHANGELOG.md +43 -0
- {nlp2sql-0.2.0rc13 → nlp2sql-0.2.0rc14}/PKG-INFO +4 -2
- {nlp2sql-0.2.0rc13 → nlp2sql-0.2.0rc14}/docker/docker-compose.yml +1 -1
- {nlp2sql-0.2.0rc13 → nlp2sql-0.2.0rc14}/mcp_server/__init__.py +1 -1
- {nlp2sql-0.2.0rc13 → nlp2sql-0.2.0rc14}/mcp_server/pyproject.toml +2 -2
- {nlp2sql-0.2.0rc13 → nlp2sql-0.2.0rc14}/pyproject.toml +2 -1
- {nlp2sql-0.2.0rc13 → nlp2sql-0.2.0rc14}/src/nlp2sql/__init__.py +1 -1
- {nlp2sql-0.2.0rc13 → nlp2sql-0.2.0rc14}/src/nlp2sql/adapters/__init__.py +8 -0
- nlp2sql-0.2.0rc14/src/nlp2sql/adapters/pgvector_example_repository.py +489 -0
- {nlp2sql-0.2.0rc13 → nlp2sql-0.2.0rc14}/src/nlp2sql/config/settings.py +1 -1
- {nlp2sql-0.2.0rc13 → nlp2sql-0.2.0rc14}/tests/conftest.py +15 -2
- nlp2sql-0.2.0rc14/tests/test_pgvector_example_repository.py +386 -0
- {nlp2sql-0.2.0rc13 → nlp2sql-0.2.0rc14}/uv.lock +20 -2
- nlp2sql-0.2.0rc13/.github/workflows/ci.yml +0 -33
- {nlp2sql-0.2.0rc13 → nlp2sql-0.2.0rc14}/.claude/commands/db.md +0 -0
- {nlp2sql-0.2.0rc13 → nlp2sql-0.2.0rc14}/.claude/commands/quality.md +0 -0
- {nlp2sql-0.2.0rc13 → nlp2sql-0.2.0rc14}/.claude/commands/test.md +0 -0
- {nlp2sql-0.2.0rc13 → nlp2sql-0.2.0rc14}/.claude/rules/adapters.md +0 -0
- {nlp2sql-0.2.0rc13 → nlp2sql-0.2.0rc14}/.claude/rules/architecture.md +0 -0
- {nlp2sql-0.2.0rc13 → nlp2sql-0.2.0rc14}/.claude/rules/python-style.md +0 -0
- {nlp2sql-0.2.0rc13 → nlp2sql-0.2.0rc14}/.claude/rules/testing.md +0 -0
- {nlp2sql-0.2.0rc13 → nlp2sql-0.2.0rc14}/.claude/settings.json +0 -0
- {nlp2sql-0.2.0rc13 → nlp2sql-0.2.0rc14}/.github/ISSUE_TEMPLATE/bug_report.md +0 -0
- {nlp2sql-0.2.0rc13 → nlp2sql-0.2.0rc14}/.github/ISSUE_TEMPLATE/feature_request.md +0 -0
- {nlp2sql-0.2.0rc13 → nlp2sql-0.2.0rc14}/.github/workflows/publish-pypi.yml +0 -0
- {nlp2sql-0.2.0rc13 → nlp2sql-0.2.0rc14}/.github/workflows/publish-testpypi.yml +0 -0
- {nlp2sql-0.2.0rc13 → nlp2sql-0.2.0rc14}/.mcp.json.example +0 -0
- {nlp2sql-0.2.0rc13 → nlp2sql-0.2.0rc14}/.python-version +0 -0
- {nlp2sql-0.2.0rc13 → nlp2sql-0.2.0rc14}/CLAUDE.md +0 -0
- {nlp2sql-0.2.0rc13 → nlp2sql-0.2.0rc14}/CONTRIBUTING.md +0 -0
- {nlp2sql-0.2.0rc13 → nlp2sql-0.2.0rc14}/LICENSE +0 -0
- {nlp2sql-0.2.0rc13 → nlp2sql-0.2.0rc14}/README.md +0 -0
- {nlp2sql-0.2.0rc13 → nlp2sql-0.2.0rc14}/SECURITY.md +0 -0
- {nlp2sql-0.2.0rc13 → nlp2sql-0.2.0rc14}/assets/nlp2sql-logo.png +0 -0
- {nlp2sql-0.2.0rc13 → nlp2sql-0.2.0rc14}/benchmarks/enterprise_benchmark_results.json +0 -0
- {nlp2sql-0.2.0rc13 → nlp2sql-0.2.0rc14}/docker/.env.example +0 -0
- {nlp2sql-0.2.0rc13 → nlp2sql-0.2.0rc14}/docker/README.md +0 -0
- {nlp2sql-0.2.0rc13 → nlp2sql-0.2.0rc14}/docker/get-db-urls.sh +0 -0
- {nlp2sql-0.2.0rc13 → nlp2sql-0.2.0rc14}/docker/init-schema.sql +0 -0
- {nlp2sql-0.2.0rc13 → nlp2sql-0.2.0rc14}/docker/large-schema.sql +0 -0
- {nlp2sql-0.2.0rc13 → nlp2sql-0.2.0rc14}/docker/localstack-init.sh +0 -0
- {nlp2sql-0.2.0rc13 → nlp2sql-0.2.0rc14}/docker/test-redshift.sh +0 -0
- {nlp2sql-0.2.0rc13 → nlp2sql-0.2.0rc14}/docs/API.md +0 -0
- {nlp2sql-0.2.0rc13 → nlp2sql-0.2.0rc14}/docs/ARCHITECTURE.md +0 -0
- {nlp2sql-0.2.0rc13 → nlp2sql-0.2.0rc14}/docs/CONFIGURATION.md +0 -0
- {nlp2sql-0.2.0rc13 → nlp2sql-0.2.0rc14}/docs/ENTERPRISE.md +0 -0
- {nlp2sql-0.2.0rc13 → nlp2sql-0.2.0rc14}/docs/Redshift.md +0 -0
- {nlp2sql-0.2.0rc13 → nlp2sql-0.2.0rc14}/examples/README.md +0 -0
- {nlp2sql-0.2.0rc13 → nlp2sql-0.2.0rc14}/examples/advanced/test_multiple_providers.py +0 -0
- {nlp2sql-0.2.0rc13 → nlp2sql-0.2.0rc14}/examples/advanced/test_simple_api.py +0 -0
- {nlp2sql-0.2.0rc13 → nlp2sql-0.2.0rc14}/examples/database_specific/test_odoo_integration.py +0 -0
- {nlp2sql-0.2.0rc13 → nlp2sql-0.2.0rc14}/examples/default_examples.json +0 -0
- {nlp2sql-0.2.0rc13 → nlp2sql-0.2.0rc14}/examples/documentation/real_world_example.py +0 -0
- {nlp2sql-0.2.0rc13 → nlp2sql-0.2.0rc14}/examples/getting_started/basic_usage.py +0 -0
- {nlp2sql-0.2.0rc13 → nlp2sql-0.2.0rc14}/examples/getting_started/simple_demo.py +0 -0
- {nlp2sql-0.2.0rc13 → nlp2sql-0.2.0rc14}/examples/getting_started/test_api_setup.py +0 -0
- {nlp2sql-0.2.0rc13 → nlp2sql-0.2.0rc14}/examples/schema_management/test_auto_schema.py +0 -0
- {nlp2sql-0.2.0rc13 → nlp2sql-0.2.0rc14}/examples/schema_management/test_schema_filters_comprehensive.py +0 -0
- {nlp2sql-0.2.0rc13 → nlp2sql-0.2.0rc14}/examples/strands-fastapi-agent/.dockerignore +0 -0
- {nlp2sql-0.2.0rc13 → nlp2sql-0.2.0rc14}/examples/strands-fastapi-agent/.env.example +0 -0
- {nlp2sql-0.2.0rc13 → nlp2sql-0.2.0rc14}/examples/strands-fastapi-agent/DOCKER_README.md +0 -0
- {nlp2sql-0.2.0rc13 → nlp2sql-0.2.0rc14}/examples/strands-fastapi-agent/DOCKER_SETUP.md +0 -0
- {nlp2sql-0.2.0rc13 → nlp2sql-0.2.0rc14}/examples/strands-fastapi-agent/DOCKER_TESTING_SUMMARY.md +0 -0
- {nlp2sql-0.2.0rc13 → nlp2sql-0.2.0rc14}/examples/strands-fastapi-agent/Dockerfile +0 -0
- {nlp2sql-0.2.0rc13 → nlp2sql-0.2.0rc14}/examples/strands-fastapi-agent/INDEX.md +0 -0
- {nlp2sql-0.2.0rc13 → nlp2sql-0.2.0rc14}/examples/strands-fastapi-agent/README.md +0 -0
- {nlp2sql-0.2.0rc13 → nlp2sql-0.2.0rc14}/examples/strands-fastapi-agent/docker/init-ecommerce-schema.sql +0 -0
- {nlp2sql-0.2.0rc13 → nlp2sql-0.2.0rc14}/examples/strands-fastapi-agent/docker-compose.yml +0 -0
- {nlp2sql-0.2.0rc13 → nlp2sql-0.2.0rc14}/examples/strands-fastapi-agent/main.py +0 -0
- {nlp2sql-0.2.0rc13 → nlp2sql-0.2.0rc14}/examples/strands-fastapi-agent/pyproject.toml +0 -0
- {nlp2sql-0.2.0rc13 → nlp2sql-0.2.0rc14}/examples/strands-fastapi-agent/test-docker-endpoints.sh +0 -0
- {nlp2sql-0.2.0rc13 → nlp2sql-0.2.0rc14}/install-dev.sh +0 -0
- {nlp2sql-0.2.0rc13 → nlp2sql-0.2.0rc14}/mcp_server/README.md +0 -0
- {nlp2sql-0.2.0rc13 → nlp2sql-0.2.0rc14}/mcp_server/example_config.json +0 -0
- {nlp2sql-0.2.0rc13 → nlp2sql-0.2.0rc14}/mcp_server/server.py +0 -0
- {nlp2sql-0.2.0rc13 → nlp2sql-0.2.0rc14}/src/nlp2sql/adapters/anthropic_adapter.py +0 -0
- {nlp2sql-0.2.0rc13 → nlp2sql-0.2.0rc14}/src/nlp2sql/adapters/default_error_classifier.py +0 -0
- {nlp2sql-0.2.0rc13 → nlp2sql-0.2.0rc14}/src/nlp2sql/adapters/default_repair_policy.py +0 -0
- {nlp2sql-0.2.0rc13 → nlp2sql-0.2.0rc14}/src/nlp2sql/adapters/dict_semantic_resolver.py +0 -0
- {nlp2sql-0.2.0rc13 → nlp2sql-0.2.0rc14}/src/nlp2sql/adapters/file_semantic_resolver.py +0 -0
- {nlp2sql-0.2.0rc13 → nlp2sql-0.2.0rc14}/src/nlp2sql/adapters/gemini_adapter.py +0 -0
- {nlp2sql-0.2.0rc13 → nlp2sql-0.2.0rc14}/src/nlp2sql/adapters/local_embedding_adapter.py +0 -0
- {nlp2sql-0.2.0rc13 → nlp2sql-0.2.0rc14}/src/nlp2sql/adapters/noop_semantic_resolver.py +0 -0
- {nlp2sql-0.2.0rc13 → nlp2sql-0.2.0rc14}/src/nlp2sql/adapters/noop_semantic_validator.py +0 -0
- {nlp2sql-0.2.0rc13 → nlp2sql-0.2.0rc14}/src/nlp2sql/adapters/openai_adapter.py +0 -0
- {nlp2sql-0.2.0rc13 → nlp2sql-0.2.0rc14}/src/nlp2sql/adapters/openai_embedding_adapter.py +0 -0
- {nlp2sql-0.2.0rc13 → nlp2sql-0.2.0rc14}/src/nlp2sql/adapters/postgres_repository.py +0 -0
- {nlp2sql-0.2.0rc13 → nlp2sql-0.2.0rc14}/src/nlp2sql/adapters/redshift_adapter.py +0 -0
- {nlp2sql-0.2.0rc13 → nlp2sql-0.2.0rc14}/src/nlp2sql/adapters/regex_query_validator.py +0 -0
- {nlp2sql-0.2.0rc13 → nlp2sql-0.2.0rc14}/src/nlp2sql/adapters/schema_repository_execution_adapter.py +0 -0
- {nlp2sql-0.2.0rc13 → nlp2sql-0.2.0rc14}/src/nlp2sql/cli.py +0 -0
- {nlp2sql-0.2.0rc13 → nlp2sql-0.2.0rc14}/src/nlp2sql/client.py +0 -0
- {nlp2sql-0.2.0rc13 → nlp2sql-0.2.0rc14}/src/nlp2sql/config/__init__.py +0 -0
- {nlp2sql-0.2.0rc13 → nlp2sql-0.2.0rc14}/src/nlp2sql/core/__init__.py +0 -0
- {nlp2sql-0.2.0rc13 → nlp2sql-0.2.0rc14}/src/nlp2sql/core/database_prompts.py +0 -0
- {nlp2sql-0.2.0rc13 → nlp2sql-0.2.0rc14}/src/nlp2sql/core/entities.py +0 -0
- {nlp2sql-0.2.0rc13 → nlp2sql-0.2.0rc14}/src/nlp2sql/core/provider_config.py +0 -0
- {nlp2sql-0.2.0rc13 → nlp2sql-0.2.0rc14}/src/nlp2sql/core/result.py +0 -0
- {nlp2sql-0.2.0rc13 → nlp2sql-0.2.0rc14}/src/nlp2sql/core/runtime.py +0 -0
- {nlp2sql-0.2.0rc13 → nlp2sql-0.2.0rc14}/src/nlp2sql/core/sql_keywords.py +0 -0
- {nlp2sql-0.2.0rc13 → nlp2sql-0.2.0rc14}/src/nlp2sql/core/sql_safety.py +0 -0
- {nlp2sql-0.2.0rc13 → nlp2sql-0.2.0rc14}/src/nlp2sql/exceptions/__init__.py +0 -0
- {nlp2sql-0.2.0rc13 → nlp2sql-0.2.0rc14}/src/nlp2sql/factories/__init__.py +0 -0
- {nlp2sql-0.2.0rc13 → nlp2sql-0.2.0rc14}/src/nlp2sql/factories/repository_factory.py +0 -0
- {nlp2sql-0.2.0rc13 → nlp2sql-0.2.0rc14}/src/nlp2sql/ports/__init__.py +0 -0
- {nlp2sql-0.2.0rc13 → nlp2sql-0.2.0rc14}/src/nlp2sql/ports/ai_provider.py +0 -0
- {nlp2sql-0.2.0rc13 → nlp2sql-0.2.0rc14}/src/nlp2sql/ports/cache.py +0 -0
- {nlp2sql-0.2.0rc13 → nlp2sql-0.2.0rc14}/src/nlp2sql/ports/embedding_provider.py +0 -0
- {nlp2sql-0.2.0rc13 → nlp2sql-0.2.0rc14}/src/nlp2sql/ports/error_classifier.py +0 -0
- {nlp2sql-0.2.0rc13 → nlp2sql-0.2.0rc14}/src/nlp2sql/ports/example_repository.py +0 -0
- {nlp2sql-0.2.0rc13 → nlp2sql-0.2.0rc14}/src/nlp2sql/ports/query_execution.py +0 -0
- {nlp2sql-0.2.0rc13 → nlp2sql-0.2.0rc14}/src/nlp2sql/ports/query_optimizer.py +0 -0
- {nlp2sql-0.2.0rc13 → nlp2sql-0.2.0rc14}/src/nlp2sql/ports/query_safety.py +0 -0
- {nlp2sql-0.2.0rc13 → nlp2sql-0.2.0rc14}/src/nlp2sql/ports/query_validator.py +0 -0
- {nlp2sql-0.2.0rc13 → nlp2sql-0.2.0rc14}/src/nlp2sql/ports/repair_policy.py +0 -0
- {nlp2sql-0.2.0rc13 → nlp2sql-0.2.0rc14}/src/nlp2sql/ports/schema_repository.py +0 -0
- {nlp2sql-0.2.0rc13 → nlp2sql-0.2.0rc14}/src/nlp2sql/ports/schema_strategy.py +0 -0
- {nlp2sql-0.2.0rc13 → nlp2sql-0.2.0rc14}/src/nlp2sql/ports/semantic_resolver.py +0 -0
- {nlp2sql-0.2.0rc13 → nlp2sql-0.2.0rc14}/src/nlp2sql/ports/semantic_validator.py +0 -0
- {nlp2sql-0.2.0rc13 → nlp2sql-0.2.0rc14}/src/nlp2sql/schema/__init__.py +0 -0
- {nlp2sql-0.2.0rc13 → nlp2sql-0.2.0rc14}/src/nlp2sql/schema/analyzer.py +0 -0
- {nlp2sql-0.2.0rc13 → nlp2sql-0.2.0rc14}/src/nlp2sql/schema/embedding_manager.py +0 -0
- {nlp2sql-0.2.0rc13 → nlp2sql-0.2.0rc14}/src/nlp2sql/schema/example_loader.py +0 -0
- {nlp2sql-0.2.0rc13 → nlp2sql-0.2.0rc14}/src/nlp2sql/schema/example_store.py +0 -0
- {nlp2sql-0.2.0rc13 → nlp2sql-0.2.0rc14}/src/nlp2sql/schema/manager.py +0 -0
- {nlp2sql-0.2.0rc13 → nlp2sql-0.2.0rc14}/src/nlp2sql/services/__init__.py +0 -0
- {nlp2sql-0.2.0rc13 → nlp2sql-0.2.0rc14}/src/nlp2sql/services/example_selection_service.py +0 -0
- {nlp2sql-0.2.0rc13 → nlp2sql-0.2.0rc14}/src/nlp2sql/services/prompt_assembly_service.py +0 -0
- {nlp2sql-0.2.0rc13 → nlp2sql-0.2.0rc14}/src/nlp2sql/services/query_analysis_service.py +0 -0
- {nlp2sql-0.2.0rc13 → nlp2sql-0.2.0rc14}/src/nlp2sql/services/query_repair_service.py +0 -0
- {nlp2sql-0.2.0rc13 → nlp2sql-0.2.0rc14}/src/nlp2sql/services/query_service.py +0 -0
- {nlp2sql-0.2.0rc13 → nlp2sql-0.2.0rc14}/src/nlp2sql/services/semantic_resolution_service.py +0 -0
- {nlp2sql-0.2.0rc13 → nlp2sql-0.2.0rc14}/src/nlp2sql/services/semantic_validation_service.py +0 -0
- {nlp2sql-0.2.0rc13 → nlp2sql-0.2.0rc14}/src/nlp2sql/services/sql_intent_planning_service.py +0 -0
- {nlp2sql-0.2.0rc13 → nlp2sql-0.2.0rc14}/src/nlp2sql/utils/__init__.py +0 -0
- {nlp2sql-0.2.0rc13 → nlp2sql-0.2.0rc14}/src/nlp2sql/utils/artifact_loader.py +0 -0
- {nlp2sql-0.2.0rc13 → nlp2sql-0.2.0rc14}/src/nlp2sql/utils/helpers.py +0 -0
- {nlp2sql-0.2.0rc13 → nlp2sql-0.2.0rc14}/src/nlp2sql/utils/semantic_prompt.py +0 -0
- {nlp2sql-0.2.0rc13 → nlp2sql-0.2.0rc14}/src/nlp2sql/utils/storage.py +0 -0
- {nlp2sql-0.2.0rc13 → nlp2sql-0.2.0rc14}/test_tmp/.gitignore +0 -0
- {nlp2sql-0.2.0rc13 → nlp2sql-0.2.0rc14}/tests/mcp/__init__.py +0 -0
- {nlp2sql-0.2.0rc13 → nlp2sql-0.2.0rc14}/tests/mcp/test_sql_security.py +0 -0
- {nlp2sql-0.2.0rc13 → nlp2sql-0.2.0rc14}/tests/test_artifact_loader.py +0 -0
- {nlp2sql-0.2.0rc13 → nlp2sql-0.2.0rc14}/tests/test_basic.py +0 -0
- {nlp2sql-0.2.0rc13 → nlp2sql-0.2.0rc14}/tests/test_batch_scoring.py +0 -0
- {nlp2sql-0.2.0rc13 → nlp2sql-0.2.0rc14}/tests/test_cli_semantic_support.py +0 -0
- {nlp2sql-0.2.0rc13 → nlp2sql-0.2.0rc14}/tests/test_client_hooks.py +0 -0
- {nlp2sql-0.2.0rc13 → nlp2sql-0.2.0rc14}/tests/test_column_validation.py +0 -0
- {nlp2sql-0.2.0rc13 → nlp2sql-0.2.0rc14}/tests/test_database_prompts.py +0 -0
- {nlp2sql-0.2.0rc13 → nlp2sql-0.2.0rc14}/tests/test_dsl_integration.py +0 -0
- {nlp2sql-0.2.0rc13 → nlp2sql-0.2.0rc14}/tests/test_embedding_manager.py +0 -0
- {nlp2sql-0.2.0rc13 → nlp2sql-0.2.0rc14}/tests/test_integration.py +0 -0
- {nlp2sql-0.2.0rc13 → nlp2sql-0.2.0rc14}/tests/test_postgres_integration.py +0 -0
- {nlp2sql-0.2.0rc13 → nlp2sql-0.2.0rc14}/tests/test_redshift_integration.py +0 -0
- {nlp2sql-0.2.0rc13 → nlp2sql-0.2.0rc14}/tests/test_repository_cache.py +0 -0
- {nlp2sql-0.2.0rc13 → nlp2sql-0.2.0rc14}/tests/test_repository_factory.py +0 -0
- {nlp2sql-0.2.0rc13 → nlp2sql-0.2.0rc14}/tests/test_retrieval_pipeline.py +0 -0
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
name: CI
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
push:
|
|
5
|
+
branches: [main, develop]
|
|
6
|
+
pull_request:
|
|
7
|
+
branches: [main, develop]
|
|
8
|
+
|
|
9
|
+
jobs:
|
|
10
|
+
test:
|
|
11
|
+
runs-on: ubuntu-latest
|
|
12
|
+
|
|
13
|
+
steps:
|
|
14
|
+
- name: Checkout
|
|
15
|
+
uses: actions/checkout@v4
|
|
16
|
+
|
|
17
|
+
- name: Set up Python 3.12
|
|
18
|
+
uses: actions/setup-python@v5
|
|
19
|
+
with:
|
|
20
|
+
python-version: '3.12'
|
|
21
|
+
|
|
22
|
+
- name: Install uv
|
|
23
|
+
run: python -m pip install uv
|
|
24
|
+
|
|
25
|
+
- name: Install dependencies
|
|
26
|
+
run: |
|
|
27
|
+
uv pip install --system .
|
|
28
|
+
uv pip install --system ".[dev]"
|
|
29
|
+
|
|
30
|
+
- name: Unit tests
|
|
31
|
+
env:
|
|
32
|
+
PYTHONPATH: src
|
|
33
|
+
run: pytest -m "not integration and not llm" -q
|
|
34
|
+
|
|
35
|
+
pgvector-integration:
|
|
36
|
+
runs-on: ubuntu-latest
|
|
37
|
+
|
|
38
|
+
services:
|
|
39
|
+
postgres:
|
|
40
|
+
image: pgvector/pgvector:pg16
|
|
41
|
+
env:
|
|
42
|
+
POSTGRES_USER: testuser
|
|
43
|
+
POSTGRES_PASSWORD: testpass
|
|
44
|
+
POSTGRES_DB: testdb
|
|
45
|
+
ports:
|
|
46
|
+
- 5432:5432
|
|
47
|
+
options: >-
|
|
48
|
+
--health-cmd "pg_isready -U testuser -d testdb"
|
|
49
|
+
--health-interval 10s
|
|
50
|
+
--health-timeout 5s
|
|
51
|
+
--health-retries 5
|
|
52
|
+
|
|
53
|
+
steps:
|
|
54
|
+
- name: Checkout
|
|
55
|
+
uses: actions/checkout@v4
|
|
56
|
+
|
|
57
|
+
- name: Set up Python 3.12
|
|
58
|
+
uses: actions/setup-python@v5
|
|
59
|
+
with:
|
|
60
|
+
python-version: '3.12'
|
|
61
|
+
|
|
62
|
+
- name: Install uv
|
|
63
|
+
run: python -m pip install uv
|
|
64
|
+
|
|
65
|
+
- name: Install dependencies (with pgvector extra)
|
|
66
|
+
run: |
|
|
67
|
+
uv pip install --system ".[dev]"
|
|
68
|
+
uv pip install --system ".[pgvector]"
|
|
69
|
+
|
|
70
|
+
# Scoped to the pgvector adapter suite so the job is self-contained (the
|
|
71
|
+
# broader integration suite needs init-schema.sql / LocalStack Redshift,
|
|
72
|
+
# which are out of scope for this lane). NLP2SQL_REQUIRE_INTEGRATION makes
|
|
73
|
+
# the fixtures FAIL instead of skip, so a misconfigured service goes red
|
|
74
|
+
# rather than green-via-skip (collection != execution).
|
|
75
|
+
- name: pgvector integration tests
|
|
76
|
+
env:
|
|
77
|
+
PYTHONPATH: src
|
|
78
|
+
NLP2SQL_REQUIRE_INTEGRATION: "1"
|
|
79
|
+
NLP2SQL_TEST_POSTGRES_HOST: localhost
|
|
80
|
+
NLP2SQL_TEST_POSTGRES_PORT: "5432"
|
|
81
|
+
NLP2SQL_TEST_POSTGRES_USER: testuser
|
|
82
|
+
NLP2SQL_TEST_POSTGRES_PASS: testpass
|
|
83
|
+
NLP2SQL_TEST_POSTGRES_DB: testdb
|
|
84
|
+
run: pytest tests/test_pgvector_example_repository.py -m integration -q
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
# Changelog
|
|
2
|
+
|
|
3
|
+
All notable changes to this project are documented in this file.
|
|
4
|
+
|
|
5
|
+
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
|
|
6
|
+
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
|
7
|
+
|
|
8
|
+
## Versioning policy
|
|
9
|
+
|
|
10
|
+
- **MAJOR** — incompatible public API changes (removing/renaming a public symbol
|
|
11
|
+
or changing a port/ABC contract in a non-backward-compatible way).
|
|
12
|
+
- **MINOR** — backward-compatible functionality (new adapters, new optional
|
|
13
|
+
parameters, new optional extras).
|
|
14
|
+
- **PATCH** — backward-compatible bug fixes.
|
|
15
|
+
|
|
16
|
+
Pre-1.0 the project ships release candidates (e.g. `0.2.0rcN`). Public surface
|
|
17
|
+
changes — moving/renaming exported symbols, or adding methods to a published
|
|
18
|
+
port such as `ExampleRepositoryPort` — MUST be recorded under `Unreleased`
|
|
19
|
+
before release and called out as **Breaking** if they affect external
|
|
20
|
+
implementers. Backward-compatible shims are preferred over hard breaks while
|
|
21
|
+
pre-1.0.
|
|
22
|
+
|
|
23
|
+
## [Unreleased]
|
|
24
|
+
|
|
25
|
+
## [0.2.0rc14] - 2026-09-16
|
|
26
|
+
|
|
27
|
+
### Added
|
|
28
|
+
- `PgvectorExampleRepository`: a Postgres + `pgvector` implementation of
|
|
29
|
+
`ExampleRepositoryPort`, an alternative to the on-disk FAISS `ExampleStore`
|
|
30
|
+
for storing and semantically searching few-shot examples. Stores examples in
|
|
31
|
+
a single table with a `namespace` column (per-database isolation via
|
|
32
|
+
`md5(database_url:schema_name)`, byte-identical to `ExampleStore`), cosine
|
|
33
|
+
distance search over an HNSW index, and idempotent `auto_migrate` DDL.
|
|
34
|
+
- Optional `pgvector` extra: `pip install 'nlp2sql[pgvector]'`.
|
|
35
|
+
- CI: a `pgvector-integration` job that runs the adapter's integration tests
|
|
36
|
+
against a `pgvector/pgvector:pg16` service. The job fails (rather than skips)
|
|
37
|
+
when the database or `vector` extension is unavailable
|
|
38
|
+
(`NLP2SQL_REQUIRE_INTEGRATION`).
|
|
39
|
+
|
|
40
|
+
### Changed
|
|
41
|
+
- `docker/docker-compose.yml`: the `postgres` service image is now
|
|
42
|
+
`pgvector/pgvector:pg16` (drop-in replacement for `postgres:16`, adds the
|
|
43
|
+
`vector` extension) so integration tests run out of the box.
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
Metadata-Version: 2.
|
|
1
|
+
Metadata-Version: 2.5
|
|
2
2
|
Name: nlp2sql
|
|
3
|
-
Version: 0.2.
|
|
3
|
+
Version: 0.2.0rc14
|
|
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
|
|
@@ -74,6 +74,8 @@ Requires-Dist: mysql-connector-python>=8.0.0; extra == 'mysql'
|
|
|
74
74
|
Requires-Dist: pymysql>=1.1.0; extra == 'mysql'
|
|
75
75
|
Provides-Extra: oracle
|
|
76
76
|
Requires-Dist: oracledb>=2.0.0; extra == 'oracle'
|
|
77
|
+
Provides-Extra: pgvector
|
|
78
|
+
Requires-Dist: pgvector>=0.2.5; extra == 'pgvector'
|
|
77
79
|
Description-Content-Type: text/markdown
|
|
78
80
|
|
|
79
81
|
<p align="center">
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
[project]
|
|
2
2
|
name = "nlp2sql-mcp"
|
|
3
|
-
version = "0.
|
|
3
|
+
version = "0.2.0rc14"
|
|
4
4
|
description = "MCP server for nlp2sql - Natural Language to SQL conversion"
|
|
5
5
|
readme = "README.md"
|
|
6
6
|
requires-python = ">=3.9"
|
|
@@ -21,4 +21,4 @@ build-backend = "hatchling.build"
|
|
|
21
21
|
[tool.mcp]
|
|
22
22
|
name = "nlp2sql"
|
|
23
23
|
description = "Convert natural language queries to SQL using multiple AI providers"
|
|
24
|
-
version = "0.
|
|
24
|
+
version = "0.2.0rc14"
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
[project]
|
|
2
2
|
name = "nlp2sql"
|
|
3
|
-
version = "0.2.
|
|
3
|
+
version = "0.2.0rc14"
|
|
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"}
|
|
@@ -57,6 +57,7 @@ all-providers = ["anthropic>=0.18.0", "google-generativeai>=0.3.0"]
|
|
|
57
57
|
embeddings-local = ["sentence-transformers>=2.5.0"]
|
|
58
58
|
embeddings-openai = []
|
|
59
59
|
all-embeddings = ["sentence-transformers>=2.5.0"]
|
|
60
|
+
pgvector = ["pgvector>=0.2.5"]
|
|
60
61
|
dev = [
|
|
61
62
|
"pytest>=7.4.0",
|
|
62
63
|
"pytest-asyncio>=0.21.0",
|
|
@@ -46,7 +46,7 @@ from .ports.semantic_validator import SemanticValidatorPort
|
|
|
46
46
|
from .schema.example_store import ExampleStore
|
|
47
47
|
from .services.query_service import QueryGenerationService
|
|
48
48
|
|
|
49
|
-
__version__ = "0.2.
|
|
49
|
+
__version__ = "0.2.0rc14"
|
|
50
50
|
__author__ = "Luis Carbonel"
|
|
51
51
|
__email__ = "devhighlevel@gmail.com"
|
|
52
52
|
|
|
@@ -7,3 +7,11 @@ __all__ = [
|
|
|
7
7
|
"LocalEmbeddingAdapter",
|
|
8
8
|
"OpenAIEmbeddingAdapter",
|
|
9
9
|
]
|
|
10
|
+
|
|
11
|
+
# Optional: pgvector-backed example repository (requires the [pgvector] extra)
|
|
12
|
+
try:
|
|
13
|
+
from .pgvector_example_repository import PgvectorExampleRepository
|
|
14
|
+
except ImportError:
|
|
15
|
+
pass
|
|
16
|
+
else:
|
|
17
|
+
__all__.append("PgvectorExampleRepository")
|