wry 0.5.1.dev3__tar.gz → 0.5.1.dev5__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 (139) hide show
  1. {wry-0.5.1.dev3 → wry-0.5.1.dev5}/.cursorrules +9 -3
  2. {wry-0.5.1.dev3 → wry-0.5.1.dev5}/AI_KNOWLEDGE_BASE.md +28 -9
  3. {wry-0.5.1.dev3 → wry-0.5.1.dev5}/CHANGELOG.md +25 -0
  4. {wry-0.5.1.dev3 → wry-0.5.1.dev5}/CONTRIBUTING.md +30 -2
  5. {wry-0.5.1.dev3/wry.egg-info → wry-0.5.1.dev5}/PKG-INFO +53 -2
  6. {wry-0.5.1.dev3 → wry-0.5.1.dev5}/README.md +52 -1
  7. wry-0.5.1.dev5/RELEASE_PROCESS.md +120 -0
  8. {wry-0.5.1.dev3 → wry-0.5.1.dev5}/wry/_version.py +3 -3
  9. {wry-0.5.1.dev3 → wry-0.5.1.dev5/wry.egg-info}/PKG-INFO +53 -2
  10. wry-0.5.1.dev3/RELEASE_PROCESS.md +0 -80
  11. {wry-0.5.1.dev3 → wry-0.5.1.dev5}/.github/workflows/ci-cd.yml +0 -0
  12. {wry-0.5.1.dev3 → wry-0.5.1.dev5}/.gitignore +0 -0
  13. {wry-0.5.1.dev3 → wry-0.5.1.dev5}/.markdownlint.json +0 -0
  14. {wry-0.5.1.dev3 → wry-0.5.1.dev5}/.pre-commit-config.yaml +0 -0
  15. {wry-0.5.1.dev3 → wry-0.5.1.dev5}/LICENSE +0 -0
  16. {wry-0.5.1.dev3 → wry-0.5.1.dev5}/TODO.md +0 -0
  17. {wry-0.5.1.dev3 → wry-0.5.1.dev5}/check.sh +0 -0
  18. {wry-0.5.1.dev3 → wry-0.5.1.dev5}/examples/autowrymodel_comprehensive.py +0 -0
  19. {wry-0.5.1.dev3 → wry-0.5.1.dev5}/examples/config.json +0 -0
  20. {wry-0.5.1.dev3 → wry-0.5.1.dev5}/examples/multimodel_comprehensive.py +0 -0
  21. {wry-0.5.1.dev3 → wry-0.5.1.dev5}/examples/sample_config.json +0 -0
  22. {wry-0.5.1.dev3 → wry-0.5.1.dev5}/examples/wrymodel_comprehensive.py +0 -0
  23. {wry-0.5.1.dev3 → wry-0.5.1.dev5}/pyproject.toml +0 -0
  24. {wry-0.5.1.dev3 → wry-0.5.1.dev5}/scripts/README.md +0 -0
  25. {wry-0.5.1.dev3 → wry-0.5.1.dev5}/scripts/extract_release_notes.py +0 -0
  26. {wry-0.5.1.dev3 → wry-0.5.1.dev5}/scripts/test_all_versions.sh +0 -0
  27. {wry-0.5.1.dev3 → wry-0.5.1.dev5}/scripts/test_ci_locally.sh +0 -0
  28. {wry-0.5.1.dev3 → wry-0.5.1.dev5}/scripts/test_with_act.sh +0 -0
  29. {wry-0.5.1.dev3 → wry-0.5.1.dev5}/scripts/update-dependencies.sh +0 -0
  30. {wry-0.5.1.dev3 → wry-0.5.1.dev5}/setup.cfg +0 -0
  31. {wry-0.5.1.dev3 → wry-0.5.1.dev5}/tests/README.md +0 -0
  32. {wry-0.5.1.dev3 → wry-0.5.1.dev5}/tests/__init__.py +0 -0
  33. {wry-0.5.1.dev3 → wry-0.5.1.dev5}/tests/features/__init__.py +0 -0
  34. {wry-0.5.1.dev3 → wry-0.5.1.dev5}/tests/features/test_auto_model.py +0 -0
  35. {wry-0.5.1.dev3 → wry-0.5.1.dev5}/tests/features/test_inheritance.py +0 -0
  36. {wry-0.5.1.dev3 → wry-0.5.1.dev5}/tests/features/test_multi_model.py +0 -0
  37. {wry-0.5.1.dev3 → wry-0.5.1.dev5}/tests/features/test_source_precedence.py +0 -0
  38. {wry-0.5.1.dev3 → wry-0.5.1.dev5}/tests/integration/__init__.py +0 -0
  39. {wry-0.5.1.dev3 → wry-0.5.1.dev5}/tests/integration/test_click_edge_cases.py +0 -0
  40. {wry-0.5.1.dev3 → wry-0.5.1.dev5}/tests/integration/test_click_integration.py +0 -0
  41. {wry-0.5.1.dev3 → wry-0.5.1.dev5}/tests/integration/test_click_integration_extended.py +0 -0
  42. {wry-0.5.1.dev3 → wry-0.5.1.dev5}/tests/integration/test_context_handling.py +0 -0
  43. {wry-0.5.1.dev3 → wry-0.5.1.dev5}/tests/unit/__init__.py +0 -0
  44. {wry-0.5.1.dev3 → wry-0.5.1.dev5}/tests/unit/auto_model/__init__.py +0 -0
  45. {wry-0.5.1.dev3 → wry-0.5.1.dev5}/tests/unit/auto_model/test_auto_model_annotation_inference.py +0 -0
  46. {wry-0.5.1.dev3 → wry-0.5.1.dev5}/tests/unit/auto_model/test_auto_model_edge_cases.py +0 -0
  47. {wry-0.5.1.dev3 → wry-0.5.1.dev5}/tests/unit/auto_model/test_auto_model_field_processing.py +0 -0
  48. {wry-0.5.1.dev3 → wry-0.5.1.dev5}/tests/unit/auto_model/test_auto_model_list_fields.py +0 -0
  49. {wry-0.5.1.dev3 → wry-0.5.1.dev5}/tests/unit/auto_model/test_comma_separated_lists.py +0 -0
  50. {wry-0.5.1.dev3 → wry-0.5.1.dev5}/tests/unit/auto_model/test_field_annotation_handling.py +0 -0
  51. {wry-0.5.1.dev3 → wry-0.5.1.dev5}/tests/unit/auto_model/test_field_annotations.py +0 -0
  52. {wry-0.5.1.dev3 → wry-0.5.1.dev5}/tests/unit/auto_model/test_type_inference.py +0 -0
  53. {wry-0.5.1.dev3 → wry-0.5.1.dev5}/tests/unit/click/README_TESTING_STRATEGY.md +0 -0
  54. {wry-0.5.1.dev3 → wry-0.5.1.dev5}/tests/unit/click/__init__.py +0 -0
  55. {wry-0.5.1.dev3 → wry-0.5.1.dev5}/tests/unit/click/test_argument_types.py +0 -0
  56. {wry-0.5.1.dev3 → wry-0.5.1.dev5}/tests/unit/click/test_bool_flag_handling.py +0 -0
  57. {wry-0.5.1.dev3 → wry-0.5.1.dev5}/tests/unit/click/test_click_config_building.py +0 -0
  58. {wry-0.5.1.dev3 → wry-0.5.1.dev5}/tests/unit/click/test_click_constraint_formatting.py +0 -0
  59. {wry-0.5.1.dev3 → wry-0.5.1.dev5}/tests/unit/click/test_click_decorator_edge_cases.py +0 -0
  60. {wry-0.5.1.dev3 → wry-0.5.1.dev5}/tests/unit/click/test_click_interval_constraints.py +0 -0
  61. {wry-0.5.1.dev3 → wry-0.5.1.dev5}/tests/unit/click/test_click_lambda_parsing.py +0 -0
  62. {wry-0.5.1.dev3 → wry-0.5.1.dev5}/tests/unit/click/test_click_length_constraints.py +0 -0
  63. {wry-0.5.1.dev3 → wry-0.5.1.dev5}/tests/unit/click/test_click_parameter_generation.py +0 -0
  64. {wry-0.5.1.dev3 → wry-0.5.1.dev5}/tests/unit/click/test_click_predicate_handling.py +0 -0
  65. {wry-0.5.1.dev3 → wry-0.5.1.dev5}/tests/unit/click/test_closure_extraction_errors.py +0 -0
  66. {wry-0.5.1.dev3 → wry-0.5.1.dev5}/tests/unit/click/test_closure_handling.py +0 -0
  67. {wry-0.5.1.dev3 → wry-0.5.1.dev5}/tests/unit/click/test_constraint_behavior.py +0 -0
  68. {wry-0.5.1.dev3 → wry-0.5.1.dev5}/tests/unit/click/test_constraint_edge_cases.py +0 -0
  69. {wry-0.5.1.dev3 → wry-0.5.1.dev5}/tests/unit/click/test_env_vars_option.py +0 -0
  70. {wry-0.5.1.dev3 → wry-0.5.1.dev5}/tests/unit/click/test_explicit_argument_help_injection.py +0 -0
  71. {wry-0.5.1.dev3 → wry-0.5.1.dev5}/tests/unit/click/test_field_alias_with_click_options.py +0 -0
  72. {wry-0.5.1.dev3 → wry-0.5.1.dev5}/tests/unit/click/test_format_constraint_text.py +0 -0
  73. {wry-0.5.1.dev3 → wry-0.5.1.dev5}/tests/unit/click/test_json_config_loading.py +0 -0
  74. {wry-0.5.1.dev3 → wry-0.5.1.dev5}/tests/unit/click/test_lambda_behavior.py +0 -0
  75. {wry-0.5.1.dev3 → wry-0.5.1.dev5}/tests/unit/click/test_lambda_error_handling.py +0 -0
  76. {wry-0.5.1.dev3 → wry-0.5.1.dev5}/tests/unit/click/test_predicate_source_errors.py +0 -0
  77. {wry-0.5.1.dev3 → wry-0.5.1.dev5}/tests/unit/click/test_strict_mode_errors.py +0 -0
  78. {wry-0.5.1.dev3 → wry-0.5.1.dev5}/tests/unit/click/test_type_handling.py +0 -0
  79. {wry-0.5.1.dev3 → wry-0.5.1.dev5}/tests/unit/core/__init__.py +0 -0
  80. {wry-0.5.1.dev3 → wry-0.5.1.dev5}/tests/unit/core/test_accessors.py +0 -0
  81. {wry-0.5.1.dev3 → wry-0.5.1.dev5}/tests/unit/core/test_advanced_features.py +0 -0
  82. {wry-0.5.1.dev3 → wry-0.5.1.dev5}/tests/unit/core/test_core.py +0 -0
  83. {wry-0.5.1.dev3 → wry-0.5.1.dev5}/tests/unit/core/test_edge_cases.py +0 -0
  84. {wry-0.5.1.dev3 → wry-0.5.1.dev5}/tests/unit/core/test_env_utils.py +0 -0
  85. {wry-0.5.1.dev3 → wry-0.5.1.dev5}/tests/unit/core/test_field_constraint_extraction.py +0 -0
  86. {wry-0.5.1.dev3 → wry-0.5.1.dev5}/tests/unit/core/test_field_utils.py +0 -0
  87. {wry-0.5.1.dev3 → wry-0.5.1.dev5}/tests/unit/core/test_field_utils_edge_cases.py +0 -0
  88. {wry-0.5.1.dev3 → wry-0.5.1.dev5}/tests/unit/core/test_sources.py +0 -0
  89. {wry-0.5.1.dev3 → wry-0.5.1.dev5}/tests/unit/core/test_type_checking_blocks.py +0 -0
  90. {wry-0.5.1.dev3 → wry-0.5.1.dev5}/tests/unit/model/__init__.py +0 -0
  91. {wry-0.5.1.dev3 → wry-0.5.1.dev5}/tests/unit/model/test_accessor_caching.py +0 -0
  92. {wry-0.5.1.dev3 → wry-0.5.1.dev5}/tests/unit/model/test_extract_edge_cases.py +0 -0
  93. {wry-0.5.1.dev3 → wry-0.5.1.dev5}/tests/unit/model/test_extract_subset_edge_cases.py +0 -0
  94. {wry-0.5.1.dev3 → wry-0.5.1.dev5}/tests/unit/model/test_model_click_context_handling.py +0 -0
  95. {wry-0.5.1.dev3 → wry-0.5.1.dev5}/tests/unit/model/test_model_data_extraction.py +0 -0
  96. {wry-0.5.1.dev3 → wry-0.5.1.dev5}/tests/unit/model/test_model_default_handling.py +0 -0
  97. {wry-0.5.1.dev3 → wry-0.5.1.dev5}/tests/unit/model/test_model_edge_cases.py +0 -0
  98. {wry-0.5.1.dev3 → wry-0.5.1.dev5}/tests/unit/model/test_model_environment_integration.py +0 -0
  99. {wry-0.5.1.dev3 → wry-0.5.1.dev5}/tests/unit/model/test_model_extract_subset_edge_cases.py +0 -0
  100. {wry-0.5.1.dev3 → wry-0.5.1.dev5}/tests/unit/model/test_model_extraction_methods.py +0 -0
  101. {wry-0.5.1.dev3 → wry-0.5.1.dev5}/tests/unit/model/test_model_field_errors.py +0 -0
  102. {wry-0.5.1.dev3 → wry-0.5.1.dev5}/tests/unit/model/test_model_object_extraction.py +0 -0
  103. {wry-0.5.1.dev3 → wry-0.5.1.dev5}/tests/unit/model/test_non_dict_object_extraction.py +0 -0
  104. {wry-0.5.1.dev3 → wry-0.5.1.dev5}/tests/unit/model/test_object_attribute_extraction.py +0 -0
  105. {wry-0.5.1.dev3 → wry-0.5.1.dev5}/tests/unit/multi_model/__init__.py +0 -0
  106. {wry-0.5.1.dev3 → wry-0.5.1.dev5}/tests/unit/multi_model/test_multi_model.py +0 -0
  107. {wry-0.5.1.dev3 → wry-0.5.1.dev5}/tests/unit/multi_model/test_type_checking.py +0 -0
  108. {wry-0.5.1.dev3 → wry-0.5.1.dev5}/tests/unit/test_argument_help_injection.py +0 -0
  109. {wry-0.5.1.dev3 → wry-0.5.1.dev5}/tests/unit/test_auto_model_field_processing.py +0 -0
  110. {wry-0.5.1.dev3 → wry-0.5.1.dev5}/tests/unit/test_comprehensive_imports.py +0 -0
  111. {wry-0.5.1.dev3 → wry-0.5.1.dev5}/tests/unit/test_exclude_enum.py +0 -0
  112. {wry-0.5.1.dev3 → wry-0.5.1.dev5}/tests/unit/test_generate_click_classmethod.py +0 -0
  113. {wry-0.5.1.dev3 → wry-0.5.1.dev5}/tests/unit/test_help_system.py +0 -0
  114. {wry-0.5.1.dev3 → wry-0.5.1.dev5}/tests/unit/test_init.py +0 -0
  115. {wry-0.5.1.dev3 → wry-0.5.1.dev5}/tests/unit/test_init_edge_cases.py +0 -0
  116. {wry-0.5.1.dev3 → wry-0.5.1.dev5}/tests/unit/test_init_version_edge_cases.py +0 -0
  117. {wry-0.5.1.dev3 → wry-0.5.1.dev5}/tests/unit/test_model_extraction_methods.py +0 -0
  118. {wry-0.5.1.dev3 → wry-0.5.1.dev5}/tests/unit/test_multiple_option_bug.py +0 -0
  119. {wry-0.5.1.dev3 → wry-0.5.1.dev5}/tests/unit/test_type_checking_imports.py +0 -0
  120. {wry-0.5.1.dev3 → wry-0.5.1.dev5}/tests/unit/test_variadic_argument_bug.py +0 -0
  121. {wry-0.5.1.dev3 → wry-0.5.1.dev5}/tests/unit/test_version_fallback.py +0 -0
  122. {wry-0.5.1.dev3 → wry-0.5.1.dev5}/tests/unit/test_version_parsing.py +0 -0
  123. {wry-0.5.1.dev3 → wry-0.5.1.dev5}/wry/__init__.py +0 -0
  124. {wry-0.5.1.dev3 → wry-0.5.1.dev5}/wry/auto_model.py +0 -0
  125. {wry-0.5.1.dev3 → wry-0.5.1.dev5}/wry/click_integration.py +0 -0
  126. {wry-0.5.1.dev3 → wry-0.5.1.dev5}/wry/comma_separated.py +0 -0
  127. {wry-0.5.1.dev3 → wry-0.5.1.dev5}/wry/core/__init__.py +0 -0
  128. {wry-0.5.1.dev3 → wry-0.5.1.dev5}/wry/core/accessors.py +0 -0
  129. {wry-0.5.1.dev3 → wry-0.5.1.dev5}/wry/core/env_utils.py +0 -0
  130. {wry-0.5.1.dev3 → wry-0.5.1.dev5}/wry/core/field_utils.py +0 -0
  131. {wry-0.5.1.dev3 → wry-0.5.1.dev5}/wry/core/model.py +0 -0
  132. {wry-0.5.1.dev3 → wry-0.5.1.dev5}/wry/core/sources.py +0 -0
  133. {wry-0.5.1.dev3 → wry-0.5.1.dev5}/wry/help_system.py +0 -0
  134. {wry-0.5.1.dev3 → wry-0.5.1.dev5}/wry/multi_model.py +0 -0
  135. {wry-0.5.1.dev3 → wry-0.5.1.dev5}/wry/py.typed +0 -0
  136. {wry-0.5.1.dev3 → wry-0.5.1.dev5}/wry.egg-info/SOURCES.txt +0 -0
  137. {wry-0.5.1.dev3 → wry-0.5.1.dev5}/wry.egg-info/dependency_links.txt +0 -0
  138. {wry-0.5.1.dev3 → wry-0.5.1.dev5}/wry.egg-info/requires.txt +0 -0
  139. {wry-0.5.1.dev3 → wry-0.5.1.dev5}/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**:
@@ -29,7 +29,12 @@ Before making any commit, AI assistants MUST:
29
29
  - Fix linter errors (ruff, mypy)
30
30
  - Format code properly (ruff format)
31
31
 
32
- 5. **Follow Conventional Commits**:
32
+ 5. **Update TODO.md** (if applicable):
33
+ - Mark completed tasks as done
34
+ - Remove completed items or move to archive section
35
+ - Update progress on ongoing work
36
+
37
+ 6. **Follow Conventional Commits**:
33
38
  - Use format: `type: description`
34
39
  - Types: feat, fix, docs, refactor, test, chore, build
35
40
 
@@ -49,6 +54,7 @@ Before making any commit, AI assistants MUST:
49
54
  - Code patterns: `CONTRIBUTING.md` "Configuration Models" section
50
55
  - Testing guide: `CONTRIBUTING.md` "Testing" section
51
56
  - Pre-commit checklist: `CONTRIBUTING.md` "Pre-Commit Checklist" section
57
+ - Release workflow: `RELEASE_PROCESS.md` for creating releases
52
58
 
53
59
  ## Enforcement
54
60
 
@@ -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,31 @@ 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
+
35
+ - **TODO.md integration** 📋
36
+ - .cursorrules: Added TODO.md update as step 5 in pre-commit requirements
37
+ - CONTRIBUTING.md: Added TODO.md checklist item (mark completed, update progress)
38
+ - RELEASE_PROCESS.md: Check TODO.md before release, update after release
39
+ - README.md: Added comprehensive "Documentation Index" section
40
+ - README.md: Listed TODO.md in "For Contributors" section
41
+ - README.md: Added "Quick Start Navigation" for users/contributors/AI assistants
42
+
18
43
  ### Tests
19
44
 
20
45
  - **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
 
@@ -477,7 +485,15 @@ mypy wry/
477
485
 
478
486
  **Note**: Git commits automatically run pre-commit hooks (ruff, mypy, pytest). All must pass.
479
487
 
480
- ### 5. wry-Specific Checks
488
+ ### 5. Update TODO.md (if applicable)
489
+
490
+ - [ ] **TODO.md**: Update if working on tracked tasks
491
+ - Mark completed tasks as done (✅)
492
+ - Remove completed items or move to archive
493
+ - Update progress notes on ongoing work
494
+ - Add new tasks if discovered during development
495
+
496
+ ### 6. wry-Specific Checks
481
497
 
482
498
  - [ ] **Source tracking works**: If touching config/model code, verify source tracking
483
499
  - [ ] **Precedence correct**: CLI > JSON > ENV > DEFAULT (verify if changing)
@@ -624,10 +640,22 @@ If pre-commit hooks are failing:
624
640
  ❌ Make breaking changes without major version bump
625
641
  ❌ Ignore linter/type checker errors
626
642
 
643
+ ## Release Process
644
+
645
+ For information about creating releases, see **`RELEASE_PROCESS.md`**.
646
+
647
+ **Key points**:
648
+ - During development: Add all changes to `[Unreleased]` in CHANGELOG.md
649
+ - When releasing: Convert `[Unreleased]` to `[X.Y.Z] - YYYY-MM-DD`
650
+ - Tag the release commit: `git tag -s vX.Y.Z`
651
+ - See RELEASE_PROCESS.md for complete step-by-step instructions
652
+
627
653
  ## Questions?
628
654
 
629
655
  - Check `examples/` for usage patterns
630
656
  - Check `AI_KNOWLEDGE_BASE.md` for complete technical reference
631
657
  - Check `README.md` for user documentation
658
+ - Check `RELEASE_PROCESS.md` for release workflow
659
+ - Check `TODO.md` for current tasks and planned features
632
660
  - Check `tests/features/test_source_precedence.py` for source tracking examples
633
661
  - 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.dev5
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
 
@@ -1059,6 +1066,50 @@ mypy wry
1059
1066
  - Start a discussion for general questions
1060
1067
  - Check existing issues/PRs before creating new ones
1061
1068
 
1069
+ ## Documentation Index
1070
+
1071
+ wry has comprehensive documentation for different audiences:
1072
+
1073
+ ### For Users
1074
+ - 📘 **`README.md`** (this file) - Getting started, features, usage examples
1075
+ - 📁 **`examples/`** - Working code examples
1076
+ - `examples/autowrymodel_comprehensive.py` - Complete AutoWryModel features
1077
+ - `examples/wrymodel_comprehensive.py` - WryModel with source tracking
1078
+ - `examples/multimodel_comprehensive.py` - Multi-model usage
1079
+
1080
+ ### For Contributors
1081
+ - 📖 **`CONTRIBUTING.md`** - Complete contributor guide with code patterns and checklists
1082
+ - 🤖 **`.cursorrules`** - AI assistant quick reference (references CONTRIBUTING.md)
1083
+ - 🚀 **`RELEASE_PROCESS.md`** - How to create releases and manage versions
1084
+ - 📋 **`TODO.md`** - Current tasks, planned features, and work in progress
1085
+
1086
+ ### Technical Reference
1087
+ - 📚 **`AI_KNOWLEDGE_BASE.md`** - Complete technical reference for AI/LLMs (also useful for humans)
1088
+ - 📝 **`CHANGELOG.md`** - Version history and all changes
1089
+ - 🧪 **`tests/README.md`** - Test organization and structure
1090
+ - 🔧 **`scripts/README.md`** - Development scripts and tools
1091
+
1092
+ ### Quick Start Navigation
1093
+
1094
+ **I'm a user, I want to...**
1095
+ - Get started → README.md "Quick Start" section
1096
+ - See examples → `examples/` directory
1097
+ - Understand features → README.md "Features" section
1098
+ - Track config sources → README.md "Value Source Tracking" section
1099
+
1100
+ **I'm a contributor, I want to...**
1101
+ - Set up development → CONTRIBUTING.md "Development Setup" section
1102
+ - Add a feature → CONTRIBUTING.md "Adding New Features" section
1103
+ - Run tests → CONTRIBUTING.md "Testing" section
1104
+ - Create a release → RELEASE_PROCESS.md
1105
+ - Check current tasks → TODO.md
1106
+
1107
+ **I'm an AI assistant, I want to...**
1108
+ - Quick reference → `.cursorrules`
1109
+ - Technical details → `AI_KNOWLEDGE_BASE.md`
1110
+ - Code patterns → `CONTRIBUTING.md`
1111
+ - Test examples → `tests/features/test_source_precedence.py`
1112
+
1062
1113
  ## License
1063
1114
 
1064
1115
  This project is licensed under the MIT License - see the [LICENSE](LICENSE) file for details.
@@ -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
 
@@ -1015,6 +1022,50 @@ mypy wry
1015
1022
  - Start a discussion for general questions
1016
1023
  - Check existing issues/PRs before creating new ones
1017
1024
 
1025
+ ## Documentation Index
1026
+
1027
+ wry has comprehensive documentation for different audiences:
1028
+
1029
+ ### For Users
1030
+ - 📘 **`README.md`** (this file) - Getting started, features, usage examples
1031
+ - 📁 **`examples/`** - Working code examples
1032
+ - `examples/autowrymodel_comprehensive.py` - Complete AutoWryModel features
1033
+ - `examples/wrymodel_comprehensive.py` - WryModel with source tracking
1034
+ - `examples/multimodel_comprehensive.py` - Multi-model usage
1035
+
1036
+ ### For Contributors
1037
+ - 📖 **`CONTRIBUTING.md`** - Complete contributor guide with code patterns and checklists
1038
+ - 🤖 **`.cursorrules`** - AI assistant quick reference (references CONTRIBUTING.md)
1039
+ - 🚀 **`RELEASE_PROCESS.md`** - How to create releases and manage versions
1040
+ - 📋 **`TODO.md`** - Current tasks, planned features, and work in progress
1041
+
1042
+ ### Technical Reference
1043
+ - 📚 **`AI_KNOWLEDGE_BASE.md`** - Complete technical reference for AI/LLMs (also useful for humans)
1044
+ - 📝 **`CHANGELOG.md`** - Version history and all changes
1045
+ - 🧪 **`tests/README.md`** - Test organization and structure
1046
+ - 🔧 **`scripts/README.md`** - Development scripts and tools
1047
+
1048
+ ### Quick Start Navigation
1049
+
1050
+ **I'm a user, I want to...**
1051
+ - Get started → README.md "Quick Start" section
1052
+ - See examples → `examples/` directory
1053
+ - Understand features → README.md "Features" section
1054
+ - Track config sources → README.md "Value Source Tracking" section
1055
+
1056
+ **I'm a contributor, I want to...**
1057
+ - Set up development → CONTRIBUTING.md "Development Setup" section
1058
+ - Add a feature → CONTRIBUTING.md "Adding New Features" section
1059
+ - Run tests → CONTRIBUTING.md "Testing" section
1060
+ - Create a release → RELEASE_PROCESS.md
1061
+ - Check current tasks → TODO.md
1062
+
1063
+ **I'm an AI assistant, I want to...**
1064
+ - Quick reference → `.cursorrules`
1065
+ - Technical details → `AI_KNOWLEDGE_BASE.md`
1066
+ - Code patterns → `CONTRIBUTING.md`
1067
+ - Test examples → `tests/features/test_source_precedence.py`
1068
+
1018
1069
  ## License
1019
1070
 
1020
1071
  This project is licensed under the MIT License - see the [LICENSE](LICENSE) file for details.
@@ -0,0 +1,120 @@
1
+ # Release Process for Wry
2
+
3
+ This document outlines the correct process for creating a new release.
4
+
5
+ ## Development Workflow
6
+
7
+ ### During Development (Between Releases)
8
+
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
+ - Check TODO.md - all planned release items should be completed
30
+ - Ensure all tests pass (`pytest`)
31
+ - Fix any linting issues
32
+
33
+ 2. **Update CHANGELOG.md for release**
34
+ - Change `## [Unreleased]` to `## [X.Y.Z] - YYYY-MM-DD`
35
+ - Add a new empty `## [Unreleased]` section above it
36
+ - Update comparison links at bottom if present
37
+
38
+ **Example**:
39
+ ```markdown
40
+ ## [Unreleased]
41
+
42
+ ## [0.5.0] - 2025-10-14
43
+
44
+ ### Added
45
+ - Feature from unreleased section (now part of 0.5.0)
46
+ ```
47
+
48
+ 3. **Update documentation**
49
+ - Update README.md if needed
50
+ - Update AI_KNOWLEDGE_BASE.md version numbers
51
+ - Update any affected documentation
52
+
53
+ 4. **Commit the release preparation**
54
+ ```bash
55
+ git add -A
56
+ git commit -m "chore: prepare for vX.Y.Z release"
57
+ ```
58
+
59
+ 5. **Create signed tag on the release commit**
60
+ ```bash
61
+ git tag -s vX.Y.Z -m "Release vX.Y.Z: brief description"
62
+ ```
63
+
64
+ 6. **Push changes and tag**
65
+ ```bash
66
+ git push origin main
67
+ git push origin vX.Y.Z
68
+ ```
69
+
70
+ ### After the Release
71
+
72
+ Continue development by:
73
+ 1. Adding new changes to the (now empty) `[Unreleased]` section in CHANGELOG.md
74
+ 2. Updating TODO.md:
75
+ - Archive or remove completed items from the released version
76
+ - Add new tasks or features planned for next release
77
+ - Update roadmap and priorities
78
+ 3. Update version numbers in AI_KNOWLEDGE_BASE.md if not already done
79
+
80
+ ## Example
81
+
82
+ For v0.1.8 release:
83
+
84
+ ```bash
85
+ # 1. Make code changes
86
+ # ... implement type annotation improvements ...
87
+
88
+ # 2. Update CHANGELOG.md
89
+ # Add new section:
90
+ ## [0.1.8] - 2025-09-10
91
+
92
+ ### Fixed
93
+ - Improved type annotations for `generate_click_parameters` decorator
94
+
95
+ # 3. Commit everything
96
+ git add -A
97
+ git commit -m "chore: prepare for v0.1.8 release"
98
+
99
+ # 4. Create tag
100
+ git tag -s v0.1.8 -m "Release v0.1.8: improve type annotations"
101
+
102
+ # 5. Push
103
+ git push origin main
104
+ git push origin v0.1.8
105
+ ```
106
+
107
+ ## Common Mistakes to Avoid
108
+
109
+ - ❌ Creating the tag before updating CHANGELOG.md
110
+ - ❌ Forgetting to update comparison links in CHANGELOG.md
111
+ - ❌ Not running `./check.sh` before tagging
112
+ - ❌ Creating unsigned tags (always use `-s` for signed tags)
113
+
114
+ ## CI/CD Pipeline
115
+
116
+ Once a tag is pushed, the GitHub Actions workflow will:
117
+ 1. Run all tests across Python 3.10, 3.11, and 3.12
118
+ 2. Build the distribution packages
119
+ 3. Publish to PyPI (for tags) or TestPyPI (for main branch)
120
+ 4. Create a GitHub release with notes from CHANGELOG.md
@@ -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.dev5'
32
+ __version_tuple__ = version_tuple = (0, 5, 1, 'dev5')
33
33
 
