Skip to main content
Pre-release

This release is a pre-release and may not be stable for production use.

Latest version Travis-CI

Homepage: http://marshmallow.rtfd.org/

marshmallow is an ORM/ODM/framework-agnostic library for converting complex datatypes, such as objects, to and from native Python datatypes. The serialized objects can then be rendered to standard formats such as JSON for use in an HTTP API.

from datetime import datetime
from marshmallow import Schema, fields, pprint

# A "model"
class Person(object):
    def __init__(self, name):
        self.name = name
        self.date_born = datetime.now()

# A serializer schema
class PersonSchema(Schema):
    name = fields.String()
    date_born = fields.DateTime()

person = Person("Guido van Rossum")
schema = PersonSchema()
result = schema.dump(person)
pprint(result.data)
# {"name": "Guido van Rossum", "date_born": "2014-08-17T14:42:12.479650+00:00"}

Get It Now

$ pip install -U marshmallow==1.0.0-a

Documentation

Full documentation is available at http://marshmallow.rtfd.org/ .

Requirements

  • Python >= 2.6 or >= 3.3

marshmallow has no external dependencies outside of the Python standard library, although python-dateutil is recommended for robust datetime deserialization.

License

MIT licensed. See the bundled LICENSE file for more details.

Changelog

1.0.0-a (2014-10-19)

Major reworking and simplification of the public API, centered around support for deserialization, improved validation, and a less stateful Schema class.

  • Rename Serializer to Schema.

  • Support for deserialization.

  • Use the Schema.dump and Schema.load methods for serializing and deserializing, respectively.

  • Backwards-incompatible: Remove Serializer.json and Serializer.to_json. Use Schema.dumps instead.

  • Reworked fields interface.

  • Backwards-incompatible: Field classes implement _serialize and _deserialize methods. serialize and deserialize comprise the public API for a Field. Field.format and Field.output have been removed.

  • Add exceptions.ForcedError which allows errors to be raised during serialization (instead of storing errors in the errors dict).

  • Backwards-incompatible: DateTime field serializes to ISO8601 format by default (instead of RFC822).

  • Backwards-incompatible: Remove Serializer.factory method. It is no longer necessary with the dump method.

  • Backwards-incompatible: Allow nesting a serializer within itself recursively. Use exclude or only to prevent infinite recursion.

  • Backwards-incompatible: Multiple errors can be stored for a single field. The errors dictionary returned by load and dump have lists of error messages keyed by field name.

  • Remove validated decorator. Validation occurs within Field methods.

  • Function field raises a ValueError if an uncallable object is passed to its constructor.

  • Nested fields inherit context from their parent.

  • Add Schema.preprocessor and Schema.validator decorators for registering preprocessing and schema-level validation functions respectively.

  • Custom error messages can be specified by raising a ValidationError within a validation function.

  • Extra keyword arguments passed to a Field are stored as metadata.

  • Fix ordering of field output.

  • Fix behavior of the required parameter on Nested fields.

  • Fix serializing keyed tuple types (e.g. namedtuple) with class Meta options.

  • Fix default value for Fixed and Price fields.

  • Fix serialization of binary strings.

  • Schemas can inherit fields from non-Schema base classes (e.g. mixins). Also, fields are inherited according to the MRO (rather than recursing over base classes). Thanks Josh Carp.

0.7.0 (2014-06-22)

  • Add Serializer.error_handler decorator that registers a custom error handler.

  • Add Serializer.data_handler decorator that registers data post-processing callbacks.

  • Backwards-incompatible: process_data method is deprecated. Use the data_handler decorator instead.

  • Fix bug that raised error when passing extra data together with many=True. Thanks Joe Alcorn for reporting.

  • If required=True validation is violated for a given Field, it will raise an error message that is different from the message specified by the error argument. Thanks Anders Steinlein.

  • More generic error message raised when required field is missing.

  • validated decorator should only wrap a Field class’s output method.

0.6.0 (2014-06-03)

  • Fix bug in serializing keyed tuple types, e.g. namedtuple and KeyedTuple.

  • Nested field can load a serializer by its class name as a string. This makes it easier to implement 2-way nesting.

  • Make Serializer.data override-able.

0.5.5 (2014-05-02)

  • Add Serializer.factory for creating a factory function that returns a Serializer instance.

  • MarshallingError stores its underlying exception as an instance variable. This is useful for inspecting errors.

  • fields.Select is aliased to fields.Enum.

  • Add fields.__all__ and marshmallow.__all__ so that the modules can be more easily extended.

  • Expose Serializer.OPTIONS_CLASS as a class variable so that options defaults can be overridden.

  • Add Serializer.process_data hook that allows subclasses to manipulate the final output data.

0.5.4 (2014-04-17)

  • Add json_module class Meta option.

  • Add required option to fields . Thanks @DeaconDesperado.

  • Tested on Python 3.4 and PyPy.

