New features:
- Added support for interval types #30
- Added ability to retrieve IProto features available in Tarantool using
conn.features
property
New features:
- Implemented ability to send update/upsert requests with field names when schema is disabled (
fetch_schema=False
) and when fields are not found in the schema (good example of this case is using json path likedata.inner1.inner2.key1
as a key)
Bug fixes:
- Fixed issue with not being able to send Decimals in update statements. Now there are no extra checks - any payload is sent directly to Tarantool (fixes #34)
Other changes
- Fixed tests failing on modern Tarantool in the SQL queries.
- Removed from ci/cd testing on macOS python 3.7
- Added Tarantool 3 to CI Testing
Breaking changes:
- Dropped support for Python 3.6
New features:
- Added building wheels for Python 3.11 and support for 3.12
- Added support for PyPy 3.10. It's compiling and working, but there is an obvious performance downgrade compared to CPython.
- Now repr() of TarantoolTuple objects is being truncated to 50 fields
Bug fixes:
- Fixed an issue with encoding of update operations as tuples on PyPy
Other changes
- Upgraded to Cython 3.0.7
- Using pyproject.toml for building spec
- Using black, isort & ruff for linting
- _testbase.py was moved to tests/_testbase.py
- Fixed an issue with encoding datetimes less than 01-01-1970 (fixes #29)
- Fixed "Edit on Github" links in docs (fixes #26)
Breaking changes:
Connection.sql()
method is renamed toConnection.execute()
- Drop support for
loop
argument in theConnection
(fixes #18)
New features:
- Added support for
Decimal
,UUID
anddatetime
types natively using MessagePack extensions - Added support for SQL prepared statements with
Connection.prepare()
method andPreparedStatement
class - Added support for interactive transactions and streams (fixes #21)
- Added support for MP_ERROR extensions
- Bind metadata of parameters is available now in the
response.params
andresponse.params_count
fields - Exposed an internal schema as a
Connection.schema
property, introducing new classes to operate the schema with - Exposed SQL metadata of responses as
response.metadata
field - Added typings to internal types such as
Connection
,Response
,Metadata
,Schema
,TarantoolTuple
and others asynctnt
now sends IPROTO_ID request before anything else to notify Tarantool of used features
Other changes:
- Updated Cython to 0.29.30
- Update msgpuck to revision 0c6680a300e31714f475a7f90c2d95a02d001d80
- Internal refactoring of requests payload encoding
- Refactoring of schema parsing and unifying under
metadata
name and structure
- Support Python 3.10
Bugs fixed:
- Show a diag message rather than Lost connection to Tarantool when disconnected (closes #19)
Other changes:
- Updated Cython to 0.29.21
- Building wheels for Python 3.9
Bugs fixed:
- Fixed hanging PushIterator when connection to Tarantool is lost (#17).
New features:
- Parse autoincrement ids in sql response (#14). Thanks to @oleynikandrey
- Added Python 3.8 support. Removed all redundant
loop
arguments to functions and asyncio classes.
Other changes:
- Updated Cython to 0.29.14
- Updated msgpuck to most recent version.
- Added building wheels for Windows for Python 3.6, 3.7, 3.8
Breaking changes:
- Removed method
body2yaml
from Response. - Option
tuple_as_dict
is removed fromConnection
and all the methods.
New features:
- Making Response objects contain TarantoolTuple objects if format information is available either in space or in response from Tarantool (closes #3).
- TarantoolTuple objects are index-agnostic, meaning one can access tuple value
either by numeric index or by a key from
space:format()
specification. - You can directly access Response using indices
(
resp[0]
instead ofresp.body[0]
). - Added supported for receiving
box.session.push()
messages from Tarantool by introducing new parameterpush_subscribe
to api methods inConnection
and the PushIterator class to iterate over the push messages of a specific request. - Added
Connection.sql
method to execute SQL statements for Tarantool 2 (see asynctnt docs for details). - Added internal background coroutine with pings periodically a Tarantool
instance to check if it is alive and to refresh schema if it is changed
(default period is 5 seconds and is configured by
Connection.ping_timeout
parameter).
Changes:
- Iteration over TarantoolTuple results in iterating over a raw tuple by indices.
- TarantoolTuple has
.keys()
,.values()
and.items()
from the dict protocol. All these methods return iterators making it possible to iterate over keys, values or key-value pairs accordingly.keys
anditems
methods ignore any extra fields if space format contains less fields than there are in the tuple. One can acces those extra fields by index numbers. Connection
's defaultconnect_timeout
changed from60
to3
seconds.select
: changed default iterator type toALL
if no key provided (fixes #2)Response
new functiondone()
indicates if Response is actually finished.schema_id
is not being sent to Tarantool to check against current schema version. Instead schema is only checked and refetched if needed only after the request. This ensures that request is executed in a "constant" time rather than unpredicted with possible schema changes.- Improved
Connection.refetch_schema()
method to ensure there is only one currently running refetch process.
Other changes:
asynctnt
now ships with precompiled wheel packages.- Changed version numbering.
- Updated
Cython
to version0.29
- Updated
msgpuck
version - Improved speed of asynctnt method calls a bit more
Changes:
- Improved and simplified connect/reconnect process
- Added ContextManager async with protocol for Connection
- Added
is_fully_connected
property to Connection - Added disconnect Lock
Bugs Fixed:
- Auto reconnect misbehaved on double on_connection_lost trigger (#11)
Changes:
- Now
connect()
method call ofConnection
class blocks until connected even if anotherconnect()
is happening in parallel. This resolves issue of cancelled coroutines if one tries to connect in parallel coroutines.
Bugs fixed:
- Connect hanged indefinitely if asynctnt was accidentally disconnected from Tarantool and TCP connection was still alive for a moment while trying to reconnect (#8).
- Connect to LOADING Tarantool instance without username/password resulted in exception NO_SUCH_SPACE (#10).
Bugs fixed:
- Fixed compatibility issues with Python 3.7