Changelog
0.5.3
This version updates Python version support and modernizes the project infrastructure.
General
Dropped support for Python 3.6, 3.7, and 3.8 (all end-of-life). Minimum supported version is now Python 3.9.
Updated CI/CD to test only on Python 3.11.
Migrated documentation hosting from ReadTheDocs to GitHub Pages.
Added
./do deploy-docscommand for manual documentation deployment.
0.5.2
This version adds support for additional Aito API endpoints and helper classes for data modifications.
SDK
Added
estimate()function for the Estimate APIAdded
aggregate()function for the Aggregate APIAdded
modify()function for the Modify APIAdded helper classes for modify operations:
Insert,Update,DeleteAdded corresponding request and response classes:
EstimateRequest,EstimateResponse,AggregateRequest,AggregateResponse,ModifyRequest,ModifyResponse,BatchRequest,BatchResponse
0.5.1
This version adds support for multitenant Aito instances and array datatypes.
SDK
Added support for multitenant instance URLs (e.g.,
https://shared.aito.ai/db/my-database)Added
is_multitenantproperty toAitoClientto detect multitenant instancesFile upload operations now automatically use streaming batch uploads for multitenant instances, as S3 file upload is not available in multitenant environments
Added support for array datatypes:
Boolean[],Int[],Decimal[],String[],Text[]
0.5.0
Parquet file format support added.
Library dependencies updated to more modern versions. E.g. Pandas 2 is now supported.
0.4.3
This version adds better support for performing jobs on Aito.
- There’s a new command optimize-table (<https://aito.ai/docs/api/#post-api-v1-data-table-optimize>), which can
be used to improve query times at the expense of slower writes.
Optimize, described above, now runs as a job by default (https://aito.ai/docs/api/#post-api-v1-jobs-query). This is to avoid timeouts during the operation on non-trivial tables.
0.4.2
This version fixes a validation discrepancy between Aito Core and the SDK. Previously the SDK has allowed creating tables with names containing whitespaces. This is a validation bug, since the validation was performed in a slightly different way, depending on the context.
Now the SDK does no longer allow whitespaces in the names and gives a validation error if the user tries to create a table with an disallowed name.
0.4.1
In this version the data conversions and especially CSV reading have been made more robust and lenient.
Errors regarding large integers have been managed by converting integer fields with out-of-bounds values into string fields. Issues caused by extra commas in CSV are now treated by ignoring the additional commas and issuing a warning in the log.
Schema inference has been improved by inferring String type for the empty columns instead of Decimal type. Schema inference no more fails in situations, where the column contains only whitespaces.
SDK
aito.schema package now contains DataSeriesProperties, which is used to infer a column’s Aito datatype. DataSeriesProperties now keeps track of the smallest and the largest value in the series in order to infer a type according to the number bounds:
0.4.0
This version contains changes on how you make requests with the AitoClient.
In addition to specifying the request method and endpoint as before, you can now use different
Request objects or use the endpoint methods in the API,
i.e: aito.api.predict().
The client now returns enriched Response objects instead of JSON as before.
Helper methods of the AitoClient, e.g: create_table, are moved to the aito.api module.
You can now execute requests from the CLI.
SDK
Schema objects validation in the
aito.schemamodule is improved.Refactored the client into the aito.client subpacakge: - Added the
aito.client.requestssubpackage which contains Request Classes for the AitoClient. - Added theaito.client.responsessubpackage which contains Response Classes returned by the AitoClient. - You can import the AitoClient the same way as before:from aito.client import AitoClient
You can import the request and response classes directly from the subpackage:
from aito.client import PredictRequest, PredictResponse
AitoClient
The AitoClient.request method no longer takes positional arguments. You now have to specify either request_obj or method and endpoint.
Both AitoClient and AitoClient.request now have a raise_for_status argument which controls whether the client should raise or return an aito_client.RequestError object when an error occurs during sending a request.
Added the aito.AitoClient.async_request method to execute a request asynchronously using aiohttp ClientSession
The async_requests method is deprecated, use AitoClient.batch_requests instead.
API functions
Helper methods of the AitoClient are moved to the
aito.apimodule. The functions in the api module takes an AitoClient object as the first argumentfrom aito.client import AitoClient from aito.api import get_database_schema client = AitoClient(your_instance_url, your_instance_api_key) get_database_schema(client)
Added the endpoint methods to send a query to Aito API Endpoint: search, predict, recommend, evaluate, similarity, match, relate, generic_query
Added the following new api functions: create_column, get_column_schema, delete_column, delete_entries, quick_add_table, quick_predict (BETA) and quick_predict_and_evaluate (BETA)
CLI
Added the following commands to send a query to Aito API Endpoint: search, predict, recommend, evaluate, similarity, match, relate, generic-query
Added the create-database command to create database using the Database Schema
Removed the –encoding flag in the convert and the infer-table-schema command
Beta: Added the quick-predict command to generate an example predict query and evaluate its performance
0.3.1
Improved and fixed error codes in documentation
Added the
aito.schema.AitoColumnTypeSchema.infer_from_samples()function that infers the Column Type from samples.
0.3.0
SDK
Refactoring
- The
aito.clientmodule is moved from the sdk subpackage to the main aito package.You can now import theAitoClientby:from aito.client import AitoClient # previously: from aito.sdk.aito_client import AitoClient
- The
data_frame_handlerandsql_connectionmodule is moved from the sdk subpackage to the utils subpackage.You can now import theDataFrameHandlerandSQLConnectionby:from aito.utils.data_frame_handler import DataFrameHandler # previously: from aito.sdk.data_frame_handler import DataFrameHandler from aito.utils.sql_connection import SQLConnection # previously: from aito.sdk.sql_connection import SQLConnection
New features
Added the
aito.schemamodule which contains the component object of the Aito Schema including:Please go to the
module pagefor a full list of the supported componentsMinor changes:
Improved Analyzer inference that can now detect Delimiter Analyzer and is exposed at
aito.schema.AitoAnalyzerSchema.infer_from_samples()aito.client.AitoClient.get_table_schema()andaito.client.AitoClient.get_database_schema()now return the schema object instead of the JSON responseaito.client.AitoClient.create_table(),aito.utils.data_frame_handler.DataFrameHandler.convert_df_using_aito_table_schema()andaito.utils.data_frame_handler.DataFrameHandler.convert_file()now also support input of AitoTableSchema objectaito.client.AitoClient.query_entries()now returns a list of table entries instead of the JSON responseaito.client.AitoClient.query_entries()andaito.client.AitoClient.query_all_entries()now supports theselectkeyword to select the fields of an entry
Deprecation
The SchemaHandler is deprecated and will be removed in an upcoming release. To migrate:
SchemaHandler.infer_aito_types_from_pandas_series ->
aito.schema.AitoDataTypeSchema.infer_from_samples()SchemaHandler.infer_table_schema_from_pandas_data_frame ->
aito.schema.AitoTableSchema.infer_from_pandas_dataframe()SchemaHandler.validate_table_schema ->
aito.schema.AitoTableSchema.from_deserialized_object()
CLI
Removed the
databasecommand. All the database operations are now exposed as follows:aito database quick-add-table -> aito quick-add-table
aito database create-table -> aito create-table
aito database delete-table -> aito delete-table
aito database delete-database -> aito delete-database
aito database upload-entries -> aito upload-entries
aito database upload-file -> aito upload-file
aito database upload-data-from-sql -> aito upload-data-from-sql
aito database quick-add-table-from-sql -> aito quick-add-table-from-sql
Added the following commands:
configure: configure your Aito instanceget-table: return the schema of the specified tableshow-tables: show the existing tables in the Aito instancecopy-table: copy a tablerename-table: rename a tableget-database: return the schema of the database
Removed dotenv file support (-e flag).
0.2.2
Added missing import warnings to Aito client.
Updated AitoClient API documentation.
0.2.1
AitoClientupload_entries()now accepts generators as well as lists.AitoClientupload_entries_by_batches is deprecated and will be removed in an upcoming release, useupload_entries()instead.
0.2.0
CLI
Added a version flag (
--version) and verbosity level flags (--verboseand--quiet) to the CLI.The CLI now returns more concise error messages. Use
--verbosemode if you want to see the comprehensive error message with stack info.The ODBC driver name for SQL functions is now specified by an environment variable (
SQL_DRIVER) or a flag (--driver) instead of a required argument as before. For example:$ aito infer-table-schema from-sql --driver "PostgreSQL Unicode" "SELECT * FROM tableName"....
instead of:
$ aito infer-table-schema from-sql PostgreSQL Unicode" "SELECT * FROM tableName"....
SDK
Renamed the
utilspackage tosdk. Please change the import statement accordingly. For example:from aito.sdk.aito_client import AitoClient
Changes in AitoClient:
The class now requires the instance URL (the
instance_urlargument) instead of the instance name (the`instance_name`argument).Improve error handling to use Aito response error message.
Remove the
async_same_requestsfunction.Rename the arguments of the
async_requestfunction:request_methods -> methods
request_paths -> endpoints
request_data -> queries
async_requestnow returns errors if some requests failed.Rename the arguments of the
requestfunction:req_method -> method
path -> endpoint
data -> query
Rename the following functions:
put_table schema -> create_table
put_database_schema -> create_database
check_table_existed -> check_table_exists
populate_table_entries -> upload_entries
populate_table_entries_by_batches -> upload_entries_by_batches
populate_table_by_file_upload -> upload_binary_file
query_table_entries -> query_entries
Add
upload_filefunction to upload a file using the its path instead of its file objectAdd
optimize_tablefunction and add optimize option after data uploadAdd Job related functions:
create_job,get_job_status,get_job_result, andjob_requestAdd Query related functions:
get_table_size,query_entries,query_all_entries, anddownload_table
0.1.2
Fix a bug when converting or uploading a file in Windows due to tempfile permission
Fix a bug that requires conversion between String and Text column
Add compatibility with Python 3.7 and 3.8
0.1.1
Fix a bug that requires database name for sql_function
- No longer requires both read-only and read-write key for setting up the credentials.
(Use
AITO_API_KEYinstead ofAITO_RW_KEYandAITO_RO_KEY)
0.1.0
- Integration with SQL. You can now infer table schema, upload data,
quick add table from the result of a SQL query.
Supported database:
Postgres
MySQL
0.0.4
Change
clienttask todatabasetaskRequires Aito instance name instead of full URL (use
-iflag instead of-uflag)Support tab completion with arg complete
0.0.3
Add
quick-add-table, create-table, delete-table, delete-databse, listdatabase operationRemove the option to create and use table schema from file-upload
Convert always use standard out
Improved documentation