0.5.3 (2014-03-02)

  • Fix Integer field default. It is now 0 instead of 0.0. Thanks @kalasjocke.

  • Add context param to Serializer. Allows accessing arbitrary objects in Function and Method fields.

  • Function and Method fields raise MarshallingError if their argument is uncallable.

0.5.2 (2014-02-10)

  • Enable custom field validation via the validate parameter.

  • Add utils.from_rfc for parsing RFC datestring to Python datetime object.

0.5.1 (2014-02-02)

  • Avoid unnecessary attribute access in utils.to_marshallable_type for improved performance.

  • Fix RFC822 formatting for localized datetimes.

0.5.0 (2013-12-29)

  • Can customize validation error messages by passing the error parameter to a field.

  • Backwards-incompatible: Rename fields.NumberField -> fields.Number.

  • Add fields.Select. Thanks @ecarreras.

  • Support nesting a Serializer within itself by passing "self" into fields.Nested (only up to depth=1).

  • Backwards-incompatible: No implicit serializing of collections. Must set many=True if serializing to a list. This ensures that marshmallow handles singular objects correctly, even if they are iterable.

  • If Nested field only parameter is a field name, only return a single value for the nested object (instead of a dict) or a flat list of values.

  • Improved performance and stability.

0.4.1 (2013-12-01)

  • An object’s __marshallable__ method, if defined, takes precedence over __getitem__.

  • Generator expressions can be passed to a serializer.

  • Better support for serializing list-like collections (e.g. ORM querysets).

  • Other minor bugfixes.

0.4.0 (2013-11-24)

  • Add additional class Meta option.

  • Add dateformat class Meta option.

  • Support for serializing UUID, date, time, and timedelta objects.

  • Remove Serializer.to_data method. Just use Serialize.data property.

  • String field defaults to empty string instead of None.

  • Backwards-incompatible: isoformat and rfcformat functions moved to utils.py.

  • Backwards-incompatible: Validation functions moved to validate.py.

  • Backwards-incompatible: Remove types.py.

  • Reorder parameters to DateTime field (first parameter is dateformat).

  • Ensure that to_json returns bytestrings.

  • Fix bug with including an object property in fields Meta option.

  • Fix bug with passing None to a serializer.

0.3.1 (2013-11-16)

  • Fix bug with serializing dictionaries.

  • Fix error raised when serializing empty list.

  • Add only and exclude parameters to Serializer constructor.

  • Add strict parameter and option: causes Serializer to raise an error if invalid data are passed in, rather than storing errors.

  • Updated Flask + SQLA example in docs.

0.3.0 (2013-11-14)

  • Declaring Serializers just got easier. The class Meta paradigm allows you to specify fields more concisely. Can specify fields and exclude options.

  • Allow date formats to be changed by passing format parameter to DateTime field constructor. Can either be "rfc" (default), "iso", or a date format string.

  • More useful error message when declaring fields as classes (instead of an instance, which is the correct usage).

  • Rename MarshallingException -> MarshallingError.

  • Rename marshmallow.core -> marshmallow.serializer.

0.2.1 (2013-11-12)

  • Allow prefixing field names.

  • Fix storing errors on Nested Serializers.

  • Python 2.6 support.

0.2.0 (2013-11-11)

  • Field-level validation.

  • Add fields.Method.

  • Add fields.Function.

  • Allow binding of extra data to a serialized object by passing the extra param when initializing a Serializer.

  • Add relative paramater to fields.Url that allows for relative URLs.

0.1.0 (2013-11-10)

  • First release.

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

marshmallow-1.0.0-a.tar.gz (34.1 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

marshmallow-1.0.0_a-py2.py3-none-any.whl (43.3 kB view details)

Uploaded Python 2Python 3

File details

Details for the file marshmallow-1.0.0-a.tar.gz.

File metadata

  • Download URL: marshmallow-1.0.0-a.tar.gz
  • Upload date:
  • Size: 34.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No

File hashes

Hashes for marshmallow-1.0.0-a.tar.gz
Algorithm Hash digest
SHA256 f5e172461e8ddfabcd727d6af483ae0fbec9ad5a083e23b6b877df16b56b2d14
MD5 fc7902c88110d10626f23895eab47872
BLAKE2b-256 eb492ddf209e4a393fa2720c5469a465243fc9b46e41bb884581d1b8ab8a2629

See more details on using hashes here.

File details

Details for the file marshmallow-1.0.0_a-py2.py3-none-any.whl.

File metadata

File hashes

Hashes for marshmallow-1.0.0_a-py2.py3-none-any.whl
Algorithm Hash digest
SHA256 0412d69681620ea29d203baa781b78d5412e93e6d3345c2a069d72224c05d57d
MD5 f31823e9787c5c623561d0a77d6d6fc5
BLAKE2b-256 43e8a8961268bb737476a7d1a8b678e9f6bdc5d99f0a8d18abe14673d349db33

See more details on using hashes here.

Release history Release notifications | RSS feed

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page