Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
33 changes: 33 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -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`.
Expand Down
29 changes: 23 additions & 6 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand All @@ -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
Expand Down Expand Up @@ -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.
Expand All @@ -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

Expand Down
4 changes: 2 additions & 2 deletions docs/source/conf.py
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
4 changes: 2 additions & 2 deletions pyproject.toml
Original file line number Diff line number Diff line change
Expand Up @@ -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" }
Expand All @@ -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",
Expand Down