wry 0.5.1.dev3__tar.gz → 0.5.1.dev4__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (138) hide show
  1. {wry-0.5.1.dev3 → wry-0.5.1.dev4}/.cursorrules +3 -2
  2. {wry-0.5.1.dev3 → wry-0.5.1.dev4}/AI_KNOWLEDGE_BASE.md +28 -9
  3. {wry-0.5.1.dev3 → wry-0.5.1.dev4}/CHANGELOG.md +17 -0
  4. {wry-0.5.1.dev3 → wry-0.5.1.dev4}/CONTRIBUTING.md +20 -1
  5. {wry-0.5.1.dev3/wry.egg-info → wry-0.5.1.dev4}/PKG-INFO +9 -2
  6. {wry-0.5.1.dev3 → wry-0.5.1.dev4}/README.md +8 -1
  7. {wry-0.5.1.dev3 → wry-0.5.1.dev4}/RELEASE_PROCESS.md +46 -13
  8. {wry-0.5.1.dev3 → wry-0.5.1.dev4}/wry/_version.py +3 -3
  9. {wry-0.5.1.dev3 → wry-0.5.1.dev4/wry.egg-info}/PKG-INFO +9 -2
  10. {wry-0.5.1.dev3 → wry-0.5.1.dev4}/.github/workflows/ci-cd.yml +0 -0
  11. {wry-0.5.1.dev3 → wry-0.5.1.dev4}/.gitignore +0 -0
  12. {wry-0.5.1.dev3 → wry-0.5.1.dev4}/.markdownlint.json +0 -0
  13. {wry-0.5.1.dev3 → wry-0.5.1.dev4}/.pre-commit-config.yaml +0 -0
  14. {wry-0.5.1.dev3 → wry-0.5.1.dev4}/LICENSE +0 -0
  15. {wry-0.5.1.dev3 → wry-0.5.1.dev4}/TODO.md +0 -0
  16. {wry-0.5.1.dev3 → wry-0.5.1.dev4}/check.sh +0 -0
  17. {wry-0.5.1.dev3 → wry-0.5.1.dev4}/examples/autowrymodel_comprehensive.py +0 -0
  18. {wry-0.5.1.dev3 → wry-0.5.1.dev4}/examples/config.json +0 -0
  19. {wry-0.5.1.dev3 → wry-0.5.1.dev4}/examples/multimodel_comprehensive.py +0 -0
  20. {wry-0.5.1.dev3 → wry-0.5.1.dev4}/examples/sample_config.json +0 -0
  21. {wry-0.5.1.dev3 → wry-0.5.1.dev4}/examples/wrymodel_comprehensive.py +0 -0
  22. {wry-0.5.1.dev3 → wry-0.5.1.dev4}/pyproject.toml +0 -0
  23. {wry-0.5.1.dev3 → wry-0.5.1.dev4}/scripts/README.md +0 -0
  24. {wry-0.5.1.dev3 → wry-0.5.1.dev4}/scripts/extract_release_notes.py +0 -0
  25. {wry-0.5.1.dev3 → wry-0.5.1.dev4}/scripts/test_all_versions.sh +0 -0
  26. {wry-0.5.1.dev3 → wry-0.5.1.dev4}/scripts/test_ci_locally.sh +0 -0
  27. {wry-0.5.1.dev3 → wry-0.5.1.dev4}/scripts/test_with_act.sh +0 -0
  28. {wry-0.5.1.dev3 → wry-0.5.1.dev4}/scripts/update-dependencies.sh +0 -0
  29. {wry-0.5.1.dev3 → wry-0.5.1.dev4}/setup.cfg +0 -0
  30. {wry-0.5.1.dev3 → wry-0.5.1.dev4}/tests/README.md +0 -0
  31. {wry-0.5.1.dev3 → wry-0.5.1.dev4}/tests/__init__.py +0 -0
  32. {wry-0.5.1.dev3 → wry-0.5.1.dev4}/tests/features/__init__.py +0 -0
  33. {wry-0.5.1.dev3 → wry-0.5.1.dev4}/tests/features/test_auto_model.py +0 -0
  34. {wry-0.5.1.dev3 → wry-0.5.1.dev4}/tests/features/test_inheritance.py +0 -0
  35. {wry-0.5.1.dev3 → wry-0.5.1.dev4}/tests/features/test_multi_model.py +0 -0
  36. {wry-0.5.1.dev3 → wry-0.5.1.dev4}/tests/features/test_source_precedence.py +0 -0
  37. {wry-0.5.1.dev3 → wry-0.5.1.dev4}/tests/integration/__init__.py +0 -0
  38. {wry-0.5.1.dev3 → wry-0.5.1.dev4}/tests/integration/test_click_edge_cases.py +0 -0
  39. {wry-0.5.1.dev3 → wry-0.5.1.dev4}/tests/integration/test_click_integration.py +0 -0
  40. {wry-0.5.1.dev3 → wry-0.5.1.dev4}/tests/integration/test_click_integration_extended.py +0 -0
  41. {wry-0.5.1.dev3 → wry-0.5.1.dev4}/tests/integration/test_context_handling.py +0 -0
  42. {wry-0.5.1.dev3 → wry-0.5.1.dev4}/tests/unit/__init__.py +0 -0
  43. {wry-0.5.1.dev3 → wry-0.5.1.dev4}/tests/unit/auto_model/__init__.py +0 -0
  44. {wry-0.5.1.dev3 → wry-0.5.1.dev4}/tests/unit/auto_model/test_auto_model_annotation_inference.py +0 -0
  45. {wry-0.5.1.dev3 → wry-0.5.1.dev4}/tests/unit/auto_model/test_auto_model_edge_cases.py +0 -0
  46. {wry-0.5.1.dev3 → wry-0.5.1.dev4}/tests/unit/auto_model/test_auto_model_field_processing.py +0 -0
  47. {wry-0.5.1.dev3 → wry-0.5.1.dev4}/tests/unit/auto_model/test_auto_model_list_fields.py +0 -0
  48. {wry-0.5.1.dev3 → wry-0.5.1.dev4}/tests/unit/auto_model/test_comma_separated_lists.py +0 -0
  49. {wry-0.5.1.dev3 → wry-0.5.1.dev4}/tests/unit/auto_model/test_field_annotation_handling.py +0 -0
  50. {wry-0.5.1.dev3 → wry-0.5.1.dev4}/tests/unit/auto_model/test_field_annotations.py +0 -0
  51. {wry-0.5.1.dev3 → wry-0.5.1.dev4}/tests/unit/auto_model/test_type_inference.py +0 -0
  52. {wry-0.5.1.dev3 → wry-0.5.1.dev4}/tests/unit/click/README_TESTING_STRATEGY.md +0 -0
  53. {wry-0.5.1.dev3 → wry-0.5.1.dev4}/tests/unit/click/__init__.py +0 -0
  54. {wry-0.5.1.dev3 → wry-0.5.1.dev4}/tests/unit/click/test_argument_types.py +0 -0
  55. {wry-0.5.1.dev3 → wry-0.5.1.dev4}/tests/unit/click/test_bool_flag_handling.py +0 -0
  56. {wry-0.5.1.dev3 → wry-0.5.1.dev4}/tests/unit/click/test_click_config_building.py +0 -0
  57. {wry-0.5.1.dev3 → wry-0.5.1.dev4}/tests/unit/click/test_click_constraint_formatting.py +0 -0
  58. {wry-0.5.1.dev3 → wry-0.5.1.dev4}/tests/unit/click/test_click_decorator_edge_cases.py +0 -0
  59. {wry-0.5.1.dev3 → wry-0.5.1.dev4}/tests/unit/click/test_click_interval_constraints.py +0 -0
  60. {wry-0.5.1.dev3 → wry-0.5.1.dev4}/tests/unit/click/test_click_lambda_parsing.py +0 -0
  61. {wry-0.5.1.dev3 → wry-0.5.1.dev4}/tests/unit/click/test_click_length_constraints.py +0 -0
  62. {wry-0.5.1.dev3 → wry-0.5.1.dev4}/tests/unit/click/test_click_parameter_generation.py +0 -0
  63. {wry-0.5.1.dev3 → wry-0.5.1.dev4}/tests/unit/click/test_click_predicate_handling.py +0 -0
  64. {wry-0.5.1.dev3 → wry-0.5.1.dev4}/tests/unit/click/test_closure_extraction_errors.py +0 -0
  65. {wry-0.5.1.dev3 → wry-0.5.1.dev4}/tests/unit/click/test_closure_handling.py +0 -0
  66. {wry-0.5.1.dev3 → wry-0.5.1.dev4}/tests/unit/click/test_constraint_behavior.py +0 -0
  67. {wry-0.5.1.dev3 → wry-0.5.1.dev4}/tests/unit/click/test_constraint_edge_cases.py +0 -0
  68. {wry-0.5.1.dev3 → wry-0.5.1.dev4}/tests/unit/click/test_env_vars_option.py +0 -0
  69. {wry-0.5.1.dev3 → wry-0.5.1.dev4}/tests/unit/click/test_explicit_argument_help_injection.py +0 -0
  70. {wry-0.5.1.dev3 → wry-0.5.1.dev4}/tests/unit/click/test_field_alias_with_click_options.py +0 -0
  71. {wry-0.5.1.dev3 → wry-0.5.1.dev4}/tests/unit/click/test_format_constraint_text.py +0 -0
  72. {wry-0.5.1.dev3 → wry-0.5.1.dev4}/tests/unit/click/test_json_config_loading.py +0 -0
  73. {wry-0.5.1.dev3 → wry-0.5.1.dev4}/tests/unit/click/test_lambda_behavior.py +0 -0
  74. {wry-0.5.1.dev3 → wry-0.5.1.dev4}/tests/unit/click/test_lambda_error_handling.py +0 -0
  75. {wry-0.5.1.dev3 → wry-0.5.1.dev4}/tests/unit/click/test_predicate_source_errors.py +0 -0
  76. {wry-0.5.1.dev3 → wry-0.5.1.dev4}/tests/unit/click/test_strict_mode_errors.py +0 -0
  77. {wry-0.5.1.dev3 → wry-0.5.1.dev4}/tests/unit/click/test_type_handling.py +0 -0
  78. {wry-0.5.1.dev3 → wry-0.5.1.dev4}/tests/unit/core/__init__.py +0 -0
  79. {wry-0.5.1.dev3 → wry-0.5.1.dev4}/tests/unit/core/test_accessors.py +0 -0
  80. {wry-0.5.1.dev3 → wry-0.5.1.dev4}/tests/unit/core/test_advanced_features.py +0 -0
  81. {wry-0.5.1.dev3 → wry-0.5.1.dev4}/tests/unit/core/test_core.py +0 -0
  82. {wry-0.5.1.dev3 → wry-0.5.1.dev4}/tests/unit/core/test_edge_cases.py +0 -0
  83. {wry-0.5.1.dev3 → wry-0.5.1.dev4}/tests/unit/core/test_env_utils.py +0 -0
  84. {wry-0.5.1.dev3 → wry-0.5.1.dev4}/tests/unit/core/test_field_constraint_extraction.py +0 -0
  85. {wry-0.5.1.dev3 → wry-0.5.1.dev4}/tests/unit/core/test_field_utils.py +0 -0
  86. {wry-0.5.1.dev3 → wry-0.5.1.dev4}/tests/unit/core/test_field_utils_edge_cases.py +0 -0
  87. {wry-0.5.1.dev3 → wry-0.5.1.dev4}/tests/unit/core/test_sources.py +0 -0
  88. {wry-0.5.1.dev3 → wry-0.5.1.dev4}/tests/unit/core/test_type_checking_blocks.py +0 -0
  89. {wry-0.5.1.dev3 → wry-0.5.1.dev4}/tests/unit/model/__init__.py +0 -0
  90. {wry-0.5.1.dev3 → wry-0.5.1.dev4}/tests/unit/model/test_accessor_caching.py +0 -0
  91. {wry-0.5.1.dev3 → wry-0.5.1.dev4}/tests/unit/model/test_extract_edge_cases.py +0 -0
  92. {wry-0.5.1.dev3 → wry-0.5.1.dev4}/tests/unit/model/test_extract_subset_edge_cases.py +0 -0
  93. {wry-0.5.1.dev3 → wry-0.5.1.dev4}/tests/unit/model/test_model_click_context_handling.py +0 -0
  94. {wry-0.5.1.dev3 → wry-0.5.1.dev4}/tests/unit/model/test_model_data_extraction.py +0 -0
  95. {wry-0.5.1.dev3 → wry-0.5.1.dev4}/tests/unit/model/test_model_default_handling.py +0 -0
  96. {wry-0.5.1.dev3 → wry-0.5.1.dev4}/tests/unit/model/test_model_edge_cases.py +0 -0
  97. {wry-0.5.1.dev3 → wry-0.5.1.dev4}/tests/unit/model/test_model_environment_integration.py +0 -0
  98. {wry-0.5.1.dev3 → wry-0.5.1.dev4}/tests/unit/model/test_model_extract_subset_edge_cases.py +0 -0
  99. {wry-0.5.1.dev3 → wry-0.5.1.dev4}/tests/unit/model/test_model_extraction_methods.py +0 -0
  100. {wry-0.5.1.dev3 → wry-0.5.1.dev4}/tests/unit/model/test_model_field_errors.py +0 -0
  101. {wry-0.5.1.dev3 → wry-0.5.1.dev4}/tests/unit/model/test_model_object_extraction.py +0 -0
  102. {wry-0.5.1.dev3 → wry-0.5.1.dev4}/tests/unit/model/test_non_dict_object_extraction.py +0 -0
  103. {wry-0.5.1.dev3 → wry-0.5.1.dev4}/tests/unit/model/test_object_attribute_extraction.py +0 -0
  104. {wry-0.5.1.dev3 → wry-0.5.1.dev4}/tests/unit/multi_model/__init__.py +0 -0
  105. {wry-0.5.1.dev3 → wry-0.5.1.dev4}/tests/unit/multi_model/test_multi_model.py +0 -0
  106. {wry-0.5.1.dev3 → wry-0.5.1.dev4}/tests/unit/multi_model/test_type_checking.py +0 -0
  107. {wry-0.5.1.dev3 → wry-0.5.1.dev4}/tests/unit/test_argument_help_injection.py +0 -0
  108. {wry-0.5.1.dev3 → wry-0.5.1.dev4}/tests/unit/test_auto_model_field_processing.py +0 -0
  109. {wry-0.5.1.dev3 → wry-0.5.1.dev4}/tests/unit/test_comprehensive_imports.py +0 -0
  110. {wry-0.5.1.dev3 → wry-0.5.1.dev4}/tests/unit/test_exclude_enum.py +0 -0
  111. {wry-0.5.1.dev3 → wry-0.5.1.dev4}/tests/unit/test_generate_click_classmethod.py +0 -0
  112. {wry-0.5.1.dev3 → wry-0.5.1.dev4}/tests/unit/test_help_system.py +0 -0
  113. {wry-0.5.1.dev3 → wry-0.5.1.dev4}/tests/unit/test_init.py +0 -0
  114. {wry-0.5.1.dev3 → wry-0.5.1.dev4}/tests/unit/test_init_edge_cases.py +0 -0
  115. {wry-0.5.1.dev3 → wry-0.5.1.dev4}/tests/unit/test_init_version_edge_cases.py +0 -0
  116. {wry-0.5.1.dev3 → wry-0.5.1.dev4}/tests/unit/test_model_extraction_methods.py +0 -0
  117. {wry-0.5.1.dev3 → wry-0.5.1.dev4}/tests/unit/test_multiple_option_bug.py +0 -0
  118. {wry-0.5.1.dev3 → wry-0.5.1.dev4}/tests/unit/test_type_checking_imports.py +0 -0
  119. {wry-0.5.1.dev3 → wry-0.5.1.dev4}/tests/unit/test_variadic_argument_bug.py +0 -0
  120. {wry-0.5.1.dev3 → wry-0.5.1.dev4}/tests/unit/test_version_fallback.py +0 -0
  121. {wry-0.5.1.dev3 → wry-0.5.1.dev4}/tests/unit/test_version_parsing.py +0 -0
  122. {wry-0.5.1.dev3 → wry-0.5.1.dev4}/wry/__init__.py +0 -0
  123. {wry-0.5.1.dev3 → wry-0.5.1.dev4}/wry/auto_model.py +0 -0
  124. {wry-0.5.1.dev3 → wry-0.5.1.dev4}/wry/click_integration.py +0 -0
  125. {wry-0.5.1.dev3 → wry-0.5.1.dev4}/wry/comma_separated.py +0 -0
  126. {wry-0.5.1.dev3 → wry-0.5.1.dev4}/wry/core/__init__.py +0 -0
  127. {wry-0.5.1.dev3 → wry-0.5.1.dev4}/wry/core/accessors.py +0 -0
  128. {wry-0.5.1.dev3 → wry-0.5.1.dev4}/wry/core/env_utils.py +0 -0
  129. {wry-0.5.1.dev3 → wry-0.5.1.dev4}/wry/core/field_utils.py +0 -0
  130. {wry-0.5.1.dev3 → wry-0.5.1.dev4}/wry/core/model.py +0 -0
  131. {wry-0.5.1.dev3 → wry-0.5.1.dev4}/wry/core/sources.py +0 -0
  132. {wry-0.5.1.dev3 → wry-0.5.1.dev4}/wry/help_system.py +0 -0
  133. {wry-0.5.1.dev3 → wry-0.5.1.dev4}/wry/multi_model.py +0 -0
  134. {wry-0.5.1.dev3 → wry-0.5.1.dev4}/wry/py.typed +0 -0
  135. {wry-0.5.1.dev3 → wry-0.5.1.dev4}/wry.egg-info/SOURCES.txt +0 -0
  136. {wry-0.5.1.dev3 → wry-0.5.1.dev4}/wry.egg-info/dependency_links.txt +0 -0
  137. {wry-0.5.1.dev3 → wry-0.5.1.dev4}/wry.egg-info/requires.txt +0 -0
  138. {wry-0.5.1.dev3 → wry-0.5.1.dev4}/wry.egg-info/top_level.txt +0 -0
