codeshift 0.3.3__py3-none-any.whl → 0.3.5__py3-none-any.whl
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.
- codeshift/cli/commands/apply.py +24 -2
- codeshift/cli/package_manager.py +102 -0
- codeshift/knowledge/generator.py +11 -1
- codeshift/knowledge_base/libraries/aiohttp.yaml +186 -0
- codeshift/knowledge_base/libraries/attrs.yaml +181 -0
- codeshift/knowledge_base/libraries/celery.yaml +244 -0
- codeshift/knowledge_base/libraries/click.yaml +195 -0
- codeshift/knowledge_base/libraries/django.yaml +355 -0
- codeshift/knowledge_base/libraries/flask.yaml +270 -0
- codeshift/knowledge_base/libraries/httpx.yaml +183 -0
- codeshift/knowledge_base/libraries/marshmallow.yaml +238 -0
- codeshift/knowledge_base/libraries/numpy.yaml +429 -0
- codeshift/knowledge_base/libraries/pytest.yaml +192 -0
- codeshift/knowledge_base/libraries/sqlalchemy.yaml +2 -1
- codeshift/migrator/engine.py +60 -0
- codeshift/migrator/transforms/__init__.py +2 -0
- codeshift/migrator/transforms/aiohttp_transformer.py +608 -0
- codeshift/migrator/transforms/attrs_transformer.py +570 -0
- codeshift/migrator/transforms/celery_transformer.py +546 -0
- codeshift/migrator/transforms/click_transformer.py +526 -0
- codeshift/migrator/transforms/django_transformer.py +852 -0
- codeshift/migrator/transforms/fastapi_transformer.py +12 -7
- codeshift/migrator/transforms/flask_transformer.py +505 -0
- codeshift/migrator/transforms/httpx_transformer.py +419 -0
- codeshift/migrator/transforms/marshmallow_transformer.py +515 -0
- codeshift/migrator/transforms/numpy_transformer.py +413 -0
- codeshift/migrator/transforms/pydantic_v1_to_v2.py +53 -8
- codeshift/migrator/transforms/pytest_transformer.py +351 -0
- codeshift/migrator/transforms/requests_transformer.py +74 -1
- codeshift/migrator/transforms/sqlalchemy_transformer.py +692 -39
- {codeshift-0.3.3.dist-info → codeshift-0.3.5.dist-info}/METADATA +46 -4
- {codeshift-0.3.3.dist-info → codeshift-0.3.5.dist-info}/RECORD +36 -15
- {codeshift-0.3.3.dist-info → codeshift-0.3.5.dist-info}/WHEEL +0 -0
- {codeshift-0.3.3.dist-info → codeshift-0.3.5.dist-info}/entry_points.txt +0 -0
- {codeshift-0.3.3.dist-info → codeshift-0.3.5.dist-info}/licenses/LICENSE +0 -0
- {codeshift-0.3.3.dist-info → codeshift-0.3.5.dist-info}/top_level.txt +0 -0
|
@@ -0,0 +1,244 @@
|
|
|
1
|
+
# Celery Knowledge Base
|
|
2
|
+
# Breaking changes from 4.x to 5.x
|
|
3
|
+
|
|
4
|
+
name: celery
|
|
5
|
+
display_name: Celery
|
|
6
|
+
description: Distributed task queue for Python
|
|
7
|
+
migration_guide_url: https://docs.celeryq.dev/en/stable/history/whatsnew-5.0.html
|
|
8
|
+
|
|
9
|
+
supported_migrations:
|
|
10
|
+
- from: "4.0"
|
|
11
|
+
to: "5.0"
|
|
12
|
+
|
|
13
|
+
breaking_changes:
|
|
14
|
+
# Module removal: celery.task
|
|
15
|
+
- symbol: "celery.task"
|
|
16
|
+
change_type: removed
|
|
17
|
+
severity: high
|
|
18
|
+
from_version: "4.0"
|
|
19
|
+
to_version: "5.0"
|
|
20
|
+
description: "The celery.task module has been removed"
|
|
21
|
+
replacement: "from celery import Task"
|
|
22
|
+
has_deterministic_transform: true
|
|
23
|
+
transform_name: import_celery_task_module
|
|
24
|
+
notes: "Use 'from celery import Task' instead of 'from celery.task import Task'"
|
|
25
|
+
|
|
26
|
+
# Module removal: celery.decorators
|
|
27
|
+
- symbol: "celery.decorators"
|
|
28
|
+
change_type: removed
|
|
29
|
+
severity: high
|
|
30
|
+
from_version: "4.0"
|
|
31
|
+
to_version: "5.0"
|
|
32
|
+
description: "The celery.decorators module has been removed"
|
|
33
|
+
replacement: "from celery import shared_task"
|
|
34
|
+
has_deterministic_transform: true
|
|
35
|
+
transform_name: import_celery_decorators
|
|
36
|
+
notes: "Use 'from celery import shared_task' instead of 'from celery.decorators import task'"
|
|
37
|
+
|
|
38
|
+
# Import: celery.task.Task -> celery.Task
|
|
39
|
+
- symbol: "from celery.task import Task"
|
|
40
|
+
change_type: renamed
|
|
41
|
+
severity: high
|
|
42
|
+
from_version: "4.0"
|
|
43
|
+
to_version: "5.0"
|
|
44
|
+
description: "Task class import path changed"
|
|
45
|
+
replacement: "from celery import Task"
|
|
46
|
+
has_deterministic_transform: true
|
|
47
|
+
transform_name: import_task_class
|
|
48
|
+
|
|
49
|
+
# Import: celery.task.task -> celery.shared_task
|
|
50
|
+
- symbol: "from celery.task import task"
|
|
51
|
+
change_type: renamed
|
|
52
|
+
severity: high
|
|
53
|
+
from_version: "4.0"
|
|
54
|
+
to_version: "5.0"
|
|
55
|
+
description: "task decorator import path changed"
|
|
56
|
+
replacement: "from celery import shared_task"
|
|
57
|
+
has_deterministic_transform: true
|
|
58
|
+
transform_name: import_task_decorator
|
|
59
|
+
|
|
60
|
+
# Import: celery.decorators.task -> celery.shared_task
|
|
61
|
+
- symbol: "from celery.decorators import task"
|
|
62
|
+
change_type: renamed
|
|
63
|
+
severity: high
|
|
64
|
+
from_version: "4.0"
|
|
65
|
+
to_version: "5.0"
|
|
66
|
+
description: "task decorator from celery.decorators changed"
|
|
67
|
+
replacement: "from celery import shared_task"
|
|
68
|
+
has_deterministic_transform: true
|
|
69
|
+
transform_name: import_decorators_task
|
|
70
|
+
|
|
71
|
+
# Import: celery.task.periodic_task removed
|
|
72
|
+
- symbol: "from celery.task import periodic_task"
|
|
73
|
+
change_type: removed
|
|
74
|
+
severity: high
|
|
75
|
+
from_version: "4.0"
|
|
76
|
+
to_version: "5.0"
|
|
77
|
+
description: "periodic_task decorator has been removed"
|
|
78
|
+
replacement: "Use beat_schedule configuration"
|
|
79
|
+
has_deterministic_transform: false
|
|
80
|
+
notes: "Configure periodic tasks via beat_schedule in celery config"
|
|
81
|
+
|
|
82
|
+
# Import: celery.task.schedules -> celery.schedules
|
|
83
|
+
- symbol: "from celery.task.schedules import crontab"
|
|
84
|
+
change_type: renamed
|
|
85
|
+
severity: medium
|
|
86
|
+
from_version: "4.0"
|
|
87
|
+
to_version: "5.0"
|
|
88
|
+
description: "schedules module moved from celery.task.schedules to celery.schedules"
|
|
89
|
+
replacement: "from celery.schedules import crontab"
|
|
90
|
+
has_deterministic_transform: true
|
|
91
|
+
transform_name: import_schedules
|
|
92
|
+
|
|
93
|
+
# Import: celery.utils.encoding removed
|
|
94
|
+
- symbol: "celery.utils.encoding"
|
|
95
|
+
change_type: removed
|
|
96
|
+
severity: medium
|
|
97
|
+
from_version: "4.0"
|
|
98
|
+
to_version: "5.0"
|
|
99
|
+
description: "celery.utils.encoding module removed, use kombu.utils.encoding"
|
|
100
|
+
replacement: "from kombu.utils.encoding import ..."
|
|
101
|
+
has_deterministic_transform: true
|
|
102
|
+
transform_name: import_utils_encoding
|
|
103
|
+
|
|
104
|
+
# Configuration: CELERY_RESULT_BACKEND -> result_backend
|
|
105
|
+
- symbol: "CELERY_RESULT_BACKEND"
|
|
106
|
+
change_type: renamed
|
|
107
|
+
severity: medium
|
|
108
|
+
from_version: "4.0"
|
|
109
|
+
to_version: "5.0"
|
|
110
|
+
description: "Configuration key CELERY_RESULT_BACKEND renamed to result_backend"
|
|
111
|
+
replacement: "result_backend"
|
|
112
|
+
has_deterministic_transform: true
|
|
113
|
+
transform_name: config_result_backend
|
|
114
|
+
|
|
115
|
+
# Configuration: CELERY_BROKER_URL -> broker_url
|
|
116
|
+
- symbol: "CELERY_BROKER_URL"
|
|
117
|
+
change_type: renamed
|
|
118
|
+
severity: medium
|
|
119
|
+
from_version: "4.0"
|
|
120
|
+
to_version: "5.0"
|
|
121
|
+
description: "Configuration key CELERY_BROKER_URL renamed to broker_url"
|
|
122
|
+
replacement: "broker_url"
|
|
123
|
+
has_deterministic_transform: true
|
|
124
|
+
transform_name: config_broker_url
|
|
125
|
+
|
|
126
|
+
# Configuration: CELERY_TASK_ALWAYS_EAGER -> task_always_eager
|
|
127
|
+
- symbol: "CELERY_TASK_ALWAYS_EAGER"
|
|
128
|
+
change_type: renamed
|
|
129
|
+
severity: low
|
|
130
|
+
from_version: "4.0"
|
|
131
|
+
to_version: "5.0"
|
|
132
|
+
description: "Configuration key CELERY_TASK_ALWAYS_EAGER renamed to task_always_eager"
|
|
133
|
+
replacement: "task_always_eager"
|
|
134
|
+
has_deterministic_transform: true
|
|
135
|
+
transform_name: config_task_always_eager
|
|
136
|
+
|
|
137
|
+
# Configuration: CELERY_TASK_SERIALIZER -> task_serializer
|
|
138
|
+
- symbol: "CELERY_TASK_SERIALIZER"
|
|
139
|
+
change_type: renamed
|
|
140
|
+
severity: low
|
|
141
|
+
from_version: "4.0"
|
|
142
|
+
to_version: "5.0"
|
|
143
|
+
description: "Configuration key CELERY_TASK_SERIALIZER renamed to task_serializer"
|
|
144
|
+
replacement: "task_serializer"
|
|
145
|
+
has_deterministic_transform: true
|
|
146
|
+
transform_name: config_task_serializer
|
|
147
|
+
|
|
148
|
+
# Configuration: CELERY_RESULT_SERIALIZER -> result_serializer
|
|
149
|
+
- symbol: "CELERY_RESULT_SERIALIZER"
|
|
150
|
+
change_type: renamed
|
|
151
|
+
severity: low
|
|
152
|
+
from_version: "4.0"
|
|
153
|
+
to_version: "5.0"
|
|
154
|
+
description: "Configuration key CELERY_RESULT_SERIALIZER renamed to result_serializer"
|
|
155
|
+
replacement: "result_serializer"
|
|
156
|
+
has_deterministic_transform: true
|
|
157
|
+
transform_name: config_result_serializer
|
|
158
|
+
|
|
159
|
+
# Configuration: CELERY_ACCEPT_CONTENT -> accept_content
|
|
160
|
+
- symbol: "CELERY_ACCEPT_CONTENT"
|
|
161
|
+
change_type: renamed
|
|
162
|
+
severity: low
|
|
163
|
+
from_version: "4.0"
|
|
164
|
+
to_version: "5.0"
|
|
165
|
+
description: "Configuration key CELERY_ACCEPT_CONTENT renamed to accept_content"
|
|
166
|
+
replacement: "accept_content"
|
|
167
|
+
has_deterministic_transform: true
|
|
168
|
+
transform_name: config_accept_content
|
|
169
|
+
|
|
170
|
+
# Configuration: CELERY_TIMEZONE -> timezone
|
|
171
|
+
- symbol: "CELERY_TIMEZONE"
|
|
172
|
+
change_type: renamed
|
|
173
|
+
severity: low
|
|
174
|
+
from_version: "4.0"
|
|
175
|
+
to_version: "5.0"
|
|
176
|
+
description: "Configuration key CELERY_TIMEZONE renamed to timezone"
|
|
177
|
+
replacement: "timezone"
|
|
178
|
+
has_deterministic_transform: true
|
|
179
|
+
transform_name: config_timezone
|
|
180
|
+
|
|
181
|
+
# Configuration: CELERY_ENABLE_UTC -> enable_utc
|
|
182
|
+
- symbol: "CELERY_ENABLE_UTC"
|
|
183
|
+
change_type: renamed
|
|
184
|
+
severity: low
|
|
185
|
+
from_version: "4.0"
|
|
186
|
+
to_version: "5.0"
|
|
187
|
+
description: "Configuration key CELERY_ENABLE_UTC renamed to enable_utc"
|
|
188
|
+
replacement: "enable_utc"
|
|
189
|
+
has_deterministic_transform: true
|
|
190
|
+
transform_name: config_enable_utc
|
|
191
|
+
|
|
192
|
+
# Configuration: CELERYD_CONCURRENCY -> worker_concurrency
|
|
193
|
+
- symbol: "CELERYD_CONCURRENCY"
|
|
194
|
+
change_type: renamed
|
|
195
|
+
severity: medium
|
|
196
|
+
from_version: "4.0"
|
|
197
|
+
to_version: "5.0"
|
|
198
|
+
description: "Configuration key CELERYD_CONCURRENCY renamed to worker_concurrency"
|
|
199
|
+
replacement: "worker_concurrency"
|
|
200
|
+
has_deterministic_transform: true
|
|
201
|
+
transform_name: config_worker_concurrency
|
|
202
|
+
|
|
203
|
+
# Configuration: CELERYD_PREFETCH_MULTIPLIER -> worker_prefetch_multiplier
|
|
204
|
+
- symbol: "CELERYD_PREFETCH_MULTIPLIER"
|
|
205
|
+
change_type: renamed
|
|
206
|
+
severity: low
|
|
207
|
+
from_version: "4.0"
|
|
208
|
+
to_version: "5.0"
|
|
209
|
+
description: "Configuration key CELERYD_PREFETCH_MULTIPLIER renamed to worker_prefetch_multiplier"
|
|
210
|
+
replacement: "worker_prefetch_multiplier"
|
|
211
|
+
has_deterministic_transform: true
|
|
212
|
+
transform_name: config_worker_prefetch
|
|
213
|
+
|
|
214
|
+
# Configuration: CELERY_BEAT_SCHEDULE -> beat_schedule
|
|
215
|
+
- symbol: "CELERY_BEAT_SCHEDULE"
|
|
216
|
+
change_type: renamed
|
|
217
|
+
severity: medium
|
|
218
|
+
from_version: "4.0"
|
|
219
|
+
to_version: "5.0"
|
|
220
|
+
description: "Configuration key CELERY_BEAT_SCHEDULE renamed to beat_schedule"
|
|
221
|
+
replacement: "beat_schedule"
|
|
222
|
+
has_deterministic_transform: true
|
|
223
|
+
transform_name: config_beat_schedule
|
|
224
|
+
|
|
225
|
+
# app.conf attribute access changes
|
|
226
|
+
- symbol: "app.conf.CELERY_RESULT_BACKEND"
|
|
227
|
+
change_type: renamed
|
|
228
|
+
severity: medium
|
|
229
|
+
from_version: "4.0"
|
|
230
|
+
to_version: "5.0"
|
|
231
|
+
description: "app.conf.CELERY_RESULT_BACKEND changed to app.conf.result_backend"
|
|
232
|
+
replacement: "app.conf.result_backend"
|
|
233
|
+
has_deterministic_transform: true
|
|
234
|
+
transform_name: attr_result_backend
|
|
235
|
+
|
|
236
|
+
- symbol: "app.conf.CELERY_BROKER_URL"
|
|
237
|
+
change_type: renamed
|
|
238
|
+
severity: medium
|
|
239
|
+
from_version: "4.0"
|
|
240
|
+
to_version: "5.0"
|
|
241
|
+
description: "app.conf.CELERY_BROKER_URL changed to app.conf.broker_url"
|
|
242
|
+
replacement: "app.conf.broker_url"
|
|
243
|
+
has_deterministic_transform: true
|
|
244
|
+
transform_name: attr_broker_url
|
|
@@ -0,0 +1,195 @@
|
|
|
1
|
+
# Click Knowledge Base
|
|
2
|
+
# Breaking changes from 7.x to 8.x
|
|
3
|
+
|
|
4
|
+
name: click
|
|
5
|
+
display_name: Click
|
|
6
|
+
description: Python package for creating command line interfaces
|
|
7
|
+
migration_guide_url: https://click.palletsprojects.com/en/stable/changes/
|
|
8
|
+
|
|
9
|
+
supported_migrations:
|
|
10
|
+
- from: "7.0"
|
|
11
|
+
to: "8.0"
|
|
12
|
+
- from: "7.x"
|
|
13
|
+
to: "8.1"
|
|
14
|
+
|
|
15
|
+
breaking_changes:
|
|
16
|
+
# Shell completion parameter rename
|
|
17
|
+
- symbol: "@click.option(..., autocompletion=...)"
|
|
18
|
+
change_type: renamed
|
|
19
|
+
severity: high
|
|
20
|
+
from_version: "7.0"
|
|
21
|
+
to_version: "8.0"
|
|
22
|
+
description: "autocompletion parameter renamed to shell_complete with new callback signature"
|
|
23
|
+
replacement: "@click.option(..., shell_complete=...)"
|
|
24
|
+
has_deterministic_transform: true
|
|
25
|
+
transform_name: autocompletion_to_shell_complete
|
|
26
|
+
notes: "Callback signature changed from (ctx, args, incomplete) to (ctx, param, incomplete)"
|
|
27
|
+
|
|
28
|
+
- symbol: "@click.argument(..., autocompletion=...)"
|
|
29
|
+
change_type: renamed
|
|
30
|
+
severity: high
|
|
31
|
+
from_version: "7.0"
|
|
32
|
+
to_version: "8.0"
|
|
33
|
+
description: "autocompletion parameter renamed to shell_complete for arguments"
|
|
34
|
+
replacement: "@click.argument(..., shell_complete=...)"
|
|
35
|
+
has_deterministic_transform: true
|
|
36
|
+
transform_name: autocompletion_to_shell_complete
|
|
37
|
+
|
|
38
|
+
# Deprecated function removals
|
|
39
|
+
- symbol: "click.get_terminal_size()"
|
|
40
|
+
change_type: removed
|
|
41
|
+
severity: high
|
|
42
|
+
from_version: "7.0"
|
|
43
|
+
to_version: "8.1"
|
|
44
|
+
description: "click.get_terminal_size() removed, use shutil.get_terminal_size() from stdlib"
|
|
45
|
+
replacement: "shutil.get_terminal_size()"
|
|
46
|
+
has_deterministic_transform: true
|
|
47
|
+
transform_name: get_terminal_size_to_shutil
|
|
48
|
+
notes: "Returns named tuple with .columns and .lines attributes instead of indexing"
|
|
49
|
+
|
|
50
|
+
- symbol: "click.get_os_args()"
|
|
51
|
+
change_type: removed
|
|
52
|
+
severity: medium
|
|
53
|
+
from_version: "7.0"
|
|
54
|
+
to_version: "8.1"
|
|
55
|
+
description: "click.get_os_args() removed, use sys.argv[1:] instead"
|
|
56
|
+
replacement: "sys.argv[1:]"
|
|
57
|
+
has_deterministic_transform: true
|
|
58
|
+
transform_name: get_os_args_to_sys_argv
|
|
59
|
+
|
|
60
|
+
# Group/MultiCommand changes
|
|
61
|
+
- symbol: "Group.resultcallback"
|
|
62
|
+
change_type: renamed
|
|
63
|
+
severity: high
|
|
64
|
+
from_version: "7.0"
|
|
65
|
+
to_version: "8.0"
|
|
66
|
+
description: "resultcallback decorator renamed to result_callback"
|
|
67
|
+
replacement: "@group.result_callback()"
|
|
68
|
+
has_deterministic_transform: true
|
|
69
|
+
transform_name: resultcallback_to_result_callback
|
|
70
|
+
|
|
71
|
+
- symbol: "MultiCommand"
|
|
72
|
+
change_type: deprecated
|
|
73
|
+
severity: medium
|
|
74
|
+
from_version: "7.0"
|
|
75
|
+
to_version: "8.1"
|
|
76
|
+
description: "MultiCommand class deprecated, use Group as base class"
|
|
77
|
+
replacement: "Group"
|
|
78
|
+
has_deterministic_transform: true
|
|
79
|
+
transform_name: multicommand_to_group
|
|
80
|
+
|
|
81
|
+
- symbol: "BaseCommand"
|
|
82
|
+
change_type: deprecated
|
|
83
|
+
severity: medium
|
|
84
|
+
from_version: "7.0"
|
|
85
|
+
to_version: "8.1"
|
|
86
|
+
description: "BaseCommand class deprecated, use Command as base class"
|
|
87
|
+
replacement: "Command"
|
|
88
|
+
has_deterministic_transform: true
|
|
89
|
+
transform_name: basecommand_to_command
|
|
90
|
+
|
|
91
|
+
# CliRunner changes
|
|
92
|
+
- symbol: "CliRunner(..., mix_stderr=...)"
|
|
93
|
+
change_type: removed
|
|
94
|
+
severity: medium
|
|
95
|
+
from_version: "7.0"
|
|
96
|
+
to_version: "8.2"
|
|
97
|
+
description: "mix_stderr parameter removed from CliRunner, stdout and stderr now independent"
|
|
98
|
+
replacement: "Remove mix_stderr parameter"
|
|
99
|
+
has_deterministic_transform: true
|
|
100
|
+
transform_name: clirunner_remove_mix_stderr
|
|
101
|
+
|
|
102
|
+
- symbol: "result.output_bytes"
|
|
103
|
+
change_type: removed
|
|
104
|
+
severity: medium
|
|
105
|
+
from_version: "7.0"
|
|
106
|
+
to_version: "8.0"
|
|
107
|
+
description: "Result.output_bytes removed, encode result.output instead"
|
|
108
|
+
replacement: "result.output.encode()"
|
|
109
|
+
has_deterministic_transform: true
|
|
110
|
+
transform_name: output_bytes_to_encode
|
|
111
|
+
|
|
112
|
+
# Parameter source changes
|
|
113
|
+
- symbol: "click.core.ParameterSource"
|
|
114
|
+
change_type: behavior_changed
|
|
115
|
+
severity: low
|
|
116
|
+
from_version: "7.0"
|
|
117
|
+
to_version: "8.0"
|
|
118
|
+
description: "ParameterSource is now an enum.Enum subclass"
|
|
119
|
+
replacement: "Use enum comparison instead of string comparison"
|
|
120
|
+
has_deterministic_transform: false
|
|
121
|
+
notes: "May require changes if comparing ParameterSource as strings"
|
|
122
|
+
|
|
123
|
+
# Context changes
|
|
124
|
+
- symbol: "Context.invoke()"
|
|
125
|
+
change_type: behavior_changed
|
|
126
|
+
severity: low
|
|
127
|
+
from_version: "7.0"
|
|
128
|
+
to_version: "8.0"
|
|
129
|
+
description: "Context.invoke() now handles async callbacks properly"
|
|
130
|
+
replacement: "No code changes required"
|
|
131
|
+
has_deterministic_transform: false
|
|
132
|
+
|
|
133
|
+
# Command name changes
|
|
134
|
+
- symbol: "function_name_with_underscores"
|
|
135
|
+
change_type: behavior_changed
|
|
136
|
+
severity: medium
|
|
137
|
+
from_version: "7.0"
|
|
138
|
+
to_version: "8.0"
|
|
139
|
+
description: "Command function names with underscores are now auto-converted to dashes"
|
|
140
|
+
replacement: "Use explicit name= parameter if underscore is required"
|
|
141
|
+
has_deterministic_transform: false
|
|
142
|
+
notes: "my_command becomes my-command in CLI"
|
|
143
|
+
|
|
144
|
+
# IntRange changes
|
|
145
|
+
- symbol: "click.IntRange(min, max)"
|
|
146
|
+
change_type: behavior_changed
|
|
147
|
+
severity: low
|
|
148
|
+
from_version: "7.0"
|
|
149
|
+
to_version: "8.0"
|
|
150
|
+
description: "IntRange validation behavior updated for edge cases"
|
|
151
|
+
replacement: "Review IntRange usage for boundary conditions"
|
|
152
|
+
has_deterministic_transform: false
|
|
153
|
+
|
|
154
|
+
# Version import deprecation
|
|
155
|
+
- symbol: "click.__version__"
|
|
156
|
+
change_type: deprecated
|
|
157
|
+
severity: low
|
|
158
|
+
from_version: "7.0"
|
|
159
|
+
to_version: "8.2"
|
|
160
|
+
description: "__version__ attribute deprecated"
|
|
161
|
+
replacement: "importlib.metadata.version('click')"
|
|
162
|
+
has_deterministic_transform: true
|
|
163
|
+
transform_name: version_attr_to_importlib
|
|
164
|
+
notes: "Use importlib.metadata for version information"
|
|
165
|
+
|
|
166
|
+
# Default value changes
|
|
167
|
+
- symbol: "nargs=-1 default"
|
|
168
|
+
change_type: behavior_changed
|
|
169
|
+
severity: medium
|
|
170
|
+
from_version: "7.0"
|
|
171
|
+
to_version: "8.0"
|
|
172
|
+
description: "Parameters with nargs=-1 now default to empty tuple instead of None"
|
|
173
|
+
replacement: "Update code that checks for None default"
|
|
174
|
+
has_deterministic_transform: false
|
|
175
|
+
notes: "May affect conditional logic checking for None"
|
|
176
|
+
|
|
177
|
+
# Echo file parameter
|
|
178
|
+
- symbol: "click.echo(file=...)"
|
|
179
|
+
change_type: behavior_changed
|
|
180
|
+
severity: low
|
|
181
|
+
from_version: "7.0"
|
|
182
|
+
to_version: "8.0"
|
|
183
|
+
description: "click.echo() file parameter encoding handling changed"
|
|
184
|
+
replacement: "Ensure file is opened with proper encoding"
|
|
185
|
+
has_deterministic_transform: false
|
|
186
|
+
|
|
187
|
+
# Style color changes
|
|
188
|
+
- symbol: "click.style(fg=..., bg=...)"
|
|
189
|
+
change_type: behavior_changed
|
|
190
|
+
severity: low
|
|
191
|
+
from_version: "7.0"
|
|
192
|
+
to_version: "8.0"
|
|
193
|
+
description: "click.style() color parameter handling updated for better terminal support"
|
|
194
|
+
replacement: "No code changes required"
|
|
195
|
+
has_deterministic_transform: false
|