factory.py
1 """ 2 Encoder factory module 3 """ 4 5 from ...util import Resolver 6 7 from .base import Encoder 8 from .serialize import SerializeEncoder 9 10 11 class EncoderFactory: 12 """ 13 Encoder factory. Creates new Encoder instances. 14 """ 15 16 @staticmethod 17 def get(encoder): 18 """ 19 Gets a new instance of encoder class. 20 21 Args: 22 encoder: Encoder instance class 23 24 Returns: 25 Encoder class 26 """ 27 28 # Local task if no package 29 if "." not in encoder: 30 # Get parent package 31 encoder = ".".join(__name__.split(".")[:-1]) + "." + encoder.capitalize() + "Encoder" 32 33 return Resolver()(encoder) 34 35 @staticmethod 36 def create(encoder): 37 """ 38 Creates a new Encoder instance. 39 40 Args: 41 encoder: Encoder instance class 42 43 Returns: 44 Encoder 45 """ 46 47 # Return default encoder 48 if encoder is True: 49 return Encoder() 50 51 # Supported serialization methods 52 if encoder in ["messagepack", "pickle"]: 53 return SerializeEncoder(encoder) 54 55 # Get Encoder instance 56 return EncoderFactory.get(encoder)()