@@ -7,10 +7,10 @@
7
7
 
8
8
  Before making any commit, AI assistants MUST:
9
9
 
10
- 1. **Update Documentation**:
10
+ 1. **Update Documentation** (ALWAYS update CHANGELOG.md):
11
+ - **CHANGELOG.md**: ALWAYS add entry under [Unreleased] for ANY change
11
12
  - README.md if user-facing changes
12
13
  - AI_KNOWLEDGE_BASE.md if architecture/API changes
13
- - CHANGELOG.md with entry under [Unreleased]
14
14
  - Module docstrings if relevant
15
15
 
16
16
  2. **Ensure Code Quality**:
@@ -49,6 +49,7 @@ Before making any commit, AI assistants MUST:
49
49
  - Code patterns: `CONTRIBUTING.md` "Configuration Models" section
50
50
  - Testing guide: `CONTRIBUTING.md` "Testing" section
51
51
  - Pre-commit checklist: `CONTRIBUTING.md` "Pre-Commit Checklist" section
52
+ - Release workflow: `RELEASE_PROCESS.md` for creating releases
52
53
 
53
54
  ## Enforcement
54
55
 
@@ -1,9 +1,16 @@
1
1
  # wry - Comprehensive AI/LLM Knowledge Base
2
2
 
3
- **Last Updated**: 2025-10-04
4
- **Version**: 0.3.2+
3
+ **Last Updated**: 2025-10-14
4
+ **Version**: 0.5.0+
5
5
  **Purpose**: Complete reference for AI assistants and LLMs to understand wry without reading the entire codebase
