import types
from typing import Any, Optional

PY2: Any
PY3: Any
PY34: Any
string_types: Any
integer_types: Any
class_types: Any
text_type = str
binary_type = bytes
MAXSIZE: Any
text_type = unicode
binary_type = str

class X:
    def __len__(self): ...

class _LazyDescr:
    name: Any = ...
    def __init__(self, name: Any) -> None: ...
    def __get__(self, obj: Any, tp: Any): ...

class MovedModule(_LazyDescr):
    mod: Any = ...
    def __init__(self, name: Any, old: Any, new: Optional[Any] = ...) -> None: ...
    def __getattr__(self, attr: Any): ...

class _LazyModule(types.ModuleType):
    __doc__: Any = ...
    def __init__(self, name: Any) -> None: ...
    def __dir__(self): ...

class MovedAttribute(_LazyDescr):
    mod: Any = ...
    attr: Any = ...
    def __init__(
        self, name: Any, old_mod: Any, new_mod: Any, old_attr: Optional[Any] = ..., new_attr: Optional[Any] = ...
    ) -> None: ...

class _SixMetaPathImporter:
    name: Any = ...
    known_modules: Any = ...
    def __init__(self, six_module_name: Any) -> None: ...
    def find_module(self, fullname: Any, path: Optional[Any] = ...): ...
    def load_module(self, fullname: Any): ...
    def is_package(self, fullname: Any): ...
    def get_code(self, fullname: Any): ...
    get_source: Any = ...

class _MovedItems(_LazyModule):
    __path__: Any = ...

moves: Any

class Module_six_moves_urllib_parse(_LazyModule): ...
class Module_six_moves_urllib_error(_LazyModule): ...
class Module_six_moves_urllib_request(_LazyModule): ...
class Module_six_moves_urllib_response(_LazyModule): ...
class Module_six_moves_urllib_robotparser(_LazyModule): ...

class Module_six_moves_urllib(types.ModuleType):
    __path__: Any = ...
    parse: Any = ...
    error: Any = ...
    request: Any = ...
    response: Any = ...
    robotparser: Any = ...
    def __dir__(self): ...

def add_move(move: Any) -> None: ...
def remove_move(name: Any) -> None: ...

advance_iterator = next
next = advance_iterator
callable = callable

def get_unbound_function(unbound: Any): ...

create_bound_method: Any

def create_unbound_method(func: Any, cls: Any): ...

Iterator = object

class Iterator:
    def next(self): ...

callable = callable
get_method_function: Any
get_method_self: Any
get_function_closure: Any
get_function_code: Any
get_function_defaults: Any
get_function_globals: Any

def iterkeys(d: Any, **kw: Any): ...
def itervalues(d: Any, **kw: Any): ...
def iteritems(d: Any, **kw: Any): ...
def iterlists(d: Any, **kw: Any): ...

viewkeys: Any
viewvalues: Any
viewitems: Any

def b(s: Any): ...
def u(s: Any): ...

unichr = chr
int2byte: Any
byte2int: Any
indexbytes: Any
iterbytes = iter
StringIO: Any
BytesIO: Any
unichr = unichr
int2byte = chr

def assertCountEqual(self, *args: Any, **kwargs: Any): ...
def assertRaisesRegex(self, *args: Any, **kwargs: Any): ...
def assertRegex(self, *args: Any, **kwargs: Any): ...

exec_: Any

def reraise(tp: Any, value: Any, tb: Optional[Any] = ...) -> None: ...
def raise_from(value: Any, from_value: Any) -> None: ...

print_: Any
_print = print_

def wraps(wrapped: Any, assigned: Any = ..., updated: Any = ...): ...

wraps: Any

def with_metaclass(meta: Any, *bases: Any): ...
def add_metaclass(metaclass: Any): ...
def python_2_unicode_compatible(klass: Any): ...

__path__: Any
__package__ = __name__
memoryview = memoryview
buffer_types: Any
memoryview = memoryview
memoryview = buffer
