Skip to content

Project Roadmap

The Google Cloud Datastore ODM is actively developed. Below is the current status of features, migrating from the legacy App Engine NDB mindset to modern Python architecture.


🏗️ Core Model & Property System

  • Model base class
    • Metaclass-driven configuration
    • Model-level validation hooks
    • Explicit model overrides via Meta class (kind, namespace, project, database)
  • Property system
    • Descriptor-based field definitions
    • Field defaults
    • Field-level validation
    • Properties:
      • BooleanProperty
      • IntegerProperty
      • FloatProperty
      • BlobProperty → to be supported but renamed to BytesProperty
      • CompressedTextProperty → support with compressed argument in properties that make sense
      • TextProperty
      • StringProperty
      • GeoPtProperty
      • PickleProperty
      • JsonProperty
      • UserProperty Deprecated, to be dropped.
      • KeyProperty
      • BlobKeyProperty Deprecated, to be dropped.
      • DateTimeProperty
      • DateProperty
      • TimeProperty
      • StructuredProperty
      • LocalStructuredProperty To be dropped. StructuredProperty and JsonProperty can accomodate sufficiently.
      • GenericProperty
      • ComputedProperty
    • Polymodel Support (TBD)

⚙️ Model Core API

  • Datastore key expose and management
  • Key allocation helpers (allocate_ids, allocate_key)
  • Entity identity (id / name)
  • Entity hydration from raw datastore entities
  • Ancestor (hierarchical) key support
  • Dict-style and attribute-style access (doc['field'] vs doc.field)
  • Basic CRUD operations (put, get, delete)
  • Bulk CRUD operations (put_multi, get_multi, delete_multi)
  • Lifecycle hooks (_pre_put, _post_get, etc.)
  • Atomic get_or_insert

🔍 Query API

  • Pass-through queries with raw datastore fields and operators
  • ODM-style AST filtering:
    • Operator overloading (==, >, <=, etc.)
    • Logical grouping (AND, OR, and_, or_)
    • Bitwise chaining (&, |)
    • Native IN / NOT_IN
  • Limits
  • Ordered queries
  • Pagination with cursors (fetch_page)
  • Keys-only queries
  • Projection queries
  • Distinct queries
  • .get() queries for first or None
  • Transaction-bound queries
  • Aggregations:
    • Server-side Count, Sum, and Avg
    • Batch aggregate RPCs
  • Runtime warnings for queries or projections attempted on unindexed properties.

📄 Schema & Metadata Introspection

  • Schema & Metadata Introspection API
  • Field metadata exposure
  • Optional index declarations at the model level

💾 Persistence, Caching & Operations

  • Transactions
    • Transaction context manager
    • Transactional Decorator
  • Cache support

⚡ Async Support

  • Async model API operations (put_async, get_async)
  • Async query API support (fetch_async)
  • Async transaction support