Releases: crate/crate-python
2.1.1
2.1.0
What's Changed
-
Exceptions from the BLOB API now include their full names.
-
Dropped support for Python versions earlier than 3.10 as they've reached
their end of life. -
Parse path prefixes from server URLs and propagate them to all requests.
-
Fixed compatibility with
urllib3-future. -
Added JWT token authentication.
Details
- Chore(deps-dev): Update mypy requirement from <1.15 to <1.16 by @dependabot[bot] in #697
- CI: Improve setup of and caching with uv by @amotl in #699
- Chore(deps-dev): Update zope-testrunner requirement from <7,>=5 to >=5,<8 by @dependabot[bot] in #698
- Chore(deps-dev): Update ruff requirement from <0.10 to <0.12 by @dependabot[bot] in #705
- Documentation: Remove page about SQLAlchemy by @amotl in #706
- Chore: Fix build wrt.
setuptoolsandurllib3by @amotl in #712 - Chore(deps): Bump astral-sh/setup-uv from 5 to 6 by @dependabot[bot] in #710
- CI: Use Python 3.13 for CodeQL analysis by @amotl in #713
- Remove page local TOC by @bmunkholm in #720
- Docs simplification by @bmunkholm in #721
- Remove python 3.7 and 3.8 from test matrix. by @surister in #724
- Chore(deps-dev): Update mypy requirement from <1.16 to <1.17 by @dependabot[bot] in #722
- Update build.json to 2.1.2 by @bmunkholm in #728
- Chore(deps-dev): Update mypy requirement from <1.17 to <1.18 by @dependabot[bot] in #730
- Chore(deps): Bump actions/setup-python from 5 to 6 by @dependabot[bot] in #732
- Chore(deps): Bump actions/checkout from 4 to 5 by @dependabot[bot] in #733
- Chore(deps-dev): Update ruff requirement from <0.12 to <0.14 by @dependabot[bot] in #731
- Increase wait time threshold for Crate instance startup by @surister in #735
- Chore(deps-dev): Update zope-testing requirement from <6,>=4 to >=4,<7 by @dependabot[bot] in #738
- Modernize project by @surister in #739
- Update Python version to include 3.14 by @surister in #737
- Chore(deps-dev): Update ruff requirement from <0.14 to <0.15 by @dependabot[bot] in #745
- Chore(deps): Bump astral-sh/setup-uv from 6 to 7 by @dependabot[bot] in #741
- Chore(deps): Bump zc-buildout from 3.3 to 5.1.1 by @dependabot[bot] in #744
- Chore(deps): Bump zope-interface from 6.4.post2 to 8.0.1 by @dependabot[bot] in #736
- Chore(deps): Bump github/codeql-action from 3 to 4 by @dependabot[bot] in #742
- Chore: Relax development dependencies by @amotl in #752
- Tests: Re-enable doctests, and a few cleanups by @amotl in #753
- CI: Fix nightly job by @amotl in #748
- Tests: Modernize X.509 certificates, including Authority Key Identifiers by @amotl in #754
- Chore: Use SPDX (PEP 639). Update verlib2. by @amotl in #755
- Chore: Fix package name. It is
crateindeed. by @amotl in #756 - Project versioning: Use
versioningitby @amotl in #757 - Project: Configure Hatch
sdistpackaging. RemoveMANIFEST.in. by @amotl in #758 - Chore: Update to
crate-docsv2.1.5, doing parallel builds by @amotl in #760 - Chore(deps): Update zope-testrunner requirement from <8,>=5 to >=5,<9 by @dependabot[bot] in #763
- Chore(deps-dev): Update pytest requirement from <9 to <10 by @dependabot[bot] in #761
- Chore(deps-dev): Update mypy requirement from <1.19 to <1.20 by @dependabot[bot] in #762
- Chore(deps): Bump actions/checkout from 5 to 6 by @dependabot[bot] in #764
- Chore(deps): Bump zope-interface from 8.1.1 to 8.2 by @dependabot[bot] in #765
- Cleanup dev setup by @mfussenegger in #767
- Re-add execution of doctests by @mfussenegger in #768
- Remove duplicate crate_path/project_root definitions by @mfussenegger in #770
- Remove py < 3.9 deps; Mention dropped python version support in changes by @mfussenegger in #769
- CI: Run tests against more OS- and architecture variants by @amotl in #750
- Propagate path prefix in server URLs to all requests by @Kleinjohann in #771
- Chore(deps-dev): Update ruff requirement from <0.15 to <0.16 by @dependabot[bot] in #775
- Linter: Update to ruff 0.15.0 by @amotl in #776
- CI: Configure
astral-sh/setup-uvto use the right Python version by @amotl in #778 - Fix compatibility with
urllib3-futureby @amotl in #784 - Add JWT token authentication by @amotl in #717
- Dependencies: Relax dependency for
verlib2package by @amotl in #785 - CI: Fix packaging by using
hatch buildinstead ofuv buildby @amotl in #786 - Revert "Project: Drop
requires-pythonattribute for less obstacles" by @amotl in #790
New Contributors
- @bmunkholm made their first contribution in #720
- @Kleinjohann made their first contribution in #771
Full Changelog: 2.0.0...2.1.0
2.0.0
What's Changed
-
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 stdlibjsonmodule. Contrary to the stdlib variant, orjson
will serialize tobytesinstead ofstr. When sending data to CrateDB,
crate-pythonuses a custom encoder to add support for additional data
types.- Python's
Decimaltype will be serialized tostr. - Python's
dt.datetimeanddt.datetypes 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
orjsonwithout any ado.
- Python's
Details
- Update poethepoet requirement from <0.31 to <0.32 by @dependabot in #679
- Bump codecov/codecov-action from 4 to 5 by @dependabot in #681
- Bump astral-sh/setup-uv from 3 to 4 by @dependabot in #682
- CI: Provide Python 3.7. EOL, it was removed from recent GHA runners by @amotl in #683
- Chore(deps-dev): Update mypy requirement from <1.14 to <1.15 by @dependabot in #684
- Chore(deps-dev): Update poethepoet requirement from <0.32 to <0.33 by @dependabot in #685
- Chore(deps): Bump astral-sh/setup-uv from 4 to 5 by @dependabot in #686
- Chore(deps): Bump advanced-security/dismiss-alerts from 1 to 2 by @dependabot in #687
- Chore: Fix test case because https://example.org/ responds differently by @amotl in #690
- Chore(deps-dev): Update ruff requirement from <0.8 to <0.10 by @dependabot in #688
- Remove tox, recommend uv by @amotl in #694
- Use
orjsonto improve JSON marshalling performance by @amotl in #691
Full Changelog: 1.0.1...2.0.0
1.0.1
What's Changed
- Python: Fixed "implicit namespace packages" migration by omitting
__init__.pyfromcratenamespace package, see PEP 420
and Package Discovery and Namespace Package » Finding namespace packages.
Details
- CI: Fix CodeQL and Release jobs by @amotl in #673
- Update poethepoet requirement from <0.30 to <0.31 by @dependabot in #674
- Python: Fix "implicit namespace packages" migration by @amotl in #675
- Chore: Suppress unqualified CodeQL admonitions by @amotl in #676
- CI: Migrate to
astral-sh/setup-uvby @amotl in #678
Full Changelog: 1.0.0...1.0.1
1.0.0
What's Changed
- BREAKING CHANGE: The SQLAlchemy dialect has been split off into
the sqlalchemy-cratedb package, see notice below. - Feature: Returned Python
datetimeobjects 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" Pythondatetimeobjects from now
on, i.e. instances with or without thetzinfoattribute set.
When notime_zoneinformation is specified when creating a database
connection or cursor,datetimeobjects 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_traceto string representation of an Error,
to relay server stacktraces into exception messages. - Refactoring: The module namespace
crate.client.test_utilhas been
renamed tocrate.testing.util. - Error handling: At two spots in cursor / value converter handling, where
assertstatements have been used,ValueErrorexceptions are raised
now. - Python: Migrated to use "implicit namespace packages" instead of "declared
namespaces" for thecratenamespace package, seePEP 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.
Full Changelog: 0.35.2...1.0.0
0.35.2
What's Changed
- Test compatibility: Permit installation of pandas 2.1.
Full Changelog: 0.35.1...0.35.2
0.35.1
What's Changed
- Compatibility: Re-add
crate.client._pep440.Versionfromverlib2.
It is needed the prevent breakingcrash.
Full Changelog: 0.35.0...0.35.1
0.35.0
What's Changed
- Permit
urllib3.Timeoutinstances for defining timeout values.
This way, bothconnectandreadsocket timeout settings can be
configured. The unit is seconds. - Internal: Use
verlib2.Versionfor comparing versions. - CI: Add support for Python 3.12.
Full Changelog: 0.34.0...0.35.0
0.34.0
What's Changed
- Properly handle Python-native UUID types in SQL parameters. Thanks,
@SStorm. - SQLAlchemy: Fix handling URL parameters
timeoutandpool_size - Permit installation with urllib3 v2, see also urllib3 v2.0 roadmap
and urllib3 v2.0 migration guide. You can optionally retain support
for TLS 1.0 and TLS 1.1, but a few other outdated use-cases of X.509
certificate details are immanent, like no longer accepting the long
deprecatedcommonNameattribute. Instead, going forward, only the
subjectAltNameattribute will be used. - SQLAlchemy: Improve DDL compiler to ignore foreign key and uniqueness
constraints. - DBAPI: Properly raise
IntegrityErrorexceptions instead of
ProgrammingError, when CrateDB raises aDuplicateKeyException. - SQLAlchemy: Ignore SQL's
FOR UPDATEclause. Thanks, @surister.
New Contributors
Full Changelog: 0.33.0...0.34.0
0.33.0
What's Changed
- SQLAlchemy: Rename leftover occurrences of
ObjecttoObjectType - SQLAlchemy DQL: Use CrateDB's native
ILIKEoperator. Thanks, @hlcianfagna.
Full Changelog: 0.32.0...0.33.0