importdatetimefromtypingimportAnyimportyamlfrommsgspecimportconvert,to_builtinsfromfastdev.io.handlers.base_handlerimportBaseFileHandler# from msgspec.yaml import decode as msgspec_yaml_decode# from msgspec.yaml import encode as msgspec_yaml_encode# ref: https://github.com/jcrist/msgspec/blob/13a06dd88bcf553bb0497da3b3f0a2a628627ed6/msgspec/yaml.py#L31defmsgspec_yaml_encode(obj:Any)->bytes:Dumper=getattr(yaml,"CDumper",yaml.Dumper)returnyaml.dump_all([to_builtins(obj,builtin_types=(datetime.datetime,datetime.date))],encoding="utf-8",Dumper=Dumper,allow_unicode=True,sort_keys=False,)# ref: https://github.com/jcrist/msgspec/blob/13a06dd88bcf553bb0497da3b3f0a2a628627ed6/msgspec/yaml.py#L129defmsgspec_yaml_decode(buf,*,type=Any):Loader=getattr(yaml,"CFullLoader",yaml.FullLoader)ifnotisinstance(buf,(str,bytes)):# call `memoryview` first, since `bytes(1)` is actually validbuf=bytes(memoryview(buf))obj=yaml.load(buf,Loader)iftypeisAny:returnobjreturnconvert(obj,type,builtin_types=(datetime.datetime,datetime.date),)