#29441: Allow dumpdata in YAML using ruamel.yaml rather than PyYaml.
-------------------------------------+-------------------------------------
     Reporter:  Rémy Hubscher        |                    Owner:  Daniel
         Type:                       |  Rios
  Cleanup/optimization               |                   Status:  closed
    Component:  Core                 |                  Version:  2.0
  (Serialization)                    |
     Severity:  Normal               |               Resolution:  wontfix
     Keywords:                       |             Triage Stage:
                                     |  Unreviewed
    Has patch:  0                    |      Needs documentation:  0
  Needs tests:  0                    |  Patch needs improvement:  0
Easy pickings:  0                    |                    UI/UX:  0
-------------------------------------+-------------------------------------
Changes (by Daniel Rios):

 * status:  assigned => closed
 * resolution:   => wontfix


Comment:

 Hi.
 First, reasons should be provided as to why something is recommended. In
 this case, ruaml is recommended because it is, as far as my research has
 taken me, the only other python yaml library out there.

 The preference for the pyyaml module is baked into
 `django/core/serializers/__init__.py` in the `BUILTIN_SERIALIZERS`
 constant at
 
https://github.com/django/django/blob/5cc81cd9eb69f5f7a711412c02039b435c393135/django/core/serializers/__init__.py#L26

 I don't think it makes sense to have another built-in serializer. However,
 there is a workaround:

 Django does offer the possibility to use your own serializer in the
 docstring of the same file
 
(https://github.com/django/django/blob/5cc81cd9eb69f5f7a711412c02039b435c393135/django/core/serializers/__init__.py#L10),
 but the actual user-facing documentation seems to be nonexistent.

 I was able to, however, overwrite the preference for pyyaml by installing
 ruamel and with `SERIALIZATION_MODULES` in settings.py as follows:
 {{{
 SERIALIZATION_MODULES = {
     'yaml': 'ruamel.yaml.serializer'
 }
 }}}

 I was unable to get it running because ruaml (even though based on pyyaml)
 is written a bit different to the way Django handles serializers but the
 fact that it does support other serializers means that it would be
 possible to get ruaml to work.

 A better idea would be to create a third party package `django-ruaml-
 serializer` that patches the differences in ruaml to work with the
 existing django serializer.

-- 
Ticket URL: <https://code.djangoproject.com/ticket/29441#comment:3>
Django <https://code.djangoproject.com/>
The Web framework for perfectionists with deadlines.

-- 
You received this message because you are subscribed to the Google Groups 
"Django updates" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To post to this group, send email to [email protected].
To view this discussion on the web visit 
https://groups.google.com/d/msgid/django-updates/063.e981140aa2ab731700b17c049cef456f%40djangoproject.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to