π Bug Fixes
Parser and Lexer Improvements
-
Fixed lexer keyword matching: Keywords are no longer incorrectly identified within valid identifiers
- Example:
inventoryis now correctly parsed instead of being split intoIN+ventory - This resolves parsing errors for table/column names containing SQL keywords
- Example:
-
Fixed operator precedence: Expression parsing now correctly respects operator precedence
- Logical operators (AND, OR) now have lower precedence than comparison operators
price > 10 AND stock > 0is now correctly parsed as(price > 10) AND (stock > 0)- Fixes "Unsupported types for AND" errors
-
Added pydantic to requirements.txt: Resolves missing dependency for Pydantic model support
β¨ New Features
CI/CD Pipeline
- GitHub Actions workflow with automated quality checks on every PR
- Multi-version testing: Tests run on Python 3.9, 3.10, 3.11, and 3.12
- Code linting: Ruff enforces consistent code style and PEP 8 compliance
- Type checking: Pyright catches type-related bugs
- Coverage reporting: Optional Codecov integration
Development Tools
- Added
requirements-dev.txtwith pytest, pytest-cov, ruff, and pyright - Added
ruff.tomlconfiguration for linting and formatting - Added
pyrightconfig.jsonfor type checking
π§ Configuration Changes
-
Minimum Python version: Set to 3.9+ (was 3.8+)
- Required due to modern type hint syntax in the codebase
-
Branch protection: Configured for
mainbranch- Blocks direct pushes (PRs only)
- Requires 7 status checks to pass before merge
- Auto-deletes branches after merge
π Test Coverage
- β 190 tests passing across 4 Python versions
- β All code passes linting (Ruff)
- β All code passes type checking (Pyright)
π Related PRs
- #1 - Fix operator precedence and lexer keyword matching
- #2 - Add CI/CD pipeline with pytest, ruff, and pyright
π¦ Installation
pip install abstra-json-sql==0.0.12π Credits
π€ Generated with Claude Code
Co-Authored-By: Claude noreply@anthropic.com