Metadata-Version: 1.0
Name: plone.supermodel
Version: 1.0.4
Summary: Serialize Zope schema definitions to and from XML
Home-page: http://code.google.com/p/dexterity
Author: Martin Aspeli
Author-email: optilude@gmail.com
License: BSD
Description: Introduction
        ============
        
        plone.supermodel provides XML import and export for schema interfaces based on
        zope.schema fields. The principal use cases are:
        
         1. Define a schema interface in code based on an XML file. This can be done
         with syntax like::
         
          >>> from plone.supermodel import xmlSchema
          >>> IMySchema = xmlSchema("myschema.xml")
              
         2. Save and load interface definitions via an XML format. To turn a schema
         interface into XML, you can do::
         
          >>> from plone.supermodel import serializeSchema
          >>> xml_string = serializeSchema(IMySchema)
        
        To get a schema from an XML file, you can use the xmlSchema() function above,
        or you can use the more powerful spec() function, which turns a dict of all
        schemata and widget hints in a given XML file.
        
        See schema.txt and interfaces.py in the source code for more information, 
        including details on how to give widget hints for forms and how to keep 
        multiple schemata in the same XML file.
        
        Supermodel vs. Userschema
        -------------------------
        
        This package is quite similar to Tres Seaver's "userschema" library, which
        can be found at http://agendaless.com/Members/tseaver/software/userschema.
        
        In fact, plone.supermodel was originally based on userschema. However, as the
        package was refined and refactored, less and less of userschema remained,
        to the point where we'd have needed to significantly refactor the latter to
        keep using it.
        
        The XML import/export code is currently based on algorithms that were written
        for plone.app.portlets and plone.app.contentrules' GenericSetup handlers.
        
        Some of the key differences between the two packages are:
        
         - userschema can create schema interfaces from HTML forms and CSV 
           spreadsheets. plone.supermodel does not support such configuration.
           
         - Schemata created with userschema are typically loaded at startup, with
           a ZCML directive. plone.supermodel supports a "pseudo-base class" syntax,
           as seen above, to define interfaces in Python code. Beyond that, its API
           is more geared towards runtime configuration.
           
         - plone.supermodel supports serialisation of schemata to XML.
         
         - The plone.supermodel XML syntax is more directly tied to zope.schema
           fields, and infers most parameters from the schema interface declared by
           each zope.schema field. This has two advantages:
           
            - API documentation for zope.schema can be easily applied to <schema /> 
              blocks
            - New fields and obscure attributes are easier to support
            
         - plone.supermodel's XML schema is intended to support more schema metadata,
           including widget hints.
            
        In the future, it may be possible to make userschema re-use part of
        plone.supermodel or vice-a-versa, with more refactoring.
        
        
        Changelog
        =========
        
        1.0.4 - 2012-02-22
        ------------------
        
        - When syncing to a schema that inherits fields from a base, include fields
          with the same names as the inherited fields even when overwrite is False.
          This fixes http://code.google.com/p/dexterity/issues/detail?id=253
          [davisagli]
        
        1.0.3 - 2011-05-20
        ------------------
        
        - Relicense under BSD license.
          See http://plone.org/foundation/materials/foundation-resolutions/plone-framework-components-relicensing-policy
          [davisagli]
        
        1.0.2 - 2011-05-02
        ------------------
        
        - Only convert Choice field ``values`` attribute into a vocabulary when it is
          necessary to handle unicode values. This fixes a regression in compatibility
          with plone.registry.
          [davisagli]
        
        1.0.1 - 2011-04-30
        ------------------
        
        - Adjust manifest to exclude .pyc files.
          [davisagli]
        
        1.0 - 2011-04-30
        ----------------
        
        - Handle serializing tokenized vocabularies with unicode values as long as the
          terms' tokens are equal to the utf8-encoded values.
          [davisagli]
        
        
        1.0b8 - 2011-03-18
        ------------------
        
        - Add MANIFEST.in.
          [WouterVH]
        
        - Field names should be strings, not unicode.
          [elro]
        
        
        1.0b7 - 2011-03-03
        ------------------
        
        - Support serialization of nested dicts/lists.
          [elro]
        
        
        1.0b6 - 2011-01-04
        ------------------
        
        - Declare zope.app.testing as a test dependency for Zope 2.13 compatibility.
          [esteele]
        
        - Fix namespace bug which could prevent loading Dict and Collection elements.
          [davisagli]
        
        
        1.0b5 - 2010-04-19
        ------------------
        
        - Added support for zope.schema.Decimal fields.
          [optilude]
        
        
        1.0b4 - 2009-11-17
        ------------------
        
        - Ignored vocabularyName property when writing Choice fields. The constructor
          still uses they 'vocabulary' key in an overloaded capacity. We only support
          'vocabulary' with a named vocabulary, or 'values' with a list of values.
          This fixes test failures on Zope 2.12 / zope.schema 3.5.4.
          [optilude]
        
        
        1.0b3 - 2009-09-28
        ------------------
        
        - Add support for synchronising marker interfaces found on source fields
          to syncSchema().
          [optilude]
        
        
        1.0b2 - 2009-07-12
        ------------------
        
        - Changed API methods and arguments to mixedCase to be more consistent with
          the rest of Zope. This is a non-backwards-compatible change. Our profuse
          apologies, but it's now or never. :-/
        
          If you find that you get import errors or unknown keyword arguments in your
          code, please change names from foo_bar too fooBar, e.g. load_file() becomes
          loadFile().
          [optilude]
        
        - No longer include name kwarg to Field constructor if no name was set
          [MatthewWilkes]
        
        
        1.0b1 - 2009-04-17
        ------------------
        
        - Initial release
        
        
Keywords: Plone XML schema
Platform: UNKNOWN
Classifier: Framework :: Plone
Classifier: Programming Language :: Python
Classifier: Topic :: Software Development :: Libraries :: Python Modules
Classifier: License :: OSI Approved :: BSD License