6
6
 
7
+ **Related Documentation**:
8
+ - 📖 **`CONTRIBUTING.md`** - Comprehensive contributor guide (referenced by `.cursorrules`)
9
+ - 🤖 **`.cursorrules`** - AI assistant quick reference (references this file and CONTRIBUTING.md)
10
+ - 📘 **`README.md`** - User-facing documentation
11
+ - 📝 **`CHANGELOG.md`** - Version history and changes
12
+ - 🚀 **`RELEASE_PROCESS.md`** - Release workflow (how to convert [Unreleased] → [X.Y.Z])
13
+
7
14
  ---
8
15
 
9
16
  ## Executive Summary
@@ -19,7 +26,9 @@
19
26
 
20
27
  **Key Innovation**: Single source of truth for configuration with comprehensive source tracking.
21
28
 
22
- **Stats**: 436 tests (all passing), 92%+ coverage, supports Python 3.10-3.12, Pydantic v2.11+ compatible
29
+ **Stats**: 494 tests (all passing), 92%+ coverage, supports Python 3.10-3.12, Pydantic v2.11+ compatible
30
+
31
+ **For Contributors**: See `CONTRIBUTING.md` for development guidelines and `.cursorrules` for AI assistant rules
23
32
 
24
33
  ---
25
34
 
