Register a new serializer. ``serializer_module`` should be the fully qualified module name for the serializer. If ``serializers`` is provided, the registration will be added to the provided dictionary. If ``serializers`` is not provided, the registration will be made direc
(format, serializer_module, serializers=None)
| 53 | |
| 54 | |
| 55 | def register_serializer(format, serializer_module, serializers=None): |
| 56 | """Register a new serializer. |
| 57 | |
| 58 | ``serializer_module`` should be the fully qualified module name |
| 59 | for the serializer. |
| 60 | |
| 61 | If ``serializers`` is provided, the registration will be added |
| 62 | to the provided dictionary. |
| 63 | |
| 64 | If ``serializers`` is not provided, the registration will be made |
| 65 | directly into the global register of serializers. Adding serializers |
| 66 | directly is not a thread-safe operation. |
| 67 | """ |
| 68 | if serializers is None and not _serializers: |
| 69 | _load_serializers() |
| 70 | |
| 71 | try: |
| 72 | module = importlib.import_module(serializer_module) |
| 73 | except ImportError as exc: |
| 74 | bad_serializer = BadSerializer(exc) |
| 75 | |
| 76 | module = type( |
| 77 | "BadSerializerModule", |
| 78 | (), |
| 79 | { |
| 80 | "Deserializer": bad_serializer, |
| 81 | "Serializer": bad_serializer, |
| 82 | }, |
| 83 | ) |
| 84 | |
| 85 | if serializers is None: |
| 86 | _serializers[format] = module |
| 87 | else: |
| 88 | serializers[format] = module |
| 89 | |
| 90 | |
| 91 | def unregister_serializer(format): |
no test coverage detected