Metadata-Version: 1.1
Name: booby-ng
Version: 0.8.3.post1
Summary: Data modeling and validation Python library
Home-page: https://github.com/cr0hn/booby
Author: Daniel Garcia (cr0hn)
Author-email: cr0hn@cr0hn.com
License: UNKNOWN
Description: Booby: data modeling and validation
        ===================================
        
        .. image:: https://img.shields.io/pypi/v/booby.svg
            :target: https://pypi.python.org/pypi/booby
            :alt: Latest version
        
        .. image:: https://readthedocs.org/projects/booby/badge
            :target: http://booby.readthedocs.org/en/latest
            :alt: Docs
        
        .. image:: https://img.shields.io/badge/Licence-Apache2-brightgreen.svg
            :target: https://www.tldrlegal.com/l/apache2
            :alt: License
        
        .. image:: https://img.shields.io/pypi/dm/booby.svg
            :target: https://pypi.python.org/pypi/booby
            :alt: Number of PyPI downloads
        
        .. image:: https://secure.travis-ci.org/jaimegildesagredo/booby.svg?branch=master
            :target: http://travis-ci.org/jaimegildesagredo/booby
            :alt: Build status
        
        **This project is a fork of official project*** with some new features.
        
        Booby is a standalone data `modeling` and `validation` library written in Python. Booby is under active development (visit `this blog post <http://jaimegildesagredo.github.io/2014/01/04/booby-05-introducing-inspection-api.html>`_ for more info and the roadmap) and licensed under the `Apache2 license <http://www.apache.org/licenses/LICENSE-2.0.html>`_, so feel free to `contribute <https://github.com/jaimegildesagredo/booby/pulls>`_ and `report errors and suggestions <https://github.com/jaimegildesagredo/booby/issues>`_.
        
        Usage
        -----
        
        See the sample code below to get an idea of the main features.
        
        .. code-block:: python
        
            from booby import Model, fields
        
        
            class Token(Model):
                key = fields.String()
                secret = fields.String()
        
        
            class Address(Model):
                line_1 = fields.String()
                line_2 = fields.String()
        
        
            class User(Model):
                login = fields.String(required=True)
                name = fields.String()
                email = fields.Email()
                site = fields.URL()
                token = fields.Embedded(Token, required=True)
                addresses = fields.Collection(Address)
        
            jack = User(
                login='jack',
                name='Jack',
                email='jack@example.com',
                url='http://mysite.com',
                token={
                    'key': 'vs7dfxxx',
                    'secret': 'ds5ds4xxx'
                },
                addresses=[
                    {'line_1': 'Main Street'},
                    {'line_1': 'Main St'}
                ]
            )
        
            if jack.is_valid:
                print jack.to_json(indent=2)
            else:
                print json.dumps(dict(jack.validation_errors))
        
        .. code-block:: json
        
            {
              "email": "jack@example.com",
              "url": "http://mysite.com",
              "login": "jack",
              "token": {
                "secret": "ds5ds4xxx",
                "key": "vs7dfxxx"
              },
              "name": "Jack",
              "addresses": [
                {
                  "line_1": "Main St",
                  "line_2": null
                },
                {
                  "line_1": "Main Street",
                  "line_2": null
                }
              ]
            }
        
        Advanced
        --------
        
        Booby raises when you try to pass a property as input dict thata not exist as property. It's very annoying when you want to pass a big JSON and want that Booby take only their parameters that it understand.
        
        For example:
        
        .. code-block:: python
        
            from booby import Model, fields
        
            class User(Model):
                login = fields.String(required=True)
                name = fields.String()
        
            input_info = dict(login="john", name="doe", address="other field")
        
            jack = User(**input_info)
        
        This code raise the exception:
        
        .. code-block:: bash
        
            > python example.py
            Traceback (most recent call last):
              File "/Users/Dani/Projects/apitest/apitest/actions/analyze/console.py", line 39, in launch_analyze_in_console
                postman_parser(json_info)
              File "/Users/Dani/Projects/apitest/apitest/actions/analyze/postman.py", line 52, in postman_parser
                end_points=postman_info.get("item")))
              File "/Users/Dani/.virtualenvs/apitest/lib/python3.5/site-packages/booby/models.py", line 108, in __init__
                self._update(kwargs)
              File "/Users/Dani/.virtualenvs/apitest/lib/python3.5/site-packages/booby/models.py", line 163, in _update
                self[k] = v
              File "/Users/Dani/.virtualenvs/apitest/lib/python3.5/site-packages/booby/models.py", line 150, in __setitem__
                setattr(self, k, v)
              File "/Users/Dani/.virtualenvs/apitest/lib/python3.5/site-packages/booby/fields.py", line 317, in __set__
                value = self._resolve(value)
              File "/Users/Dani/.virtualenvs/apitest/lib/python3.5/site-packages/booby/fields.py", line 325, in _resolve
                item = self.model(**item)
              File "/Users/Dani/.virtualenvs/apitest/lib/python3.5/site-packages/booby/models.py", line 108, in __init__
                self._update(kwargs)
              File "/Users/Dani/.virtualenvs/apitest/lib/python3.5/site-packages/booby/models.py", line 163, in _update
                self[k] = v
              File "/Users/Dani/.virtualenvs/apitest/lib/python3.5/site-packages/booby/models.py", line 148, in __setitem__
        
            booby.errors.FieldError: address
        
        If you want Booby ignore these properties that don't understand, you can define the Model class adding the property `__ignore_missing__`
        
        .. code-block:: python
        
            from booby import Model, fields
        
            class User(Model):
                __ignore_missing__ = True
        
                login = fields.String(required=True)
                name = fields.String()
        
            input_info = dict(login="john", name="doe", address="other field")
        
            jack = User(**input_info)
        
        
        Installation
        ------------
        
        You can install the last stable release of Booby from PyPI using pip or easy_install.
        
        .. code-block:: bash
        
            $ pip install booby
        
        Also you can install the latest sources from Github.
        
        .. code-block:: bash
        
            $ pip install -e git+git://github.com/jaimegildesagredo/booby.git#egg=booby
        
        Tests
        -----
        
        To run the Booby test suite you should install the development requirements and then run nosetests.
        
        .. code-block:: bash
        
            $ pip install -r test-requirements.txt
            $ nosetests tests/unit
            $ nosetests tests/integration
        
        Changes
        -------
        
        See `Changes <https://booby.readthedocs.org/en/latest/changes.html>`_.
        
Platform: UNKNOWN
Classifier: Development Status :: 3 - Alpha
Classifier: Intended Audience :: Developers
Classifier: Natural Language :: English
Classifier: Operating System :: OS Independent
Classifier: Programming Language :: Python
Classifier: Programming Language :: Python :: 2.7
Classifier: Programming Language :: Python :: 3.3
Classifier: Programming Language :: Python :: 3.4
Classifier: Programming Language :: Python :: 3.5
Classifier: Topic :: Software Development :: Libraries :: Python Modules
