wry 0.2.4.dev2__tar.gz → 0.3.1__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.2.4.dev2 → wry-0.3.1}/.gitignore +3 -0
- {wry-0.2.4.dev2 → wry-0.3.1}/CHANGELOG.md +7 -0
- {wry-0.2.4.dev2/wry.egg-info → wry-0.3.1}/PKG-INFO +1 -1
- {wry-0.2.4.dev2 → wry-0.3.1}/pyproject.toml +5 -6
- {wry-0.2.4.dev2 → wry-0.3.1}/tests/unit/test_init_edge_cases.py +2 -2
- {wry-0.2.4.dev2 → wry-0.3.1}/wry/__init__.py +21 -4
- {wry-0.2.4.dev2 → wry-0.3.1}/wry/_version.py +3 -3
- {wry-0.2.4.dev2 → wry-0.3.1/wry.egg-info}/PKG-INFO +1 -1
- {wry-0.2.4.dev2 → wry-0.3.1}/.github/workflows/ci-cd.yml +0 -0
- {wry-0.2.4.dev2 → wry-0.3.1}/.markdownlint.json +0 -0
- {wry-0.2.4.dev2 → wry-0.3.1}/.pre-commit-config.yaml +0 -0
- {wry-0.2.4.dev2 → wry-0.3.1}/AI_KNOWLEDGE_BASE.md +0 -0
- {wry-0.2.4.dev2 → wry-0.3.1}/LICENSE +0 -0
- {wry-0.2.4.dev2 → wry-0.3.1}/README.md +0 -0
- {wry-0.2.4.dev2 → wry-0.3.1}/RELEASE_PROCESS.md +0 -0
- {wry-0.2.4.dev2 → wry-0.3.1}/TODO.md +0 -0
- {wry-0.2.4.dev2 → wry-0.3.1}/check.sh +0 -0
- {wry-0.2.4.dev2 → wry-0.3.1}/examples/argument_help_injection.py +0 -0
- {wry-0.2.4.dev2 → wry-0.3.1}/examples/auto_instantiate_edge_cases.py +0 -0
- {wry-0.2.4.dev2 → wry-0.3.1}/examples/auto_instantiate_poc.py +0 -0
- {wry-0.2.4.dev2 → wry-0.3.1}/examples/auto_model_example.py +0 -0
- {wry-0.2.4.dev2 → wry-0.3.1}/examples/config.json +0 -0
- {wry-0.2.4.dev2 → wry-0.3.1}/examples/explicit_argument_help.py +0 -0
- {wry-0.2.4.dev2 → wry-0.3.1}/examples/field_exclusion.py +0 -0
- {wry-0.2.4.dev2 → wry-0.3.1}/examples/field_exclusion_example.py +0 -0
- {wry-0.2.4.dev2 → wry-0.3.1}/examples/intermediate_example.py +0 -0
- {wry-0.2.4.dev2 → wry-0.3.1}/examples/multi_model_example.py +0 -0
- {wry-0.2.4.dev2 → wry-0.3.1}/examples/sample_config.json +0 -0
- {wry-0.2.4.dev2 → wry-0.3.1}/examples/simple_cli.py +0 -0
- {wry-0.2.4.dev2 → wry-0.3.1}/examples/source_tracking_comprehensive.py +0 -0
- {wry-0.2.4.dev2 → wry-0.3.1}/examples/source_tracking_example.py +0 -0
- {wry-0.2.4.dev2 → wry-0.3.1}/scripts/README.md +0 -0
- {wry-0.2.4.dev2 → wry-0.3.1}/scripts/extract_release_notes.py +0 -0
- {wry-0.2.4.dev2 → wry-0.3.1}/scripts/test_all_versions.sh +0 -0
- {wry-0.2.4.dev2 → wry-0.3.1}/scripts/test_ci_locally.sh +0 -0
- {wry-0.2.4.dev2 → wry-0.3.1}/scripts/test_with_act.sh +0 -0
- {wry-0.2.4.dev2 → wry-0.3.1}/scripts/update-dependencies.sh +0 -0
- {wry-0.2.4.dev2 → wry-0.3.1}/setup.cfg +0 -0
- {wry-0.2.4.dev2 → wry-0.3.1}/tests/README.md +0 -0
- {wry-0.2.4.dev2 → wry-0.3.1}/tests/__init__.py +0 -0
- {wry-0.2.4.dev2 → wry-0.3.1}/tests/features/__init__.py +0 -0
- {wry-0.2.4.dev2 → wry-0.3.1}/tests/features/test_auto_model.py +0 -0
- {wry-0.2.4.dev2 → wry-0.3.1}/tests/features/test_multi_model.py +0 -0
- {wry-0.2.4.dev2 → wry-0.3.1}/tests/features/test_source_precedence.py +0 -0
- {wry-0.2.4.dev2 → wry-0.3.1}/tests/integration/__init__.py +0 -0
- {wry-0.2.4.dev2 → wry-0.3.1}/tests/integration/test_click_edge_cases.py +0 -0
- {wry-0.2.4.dev2 → wry-0.3.1}/tests/integration/test_click_integration.py +0 -0
- {wry-0.2.4.dev2 → wry-0.3.1}/tests/integration/test_click_integration_extended.py +0 -0
- {wry-0.2.4.dev2 → wry-0.3.1}/tests/integration/test_context_handling.py +0 -0
- {wry-0.2.4.dev2 → wry-0.3.1}/tests/unit/__init__.py +0 -0
- {wry-0.2.4.dev2 → wry-0.3.1}/tests/unit/auto_model/__init__.py +0 -0
- {wry-0.2.4.dev2 → wry-0.3.1}/tests/unit/auto_model/test_auto_model_annotation_inference.py +0 -0
- {wry-0.2.4.dev2 → wry-0.3.1}/tests/unit/auto_model/test_auto_model_edge_cases.py +0 -0
- {wry-0.2.4.dev2 → wry-0.3.1}/tests/unit/auto_model/test_auto_model_field_processing.py +0 -0
- {wry-0.2.4.dev2 → wry-0.3.1}/tests/unit/auto_model/test_field_annotation_handling.py +0 -0
- {wry-0.2.4.dev2 → wry-0.3.1}/tests/unit/auto_model/test_field_annotations.py +0 -0
- {wry-0.2.4.dev2 → wry-0.3.1}/tests/unit/auto_model/test_type_inference.py +0 -0
- {wry-0.2.4.dev2 → wry-0.3.1}/tests/unit/click/README_TESTING_STRATEGY.md +0 -0
- {wry-0.2.4.dev2 → wry-0.3.1}/tests/unit/click/__init__.py +0 -0
- {wry-0.2.4.dev2 → wry-0.3.1}/tests/unit/click/test_argument_types.py +0 -0
- {wry-0.2.4.dev2 → wry-0.3.1}/tests/unit/click/test_bool_flag_handling.py +0 -0
- {wry-0.2.4.dev2 → wry-0.3.1}/tests/unit/click/test_click_config_building.py +0 -0
- {wry-0.2.4.dev2 → wry-0.3.1}/tests/unit/click/test_click_constraint_formatting.py +0 -0
- {wry-0.2.4.dev2 → wry-0.3.1}/tests/unit/click/test_click_decorator_edge_cases.py +0 -0
- {wry-0.2.4.dev2 → wry-0.3.1}/tests/unit/click/test_click_interval_constraints.py +0 -0
- {wry-0.2.4.dev2 → wry-0.3.1}/tests/unit/click/test_click_lambda_parsing.py +0 -0
- {wry-0.2.4.dev2 → wry-0.3.1}/tests/unit/click/test_click_length_constraints.py +0 -0
- {wry-0.2.4.dev2 → wry-0.3.1}/tests/unit/click/test_click_parameter_generation.py +0 -0
- {wry-0.2.4.dev2 → wry-0.3.1}/tests/unit/click/test_click_predicate_handling.py +0 -0
- {wry-0.2.4.dev2 → wry-0.3.1}/tests/unit/click/test_closure_extraction_errors.py +0 -0
- {wry-0.2.4.dev2 → wry-0.3.1}/tests/unit/click/test_closure_handling.py +0 -0
- {wry-0.2.4.dev2 → wry-0.3.1}/tests/unit/click/test_constraint_behavior.py +0 -0
- {wry-0.2.4.dev2 → wry-0.3.1}/tests/unit/click/test_constraint_edge_cases.py +0 -0
- {wry-0.2.4.dev2 → wry-0.3.1}/tests/unit/click/test_env_vars_option.py +0 -0
- {wry-0.2.4.dev2 → wry-0.3.1}/tests/unit/click/test_explicit_argument_help_injection.py +0 -0
- {wry-0.2.4.dev2 → wry-0.3.1}/tests/unit/click/test_format_constraint_text.py +0 -0
- {wry-0.2.4.dev2 → wry-0.3.1}/tests/unit/click/test_json_config_loading.py +0 -0
- {wry-0.2.4.dev2 → wry-0.3.1}/tests/unit/click/test_lambda_behavior.py +0 -0
- {wry-0.2.4.dev2 → wry-0.3.1}/tests/unit/click/test_lambda_error_handling.py +0 -0
- {wry-0.2.4.dev2 → wry-0.3.1}/tests/unit/click/test_predicate_source_errors.py +0 -0
- {wry-0.2.4.dev2 → wry-0.3.1}/tests/unit/click/test_strict_mode_errors.py +0 -0
- {wry-0.2.4.dev2 → wry-0.3.1}/tests/unit/click/test_type_handling.py +0 -0
- {wry-0.2.4.dev2 → wry-0.3.1}/tests/unit/core/__init__.py +0 -0
- {wry-0.2.4.dev2 → wry-0.3.1}/tests/unit/core/test_accessors.py +0 -0
- {wry-0.2.4.dev2 → wry-0.3.1}/tests/unit/core/test_advanced_features.py +0 -0
- {wry-0.2.4.dev2 → wry-0.3.1}/tests/unit/core/test_core.py +0 -0
- {wry-0.2.4.dev2 → wry-0.3.1}/tests/unit/core/test_edge_cases.py +0 -0
- {wry-0.2.4.dev2 → wry-0.3.1}/tests/unit/core/test_env_utils.py +0 -0
- {wry-0.2.4.dev2 → wry-0.3.1}/tests/unit/core/test_field_constraint_extraction.py +0 -0
- {wry-0.2.4.dev2 → wry-0.3.1}/tests/unit/core/test_field_utils.py +0 -0
- {wry-0.2.4.dev2 → wry-0.3.1}/tests/unit/core/test_field_utils_edge_cases.py +0 -0
- {wry-0.2.4.dev2 → wry-0.3.1}/tests/unit/core/test_sources.py +0 -0
- {wry-0.2.4.dev2 → wry-0.3.1}/tests/unit/core/test_type_checking_blocks.py +0 -0
- {wry-0.2.4.dev2 → wry-0.3.1}/tests/unit/model/__init__.py +0 -0
- {wry-0.2.4.dev2 → wry-0.3.1}/tests/unit/model/test_accessor_caching.py +0 -0
- {wry-0.2.4.dev2 → wry-0.3.1}/tests/unit/model/test_extract_edge_cases.py +0 -0
- {wry-0.2.4.dev2 → wry-0.3.1}/tests/unit/model/test_extract_subset_edge_cases.py +0 -0
- {wry-0.2.4.dev2 → wry-0.3.1}/tests/unit/model/test_model_click_context_handling.py +0 -0
- {wry-0.2.4.dev2 → wry-0.3.1}/tests/unit/model/test_model_data_extraction.py +0 -0
- {wry-0.2.4.dev2 → wry-0.3.1}/tests/unit/model/test_model_default_handling.py +0 -0
- {wry-0.2.4.dev2 → wry-0.3.1}/tests/unit/model/test_model_edge_cases.py +0 -0
- {wry-0.2.4.dev2 → wry-0.3.1}/tests/unit/model/test_model_environment_integration.py +0 -0
- {wry-0.2.4.dev2 → wry-0.3.1}/tests/unit/model/test_model_extract_subset_edge_cases.py +0 -0
- {wry-0.2.4.dev2 → wry-0.3.1}/tests/unit/model/test_model_extraction_methods.py +0 -0
- {wry-0.2.4.dev2 → wry-0.3.1}/tests/unit/model/test_model_field_errors.py +0 -0
- {wry-0.2.4.dev2 → wry-0.3.1}/tests/unit/model/test_model_object_extraction.py +0 -0
- {wry-0.2.4.dev2 → wry-0.3.1}/tests/unit/model/test_non_dict_object_extraction.py +0 -0
- {wry-0.2.4.dev2 → wry-0.3.1}/tests/unit/model/test_object_attribute_extraction.py +0 -0
- {wry-0.2.4.dev2 → wry-0.3.1}/tests/unit/multi_model/__init__.py +0 -0
- {wry-0.2.4.dev2 → wry-0.3.1}/tests/unit/multi_model/test_multi_model.py +0 -0
- {wry-0.2.4.dev2 → wry-0.3.1}/tests/unit/multi_model/test_type_checking.py +0 -0
- {wry-0.2.4.dev2 → wry-0.3.1}/tests/unit/test_argument_help_injection.py +0 -0
- {wry-0.2.4.dev2 → wry-0.3.1}/tests/unit/test_auto_model_field_processing.py +0 -0
- {wry-0.2.4.dev2 → wry-0.3.1}/tests/unit/test_comprehensive_imports.py +0 -0
- {wry-0.2.4.dev2 → wry-0.3.1}/tests/unit/test_exclude_enum.py +0 -0
- {wry-0.2.4.dev2 → wry-0.3.1}/tests/unit/test_generate_click_classmethod.py +0 -0
- {wry-0.2.4.dev2 → wry-0.3.1}/tests/unit/test_help_system.py +0 -0
- {wry-0.2.4.dev2 → wry-0.3.1}/tests/unit/test_init.py +0 -0
- {wry-0.2.4.dev2 → wry-0.3.1}/tests/unit/test_init_version_edge_cases.py +0 -0
- {wry-0.2.4.dev2 → wry-0.3.1}/tests/unit/test_model_extraction_methods.py +0 -0
- {wry-0.2.4.dev2 → wry-0.3.1}/tests/unit/test_multiple_option_bug.py +0 -0
- {wry-0.2.4.dev2 → wry-0.3.1}/tests/unit/test_type_checking_imports.py +0 -0
- {wry-0.2.4.dev2 → wry-0.3.1}/tests/unit/test_variadic_argument_bug.py +0 -0
- {wry-0.2.4.dev2 → wry-0.3.1}/tests/unit/test_version_fallback.py +0 -0
- {wry-0.2.4.dev2 → wry-0.3.1}/tests/unit/test_version_parsing.py +0 -0
- {wry-0.2.4.dev2 → wry-0.3.1}/wry/auto_model.py +0 -0
- {wry-0.2.4.dev2 → wry-0.3.1}/wry/click_integration.py +0 -0
- {wry-0.2.4.dev2 → wry-0.3.1}/wry/core/__init__.py +0 -0
- {wry-0.2.4.dev2 → wry-0.3.1}/wry/core/accessors.py +0 -0
- {wry-0.2.4.dev2 → wry-0.3.1}/wry/core/env_utils.py +0 -0
- {wry-0.2.4.dev2 → wry-0.3.1}/wry/core/field_utils.py +0 -0
- {wry-0.2.4.dev2 → wry-0.3.1}/wry/core/model.py +0 -0
- {wry-0.2.4.dev2 → wry-0.3.1}/wry/core/sources.py +0 -0
- {wry-0.2.4.dev2 → wry-0.3.1}/wry/help_system.py +0 -0
- {wry-0.2.4.dev2 → wry-0.3.1}/wry/multi_model.py +0 -0
- {wry-0.2.4.dev2 → wry-0.3.1}/wry/py.typed +0 -0
- {wry-0.2.4.dev2 → wry-0.3.1}/wry.egg-info/SOURCES.txt +0 -0
- {wry-0.2.4.dev2 → wry-0.3.1}/wry.egg-info/dependency_links.txt +0 -0
- {wry-0.2.4.dev2 → wry-0.3.1}/wry.egg-info/requires.txt +0 -0
- {wry-0.2.4.dev2 → wry-0.3.1}/wry.egg-info/top_level.txt +0 -0
|
@@ -7,6 +7,13 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
|
7
7
|
|
|
8
8
|
## [Unreleased]
|
|
9
9
|
|
|
10
|
+
## [0.3.1] - 2025-10-02
|
|
11
|
+
|
|
12
|
+
### Fixed
|
|
13
|
+
|
|
14
|
+
- CI/CD build configuration for setuptools-scm
|
|
15
|
+
- Version generation now works correctly with git tags
|
|
16
|
+
|
|
10
17
|
## [0.3.0] - 2025-10-02
|
|
11
18
|
|
|
12
19
|
### Changed
|
|
@@ -61,14 +61,13 @@ wry = ["py.typed"]
|
|
|
61
61
|
|
|
62
62
|
[tool.setuptools_scm]
|
|
63
63
|
# Get version from git tags
|
|
64
|
-
|
|
64
|
+
write_to = "wry/_version.py"
|
|
65
|
+
fallback_version = "0.0.1.dev0"
|
|
66
|
+
# Configure version string that includes git info in metadata
|
|
67
|
+
# Use "guess-next-dev" to generate next patch .devN versions between releases
|
|
68
|
+
# These show as pre-releases on PyPI (unlike .postN versions)
|
|
65
69
|
version_scheme = "guess-next-dev"
|
|
66
70
|
local_scheme = "no-local-version"
|
|
67
|
-
write_to_template = """# File generated by setuptools-scm
|
|
68
|
-
__version__ = "{version}"
|
|
69
|
-
__version_tuple__ = version_tuple = {version_tuple}
|
|
70
|
-
__commit_id__ = "{scm_version.node}"
|
|
71
|
-
"""
|
|
72
71
|
|
|
73
72
|
[tool.ruff]
|
|
74
73
|
target-version = "py310"
|
|
@@ -28,7 +28,7 @@ class TestVersionParsingEdgeCases:
|
|
|
28
28
|
# Should fall back to default version
|
|
29
29
|
assert hasattr(wry, "__version__")
|
|
30
30
|
# With setuptools-scm, falls back to placeholder
|
|
31
|
-
assert wry.__version__ == "0.0.
|
|
31
|
+
assert wry.__version__ == "0.0.1-dev"
|
|
32
32
|
assert hasattr(wry, "__commit_id__")
|
|
33
33
|
assert wry.__commit_id__ is None
|
|
34
34
|
|
|
@@ -48,7 +48,7 @@ class TestVersionParsingEdgeCases:
|
|
|
48
48
|
import wry
|
|
49
49
|
|
|
50
50
|
# Should use fallback version
|
|
51
|
-
assert wry.__version__ == "0.0.
|
|
51
|
+
assert wry.__version__ == "0.0.1-dev"
|
|
52
52
|
assert hasattr(wry, "__commit_id__")
|
|
53
53
|
assert wry.__commit_id__ is None
|
|
54
54
|
|
|
@@ -55,10 +55,27 @@ try:
|
|
|
55
55
|
if __commit_id__:
|
|
56
56
|
__version_full__ += f"+{__commit_id__}"
|
|
57
57
|
except ImportError:
|
|
58
|
-
# Fallback for development
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
58
|
+
# Fallback for development/editable installs
|
|
59
|
+
try:
|
|
60
|
+
# Try to get version dynamically for editable installs
|
|
61
|
+
from setuptools_scm import get_version
|
|
62
|
+
|
|
63
|
+
__version__ = get_version(root="../..", relative_to=__file__)
|
|
64
|
+
# Extract commit hash from version if present
|
|
65
|
+
if "+" in __version__ and "g" in __version__:
|
|
66
|
+
# Version like "0.0.2+g1234567" or "0.0.2.dev1+g1234567"
|
|
67
|
+
__commit_id__ = __version__.split("+")[-1].split(".")[0]
|
|
68
|
+
__version_full__ = __version__
|
|
69
|
+
else:
|
|
70
|
+
__commit_id__ = None
|
|
71
|
+
__version_full__ = __version__
|
|
72
|
+
# Clean version for consistency
|
|
73
|
+
__version__ = __version__.split("+")[0]
|
|
74
|
+
except Exception:
|
|
75
|
+
# Ultimate fallback
|
|
76
|
+
__version__ = "0.0.1-dev"
|
|
77
|
+
__version_full__ = __version__
|
|
78
|
+
__commit_id__ = None
|
|
62
79
|
|
|
63
80
|
__author__ = "Tyler House"
|
|
64
81
|
__email__ = "26489166+tahouse@users.noreply.github.com"
|
|
@@ -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.
|
|
32
|
-
__version_tuple__ = version_tuple = (0,
|
|
31
|
+
__version__ = version = '0.3.1'
|
|
32
|
+
__version_tuple__ = version_tuple = (0, 3, 1)
|
|
33
33
|
|
|
34
|
-
__commit_id__ = commit_id = '
|
|
34
|
+
__commit_id__ = commit_id = 'gebefb4a69'
|
|
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
|
|
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
|