Metadata-Version: 1.0
Name: tableau
Version: 0.0.2
Summary: Tableau is a collection of helper classes for building test fixtures and seed data
Home-page: http://github.com/moriyoshi/tableau
Author: Moriyoshi Koizumi
Author-email: mozo@mozo.jp
License: MIT License
Description: Tableau
        =======
        
        Tableau is a collection of helper classes for building test fixtures and seed data.
        
        - Model composition without any predefined schemas.  The model object relationships are automatically deduced through the value annotations::
        
            from tableau import Datum
        
            foo = Datum(
              'Foo', ('id'), # schema name / identifiers
              id=1,
              field_a=1,
              field_b=2,
              collection=one_to_many([
                Datum(
                  'Bar', auto('id'), # id will be automagically generated by the walker
                  field_c=1
                  ),
                Datum(
                  'Bar', auto('id'),
                  field_c=1
                  ),
                ],
                referring_fields='foo_id'
                )
              )
        
        - Export the model object graph to plain ANSI SQL statements, in the ORM-agnostic manner::
        
            import sys
            from tableau import Datum, DataSuite, DataWalker
            from tableau.sql import SQLGenerator
        
            # ...
        
            suite = DataSuite()
            DataWalker(suite)(foo)
            SQLGenerator(sys.stdout, encoding='utf-8')(suite)
        
          The above yields the following SQL statements::
        
            INSERT INTO `Foo` (`id`, `field_a`, `field_b`) VALUES
            (1, 1, 2);
            INSERT INTO `Bar` (`id`, `field_c`, `foo_id`) VALUES
            (1, 1, 1),
            (2, 1, 1);
        
        - Automatically mapping the existing SQLAlchemy tables / declarative classes
          to the `Data`::
        
            from tableau.sqla import newSADatum
        
            # metadata = ...
            # Base = ...
            # sessoin = ...
        
            class Foo(Base):
              __tablename__ = 'foos'
              id = Column(Integer, primary_key=True)
              field = Column(String)
        
              def some_model_specific_method(self):
                return self.field
        
            Datum = newSADatum(metadata, Base)
            datum = Datum(
              'foos', ('id'),
              field='test'
              )
            print datum.some_model_specific_method() # 'test'
            session.add(datum) # it can even be added to the session!
        
        
        Change history
        --------------
        
        0.0.0
            Unreleased.
        
        0.0.1
            First release. No docs!
        
        0.0.2
            Support mapping to SQLAlchemy tables and declarative classses.
            Still no docs!
        
Keywords: test testing fixture seed
Platform: UNKNOWN
Classifier: Environment :: Other Environment
Classifier: Intended Audience :: Developers
Classifier: License :: OSI Approved :: MIT License
Classifier: Operating System :: OS Independent
Classifier: Programming Language :: Python
Classifier: Topic :: Software Development :: Testing
Classifier: Topic :: Software Development :: Quality Assurance
Classifier: Topic :: Utilities
