GithubHelp home page GithubHelp logo

Comments (2)

touilleMan avatar touilleMan commented on May 29, 2024

I think your usecase is totally legit so we should add some checks in the __init__ for the missing value:

  • Make sure missing param provides an iterable or a callable
  • if iterable, convert it to List : missing = List(self.container, missing)
  • if callable, wrap it : missing = lambda *args, **kwargs: List(missing(*args, **kwargs))

On top of that we should add a word about this in ListField's documentation

from umongo.

lafrech avatar lafrech commented on May 29, 2024

DictField is also affected.

I pushed a fix for this in #171.

It is along the lines of your proposal above.

The checks are performed after the call to super().__init__ to avoid leaking data_object structures (Dict and List) to the pure marshmallow Schema. And because self.container is not defined before that.

At this point, I was tempted to call self.deserialize rather than Dict or List, and even to factorize than in Field itself. I don't think it would hurt. In fact, it would allow the user to pass default values in both serialized form and deserialized form (assuming the field can swallow its deserialized form, which I think is the case as this is the intent of the _deserialize override in some fields, such as DateTime). Since this might have other consequences, I left it aside for a moment.

Maybe ReferenceField should be addressed as well. It is a bit different and I don't really see the use case, so I'm leaving it as is.

from umongo.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.