# Stubs for zope.schema.interfaces (Python 3.6)
#
# NOTE: This dynamically typed stub was automatically generated by stubgen.

from typing import Any, Optional
from zope.interface import Interface
from zope.interface.common.mapping import IEnumerableMapping
from zope.schema._bootstrapinterfaces import ConstraintNotSatisfied as ConstraintNotSatisfied, IBeforeObjectAssignedEvent as IBeforeObjectAssignedEvent, IContextAwareDefaultFactory as IContextAwareDefaultFactory, IFromBytes as IFromBytes, IFromUnicode as IFromUnicode, IValidatable, InvalidValue as InvalidValue, LenOutOfBounds as LenOutOfBounds, NotAContainer as NotAContainer, NotAnInterface as NotAnInterface, NotAnIterator as NotAnIterator, OrderableOutOfBounds as OrderableOutOfBounds, OutOfBounds as OutOfBounds, RequiredMissing as RequiredMissing, SchemaNotCorrectlyImplemented as SchemaNotCorrectlyImplemented, SchemaNotFullyImplemented as SchemaNotFullyImplemented, SchemaNotProvided as SchemaNotProvided, StopValidation as StopValidation, TooBig as TooBig, TooLong as TooLong, TooShort as TooShort, TooSmall as TooSmall, ValidationError as ValidationError, WrongContainedType as WrongContainedType, WrongType as WrongType

class NotUnique(ValidationError):
    __doc__: Any = ...

class InvalidURI(ValidationError):
    __doc__: Any = ...

class InvalidId(ValidationError):
    __doc__: Any = ...

class InvalidDottedName(ValidationError):
    __doc__: Any = ...

class Unbound(Exception):
    __doc__: Any = ...

class IField(IValidatable):
    def bind(object: Any) -> None: ...
    title: Any = ...
    description: Any = ...
    required: Any = ...
    readonly: Any = ...
    default: Any = ...
    missing_value: Any = ...
    order: Any = ...
    def constraint(value: Any) -> None: ...
    def validate(value: Any) -> None: ...
    def get(object: Any) -> None: ...
    def query(object: Any, default: Optional[Any] = ...) -> None: ...
    def set(object: Any, value: Any) -> None: ...

class IIterable(IField): ...
class IContainer(IField): ...
class IOrderable(IField): ...
class ILen(IField): ...

class IMinMax(IOrderable):
    min: Any = ...
    max: Any = ...

class IMinMaxLen(ILen):
    min_length: Any = ...
    max_length: Any = ...

class IInterfaceField(IField): ...

class IBool(IField):
    default: Any = ...

class IBytes(IMinMaxLen, IIterable, IField): ...
class IText(IMinMaxLen, IIterable, IField): ...
class INativeString: ...
class IASCII(INativeString): ...
class IBytesLine(IBytes): ...
class IASCIILine(IASCII): ...
class ISourceText(IText): ...
class ITextLine(IText): ...
class INativeStringLine: ...
class IPassword(ITextLine): ...

class INumber(IMinMax, IField):
    min: Any = ...
    max: Any = ...
    default: Any = ...

class IComplex(INumber):
    min: Any = ...
    max: Any = ...
    default: Any = ...

class IReal(IComplex):
    min: Any = ...
    max: Any = ...
    default: Any = ...

class IRational(IReal):
    min: Any = ...
    max: Any = ...
    default: Any = ...

class IIntegral(IRational):
    min: Any = ...
    max: Any = ...
    default: Any = ...

class IInt(IIntegral):
    min: Any = ...
    max: Any = ...
    default: Any = ...

class IFloat(IReal): ...
class IDecimal(INumber): ...
class IDatetime(IMinMax, IField): ...
class IDate(IMinMax, IField): ...
class ITimedelta(IMinMax, IField): ...
class ITime(IMinMax, IField): ...
class IURI(INativeStringLine): ...
class IId(INativeStringLine): ...

class IDottedName(INativeStringLine):
    min_dots: Any = ...
    max_dots: Any = ...

class IPythonIdentifier(INativeStringLine): ...

class IChoice(IField):
    vocabulary: Any = ...
    vocabularyName: Any = ...

class ICollection(IMinMaxLen, IIterable, IContainer):
    value_type: Any = ...
    unique: Any = ...

class ISequence(ICollection): ...
class IMutableSequence(ISequence): ...
class IUnorderedCollection(ICollection): ...

class IAbstractSet(IUnorderedCollection):
    unique: Any = ...

class IAbstractBag(IUnorderedCollection):
    unique: Any = ...

class ITuple(ISequence): ...
class IList(IMutableSequence): ...
class ISet(IAbstractSet): ...
class IFrozenSet(IAbstractSet): ...

class IObject(IField):
    schema: Any = ...
    validate_invariants: Any = ...

class IMapping(IMinMaxLen, IIterable, IContainer):
    key_type: Any = ...
    value_type: Any = ...

class IMutableMapping(IMapping): ...
class IDict(IMutableMapping): ...

class ITerm(Interface):
    value: Any = ...

class ITokenizedTerm(ITerm):
    token: Any = ...

class ITitledTokenizedTerm(ITokenizedTerm):
    title: Any = ...

class ISource(Interface):
    def __contains__(value: Any) -> None: ...

class ISourceQueriables(Interface):
    def getQueriables() -> None: ...

class IContextSourceBinder(Interface):
    def __call__(context: Any) -> None: ...

class IBaseVocabulary(ISource):
    def getTerm(value: Any) -> None: ...

class IIterableSource(ISource):
    def __iter__() -> None: ...
    def __len__() -> None: ...

class IIterableVocabulary(Interface):
    def __iter__() -> None: ...
    def __len__() -> None: ...

class IVocabulary(IIterableVocabulary, IBaseVocabulary): ...

class IVocabularyTokenized(IVocabulary):
    def getTermByToken(token: Any) -> None: ...

class ITreeVocabulary(IVocabularyTokenized, IEnumerableMapping): ...

class IVocabularyRegistry(Interface):
    def get(context: Any, name: Any) -> None: ...

class IVocabularyFactory(Interface):
    def __call__(context: Any) -> None: ...

class IFieldEvent(Interface):
    field: Any = ...
    object: Any = ...

class IFieldUpdatedEvent(IFieldEvent):
    old_value: Any = ...
    new_value: Any = ...
