geldata/gel-python
The official Python client library for Gel
20 Releases
Latest: 1y ago
v2.0.1Latest
📋 Changes
- Allow running release workflow manually
- Fix build on GCC 14 (#510)
- Fix codegen due to internal API change (#509)
v2.0.0
📋 Changes
- Support EdgeDB 5.0 "branch" connection option
- Support EdgeDB 5.0 AI extension
- Enum values can now compare to user-defined enums successfully (#425)
- Add optional default to codegen params (#426)
- blocking client: fix connect and timeout, support IPv6 (#499)
- Add test to check setting a computed global using with_globals. (#494)
- Fix test and add Python 3.12 in CI
- Use result of pydantic_dataclass, will silence linters (#501)
- + 1 more
v1.9.0
📋 Changes
- Fix globals in nested modules (#474)
- Support passing dicts and namedtuples for namedtuple arguments (#473)
- Expose the error details field. (#479)
v1.8.0
📋 Changes
- Fix test that broke due to error message change (#465)
- Don't fail if 'id' is missing from an object. (#464)
- docs: Fix typos is docs (#467)
- Fix for Pydantic 2.x (#468)
v1.7.0
📋 Changes
- Add an fts::language type that is encoded as text (#417)
- Drop support of Python 3.7 (#435)
- Fix codegen for pgvector (#447)
- Use name hint when server is not providing custom scalar type name (#461)
v1.6.0
📋 Changes
- Implement support for new type descriptor protocol
- Sync errors
- Don't depend on exact syntax errors in tests
- Fix an error in string representation of RelativeDuration.
- Add multirange support.
v1.5.0
📋 Changes
- Add --dir option to codegen for searching .edgeql files (#434)
- Implement support for vector type (#439 #440)
- Lowercase org/instance name when computing Cloud instance DNS (#441)
- Implement `database` config in project dir (#442)
v1.4.0
📋 Changes
- Update for rules of instance names (#423) (by @fantix in 5bc56992 for #420)
- Synchronize error types (#429) (by @fantix in 03e40121)
- Allow enums in array codec (#431) (by @fantix in 2de7e3fb for #408)
- Prohibit concurrent operations on the same transaction object (#430) (by @fantix in f1fa612b for #130)
- Fix state of transaction start (#424) (by @fantix in 297de722)
- codegen: Handle non-identifier characters in enum values (#432) (by @fantix in e1ec16de for #428)
- docs: add Code Generation to table of contents (#421) (by @AndreasPB in ffe74a17 for #421)
v1.3.0
📋 Changes
- Add support for secret key authentication, and Cloud instance (#405)
- Minor changes (#413)
v1.2.0
📋 Changes
- Output pretty error if possible (#399)
- Codegen: allow providing a path after --file (#400)
- Handle ErrorResponse in ping (#393)
- Disallow None in elements of array argument (#401)
- Remove references to unix-domain sockets (#309)
v1.1.0
📋 Changes
- Add missing std::json (#387)
- Support optional argument (#387)
- Fix camelcase generation (#387)
- Allow symlinks in project dir (#387)
- Use Executor on generated code for Client/Tx (#390)
v1.0.0
📋 Query Result Type Changes
- 1. In edgedb-python 1.0, we dropped many custom data structure implementations, and replaced them with Python builtins:
- | Impl Dropped | Replacement | Breaking Changes |
- |----------------|-------------|----------------------------------------------------------------------------------------------------------------------------------------------------------|
- | `edgedb.Tuple` | `tuple` | `weakref.ref()` will stop working on tuples |
- | `edgedb.Set` | `list` | * Immutability is broken<br>* `weakref.ref()` will stop working on sets<br>* `hash()` will stop working on sets<br>* `repr()` produces different results |
- | `edgedb.Array` | `list` | * Immutability is broken<br>* `weakref.ref()` will stop working on lists<br>* `hash()` will stop working on lists |
- While the implementations are dropped, the reference name is still there, like `edgedb.Tuple` is simply an alias of the builtin `tuple`.
- 2. `edgedb.NamedTuple` is reimplemented.
- + 15 more
📦 No more Python 3.6
- As Python 3.6 is no longer supported itself 10 months ago, edgedb-python is also dropping support for Python 3.6.
- edgedb-python 1.0 now supprots only Pyhton 3.7 to Python 3.11.
📦 Code generation
- Now you can create one or more `.edgeql` files in your EdgeDB project directory, and run:
- ```console
- $ python -m edgedb.codegen
- ```
- or alternatively:
- ```console
- $ edgedb-py
- ```
- + 1 more
📦 Access of link properties
- `edgedb.Link` and `edgedb.LinkSet` types, as well as the way to access them, are deprecated in edgedb-python 1.0 and will be dropped in 2.0. For example, with a given schema:
- ```
- type Person {
- multi link friends -> Person {
- property strength -> float32;
- }
- }
- ```
📋 Changes
- Implement dataclass for EdgeObject (#359) (by @fantix in dfb8c8b0 for #359)
- Redo edgedb basic types to inherit from builtin types (#366) (by @fantix in b11b9917 for #366)
- Officially drop 3.6 support (#373) (by @msullivan in 7b76bc73 for #373)
- Support Python 3.11 (#375) (by @msullivan in 04b0da2a for #375)
- Codegen with the describe_query() API (#363) (by @fantix in 361221df for #363)
- Add codegen docs (#380) (by @colinhacks in 23dd42e6 for #380)
- Use typing_extension.Literal in codegen for Python 3.7 (by @fantix in 6d0d6abc)
- Add __all__ to edgedb/__init__.py (by @fmoor in d3ef6d93)
🐛 Fixes
- Improve duration parsing (by @fmoor in 241c80d8)
- Tweak wording in query_single() error messages (#369) (by @msullivan in e24bb538 for #369)
- Fix flake tests on python3.7 (#371) (by @msullivan in 583e1cbd for #371)
- Don't reject tuple arguments on the client side (#370) (by @msullivan in 09c950fd for #370)
- Correct edgedb.Client.close() timeout behavior (by @fantix in 33a912c1)
- Ping first if conn is idle for too long (#365) (by @fantix in 99cf78a0 for #365)
- Use @-prefixed keys in object codec for link properties (#384) (by @fantix in 68480f92 for #377)
🗑️ Deprecations
- Deprecate object links and simplify link property access (#379) (by @fantix in 2c5dcc70 for #379)
v0.24.0
📋 Changes
- Remove DSN from `create_client()`
- Add support for protocol v1.0
- improve error when passing empty query arguments
- Accept args in execute() and use the new Execute message
- drop legacy agruments encoding with named tuple codec
- Stop using Parse, replace use of headers with fields
- Change headers format to str:json
- Document rolling back a transaction
- + 6 more
v0.23.0
📋 Changes
- Retry on TransactionError when attempting to commit
v0.22.0
📋 Changes
- Implementation refactor for Client-based interface
v0.18.0
📋 Changes
- support protocol version 0.12
- Update to protocol version 0.13
- Lookup `edgedb.toml` recursively in parent directories
- Update connection parameter resolution
- Implement `EDGEDB_CLIENT_SECURITY`
- Add optional/required `query_single*` methods + rename `retrying_transaction` + update pool to `create_client` API
- Deprecate `Pool.acquire()` and `Pool.release()`
- Rename `tls_verify_hostname` to `tls_security`
- + 10 more
v0.17.2
v0.17.0
📋 Changes
- Fix failing tests regarding --help (#207)
- Fix confusing error when no arguments are passed to a query with named params (#208)
- Add Python 3.10 compatibility (#209)
- Fix asyncio SSL unclosed warning (#210)
- More reliable transport double-closing
- Rename `query_one` to `query_single`
v0.13.0
📋 Changes
- New APIs: `conn.retrying_transaction()` and `conn.raw_transaction()`.
- `conn.transaction()` has been deprecated.
- `conn.aclose()` implements graceful disconnect from the DB server.
- Starting transactions in `conn.execute()` is no longer allowed.
- `wait_until_available` parameter for connection APIs.
v0.7.0a5
📋 Changes
- Fix SCRAM implementation to adhere to the spec
- Update SASL-related protocol messages
- Set protocol version to 0.7
