Summary Any time that your program needs to interact with other systems it will have to deal with serializing and deserializing data. To prevent duplicate code and provide validation of the data structures that your application is consuming Steven Loria created the Marshmallow library. In this episode he explains how it is built, how to use it for rendering data objects to various serialization formats, and some of the interesting and unique ways that it is incorporated into other projects. Announcements Hello and welcome to Podcast.__init__, the podcast about Python and the people who make it great. When you’re ready to launch your next app or want to try a project you hear about on the show, you’ll need somewhere to deploy it, so take a look at our friends over at Linode. With 200 Gbit/s private networking, scalable shared block storage, node balancers, and a 40 Gbit/s public network, all controlled by a brand new API you’ve got everything you need to scale up. Go to pythonpodcast.com/linode to get a $20 credit and launch a new server in under a minute. And don’t forget to thank them for their continued support of this show! And to keep track of how your team is progressing on building new features and squashing bugs, you need a project management system designed by software engineers, for software engineers. Clubhouse lets you craft a workflow that fits your style, including per-team tasks, cross-project epics, a large suite of pre-built integrations, and a simple API for crafting your own. Podcast.__init__ listeners get 2 months free on any plan by going to pythonpodcast.com/clubhouse today and signing up for a trial. Visit the site to subscribe to the show, sign up for the newsletter, and read the show notes. And if you have any questions, comments, or suggestions I would love to hear them. You can reach me on Twitter at @Podcast__init__ or email hosts@podcastinit.com) To help other people find the show please leave a review on iTunes and tell your friends and co-workers Join the community in the new Zulip chat workspace at pythonpodcast.com/chat You listen to this show to learn and stay up to date with the ways that Python is being used, including the latest in machine learning and data analysis. For even more opportunities to meet, listen, and learn from your peers you don’t want to miss the Strata conference in San Francisco on March 25th and the Artificial Intelligence conference in NYC on April 15th, both run by our friends at O’Reilly Media. Go to pythonpodcast.com/stratacon and pythonpodcast.com/aicon to register today and get 20% off Your host as usual is Tobias Macey and today I’m interviewing Steven Loria about Marshmallow, a Python serialization library that is agnostic to your framework and object mapper of choice Interview Introductions How did you get introduced to Python? Can you start by describing what Marshmallow is and the history of the project? What are some of the capabilities that make it unique from other similar projects in the Python ecosystem? What are some of the main use cases for schematized serialization and deserialization? Can you walk through how a user would get started with Marshmallow, particularly for complex or nested schemas? Can you describe how Marshmallow is implemented? How has that design evolved since you first began working on it? How have the changes in the Python language and ecosystem impacted the requirements and use cases for Marshmallow? What are some of the most interesting or unexpected ways that you have seen Marshmallow used? What have been some of the most interesting, complex, or challenging aspects of building the Marshmallow project and community? What are lessons you’ve learned from maintaining marshmallow? What have been some of the benefits and drawbacks of keeping Marshmallow agnostic to any frameworks or object mappers? What are some of the edge cases that users of Marshmallow should be aware of? What are some of the little-known features of Marshmallow that you find most useful? What do you have planned for the future of Marshmallow? Keep In Touch Email Website @sloria1 on Twitter Picks Tobias Sherlock BBC tv series Steven Greater Than Code podcast Links Marshmallow Butterfly Network Biology ORM (Object Relational Mapper) ODM (Object Document Mapper) Webargs Avro Swagger/OpenAPI REST (REpresentational State Transfer) JSON-Schema Environs Django Rest Framework WTForms DynamoDB MongoDB Etsy’s boundary-layer for building Airflow DAGs from config files Airflow Podcast Episode Toasted Marshmallow Lyft Blog Post The intro and outro music is from Requiem for a Fish The Freak Fandango Orchestra / CC BY-SA