@@ -452,7 +452,9 @@ def calc_extra_stats(
452
452
bilateral_frontier_outcomes = fo ,
453
453
)
454
454
455
- def serialize (self ) -> dict [str , Any ]:
455
+ def serialize (
456
+ self , python_class_identifier = PYTHON_CLASS_IDENTIFIER
457
+ ) -> dict [str , Any ]:
456
458
"""
457
459
Converts the current scenario into a serializable dict.
458
460
@@ -507,11 +509,24 @@ def adjust(
507
509
return d
508
510
509
511
domain = adjust (
510
- serialize (self .outcome_space , shorten_type_field = True , add_type_field = True ),
512
+ serialize (
513
+ self .outcome_space ,
514
+ shorten_type_field = True ,
515
+ add_type_field = True ,
516
+ python_class_identifier = python_class_identifier ,
517
+ ),
511
518
"domain" ,
512
519
)
513
520
ufuns = [
514
- adjust (serialize (u , shorten_type_field = True , add_type_field = True ), i )
521
+ adjust (
522
+ serialize (
523
+ u ,
524
+ shorten_type_field = True ,
525
+ add_type_field = True ,
526
+ python_class_identifier = python_class_identifier ,
527
+ ),
528
+ i ,
529
+ )
515
530
for i , u in enumerate (self .ufuns )
516
531
]
517
532
return dict (domain = domain , ufuns = ufuns )
@@ -532,13 +547,19 @@ def to_json(self, folder: Path | str) -> None:
532
547
"""
533
548
self .dumpas (folder , "json" )
534
549
535
- def dumpas (self , folder : Path | str , type = "yml" , compact : bool = False ) -> None :
550
+ def dumpas (
551
+ self ,
552
+ folder : Path | str ,
553
+ type = "yml" ,
554
+ compact : bool = False ,
555
+ python_class_identifier = PYTHON_CLASS_IDENTIFIER ,
556
+ ) -> None :
536
557
"""
537
558
Dumps the scenario in the given file format.
538
559
"""
539
560
folder = Path (folder )
540
561
folder .mkdir (parents = True , exist_ok = True )
541
- serialized = self .serialize ()
562
+ serialized = self .serialize (python_class_identifier = python_class_identifier )
542
563
dump (serialized ["domain" ], folder / f"{ serialized ['domain' ]['name' ]} .{ type } " )
543
564
for u in serialized ["ufuns" ]:
544
565
dump (u , folder / f"{ u ['name' ]} .{ type } " , sort_keys = True , compact = compact )
@@ -666,6 +687,7 @@ def from_yaml_files(
666
687
ignore_discount = False ,
667
688
ignore_reserved = False ,
668
689
safe_parsing = True ,
690
+ python_class_identifier = "type" ,
669
691
) -> Scenario | None :
670
692
_ = safe_parsing # yaml parsing is always safe
671
693
@@ -677,13 +699,13 @@ def adjust_type(d: dict, base: str = "negmas", domain=None) -> dict:
677
699
678
700
os = deserialize (
679
701
adjust_type (load (domain )),
680
- python_class_identifier = "type" ,
681
702
base_module = "negmas" ,
703
+ python_class_identifier = python_class_identifier ,
682
704
)
683
705
utils = tuple (
684
706
deserialize (
685
707
adjust_type (load (fname ), domain = os ),
686
- python_class_identifier = "type" ,
708
+ python_class_identifier = python_class_identifier ,
687
709
base_module = "negmas" ,
688
710
)
689
711
for fname in ufuns
0 commit comments