@@ -65,6 +65,7 @@ impl SchemaSerializer {
6565 fallback : Option < & ' a Bound < ' a , PyAny > > ,
6666 duck_typing_ser_mode : DuckTypingSerMode ,
6767 context : Option < & ' a Bound < ' a , PyAny > > ,
68+ sort_keys : bool ,
6869 ) -> Extra < ' b > {
6970 Extra :: new (
7071 py,
@@ -81,6 +82,7 @@ impl SchemaSerializer {
8182 fallback,
8283 duck_typing_ser_mode,
8384 context,
85+ sort_keys,
8486 )
8587 }
8688}
@@ -148,6 +150,7 @@ impl SchemaSerializer {
148150 fallback,
149151 duck_typing_ser_mode,
150152 context,
153+ false ,
151154 ) ;
152155 let v = self . serializer . to_python ( value, include, exclude, & extra) ?;
153156 warnings. final_check ( py) ?;
@@ -157,7 +160,7 @@ impl SchemaSerializer {
157160 #[ allow( clippy:: too_many_arguments) ]
158161 #[ pyo3( signature = ( value, * , indent = None , include = None , exclude = None , by_alias = None ,
159162 exclude_unset = false , exclude_defaults = false , exclude_none = false , round_trip = false , warnings = WarningsArg :: Bool ( true ) ,
160- fallback = None , serialize_as_any = false , context = None ) ) ]
163+ fallback = None , serialize_as_any = false , context = None , sort_keys = false ) ) ]
161164 pub fn to_json (
162165 & self ,
163166 py : Python ,
@@ -174,6 +177,7 @@ impl SchemaSerializer {
174177 fallback : Option < & Bound < ' _ , PyAny > > ,
175178 serialize_as_any : bool ,
176179 context : Option < & Bound < ' _ , PyAny > > ,
180+ sort_keys : bool ,
177181 ) -> PyResult < PyObject > {
178182 let warnings_mode = match warnings {
179183 WarningsArg :: Bool ( b) => b. into ( ) ,
@@ -196,6 +200,7 @@ impl SchemaSerializer {
196200 fallback,
197201 duck_typing_ser_mode,
198202 context,
203+ sort_keys,
199204 ) ;
200205 let bytes = to_json_bytes (
201206 value,
@@ -242,7 +247,7 @@ impl SchemaSerializer {
242247#[ pyo3( signature = ( value, * , indent = None , include = None , exclude = None , by_alias = None ,
243248 exclude_none = false , round_trip = false , timedelta_mode = "iso8601" , bytes_mode = "utf8" ,
244249 inf_nan_mode = "constants" , serialize_unknown = false , fallback = None , serialize_as_any = false ,
245- context = None ) ) ]
250+ context = None , sort_keys = false ) ) ]
246251pub fn to_json (
247252 py : Python ,
248253 value : & Bound < ' _ , PyAny > ,
@@ -259,6 +264,7 @@ pub fn to_json(
259264 fallback : Option < & Bound < ' _ , PyAny > > ,
260265 serialize_as_any : bool ,
261266 context : Option < & Bound < ' _ , PyAny > > ,
267+ sort_keys : bool ,
262268) -> PyResult < PyObject > {
263269 let state = SerializationState :: new ( timedelta_mode, bytes_mode, inf_nan_mode) ?;
264270 let duck_typing_ser_mode = DuckTypingSerMode :: from_bool ( serialize_as_any) ;
@@ -272,6 +278,7 @@ pub fn to_json(
272278 fallback,
273279 duck_typing_ser_mode,
274280 context,
281+ sort_keys,
275282 ) ;
276283 let serializer = type_serializers:: any:: AnySerializer . into ( ) ;
277284 let bytes = to_json_bytes ( value, & serializer, include, exclude, & extra, indent, 1024 ) ?;
@@ -284,7 +291,7 @@ pub fn to_json(
284291#[ pyfunction]
285292#[ pyo3( signature = ( value, * , include = None , exclude = None , by_alias = None , exclude_none = false , round_trip = false ,
286293 timedelta_mode = "iso8601" , bytes_mode = "utf8" , inf_nan_mode = "constants" , serialize_unknown = false , fallback = None ,
287- serialize_as_any = false , context = None ) ) ]
294+ serialize_as_any = false , context = None , sort_keys = false ) ) ]
288295pub fn to_jsonable_python (
289296 py : Python ,
290297 value : & Bound < ' _ , PyAny > ,
@@ -300,6 +307,7 @@ pub fn to_jsonable_python(
300307 fallback : Option < & Bound < ' _ , PyAny > > ,
301308 serialize_as_any : bool ,
302309 context : Option < & Bound < ' _ , PyAny > > ,
310+ sort_keys : bool ,
303311) -> PyResult < PyObject > {
304312 let state = SerializationState :: new ( timedelta_mode, bytes_mode, inf_nan_mode) ?;
305313 let duck_typing_ser_mode = DuckTypingSerMode :: from_bool ( serialize_as_any) ;
@@ -313,6 +321,7 @@ pub fn to_jsonable_python(
313321 fallback,
314322 duck_typing_ser_mode,
315323 context,
324+ sort_keys,
316325 ) ;
317326 let v = infer:: infer_to_python ( value, include, exclude, & extra) ?;
318327 state. final_check ( py) ?;
0 commit comments