@@ -2814,19 +2823,29 @@ Single source of truth: Pydantic model defines everything.
2814
2823
  - ✅ Multi-source configuration (CLI/ENV/JSON/DEFAULT)
2815
2824
  - ✅ Source tracking (know where every value came from)
2816
2825
  - ✅ Type safety (Pydantic + Click)
2817
- - ✅ Comprehensive testing (407 tests, 92% coverage)
2818
- - ✅ Excellent documentation (README + AI KB + examples)
2826
+ - ✅ Comprehensive testing (494 tests, 92% coverage)
2827
+ - ✅ Excellent documentation (README + AI KB + examples + CONTRIBUTING)
2819
2828
 
2820
2829
  **For AI assistants**:
2821
2830
 
2822
- - Start with `examples/source_tracking_comprehensive.py` to understand the system
2823
- - Reference this knowledge base for details
2824
- - Check version for bug fixes (v0.2.2 critical)
2831
+ - **Follow** `.cursorrules` for quick development rules
2832
+ - **Reference** this knowledge base (AI_KNOWLEDGE_BASE.md) for technical details
2833
+ - **Check** `CONTRIBUTING.md` for complete development guidelines
2834
+ - Start with comprehensive examples to understand the system
2835
+ - Check version for bug fixes (v0.2.2 critical, v0.5.0 adds list support)
2825
2836
  - Point users to examples for patterns
