Ejemplo n.º 1
0
    def check_input(inputs: Optional['InputType'] = None, **kwargs) -> None:
        """Validate the inputs and print the first request if success.

        :param inputs: the inputs
        :param kwargs: keyword arguments
        """

        if inputs is None:
            # empty inputs is considered as valid
            return

        if hasattr(inputs, '__call__'):
            # it is a function
            inputs = inputs()

        kwargs['data'] = inputs
        kwargs['exec_endpoint'] = '/'

        if inspect.isasyncgenfunction(inputs) or inspect.isasyncgen(inputs):
            raise BadClientInput(
                'checking the validity of an async generator is not implemented yet'
            )

        try:
            from jina.clients.request import request_generator

            r = next(request_generator(**kwargs))
            from jina.types.request import Request

            if not isinstance(r, Request):
                raise TypeError(f'{typename(r)} is not a valid Request')
        except Exception as ex:
            default_logger.error(f'inputs is not valid!')
            raise BadClientInput from ex
Ejemplo n.º 2
0
def get_full_version() -> Optional[Tuple[Dict, Dict]]:
    """
    Get the version of libraries used in Jina and environment variables.

    :return: Version information and environment variables
    """
    import os
    import platform
    from uuid import getnode

    import google.protobuf
    import grpc
    import yaml
    from google.protobuf.internal import api_implementation
    from grpc import _grpcio_metadata

    from jina import (
        __docarray_version__,
        __jina_env__,
        __proto_version__,
        __unset_msg__,
        __uptime__,
        __version__,
    )
    from jina.logging.predefined import default_logger

    try:

        info = {
            'jina': __version__,
            'docarray': __docarray_version__,
            'jina-proto': __proto_version__,
            'jina-vcs-tag': os.environ.get('JINA_VCS_VERSION', __unset_msg__),
            'protobuf': google.protobuf.__version__,
            'proto-backend': api_implementation._default_implementation_type,
            'grpcio': getattr(grpc, '__version__',
                              _grpcio_metadata.__version__),
            'pyyaml': yaml.__version__,
            'python': platform.python_version(),
            'platform': platform.system(),
            'platform-release': platform.release(),
            'platform-version': platform.version(),
            'architecture': platform.machine(),
            'processor': platform.processor(),
            'uid': getnode(),
            'session-id': str(random_uuid(use_uuid1=True)),
            'uptime': __uptime__,
            'ci-vendor': get_ci_vendor() or __unset_msg__,
        }

        env_info = {k: os.getenv(k, __unset_msg__) for k in __jina_env__}
        full_version = info, env_info
    except Exception as e:
        default_logger.error(str(e))
        full_version = None

    return full_version
Ejemplo n.º 3
0
def main(task, num_docs, top_k, dataset):
    config(dataset)
    if task == 'index':
        if os.path.exists(os.environ.get("JINA_WORKSPACE")):
            logger.error(
                f'\n +---------------------------------------------------------------------------------+ \
                    \n |                                   🤖🤖🤖                                        | \
                    \n | The directory {os.environ.get("JINA_WORKSPACE")} already exists. Please remove it before indexing again. | \
                    \n |                                   🤖🤖🤖                                        | \
                    \n +---------------------------------------------------------------------------------+'
            )
            sys.exit(1)
        index(num_docs)
    elif task == 'query':
        query(top_k)
Ejemplo n.º 4
0
def main(task, num_docs):
    config()
    workspace = os.environ["JINA_WORKSPACE"]
    if task == 'index':
        if os.path.exists(workspace):
            logger.error(f'\n +---------------------------------------------------------------------------------+ \
                    \n |                                   ������                                        | \
                    \n | The directory {workspace} already exists. Please remove it before indexing again. | \
                    \n |                                   ������                                        | \
                    \n +---------------------------------------------------------------------------------+')
            sys.exit(1)
        index(num_docs)
    elif task == 'query':
        query()
    elif task == 'query_text':
        query_text()
    else:
        raise NotImplementedError(
            f'Unknown task: {task}.')
Ejemplo n.º 5
0
def download_mermaid_url(mermaid_url, output) -> None:
    """
    Download the jpg image from mermaid_url.

    :param mermaid_url: The URL of the image.
    :param output: A filename specifying the name of the image to be created, the suffix svg/jpg determines the file type of the output image.
    """
    from urllib.request import Request, urlopen

    try:
        req = Request(mermaid_url, headers={'User-Agent': 'Mozilla/5.0'})
        with open(output, 'wb') as fp:
            fp.write(urlopen(req).read())
    except:
        from jina.logging.predefined import default_logger

        default_logger.error(
            'can not download image, please check your graph and the network connections'
        )
Ejemplo n.º 6
0
def get_full_version() -> Optional[Tuple[Dict, Dict]]:
    """
    Get the version of libraries used in Jina and environment variables.

    :return: Version information and environment variables
    """
    from . import __version__, __proto_version__, __jina_env__, __resources_path__
    from google.protobuf.internal import api_implementation
    import os, zmq, numpy, google.protobuf, grpc, yaml
    from grpc import _grpcio_metadata
    import platform
    from jina.logging.predefined import default_logger

    try:

        info = {
            'jina': __version__,
            'jina-proto': __proto_version__,
            'jina-vcs-tag': os.environ.get('JINA_VCS_VERSION', '(unset)'),
            'libzmq': zmq.zmq_version(),
            'pyzmq': numpy.__version__,
            'protobuf': google.protobuf.__version__,
            'proto-backend': api_implementation._default_implementation_type,
            'grpcio': getattr(grpc, '__version__',
                              _grpcio_metadata.__version__),
            'pyyaml': yaml.__version__,
            'python': platform.python_version(),
            'platform': platform.system(),
            'platform-release': platform.release(),
            'platform-version': platform.version(),
            'architecture': platform.machine(),
            'processor': platform.processor(),
            'jina-resources': __resources_path__,
        }
        env_info = {k: os.getenv(k, '(unset)') for k in __jina_env__}
        full_version = info, env_info
    except Exception as e:
        default_logger.error(str(e))
        full_version = None

    return full_version