diff --git a/CHANGELOG.md b/CHANGELOG.md index 04a4150..dbfd5d1 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,6 +4,39 @@ All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/). +## [1.0.0] - 2026-01-17 + +### 🎉 First Stable Release + +expressql is now production-ready! This release marks API stability and commitment to backward compatibility. + +### Added +- **Python 3.8 - 3.14 support** with full CI/CD testing across all versions +- Ecosystem documentation linking to recordsQL and tablesQLite + +### Changed +- Updated development status from Beta to Production/Stable +- Comprehensive documentation updates with ecosystem links +- Clarified package scope and integration patterns + +### Notes +- All core features from 0.3.x are stable and tested +- Comprehensive test coverage with pytest +- Full Sphinx documentation available +- Zero open issues + +## [0.3.9] - 2026-01-15 + +### Changed +- Fix negation features +- Modernize project structure with tests and docstrings +- Fix NotIn.__new__ recursion bug +- Fix NULL comparison, float precision, and API documentation +- Improve condition parsing for IN, LIKE, and BETWEEN +- Add comprehensive Sphinx documentation + +**Full Changelog**: https://github.com/Grayjou/expressql/commits/0.3.9 + ## [0.1.0] - 2025-05-04 ### Added - Initial release of `expressql`. diff --git a/README.md b/README.md index 8136686..3764c93 100644 --- a/README.md +++ b/README.md @@ -9,6 +9,8 @@ **expressql** is a flexible, Pythonic Domain-Specific Language (DSL) for constructing complex SQL conditions and expressions safely and expressively. It is designed to reduce boilerplate, prevent common SQL mistakes, and allow arithmetic, logical, and chained comparisons directly in Python syntax. +**Supports Python 3.8 through 3.14** with comprehensive test coverage across all versions. + --- ## 🚀 Features @@ -26,6 +28,18 @@ It is designed to reduce boilerplate, prevent common SQL mistakes, and allow ari --- +## 🔗 Ecosystem + +**expressql** is part of a complete SQL toolkit for Python: + +- **expressql** (this package) - Build SQL expressions and conditions with safe, intuitive syntax +- **[recordsQL](https://github.com/Grayjou/recordsQL)** - Full query builder for DML operations (SELECT, INSERT, UPDATE, DELETE, JOIN, WITH) +- **[tablesQLite](https://github.com/Grayjou/tablesQLite)** - SQLite schema management and DDL operations (CREATE TABLE, ALTER TABLE, migrations) + +Use them independently or together for a complete, type-safe SQL solution. + +--- + ## ⚡ Quick Example ```python @@ -218,7 +232,11 @@ The documentation includes: ## FAQ **Why doesn't expressql include full query builders?** -This module focuses on expressions and conditions. For record queries with SELECT, UPDATE, etc, with joins and so on, I have made recordsql and am working on tablesQLite +expressql focuses specifically on expressions and conditions - the building blocks of SQL queries. For complete query building: +- Use **[recordsQL](https://pypi.org/project/recordsql/)** for DML operations (SELECT, INSERT, UPDATE, DELETE) +- Use **[tablesQLite](https://pypi.org/project/tablesqlite/)** for DDL operations (CREATE TABLE, schema management) + +This modular approach lets you use only what you need, or combine all three for a complete SQL solution. **Can you make the column name validation more permissive?** In most cases, strict column validation prevents SQL injection or typos. However, I have a version that does a simpler check and allows passing forgiven characters. If it proves relevant, I will probably update it. @@ -240,11 +258,10 @@ I'm especially interested in ideas for better query builders and integrations wi ## Roadmap -- 📌 More built-in SQL functions (`expressql.functions`) -- 📌 Chain-aware logical optimizations -- 📌 Full Query Builder integration (maybe `expressql-querybuilder`) -- 📌 Async support and better placeholder systems (for more DB engines) -- 📌 Better error tracing and SQL preview options +- 🌌 More built-in SQL functions (`expressql.functions`) +- 🌌 Chain-aware logical optimizations +- 🌌 Better error tracing and SQL preview options +- 🌌 Performance optimizations for complex expression trees ## License diff --git a/docs/source/conf.py b/docs/source/conf.py index 1f7a4b5..bdd6167 100644 --- a/docs/source/conf.py +++ b/docs/source/conf.py @@ -13,8 +13,8 @@ project = 'ExpressQL' copyright = '2026, Grayjou' author = 'Grayjou' -release = '0.3.7' -version = '0.3.7' +release = '1.0.0' +version = '1.0.0' # -- General configuration --------------------------------------------------- # https://www.sphinx-doc.org/en/master/usage/configuration.html#general-configuration diff --git a/pyproject.toml b/pyproject.toml index 72f599b..ebe98a5 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta" [project] name = "expressql" -version = "0.3.9" +version = "1.0.0" description = "A Pythonic DSL for SQL conditions and expressions." readme = "README.md" license = { file = "LICENSE" } @@ -13,7 +13,7 @@ authors = [ ] requires-python = ">=3.8" classifiers = [ - "Development Status :: 4 - Beta", + "Development Status :: 5 - Production/Stable", "Intended Audience :: Developers", "Programming Language :: Python :: 3", "Programming Language :: Python :: 3.8",