2826
2837
  - Use `show_help_index()` to help users find documentation
2827
2838
 
2839
+ **For Contributors**:
2840
+
2841
+ - **Read** `CONTRIBUTING.md` for complete guidelines
2842
+ - **Follow** `.cursorrules` if using Cursor AI
2843
+ - **Reference** this knowledge base for architecture details
2844
+ - **Check** `CHANGELOG.md` for version history
2845
+ - **See** `RELEASE_PROCESS.md` for creating releases
2846
+
2828
2847
  ---
2829
2848
 
2830
- **End of Knowledge Base** - Version 0.2.3+ - Last Updated: 2025-10-01
2849
+ **End of Knowledge Base** - Version 0.5.0+ - Last Updated: 2025-10-14
2831
2850
 
2832
2851
  **Access this**: `python -m wry.help_system ai` or `from wry import print_help; print_help('ai')`
@@ -15,6 +15,23 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
15
15
  - `.cursorrules` references `CONTRIBUTING.md` for detailed explanations
16
16
  - Both tailored specifically for wry development patterns
17
17
 
18
+ ### Changed
19
+
20
+ - **Documentation cross-references** 🔗
21
+ - README.md: Added Contributing section with links to CONTRIBUTING.md, .cursorrules, AI_KNOWLEDGE_BASE.md
22
+ - AI_KNOWLEDGE_BASE.md: Updated header with related documentation links
23
+ - AI_KNOWLEDGE_BASE.md: Updated version to 0.5.0+ and test count to 494
24
+ - AI_KNOWLEDGE_BASE.md: Added separate guidance sections for AI assistants and contributors
25
+ - Creates clear documentation hierarchy and navigation
26
+
27
+ - **CHANGELOG requirements strengthened** ⚠️
28
+ - .cursorrules: Made CHANGELOG.md update mandatory and explicit (first item)
29
+ - CONTRIBUTING.md: Added prominent warning that CHANGELOG.md updates are required for every commit
30
+ - CONTRIBUTING.md: Listed all CHANGELOG sections (Added/Changed/Fixed/Deprecated/Removed/Security)
31
+ - RELEASE_PROCESS.md: Clarified [Unreleased] → versioned section workflow
32
+ - RELEASE_PROCESS.md: Documented that commits add to [Unreleased] during development
33
+ - RELEASE_PROCESS.md: Explained that release commit converts [Unreleased] to [X.Y.Z]
34
+
18
35
  ### Tests
