=========
Changelog
=========
All notable changes to Nicolas Cache will be documented in this file.
The format is based on `Keep a Changelog `_,
and this project adheres to `Calendar Versioning `_ (YY.MM.DD).
[Unreleased]
------------
Added
~~~~~
* Redis Sentinel backend for high availability with automatic failover
* Comprehensive test suite with 52 tests covering all backends
* Full documentation for ReadTheDocs deployment
* GitHub Actions CI/CD pipeline for automated testing and releases
* CalVer versioning system (YY.MM.DD format)
* Type hints throughout the codebase
* Support for Python 3.9, 3.10, 3.11, and 3.12
Changed
~~~~~~~
* Migrated from semantic versioning to calendar versioning
* Updated build system to use setuptools-scm for dynamic versioning
* Improved error handling and type safety
[25.07.16] - 2025-07-16
------------------------
Initial Release
~~~~~~~~~~~~~~~
Added
^^^^^
* Core ``Cache`` class with unified interface
* ``MemoryCache`` backend for in-memory caching
* ``RedisCache`` backend with TTL support
* Tag-based cache management system
* Support for complex Python objects via pickle
* Bulk operations via tags
* ``exists()`` method for checking key existence
* ``getall()`` method for retrieving all cache entries
* ``get_by_tag()`` for tag-based retrieval
* ``delete_by_tag()`` for bulk deletion
Features
^^^^^^^^
* **Multiple Backends**: Pluggable backend architecture
* **Tagging System**: Organize cache entries with multiple tags
* **TTL Support**: Automatic expiration for Redis backend
* **Type Safety**: Full type hints for better IDE support
* **Simple API**: Consistent interface across all backends
API
^^^
* ``cache.set(key, value, tags=None, ttl=None)``
* ``cache.get(key)``
* ``cache.delete(key)``
* ``cache.exists(key)``
* ``cache.getall()``
* ``cache.get_by_tag(tag)``
* ``cache.delete_by_tag(tag)``
Documentation
^^^^^^^^^^^^^
* Installation guide
* Quick start tutorial
* Usage examples
* API reference
* Backend comparison
Testing
^^^^^^^
* Unit tests for all backends
* Integration tests for Redis
* Mock tests for Redis Sentinel
* Test coverage reporting
Development
^^^^^^^^^^^
* Linting with ruff
* Type checking with mypy
* Pre-commit hooks support
* Development dependencies management
Migration Guide
---------------
From 0.x to 25.07.16
~~~~~~~~~~~~~~~~~~~~
The initial release uses calendar versioning. If you were using a development version:
1. Update your imports (no changes needed)
2. The API remains the same
3. Version format changed from ``0.1.0`` to ``YY.MM.DD``
Future versions will follow the CalVer format.
Deprecation Policy
------------------
* Features marked as deprecated will be maintained for at least 3 months
* Breaking changes will be clearly documented in the changelog
* Migration guides will be provided for breaking changes
Versioning Policy
-----------------
Nicolas Cache uses Calendar Versioning (CalVer) with the format ``YY.MM.DD``:
* **YY**: Two-digit year (e.g., 25 for 2025)
* **MM**: Two-digit month (e.g., 07 for July)
* **DD**: Two-digit day (e.g., 16)
Multiple releases on the same day append a counter: ``YY.MM.DD.N``
Development versions include commit information: ``YY.MM.DD.devN+gHASH``