codeshift 0.3.3__py3-none-any.whl → 0.3.4__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.4.dist-info}/METADATA +46 -4
- {codeshift-0.3.3.dist-info → codeshift-0.3.4.dist-info}/RECORD +36 -15
- {codeshift-0.3.3.dist-info → codeshift-0.3.4.dist-info}/WHEEL +0 -0
- {codeshift-0.3.3.dist-info → codeshift-0.3.4.dist-info}/entry_points.txt +0 -0
- {codeshift-0.3.3.dist-info → codeshift-0.3.4.dist-info}/licenses/LICENSE +0 -0
- {codeshift-0.3.3.dist-info → codeshift-0.3.4.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"
|