19
36
 
20
37
  - **Additional comma-separated test** (494 total tests)
@@ -434,9 +434,17 @@ def test_feature_with_clear_name():
434
434
 
435
435
  ### 1. Documentation Updates
436
436
 
437
+ **⚠️ ALWAYS UPDATE CHANGELOG.md - This is required for every commit!**
438
+
439
+ - [ ] **CHANGELOG.md**: **ALWAYS** add entry under `[Unreleased]` with appropriate section:
440
+ - `Added` - New features, new files, new capabilities
441
+ - `Changed` - Changes to existing functionality, documentation updates
442
+ - `Fixed` - Bug fixes
443
+ - `Deprecated` - Features that will be removed
444
+ - `Removed` - Removed features
445
+ - `Security` - Security fixes
437
446
  - [ ] **README.md**: Update if user-facing features, usage, or API changed
438
447
  - [ ] **AI_KNOWLEDGE_BASE.md**: Update if architecture, implementation details, or patterns changed
439
- - [ ] **CHANGELOG.md**: Add entry under `[Unreleased]` with section (Added/Changed/Fixed/Deprecated/Removed)
440
448
  - [ ] **Module docstrings**: Update docstrings in modified modules
441
449
  - [ ] **Examples**: Add or update examples if demonstrating new features
