$45 GRAYBYTE WORDPRESS FILE MANAGER $77

SERVER : vnpttt-amd7f72-h1.vietnix.vn #1 SMP Fri May 24 12:42:50 UTC 2024
SERVER IP : 103.200.23.149 | ADMIN IP 216.73.216.22
OPTIONS : CRL = ON | WGT = ON | SDO = OFF | PKEX = OFF
DEACTIVATED : NONE

/usr/lib64/python2.7/site-packages/sqlalchemy/testing/

HOME
Current File : /usr/lib64/python2.7/site-packages/sqlalchemy/testing//asyncio.py
# testing/asyncio.py
# Copyright (C) 2005-2024 the SQLAlchemy authors and contributors
# <see AUTHORS file>
#
# This module is part of SQLAlchemy and is released under
# the MIT License: https://www.opensource.org/licenses/mit-license.php


# functions and wrappers to run tests, fixtures, provisioning and
# setup/teardown in an asyncio event loop, conditionally based on the
# current DB driver being used for a test.

# note that SQLAlchemy's asyncio integration also supports a method
# of running individual asyncio functions inside of separate event loops
# using "async_fallback" mode; however running whole functions in the event
# loop is a more accurate test for how SQLAlchemy's asyncio features
# would run in the real world.


from functools import wraps
import inspect

from . import config
from ..util.concurrency import _util_async_run
from ..util.concurrency import _util_async_run_coroutine_function

# may be set to False if the
# --disable-asyncio flag is passed to the test runner.
ENABLE_ASYNCIO = True


def _run_coroutine_function(fn, *args, **kwargs):
    return _util_async_run_coroutine_function(fn, *args, **kwargs)


def _assume_async(fn, *args, **kwargs):
    """Run a function in an asyncio loop unconditionally.

    This function is used for provisioning features like
    testing a database connection for server info.

    Note that for blocking IO database drivers, this means they block the
    event loop.

    """

    if not ENABLE_ASYNCIO:
        return fn(*args, **kwargs)

    return _util_async_run(fn, *args, **kwargs)


def _maybe_async_provisioning(fn, *args, **kwargs):
    """Run a function in an asyncio loop if any current drivers might need it.

    This function is used for provisioning features that take
    place outside of a specific database driver being selected, so if the
    current driver that happens to be used for the provisioning operation
    is an async driver, it will run in asyncio and not fail.

    Note that for blocking IO database drivers, this means they block the
    event loop.

    """
    if not ENABLE_ASYNCIO:
        return fn(*args, **kwargs)

    if config.any_async:
        return _util_async_run(fn, *args, **kwargs)
    else:
        return fn(*args, **kwargs)


def _maybe_async(fn, *args, **kwargs):
    """Run a function in an asyncio loop if the current selected driver is
    async.

    This function is used for test setup/teardown and tests themselves
    where the current DB driver is known.


    """
    if not ENABLE_ASYNCIO:

        return fn(*args, **kwargs)

    is_async = config._current.is_async

    if is_async:
        return _util_async_run(fn, *args, **kwargs)
    else:
        return fn(*args, **kwargs)


def _maybe_async_wrapper(fn):
    """Apply the _maybe_async function to an existing function and return
    as a wrapped callable, supporting generator functions as well.

    This is currently used for pytest fixtures that support generator use.

    """

    if inspect.isgeneratorfunction(fn):
        _stop = object()

        def call_next(gen):
            try:
                return next(gen)
                # can't raise StopIteration in an awaitable.
            except StopIteration:
                return _stop

        @wraps(fn)
        def wrap_fixture(*args, **kwargs):
            gen = fn(*args, **kwargs)
            while True:
                value = _maybe_async(call_next, gen)
                if value is _stop:
                    break
                yield value

    else:

        @wraps(fn)
        def wrap_fixture(*args, **kwargs):
            return _maybe_async(fn, *args, **kwargs)

    return wrap_fixture

Current_dir [ NOT WRITEABLE ] Document_root [ WRITEABLE ]


[ Back ]
NAME
SIZE
LAST TOUCH
USER
CAN-I?
FUNCTIONS
..
--
23 Sep 2024 10.41 AM
root / root
0755
plugin
--
23 Sep 2024 10.41 AM
root / root
0755
suite
--
23 Sep 2024 10.41 AM
root / root
0755
__init__.py
2.914 KB
5 Sep 2024 10.50 PM
root / root
0644
__init__.pyc
3.738 KB
23 Sep 2024 10.41 AM
root / root
0644
assertions.py
28.454 KB
5 Sep 2024 10.50 PM
root / root
0644
assertions.pyc
32.271 KB
23 Sep 2024 10.41 AM
root / root
0644
assertsql.py
14.613 KB
5 Sep 2024 10.50 PM
root / root
0644
assertsql.pyc
15.358 KB
23 Sep 2024 10.41 AM
root / root
0644
asyncio.py
3.585 KB
5 Sep 2024 10.50 PM
root / root
0644
asyncio.pyc
3.564 KB
23 Sep 2024 10.41 AM
root / root
0644
config.py
9.439 KB
5 Sep 2024 10.50 PM
root / root
0644
config.pyc
12.109 KB
23 Sep 2024 10.41 AM
root / root
0644
engines.py
13.078 KB
5 Sep 2024 10.50 PM
root / root
0644
engines.pyc
17.368 KB
23 Sep 2024 10.41 AM
root / root
0644
entities.py
3.177 KB
5 Sep 2024 10.50 PM
root / root
0644
entities.pyc
3.331 KB
23 Sep 2024 10.41 AM
root / root
0644
exclusions.py
13.001 KB
5 Sep 2024 10.50 PM
root / root
0644
exclusions.pyc
19.058 KB
23 Sep 2024 10.41 AM
root / root
0644
fixtures.py
30.199 KB
5 Sep 2024 10.50 PM
root / root
0644
fixtures.pyc
30.239 KB
23 Sep 2024 10.41 AM
root / root
0644
mock.py
0.873 KB
5 Sep 2024 10.50 PM
root / root
0644
mock.pyc
0.749 KB
23 Sep 2024 10.41 AM
root / root
0644
pickleable.py
2.818 KB
5 Sep 2024 10.50 PM
root / root
0644
pickleable.pyc
7.781 KB
23 Sep 2024 10.41 AM
root / root
0644
profiling.py
10.401 KB
5 Sep 2024 10.50 PM
root / root
0644
profiling.pyc
9.858 KB
23 Sep 2024 10.41 AM
root / root
0644
provision.py
12.029 KB
5 Sep 2024 10.50 PM
root / root
0644
provision.pyc
13.639 KB
23 Sep 2024 10.41 AM
root / root
0644
requirements.py
43.585 KB
5 Sep 2024 10.50 PM
root / root
0644
requirements.pyc
69.734 KB
23 Sep 2024 10.41 AM
root / root
0644
schema.py
6.391 KB
5 Sep 2024 10.50 PM
root / root
0644
schema.pyc
7.188 KB
23 Sep 2024 10.41 AM
root / root
0644
util.py
13.677 KB
5 Sep 2024 10.50 PM
root / root
0644
util.pyc
17.46 KB
23 Sep 2024 10.41 AM
root / root
0644
warnings.py
2.411 KB
5 Sep 2024 10.50 PM
root / root
0644
warnings.pyc
2.457 KB
23 Sep 2024 10.41 AM
root / root
0644

GRAYBYTE WORDPRESS FILE MANAGER @ 2026 CONTACT ME
Static GIF