wry 0.1.9.dev1__tar.gz → 0.1.9.dev2__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.1.9.dev1 → wry-0.1.9.dev2}/PKG-INFO +1 -1
- wry-0.1.9.dev2/RELEASE_PROCESS.md +80 -0
- {wry-0.1.9.dev1 → wry-0.1.9.dev2}/wry/_version.py +3 -3
- {wry-0.1.9.dev1 → wry-0.1.9.dev2}/wry.egg-info/PKG-INFO +1 -1
- {wry-0.1.9.dev1 → wry-0.1.9.dev2}/wry.egg-info/SOURCES.txt +1 -0
- {wry-0.1.9.dev1 → wry-0.1.9.dev2}/.github/workflows/ci-cd.yml +0 -0
- {wry-0.1.9.dev1 → wry-0.1.9.dev2}/.gitignore +0 -0
- {wry-0.1.9.dev1 → wry-0.1.9.dev2}/.markdownlint.json +0 -0
- {wry-0.1.9.dev1 → wry-0.1.9.dev2}/.pre-commit-config.yaml +0 -0
- {wry-0.1.9.dev1 → wry-0.1.9.dev2}/CHANGELOG.md +0 -0
- {wry-0.1.9.dev1 → wry-0.1.9.dev2}/LICENSE +0 -0
- {wry-0.1.9.dev1 → wry-0.1.9.dev2}/README.md +0 -0
- {wry-0.1.9.dev1 → wry-0.1.9.dev2}/TODO.md +0 -0
- {wry-0.1.9.dev1 → wry-0.1.9.dev2}/check.sh +0 -0
- {wry-0.1.9.dev1 → wry-0.1.9.dev2}/examples/auto_model_example.py +0 -0
- {wry-0.1.9.dev1 → wry-0.1.9.dev2}/examples/config.json +0 -0
- {wry-0.1.9.dev1 → wry-0.1.9.dev2}/examples/intermediate_example.py +0 -0
- {wry-0.1.9.dev1 → wry-0.1.9.dev2}/examples/multi_model_example.py +0 -0
- {wry-0.1.9.dev1 → wry-0.1.9.dev2}/examples/simple_cli.py +0 -0
- {wry-0.1.9.dev1 → wry-0.1.9.dev2}/examples/source_tracking_example.py +0 -0
- {wry-0.1.9.dev1 → wry-0.1.9.dev2}/pyproject.toml +0 -0
- {wry-0.1.9.dev1 → wry-0.1.9.dev2}/scripts/README.md +0 -0
- {wry-0.1.9.dev1 → wry-0.1.9.dev2}/scripts/extract_release_notes.py +0 -0
- {wry-0.1.9.dev1 → wry-0.1.9.dev2}/scripts/test_all_versions.sh +0 -0
- {wry-0.1.9.dev1 → wry-0.1.9.dev2}/scripts/test_ci_locally.sh +0 -0
- {wry-0.1.9.dev1 → wry-0.1.9.dev2}/scripts/test_with_act.sh +0 -0
- {wry-0.1.9.dev1 → wry-0.1.9.dev2}/setup.cfg +0 -0
- {wry-0.1.9.dev1 → wry-0.1.9.dev2}/tests/README.md +0 -0
- {wry-0.1.9.dev1 → wry-0.1.9.dev2}/tests/__init__.py +0 -0
- {wry-0.1.9.dev1 → wry-0.1.9.dev2}/tests/features/__init__.py +0 -0
- {wry-0.1.9.dev1 → wry-0.1.9.dev2}/tests/features/test_auto_model.py +0 -0
- {wry-0.1.9.dev1 → wry-0.1.9.dev2}/tests/features/test_multi_model.py +0 -0
- {wry-0.1.9.dev1 → wry-0.1.9.dev2}/tests/features/test_source_precedence.py +0 -0
- {wry-0.1.9.dev1 → wry-0.1.9.dev2}/tests/integration/__init__.py +0 -0
- {wry-0.1.9.dev1 → wry-0.1.9.dev2}/tests/integration/test_click_edge_cases.py +0 -0
- {wry-0.1.9.dev1 → wry-0.1.9.dev2}/tests/integration/test_click_integration.py +0 -0
- {wry-0.1.9.dev1 → wry-0.1.9.dev2}/tests/integration/test_click_integration_extended.py +0 -0
- {wry-0.1.9.dev1 → wry-0.1.9.dev2}/tests/integration/test_context_handling.py +0 -0
- {wry-0.1.9.dev1 → wry-0.1.9.dev2}/tests/unit/__init__.py +0 -0
- {wry-0.1.9.dev1 → wry-0.1.9.dev2}/tests/unit/auto_model/__init__.py +0 -0
- {wry-0.1.9.dev1 → wry-0.1.9.dev2}/tests/unit/auto_model/test_auto_model_annotation_inference.py +0 -0
- {wry-0.1.9.dev1 → wry-0.1.9.dev2}/tests/unit/auto_model/test_auto_model_field_processing.py +0 -0
- {wry-0.1.9.dev1 → wry-0.1.9.dev2}/tests/unit/auto_model/test_field_annotation_handling.py +0 -0
- {wry-0.1.9.dev1 → wry-0.1.9.dev2}/tests/unit/auto_model/test_field_annotations.py +0 -0
- {wry-0.1.9.dev1 → wry-0.1.9.dev2}/tests/unit/auto_model/test_type_inference.py +0 -0
- {wry-0.1.9.dev1 → wry-0.1.9.dev2}/tests/unit/click/README_TESTING_STRATEGY.md +0 -0
- {wry-0.1.9.dev1 → wry-0.1.9.dev2}/tests/unit/click/__init__.py +0 -0
- {wry-0.1.9.dev1 → wry-0.1.9.dev2}/tests/unit/click/test_bool_flag_handling.py +0 -0
- {wry-0.1.9.dev1 → wry-0.1.9.dev2}/tests/unit/click/test_click_config_building.py +0 -0
- {wry-0.1.9.dev1 → wry-0.1.9.dev2}/tests/unit/click/test_click_constraint_formatting.py +0 -0
- {wry-0.1.9.dev1 → wry-0.1.9.dev2}/tests/unit/click/test_click_decorator_edge_cases.py +0 -0
- {wry-0.1.9.dev1 → wry-0.1.9.dev2}/tests/unit/click/test_click_interval_constraints.py +0 -0
- {wry-0.1.9.dev1 → wry-0.1.9.dev2}/tests/unit/click/test_click_lambda_parsing.py +0 -0
- {wry-0.1.9.dev1 → wry-0.1.9.dev2}/tests/unit/click/test_click_length_constraints.py +0 -0
- {wry-0.1.9.dev1 → wry-0.1.9.dev2}/tests/unit/click/test_click_parameter_generation.py +0 -0
- {wry-0.1.9.dev1 → wry-0.1.9.dev2}/tests/unit/click/test_click_predicate_handling.py +0 -0
- {wry-0.1.9.dev1 → wry-0.1.9.dev2}/tests/unit/click/test_closure_extraction_errors.py +0 -0
- {wry-0.1.9.dev1 → wry-0.1.9.dev2}/tests/unit/click/test_closure_handling.py +0 -0
- {wry-0.1.9.dev1 → wry-0.1.9.dev2}/tests/unit/click/test_constraint_behavior.py +0 -0
- {wry-0.1.9.dev1 → wry-0.1.9.dev2}/tests/unit/click/test_constraint_edge_cases.py +0 -0
- {wry-0.1.9.dev1 → wry-0.1.9.dev2}/tests/unit/click/test_env_vars_option.py +0 -0
- {wry-0.1.9.dev1 → wry-0.1.9.dev2}/tests/unit/click/test_json_config_loading.py +0 -0
- {wry-0.1.9.dev1 → wry-0.1.9.dev2}/tests/unit/click/test_lambda_behavior.py +0 -0
- {wry-0.1.9.dev1 → wry-0.1.9.dev2}/tests/unit/click/test_lambda_error_handling.py +0 -0
- {wry-0.1.9.dev1 → wry-0.1.9.dev2}/tests/unit/click/test_predicate_source_errors.py +0 -0
- {wry-0.1.9.dev1 → wry-0.1.9.dev2}/tests/unit/click/test_strict_mode_errors.py +0 -0
- {wry-0.1.9.dev1 → wry-0.1.9.dev2}/tests/unit/click/test_type_handling.py +0 -0
- {wry-0.1.9.dev1 → wry-0.1.9.dev2}/tests/unit/core/__init__.py +0 -0
- {wry-0.1.9.dev1 → wry-0.1.9.dev2}/tests/unit/core/test_accessors.py +0 -0
- {wry-0.1.9.dev1 → wry-0.1.9.dev2}/tests/unit/core/test_advanced_features.py +0 -0
- {wry-0.1.9.dev1 → wry-0.1.9.dev2}/tests/unit/core/test_core.py +0 -0
- {wry-0.1.9.dev1 → wry-0.1.9.dev2}/tests/unit/core/test_edge_cases.py +0 -0
- {wry-0.1.9.dev1 → wry-0.1.9.dev2}/tests/unit/core/test_env_utils.py +0 -0
- {wry-0.1.9.dev1 → wry-0.1.9.dev2}/tests/unit/core/test_field_constraint_extraction.py +0 -0
- {wry-0.1.9.dev1 → wry-0.1.9.dev2}/tests/unit/core/test_field_utils.py +0 -0
- {wry-0.1.9.dev1 → wry-0.1.9.dev2}/tests/unit/core/test_field_utils_edge_cases.py +0 -0
- {wry-0.1.9.dev1 → wry-0.1.9.dev2}/tests/unit/core/test_sources.py +0 -0
- {wry-0.1.9.dev1 → wry-0.1.9.dev2}/tests/unit/core/test_type_checking_blocks.py +0 -0
- {wry-0.1.9.dev1 → wry-0.1.9.dev2}/tests/unit/model/__init__.py +0 -0
- {wry-0.1.9.dev1 → wry-0.1.9.dev2}/tests/unit/model/test_accessor_caching.py +0 -0
- {wry-0.1.9.dev1 → wry-0.1.9.dev2}/tests/unit/model/test_extract_edge_cases.py +0 -0
- {wry-0.1.9.dev1 → wry-0.1.9.dev2}/tests/unit/model/test_model_click_context_handling.py +0 -0
- {wry-0.1.9.dev1 → wry-0.1.9.dev2}/tests/unit/model/test_model_data_extraction.py +0 -0
- {wry-0.1.9.dev1 → wry-0.1.9.dev2}/tests/unit/model/test_model_default_handling.py +0 -0
- {wry-0.1.9.dev1 → wry-0.1.9.dev2}/tests/unit/model/test_model_environment_integration.py +0 -0
- {wry-0.1.9.dev1 → wry-0.1.9.dev2}/tests/unit/model/test_model_extract_subset_edge_cases.py +0 -0
- {wry-0.1.9.dev1 → wry-0.1.9.dev2}/tests/unit/model/test_model_extraction_methods.py +0 -0
- {wry-0.1.9.dev1 → wry-0.1.9.dev2}/tests/unit/model/test_model_field_errors.py +0 -0
- {wry-0.1.9.dev1 → wry-0.1.9.dev2}/tests/unit/model/test_model_object_extraction.py +0 -0
- {wry-0.1.9.dev1 → wry-0.1.9.dev2}/tests/unit/model/test_non_dict_object_extraction.py +0 -0
- {wry-0.1.9.dev1 → wry-0.1.9.dev2}/tests/unit/model/test_object_attribute_extraction.py +0 -0
- {wry-0.1.9.dev1 → wry-0.1.9.dev2}/tests/unit/multi_model/__init__.py +0 -0
- {wry-0.1.9.dev1 → wry-0.1.9.dev2}/tests/unit/multi_model/test_multi_model.py +0 -0
- {wry-0.1.9.dev1 → wry-0.1.9.dev2}/tests/unit/multi_model/test_type_checking.py +0 -0
- {wry-0.1.9.dev1 → wry-0.1.9.dev2}/tests/unit/test_auto_model_field_processing.py +0 -0
- {wry-0.1.9.dev1 → wry-0.1.9.dev2}/tests/unit/test_comprehensive_imports.py +0 -0
- {wry-0.1.9.dev1 → wry-0.1.9.dev2}/tests/unit/test_generate_click_classmethod.py +0 -0
- {wry-0.1.9.dev1 → wry-0.1.9.dev2}/tests/unit/test_init.py +0 -0
- {wry-0.1.9.dev1 → wry-0.1.9.dev2}/tests/unit/test_init_edge_cases.py +0 -0
- {wry-0.1.9.dev1 → wry-0.1.9.dev2}/tests/unit/test_init_version_edge_cases.py +0 -0
- {wry-0.1.9.dev1 → wry-0.1.9.dev2}/tests/unit/test_model_extraction_methods.py +0 -0
- {wry-0.1.9.dev1 → wry-0.1.9.dev2}/tests/unit/test_type_checking_imports.py +0 -0
- {wry-0.1.9.dev1 → wry-0.1.9.dev2}/tests/unit/test_version_fallback.py +0 -0
- {wry-0.1.9.dev1 → wry-0.1.9.dev2}/tests/unit/test_version_parsing.py +0 -0
- {wry-0.1.9.dev1 → wry-0.1.9.dev2}/wry/__init__.py +0 -0
- {wry-0.1.9.dev1 → wry-0.1.9.dev2}/wry/auto_model.py +0 -0
- {wry-0.1.9.dev1 → wry-0.1.9.dev2}/wry/click_integration.py +0 -0
- {wry-0.1.9.dev1 → wry-0.1.9.dev2}/wry/core/__init__.py +0 -0
- {wry-0.1.9.dev1 → wry-0.1.9.dev2}/wry/core/accessors.py +0 -0
- {wry-0.1.9.dev1 → wry-0.1.9.dev2}/wry/core/env_utils.py +0 -0
- {wry-0.1.9.dev1 → wry-0.1.9.dev2}/wry/core/field_utils.py +0 -0
- {wry-0.1.9.dev1 → wry-0.1.9.dev2}/wry/core/model.py +0 -0
- {wry-0.1.9.dev1 → wry-0.1.9.dev2}/wry/core/sources.py +0 -0
- {wry-0.1.9.dev1 → wry-0.1.9.dev2}/wry/multi_model.py +0 -0
- {wry-0.1.9.dev1 → wry-0.1.9.dev2}/wry/py.typed +0 -0
- {wry-0.1.9.dev1 → wry-0.1.9.dev2}/wry.egg-info/dependency_links.txt +0 -0
- {wry-0.1.9.dev1 → wry-0.1.9.dev2}/wry.egg-info/requires.txt +0 -0
- {wry-0.1.9.dev1 → wry-0.1.9.dev2}/wry.egg-info/top_level.txt +0 -0
|
@@ -0,0 +1,80 @@
|
|
|
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
|
|
@@ -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.1.9.
|
|
32
|
-
__version_tuple__ = version_tuple = (0, 1, 9, '
|
|
31
|
+
__version__ = version = '0.1.9.dev2'
|
|
32
|
+
__version_tuple__ = version_tuple = (0, 1, 9, 'dev2')
|
|
33
33
|
|
|
34
|
-
__commit_id__ = commit_id = '
|
|
34
|
+
__commit_id__ = commit_id = 'g47bf3b2fc'
|
|
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
|
{wry-0.1.9.dev1 → wry-0.1.9.dev2}/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
|