34
- __commit_id__ = commit_id = 'ga2ad84576'
34
+ __commit_id__ = commit_id = 'g1a3d554bc'
@@ -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.dev5
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
 
@@ -1059,6 +1066,50 @@ mypy wry
1059
1066
  - Start a discussion for general questions
1060
1067
  - Check existing issues/PRs before creating new ones
1061
1068
 
1069
+ ## Documentation Index
1070
+
1071
+ wry has comprehensive documentation for different audiences:
1072
+
1073
+ ### For Users
1074
+ - 📘 **`README.md`** (this file) - Getting started, features, usage examples
1075
+ - 📁 **`examples/`** - Working code examples
1076
+ - `examples/autowrymodel_comprehensive.py` - Complete AutoWryModel features
1077
+ - `examples/wrymodel_comprehensive.py` - WryModel with source tracking
1078
+ - `examples/multimodel_comprehensive.py` - Multi-model usage
1079
+
1080
+ ### For Contributors
1081
+ - 📖 **`CONTRIBUTING.md`** - Complete contributor guide with code patterns and checklists
1082
+ - 🤖 **`.cursorrules`** - AI assistant quick reference (references CONTRIBUTING.md)
1083
+ - 🚀 **`RELEASE_PROCESS.md`** - How to create releases and manage versions
1084
+ - 📋 **`TODO.md`** - Current tasks, planned features, and work in progress
1085
+
1086
+ ### Technical Reference
1087
+ - 📚 **`AI_KNOWLEDGE_BASE.md`** - Complete technical reference for AI/LLMs (also useful for humans)
1088
+ - 📝 **`CHANGELOG.md`** - Version history and all changes
1089
+ - 🧪 **`tests/README.md`** - Test organization and structure
1090
+ - 🔧 **`scripts/README.md`** - Development scripts and tools
1091
+
1092
+ ### Quick Start Navigation
1093
+
1094
+ **I'm a user, I want to...**
1095
+ - Get started → README.md "Quick Start" section
1096
+ - See examples → `examples/` directory
1097
+ - Understand features → README.md "Features" section
1098
+ - Track config sources → README.md "Value Source Tracking" section
1099
+
1100
+ **I'm a contributor, I want to...**
1101
+ - Set up development → CONTRIBUTING.md "Development Setup" section
1102
+ - Add a feature → CONTRIBUTING.md "Adding New Features" section
1103
+ - Run tests → CONTRIBUTING.md "Testing" section
1104
+ - Create a release → RELEASE_PROCESS.md
1105
+ - Check current tasks → TODO.md
1106
+
1107
+ **I'm an AI assistant, I want to...**
1108
+ - Quick reference → `.cursorrules`
1109
+ - Technical details → `AI_KNOWLEDGE_BASE.md`
1110
+ - Code patterns → `CONTRIBUTING.md`
1111
+ - Test examples → `tests/features/test_source_precedence.py`
1112
+
1062
1113
  ## License
