Crate

Latest version: v2.0.0

Safety actively analyzes 722491 Python packages for vulnerabilities to keep your Python projects secure.

Scan your dependencies

Page 1 of 20

2.0.0

================

- Switched JSON encoder to use the `orjson`_ library, to improve JSON
marshalling performance. Thanks, widmogrod.

orjson is fast and in some spots even more correct when compared against
Python's stdlib ``json`` module. Contrary to the stdlib variant, orjson
will serialize to ``bytes`` instead of ``str``. When sending data to CrateDB,
``crate-python`` uses a custom encoder to add support for additional data
types.

- Python's ``Decimal`` type will be serialized to ``str``.
- Python's ``dt.datetime`` and ``dt.date`` types will be serialized to
``int`` (``LONG``) after converting to milliseconds since epoch, to
optimally accommodate CrateDB's `TIMESTAMP`_ representation.
- NumPy's data types will be handled by ``orjson`` without any ado.

.. _orjson: https://github.com/ijl/orjson
.. _TIMESTAMP: https://cratedb.com/docs/crate/reference/en/latest/general/ddl/data-types.html#type-timestamp

1.0.1

================

- Python: Fixed "implicit namespace packages" migration by omitting
``__init__.py`` from ``crate`` namespace package, see `PEP 420`_
and `Package Discovery and Namespace Package » Finding namespace packages`_.

1.0.0

================

- BREAKING CHANGE: The SQLAlchemy dialect has been split off into
the `sqlalchemy-cratedb`_ package, see notice below.
- Feature: Returned Python ``datetime`` objects are now always timezone-aware,
using UTC by default.
It may be a breaking change for some users of the library that don't expect
to receive "aware" instead of "naive" Python ``datetime`` objects from now
on, i.e. instances with or without the ``tzinfo`` attribute set.
When no ``time_zone`` information is specified when creating a database
connection or cursor, ``datetime`` objects will now use Coordinated
Universal Time (UTC), like CrateDB is storing timestamp values in this
format.
This update is coming from a deprecation of Python's
``datetime.utcfromtimestamp()``, which is effectively also phasing out
the use of "naive" timestamp objects in Python, in favor of using
timezone-aware objects, also to represent datetimes in UTC.
- Feature: Configured DB API interface attribute ``threadsafety = 1``,
which signals "Threads may share the module, but not connections."
- Feature: Added ``error_trace`` to string representation of an Error,
to relay server stacktraces into exception messages.
- Refactoring: The module namespace ``crate.client.test_util`` has been
renamed to ``crate.testing.util``.
- Error handling: At two spots in cursor / value converter handling, where
``assert`` statements have been used, ``ValueError`` exceptions are raised
now.
- Python: Migrated to use "implicit namespace packages" instead of "declared
namespaces" for the ``crate`` namespace package, see `PEP 420`_.


.. note::

For learning about the transition to `sqlalchemy-cratedb`_,
we recommend to read the enumeration of necessary migration steps
at `Migrate from crate.client to sqlalchemy-cratedb`_.


.. _Migrate from crate.client to sqlalchemy-cratedb: https://cratedb.com/docs/sqlalchemy-cratedb/migrate-from-crate-client.html
.. _Package Discovery and Namespace Package » Finding namespace packages: https://setuptools.pypa.io/en/latest/userguide/package_discovery.html#namespace-packages
.. _PEP 420: https://peps.python.org/pep-0420/
.. _sqlalchemy-cratedb: https://pypi.org/project/sqlalchemy-cratedb/

0.41.0

- Dependencies: Updated to `crate-2.0.0`, which uses `orjson` for JSON marshalling

0.40.1

- CI: Verified support on Python 3.13
- Dependencies: Updated to `crate-1.0.0.dev2`

0.40.0

- Propagate error traces properly, using the `error_trace` `connect_args` option,
by using `crate-1.0.0.dev1`
- Use slightly amended `do_execute`, `do_execute_no_params`, `do_executemany`
to store their responses into the request context instance

Page 1 of 20

© 2025 Safety CLI Cybersecurity Inc. All Rights Reserved.