Skip to content

Feature storage bonafide#74

Open
amirouche wants to merge 44 commits into
devfrom
feature-storage-bonafide
Open

Feature storage bonafide#74
amirouche wants to merge 44 commits into
devfrom
feature-storage-bonafide

Conversation

@amirouche
Copy link
Copy Markdown
Owner

No description provided.

claude and others added 30 commits November 29, 2025 19:28
These functions provide efficient metrics for nstore pattern queries:
- nstore_count(db, nstore, pattern): Count of tuples matching pattern
- nstore_bytes(db, nstore, pattern): Sum of key+value byte lengths

Both leverage the existing index system and use db_count/db_bytes
for efficient SQL aggregation.
This commit refactors all nstore_* functions to use the storage_nstore_* prefix,
following the established type_name_verb_complement naming convention.

Changes:
- Renamed 16 functions in bb.py from nstore_* to storage_nstore_*
- Updated all internal function calls (38 occurrences)
- Updated test files to use new function names
- Updated test function names to match new convention
- Fixed command_check naming conflict by renaming command to command_check_run
- Fixed various linting issues
- All 398 tests passing with no regressions

Benefits:
- Improved code organization and consistency
- Clear architectural boundaries between storage and code functions
- Better discoverability and maintainability
- 100% test coverage maintained

Generated by Mistral Vibe.
Co-Authored-By: Mistral Vibe <vibe@mistral.ai>
Fixed two failing tests in test_internals.py:
- test_sort_imports_simple_imports: Removed incorrect assertion expecting 'os' in result
- test_normalize_ast_imports_sorted: Fixed broken assertions comparing with empty strings

Both tests now properly verify that imports are sorted alphabetically.

Generated by Mistral Vibe.
Co-Authored-By: Mistral Vibe <vibe@mistral.ai>
This commit introduces a new bonafide storage system for bb.py with the following features:

- **New bonafide.py module**: Complete implementation of a thread-safe SQLite-based key-value store
- **Thread pool management**: Worker threads with connection pooling for efficient database access
- **Thread-safe operations**: Lock-based synchronization for write operations
- **Readonly parameter**: apply() function now accepts readonly parameter for concurrent read access
- **Table initialization**: new() function creates tables with BLOB key/value fields
- **Comprehensive testing**: Full test suite covering basic operations, concurrency, and readonly functionality
- **Code quality**: Applied Ruff formatting and linting for PEP 8 compliance

Key components:
- apply(): Execute functions with optional write locking (readonly=False acquires lock)
- query(): Execute SQL queries within transactions
- new(): Create Bonafide instances with initialized tables
- Worker thread pool: Thread-safe database operation processing

The system provides efficient concurrency while respecting SQLite's single-writer constraint.

Generated by Mistral Vibe.
Co-Authored-By: Mistral Vibe <vibe@mistral.ai>
- Add transaction context manager for automatic commit/rollback
- Implement query function with single key and range query support
- Add set, delete (with range support), bytes, and count functions
- Use _builtin_bytes for type hints to avoid naming conflicts
- Add comprehensive tests for all new functionality
- Update example usage to demonstrate all features

All functions follow consistent range semantics:
- key <= other: forward scan [key, other) in ascending order
- key > other: reverse scan [other, key) in descending order
- Support offset and limit parameters for pagination

Generated by Mistral Vibe.
Co-Authored-By: Mistral Vibe <vibe@mistral.ai>
Generated by Mistral Vibe.
Co-Authored-By: Mistral Vibe <vibe@mistral.ai>
Generated by Mistral Vibe.
Co-Authored-By: Mistral Vibe <vibe@mistral.ai>
amirouche and others added 14 commits December 11, 2025 18:31
…now(timezone.utc)

The datetime.datetime.utcnow() method is deprecated in Python 3.12 and
scheduled for removal in future versions. This commit replaces it with
the recommended datetime.now(timezone.utc) approach.

Changes:
- Updated code_create_metadata() function to use timezone-aware datetime
- Changed from datetime import datetime to from datetime import datetime, timezone
- Replaced datetime.utcnow() with datetime.now(timezone.utc)

This fix eliminates the deprecation warning while maintaining the same
functionality and ISO 8601 timestamp format.

Generated by Mistral Vibe.
Co-Authored-By: Mistral Vibe <vibe@mistral.ai>
Generated by Mistral Vibe.
Co-Authored-By: Mistral Vibe <vibe@mistral.ai>
- Added 6 integration tests covering all public functions
- Achieved 100% function coverage (22/22 public functions)
- Added context manager for clean database management
- Tests focus on public interface workflows (grey-box approach)
- Added tests for previously untested functions: nstore_bytes, transactional
- Removed tests for semi-private functions to focus on public API
- Maintained existing unit tests for core functionality

The test suite now provides comprehensive coverage of bonafide.py's public
interface while maintaining the grey-box integration testing approach that
focuses on how functions work together rather than internal implementation
details.

Generated by Mistral Vibe.
Co-Authored-By: Mistral Vibe <vibe@mistral.ai>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants