wry 0.2.3.dev1__tar.gz → 0.2.4.dev1__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.dev1/.github/workflows/ci-cd.yml +218 -0
- wry-0.2.4.dev1/.gitignore +139 -0
- wry-0.2.4.dev1/.markdownlint.json +3 -0
- wry-0.2.4.dev1/.pre-commit-config.yaml +52 -0
- wry-0.2.4.dev1/AI_KNOWLEDGE_BASE.md +2390 -0
- wry-0.2.4.dev1/CHANGELOG.md +332 -0
- {wry-0.2.3.dev1 → wry-0.2.4.dev1}/PKG-INFO +106 -60
- {wry-0.2.3.dev1 → wry-0.2.4.dev1}/README.md +78 -44
- wry-0.2.4.dev1/RELEASE_PROCESS.md +80 -0
- wry-0.2.4.dev1/TODO.md +104 -0
- wry-0.2.4.dev1/check.sh +3 -0
- wry-0.2.4.dev1/examples/argument_help_injection.py +51 -0
- wry-0.2.4.dev1/examples/auto_instantiate_edge_cases.py +165 -0
- wry-0.2.4.dev1/examples/auto_instantiate_poc.py +330 -0
- wry-0.2.4.dev1/examples/auto_model_example.py +187 -0
- wry-0.2.4.dev1/examples/config.json +6 -0
- wry-0.2.4.dev1/examples/explicit_argument_help.py +48 -0
- wry-0.2.4.dev1/examples/field_exclusion.py +82 -0
- wry-0.2.4.dev1/examples/field_exclusion_example.py +52 -0
- wry-0.2.4.dev1/examples/intermediate_example.py +89 -0
- wry-0.2.4.dev1/examples/multi_model_example.py +171 -0
- wry-0.2.4.dev1/examples/sample_config.json +5 -0
- wry-0.2.4.dev1/examples/simple_cli.py +55 -0
- wry-0.2.4.dev1/examples/source_tracking_comprehensive.py +133 -0
- wry-0.2.4.dev1/examples/source_tracking_example.py +102 -0
- {wry-0.2.3.dev1 → wry-0.2.4.dev1}/pyproject.toml +54 -49
- wry-0.2.4.dev1/scripts/README.md +23 -0
- wry-0.2.4.dev1/scripts/extract_release_notes.py +112 -0
- wry-0.2.4.dev1/scripts/test_all_versions.sh +86 -0
- wry-0.2.4.dev1/scripts/test_ci_locally.sh +71 -0
- wry-0.2.4.dev1/scripts/test_with_act.sh +36 -0
- wry-0.2.4.dev1/scripts/update-dependencies.sh +40 -0
- wry-0.2.4.dev1/setup.cfg +4 -0
- wry-0.2.4.dev1/tests/README.md +65 -0
- wry-0.2.4.dev1/tests/__init__.py +1 -0
- wry-0.2.4.dev1/tests/features/__init__.py +1 -0
- wry-0.2.4.dev1/tests/features/test_auto_model.py +253 -0
- wry-0.2.4.dev1/tests/features/test_multi_model.py +304 -0
- wry-0.2.4.dev1/tests/features/test_source_precedence.py +302 -0
- wry-0.2.4.dev1/tests/integration/__init__.py +1 -0
- wry-0.2.4.dev1/tests/integration/test_click_edge_cases.py +171 -0
- wry-0.2.4.dev1/tests/integration/test_click_integration.py +217 -0
- wry-0.2.4.dev1/tests/integration/test_click_integration_extended.py +495 -0
- wry-0.2.4.dev1/tests/integration/test_context_handling.py +124 -0
- wry-0.2.4.dev1/tests/unit/__init__.py +1 -0
- wry-0.2.4.dev1/tests/unit/auto_model/test_auto_model_annotation_inference.py +47 -0
- wry-0.2.4.dev1/tests/unit/auto_model/test_auto_model_edge_cases.py +138 -0
- wry-0.2.4.dev1/tests/unit/auto_model/test_auto_model_field_processing.py +64 -0
- wry-0.2.4.dev1/tests/unit/auto_model/test_field_annotation_handling.py +64 -0
- wry-0.2.4.dev1/tests/unit/auto_model/test_field_annotations.py +172 -0
- wry-0.2.4.dev1/tests/unit/auto_model/test_type_inference.py +70 -0
- wry-0.2.4.dev1/tests/unit/click/README_TESTING_STRATEGY.md +50 -0
- wry-0.2.4.dev1/tests/unit/click/__init__.py +0 -0
- wry-0.2.4.dev1/tests/unit/click/test_argument_types.py +109 -0
- wry-0.2.4.dev1/tests/unit/click/test_bool_flag_handling.py +58 -0
- wry-0.2.4.dev1/tests/unit/click/test_click_config_building.py +51 -0
- wry-0.2.4.dev1/tests/unit/click/test_click_constraint_formatting.py +90 -0
- wry-0.2.4.dev1/tests/unit/click/test_click_decorator_edge_cases.py +81 -0
- wry-0.2.4.dev1/tests/unit/click/test_click_interval_constraints.py +45 -0
- wry-0.2.4.dev1/tests/unit/click/test_click_lambda_parsing.py +56 -0
- wry-0.2.4.dev1/tests/unit/click/test_click_length_constraints.py +47 -0
- wry-0.2.4.dev1/tests/unit/click/test_click_parameter_generation.py +108 -0
- wry-0.2.4.dev1/tests/unit/click/test_click_predicate_handling.py +69 -0
- wry-0.2.4.dev1/tests/unit/click/test_closure_extraction_errors.py +94 -0
- wry-0.2.4.dev1/tests/unit/click/test_closure_handling.py +82 -0
- wry-0.2.4.dev1/tests/unit/click/test_constraint_behavior.py +113 -0
- wry-0.2.4.dev1/tests/unit/click/test_constraint_edge_cases.py +84 -0
- wry-0.2.4.dev1/tests/unit/click/test_env_vars_option.py +70 -0
- wry-0.2.4.dev1/tests/unit/click/test_explicit_argument_help_injection.py +97 -0
- wry-0.2.4.dev1/tests/unit/click/test_format_constraint_text.py +183 -0
- wry-0.2.4.dev1/tests/unit/click/test_json_config_loading.py +102 -0
- wry-0.2.4.dev1/tests/unit/click/test_lambda_behavior.py +85 -0
- wry-0.2.4.dev1/tests/unit/click/test_lambda_error_handling.py +62 -0
- wry-0.2.4.dev1/tests/unit/click/test_predicate_source_errors.py +46 -0
- wry-0.2.4.dev1/tests/unit/click/test_strict_mode_errors.py +81 -0
- wry-0.2.4.dev1/tests/unit/click/test_type_handling.py +87 -0
- wry-0.2.4.dev1/tests/unit/core/__init__.py +0 -0
- wry-0.2.4.dev1/tests/unit/core/test_accessors.py +69 -0
- wry-0.2.4.dev1/tests/unit/core/test_advanced_features.py +518 -0
- wry-0.2.4.dev1/tests/unit/core/test_core.py +176 -0
- wry-0.2.4.dev1/tests/unit/core/test_edge_cases.py +291 -0
- wry-0.2.4.dev1/tests/unit/core/test_env_utils.py +73 -0
- wry-0.2.4.dev1/tests/unit/core/test_field_constraint_extraction.py +65 -0
- wry-0.2.4.dev1/tests/unit/core/test_field_utils.py +107 -0
- wry-0.2.4.dev1/tests/unit/core/test_field_utils_edge_cases.py +66 -0
- wry-0.2.4.dev1/tests/unit/core/test_sources.py +32 -0
- wry-0.2.4.dev1/tests/unit/core/test_type_checking_blocks.py +56 -0
- wry-0.2.4.dev1/tests/unit/model/__init__.py +0 -0
- wry-0.2.4.dev1/tests/unit/model/test_accessor_caching.py +78 -0
- wry-0.2.4.dev1/tests/unit/model/test_extract_edge_cases.py +118 -0
- wry-0.2.4.dev1/tests/unit/model/test_extract_subset_edge_cases.py +82 -0
- wry-0.2.4.dev1/tests/unit/model/test_model_click_context_handling.py +123 -0
- wry-0.2.4.dev1/tests/unit/model/test_model_data_extraction.py +96 -0
- wry-0.2.4.dev1/tests/unit/model/test_model_default_handling.py +74 -0
- wry-0.2.4.dev1/tests/unit/model/test_model_edge_cases.py +196 -0
- wry-0.2.4.dev1/tests/unit/model/test_model_environment_integration.py +66 -0
- wry-0.2.4.dev1/tests/unit/model/test_model_extract_subset_edge_cases.py +116 -0
- wry-0.2.4.dev1/tests/unit/model/test_model_extraction_methods.py +88 -0
- wry-0.2.4.dev1/tests/unit/model/test_model_field_errors.py +54 -0
- wry-0.2.4.dev1/tests/unit/model/test_model_object_extraction.py +102 -0
- wry-0.2.4.dev1/tests/unit/model/test_non_dict_object_extraction.py +84 -0
- wry-0.2.4.dev1/tests/unit/model/test_object_attribute_extraction.py +110 -0
- wry-0.2.4.dev1/tests/unit/multi_model/__init__.py +0 -0
- wry-0.2.4.dev1/tests/unit/multi_model/test_multi_model.py +48 -0
- wry-0.2.4.dev1/tests/unit/multi_model/test_type_checking.py +24 -0
- wry-0.2.4.dev1/tests/unit/test_argument_help_injection.py +140 -0
- wry-0.2.4.dev1/tests/unit/test_auto_model_field_processing.py +64 -0
- wry-0.2.4.dev1/tests/unit/test_comprehensive_imports.py +81 -0
- wry-0.2.4.dev1/tests/unit/test_exclude_enum.py +138 -0
- wry-0.2.4.dev1/tests/unit/test_generate_click_classmethod.py +47 -0
- wry-0.2.4.dev1/tests/unit/test_help_system.py +82 -0
- wry-0.2.4.dev1/tests/unit/test_init.py +90 -0
- wry-0.2.4.dev1/tests/unit/test_init_edge_cases.py +118 -0
- wry-0.2.4.dev1/tests/unit/test_init_version_edge_cases.py +64 -0
- wry-0.2.4.dev1/tests/unit/test_model_extraction_methods.py +88 -0
- wry-0.2.4.dev1/tests/unit/test_multiple_option_bug.py +340 -0
- wry-0.2.4.dev1/tests/unit/test_type_checking_imports.py +39 -0
- wry-0.2.4.dev1/tests/unit/test_variadic_argument_bug.py +154 -0
- wry-0.2.4.dev1/tests/unit/test_version_fallback.py +60 -0
- wry-0.2.4.dev1/tests/unit/test_version_parsing.py +62 -0
- {wry-0.2.3.dev1 → wry-0.2.4.dev1}/wry/__init__.py +9 -1
- wry-0.2.4.dev1/wry/_version.py +34 -0
- wry-0.2.4.dev1/wry/help_system.py +161 -0
- wry-0.2.4.dev1/wry/py.typed +0 -0
- wry-0.2.4.dev1/wry.egg-info/PKG-INFO +758 -0
- wry-0.2.4.dev1/wry.egg-info/SOURCES.txt +138 -0
- wry-0.2.4.dev1/wry.egg-info/dependency_links.txt +1 -0
- wry-0.2.4.dev1/wry.egg-info/requires.txt +17 -0
- wry-0.2.4.dev1/wry.egg-info/top_level.txt +1 -0
- wry-0.2.3.dev1/wry/_version.py +0 -14
- {wry-0.2.3.dev1 → wry-0.2.4.dev1}/LICENSE +0 -0
- /wry-0.2.3.dev1/wry/py.typed → /wry-0.2.4.dev1/tests/unit/auto_model/__init__.py +0 -0
- {wry-0.2.3.dev1 → wry-0.2.4.dev1}/wry/auto_model.py +0 -0
- {wry-0.2.3.dev1 → wry-0.2.4.dev1}/wry/click_integration.py +0 -0
- {wry-0.2.3.dev1 → wry-0.2.4.dev1}/wry/core/__init__.py +0 -0
- {wry-0.2.3.dev1 → wry-0.2.4.dev1}/wry/core/accessors.py +0 -0
- {wry-0.2.3.dev1 → wry-0.2.4.dev1}/wry/core/env_utils.py +0 -0
- {wry-0.2.3.dev1 → wry-0.2.4.dev1}/wry/core/field_utils.py +0 -0
- {wry-0.2.3.dev1 → wry-0.2.4.dev1}/wry/core/model.py +0 -0
- {wry-0.2.3.dev1 → wry-0.2.4.dev1}/wry/core/sources.py +0 -0
- {wry-0.2.3.dev1 → wry-0.2.4.dev1}/wry/multi_model.py +0 -0
|
@@ -0,0 +1,218 @@
|
|
|
1
|
+
name: CI/CD
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
push: # Run on all pushes
|
|
5
|
+
pull_request:
|
|
6
|
+
branches: [ main ]
|
|
7
|
+
|
|
8
|
+
permissions:
|
|
9
|
+
contents: read
|
|
10
|
+
id-token: write # For OIDC/trusted publishing
|
|
11
|
+
|
|
12
|
+
jobs:
|
|
13
|
+
test:
|
|
14
|
+
name: Test Python ${{ matrix.python-version }}
|
|
15
|
+
runs-on: ubuntu-latest
|
|
16
|
+
strategy:
|
|
17
|
+
fail-fast: false
|
|
18
|
+
matrix:
|
|
19
|
+
python-version: ["3.10", "3.11", "3.12"]
|
|
20
|
+
|
|
21
|
+
steps:
|
|
22
|
+
- name: Checkout code
|
|
23
|
+
uses: actions/checkout@v4
|
|
24
|
+
with:
|
|
25
|
+
fetch-depth: 0 # Need full history for setuptools-scm
|
|
26
|
+
# Don't fetch tags on main branch builds to avoid version conflicts
|
|
27
|
+
fetch-tags: ${{ !startsWith(github.ref, 'refs/heads/main') }}
|
|
28
|
+
|
|
29
|
+
- name: Set up Python ${{ matrix.python-version }}
|
|
30
|
+
uses: actions/setup-python@v5
|
|
31
|
+
with:
|
|
32
|
+
python-version: ${{ matrix.python-version }}
|
|
33
|
+
|
|
34
|
+
- name: Cache pip dependencies
|
|
35
|
+
uses: actions/cache@v4
|
|
36
|
+
with:
|
|
37
|
+
path: ~/.cache/pip
|
|
38
|
+
key: ${{ runner.os }}-pip-${{ hashFiles('**/pyproject.toml') }}
|
|
39
|
+
restore-keys: |
|
|
40
|
+
${{ runner.os }}-pip-
|
|
41
|
+
|
|
42
|
+
- name: Install dependencies
|
|
43
|
+
run: |
|
|
44
|
+
python -m pip install --upgrade pip
|
|
45
|
+
pip install -e ".[dev]"
|
|
46
|
+
|
|
47
|
+
- name: Run pre-commit checks
|
|
48
|
+
run: |
|
|
49
|
+
pre-commit run --all-files --show-diff-on-failure
|
|
50
|
+
|
|
51
|
+
- name: Upload coverage reports to Codecov
|
|
52
|
+
uses: codecov/codecov-action@v5
|
|
53
|
+
with:
|
|
54
|
+
token: ${{ secrets.CODECOV_TOKEN }}
|
|
55
|
+
files: ./coverage.xml
|
|
56
|
+
flags: unittests
|
|
57
|
+
name: codecov-${{ matrix.python-version }}
|
|
58
|
+
fail_ci_if_error: false
|
|
59
|
+
|
|
60
|
+
build:
|
|
61
|
+
name: Build distribution 📦
|
|
62
|
+
needs: [test]
|
|
63
|
+
runs-on: ubuntu-latest
|
|
64
|
+
|
|
65
|
+
steps:
|
|
66
|
+
- uses: actions/checkout@v4
|
|
67
|
+
with:
|
|
68
|
+
fetch-depth: 0 # Need full history for setuptools-scm
|
|
69
|
+
# Don't fetch tags on main branch builds to avoid version conflicts
|
|
70
|
+
fetch-tags: ${{ !startsWith(github.ref, 'refs/heads/main') }}
|
|
71
|
+
|
|
72
|
+
- name: Set up Python
|
|
73
|
+
uses: actions/setup-python@v5
|
|
74
|
+
with:
|
|
75
|
+
python-version: "3.x"
|
|
76
|
+
|
|
77
|
+
- name: Install build tools
|
|
78
|
+
run: |
|
|
79
|
+
python -m pip install --upgrade pip
|
|
80
|
+
pip install build setuptools-scm
|
|
81
|
+
|
|
82
|
+
- name: Build a binary wheel and a source tarball
|
|
83
|
+
run: python -m build
|
|
84
|
+
|
|
85
|
+
- name: Check build artifacts
|
|
86
|
+
run: |
|
|
87
|
+
python3 -m pip install twine
|
|
88
|
+
twine check dist/*
|
|
89
|
+
|
|
90
|
+
- name: Store distribution packages
|
|
91
|
+
uses: actions/upload-artifact@v4
|
|
92
|
+
with:
|
|
93
|
+
name: python-package-distributions
|
|
94
|
+
path: dist/
|
|
95
|
+
|
|
96
|
+
publish-to-testpypi:
|
|
97
|
+
name: Publish to TestPyPI
|
|
98
|
+
if: github.event_name == 'push' && github.ref == 'refs/heads/main'
|
|
99
|
+
needs: [build]
|
|
100
|
+
runs-on: ubuntu-latest
|
|
101
|
+
environment:
|
|
102
|
+
name: testpypi
|
|
103
|
+
url: https://test.pypi.org/p/wry
|
|
104
|
+
permissions:
|
|
105
|
+
id-token: write # IMPORTANT: mandatory for trusted publishing
|
|
106
|
+
|
|
107
|
+
steps:
|
|
108
|
+
- name: Download dists
|
|
109
|
+
uses: actions/download-artifact@v4
|
|
110
|
+
with:
|
|
111
|
+
name: python-package-distributions
|
|
112
|
+
path: dist/
|
|
113
|
+
|
|
114
|
+
- name: Publish to TestPyPI
|
|
115
|
+
uses: pypa/gh-action-pypi-publish@release/v1
|
|
116
|
+
with:
|
|
117
|
+
repository-url: https://test.pypi.org/legacy/
|
|
118
|
+
skip-existing: true
|
|
119
|
+
|
|
120
|
+
publish-to-pypi:
|
|
121
|
+
name: Publish to PyPI
|
|
122
|
+
if: github.event_name == 'push' && !contains(github.ref, 'pull')
|
|
123
|
+
needs: [build]
|
|
124
|
+
runs-on: ubuntu-latest
|
|
125
|
+
environment:
|
|
126
|
+
name: pypi
|
|
127
|
+
url: https://pypi.org/p/wry
|
|
128
|
+
permissions:
|
|
129
|
+
id-token: write # IMPORTANT: mandatory for trusted publishing
|
|
130
|
+
|
|
131
|
+
steps:
|
|
132
|
+
- name: Download dists
|
|
133
|
+
uses: actions/download-artifact@v4
|
|
134
|
+
with:
|
|
135
|
+
name: python-package-distributions
|
|
136
|
+
path: dist/
|
|
137
|
+
|
|
138
|
+
- name: Publish to PyPI
|
|
139
|
+
uses: pypa/gh-action-pypi-publish@release/v1
|
|
140
|
+
with:
|
|
141
|
+
skip-existing: true
|
|
142
|
+
|
|
143
|
+
|
|
144
|
+
github-release:
|
|
145
|
+
name: Create GitHub Release
|
|
146
|
+
if: startsWith(github.ref, 'refs/tags/')
|
|
147
|
+
needs: [publish-to-pypi]
|
|
148
|
+
runs-on: ubuntu-latest
|
|
149
|
+
permissions:
|
|
150
|
+
contents: write # For creating releases
|
|
151
|
+
id-token: write # For sigstore signing
|
|
152
|
+
|
|
153
|
+
steps:
|
|
154
|
+
- name: Checkout code
|
|
155
|
+
uses: actions/checkout@v4
|
|
156
|
+
with:
|
|
157
|
+
sparse-checkout: |
|
|
158
|
+
CHANGELOG.md
|
|
159
|
+
scripts/extract_release_notes.py
|
|
160
|
+
|
|
161
|
+
- name: Download artifacts
|
|
162
|
+
uses: actions/download-artifact@v4
|
|
163
|
+
with:
|
|
164
|
+
name: python-package-distributions
|
|
165
|
+
path: dist/
|
|
166
|
+
|
|
167
|
+
- name: Sign with Sigstore
|
|
168
|
+
uses: sigstore/gh-action-sigstore-python@v3.0.0
|
|
169
|
+
with:
|
|
170
|
+
inputs: >-
|
|
171
|
+
./dist/*.tar.gz
|
|
172
|
+
./dist/*.whl
|
|
173
|
+
|
|
174
|
+
- name: Get previous tag
|
|
175
|
+
id: previous_tag
|
|
176
|
+
run: |
|
|
177
|
+
# Get the previous tag (excluding the current one)
|
|
178
|
+
PREVIOUS_TAG=$(git tag --sort=-version:refname | grep -v '${{ github.ref_name }}' | head -n 1)
|
|
179
|
+
echo "previous_tag=$PREVIOUS_TAG" >> $GITHUB_OUTPUT
|
|
180
|
+
echo "Previous tag: $PREVIOUS_TAG"
|
|
181
|
+
|
|
182
|
+
- name: Extract release notes from CHANGELOG
|
|
183
|
+
id: release_notes
|
|
184
|
+
run: |
|
|
185
|
+
# Make script executable
|
|
186
|
+
chmod +x scripts/extract_release_notes.py
|
|
187
|
+
|
|
188
|
+
# Extract release notes and save to file
|
|
189
|
+
python scripts/extract_release_notes.py '${{ github.ref_name }}' > release_notes.md
|
|
190
|
+
|
|
191
|
+
# Add comparison link if we have a previous tag
|
|
192
|
+
if [ -n "${{ steps.previous_tag.outputs.previous_tag }}" ]; then
|
|
193
|
+
echo "" >> release_notes.md
|
|
194
|
+
echo "---" >> release_notes.md
|
|
195
|
+
echo "" >> release_notes.md
|
|
196
|
+
echo "**Full Changelog**: https://github.com/${{ github.repository }}/compare/${{ steps.previous_tag.outputs.previous_tag }}...${{ github.ref_name }}" >> release_notes.md
|
|
197
|
+
fi
|
|
198
|
+
|
|
199
|
+
# Read the content for the release body
|
|
200
|
+
echo 'RELEASE_NOTES<<EOF' >> $GITHUB_ENV
|
|
201
|
+
cat release_notes.md >> $GITHUB_ENV
|
|
202
|
+
echo 'EOF' >> $GITHUB_ENV
|
|
203
|
+
|
|
204
|
+
- name: Create GitHub Release
|
|
205
|
+
env:
|
|
206
|
+
GITHUB_TOKEN: ${{ github.token }}
|
|
207
|
+
run: |
|
|
208
|
+
gh release create '${{ github.ref_name }}' \
|
|
209
|
+
--repo '${{ github.repository }}' \
|
|
210
|
+
--title '${{ github.ref_name }}' \
|
|
211
|
+
--notes "$RELEASE_NOTES"
|
|
212
|
+
|
|
213
|
+
- name: Upload release artifacts
|
|
214
|
+
env:
|
|
215
|
+
GITHUB_TOKEN: ${{ github.token }}
|
|
216
|
+
run: |
|
|
217
|
+
gh release upload '${{ github.ref_name }}' dist/** \
|
|
218
|
+
--repo '${{ github.repository }}'
|
|
@@ -0,0 +1,139 @@
|
|
|
1
|
+
# Byte-compiled / optimized / DLL files
|
|
2
|
+
__pycache__/
|
|
3
|
+
*.py[cod]
|
|
4
|
+
*$py.class
|
|
5
|
+
|
|
6
|
+
# C extensions
|
|
7
|
+
*.so
|
|
8
|
+
|
|
9
|
+
# Distribution / packaging
|
|
10
|
+
.Python
|
|
11
|
+
build/
|
|
12
|
+
develop-eggs/
|
|
13
|
+
dist/
|
|
14
|
+
downloads/
|
|
15
|
+
eggs/
|
|
16
|
+
.eggs/
|
|
17
|
+
lib/
|
|
18
|
+
lib64/
|
|
19
|
+
parts/
|
|
20
|
+
sdist/
|
|
21
|
+
var/
|
|
22
|
+
wheels/
|
|
23
|
+
pip-wheel-metadata/
|
|
24
|
+
share/python-wheels/
|
|
25
|
+
*.egg-info/
|
|
26
|
+
.installed.cfg
|
|
27
|
+
*.egg
|
|
28
|
+
MANIFEST
|
|
29
|
+
|
|
30
|
+
# PyInstaller
|
|
31
|
+
# Usually these files are written by a python script from a template
|
|
32
|
+
# before PyInstaller builds the exe, so as to inject date/other infos into it.
|
|
33
|
+
*.manifest
|
|
34
|
+
*.spec
|
|
35
|
+
|
|
36
|
+
# Installer logs
|
|
37
|
+
pip-log.txt
|
|
38
|
+
pip-delete-this-directory.txt
|
|
39
|
+
|
|
40
|
+
# Unit test / coverage reports
|
|
41
|
+
htmlcov/
|
|
42
|
+
.tox/
|
|
43
|
+
.nox/
|
|
44
|
+
.coverage
|
|
45
|
+
.coverage.*
|
|
46
|
+
.cache
|
|
47
|
+
nosetests.xml
|
|
48
|
+
coverage.xml
|
|
49
|
+
*.cover
|
|
50
|
+
*.py,cover
|
|
51
|
+
.hypothesis/
|
|
52
|
+
.pytest_cache/
|
|
53
|
+
|
|
54
|
+
# Translations
|
|
55
|
+
*.mo
|
|
56
|
+
*.pot
|
|
57
|
+
|
|
58
|
+
# Django stuff:
|
|
59
|
+
*.log
|
|
60
|
+
local_settings.py
|
|
61
|
+
db.sqlite3
|
|
62
|
+
db.sqlite3-journal
|
|
63
|
+
|
|
64
|
+
# Flask stuff:
|
|
65
|
+
instance/
|
|
66
|
+
.webassets-cache
|
|
67
|
+
|
|
68
|
+
# Scrapy stuff:
|
|
69
|
+
.scrapy
|
|
70
|
+
|
|
71
|
+
# Sphinx documentation
|
|
72
|
+
docs/_build/
|
|
73
|
+
|
|
74
|
+
# PyBuilder
|
|
75
|
+
target/
|
|
76
|
+
|
|
77
|
+
# Jupyter Notebook
|
|
78
|
+
.ipynb_checkpoints
|
|
79
|
+
|
|
80
|
+
# IPython
|
|
81
|
+
profile_default/
|
|
82
|
+
ipython_config.py
|
|
83
|
+
|
|
84
|
+
# pyenv
|
|
85
|
+
.python-version
|
|
86
|
+
|
|
87
|
+
# pipenv
|
|
88
|
+
# According to pypa/pipenv#598, it is recommended to include Pipfile.lock in version control.
|
|
89
|
+
# However, in case of collaboration, if having platform-specific dependencies or dependencies
|
|
90
|
+
# having no cross-platform support, pipenv may install dependencies that don't work, or not
|
|
91
|
+
# install all needed dependencies.
|
|
92
|
+
#Pipfile.lock
|
|
93
|
+
|
|
94
|
+
# PEP 582; used by e.g. github.com/David-OConnor/pyflow
|
|
95
|
+
__pypackages__/
|
|
96
|
+
|
|
97
|
+
# Celery stuff
|
|
98
|
+
celerybeat-schedule
|
|
99
|
+
celerybeat.pid
|
|
100
|
+
|
|
101
|
+
# SageMath parsed files
|
|
102
|
+
*.sage.py
|
|
103
|
+
|
|
104
|
+
# Environments
|
|
105
|
+
.env
|
|
106
|
+
.venv
|
|
107
|
+
env/
|
|
108
|
+
venv/
|
|
109
|
+
ENV/
|
|
110
|
+
env.bak/
|
|
111
|
+
venv.bak/
|
|
112
|
+
|
|
113
|
+
# Spyder project settings
|
|
114
|
+
.spyderproject
|
|
115
|
+
.spyproject
|
|
116
|
+
|
|
117
|
+
# Rope project settings
|
|
118
|
+
.ropeproject
|
|
119
|
+
|
|
120
|
+
# mkdocs documentation
|
|
121
|
+
/site
|
|
122
|
+
|
|
123
|
+
# mypy
|
|
124
|
+
.mypy_cache/
|
|
125
|
+
.dmypy.json
|
|
126
|
+
dmypy.json
|
|
127
|
+
|
|
128
|
+
# Pyre type checker
|
|
129
|
+
.pyre/
|
|
130
|
+
|
|
131
|
+
# IDEs
|
|
132
|
+
.vscode/
|
|
133
|
+
.idea/
|
|
134
|
+
*.swp
|
|
135
|
+
*.swo
|
|
136
|
+
*~
|
|
137
|
+
|
|
138
|
+
# macOS
|
|
139
|
+
.DS_Store
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
repos:
|
|
2
|
+
- repo: https://github.com/pre-commit/pre-commit-hooks
|
|
3
|
+
rev: v6.0.0
|
|
4
|
+
hooks:
|
|
5
|
+
- id: trailing-whitespace
|
|
6
|
+
- id: end-of-file-fixer
|
|
7
|
+
- id: check-yaml
|
|
8
|
+
- id: check-toml
|
|
9
|
+
- id: check-json
|
|
10
|
+
- id: check-merge-conflict
|
|
11
|
+
- id: check-added-large-files
|
|
12
|
+
- id: debug-statements
|
|
13
|
+
|
|
14
|
+
- repo: https://github.com/astral-sh/ruff-pre-commit
|
|
15
|
+
rev: v0.8.4
|
|
16
|
+
hooks:
|
|
17
|
+
- id: ruff
|
|
18
|
+
args: [--fix, --exit-non-zero-on-fix]
|
|
19
|
+
- id: ruff-format
|
|
20
|
+
|
|
21
|
+
- repo: local
|
|
22
|
+
hooks:
|
|
23
|
+
- id: pytest
|
|
24
|
+
name: pytest
|
|
25
|
+
entry: pytest
|
|
26
|
+
language: system
|
|
27
|
+
types: [python]
|
|
28
|
+
args: [tests/unit/, --cov=wry, --cov-branch, --cov-report=xml, --cov-report=term-missing, --cov-fail-under=85]
|
|
29
|
+
pass_filenames: false
|
|
30
|
+
always_run: true
|
|
31
|
+
|
|
32
|
+
- repo: https://github.com/pre-commit/mirrors-mypy
|
|
33
|
+
rev: v1.17.1
|
|
34
|
+
hooks:
|
|
35
|
+
- id: mypy
|
|
36
|
+
args: [wry/]
|
|
37
|
+
pass_filenames: false
|
|
38
|
+
additional_dependencies:
|
|
39
|
+
- pydantic>=2.9.2
|
|
40
|
+
- click>=8.0.0
|
|
41
|
+
- annotated-types>=0.6.0
|
|
42
|
+
- setuptools-scm>=8.0
|
|
43
|
+
|
|
44
|
+
exclude: |
|
|
45
|
+
(?x)(
|
|
46
|
+
# Exclude auto-generated files
|
|
47
|
+
wry/_version\.py|
|
|
48
|
+
# Exclude build artifacts
|
|
49
|
+
dist/|
|
|
50
|
+
build/|
|
|
51
|
+
\.egg-info/
|
|
52
|
+
)
|