1063
1114
 
1064
1115
  This project is licensed under the MIT License - see the [LICENSE](LICENSE) file for details.
@@ -1,80 +0,0 @@
1
- # Release Process for Wry
2
-
3
- This document outlines the correct process for creating a new release.
4
-
5
- ## Release Checklist
6
-
7
- Follow these steps IN ORDER for each release:
8
-
9
- 1. **Make all code changes**
10
- - Implement features/fixes
11
- - Ensure all tests pass (`./check.sh`)
12
- - Fix any linting issues
13
-
14
- 2. **Update documentation**
15
- - Update README.md if needed
16
- - Update any affected documentation
17
-
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**
24
- ```bash
25
- git add -A
26
- git commit -m "chore: prepare for vX.Y.Z release"
27
- ```
28
-
29
- 5. **Create signed tag**
30
- ```bash
31
- git tag -s vX.Y.Z -m "Release vX.Y.Z: brief description"
32
- ```
33
-
34
- 6. **Push changes and tag**
35
- ```bash
36
- git push origin main
37
- git push origin vX.Y.Z
38
- ```
39
-
40
- ## Example
41
-
42
- For v0.1.8 release:
43
-
44
- ```bash
45
- # 1. Make code changes
46
- # ... implement type annotation improvements ...
47
-
48
- # 2. Update CHANGELOG.md
49
- # Add new section:
50
- ## [0.1.8] - 2025-09-10
51
-
52
- ### Fixed
53
- - Improved type annotations for `generate_click_parameters` decorator
54
-
55
- # 3. Commit everything
56
- git add -A
57
- git commit -m "chore: prepare for v0.1.8 release"
58
-
59
- # 4. Create tag
60
- git tag -s v0.1.8 -m "Release v0.1.8: improve type annotations"
61
-
62
- # 5. Push
63
- git push origin main
64
- git push origin v0.1.8
65
- ```
66
-
67
- ## Common Mistakes to Avoid
68
-
69
- - ❌ Creating the tag before updating CHANGELOG.md
70
- - ❌ Forgetting to update comparison links in CHANGELOG.md
71
- - ❌ Not running `./check.sh` before tagging
72
- - ❌ Creating unsigned tags (always use `-s` for signed tags)
73
-
74
- ## CI/CD Pipeline
75
-
76
- Once a tag is pushed, the GitHub Actions workflow will:
77
- 1. Run all tests across Python 3.10, 3.11, and 3.12
78
- 2. Build the distribution packages
79
- 3. Publish to PyPI (for tags) or TestPyPI (for main branch)
80
- 4. Create a GitHub release with notes from CHANGELOG.md
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