442
450
 
@@ -624,10 +632,21 @@ If pre-commit hooks are failing:
624
632
  ❌ Make breaking changes without major version bump
625
633
  ❌ Ignore linter/type checker errors
626
634
 
635
+ ## Release Process
636
+
637
+ For information about creating releases, see **`RELEASE_PROCESS.md`**.
638
+
639
+ **Key points**:
640
+ - During development: Add all changes to `[Unreleased]` in CHANGELOG.md
641
+ - When releasing: Convert `[Unreleased]` to `[X.Y.Z] - YYYY-MM-DD`
642
+ - Tag the release commit: `git tag -s vX.Y.Z`
643
+ - See RELEASE_PROCESS.md for complete step-by-step instructions
644
+
627
645
  ## Questions?
628
646
 
629
647
  - Check `examples/` for usage patterns
630
648
  - Check `AI_KNOWLEDGE_BASE.md` for complete technical reference
631
649
  - Check `README.md` for user documentation
650
+ - Check `RELEASE_PROCESS.md` for release workflow
632
651
  - Check `tests/features/test_source_precedence.py` for source tracking examples
633
652
  - Open an issue for questions or clarifications
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: wry
3
- Version: 0.5.1.dev3
3
+ Version: 0.5.1.dev4
4
4
  Summary: Why Repeat Yourself? - Define your CLI once with Pydantic models
5
5
  Author-email: Tyler House <26489166+tahouse@users.noreply.github.com>
6
6
  License: MIT
@@ -892,7 +892,14 @@ The wry codebase is organized into focused modules:
892
892
 
893
893
  ## Contributing
894
894
 
895
- We welcome contributions! Please follow these guidelines to ensure a smooth process.
895
+ We welcome contributions! Please see **`CONTRIBUTING.md`** for comprehensive guidelines.
896
+
897
+ **Quick links**:
898
+
899
+ - 📖 **`CONTRIBUTING.md`** - Complete contributor guide (for humans)
900
+ - 🤖 **`.cursorrules`** - AI assistant quick reference
901
+ - 📚 **`AI_KNOWLEDGE_BASE.md`** - Complete technical reference
902
+ - 🚀 **`RELEASE_PROCESS.md`** - Release workflow and versioning
896
903
 
897
904
  ### Development Setup
898
905
 
@@ -848,7 +848,14 @@ The wry codebase is organized into focused modules:
848
848
 
849
849
  ## Contributing
850
850
 
851
- We welcome contributions! Please follow these guidelines to ensure a smooth process.
851
+ We welcome contributions! Please see **`CONTRIBUTING.md`** for comprehensive guidelines.
852
+
853
+ **Quick links**:
854
+
855
+ - 📖 **`CONTRIBUTING.md`** - Complete contributor guide (for humans)
856
+ - 🤖 **`.cursorrules`** - AI assistant quick reference
857
+ - 📚 **`AI_KNOWLEDGE_BASE.md`** - Complete technical reference
858
+ - 🚀 **`RELEASE_PROCESS.md`** - Release workflow and versioning
852
859
 
853
860
  ### Development Setup
854
861
 
@@ -2,31 +2,60 @@
2
2
 
3
3
  This document outlines the correct process for creating a new release.
4
4
 
5
- ## Release Checklist
5
+ ## Development Workflow
6
6
 
7
- Follow these steps IN ORDER for each release:
7
+ ### During Development (Between Releases)
8
8
 
