2.3.2 (2024-07-15)
2.3.1 (2024-03-16)
- grpc: Fix large payload handling when using the emulator. (#975) (d9162ae)
- Remove uses of six. #913 (#958) (e17129a)
- Show a non-None error for core_exception.Unknown errors. (#968) (66e61cc)
- Document how to run system tests against the emulator. (#963) (47db5b9)
- Note to use functools.wrap instead of utils.wrapping. (#966) (5e9f3d6)
- Tell users of utils.wrapping to use functools.wraps (#967) (042645b)
2.3.0 (2024-03-01)
- Add field information when raising validation errors. (#956) (17caf0b)
- Add Python 3.12 (#949) (b5c8477)
- Add support for google.cloud.ndb.version (#929) (42b3f01)
- Add support for server side NOT_IN filter. (#957) (f0b0724)
- Allow queries using server side IN. (#954) (2646cef)
- Introduce compatibility with native namespace packages (#933) (ccae387)
- Use server side != for queries. (#950) (106772f)
- Compressed repeated to uncompressed property (#772) (dab9edf)
- Repeated structured property containing blob property with legacy_data (#817) (#946) (455f860)
- init: Note that Firestore in Datastore Mode is supported (#919) (0fa75e7)
- Correct read_consistency docs. (#948) (7e8481d)
- Fix a mistaken ID description (#943) (5103813)
- Show how to use named databases (#932) (182fe4e)
2.2.2 (2023-09-19)
2.2.1 (2023-09-15)
2.2.0 (2023-07-26)
2.1.1 (2023-02-28)
- Note that we support Python 3.11 in CONTRIBUTING file (#872) (982ee5f)
- Use cached versions of Cloud objects.inv files (#863) (4471e2f), closes #862
2.1.0 (2022-12-15)
2.0.0 (2022-12-06)
- dependencies: Upgrade to google-cloud-datastore >= 2.7.2
- dependencies: Upgrade to google-cloud-datastore >= 2.7.2 (12bbcb5)
- Correct access to SerializeToString, CopyFrom, and MergeFromString (12bbcb5)
- Fix enum namespaces (12bbcb5)
- Update API capitalization/casing (12bbcb5)
- Update datastore stub creation (12bbcb5)
- Update module imports (12bbcb5)
1.12.0 (2022-11-29)
- Drop Python 2 support (90efd77)
- Drop Python 3.6 support (#829) (b110199)
- model: Ensure repeated props have same kind when converting from ds (#824) (29f5a85)
- Add note in Django middleware documentation that it is unimplemented (#805) (aa7621d)
- Add note that ProtoRPC message classes are unimplemented (#819) (ae813e9)
- context: Note that several methods are no longer implemented. (#821) (34c2c38)
- CONTRIBUTING: Note the need for Redis/Memcached env vars in tests (#838) (19f8415), closes #836
- Fix bad import path in migration guide (#827) (7b44961)
- Fix typo in begin_transaction docstring (#822) (7fd3ed3)
- README: Syncronize supported version text with python-datastore (#837) (316f959)
- tasklets: Fix Py2-style print statement (#840) (0ebfaed)
1.11.2 (2022-06-03)
1.11.1 (2021-11-03)
1.11.0 (2021-10-28)
1.10.5 (2021-10-08)
1.10.4 (2021-09-28)
1.10.3 (2021-09-07)
1.10.2 (2021-08-31)
1.10.1 (2021-08-11)
- add rpc request object to debug logging (#696) (45e590a), closes #695
- allow for legacy repeated structured properties with empty values (#702) (60c293d), closes #694
- fix bug with concurrent writes to global cache (#705) (bb7cadc), closes #692
1.10.0 (2021-07-20)
- fix bug with repeated structured properties with Expando values (#671) (882dff0), closes #669
- properly handle legacy structured properties in Expando instances (#676) (70710c8), closes #673
- refactor global cache to address concurrency and fault tolerance issues (#667) (5e2c591)
1.9.0 (2021-06-07)
- correct inconsistent behavior with regards to namespaces (#662) (cf21a28), closes #661
- correctly decode falsy values in legacy protocol buffers (#628) (69a9f63), closes #625
- defer clearing global cache when in transaction (#660) (73020ed)
- detect cache write failure for
MemcacheCache
(#665) (5d7f163), closes #656 - do not set read_consistency for queries. (#664) (36a5b55), closes #666
- limit memcache keys to 250 bytes (#663) (7dc11df), closes #619
- properly handle error when clearing cache (#636) (d0ffcf3), closes #633
- retry connection errors with memcache (#645) (06b466a), closes #620
- support ordering by key for multi queries (#630) (508d8cb), closes #629
1.8.0 (2021-04-06)
- don't return
None
for entities found in queries (#612) (9e5e255), closes #586 - fix bug with compressed blob property (#615) (d305f9f), closes #602
- fix failing unit test (#607) (5d3927e), closes #606
- handle unpickling between GAE NDB (2.7) to Cloud NDB (3) (#596) (5be4225)
- mock call to
tasklets.sleep
in unit test (#609) (00e23f3), closes #608 - prevent mismatch error when using default namespace on ancestor queries (#614) (ae67f04)
- reimplement
_clone_properties
(#610) (e23f42b), closes #566 - replicate legacy behavior for using cache with queries (#613) (edd1185), closes #586
- support
int
as base type forBooleanProperty
(#624) (a04bf3a)
1.7.3 (2021-01-21)
- handle negatives in protobuf deserialization (#591) (0d3d3ca), closes #590
- make nested retry blocks work for RPC calls (#589) (f125459)
- correct documentation for
GlobalCache
(#565) (be5b157) - fix return type in fetch docstring (#594) (9eb15f4), closes #576
- fix typo in example code (#588) (76fab49)
1.7.2 (2020-12-16)
- always use brute-force counting with Datastore emulator and clean up related hacks (#585) (8480a8b)
- return a tuple when empty result returned on query (#582) (7cf0e87)
- support empty not_finished messages that cause query.count() to return early (#580) (fc31553), closes #575
1.7.1 (2020-11-11)
1.7.0 (2020-10-22)
- fault tolerance for global caches (#560) (8ab8ee0), closes #557
- Transaction propagation using ndb.TransactionOptions (#537) (f3aa027)
1.6.1 (2020-10-08)
[@non](https://www.github.com/non)_transactional
decorator was not working correctly with async (#554) (758c8e6), closes #552- fix a connection leak in RedisCache (#556) (47ae172)
- get_by_id and get_or_insert should use default namespace when passed in (#542) (3674650), closes #535
- address docs builds and memcached customization to docker file (#548) (88e7e24)
- update docker image used for docs generation #549 (5e8bf57)
1.6.0 (2020-09-14)
1.5.2 (2020-09-03)
- avoid kind error when using subclasses in local structured properties (#531) (49f9e48)
- fix bug when setting naive datetime on
DateTimeProperty
with timezone (#534) (ad42606), closes #517 - make optimized
Query.count()
work with the datastore emulator (#528) (e5df1e3), closes #525 - make sure
keys_only
ordered multiquery returns keys not entities (#527) (2078dc1), closes #526
1.5.1 (2020-08-28)
- fix exception handling bug in tasklets (#520) (fc0366a), closes #519
- fix format exceptions in
utils.logging_debug
(#514) (d38c0a3), closes #508 - transparently add sort properties to projection for multiqueries (#511) (4e46327), closes #509
1.5.0 (2020-08-12)
- fix concurrency bug in redis cache implementation (#503) (6c18b95), closes #496
- support polymodel in local structured property (#497) (9ccbdd2), closes #481
1.4.2 (2020-07-30)
- include ancestors in
Key.to_legacy_urlsafe
(#494) (0f29190), closes #478 - properly handle explicitly passing default namespace (#488) (3c64483), closes #476
1.4.1 (2020-07-10)
1.4.0 (2020-07-01)
- allow
Query.fetch_page
for queries with post filters (#463) (632435c), closes #270 - record time spent waiting on rpc calls (#472) (1629805)
- ignore datastore properties that are not mapped to NDB properties (#470) (ab460fa), closes #461
- make sure
tests
package is not included in distribution (#469) (5a20d0a), closes #468 - retry grpc
UNKNOWN
errors (#458) (5d354e4), closes #310
1.3.0 (2020-06-01)
- add templates for python samples projects (#506) (#455) (e329276)
- convert grpc errors to api core exceptions (#457) (042cf6c), closes #416
- Add support for 'name' Key instances to to_legacy_urlsafe (#420) (59fc5af)
- all query types should use cache if available (#454) (69b3a0a), closes #441
- fix
NotImplementedError
forget_or_insert
inside a transaction (#451) (99aa403), closes #433 - make sure datastore key constructor never gets None in a pair (#446) (e6173cf), closes #384 #439
- refactor transactions to use their own event loops (#443) (7590be8), closes #426 #426
- respect
_code_name
inStructuredProperty.__getattr__
(#453) (4f54dfc), closes #449 - strip
order_by
option from query when usingcount()
(#452) (9d20a2d), closes #447
1.2.1 (2020-05-15)
- clear context cache on rollback (#410) (aa17986), closes #398
- do not allow empty key parts for key constructor in namespaced model (#401) (f3528b3), closes #384
- don't rely on duck typing for
_retry.is_transient_error
(#425) (4524542), closes #415 - handle empty batches from Firestore (#396) (1a054ca), closes #386
- make sure reads happen in transaction if there is a transaction (#395) (f32644f), closes #394
- more should be boolean in fetch_page call (#423) (a69ffd2), closes #422
- support same options in model.query as query (#407) (d08019f)
- uniform handling of
projection
argument (#428) (2b65c04), closes #379 - use
skipped_results
from query results to adjust offset (#399) (6d1452d), closes #392 - use fresh context cache for each transaction (#409) (5109b91), closes #394
- use true
keys_only
query forQuery.count()
(#405) (88184c3), closes #400 #404
1.2.0 (2020-04-20)
- add
namespace
property tocontext.Context
(#388) (34bac15), closes #385 - new
join
argument fortransaction
and related functions (#381) (2c91685), closes #366
- accept
bytes
orstr
as base value forJsonProperty
(#380) (e7a0c7c), closes #378 - add
ABORTED
to retryable status codes (#391) (183c0c3), closes #383 - add missing _get_for_dict method (#368) (55b80ff), closes #367
- empty Entities for optional LocalStructuredProperty fields (#370) (27a0969), closes #369
- return type in DateTimeProperty._to_base_type docstring (#371) (0c549c8)
1.1.2 (2020-03-16)
- check for legacy local structured property values (#365) (f81f406), closes #359
- move stub (grpc communication channel) to client (#362) (90e0625), closes #343
1.1.1 (2020-03-05)
- fix bug with
yield
of empty list in tasklets (#354) (2d60ebf), closes #353 - LocalStructuredProperty keep_keys (#355) (9ff1b3d)
- support nested sequences in parallel
yield
for tasklets (#358) (8c91e7a), closes #349
1.1.0 (2020-03-02)
- allow legacy ndb to read LocalStructuredProperty entities. (#344) (7b07692)
- fix delete in transaction (#333) (5c162f4), closes #271
- make sure
key.Key
uses namespace from client when not specified (#339) (44f02e4), closes #337 - properly exclude from indexes non-indexed subproperties of structured properties (#346) (dde6b85), closes #341
- resurrect support for compressed text property (#342) (5a86456), closes #277
- use correct name when reading legacy structured properties with names (#347) (01d1256), closes #345
1.0.1 (2020-02-11)
- attempt to have fewer transient errors in continuous integration (#328) (0484c7a)
- correct migration doc (#313) (#317) (efce24f)
- disuse
__slots__
in most places (#330) (a8b723b), closes #311 - don't set key on structured property entities (#312) (63f3d94), closes #281
- fix race condition in remote calls (#329) (f550510), closes #302
- make query options convert projection properties to strings (#325) (d1a4800)
- use multiple batches of limited size for large operations (#321) (8e69453), closes #318
- use six string_types and integer_types for all isinstance() checks (#323) (133acf8)
1.0.0 (2020-01-30)
- add user agent prefix google-cloud-ndb + version (#299) (9fa136b)
- Finish implementation of UserProperty. (#301) (fd2e0ed), closes #280
- Fix bug when wrapping base values. (#303) (91ca8d9), closes #300
- Fix bug with the _GlobalCacheGetBatch. (#305) (f213165), closes #294
- Preserve
QueryIterator.cursor_after
. (#296) (4ffedc7), closes #292
0.2.2 (2020-01-15)
- Convert NDB keys to Datastore keys for serialization. (#287) (779411b), closes #284
- fix missing ne methods (#279) (03dd5e1)
- Fix repr() for ComputedProperty (#291) (2d8857b), closes #256
- Handle
int
for DateTimeProperty (#285) (2fe5be3), closes #261 - More friendly error message when using
fetch_page
with post-filters. (#269) (a40ae74), closes #254
0.2.1 (2019-12-10)
- Correctly handle
limit
andoffset
when batching query results. (#237) (8d3ce5c), closes #236 - Improve test cleanup. (#234) (21f3d8b)
- IntegerProperty now accepts
long
type for Python 2.7. (#262) (9591e56), closes #250 - Unstable order bug in unit test. (#251) (7ff1df5), closes #244
11-06-2019 10:39 PST
query.map()
andquery.map_async()
hanging with empty result set. (#230)- remove dunder version (#202)
- Check context (#211)
- Fix
Model._gql
. (#223) - Update intersphinx mapping (#206)
- do not set meanings for compressed property when it has no value (#200)
- Python 2.7 compatibility (#203)
- Add
tzinfo
to DateTimeProperty. (#226) - Implement
_prepare_for_put
forStructuredProperty
andLocalStructuredProperty
. (#221) - Implement
Query.map
andQuery.map_async
. (#218) - Allow class member values in projection and distinct queries (#214)
- Implement
Future.cancel()
(#204)
- Update README to include Python 2 support. (#231)
- Fix typo in MIGRATION_NOTES.md (#208)
- Spelling fixes. (#209)
- Add spell checking dependencies for documentation build. (#196)
- Enable release-please (#228)
- Introduce local redis for tests (#191)
- Use .kokoro configs from templates. (#194)
09-10-2019 13:43 PDT
- Deprecate
max_memcache_items
, memcache options,force_rewrites
,Query.map()
,Query.map_async()
,blobstore
. (#168)
- Fix error retrieving values for properties with different stored name (#187)
- Use correct class when deserializing a PolyModel entity. (#186)
- Support legacy compressed properties back and forth (#183)
- Store Structured Properties in backwards compatible way (#184)
- Allow put and get to work with compressed blob properties (#175)
- Raise an exception when storing entity with partial key without Datastore. (#171)
- Normalize to prefer
project
overapp
. (#170) - Enforce naive datetimes for
DateTimeProperty
. (#167) - Handle projections with structured properties. (#166)
- Fix polymodel put and get (#151)
_prepare_for_put
was not being called at entity level (#138)- Fix key property. (#136)
- Fix thread local context. (#131)
- Bugfix: Respect
_indexed
flag of properties. (#127) - Backwards compatibility with older style structured properties. (#126)
- Read legacy data with Repeated Structured Expando properties. (#176)
- Implement
Context.call_on_commit
. (#159) - Implement
Context.flush
(#158) - Implement
use_datastore
flag. (#155) - Implement
tasklets.toplevel
. (#157) - Add RedisCache implementation of global cache (#150)
- Implement Global Cache (#148)
- ndb.Expando properties load and save (#117)
- Implement cache policy. (#116)
- Fix Kokoro publish-docs job (#153)
- Update Migration Notes. (#152)
- Add
project_urls
for pypi page (#144) - Fix
TRAMPOLINE_BUILD_FILE
in docs/common.cfg. (#143) - Add kokoro docs job to publish to googleapis.dev. (#142)
- Initial version of migration guide (#121)
- Add spellcheck sphinx extension to docs build process (#123)
- Clean up usage of
object.__new__
and mocks forModel
in unit tests (#177) - Prove tasklets can be Python 2.7 and 3.7 compatible. (#174)
- Discard src directory and fix flake8 failures (#173)
- Add tests for
Model.__eq__()
(#169) - Remove skip flag accidentally left over (#154)
- Try to get kokoro to add indexes for system tests (#145)
- Add system test for PolyModel (#133)
- Fix system test under Datastore Emulator. (Fixes #118) (#119)
- Add unit tests for
_entity_from_ds_entity
expando support (#120)
06-11-2019 16:30 PDT
- Implement expando model (#99)
- Model properties (#96)
- Implemented tasklets.synctasklet (#58)
- Implement LocalStructuredProperty (#93)
- Implement hooks. (#95)
- Three easy Model methods. (#94)
- Model.get or insert (#92)
- Implement
Model.get_by_id
andModel.get_by_id_async
. - Implement
Model.allocate_ids
andModel.allocate_ids_async
. - Implement
Query.fetch_page
andQuery.fetch_page_async
. - Implement
Query.count
andQuery.count_async
- Implement
Query.get
andQuery.get_async
.
- update sphinx version and eliminate all warnings (#105)
Initial development release of NDB client library.