class TupleDocument(doc.Doc):
            tuple_field = doc.FieldTuple(doc.FieldNumeric(validators=[(lambda v: v <= 5, 'Value must be more than 5')]),
                                         doc.FieldString(),
                                         doc.FieldNumeric(none=False),
                                         doc.FieldNumeric(none=True))

            class Meta:
                collection_name = 'test_tuple_document'
        class TestMeDocument(doc.Doc):
            positive_number = doc.FieldNumeric(validators=[(lambda v: v < 0, 'positive number is required')])
            even_number = doc.FieldNumeric(validators=[(lambda v: v % 2 == 1, 'even number only')])
            negative_odd_number = doc.FieldNumeric(validators=[
                (lambda v: v > 0, 'negative number is required'),
                (lambda v: v % 2 == 0, 'odd number is required')
            ])
            custom_value = doc.FieldDateTime(validators=[in_the_past_or_throw])

            class Meta:
                collection_name = 'test_me_document'
        class NumericDocument(doc.Doc):
            VALUE_1 = 1
            VALUE_2 = 2
            VALUE_3 = 3
            NUMBER_4_VALUES = (
                (VALUE_1, '1st value'),
                (VALUE_2, '2nd value'),
                (VALUE_3, '3rd value')
            )
            number1 = doc.FieldNumeric(max_value=30, min_value=10, none=False)
            number2 = doc.FieldNumeric(max_value=30.5, none=False)
            number3 = doc.FieldNumeric(min_value=-15.0, default=17)
            number4 = doc.FieldNumeric(choices=NUMBER_4_VALUES, default=VALUE_1)

            class Meta:
                collection_name = 'test_doc_numeric'
class SimpleDocument(doc.Doc):
    int_val = doc.FieldNumeric()
    str_val = doc.FieldString(none=False, default="default_value_of_string")

    class Meta:
        collection_name = "simple_document"
            class BadConnectionName(doc.Doc):
                useless_field = doc.FieldNumeric()

                class Meta:
                    collection_name = 'create_me_if_you_can'
                    connection_name = 'test_data_pool'
            class BadValidationField(doc.Doc):
                bad_validation_field = doc.FieldNumeric(validators='simple_string')

                class Meta:
                    collection_name = 'create_me_if_you_can'
            class NumericDocument(doc.Doc):
                number = doc.FieldNumeric(max_value=30, min_value=100)

                class Meta:
                    collection_name = 'create_me_if_you_can'
 class NestedContentDocument(doc.FieldSpecAware):
     int_val = doc.FieldNumeric(default=303)
     str_val = doc.FieldString(default="default_value")
class ABitComplexDocument(SimpleDocument):
    int_val_2 = doc.FieldNumeric(none=False)
    str_val = doc.FieldString(default="default_value_changed")

    class Meta:
        collection_name = ":complex_1"  # use ':' to annotate the system that this will share the same collection