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.
- {wry-0.5.1.dev3 → wry-0.5.1.dev5}/.cursorrules +9 -3
- {wry-0.5.1.dev3 → wry-0.5.1.dev5}/AI_KNOWLEDGE_BASE.md +28 -9
- {wry-0.5.1.dev3 → wry-0.5.1.dev5}/CHANGELOG.md +25 -0
- {wry-0.5.1.dev3 → wry-0.5.1.dev5}/CONTRIBUTING.md +30 -2
- {wry-0.5.1.dev3/wry.egg-info → wry-0.5.1.dev5}/PKG-INFO +53 -2
- {wry-0.5.1.dev3 → wry-0.5.1.dev5}/README.md +52 -1
- wry-0.5.1.dev5/RELEASE_PROCESS.md +120 -0
- {wry-0.5.1.dev3 → wry-0.5.1.dev5}/wry/_version.py +3 -3
- {wry-0.5.1.dev3 → wry-0.5.1.dev5/wry.egg-info}/PKG-INFO +53 -2
- wry-0.5.1.dev3/RELEASE_PROCESS.md +0 -80
- {wry-0.5.1.dev3 → wry-0.5.1.dev5}/.github/workflows/ci-cd.yml +0 -0
- {wry-0.5.1.dev3 → wry-0.5.1.dev5}/.gitignore +0 -0
- {wry-0.5.1.dev3 → wry-0.5.1.dev5}/.markdownlint.json +0 -0
- {wry-0.5.1.dev3 → wry-0.5.1.dev5}/.pre-commit-config.yaml +0 -0
- {wry-0.5.1.dev3 → wry-0.5.1.dev5}/LICENSE +0 -0
- {wry-0.5.1.dev3 → wry-0.5.1.dev5}/TODO.md +0 -0
- {wry-0.5.1.dev3 → wry-0.5.1.dev5}/check.sh +0 -0
- {wry-0.5.1.dev3 → wry-0.5.1.dev5}/examples/autowrymodel_comprehensive.py +0 -0
- {wry-0.5.1.dev3 → wry-0.5.1.dev5}/examples/config.json +0 -0
- {wry-0.5.1.dev3 → wry-0.5.1.dev5}/examples/multimodel_comprehensive.py +0 -0
- {wry-0.5.1.dev3 → wry-0.5.1.dev5}/examples/sample_config.json +0 -0
- {wry-0.5.1.dev3 → wry-0.5.1.dev5}/examples/wrymodel_comprehensive.py +0 -0
- {wry-0.5.1.dev3 → wry-0.5.1.dev5}/pyproject.toml +0 -0
- {wry-0.5.1.dev3 → wry-0.5.1.dev5}/scripts/README.md +0 -0
- {wry-0.5.1.dev3 → wry-0.5.1.dev5}/scripts/extract_release_notes.py +0 -0
- {wry-0.5.1.dev3 → wry-0.5.1.dev5}/scripts/test_all_versions.sh +0 -0
- {wry-0.5.1.dev3 → wry-0.5.1.dev5}/scripts/test_ci_locally.sh +0 -0
- {wry-0.5.1.dev3 → wry-0.5.1.dev5}/scripts/test_with_act.sh +0 -0
- {wry-0.5.1.dev3 → wry-0.5.1.dev5}/scripts/update-dependencies.sh +0 -0
- {wry-0.5.1.dev3 → wry-0.5.1.dev5}/setup.cfg +0 -0
- {wry-0.5.1.dev3 → wry-0.5.1.dev5}/tests/README.md +0 -0
- {wry-0.5.1.dev3 → wry-0.5.1.dev5}/tests/__init__.py +0 -0
- {wry-0.5.1.dev3 → wry-0.5.1.dev5}/tests/features/__init__.py +0 -0
- {wry-0.5.1.dev3 → wry-0.5.1.dev5}/tests/features/test_auto_model.py +0 -0
- {wry-0.5.1.dev3 → wry-0.5.1.dev5}/tests/features/test_inheritance.py +0 -0
- {wry-0.5.1.dev3 → wry-0.5.1.dev5}/tests/features/test_multi_model.py +0 -0
- {wry-0.5.1.dev3 → wry-0.5.1.dev5}/tests/features/test_source_precedence.py +0 -0
- {wry-0.5.1.dev3 → wry-0.5.1.dev5}/tests/integration/__init__.py +0 -0
- {wry-0.5.1.dev3 → wry-0.5.1.dev5}/tests/integration/test_click_edge_cases.py +0 -0
- {wry-0.5.1.dev3 → wry-0.5.1.dev5}/tests/integration/test_click_integration.py +0 -0
- {wry-0.5.1.dev3 → wry-0.5.1.dev5}/tests/integration/test_click_integration_extended.py +0 -0
- {wry-0.5.1.dev3 → wry-0.5.1.dev5}/tests/integration/test_context_handling.py +0 -0
- {wry-0.5.1.dev3 → wry-0.5.1.dev5}/tests/unit/__init__.py +0 -0
- {wry-0.5.1.dev3 → wry-0.5.1.dev5}/tests/unit/auto_model/__init__.py +0 -0
- {wry-0.5.1.dev3 → wry-0.5.1.dev5}/tests/unit/auto_model/test_auto_model_annotation_inference.py +0 -0
- {wry-0.5.1.dev3 → wry-0.5.1.dev5}/tests/unit/auto_model/test_auto_model_edge_cases.py +0 -0
- {wry-0.5.1.dev3 → wry-0.5.1.dev5}/tests/unit/auto_model/test_auto_model_field_processing.py +0 -0
- {wry-0.5.1.dev3 → wry-0.5.1.dev5}/tests/unit/auto_model/test_auto_model_list_fields.py +0 -0
- {wry-0.5.1.dev3 → wry-0.5.1.dev5}/tests/unit/auto_model/test_comma_separated_lists.py +0 -0
- {wry-0.5.1.dev3 → wry-0.5.1.dev5}/tests/unit/auto_model/test_field_annotation_handling.py +0 -0
- {wry-0.5.1.dev3 → wry-0.5.1.dev5}/tests/unit/auto_model/test_field_annotations.py +0 -0
- {wry-0.5.1.dev3 → wry-0.5.1.dev5}/tests/unit/auto_model/test_type_inference.py +0 -0
- {wry-0.5.1.dev3 → wry-0.5.1.dev5}/tests/unit/click/README_TESTING_STRATEGY.md +0 -0
- {wry-0.5.1.dev3 → wry-0.5.1.dev5}/tests/unit/click/__init__.py +0 -0
- {wry-0.5.1.dev3 → wry-0.5.1.dev5}/tests/unit/click/test_argument_types.py +0 -0
- {wry-0.5.1.dev3 → wry-0.5.1.dev5}/tests/unit/click/test_bool_flag_handling.py +0 -0
- {wry-0.5.1.dev3 → wry-0.5.1.dev5}/tests/unit/click/test_click_config_building.py +0 -0
- {wry-0.5.1.dev3 → wry-0.5.1.dev5}/tests/unit/click/test_click_constraint_formatting.py +0 -0
- {wry-0.5.1.dev3 → wry-0.5.1.dev5}/tests/unit/click/test_click_decorator_edge_cases.py +0 -0
- {wry-0.5.1.dev3 → wry-0.5.1.dev5}/tests/unit/click/test_click_interval_constraints.py +0 -0
- {wry-0.5.1.dev3 → wry-0.5.1.dev5}/tests/unit/click/test_click_lambda_parsing.py +0 -0
- {wry-0.5.1.dev3 → wry-0.5.1.dev5}/tests/unit/click/test_click_length_constraints.py +0 -0
- {wry-0.5.1.dev3 → wry-0.5.1.dev5}/tests/unit/click/test_click_parameter_generation.py +0 -0
- {wry-0.5.1.dev3 → wry-0.5.1.dev5}/tests/unit/click/test_click_predicate_handling.py +0 -0
- {wry-0.5.1.dev3 → wry-0.5.1.dev5}/tests/unit/click/test_closure_extraction_errors.py +0 -0
- {wry-0.5.1.dev3 → wry-0.5.1.dev5}/tests/unit/click/test_closure_handling.py +0 -0
- {wry-0.5.1.dev3 → wry-0.5.1.dev5}/tests/unit/click/test_constraint_behavior.py +0 -0
- {wry-0.5.1.dev3 → wry-0.5.1.dev5}/tests/unit/click/test_constraint_edge_cases.py +0 -0
- {wry-0.5.1.dev3 → wry-0.5.1.dev5}/tests/unit/click/test_env_vars_option.py +0 -0
- {wry-0.5.1.dev3 → wry-0.5.1.dev5}/tests/unit/click/test_explicit_argument_help_injection.py +0 -0
- {wry-0.5.1.dev3 → wry-0.5.1.dev5}/tests/unit/click/test_field_alias_with_click_options.py +0 -0
- {wry-0.5.1.dev3 → wry-0.5.1.dev5}/tests/unit/click/test_format_constraint_text.py +0 -0
- {wry-0.5.1.dev3 → wry-0.5.1.dev5}/tests/unit/click/test_json_config_loading.py +0 -0
- {wry-0.5.1.dev3 → wry-0.5.1.dev5}/tests/unit/click/test_lambda_behavior.py +0 -0
- {wry-0.5.1.dev3 → wry-0.5.1.dev5}/tests/unit/click/test_lambda_error_handling.py +0 -0
- {wry-0.5.1.dev3 → wry-0.5.1.dev5}/tests/unit/click/test_predicate_source_errors.py +0 -0
- {wry-0.5.1.dev3 → wry-0.5.1.dev5}/tests/unit/click/test_strict_mode_errors.py +0 -0
- {wry-0.5.1.dev3 → wry-0.5.1.dev5}/tests/unit/click/test_type_handling.py +0 -0
- {wry-0.5.1.dev3 → wry-0.5.1.dev5}/tests/unit/core/__init__.py +0 -0
- {wry-0.5.1.dev3 → wry-0.5.1.dev5}/tests/unit/core/test_accessors.py +0 -0
- {wry-0.5.1.dev3 → wry-0.5.1.dev5}/tests/unit/core/test_advanced_features.py +0 -0
- {wry-0.5.1.dev3 → wry-0.5.1.dev5}/tests/unit/core/test_core.py +0 -0
- {wry-0.5.1.dev3 → wry-0.5.1.dev5}/tests/unit/core/test_edge_cases.py +0 -0
- {wry-0.5.1.dev3 → wry-0.5.1.dev5}/tests/unit/core/test_env_utils.py +0 -0
- {wry-0.5.1.dev3 → wry-0.5.1.dev5}/tests/unit/core/test_field_constraint_extraction.py +0 -0
- {wry-0.5.1.dev3 → wry-0.5.1.dev5}/tests/unit/core/test_field_utils.py +0 -0
- {wry-0.5.1.dev3 → wry-0.5.1.dev5}/tests/unit/core/test_field_utils_edge_cases.py +0 -0
- {wry-0.5.1.dev3 → wry-0.5.1.dev5}/tests/unit/core/test_sources.py +0 -0
- {wry-0.5.1.dev3 → wry-0.5.1.dev5}/tests/unit/core/test_type_checking_blocks.py +0 -0
- {wry-0.5.1.dev3 → wry-0.5.1.dev5}/tests/unit/model/__init__.py +0 -0
- {wry-0.5.1.dev3 → wry-0.5.1.dev5}/tests/unit/model/test_accessor_caching.py +0 -0
- {wry-0.5.1.dev3 → wry-0.5.1.dev5}/tests/unit/model/test_extract_edge_cases.py +0 -0
- {wry-0.5.1.dev3 → wry-0.5.1.dev5}/tests/unit/model/test_extract_subset_edge_cases.py +0 -0
- {wry-0.5.1.dev3 → wry-0.5.1.dev5}/tests/unit/model/test_model_click_context_handling.py +0 -0
- {wry-0.5.1.dev3 → wry-0.5.1.dev5}/tests/unit/model/test_model_data_extraction.py +0 -0
- {wry-0.5.1.dev3 → wry-0.5.1.dev5}/tests/unit/model/test_model_default_handling.py +0 -0
- {wry-0.5.1.dev3 → wry-0.5.1.dev5}/tests/unit/model/test_model_edge_cases.py +0 -0
- {wry-0.5.1.dev3 → wry-0.5.1.dev5}/tests/unit/model/test_model_environment_integration.py +0 -0
- {wry-0.5.1.dev3 → wry-0.5.1.dev5}/tests/unit/model/test_model_extract_subset_edge_cases.py +0 -0
- {wry-0.5.1.dev3 → wry-0.5.1.dev5}/tests/unit/model/test_model_extraction_methods.py +0 -0
- {wry-0.5.1.dev3 → wry-0.5.1.dev5}/tests/unit/model/test_model_field_errors.py +0 -0
- {wry-0.5.1.dev3 → wry-0.5.1.dev5}/tests/unit/model/test_model_object_extraction.py +0 -0
- {wry-0.5.1.dev3 → wry-0.5.1.dev5}/tests/unit/model/test_non_dict_object_extraction.py +0 -0
- {wry-0.5.1.dev3 → wry-0.5.1.dev5}/tests/unit/model/test_object_attribute_extraction.py +0 -0
- {wry-0.5.1.dev3 → wry-0.5.1.dev5}/tests/unit/multi_model/__init__.py +0 -0
- {wry-0.5.1.dev3 → wry-0.5.1.dev5}/tests/unit/multi_model/test_multi_model.py +0 -0
- {wry-0.5.1.dev3 → wry-0.5.1.dev5}/tests/unit/multi_model/test_type_checking.py +0 -0
- {wry-0.5.1.dev3 → wry-0.5.1.dev5}/tests/unit/test_argument_help_injection.py +0 -0
- {wry-0.5.1.dev3 → wry-0.5.1.dev5}/tests/unit/test_auto_model_field_processing.py +0 -0
- {wry-0.5.1.dev3 → wry-0.5.1.dev5}/tests/unit/test_comprehensive_imports.py +0 -0
- {wry-0.5.1.dev3 → wry-0.5.1.dev5}/tests/unit/test_exclude_enum.py +0 -0
- {wry-0.5.1.dev3 → wry-0.5.1.dev5}/tests/unit/test_generate_click_classmethod.py +0 -0
- {wry-0.5.1.dev3 → wry-0.5.1.dev5}/tests/unit/test_help_system.py +0 -0
- {wry-0.5.1.dev3 → wry-0.5.1.dev5}/tests/unit/test_init.py +0 -0
- {wry-0.5.1.dev3 → wry-0.5.1.dev5}/tests/unit/test_init_edge_cases.py +0 -0
- {wry-0.5.1.dev3 → wry-0.5.1.dev5}/tests/unit/test_init_version_edge_cases.py +0 -0
- {wry-0.5.1.dev3 → wry-0.5.1.dev5}/tests/unit/test_model_extraction_methods.py +0 -0
- {wry-0.5.1.dev3 → wry-0.5.1.dev5}/tests/unit/test_multiple_option_bug.py +0 -0
- {wry-0.5.1.dev3 → wry-0.5.1.dev5}/tests/unit/test_type_checking_imports.py +0 -0
- {wry-0.5.1.dev3 → wry-0.5.1.dev5}/tests/unit/test_variadic_argument_bug.py +0 -0
- {wry-0.5.1.dev3 → wry-0.5.1.dev5}/tests/unit/test_version_fallback.py +0 -0
- {wry-0.5.1.dev3 → wry-0.5.1.dev5}/tests/unit/test_version_parsing.py +0 -0
- {wry-0.5.1.dev3 → wry-0.5.1.dev5}/wry/__init__.py +0 -0
- {wry-0.5.1.dev3 → wry-0.5.1.dev5}/wry/auto_model.py +0 -0
- {wry-0.5.1.dev3 → wry-0.5.1.dev5}/wry/click_integration.py +0 -0
- {wry-0.5.1.dev3 → wry-0.5.1.dev5}/wry/comma_separated.py +0 -0
- {wry-0.5.1.dev3 → wry-0.5.1.dev5}/wry/core/__init__.py +0 -0
- {wry-0.5.1.dev3 → wry-0.5.1.dev5}/wry/core/accessors.py +0 -0
- {wry-0.5.1.dev3 → wry-0.5.1.dev5}/wry/core/env_utils.py +0 -0
- {wry-0.5.1.dev3 → wry-0.5.1.dev5}/wry/core/field_utils.py +0 -0
- {wry-0.5.1.dev3 → wry-0.5.1.dev5}/wry/core/model.py +0 -0
- {wry-0.5.1.dev3 → wry-0.5.1.dev5}/wry/core/sources.py +0 -0
- {wry-0.5.1.dev3 → wry-0.5.1.dev5}/wry/help_system.py +0 -0
- {wry-0.5.1.dev3 → wry-0.5.1.dev5}/wry/multi_model.py +0 -0
- {wry-0.5.1.dev3 → wry-0.5.1.dev5}/wry/py.typed +0 -0
- {wry-0.5.1.dev3 → wry-0.5.1.dev5}/wry.egg-info/SOURCES.txt +0 -0
- {wry-0.5.1.dev3 → wry-0.5.1.dev5}/wry.egg-info/dependency_links.txt +0 -0
- {wry-0.5.1.dev3 → wry-0.5.1.dev5}/wry.egg-info/requires.txt +0 -0
- {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. **
|
|
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-
|
|
4
|
-
**Version**: 0.
|
|
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**:
|
|
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 (
|
|
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
|
-
-
|
|
2823
|
-
- Reference this knowledge base for details
|
|
2824
|
-
- Check
|
|
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.
|
|
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.
|
|
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.
|
|
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
|
|
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
|
|
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.
|
|
32
|
-
__version_tuple__ = version_tuple = (0, 5, 1, '
|
|
31
|
+
__version__ = version = '0.5.1.dev5'
|
|
32
|
+
__version_tuple__ = version_tuple = (0, 5, 1, 'dev5')
|
|
33
33
|
|
|
34
|
-
__commit_id__ = commit_id = '
|
|
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.
|
|
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
|
|
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
|
|
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
|
{wry-0.5.1.dev3 → wry-0.5.1.dev5}/tests/unit/auto_model/test_auto_model_annotation_inference.py
RENAMED
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|