Aito Python SDK
===============

:Info: Check `Github <https://github.com/AitoDotAI/aito-python-tools>`_ for the latest source code and `documentation <https://aitodotai.github.io/aito-python-tools>`__ for more information.
:Maintainer: Aito <admin@aito.ai>

About
-----

The Aito Python SDK is an open-source library that helps you to integrate your Python application
to `Aito <https://aito.ai/>`_ quicker and more efficiently.

The SDK also includes the `Aito Command Line Interface (CLI) <https://aitodotai.github.io/aito-python-tools/cli.html>`_ that enables you to interact with Aito
using commands in your command-line shell, e.g: infer a table schema from a file or upload a file to Aito.


Support / Feedback
------------------

For issues with, questions about, or feedback, please join our `support channels <https://aito.ai/join-slack/>`__.

Installation
------------

Aito Python SDK can be installed with `pip <http://pypi.python.org/pypi/pip>`_

  .. code-block:: console

    $ pip install aitoai

Check our `installation guide <https://aitodotai.github.io/aito-python-tools/install.html>`_ for more information

Documentation
-------------

You will need `sphinx <https://www.sphinx-doc.org/en/master/>`_ installed to generate the documentation.
Documentation can be generated by:

  .. code-block:: console

    $ cd docs
    $ make clean html

Generated documentation can be found in the ``docs/build/html/*`` directory.

Testing
-------

Install the required packages:

  .. code-block:: console

    $ pip install -r requirements/build.txt
    $ pip install -r requirements/test.txt

You can use our test cli to run tests:

  .. code-block:: console

    $ python -m tests -h

There are multiple test suites:

1. CLI suite:

  .. code-block:: console

    $ python -m tests -v suite cli

  .. note::

    You need an Aito instance and set up the credentials with ```AITO_INSTANCE_URL``` and ```AITO_API_KEY``` to test some functions.

2. SDK suite:

  .. code-block:: console

    $ python -m tests -v suite sdk

  .. note::

    You need an Aito instance and set up the credentials with ```AITO_INSTANCE_URL``` and ```AITO_API_KEY``` to test some functions

3. SQL functions tests:

  - Test against Postgres:

    .. code-block:: console

        $ python -m tests -v case sql_functions.test_connection.TestPostgresConnection
        $ python -m tests -v case sql_functions.test_cli_sql_functions.TestPostgresFunctions

  - Test against MySQL:

    .. code-block:: console

      $ python -m tests -v case sql_functions.test_connection.TestMySQLConnection
      $ python -m tests -v case sql_functions.test_cli_sql_functions.TestMySQLFunctions

  .. note::

    To test the SQL functions, you need to install `pyodbc <https://pypi.org/project/pyodbc/>`_ and the specific database ODBC driver.

4. Build and test built package:

  - To build the package:

    .. code-block:: console

        $ pip install -r requirements/deploy.txt
        $ ./scripts/deploy test.pypi --no-publish

  - The built wheel should be at ```dist/```. To install:

    .. code-block:: console

        $ pip install dist/aitoai-<version>.whl

  - To test the built package, create an environment variable ```TEST_BUILT_PACKAGE``` and run the above tests
