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,183 @@
1
+ # HTTPX Knowledge Base
2
+ # Breaking changes from 0.x to 1.x (including 0.27.x and 0.28.x breaking changes)
3
+
4
+ name: httpx
5
+ display_name: HTTPX
6
+ description: A fully featured HTTP client for Python 3, with sync and async APIs
7
+ migration_guide_url: https://www.python-httpx.org/
8
+
9
+ supported_migrations:
10
+ - from: "0.23"
11
+ to: "0.28"
12
+ - from: "0.24"
13
+ to: "0.28"
14
+ - from: "0.25"
15
+ to: "0.28"
16
+ - from: "0.26"
17
+ to: "0.28"
18
+ - from: "0.27"
19
+ to: "0.28"
20
+
21
+ breaking_changes:
22
+ # Timeout parameter changes
23
+ - symbol: "Timeout(timeout=...)"
24
+ change_type: renamed
25
+ severity: medium
26
+ from_version: "0.23"
27
+ to_version: "0.28"
28
+ description: "Timeout first positional argument name simplified"
29
+ replacement: "Timeout(...) - use positional argument directly"
30
+ has_deterministic_transform: true
31
+ transform_name: timeout_keyword_to_positional
32
+ notes: "httpx.Timeout(timeout=5) becomes httpx.Timeout(5.0)"
33
+
34
+ - symbol: "Timeout(connect_timeout=...)"
35
+ change_type: renamed
36
+ severity: medium
37
+ from_version: "0.23"
38
+ to_version: "0.28"
39
+ description: "connect_timeout parameter renamed to connect"
40
+ replacement: "Timeout(connect=...)"
41
+ has_deterministic_transform: true
42
+ transform_name: timeout_connect_timeout_to_connect
43
+
44
+ - symbol: "Timeout(read_timeout=...)"
45
+ change_type: renamed
46
+ severity: medium
47
+ from_version: "0.23"
48
+ to_version: "0.28"
49
+ description: "read_timeout parameter renamed to read"
50
+ replacement: "Timeout(read=...)"
51
+ has_deterministic_transform: true
52
+ transform_name: timeout_read_timeout_to_read
53
+
54
+ - symbol: "Timeout(write_timeout=...)"
55
+ change_type: renamed
56
+ severity: medium
57
+ from_version: "0.23"
58
+ to_version: "0.28"
59
+ description: "write_timeout parameter renamed to write"
60
+ replacement: "Timeout(write=...)"
61
+ has_deterministic_transform: true
62
+ transform_name: timeout_write_timeout_to_write
63
+
64
+ - symbol: "Timeout(pool_timeout=...)"
65
+ change_type: renamed
66
+ severity: medium
67
+ from_version: "0.23"
68
+ to_version: "0.28"
69
+ description: "pool_timeout parameter renamed to pool"
70
+ replacement: "Timeout(pool=...)"
71
+ has_deterministic_transform: true
72
+ transform_name: timeout_pool_timeout_to_pool
73
+
74
+ # Client/AsyncClient proxies parameter removal
75
+ - symbol: "Client(proxies=...)"
76
+ change_type: removed
77
+ severity: high
78
+ from_version: "0.27"
79
+ to_version: "0.28"
80
+ description: "proxies parameter removed, use proxy for single proxy or mounts for multiple"
81
+ replacement: "Client(proxy=...) or Client(mounts={...})"
82
+ has_deterministic_transform: true
83
+ transform_name: client_proxies_to_proxy
84
+ notes: "Simple single proxy can use proxy=, complex setups need mounts with HTTPTransport"
85
+
86
+ - symbol: "AsyncClient(proxies=...)"
87
+ change_type: removed
88
+ severity: high
89
+ from_version: "0.27"
90
+ to_version: "0.28"
91
+ description: "proxies parameter removed, use proxy for single proxy or mounts for multiple"
92
+ replacement: "AsyncClient(proxy=...) or AsyncClient(mounts={...})"
93
+ has_deterministic_transform: true
94
+ transform_name: async_client_proxies_to_proxy
95
+ notes: "Simple single proxy can use proxy=, complex setups need mounts with HTTPTransport"
96
+
97
+ # App parameter removal
98
+ - symbol: "Client(app=...)"
99
+ change_type: removed
100
+ severity: high
101
+ from_version: "0.27"
102
+ to_version: "0.28"
103
+ description: "app parameter removed, use transport=httpx.WSGITransport(app=...)"
104
+ replacement: "Client(transport=httpx.WSGITransport(app=...))"
105
+ has_deterministic_transform: true
106
+ transform_name: client_app_to_wsgi_transport
107
+ notes: "Explicit transport style is now required"
108
+
109
+ - symbol: "AsyncClient(app=...)"
110
+ change_type: removed
111
+ severity: high
112
+ from_version: "0.27"
113
+ to_version: "0.28"
114
+ description: "app parameter removed, use transport=httpx.ASGITransport(app=...)"
115
+ replacement: "AsyncClient(transport=httpx.ASGITransport(app=...))"
116
+ has_deterministic_transform: true
117
+ transform_name: async_client_app_to_asgi_transport
118
+ notes: "Explicit transport style is now required"
119
+
120
+ # Response.iter_lines() behavior change
121
+ - symbol: "Response.iter_lines()"
122
+ change_type: behavior_change
123
+ severity: medium
124
+ from_version: "0.23"
125
+ to_version: "0.24"
126
+ description: "iter_lines() no longer includes trailing newline characters"
127
+ replacement: "iter_lines() - behavior changed, may need code adjustment"
128
+ has_deterministic_transform: false
129
+ notes: "This is a behavior change that may require manual review"
130
+
131
+ # NetRC authentication change
132
+ - symbol: "trust_env=True"
133
+ change_type: behavior_change
134
+ severity: medium
135
+ from_version: "0.23"
136
+ to_version: "0.24"
137
+ description: "Automatic NetRC authentication removed, use explicit NetRCAuth"
138
+ replacement: "auth=httpx.NetRCAuth()"
139
+ has_deterministic_transform: false
140
+ notes: "If relying on automatic netrc handling, add explicit auth=httpx.NetRCAuth()"
141
+
142
+ # Query parameter encoding change
143
+ - symbol: "params encoding"
144
+ change_type: behavior_change
145
+ severity: low
146
+ from_version: "0.23"
147
+ to_version: "0.24"
148
+ description: "Query parameters now use %20 for spaces instead of +"
149
+ replacement: "No code change needed, but URL encoding differs from requests library"
150
+ has_deterministic_transform: false
151
+ notes: "May affect URL comparisons in tests"
152
+
153
+ # SSL/TLS changes
154
+ - symbol: "verify=<path>"
155
+ change_type: deprecated
156
+ severity: medium
157
+ from_version: "0.27"
158
+ to_version: "0.28"
159
+ description: "verify parameter as string path is deprecated"
160
+ replacement: "Use ssl.create_default_context() with ssl_context parameter"
161
+ has_deterministic_transform: false
162
+ notes: "String paths for SSL verification are deprecated"
163
+
164
+ - symbol: "cert=..."
165
+ change_type: deprecated
166
+ severity: medium
167
+ from_version: "0.27"
168
+ to_version: "0.28"
169
+ description: "cert parameter is deprecated"
170
+ replacement: "Configure SSL context directly with ssl_context parameter"
171
+ has_deterministic_transform: false
172
+ notes: "Client certificate configuration via cert is deprecated"
173
+
174
+ # Follow redirects default change
175
+ - symbol: "follow_redirects"
176
+ change_type: behavior_change
177
+ severity: high
178
+ from_version: "0.19"
179
+ to_version: "0.20"
180
+ description: "Redirects are no longer automatically followed by default"
181
+ replacement: "Add follow_redirects=True to restore old behavior"
182
+ has_deterministic_transform: false
183
+ notes: "Must explicitly enable redirect following if needed"
@@ -0,0 +1,238 @@
1
+ # Marshmallow Knowledge Base
2
+ # Breaking changes from v2.x to v3.x
3
+
4
+ name: marshmallow
5
+ display_name: Marshmallow
6
+ description: Object serialization/deserialization library
7
+ migration_guide_url: https://marshmallow.readthedocs.io/en/stable/upgrading.html
8
+
9
+ supported_migrations:
10
+ - from: "2.0"
11
+ to: "3.0"
12
+
13
+ breaking_changes:
14
+ # Return value changes - Schema.dump() and Schema.load()
15
+ - symbol: "Schema.dump().data"
16
+ change_type: removed
17
+ severity: high
18
+ from_version: "2.0"
19
+ to_version: "3.0"
20
+ description: "Schema.dump() no longer returns (data, errors) tuple, returns data directly"
21
+ replacement: "Schema.dump()"
22
+ has_deterministic_transform: true
23
+ transform_name: dump_data_to_dump
24
+ notes: "Validation errors now raise ValidationError exception"
25
+
26
+ - symbol: "Schema.load().data"
27
+ change_type: removed
28
+ severity: high
29
+ from_version: "2.0"
30
+ to_version: "3.0"
31
+ description: "Schema.load() no longer returns (data, errors) tuple, returns data directly"
32
+ replacement: "Schema.load()"
33
+ has_deterministic_transform: true
34
+ transform_name: load_data_to_load
35
+ notes: "Validation errors now raise ValidationError exception"
36
+
37
+ - symbol: "Schema.dumps().data"
38
+ change_type: removed
39
+ severity: high
40
+ from_version: "2.0"
41
+ to_version: "3.0"
42
+ description: "Schema.dumps() no longer returns (data, errors) tuple, returns data directly"
43
+ replacement: "Schema.dumps()"
44
+ has_deterministic_transform: true
45
+ transform_name: dumps_data_to_dumps
46
+
47
+ - symbol: "Schema.loads().data"
48
+ change_type: removed
49
+ severity: high
50
+ from_version: "2.0"
51
+ to_version: "3.0"
52
+ description: "Schema.loads() no longer returns (data, errors) tuple, returns data directly"
53
+ replacement: "Schema.loads()"
54
+ has_deterministic_transform: true
55
+ transform_name: loads_data_to_loads
56
+
57
+ # Field parameter renames
58
+ - symbol: "fields.Field(missing=...)"
59
+ change_type: renamed
60
+ severity: high
61
+ from_version: "2.0"
62
+ to_version: "3.0"
63
+ description: "Field 'missing' parameter renamed to 'load_default'"
64
+ replacement: "fields.Field(load_default=...)"
65
+ has_deterministic_transform: true
66
+ transform_name: missing_to_load_default
67
+
68
+ - symbol: "fields.Field(default=...)"
69
+ change_type: renamed
70
+ severity: high
71
+ from_version: "2.0"
72
+ to_version: "3.0"
73
+ description: "Field 'default' parameter renamed to 'dump_default'"
74
+ replacement: "fields.Field(dump_default=...)"
75
+ has_deterministic_transform: true
76
+ transform_name: default_to_dump_default
77
+
78
+ - symbol: "fields.Field(load_from=...)"
79
+ change_type: renamed
80
+ severity: high
81
+ from_version: "2.0"
82
+ to_version: "3.0"
83
+ description: "Field 'load_from' parameter renamed to 'data_key'"
84
+ replacement: "fields.Field(data_key=...)"
85
+ has_deterministic_transform: true
86
+ transform_name: load_from_to_data_key
87
+
88
+ - symbol: "fields.Field(dump_to=...)"
89
+ change_type: renamed
90
+ severity: high
91
+ from_version: "2.0"
92
+ to_version: "3.0"
93
+ description: "Field 'dump_to' parameter renamed to 'data_key'"
94
+ replacement: "fields.Field(data_key=...)"
95
+ has_deterministic_transform: true
96
+ transform_name: dump_to_to_data_key
97
+ notes: "In v3, load_from and dump_to are merged into data_key"
98
+
99
+ # Schema.Meta.strict removal
100
+ - symbol: "Schema.Meta.strict"
101
+ change_type: removed
102
+ severity: high
103
+ from_version: "2.0"
104
+ to_version: "3.0"
105
+ description: "Meta.strict option removed, schemas are always strict in v3"
106
+ replacement: "# Remove strict option"
107
+ has_deterministic_transform: true
108
+ transform_name: remove_meta_strict
109
+ notes: "Schemas always raise ValidationError on invalid data in v3"
110
+
111
+ # Schema strict parameter removal
112
+ - symbol: "Schema(strict=...)"
113
+ change_type: removed
114
+ severity: high
115
+ from_version: "2.0"
116
+ to_version: "3.0"
117
+ description: "Schema strict parameter removed, schemas are always strict"
118
+ replacement: "Schema()"
119
+ has_deterministic_transform: true
120
+ transform_name: remove_schema_strict
121
+ notes: "Remove strict=True from schema instantiation"
122
+
123
+ # Decorator changes
124
+ - symbol: "@post_load(pass_many=True)"
125
+ change_type: signature_changed
126
+ severity: medium
127
+ from_version: "2.0"
128
+ to_version: "3.0"
129
+ description: "Decorated methods now receive 'many' as keyword argument"
130
+ replacement: "@post_load and add **kwargs to method signature"
131
+ has_deterministic_transform: true
132
+ transform_name: post_load_pass_many
133
+ notes: "Remove pass_many parameter, add **kwargs to method"
134
+
135
+ - symbol: "@pre_load(pass_many=True)"
136
+ change_type: signature_changed
137
+ severity: medium
138
+ from_version: "2.0"
139
+ to_version: "3.0"
140
+ description: "Decorated methods now receive 'many' as keyword argument"
141
+ replacement: "@pre_load and add **kwargs to method signature"
142
+ has_deterministic_transform: true
143
+ transform_name: pre_load_pass_many
144
+
145
+ - symbol: "@post_dump(pass_many=True)"
146
+ change_type: signature_changed
147
+ severity: medium
148
+ from_version: "2.0"
149
+ to_version: "3.0"
150
+ description: "Decorated methods now receive 'many' as keyword argument"
151
+ replacement: "@post_dump and add **kwargs to method signature"
152
+ has_deterministic_transform: true
153
+ transform_name: post_dump_pass_many
154
+
155
+ - symbol: "@pre_dump(pass_many=True)"
156
+ change_type: signature_changed
157
+ severity: medium
158
+ from_version: "2.0"
159
+ to_version: "3.0"
160
+ description: "Decorated methods now receive 'many' as keyword argument"
161
+ replacement: "@pre_dump and add **kwargs to method signature"
162
+ has_deterministic_transform: true
163
+ transform_name: pre_dump_pass_many
164
+
165
+ - symbol: "@validates_schema(pass_many=True)"
166
+ change_type: signature_changed
167
+ severity: medium
168
+ from_version: "2.0"
169
+ to_version: "3.0"
170
+ description: "Decorated methods now receive 'many' and 'partial' as kwargs"
171
+ replacement: "@validates_schema and add **kwargs to method signature"
172
+ has_deterministic_transform: true
173
+ transform_name: validates_schema_pass_many
174
+
175
+ # Method signature changes
176
+ - symbol: "Schema.get_attribute(attr, obj, default)"
177
+ change_type: signature_changed
178
+ severity: medium
179
+ from_version: "2.0"
180
+ to_version: "3.0"
181
+ description: "get_attribute parameter order changed to (obj, attr, default)"
182
+ replacement: "Schema.get_attribute(obj, attr, default)"
183
+ has_deterministic_transform: false
184
+ notes: "Requires manual review - parameter order swap"
185
+
186
+ - symbol: "Schema.handle_error(error, data)"
187
+ change_type: signature_changed
188
+ severity: medium
189
+ from_version: "2.0"
190
+ to_version: "3.0"
191
+ description: "handle_error now accepts 'many' and 'partial' keyword arguments"
192
+ replacement: "Schema.handle_error(error, data, *, many, partial)"
193
+ has_deterministic_transform: false
194
+ notes: "Add **kwargs to handle_error override"
195
+
196
+ # Custom field changes
197
+ - symbol: "self.fail(key)"
198
+ change_type: renamed
199
+ severity: medium
200
+ from_version: "2.0"
201
+ to_version: "3.0"
202
+ description: "Field.fail() replaced with raise self.make_error()"
203
+ replacement: "raise self.make_error(key)"
204
+ has_deterministic_transform: true
205
+ transform_name: fail_to_make_error
206
+
207
+ # json_module deprecation
208
+ - symbol: "Schema.Meta.json_module"
209
+ change_type: renamed
210
+ severity: low
211
+ from_version: "2.0"
212
+ to_version: "3.0"
213
+ description: "Meta.json_module renamed to Meta.render_module"
214
+ replacement: "Schema.Meta.render_module"
215
+ has_deterministic_transform: true
216
+ transform_name: json_module_to_render_module
217
+
218
+ # Boolean validation changes
219
+ - symbol: "fields.Boolean()"
220
+ change_type: behavior_changed
221
+ severity: low
222
+ from_version: "2.0"
223
+ to_version: "3.0"
224
+ description: "Boolean field truthy/falsy handling changed"
225
+ replacement: "fields.Boolean(truthy=..., falsy=...)"
226
+ has_deterministic_transform: false
227
+ notes: "Review boolean field behavior if custom truthy/falsy needed"
228
+
229
+ # Number field boolean rejection
230
+ - symbol: "fields.Number()"
231
+ change_type: behavior_changed
232
+ severity: low
233
+ from_version: "2.0"
234
+ to_version: "3.0"
235
+ description: "Number fields no longer accept booleans as valid input"
236
+ replacement: "fields.Number()"
237
+ has_deterministic_transform: false
238
+ notes: "May cause validation errors if booleans were passed to number fields"