9
- 1. **Make all code changes**
10
- - Implement features/fixes
11
- - Ensure all tests pass (`./check.sh`)
9
+ As you make commits, **ALWAYS update CHANGELOG.md** under `[Unreleased]`:
10
+
11
+ ```markdown
12
+ ## [Unreleased]
13
+
14
+ ### Added
15
+ - New feature X
16
+
17
+ ### Fixed
18
+ - Bug Y
19
+ ```
20
+
21
+ **Every commit** should add its changes to the `[Unreleased]` section. This keeps the changelog up-to-date continuously.
22
+
23
+ ### When Ready to Release
24
+
25
+ Follow these steps IN ORDER:
26
+
27
+ 1. **Verify all changes are in [Unreleased]**
28
+ - Check that CHANGELOG.md `[Unreleased]` section has all changes since last release
29
+ - Ensure all tests pass (`pytest`)
12
30
  - Fix any linting issues
13
31
 
14
- 2. **Update documentation**
32
+ 2. **Update CHANGELOG.md for release**
33
+ - Change `## [Unreleased]` to `## [X.Y.Z] - YYYY-MM-DD`
34
+ - Add a new empty `## [Unreleased]` section above it
35
+ - Update comparison links at bottom if present
36
+
37
+ **Example**:
38
+ ```markdown
39
+ ## [Unreleased]
40
+
41
+ ## [0.5.0] - 2025-10-14
42
+
43
+ ### Added
44
+ - Feature from unreleased section (now part of 0.5.0)
45
+ ```
46
+
47
+ 3. **Update documentation**
15
48
  - Update README.md if needed
49
+ - Update AI_KNOWLEDGE_BASE.md version numbers
16
50
  - Update any affected documentation
17
51
 
18
- 3. **Update CHANGELOG.md**
19
- - Add a new version section under `## [Unreleased]`
20
- - Document all changes following [Keep a Changelog](https://keepachangelog.com/) format
21
- - Update the comparison links at the bottom of the file
22
-
23
- 4. **Commit all changes**
52
+ 4. **Commit the release preparation**
24
53
  ```bash
25
54
  git add -A
26
55
  git commit -m "chore: prepare for vX.Y.Z release"
27
56
  ```
28
57
 
29
- 5. **Create signed tag**
58
+ 5. **Create signed tag on the release commit**
30
59
  ```bash
31
60
  git tag -s vX.Y.Z -m "Release vX.Y.Z: brief description"
32
61
  ```
@@ -37,6 +66,10 @@ Follow these steps IN ORDER for each release:
37
66
  git push origin vX.Y.Z
38
67
  ```
39
68
 
69
+ ### After the Release
70
+
71
+ Continue development by adding changes to the (now empty) `[Unreleased]` section.
72
+
40
73
  ## Example
41
74
 
42
75
  For v0.1.8 release:
@@ -28,7 +28,7 @@ version_tuple: VERSION_TUPLE
28
28
  commit_id: COMMIT_ID
29
29
  __commit_id__: COMMIT_ID
30
30
 
31
- __version__ = version = '0.5.1.dev3'
32
- __version_tuple__ = version_tuple = (0, 5, 1, 'dev3')
31
+ __version__ = version = '0.5.1.dev4'
32
+ __version_tuple__ = version_tuple = (0, 5, 1, 'dev4')
33
33
 
34
- __commit_id__ = commit_id = 'ga2ad84576'
34
+ __commit_id__ = commit_id = 'g338dafeb9'
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: wry
3
- Version: 0.5.1.dev3
3
+ Version: 0.5.1.dev4
4
4
  Summary: Why Repeat Yourself? - Define your CLI once with Pydantic models
5
5
  Author-email: Tyler House <26489166+tahouse@users.noreply.github.com>
6
6
  License: MIT
@@ -892,7 +892,14 @@ The wry codebase is organized into focused modules:
892
892
 
893
893
  ## Contributing
894
894
 
895
- We welcome contributions! Please follow these guidelines to ensure a smooth process.
895
+ We welcome contributions! Please see **`CONTRIBUTING.md`** for comprehensive guidelines.
896
+
897
+ **Quick links**:
898
+
899
+ - 📖 **`CONTRIBUTING.md`** - Complete contributor guide (for humans)
900
+ - 🤖 **`.cursorrules`** - AI assistant quick reference
901
+ - 📚 **`AI_KNOWLEDGE_BASE.md`** - Complete technical reference
902
+ - 🚀 **`RELEASE_PROCESS.md`** - Release workflow and versioning
896
903
 
897
904
  ### Development Setup
898
905
 
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes