Giter VIP home page Giter VIP logo

Comments (8)

gshank avatar gshank commented on May 14, 2024 1

I did a few tests and it looks good.

from mashumaro.

Fatal1ty avatar Fatal1ty commented on May 14, 2024

Why don't use hooks? Сan you show an example in which the hooks wouldn't be enough?

from mashumaro.

Fatal1ty avatar Fatal1ty commented on May 14, 2024

Theoretically, I could add a flag in the field / datacalss config to specify whether such options should be passed to the hook calls somehow. This flag could be turned off by default just to maintain better performance in most cases when the options aren't needed.

from mashumaro.

gshank avatar gshank commented on May 14, 2024

The main thing we use this for is a flag to indicate whether the 'to_dict' output would skip attributes that are set to 'None'. I though that an 'options' dictionary would be more flexible in that we could implement other options. Another thing that we need in a couple of places is converting field names to and from names with hyphens and underscores. At the moment either an options dictionary or an 'omit_none' or 'keep_none' flag would handle our requirements.

from mashumaro.

Fatal1ty avatar Fatal1ty commented on May 14, 2024

Seems like omit_none flag sounds reasonable. I'll try my best to add it soon.

from mashumaro.

Fatal1ty avatar Fatal1ty commented on May 14, 2024

@gshank I'm working on the configuration class that can change the code generation by adding omit_none flag to to_dict method signature. It's not the final version but you can test it: https://github.com/Fatal1ty/mashumaro/tree/config-class

from typing import Optional
from mashumaro import DataClassDictMixin
from mashumaro.config import TO_DICT_ADD_OMIT_NONE_FLAG

class BaseModel(DataClassDictMixin):
    class Config:
        code_generation_options = [
            TO_DICT_ADD_OMIT_NONE_FLAG,
        ]

class Model(BaseModel):
    a: Optional[str] = None

print(Model().to_dict(omit_none=True))  # {}

from mashumaro.

gshank avatar gshank commented on May 14, 2024

Thanks! I'll take a look. If you're interested I put the code that I was using into https://github.com/gshank/mashumaro/tree/callout_options. Your method might be better though.

from mashumaro.

Fatal1ty avatar Fatal1ty commented on May 14, 2024

These changes are in master branch already, so I close this issue.

from mashumaro.

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.