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.
Files changed (36) hide show
  1. codeshift/cli/commands/apply.py +24 -2
  2. codeshift/cli/package_manager.py +102 -0
  3. codeshift/knowledge/generator.py +11 -1
  4. codeshift/knowledge_base/libraries/aiohttp.yaml +186 -0
  5. codeshift/knowledge_base/libraries/attrs.yaml +181 -0
  6. codeshift/knowledge_base/libraries/celery.yaml +244 -0
  7. codeshift/knowledge_base/libraries/click.yaml +195 -0
  8. codeshift/knowledge_base/libraries/django.yaml +355 -0
  9. codeshift/knowledge_base/libraries/flask.yaml +270 -0
  10. codeshift/knowledge_base/libraries/httpx.yaml +183 -0
  11. codeshift/knowledge_base/libraries/marshmallow.yaml +238 -0
  12. codeshift/knowledge_base/libraries/numpy.yaml +429 -0
  13. codeshift/knowledge_base/libraries/pytest.yaml +192 -0
  14. codeshift/knowledge_base/libraries/sqlalchemy.yaml +2 -1
  15. codeshift/migrator/engine.py +60 -0
  16. codeshift/migrator/transforms/__init__.py +2 -0
  17. codeshift/migrator/transforms/aiohttp_transformer.py +608 -0
  18. codeshift/migrator/transforms/attrs_transformer.py +570 -0
  19. codeshift/migrator/transforms/celery_transformer.py +546 -0
  20. codeshift/migrator/transforms/click_transformer.py +526 -0
  21. codeshift/migrator/transforms/django_transformer.py +852 -0
  22. codeshift/migrator/transforms/fastapi_transformer.py +12 -7
  23. codeshift/migrator/transforms/flask_transformer.py +505 -0
  24. codeshift/migrator/transforms/httpx_transformer.py +419 -0
  25. codeshift/migrator/transforms/marshmallow_transformer.py +515 -0
  26. codeshift/migrator/transforms/numpy_transformer.py +413 -0
  27. codeshift/migrator/transforms/pydantic_v1_to_v2.py +53 -8
  28. codeshift/migrator/transforms/pytest_transformer.py +351 -0
  29. codeshift/migrator/transforms/requests_transformer.py +74 -1
  30. codeshift/migrator/transforms/sqlalchemy_transformer.py +692 -39
  31. {codeshift-0.3.3.dist-info → codeshift-0.3.5.dist-info}/METADATA +46 -4
  32. {codeshift-0.3.3.dist-info → codeshift-0.3.5.dist-info}/RECORD +36 -15
  33. {codeshift-0.3.3.dist-info → codeshift-0.3.5.dist-info}/WHEEL +0 -0
  34. {codeshift-0.3.3.dist-info → codeshift-0.3.5.dist-info}/entry_points.txt +0 -0
  35. {codeshift-0.3.3.dist-info → codeshift-0.3.5.dist-info}/licenses/LICENSE +0 -0
  36. {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