зеркало из
https://github.com/docxology/cognitive.git
synced 2025-10-29 20:26:04 +02:00
6.2 KiB
6.2 KiB
API Versioning Guidelines
title: API Versioning Guidelines type: guide status: stable created: 2024-02-06 tags:
- api
- versioning
- guidelines
- compatibility semantic_relations:
- type: implements links: api_documentation
- type: relates links:
Overview
This guide establishes versioning standards for the Cognitive Modeling Framework's API, ensuring compatibility and clear upgrade paths. See api_documentation for general API documentation guidelines.
Version Structure
Semantic Versioning
# @version_format
version_format = {
"major": "Breaking changes", # e.g., 2.0.0
"minor": "New features", # e.g., 1.1.0
"patch": "Bug fixes", # e.g., 1.0.1
"pre_release": "Alpha/Beta/RC", # e.g., 1.0.0-alpha.1
"build": "Build metadata" # e.g., 1.0.0+build.123
}
Version Rules
# @version_rules
versioning_rules = {
"major_change": {
"triggers": [
"Breaking API changes",
"Incompatible behavior changes",
"Major architectural changes"
],
"requirements": [
"Migration guide",
"Deprecation notices",
"Compatibility layer"
]
},
"minor_change": {
"triggers": [
"New features",
"Non-breaking additions",
"Optional capabilities"
],
"requirements": [
"Feature documentation",
"Example updates",
"Test coverage"
]
},
"patch_change": {
"triggers": [
"Bug fixes",
"Performance improvements",
"Documentation updates"
],
"requirements": [
"Change documentation",
"Test cases",
"Regression tests"
]
}
}
API Changes
Breaking Changes
Changes that require a major version increment:
# Before (1.0.0)
def update_beliefs(self, observation: np.ndarray) -> np.ndarray:
"""Update agent beliefs."""
pass
# After (2.0.0)
def update_beliefs(self,
observation: np.ndarray,
precision: float) -> Tuple[np.ndarray, float]:
"""
Update agent beliefs with precision.
See [[belief_updating]] for details.
"""
pass
Non-Breaking Additions
Changes that require a minor version increment:
# Original (1.0.0)
class ActiveInferenceAgent:
def __init__(self):
pass
# Addition (1.1.0)
class ActiveInferenceAgent:
def __init__(self):
pass
def save_state(self) -> dict:
"""
New method for state serialization.
See [[state_management]] for details.
"""
pass
Patch Changes
Changes that require a patch version increment:
# Bug fix (1.0.1)
def compute_free_energy(beliefs: np.ndarray) -> float:
"""
Fixed numerical stability issue.
See [[numerical_stability]] for details.
"""
# Fixed implementation
pass
Deprecation Process
Deprecation Timeline
# @deprecation_timeline
deprecation_process = {
"announcement": {
"timing": "One major version before removal",
"requirements": ["Documentation", "Migration guide"]
},
"warning_phase": {
"duration": "One minor version cycle",
"actions": ["Runtime warnings", "Documentation notices"]
},
"removal": {
"timing": "Next major version",
"requirements": ["Breaking change notice", "Alternative documentation"]
}
}
Deprecation Notices
# Example deprecation warning
def old_method(self):
"""
Deprecated: Will be removed in 2.0.0.
Use new_method() instead.
See [[migration_guide]] for details.
"""
warnings.warn(
"old_method is deprecated and will be removed in 2.0.0. "
"Use new_method instead.",
DeprecationWarning,
stacklevel=2
)
Version Management
Version Tracking
# @version_tracking
version_info = {
"documentation": {
"current_version": "[[api_reference]]",
"previous_versions": "[[api_archive]]",
"migration_guides": "[[migration_guide]]"
},
"compatibility": {
"python_versions": "[[python_compatibility]]",
"dependencies": "[[dependency_matrix]]",
"platforms": "[[platform_support]]"
}
}
Release Process
-
Version Bump
# Update version __version__ = "1.1.0" -
Documentation Update
- Update api_reference
- Update changelog
- Update migration_guide
-
Validation
- Run validation_framework
- Check compatibility_matrix
- Verify documentation_completeness
Compatibility
Python Version Support
# @python_support
python_versions = {
"minimum": "3.8",
"recommended": "3.9+",
"tested": ["3.8", "3.9", "3.10"]
}
Dependency Management
# @dependency_management
dependency_rules = {
"core": {
"numpy": ">=1.20.0",
"scipy": ">=1.7.0"
},
"optional": {
"visualization": {
"matplotlib": ">=3.4.0"
},
"optimization": {
"torch": ">=1.9.0"
}
}
}
Documentation Requirements
Version Documentation
Each version requires:
- Complete api_reference
- Updated example_writing
- changelog entries
- migration_guide (if needed)
Compatibility Documentation
Best Practices
1. Version Control
- Use semantic versioning
- Document all changes
- Maintain changelog
- Provide migration guides
2. Compatibility
- Check dependency impacts
- Test all supported versions
- Document requirements
- Verify integrations
3. Documentation
- Update all affected docs
- Provide upgrade guides
- Include examples
- Verify completeness