from marshmallow import fields class VendorPrefixField(fields.Field): def __init__(self, vendor: str, dump_trim: bool = False, **kwargs): super().__init__(**kwargs) self.vendor = vendor self.dump_trim = dump_trim def _serialize(self, value, attr, obj, **kwargs): if not self.dump_trim or not value: return value if self.vendor and value.startswith(f"{self.vendor}_"): value = value[len(self.vendor) + 1 :] return value def _deserialize(self, value, attr, data, **kwargs): if not value: return value if not value.startswith(self.vendor): value = f"{self.vendor}_{value}" return value