Marshmallow Data Validation Library

The Python Podcast.__init__

Episode | Podcast

Date: Sun, 24 Feb 2019 22:00:00 -0500

<div class="wp-block-jetpack-markdown"><h3>Summary</h3> <p>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.</p> <h3>Announcements</h3> <ul> <li>Hello and welcome to Podcast.__init__, the podcast about Python and the people who make it great.</li> <li>When you&#8217;re ready to launch your next app or want to try a project you hear about on the show, you&#8217;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&#8217;ve got everything you need to scale up. Go to <a href="https://www.pythonpodcast.com/linode?utm_source=rss&amp;utm_medium=rss">pythonpodcast.com/linode</a> to get a $20 credit and launch a new server in under a minute. And don&#8217;t forget to thank them for their continued support of this show!</li> <li>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 <a href="https://www.pythonpodcast.com/clubhouse?utm_source=rss&amp;utm_medium=rss">pythonpodcast.com/clubhouse</a> today and signing up for a trial.</li> <li>Visit the <a href="https://www.pythonpodcast.com?utm_source=rss&amp;utm_medium=rss">site</a> 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 <a href="https://twtiter.com/Podcast__init__?utm_source=rss&amp;utm_medium=rss" rel="noopener" target="_blank">@Podcast__init__</a> or email <a href="mailto:hosts@podcastinit.com">hosts@podcastinit.com</a>)</li> <li>To help other people find the show please leave a review on <a href="https://itunes.apple.com/us/podcast/podcast.-init/id981834425?mt=2&amp;uo=6&amp;at=&amp;ct=&amp;utm_source=rss&amp;utm_medium=rss" rel="noopener" target="_blank">iTunes</a> and tell your friends and co-workers</li> <li>Join the community in the new Zulip chat workspace at <a href="https://www.pythonpodcast.com/chat?utm_source=rss&amp;utm_medium=rss">pythonpodcast.com/chat</a></li> <li>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&#8217;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&#8217;Reilly Media. Go to <a href="https://www.pythonpodcast.com/stratacon?utm_source=rss&amp;utm_medium=rss">pythonpodcast.com/stratacon</a> and <a href="https://www.pythonpodcast.com/aicon?utm_source=rss&amp;utm_medium=rss">pythonpodcast.com/aicon</a> to register today and get 20% off</li> <li>Your host as usual is Tobias Macey and today I&#8217;m interviewing Steven Loria about Marshmallow, a Python serialization library that is agnostic to your framework and object mapper of choice</li> </ul> <h3>Interview</h3> <ul> <li>Introductions</li> <li>How did you get introduced to Python?</li> <li>Can you start by describing what Marshmallow is and the history of the project? <ul> <li>What are some of the capabilities that make it unique from other similar projects in the Python ecosystem?</li> </ul> </li> <li>What are some of the main use cases for schematized serialization and deserialization?</li> <li>Can you walk through how a user would get started with Marshmallow, particularly for complex or nested schemas?</li> <li>Can you describe how Marshmallow is implemented? <ul> <li>How has that design evolved since you first began working on it?</li> <li>How have the changes in the Python language and ecosystem impacted the requirements and use cases for Marshmallow?</li> </ul> </li> <li>What are some of the most interesting or unexpected ways that you have seen Marshmallow used?</li> <li>What have been some of the most interesting, complex, or challenging aspects of building the Marshmallow project and community? <ul> <li>What are lessons you&#8217;ve learned from maintaining marshmallow?</li> </ul> </li> <li>What have been some of the benefits and drawbacks of keeping Marshmallow agnostic to any frameworks or object mappers?</li> <li>What are some of the edge cases that users of Marshmallow should be aware of?</li> <li>What are some of the little-known features of Marshmallow that you find most useful?</li> <li>What do you have planned for the future of Marshmallow?</li> </ul> <h3>Keep In Touch</h3> <ul> <li><a href="mailto:sloria1@gmail.com">Email</a></li> <li><a href="https://stevenloria.com?utm_source=rss&amp;utm_medium=rss" rel="noopener" target="_blank">Website</a></li> <li><a href="https://twitter.com/sloria1?utm_source=rss&amp;utm_medium=rss" rel="noopener" target="_blank">@sloria1</a> on Twitter</li> </ul> <h3>Picks</h3> <ul> <li>Tobias <ul> <li><a href="https://en.wikipedia.org/wiki/Sherlock_(TV_series)?utm_source=rss&amp;utm_medium=rss" rel="noopener" target="_blank">Sherlock</a> BBC tv series</li> </ul> </li> <li>Steven <ul> <li><a href="https://www.greaterthancode.com/?utm_source=rss&amp;utm_medium=rss" rel="noopener" target="_blank">Greater Than Code</a> podcast</li> </ul> </li> </ul> <h3>Links</h3> <ul> <li><a href="https://github.com/marshmallow-code/marshmallow?utm_source=rss&amp;utm_medium=rss" rel="noopener" target="_blank">Marshmallow</a></li> <li><a href="https://www.butterflynetwork.com/?utm_source=rss&amp;utm_medium=rss" rel="noopener" target="_blank">Butterfly Network</a></li> <li><a href="https://en.wikipedia.org/wiki/Biology?utm_source=rss&amp;utm_medium=rss" rel="noopener" target="_blank">Biology</a></li> <li><a href="https://en.wikipedia.org/wiki/Object-relational_mapping?utm_source=rss&amp;utm_medium=rss" rel="noopener" target="_blank">ORM (Object Relational Mapper)</a></li> <li><a href="https://en.wikipedia.org/wiki/Object-relational_mapping#Object-oriented_databases?utm_source=rss&amp;utm_medium=rss" rel="noopener" target="_blank">ODM (Object Document Mapper)</a></li> <li><a href="https://github.com/marshmallow-code/webargs?utm_source=rss&amp;utm_medium=rss" rel="noopener" target="_blank">Webargs</a></li> <li><a href="https://avro.apache.org/?utm_source=rss&amp;utm_medium=rss" rel="noopener" target="_blank">Avro</a></li> <li><a href="https://swagger.io/docs/specification/about/?utm_source=rss&amp;utm_medium=rss" rel="noopener" target="_blank">Swagger/OpenAPI</a></li> <li><a href="https://en.wikipedia.org/wiki/Representational_state_transfer?utm_source=rss&amp;utm_medium=rss" rel="noopener" target="_blank">REST (REpresentational State Transfer)</a></li> <li><a href="https://json-schema.org/?utm_source=rss&amp;utm_medium=rss" rel="noopener" target="_blank">JSON-Schema</a></li> <li><a href="https://github.com/sloria/environs?utm_source=rss&amp;utm_medium=rss" rel="noopener" target="_blank">Environs</a></li> <li><a href="https://www.django-rest-framework.org/?utm_source=rss&amp;utm_medium=rss" rel="noopener" target="_blank">Django Rest Framework</a></li> <li><a href="https://wtforms.readthedocs.io/en/stable/?utm_source=rss&amp;utm_medium=rss" rel="noopener" target="_blank">WTForms</a></li> <li><a href="https://aws.amazon.com/dynamodb/?utm_source=rss&amp;utm_medium=rss" rel="noopener" target="_blank">DynamoDB</a></li> <li><a href="https://www.mongodb.com/?utm_source=rss&amp;utm_medium=rss" rel="noopener" target="_blank">MongoDB</a></li> <li>Etsy&#8217;s <a href="https://github.com/etsy/boundary-layer?utm_source=rss&amp;utm_medium=rss" rel="noopener" target="_blank">boundary-layer</a> for building <a href="https://github.com/apache/airflow?utm_source=rss&amp;utm_medium=rss" rel="noopener" target="_blank">Airflow</a> DAGs from config files <ul> <li><a href="https://www.pythonpodcast.com/episode-44-airflow-with-maxime-beauchemin/?utm_source=rss&amp;utm_medium=rss">Airflow Podcast Episode</a></li> </ul> </li> <li><a href="https://github.com/lyft/toasted-marshmallow?utm_source=rss&amp;utm_medium=rss" rel="noopener" target="_blank">Toasted Marshmallow</a> <ul> <li><a href="https://eng.lyft.com/toasted-marshmallow-marshmallow-but-15x-faster-17bdcf34c760?utm_source=rss&amp;utm_medium=rss" rel="noopener" target="_blank">Lyft Blog Post</a></li> </ul> </li> </ul> <p>The intro and outro music is from Requiem for a Fish <a href="http://freemusicarchive.org/music/The_Freak_Fandango_Orchestra/?utm_source=rss&amp;utm_medium=rss" rel="noopener" target="_blank">The Freak Fandango Orchestra</a> / <a href="http://creativecommons.org/licenses/by-sa/3.0/?utm_source=rss&amp;utm_medium=rss" rel="noopener" target="_blank">CC BY-SA</a></p> </div> <img alt="" height="0" src="https://analytics.boundlessnotions.com/piwik.php?idsite=1&amp;rec=1&amp;url=https%3A%2F%2Fwww.pythonpodcast.com%2Fmarshmallow-data-validation-episode-200%2F&amp;action_name=Marshmallow+Data+Validation+Library+-+Episode+200&amp;urlref=https%3A%2F%2Fwww.pythonpodcast.com%2Ffeed%2F&amp;utm_source=rss&amp;utm_medium=rss" style="border: 0; width: 0; height: 0;" width="0" />